Merge "Revert "Add work profile support for registering phone accounts ...""
diff --git a/Android.bp b/Android.bp
index 0a7ccdc..dc35c5d 100644
--- a/Android.bp
+++ b/Android.bp
@@ -43,6 +43,7 @@
"PlatformProperties",
"modules-utils-os",
"nist-sip",
+ "service-entitlement"
],
srcs: [
@@ -79,11 +80,14 @@
},
}
-// Allow other applications to use public constants from SliceStore
+// Allow other applications to use public constants from SlicePurchaseController
java_library {
- name: "SliceStore",
- srcs: ["src/com/android/phone/slicestore/SliceStore.java",],
- libs: ["telephony-common"],
+ name: "SlicePurchaseController",
+ srcs: ["src/com/android/phone/slice/*.java",],
+ libs: [
+ "telephony-common",
+ "service-entitlement"
+ ],
}
platform_compat_config {
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 5599a50..3d80246 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -21,9 +21,9 @@
android:sharedUserId="android.uid.phone"
android:sharedUserLabel="@string/phoneAppLabel">
- <!-- Allows broadcasting for SliceStore events. -->
- <protected-broadcast android:name="com.android.phone.slicestore.action.START_SLICE_STORE" />
- <protected-broadcast android:name="com.android.phone.slicestore.action.SLICE_STORE_RESPONSE_TIMEOUT" />
+ <!-- Allows broadcasting for SlicePurchaseController events. -->
+ <protected-broadcast android:name="com.android.phone.slice.action.START_SLICE_PURCHASE_APP" />
+ <protected-broadcast android:name="com.android.phone.slice.action.SLICE_PURCHASE_APP_RESPONSE_TIMEOUT" />
<original-package android:name="com.android.phone" />
<!-- Allows granting runtime permissions to telephony related components. -->
diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml
index 85a8ded..9aa0800 100644
--- a/res/values-te/strings.xml
+++ b/res/values-te/strings.xml
@@ -582,8 +582,8 @@
<string name="onscreenAddCallText" msgid="9075675082903611677">"కాల్ను జోడించు"</string>
<string name="onscreenMergeCallsText" msgid="3692389519611225407">"కాల్స్ను విలీనం చేయి"</string>
<string name="onscreenSwapCallsText" msgid="2682542150803377991">"స్వాప్ చేయి"</string>
- <string name="onscreenManageCallsText" msgid="1162047856081836469">"కాల్స్ను నిర్వహించు"</string>
- <string name="onscreenManageConferenceText" msgid="4700574060601755137">"కాన్ఫరెన్స్ను నిర్వహించు"</string>
+ <string name="onscreenManageCallsText" msgid="1162047856081836469">"కాల్స్ను మేనేజ్ చేయండి"</string>
+ <string name="onscreenManageConferenceText" msgid="4700574060601755137">"కాన్ఫరెన్స్ను మేనేజ్ చేయండి"</string>
<string name="onscreenAudioText" msgid="7224226735052019986">"ఆడియో"</string>
<string name="onscreenVideoCallText" msgid="1743992456126258698">"వీడియో కాల్"</string>
<string name="importSimEntry" msgid="3892354284082689894">"దిగుమతి చేయండి"</string>
diff --git a/src/com/android/phone/PhoneInterfaceManager.java b/src/com/android/phone/PhoneInterfaceManager.java
index 71771cf..27d1de3 100755
--- a/src/com/android/phone/PhoneInterfaceManager.java
+++ b/src/com/android/phone/PhoneInterfaceManager.java
@@ -211,7 +211,7 @@
import com.android.phone.callcomposer.CallComposerPictureTransfer;
import com.android.phone.callcomposer.ImageData;
import com.android.phone.settings.PickSmsSubscriptionActivity;
-import com.android.phone.slicestore.SliceStore;
+import com.android.phone.slice.SlicePurchaseController;
import com.android.phone.vvm.PhoneAccountHandleConverter;
import com.android.phone.vvm.RemoteVvmTaskManager;
import com.android.phone.vvm.VisualVoicemailSettingsUtil;
@@ -2160,7 +2160,7 @@
onCompleted = obtainMessage(EVENT_PURCHASE_PREMIUM_CAPABILITY_DONE, request);
PurchasePremiumCapabilityArgument arg =
(PurchasePremiumCapabilityArgument) request.argument;
- SliceStore.getInstance(request.phone).purchasePremiumCapability(
+ SlicePurchaseController.getInstance(request.phone).purchasePremiumCapability(
arg.capability, arg.appName, onCompleted);
break;
}
@@ -11268,7 +11268,7 @@
Phone phone = getPhone(subId);
final long identity = Binder.clearCallingIdentity();
try {
- return SliceStore.getInstance(phone)
+ return SlicePurchaseController.getInstance(phone)
.isPremiumCapabilityAvailableForPurchase(capability);
} finally {
Binder.restoreCallingIdentity(identity);
diff --git a/src/com/android/phone/settings/RadioInfo.java b/src/com/android/phone/settings/RadioInfo.java
index c6dbfc6..29f2d73 100644
--- a/src/com/android/phone/settings/RadioInfo.java
+++ b/src/com/android/phone/settings/RadioInfo.java
@@ -72,6 +72,13 @@
import android.telephony.TelephonyDisplayInfo;
import android.telephony.TelephonyManager;
import android.telephony.data.NetworkSlicingConfig;
+import android.telephony.ims.ImsException;
+import android.telephony.ims.ImsManager;
+import android.telephony.ims.ImsMmTelManager;
+import android.telephony.ims.ImsRcsManager;
+import android.telephony.ims.ProvisioningManager;
+import android.telephony.ims.feature.MmTelFeature;
+import android.telephony.ims.stub.ImsRegistrationImplBase;
import android.text.TextUtils;
import android.util.Log;
import android.view.Menu;
@@ -92,9 +99,6 @@
import androidx.appcompat.app.AlertDialog.Builder;
import androidx.appcompat.app.AppCompatActivity;
-import com.android.ims.ImsConfig;
-import com.android.ims.ImsException;
-import com.android.ims.ImsManager;
import com.android.internal.telephony.Phone;
import com.android.internal.telephony.PhoneFactory;
import com.android.internal.telephony.euicc.EuiccConnector;
@@ -177,18 +181,6 @@
*/
private static final int ALWAYS_ON_DSDS_MODE = 1;
- private static final int IMS_VOLTE_PROVISIONED_CONFIG_ID =
- ImsConfig.ConfigConstants.VLT_SETTING_ENABLED;
-
- private static final int IMS_VT_PROVISIONED_CONFIG_ID =
- ImsConfig.ConfigConstants.LVC_SETTING_ENABLED;
-
- private static final int IMS_WFC_PROVISIONED_CONFIG_ID =
- ImsConfig.ConfigConstants.VOICE_OVER_WIFI_SETTING_ENABLED;
-
- private static final int EAB_PROVISIONED_CONFIG_ID =
- ImsConfig.ConfigConstants.EAB_SETTING_ENABLED;
-
//Values in must match CELL_INFO_REFRESH_RATES
private static final String[] CELL_INFO_REFRESH_RATE_LABELS = {
"Disabled",
@@ -293,6 +285,7 @@
private TelephonyManager mTelephonyManager;
private ImsManager mImsManager = null;
private Phone mPhone = null;
+ private ProvisioningManager mProvisioningManager = null;
private String mPingHostnameResultV4;
private String mPingHostnameResultV6;
@@ -422,12 +415,23 @@
unregisterPhoneStateListener();
mTelephonyManager.setCellInfoListRate(sCellInfoListRateDisabled, mPhone.getSubId());
+ if (phoneIndex == SubscriptionManager.INVALID_PHONE_INDEX) {
+ log("Invalid phone index " + phoneIndex + ", subscription ID " + subId);
+ return;
+ }
+
// update the subId
mTelephonyManager = mTelephonyManager.createForSubscriptionId(subId);
// update the phoneId
- mImsManager = ImsManager.getInstance(getApplicationContext(), phoneIndex);
mPhone = PhoneFactory.getPhone(phoneIndex);
+ mImsManager = new ImsManager(mPhone.getContext());
+ try {
+ mProvisioningManager = ProvisioningManager.createForSubscriptionId(subId);
+ } catch (IllegalArgumentException e) {
+ log("updatePhoneIndex : IllegalArgumentException " + e.getMessage());
+ mProvisioningManager = null;
+ }
updateAllFields();
}
@@ -483,11 +487,17 @@
mQueuedWork = new ThreadPoolExecutor(1, 1, RUNNABLE_TIMEOUT_MS, TimeUnit.MICROSECONDS,
new LinkedBlockingDeque<Runnable>());
mConnectivityManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
- mPhone = PhoneFactory.getDefaultPhone();
+ mPhone = getPhone(SubscriptionManager.getDefaultSubscriptionId());
mTelephonyManager = ((TelephonyManager) getSystemService(TELEPHONY_SERVICE))
.createForSubscriptionId(mPhone.getSubId());
- mImsManager = ImsManager.getInstance(getApplicationContext(), mPhone.getPhoneId());
+ mImsManager = new ImsManager(mPhone.getContext());
+ try {
+ mProvisioningManager = ProvisioningManager.createForSubscriptionId(mPhone.getSubId());
+ } catch (IllegalArgumentException e) {
+ log("onCreate : IllegalArgumentException " + e.getMessage());
+ mProvisioningManager = null;
+ }
sPhoneIndexLabels = getPhoneIndexLabels(mTelephonyManager);
@@ -555,7 +565,7 @@
mImsWfcProvisionedSwitch = (Switch) findViewById(R.id.wfc_provisioned_switch);
mEabProvisionedSwitch = (Switch) findViewById(R.id.eab_provisioned_switch);
- if (!ImsManager.isImsSupportedOnDevice(mPhone.getContext())) {
+ if (!isImsSupportedOnDevice(mPhone.getContext())) {
mImsVolteProvisionedSwitch.setVisibility(View.GONE);
mImsVtProvisionedSwitch.setVisibility(View.GONE);
mImsWfcProvisionedSwitch.setVisibility(View.GONE);
@@ -635,7 +645,7 @@
mCellInfoRefreshRateIndex = 0; //disabled
mPreferredNetworkTypeResult = PREFERRED_NETWORK_LABELS.length - 1; //Unknown
- mSelectedPhoneIndex = 0; //phone 0
+ mSelectedPhoneIndex = mPhone.getPhoneId();
new Thread(() -> {
int networkType = (int) mTelephonyManager.getPreferredNetworkTypeBitmask();
@@ -786,7 +796,7 @@
R.string.radioInfo_menu_viewFDN).setOnMenuItemClickListener(mViewFDNCallback);
menu.add(1, MENU_ITEM_VIEW_SDN, 0,
R.string.radioInfo_menu_viewSDN).setOnMenuItemClickListener(mViewSDNCallback);
- if (ImsManager.isImsSupportedOnDevice(mPhone.getContext())) {
+ if (isImsSupportedOnDevice(mPhone.getContext())) {
menu.add(1, MENU_ITEM_GET_IMS_STATUS,
0, R.string.radioInfo_menu_getIMS).setOnMenuItemClickListener(mGetImsStatus);
}
@@ -1514,34 +1524,38 @@
mRadioPowerOnSwitch.setOnCheckedChangeListener(mRadioPowerOnChangeListener);
}
- void setImsVolteProvisionedState(boolean state) {
+ private void setImsVolteProvisionedState(boolean state) {
Log.d(TAG, "setImsVolteProvisioned state: " + ((state) ? "on" : "off"));
- setImsConfigProvisionedState(IMS_VOLTE_PROVISIONED_CONFIG_ID, state);
+ setImsConfigProvisionedState(MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE,
+ ImsRegistrationImplBase.REGISTRATION_TECH_LTE, state);
}
- void setImsVtProvisionedState(boolean state) {
+ private void setImsVtProvisionedState(boolean state) {
Log.d(TAG, "setImsVtProvisioned() state: " + ((state) ? "on" : "off"));
- setImsConfigProvisionedState(IMS_VT_PROVISIONED_CONFIG_ID, state);
+ setImsConfigProvisionedState(MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VIDEO,
+ ImsRegistrationImplBase.REGISTRATION_TECH_LTE, state);
}
- void setImsWfcProvisionedState(boolean state) {
+ private void setImsWfcProvisionedState(boolean state) {
Log.d(TAG, "setImsWfcProvisioned() state: " + ((state) ? "on" : "off"));
- setImsConfigProvisionedState(IMS_WFC_PROVISIONED_CONFIG_ID, state);
+ setImsConfigProvisionedState(MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE,
+ ImsRegistrationImplBase.REGISTRATION_TECH_IWLAN, state);
}
- void setEabProvisionedState(boolean state) {
+ private void setEabProvisionedState(boolean state) {
Log.d(TAG, "setEabProvisioned() state: " + ((state) ? "on" : "off"));
- setImsConfigProvisionedState(EAB_PROVISIONED_CONFIG_ID, state);
+ setRcsConfigProvisionedState(ImsRcsManager.CAPABILITY_TYPE_PRESENCE_UCE,
+ ImsRegistrationImplBase.REGISTRATION_TECH_LTE, state);
}
- void setImsConfigProvisionedState(int configItem, boolean state) {
- if (mPhone != null && mImsManager != null) {
+ private void setImsConfigProvisionedState(int capability, int tech, boolean state) {
+ if (mProvisioningManager != null) {
mQueuedWork.execute(new Runnable() {
public void run() {
try {
- mImsManager.getConfigInterface().setProvisionedValue(
- configItem, state ? 1 : 0);
- } catch (ImsException e) {
+ mProvisioningManager.setProvisioningStatusForCapability(
+ capability, tech, state);
+ } catch (RuntimeException e) {
Log.e(TAG, "setImsConfigProvisioned() exception:", e);
}
}
@@ -1549,6 +1563,71 @@
}
}
+ private void setRcsConfigProvisionedState(int capability, int tech, boolean state) {
+ if (mProvisioningManager != null) {
+ mQueuedWork.execute(new Runnable() {
+ public void run() {
+ try {
+ mProvisioningManager.setRcsProvisioningStatusForCapability(
+ capability, tech, state);
+ } catch (RuntimeException e) {
+ Log.e(TAG, "setRcsConfigProvisioned() exception:", e);
+ }
+ }
+ });
+ }
+ }
+
+ private boolean isImsVolteProvisioningRequired() {
+ return isImsConfigProvisioningRequired(
+ MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE,
+ ImsRegistrationImplBase.REGISTRATION_TECH_LTE);
+ }
+
+ private boolean isImsVtProvisioningRequired() {
+ return isImsConfigProvisioningRequired(
+ MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VIDEO,
+ ImsRegistrationImplBase.REGISTRATION_TECH_LTE);
+ }
+
+ private boolean isImsWfcProvisioningRequired() {
+ return isImsConfigProvisioningRequired(
+ MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE,
+ ImsRegistrationImplBase.REGISTRATION_TECH_IWLAN);
+ }
+
+ private boolean isEabProvisioningRequired() {
+ return isRcsConfigProvisioningRequired(
+ ImsRcsManager.CAPABILITY_TYPE_PRESENCE_UCE,
+ ImsRegistrationImplBase.REGISTRATION_TECH_LTE);
+ }
+
+ private boolean isImsConfigProvisioningRequired(int capability, int tech) {
+ if (mProvisioningManager != null) {
+ try {
+ return mProvisioningManager.isProvisioningRequiredForCapability(
+ capability, tech);
+ } catch (RuntimeException e) {
+ Log.e(TAG, "isImsConfigProvisioningRequired() exception:", e);
+ }
+ }
+
+ return false;
+ }
+
+ private boolean isRcsConfigProvisioningRequired(int capability, int tech) {
+ if (mProvisioningManager != null) {
+ try {
+ return mProvisioningManager.isRcsProvisioningRequiredForCapability(
+ capability, tech);
+ } catch (RuntimeException e) {
+ Log.e(TAG, "isRcsConfigProvisioningRequired() exception:", e);
+ }
+ }
+
+ return false;
+ }
+
OnCheckedChangeListener mRadioPowerOnChangeListener = new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
@@ -1584,11 +1663,8 @@
};
private boolean isImsVolteProvisioned() {
- if (mImsManager != null) {
- return mImsManager.isVolteEnabledByPlatform()
- && mImsManager.isVolteProvisionedOnDevice();
- }
- return false;
+ return getImsConfigProvisionedState(MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE,
+ ImsRegistrationImplBase.REGISTRATION_TECH_LTE);
}
OnCheckedChangeListener mImsVolteCheckedChangeListener = new OnCheckedChangeListener() {
@@ -1599,11 +1675,8 @@
};
private boolean isImsVtProvisioned() {
- if (mImsManager != null) {
- return mImsManager.isVtEnabledByPlatform()
- && mImsManager.isVtProvisionedOnDevice();
- }
- return false;
+ return getImsConfigProvisionedState(MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VIDEO,
+ ImsRegistrationImplBase.REGISTRATION_TECH_LTE);
}
OnCheckedChangeListener mImsVtCheckedChangeListener = new OnCheckedChangeListener() {
@@ -1614,11 +1687,8 @@
};
private boolean isImsWfcProvisioned() {
- if (mImsManager != null) {
- return mImsManager.isWfcEnabledByPlatform()
- && mImsManager.isWfcProvisionedOnDevice();
- }
- return false;
+ return getImsConfigProvisionedState(MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE,
+ ImsRegistrationImplBase.REGISTRATION_TECH_IWLAN);
}
OnCheckedChangeListener mImsWfcCheckedChangeListener = new OnCheckedChangeListener() {
@@ -1629,7 +1699,8 @@
};
private boolean isEabProvisioned() {
- return isFeatureProvisioned(EAB_PROVISIONED_CONFIG_ID, false);
+ return getRcsConfigProvisionedState(ImsRcsManager.CAPABILITY_TYPE_PRESENCE_UCE,
+ ImsRegistrationImplBase.REGISTRATION_TECH_LTE);
}
OnCheckedChangeListener mEabCheckedChangeListener = new OnCheckedChangeListener() {
@@ -1639,23 +1710,30 @@
}
};
- private boolean isFeatureProvisioned(int featureId, boolean defaultValue) {
- boolean provisioned = defaultValue;
- if (mImsManager != null) {
+ private boolean getImsConfigProvisionedState(int capability, int tech) {
+ if (mProvisioningManager != null) {
try {
- ImsConfig imsConfig = mImsManager.getConfigInterface();
- if (imsConfig != null) {
- provisioned =
- (imsConfig.getProvisionedValue(featureId)
- == ImsConfig.FeatureValueConstants.ON);
- }
- } catch (ImsException ex) {
- Log.e(TAG, "isFeatureProvisioned() exception:", ex);
+ return mProvisioningManager.getProvisioningStatusForCapability(
+ capability, tech);
+ } catch (RuntimeException e) {
+ Log.e(TAG, "getImsConfigProvisionedState() exception:", e);
}
}
- log("isFeatureProvisioned() featureId=" + featureId + " provisioned=" + provisioned);
- return provisioned;
+ return false;
+ }
+
+ private boolean getRcsConfigProvisionedState(int capability, int tech) {
+ if (mProvisioningManager != null) {
+ try {
+ return mProvisioningManager.getRcsProvisioningStatusForCapability(
+ capability, tech);
+ } catch (RuntimeException e) {
+ Log.e(TAG, "getRcsConfigProvisionedState() exception:", e);
+ }
+ }
+
+ return false;
}
private boolean isEabEnabledByPlatform() {
@@ -1674,35 +1752,56 @@
}
private void updateImsProvisionedState() {
- if (!ImsManager.isImsSupportedOnDevice(mPhone.getContext())) {
+ if (!isImsSupportedOnDevice(mPhone.getContext())) {
return;
}
- log("updateImsProvisionedState isImsVolteProvisioned()=" + isImsVolteProvisioned());
- //delightful hack to prevent on-checked-changed calls from
- //actually forcing the ims provisioning to its transient/current value.
+
+ updateServiceEnabledByPlatform();
+
+ updateEabProvisionedSwitch(isEabEnabledByPlatform());
+ }
+
+ private void updateVolteProvisionedSwitch(boolean isEnabledByPlatform) {
+ boolean isProvisioned = isEnabledByPlatform && isImsVolteProvisioned();
+ log("updateVolteProvisionedSwitch isProvisioned" + isProvisioned);
+
mImsVolteProvisionedSwitch.setOnCheckedChangeListener(null);
- mImsVolteProvisionedSwitch.setChecked(isImsVolteProvisioned());
+ mImsVolteProvisionedSwitch.setChecked(isProvisioned);
mImsVolteProvisionedSwitch.setOnCheckedChangeListener(mImsVolteCheckedChangeListener);
mImsVolteProvisionedSwitch.setEnabled(!IS_USER_BUILD
- && mImsManager.isVolteEnabledByPlatform());
+ && isEnabledByPlatform && isImsVolteProvisioningRequired());
+ }
+
+ private void updateVtProvisionedSwitch(boolean isEnabledByPlatform) {
+ boolean isProvisioned = isEnabledByPlatform && isImsVtProvisioned();
+ log("updateVtProvisionedSwitch isProvisioned" + isProvisioned);
mImsVtProvisionedSwitch.setOnCheckedChangeListener(null);
- mImsVtProvisionedSwitch.setChecked(isImsVtProvisioned());
+ mImsVtProvisionedSwitch.setChecked(isProvisioned);
mImsVtProvisionedSwitch.setOnCheckedChangeListener(mImsVtCheckedChangeListener);
mImsVtProvisionedSwitch.setEnabled(!IS_USER_BUILD
- && mImsManager.isVtEnabledByPlatform());
+ && isEnabledByPlatform && isImsVtProvisioningRequired());
+ }
+
+ private void updateWfcProvisionedSwitch(boolean isEnabledByPlatform) {
+ boolean isProvisioned = isEnabledByPlatform && isImsWfcProvisioned();
+ log("updateWfcProvisionedSwitch isProvisioned" + isProvisioned);
mImsWfcProvisionedSwitch.setOnCheckedChangeListener(null);
- mImsWfcProvisionedSwitch.setChecked(isImsWfcProvisioned());
+ mImsWfcProvisionedSwitch.setChecked(isProvisioned);
mImsWfcProvisionedSwitch.setOnCheckedChangeListener(mImsWfcCheckedChangeListener);
mImsWfcProvisionedSwitch.setEnabled(!IS_USER_BUILD
- && mImsManager.isWfcEnabledByPlatform());
+ && isEnabledByPlatform && isImsWfcProvisioningRequired());
+ }
+
+ private void updateEabProvisionedSwitch(boolean isEnabledByPlatform) {
+ log("updateEabProvisionedSwitch isEabWfcProvisioned()=" + isEabProvisioned());
mEabProvisionedSwitch.setOnCheckedChangeListener(null);
mEabProvisionedSwitch.setChecked(isEabProvisioned());
mEabProvisionedSwitch.setOnCheckedChangeListener(mEabCheckedChangeListener);
mEabProvisionedSwitch.setEnabled(!IS_USER_BUILD
- && isEabEnabledByPlatform());
+ && isEnabledByPlatform && isEabProvisioningRequired());
}
OnClickListener mDnsCheckButtonHandler = new OnClickListener() {
@@ -1941,4 +2040,45 @@
intent.putExtra("isDefault", isChecked);
sendBroadcast(intent);
}
+
+ private boolean isImsSupportedOnDevice(Context context) {
+ return context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_TELEPHONY_IMS);
+ }
+
+ private void updateServiceEnabledByPlatform() {
+ int subId = mPhone.getSubId();
+ if (subId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
+ log("updateServiceEnabledByPlatform subscription ID is invalid");
+ return;
+ }
+
+ ImsMmTelManager imsMmTelManager = mImsManager.getImsMmTelManager(subId);
+ try {
+ imsMmTelManager.isSupported(MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE,
+ AccessNetworkConstants.TRANSPORT_TYPE_WWAN, getMainExecutor(), (result) -> {
+ updateVolteProvisionedSwitch(result);
+ });
+ imsMmTelManager.isSupported(MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VIDEO,
+ AccessNetworkConstants.TRANSPORT_TYPE_WWAN, getMainExecutor(), (result) -> {
+ updateVtProvisionedSwitch(result);
+ });
+ imsMmTelManager.isSupported(MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE,
+ AccessNetworkConstants.TRANSPORT_TYPE_WLAN, getMainExecutor(), (result) -> {
+ updateWfcProvisionedSwitch(result);
+ });
+ } catch (ImsException e) {
+ e.printStackTrace();
+ }
+ }
+
+ private Phone getPhone(int subId) {
+ log("getPhone subId = " + subId);
+ Phone phone = PhoneFactory.getPhone(SubscriptionManager.getPhoneId(subId));
+ if (phone == null) {
+ log("return the default phone");
+ return PhoneFactory.getDefaultPhone();
+ }
+
+ return phone;
+ }
}
diff --git a/src/com/android/phone/slice/PremiumNetworkEntitlementApi.java b/src/com/android/phone/slice/PremiumNetworkEntitlementApi.java
new file mode 100644
index 0000000..de26955
--- /dev/null
+++ b/src/com/android/phone/slice/PremiumNetworkEntitlementApi.java
@@ -0,0 +1,204 @@
+/*
+ * Copyright (C) 2022 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.phone.slice;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.content.Context;
+import android.os.PersistableBundle;
+import android.provider.DeviceConfig;
+import android.telephony.AnomalyReporter;
+import android.telephony.CarrierConfigManager;
+import android.telephony.TelephonyManager;
+import android.util.Log;
+
+import com.android.internal.telephony.Phone;
+import com.android.libraries.entitlement.CarrierConfig;
+import com.android.libraries.entitlement.ServiceEntitlement;
+import com.android.libraries.entitlement.ServiceEntitlementException;
+import com.android.libraries.entitlement.ServiceEntitlementRequest;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.util.UUID;
+
+class PremiumNetworkEntitlementApi {
+ private static final String TAG = "PremiumNetworkEntitlementApi";
+ private static final String ENTITLEMENT_STATUS_KEY = "EntitlementStatus";
+ private static final String PROVISION_STATUS_KEY = "ProvisionStatus";
+ private static final String SERVICE_FLOW_URL_KEY = "ServiceFlow_URL";
+ private static final String PROVISION_TIME_LEFT_KEY = "ProvisionTimeLeft";
+ private static final String DEFAULT_EAP_AKA_RESPONSE = "Default EAP AKA response";
+ /**
+ * UUID to report an anomaly if an unexpected error is received during entitlement check.
+ */
+ private static final String UUID_ENTITLEMENT_CHECK_UNEXPECTED_ERROR =
+ "f2b0661a-9114-4b1b-9add-a8d338f9c054";
+
+ /**
+ * Experiment flag to enable bypassing EAP-AKA authentication for Slice Purchase activities.
+ * The device will accept any challenge from the entitlement server and return a predefined
+ * string as a response.
+ *
+ * This flag should be enabled for testing only.
+ */
+ public static final String BYPASS_EAP_AKA_AUTH_FOR_SLICE_PURCHASE_ENABLED =
+ "bypass_eap_aka_auth_for_slice_purchase_enabled";
+
+ @NonNull private final Phone mPhone;
+ @NonNull private final PersistableBundle mCarrierConfig;
+ @NonNull private final ServiceEntitlement mServiceEntitlement;
+
+ PremiumNetworkEntitlementApi(@NonNull Phone phone, PersistableBundle carrierConfig) {
+ mPhone = phone;
+ mCarrierConfig = carrierConfig;
+ if (isBypassEapAkaAuthForSlicePurchaseEnabled()) {
+ mServiceEntitlement =
+ new ServiceEntitlement(
+ mPhone.getContext(),
+ getEntitlementServerCarrierConfig(carrierConfig),
+ mPhone.getSubId(),
+ true,
+ DEFAULT_EAP_AKA_RESPONSE);
+ } else {
+ mServiceEntitlement =
+ new ServiceEntitlement(
+ mPhone.getContext(),
+ getEntitlementServerCarrierConfig(carrierConfig),
+ mPhone.getSubId());
+ }
+ }
+
+ /**
+ * Returns premium network slice entitlement check result from carrier API (over network),
+ * or {@code null} on unrecoverable network issue or malformed server response.
+ * This is blocking call sending HTTP request and should not be called on main thread.
+ */
+ @Nullable
+ public PremiumNetworkEntitlementResponse checkEntitlementStatus(
+ @TelephonyManager.PremiumCapability int capability) {
+ Log.d(TAG, "checkEntitlementStatus subId=" + mPhone.getSubId());
+ ServiceEntitlementRequest.Builder requestBuilder = ServiceEntitlementRequest.builder();
+ // Set fake device info to avoid leaking
+ requestBuilder.setTerminalVendor("vendorX");
+ requestBuilder.setTerminalModel("modelY");
+ requestBuilder.setTerminalSoftwareVersion("versionZ");
+ requestBuilder.setAcceptContentType(ServiceEntitlementRequest.ACCEPT_CONTENT_TYPE_JSON);
+ requestBuilder.setNetworkIdentifier(
+ TelephonyManager.convertPremiumCapabilityToString(capability));
+ ServiceEntitlementRequest request = requestBuilder.build();
+ PremiumNetworkEntitlementResponse premiumNetworkEntitlementResponse =
+ new PremiumNetworkEntitlementResponse();
+
+ String response = null;
+ try {
+ response = mServiceEntitlement.queryEntitlementStatus(
+ ServiceEntitlement.APP_PREMIUM_NETWORK_SLICE,
+ request);
+ } catch (ServiceEntitlementException e) {
+ Log.e(TAG, "queryEntitlementStatus failed", e);
+ reportAnomaly(UUID_ENTITLEMENT_CHECK_UNEXPECTED_ERROR,
+ "checkEntitlementStatus failed with ServiceEntitlementException");
+ }
+ if (response == null) {
+ return null;
+ }
+ try {
+ JSONObject jsonAuthResponse = new JSONObject(response);
+ String entitlementStatus = null;
+ String provisionStatus = null;
+ String provisionTimeLeft = null;
+ if (jsonAuthResponse.has(ServiceEntitlement.APP_PREMIUM_NETWORK_SLICE)) {
+ JSONObject jsonToken = jsonAuthResponse.getJSONObject(
+ ServiceEntitlement.APP_PREMIUM_NETWORK_SLICE);
+ if (jsonToken.has(ENTITLEMENT_STATUS_KEY)) {
+ entitlementStatus = jsonToken.getString(ENTITLEMENT_STATUS_KEY);
+ if (entitlementStatus == null) {
+ return null;
+ }
+ premiumNetworkEntitlementResponse.mEntitlementStatus =
+ Integer.valueOf(entitlementStatus);
+ }
+ if (jsonToken.has(PROVISION_STATUS_KEY)) {
+ provisionStatus = jsonToken.getString(PROVISION_STATUS_KEY);
+ if (provisionStatus != null) {
+ premiumNetworkEntitlementResponse.mProvisionStatus =
+ Integer.valueOf(provisionStatus);
+ }
+ }
+ if (jsonToken.has(PROVISION_TIME_LEFT_KEY)) {
+ provisionTimeLeft = jsonToken.getString(PROVISION_TIME_LEFT_KEY);
+ if (provisionTimeLeft != null) {
+ premiumNetworkEntitlementResponse.mEntitlementStatus =
+ Integer.valueOf(provisionTimeLeft);
+ }
+ }
+ if (jsonToken.has(SERVICE_FLOW_URL_KEY)) {
+ provisionStatus = jsonToken.getString(SERVICE_FLOW_URL_KEY);
+ premiumNetworkEntitlementResponse.mServiceFlowURL =
+ jsonToken.getString(SERVICE_FLOW_URL_KEY);
+ }
+ }
+
+
+ } catch (JSONException e) {
+ Log.e(TAG, "queryEntitlementStatus failed", e);
+ reportAnomaly(UUID_ENTITLEMENT_CHECK_UNEXPECTED_ERROR,
+ "checkEntitlementStatus failed with JSONException");
+ }
+
+ return premiumNetworkEntitlementResponse;
+ }
+
+ private void reportAnomaly(@NonNull String uuid, @NonNull String log) {
+ AnomalyReporter.reportAnomaly(UUID.fromString(uuid), log);
+ }
+
+
+ /** Returns carrier config for the {@code subId}. */
+ private static PersistableBundle getConfigForSubId(Context context, int subId) {
+ CarrierConfigManager carrierConfigManager =
+ context.getSystemService(CarrierConfigManager.class);
+ PersistableBundle carrierConfig = carrierConfigManager.getConfigForSubId(subId);
+ if (carrierConfig == null) {
+ Log.d(TAG, "getDefaultConfig");
+ carrierConfig = CarrierConfigManager.getDefaultConfig();
+ }
+ return carrierConfig;
+ }
+
+ /**
+ * Returns entitlement server url for the {@code subId} or
+ * a default empty string if it is not available.
+ */
+ public static String getEntitlementServerUrl(PersistableBundle carrierConfig, int subId) {
+ return carrierConfig.getString(
+ CarrierConfigManager.ImsServiceEntitlement.KEY_ENTITLEMENT_SERVER_URL_STRING,
+ "");
+ }
+
+ private CarrierConfig getEntitlementServerCarrierConfig(PersistableBundle carrierConfig) {
+ String entitlementServiceUrl = getEntitlementServerUrl(carrierConfig, mPhone.getSubId());
+ return CarrierConfig.builder().setServerUrl(entitlementServiceUrl).build();
+ }
+
+ private boolean isBypassEapAkaAuthForSlicePurchaseEnabled() {
+ return DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_TELEPHONY,
+ BYPASS_EAP_AKA_AUTH_FOR_SLICE_PURCHASE_ENABLED, false);
+ }
+}
diff --git a/src/com/android/phone/slice/PremiumNetworkEntitlementResponse.java b/src/com/android/phone/slice/PremiumNetworkEntitlementResponse.java
new file mode 100644
index 0000000..4588b71
--- /dev/null
+++ b/src/com/android/phone/slice/PremiumNetworkEntitlementResponse.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright (C) 2022 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.phone.slice;
+
+import android.annotation.IntDef;
+
+class PremiumNetworkEntitlementResponse {
+
+ public static final int PREMIUM_NETWORK_ENTITLEMENT_STATUS_DISABLED = 0;
+ public static final int PREMIUM_NETWORK_ENTITLEMENT_STATUS_ENABLED = 1;
+ public static final int PREMIUM_NETWORK_ENTITLEMENT_STATUS_INCOMPATIBLE = 2;
+ public static final int PREMIUM_NETWORK_ENTITLEMENT_STATUS_PROVISIONING = 3;
+ public static final int PREMIUM_NETWORK_ENTITLEMENT_STATUS_INCLUDED = 4;
+
+ @IntDef(prefix = {"PREMIUM_NETWORK_ENTITLEMENT_STATUS_"},
+ value = {
+ PREMIUM_NETWORK_ENTITLEMENT_STATUS_DISABLED,
+ PREMIUM_NETWORK_ENTITLEMENT_STATUS_ENABLED,
+ PREMIUM_NETWORK_ENTITLEMENT_STATUS_INCOMPATIBLE,
+ PREMIUM_NETWORK_ENTITLEMENT_STATUS_PROVISIONING,
+ PREMIUM_NETWORK_ENTITLEMENT_STATUS_INCLUDED
+ })
+ public @interface PremiumNetworkEntitlementStatus {}
+
+ public static final int PREMIUM_NETWORK_PROVISION_STATUS_NOT_PROVISIONED = 0;
+ public static final int PREMIUM_NETWORK_PROVISION_STATUS_PROVISIONED = 1;
+ public static final int PREMIUM_NETWORK_PROVISION_STATUS_NOT_REQUIRED = 2;
+ public static final int PREMIUM_NETWORK_PROVISION_STATUS_IN_PROGRESS = 3;
+
+ @IntDef(prefix = {"PREMIUM_NETWORK_PROVISION_STATUS_"},
+ value = {
+ PREMIUM_NETWORK_PROVISION_STATUS_NOT_PROVISIONED,
+ PREMIUM_NETWORK_PROVISION_STATUS_PROVISIONED,
+ PREMIUM_NETWORK_PROVISION_STATUS_NOT_REQUIRED,
+ PREMIUM_NETWORK_PROVISION_STATUS_IN_PROGRESS
+ })
+ public @interface PremiumNetworkProvisionStatus {}
+
+ @PremiumNetworkEntitlementStatus int mEntitlementStatus;
+ @PremiumNetworkProvisionStatus int mProvisionStatus;
+ int mProvisionTimeLeftInSeconds;
+ String mServiceFlowURL;
+
+ boolean isProvisioned() {
+ if (mProvisionStatus == PREMIUM_NETWORK_PROVISION_STATUS_PROVISIONED
+ || mEntitlementStatus == PREMIUM_NETWORK_ENTITLEMENT_STATUS_INCLUDED) {
+ return true;
+ }
+ return false;
+ }
+
+ boolean isProvisioningInProgress() {
+ if (mProvisionStatus == PREMIUM_NETWORK_PROVISION_STATUS_IN_PROGRESS
+ || mEntitlementStatus == PREMIUM_NETWORK_ENTITLEMENT_STATUS_PROVISIONING) {
+ return true;
+ }
+ return false;
+ }
+
+ boolean isPremiumNetworkCapabilityAllowed() {
+ switch (mEntitlementStatus) {
+ case PREMIUM_NETWORK_ENTITLEMENT_STATUS_INCOMPATIBLE:
+ case PREMIUM_NETWORK_ENTITLEMENT_STATUS_DISABLED:
+ return false;
+ }
+ return true;
+ }
+}
diff --git a/src/com/android/phone/slicestore/SliceStore.java b/src/com/android/phone/slice/SlicePurchaseController.java
similarity index 69%
rename from src/com/android/phone/slicestore/SliceStore.java
rename to src/com/android/phone/slice/SlicePurchaseController.java
index bb66973..0f29c70 100644
--- a/src/com/android/phone/slicestore/SliceStore.java
+++ b/src/com/android/phone/slice/SlicePurchaseController.java
@@ -14,7 +14,12 @@
* limitations under the License.
*/
-package com.android.phone.slicestore;
+package com.android.phone.slice;
+
+import static android.telephony.TelephonyManager.PURCHASE_PREMIUM_CAPABILITY_RESULT_ALREADY_IN_PROGRESS;
+import static android.telephony.TelephonyManager.PURCHASE_PREMIUM_CAPABILITY_RESULT_ALREADY_PURCHASED;
+import static android.telephony.TelephonyManager.PURCHASE_PREMIUM_CAPABILITY_RESULT_CARRIER_DISABLED;
+import static android.telephony.TelephonyManager.PURCHASE_PREMIUM_CAPABILITY_RESULT_ENTITLEMENT_CHECK_FAILED;
import android.annotation.IntDef;
import android.annotation.NonNull;
@@ -28,6 +33,8 @@
import android.net.ConnectivityManager;
import android.os.AsyncResult;
import android.os.Handler;
+import android.os.HandlerThread;
+import android.os.Looper;
import android.os.Message;
import android.os.PersistableBundle;
import android.telephony.AnomalyReporter;
@@ -57,8 +64,8 @@
import java.util.function.Consumer;
/**
- * The SliceStore controls the purchase and availability of all cellular premium capabilities.
- * Applications can check whether premium capabilities are available by calling
+ * The SlicePurchaseController controls the purchase and availability of all cellular premium
+ * capabilities. Applications can check whether premium capabilities are available by calling
* {@link TelephonyManager#isPremiumCapabilityAvailableForPurchase(int)}. If this returns true,
* they can then call {@link TelephonyManager#purchasePremiumCapability(int, Executor, Consumer)}
* to purchase the premium capability. If all conditions are met, a notification will be displayed
@@ -67,8 +74,8 @@
* from the carrier. If the purchase is successful, the premium capability will be available for
* all applications to request through {@link ConnectivityManager#requestNetwork}.
*/
-public class SliceStore extends Handler {
- @NonNull private static final String TAG = "SliceStore";
+public class SlicePurchaseController extends Handler {
+ @NonNull private static final String TAG = "SlicePurchaseController";
/** Unknown failure code. */
public static final int FAILURE_CODE_UNKNOWN = 0;
@@ -128,101 +135,108 @@
*/
private static final String UUID_NETWORK_SETUP_FAILED = "12eeffbf-08f8-40ed-9a00-d344199552fc";
- /** Action to start the SliceStore application and display the network boost notification. */
- public static final String ACTION_START_SLICE_STORE =
- "com.android.phone.slicestore.action.START_SLICE_STORE";
- /** Action indicating the SliceStore purchase was not completed in time. */
- public static final String ACTION_SLICE_STORE_RESPONSE_TIMEOUT =
- "com.android.phone.slicestore.action.SLICE_STORE_RESPONSE_TIMEOUT";
+ /**
+ * Action to start the slice purchase application and display the network boost notification.
+ */
+ public static final String ACTION_START_SLICE_PURCHASE_APP =
+ "com.android.phone.slice.action.START_SLICE_PURCHASE_APP";
+ /** Action indicating the premium capability purchase was not completed in time. */
+ public static final String ACTION_SLICE_PURCHASE_APP_RESPONSE_TIMEOUT =
+ "com.android.phone.slice.action.SLICE_PURCHASE_APP_RESPONSE_TIMEOUT";
/** Action indicating the network boost notification or WebView was canceled. */
- private static final String ACTION_SLICE_STORE_RESPONSE_CANCELED =
- "com.android.phone.slicestore.action.SLICE_STORE_RESPONSE_CANCELED";
+ private static final String ACTION_SLICE_PURCHASE_APP_RESPONSE_CANCELED =
+ "com.android.phone.slice.action.SLICE_PURCHASE_APP_RESPONSE_CANCELED";
/** Action indicating a carrier error prevented premium capability purchase. */
- private static final String ACTION_SLICE_STORE_RESPONSE_CARRIER_ERROR =
- "com.android.phone.slicestore.action.SLICE_STORE_RESPONSE_CARRIER_ERROR";
- /** Action indicating a Telephony or SliceStore error prevented premium capability purchase. */
- private static final String ACTION_SLICE_STORE_RESPONSE_REQUEST_FAILED =
- "com.android.phone.slicestore.action.SLICE_STORE_RESPONSE_REQUEST_FAILED";
+ private static final String ACTION_SLICE_PURCHASE_APP_RESPONSE_CARRIER_ERROR =
+ "com.android.phone.slice.action.SLICE_PURCHASE_APP_RESPONSE_CARRIER_ERROR";
+ /**
+ * Action indicating a Telephony or slice purchase application error prevented premium
+ * capability purchase.
+ */
+ private static final String ACTION_SLICE_PURCHASE_APP_RESPONSE_REQUEST_FAILED =
+ "com.android.phone.slice.action.SLICE_PURCHASE_APP_RESPONSE_REQUEST_FAILED";
/** Action indicating the purchase request was not made on the default data subscription. */
- private static final String ACTION_SLICE_STORE_RESPONSE_NOT_DEFAULT_DATA =
- "com.android.phone.slicestore.action.SLICE_STORE_RESPONSE_NOT_DEFAULT_DATA";
+ private static final String ACTION_SLICE_PURCHASE_APP_RESPONSE_NOT_DEFAULT_DATA_SUB =
+ "com.android.phone.slice.action.SLICE_PURCHASE_APP_RESPONSE_NOT_DEFAULT_DATA_SUB";
/** Action indicating the purchase request was successful. */
- private static final String ACTION_SLICE_STORE_RESPONSE_SUCCESS =
- "com.android.phone.slicestore.action.SLICE_STORE_RESPONSE_SUCCESS";
+ private static final String ACTION_SLICE_PURCHASE_APP_RESPONSE_SUCCESS =
+ "com.android.phone.slice.action.SLICE_PURCHASE_APP_RESPONSE_SUCCESS";
- /** Extra for the phone index to send to the SliceStore application. */
- public static final String EXTRA_PHONE_ID = "com.android.phone.slicestore.extra.PHONE_ID";
- /** Extra for the subscription ID to send to the SliceStore application. */
- public static final String EXTRA_SUB_ID = "com.android.phone.slicestore.extra.SUB_ID";
- /** Extra for the requested premium capability to purchase from the SliceStore application. */
+ /** Extra for the phone index to send to the slice purchase application. */
+ public static final String EXTRA_PHONE_ID = "com.android.phone.slice.extra.PHONE_ID";
+ /** Extra for the subscription ID to send to the slice purchase application. */
+ public static final String EXTRA_SUB_ID = "com.android.phone.slice.extra.SUB_ID";
+ /**
+ * Extra for the requested premium capability to purchase from the slice purchase application.
+ */
public static final String EXTRA_PREMIUM_CAPABILITY =
- "com.android.phone.slicestore.extra.PREMIUM_CAPABILITY";
+ "com.android.phone.slice.extra.PREMIUM_CAPABILITY";
/** Extra for the duration of the purchased premium capability. */
public static final String EXTRA_PURCHASE_DURATION =
- "com.android.phone.slicestore.extra.PURCHASE_DURATION";
+ "com.android.phone.slice.extra.PURCHASE_DURATION";
/** Extra for the {@link FailureCode} why the premium capability purchase failed. */
- public static final String EXTRA_FAILURE_CODE =
- "com.android.phone.slicestore.extra.FAILURE_CODE";
+ public static final String EXTRA_FAILURE_CODE = "com.android.phone.slice.extra.FAILURE_CODE";
/** Extra for the human-readable reason why the premium capability purchase failed. */
public static final String EXTRA_FAILURE_REASON =
- "com.android.phone.slicestore.extra.FAILURE_REASON";
+ "com.android.phone.slice.extra.FAILURE_REASON";
/**
* Extra for the application name requesting to purchase the premium capability
- * from the SliceStore application.
+ * from the slice purchase application.
*/
public static final String EXTRA_REQUESTING_APP_NAME =
- "com.android.phone.slicestore.extra.REQUESTING_APP_NAME";
+ "com.android.phone.slice.extra.REQUESTING_APP_NAME";
/**
- * Extra for the canceled PendingIntent that the SliceStore application can send as a response
- * if the network boost notification or WebView was canceled by the user.
- * Sends {@link #ACTION_SLICE_STORE_RESPONSE_CANCELED}.
+ * Extra for the canceled PendingIntent that the slice purchase application can send as a
+ * response if the network boost notification or WebView was canceled by the user.
+ * Sends {@link #ACTION_SLICE_PURCHASE_APP_RESPONSE_CANCELED}.
*/
public static final String EXTRA_INTENT_CANCELED =
- "com.android.phone.slicestore.extra.INTENT_CANCELED";
+ "com.android.phone.slice.extra.INTENT_CANCELED";
/**
- * Extra for the carrier error PendingIntent that the SliceStore application can send as a
+ * Extra for the carrier error PendingIntent that the slice purchase application can send as a
* response if the premium capability purchase request failed due to a carrier error.
- * Sends {@link #ACTION_SLICE_STORE_RESPONSE_CARRIER_ERROR}.
+ * Sends {@link #ACTION_SLICE_PURCHASE_APP_RESPONSE_CARRIER_ERROR}.
* Sender can modify the intent to specify the failure code and reason for failure with
* {@link #EXTRA_FAILURE_CODE} and {@link #EXTRA_FAILURE_REASON}.
*/
public static final String EXTRA_INTENT_CARRIER_ERROR =
- "com.android.phone.slicestore.extra.INTENT_CARRIER_ERROR";
+ "com.android.phone.slice.extra.INTENT_CARRIER_ERROR";
/**
- * Extra for the request failed PendingIntent that the SliceStore application can send as a
+ * Extra for the request failed PendingIntent that the slice purchase application can send as a
* response if the premium capability purchase request failed due to an error in Telephony or
- * the SliceStore application.
- * Sends {@link #ACTION_SLICE_STORE_RESPONSE_REQUEST_FAILED}.
+ * the slice purchase application.
+ * Sends {@link #ACTION_SLICE_PURCHASE_APP_RESPONSE_REQUEST_FAILED}.
*/
public static final String EXTRA_INTENT_REQUEST_FAILED =
- "com.android.phone.slicestore.extra.INTENT_REQUEST_FAILED";
+ "com.android.phone.slice.extra.INTENT_REQUEST_FAILED";
/**
- * Extra for the not-default data subscription ID PendingIntent that the SliceStore application
- * can send as a response if the premium capability purchase request failed because it was not
- * requested on the default data subscription.
- * Sends {@link #ACTION_SLICE_STORE_RESPONSE_NOT_DEFAULT_DATA}.
+ * Extra for the not-default data subscription ID PendingIntent that the slice purchase
+ * application can send as a response if the premium capability purchase request failed because
+ * it was not requested on the default data subscription.
+ * Sends {@link #ACTION_SLICE_PURCHASE_APP_RESPONSE_NOT_DEFAULT_DATA_SUB}.
*/
- public static final String EXTRA_INTENT_NOT_DEFAULT_DATA =
- "com.android.phone.slicestore.extra.INTENT_NOT_DEFAULT_DATA";
+ public static final String EXTRA_INTENT_NOT_DEFAULT_DATA_SUB =
+ "com.android.phone.slice.extra.INTENT_NOT_DEFAULT_DATA_SUB";
/**
- * Extra for the success PendingIntent that the SliceStore application can send as a response
- * if the premium capability purchase request was successful.
- * Sends {@link #ACTION_SLICE_STORE_RESPONSE_SUCCESS}.
+ * Extra for the success PendingIntent that the slice purchase application can send as a
+ * response if the premium capability purchase request was successful.
+ * Sends {@link #ACTION_SLICE_PURCHASE_APP_RESPONSE_SUCCESS}.
* Sender can modify the intent to specify a purchase duration with
* {@link #EXTRA_PURCHASE_DURATION}.
*/
public static final String EXTRA_INTENT_SUCCESS =
- "com.android.phone.slicestore.extra.INTENT_SUCCESS";
+ "com.android.phone.slice.extra.INTENT_SUCCESS";
- /** Component name to send an explicit broadcast to SliceStoreBroadcastReceiver. */
- private static final ComponentName SLICE_STORE_COMPONENT_NAME =
+ /** Component name to send an explicit broadcast to SlicePurchaseBroadcastReceiver. */
+ private static final ComponentName SLICE_PURCHASE_APP_COMPONENT_NAME =
ComponentName.unflattenFromString(
- "com.android.carrierdefaultapp/.SliceStoreBroadcastReceiver");
+ "com.android.carrierdefaultapp/.SlicePurchaseBroadcastReceiver");
- /** Map of phone ID -> SliceStore instances. */
- @NonNull private static final Map<Integer, SliceStore> sInstances = new HashMap<>();
+ /** Map of phone ID -> SlicePurchaseController instances. */
+ @NonNull private static final Map<Integer, SlicePurchaseController> sInstances =
+ new HashMap<>();
- /** The Phone instance used to create the SliceStore */
+ /** The Phone instance used to create the SlicePurchaseController. */
@NonNull private final Phone mPhone;
/** The set of capabilities that are pending network setup. */
@NonNull private final Set<Integer> mPendingSetupCapabilities = new HashSet<>();
@@ -230,81 +244,92 @@
@NonNull private final Set<Integer> mThrottledCapabilities = new HashSet<>();
/** A map of pending capabilities to the onComplete message for the purchase request. */
@NonNull private final Map<Integer, Message> mPendingPurchaseCapabilities = new HashMap<>();
- /** A map of capabilities to the SliceStoreBroadcastReceiver for SliceStore responses. */
- @NonNull private final Map<Integer, SliceStoreBroadcastReceiver> mSliceStoreBroadcastReceivers =
- new HashMap<>();
+ /**
+ * A map of capabilities to the SlicePurchaseControllerBroadcastReceiver to handle
+ * slice purchase application responses.
+ */
+ @NonNull private final Map<Integer, SlicePurchaseControllerBroadcastReceiver>
+ mSlicePurchaseControllerBroadcastReceivers = new HashMap<>();
/** The current network slicing configuration. */
@Nullable private NetworkSlicingConfig mSlicingConfig;
+ /* Premium network entitlement query API */
+ @NonNull private PremiumNetworkEntitlementApi mPremiumNetworkEntitlementApi;
- private class SliceStoreBroadcastReceiver extends BroadcastReceiver {
+ private class SlicePurchaseControllerBroadcastReceiver extends BroadcastReceiver {
@TelephonyManager.PremiumCapability private final int mCapability;
- SliceStoreBroadcastReceiver(@TelephonyManager.PremiumCapability int capability) {
+ SlicePurchaseControllerBroadcastReceiver(
+ @TelephonyManager.PremiumCapability int capability) {
mCapability = capability;
}
@Override
public void onReceive(@NonNull Context context, @NonNull Intent intent) {
String action = intent.getAction();
- logd("SliceStoreBroadcastReceiver("
+ logd("SlicePurchaseControllerBroadcastReceiver("
+ TelephonyManager.convertPremiumCapabilityToString(mCapability)
+ ") received action: " + action);
int phoneId = intent.getIntExtra(EXTRA_PHONE_ID,
SubscriptionManager.INVALID_PHONE_INDEX);
int capability = intent.getIntExtra(EXTRA_PREMIUM_CAPABILITY,
PREMIUM_CAPABILITY_INVALID);
- if (SliceStore.getInstance(phoneId) == null) {
- reportAnomaly(UUID_INVALID_PHONE_ID, "SliceStoreBroadcastReceiver( "
+ if (SlicePurchaseController.getInstance(phoneId) == null) {
+ reportAnomaly(UUID_INVALID_PHONE_ID, "SlicePurchaseControllerBroadcastReceiver( "
+ TelephonyManager.convertPremiumCapabilityToString(mCapability)
+ ") received invalid phoneId: " + phoneId);
return;
} else if (capability != mCapability) {
- logd("SliceStoreBroadcastReceiver("
+ logd("SlicePurchaseControllerBroadcastReceiver("
+ TelephonyManager.convertPremiumCapabilityToString(mCapability)
+ ") ignoring intent for capability "
+ TelephonyManager.convertPremiumCapabilityToString(capability));
return;
}
switch (action) {
- case ACTION_SLICE_STORE_RESPONSE_CANCELED: {
- logd("SliceStore canceled for capability: "
+ case ACTION_SLICE_PURCHASE_APP_RESPONSE_CANCELED: {
+ logd("Slice purchase application canceled for capability: "
+ TelephonyManager.convertPremiumCapabilityToString(capability));
- SliceStore.getInstance(phoneId).sendPurchaseResultFromSliceStore(capability,
+ SlicePurchaseController.getInstance(phoneId)
+ .handlePurchaseResult(capability,
TelephonyManager.PURCHASE_PREMIUM_CAPABILITY_RESULT_USER_CANCELED,
true);
break;
}
- case ACTION_SLICE_STORE_RESPONSE_CARRIER_ERROR: {
+ case ACTION_SLICE_PURCHASE_APP_RESPONSE_CARRIER_ERROR: {
int failureCode = intent.getIntExtra(EXTRA_FAILURE_CODE, FAILURE_CODE_UNKNOWN);
String failureReason = intent.getStringExtra(EXTRA_FAILURE_REASON);
- SliceStore.getInstance(phoneId).onCarrierError(
+ SlicePurchaseController.getInstance(phoneId).onCarrierError(
capability, failureCode, failureReason);
break;
}
- case ACTION_SLICE_STORE_RESPONSE_REQUEST_FAILED: {
+ case ACTION_SLICE_PURCHASE_APP_RESPONSE_REQUEST_FAILED: {
logd("Purchase premium capability request failed for capability: "
+ TelephonyManager.convertPremiumCapabilityToString(capability));
- SliceStore.getInstance(phoneId).sendPurchaseResultFromSliceStore(capability,
+ SlicePurchaseController.getInstance(phoneId)
+ .handlePurchaseResult(capability,
TelephonyManager.PURCHASE_PREMIUM_CAPABILITY_RESULT_REQUEST_FAILED,
false);
break;
}
- case ACTION_SLICE_STORE_RESPONSE_NOT_DEFAULT_DATA: {
+ case ACTION_SLICE_PURCHASE_APP_RESPONSE_NOT_DEFAULT_DATA_SUB: {
logd("Purchase premium capability request was not made on the default data "
+ "subscription for capability: "
+ TelephonyManager.convertPremiumCapabilityToString(capability));
- SliceStore.getInstance(phoneId).sendPurchaseResultFromSliceStore(capability,
- TelephonyManager.PURCHASE_PREMIUM_CAPABILITY_RESULT_NOT_DEFAULT_DATA,
+ SlicePurchaseController.getInstance(phoneId)
+ .handlePurchaseResult(capability,
+ TelephonyManager
+ .PURCHASE_PREMIUM_CAPABILITY_RESULT_NOT_DEFAULT_DATA_SUB,
false);
break;
}
- case ACTION_SLICE_STORE_RESPONSE_SUCCESS: {
+ case ACTION_SLICE_PURCHASE_APP_RESPONSE_SUCCESS: {
long duration = intent.getLongExtra(EXTRA_PURCHASE_DURATION, 0);
- SliceStore.getInstance(phoneId).onCarrierSuccess(capability, duration);
+ SlicePurchaseController.getInstance(phoneId).onCarrierSuccess(
+ capability, duration);
break;
}
default:
- reportAnomaly(UUID_UNKNOWN_ACTION, "SliceStoreBroadcastReceiver("
+ reportAnomaly(UUID_UNKNOWN_ACTION, "SlicePurchaseControllerBroadcastReceiver("
+ TelephonyManager.convertPremiumCapabilityToString(mCapability)
+ ") received unknown action: " + action);
break;
@@ -313,36 +338,42 @@
}
/**
- * Get the static SliceStore instance for the given phone or create one if it doesn't exist.
+ * Get the static SlicePurchaseController instance for the given phone or create one if it
+ * doesn't exist.
*
- * @param phone The Phone to get the SliceStore for.
- * @return The static SliceStore instance.
+ * @param phone The Phone to get the SlicePurchaseController for.
+ * @return The static SlicePurchaseController instance.
*/
- @NonNull public static synchronized SliceStore getInstance(@NonNull Phone phone) {
+ @NonNull public static synchronized SlicePurchaseController getInstance(@NonNull Phone phone) {
// TODO: Add listeners for multi sim setting changed (maybe carrier config changed too)
- // that dismiss notifications and update SliceStore instance
+ // that dismiss notifications and update SlicePurchaseController instance
int phoneId = phone.getPhoneId();
if (sInstances.get(phoneId) == null) {
- sInstances.put(phoneId, new SliceStore(phone));
+ HandlerThread handlerThread = new HandlerThread("SlicePurchaseController");
+ handlerThread.start();
+ sInstances.put(phoneId, new SlicePurchaseController(phone, handlerThread.getLooper()));
}
return sInstances.get(phoneId);
}
/**
- * Get the static SliceStore instance for the given phone ID if it exists.
+ * Get the static SlicePurchaseController instance for the given phone ID if it exists.
*
- * @param phoneId The phone ID to get the SliceStore for.
- * @return The static SliceStore instance or {@code null} if it hasn't been created yet.
+ * @param phoneId The phone ID to get the SlicePurchaseController for.
+ * @return The static SlicePurchaseController instance or
+ * {@code null} if it hasn't been created yet.
*/
- @Nullable private static SliceStore getInstance(int phoneId) {
+ @Nullable private static SlicePurchaseController getInstance(int phoneId) {
return sInstances.get(phoneId);
}
- private SliceStore(@NonNull Phone phone) {
- super(phone.getLooper());
+ private SlicePurchaseController(@NonNull Phone phone, @NonNull Looper looper) {
+ super(looper);
mPhone = phone;
// TODO: Create a cached value for slicing config in DataIndication and initialize here
mPhone.mCi.registerForSlicingConfigChanged(this, EVENT_SLICING_CONFIG_CHANGED, null);
+ mPremiumNetworkEntitlementApi = new PremiumNetworkEntitlementApi(mPhone,
+ getCarrierConfigs());
}
@Override
@@ -407,7 +438,7 @@
+ " unsupported by the carrier.");
return false;
}
- if (!isDefaultData()) {
+ if (!isDefaultDataSub()) {
logd("Premium capability "
+ TelephonyManager.convertPremiumCapabilityToString(capability)
+ " unavailable on the non-default data subscription.");
@@ -440,19 +471,19 @@
}
if (!isPremiumCapabilitySupportedByCarrier(capability)) {
sendPurchaseResult(capability,
- TelephonyManager.PURCHASE_PREMIUM_CAPABILITY_RESULT_CARRIER_DISABLED,
+ PURCHASE_PREMIUM_CAPABILITY_RESULT_CARRIER_DISABLED,
onComplete);
return;
}
- if (!isDefaultData()) {
+ if (!isDefaultDataSub()) {
sendPurchaseResult(capability,
- TelephonyManager.PURCHASE_PREMIUM_CAPABILITY_RESULT_NOT_DEFAULT_DATA,
+ TelephonyManager.PURCHASE_PREMIUM_CAPABILITY_RESULT_NOT_DEFAULT_DATA_SUB,
onComplete);
return;
}
if (isSlicingConfigActive(capability)) {
sendPurchaseResult(capability,
- TelephonyManager.PURCHASE_PREMIUM_CAPABILITY_RESULT_ALREADY_PURCHASED,
+ PURCHASE_PREMIUM_CAPABILITY_RESULT_ALREADY_PURCHASED,
onComplete);
return;
}
@@ -474,17 +505,10 @@
onComplete);
return;
}
- if (isNetworkCongested(capability)) {
- throttleCapability(capability, getThrottleDuration(
- TelephonyManager.PURCHASE_PREMIUM_CAPABILITY_RESULT_NETWORK_CONGESTED));
- sendPurchaseResult(capability,
- TelephonyManager.PURCHASE_PREMIUM_CAPABILITY_RESULT_NETWORK_CONGESTED,
- onComplete);
- return;
- }
+
if (mPendingPurchaseCapabilities.containsKey(capability)) {
sendPurchaseResult(capability,
- TelephonyManager.PURCHASE_PREMIUM_CAPABILITY_RESULT_ALREADY_IN_PROGRESS,
+ PURCHASE_PREMIUM_CAPABILITY_RESULT_ALREADY_IN_PROGRESS,
onComplete);
return;
}
@@ -507,10 +531,11 @@
onComplete.sendToTarget();
}
- private void sendPurchaseResultFromSliceStore(
+ private void handlePurchaseResult(
@TelephonyManager.PremiumCapability int capability,
@TelephonyManager.PurchasePremiumCapabilityResult int result, boolean throttle) {
- mPhone.getContext().unregisterReceiver(mSliceStoreBroadcastReceivers.remove(capability));
+ mPhone.getContext().unregisterReceiver(
+ mSlicePurchaseControllerBroadcastReceivers.remove(capability));
removeMessages(EVENT_PURCHASE_TIMEOUT, capability);
if (throttle) {
throttleCapability(capability, getThrottleDuration(result));
@@ -550,6 +575,37 @@
private void onDisplayBoosterNotification(@TelephonyManager.PremiumCapability int capability,
@NonNull String appName) {
+ PremiumNetworkEntitlementResponse premiumNetworkEntitlementResponse =
+ mPremiumNetworkEntitlementApi.checkEntitlementStatus(capability);
+
+ /* invalid response for entitlement check */
+ if (premiumNetworkEntitlementResponse == null) {
+ logd("Invalid response for entitlement check.");
+ handlePurchaseResult(capability,
+ PURCHASE_PREMIUM_CAPABILITY_RESULT_ENTITLEMENT_CHECK_FAILED, true);
+ return;
+ }
+
+ if (premiumNetworkEntitlementResponse.isProvisioned()) {
+ logd("Entitlement Check: Already provisioned.");
+ handlePurchaseResult(capability,
+ PURCHASE_PREMIUM_CAPABILITY_RESULT_ALREADY_PURCHASED, true);
+ return;
+ }
+
+ if (premiumNetworkEntitlementResponse.isProvisioningInProgress()) {
+ logd("Entitlement Check: In Progress");
+ handlePurchaseResult(capability,
+ PURCHASE_PREMIUM_CAPABILITY_RESULT_ALREADY_IN_PROGRESS, true);
+ return;
+ }
+
+ if (!premiumNetworkEntitlementResponse.isPremiumNetworkCapabilityAllowed()) {
+ handlePurchaseResult(capability,
+ PURCHASE_PREMIUM_CAPABILITY_RESULT_ENTITLEMENT_CHECK_FAILED, true);
+ return;
+ }
+
// Start timeout for purchase completion.
long timeout = getCarrierConfigs().getLong(CarrierConfigManager
.KEY_PREMIUM_CAPABILITY_NOTIFICATION_DISPLAY_TIMEOUT_MILLIS_LONG);
@@ -558,40 +614,41 @@
+ TimeUnit.MILLISECONDS.toMinutes(timeout) + " minutes.");
sendMessageDelayed(obtainMessage(EVENT_PURCHASE_TIMEOUT, capability), timeout);
- // Broadcast start intent to start the SliceStore application
- Intent intent = new Intent(ACTION_START_SLICE_STORE);
- intent.setComponent(SLICE_STORE_COMPONENT_NAME);
+ // Broadcast start intent to start the slice purchase application
+ Intent intent = new Intent(ACTION_START_SLICE_PURCHASE_APP);
+ intent.setComponent(SLICE_PURCHASE_APP_COMPONENT_NAME);
intent.putExtra(EXTRA_PHONE_ID, mPhone.getPhoneId());
intent.putExtra(EXTRA_SUB_ID, mPhone.getSubId());
intent.putExtra(EXTRA_PREMIUM_CAPABILITY, capability);
intent.putExtra(EXTRA_REQUESTING_APP_NAME, appName);
- intent.putExtra(EXTRA_INTENT_CANCELED,
- createPendingIntent(ACTION_SLICE_STORE_RESPONSE_CANCELED, capability, false));
- intent.putExtra(EXTRA_INTENT_CARRIER_ERROR,
- createPendingIntent(ACTION_SLICE_STORE_RESPONSE_CARRIER_ERROR, capability, true));
- intent.putExtra(EXTRA_INTENT_REQUEST_FAILED,
- createPendingIntent(ACTION_SLICE_STORE_RESPONSE_REQUEST_FAILED, capability, false));
- intent.putExtra(EXTRA_INTENT_NOT_DEFAULT_DATA,
- createPendingIntent(ACTION_SLICE_STORE_RESPONSE_NOT_DEFAULT_DATA, capability,
- false));
- intent.putExtra(EXTRA_INTENT_SUCCESS,
- createPendingIntent(ACTION_SLICE_STORE_RESPONSE_SUCCESS, capability, true));
- logd("Broadcasting start intent to SliceStoreBroadcastReceiver.");
+ intent.putExtra(EXTRA_INTENT_CANCELED, createPendingIntent(
+ ACTION_SLICE_PURCHASE_APP_RESPONSE_CANCELED, capability, false));
+ intent.putExtra(EXTRA_INTENT_CARRIER_ERROR, createPendingIntent(
+ ACTION_SLICE_PURCHASE_APP_RESPONSE_CARRIER_ERROR, capability, true));
+ intent.putExtra(EXTRA_INTENT_REQUEST_FAILED, createPendingIntent(
+ ACTION_SLICE_PURCHASE_APP_RESPONSE_REQUEST_FAILED, capability, false));
+ intent.putExtra(EXTRA_INTENT_NOT_DEFAULT_DATA_SUB, createPendingIntent(
+ ACTION_SLICE_PURCHASE_APP_RESPONSE_NOT_DEFAULT_DATA_SUB, capability, false));
+ intent.putExtra(EXTRA_INTENT_SUCCESS, createPendingIntent(
+ ACTION_SLICE_PURCHASE_APP_RESPONSE_SUCCESS, capability, true));
+ logd("Broadcasting start intent to SlicePurchaseBroadcastReceiver.");
mPhone.getContext().sendBroadcast(intent);
- // Listen for responses from the SliceStore application
- mSliceStoreBroadcastReceivers.put(capability, new SliceStoreBroadcastReceiver(capability));
+ // Listen for responses from the slice purchase application
+ mSlicePurchaseControllerBroadcastReceivers.put(capability,
+ new SlicePurchaseControllerBroadcastReceiver(capability));
IntentFilter filter = new IntentFilter();
- filter.addAction(ACTION_SLICE_STORE_RESPONSE_CANCELED);
- filter.addAction(ACTION_SLICE_STORE_RESPONSE_CARRIER_ERROR);
- filter.addAction(ACTION_SLICE_STORE_RESPONSE_REQUEST_FAILED);
- filter.addAction(ACTION_SLICE_STORE_RESPONSE_NOT_DEFAULT_DATA);
- filter.addAction(ACTION_SLICE_STORE_RESPONSE_SUCCESS);
- mPhone.getContext().registerReceiver(mSliceStoreBroadcastReceivers.get(capability), filter);
+ filter.addAction(ACTION_SLICE_PURCHASE_APP_RESPONSE_CANCELED);
+ filter.addAction(ACTION_SLICE_PURCHASE_APP_RESPONSE_CARRIER_ERROR);
+ filter.addAction(ACTION_SLICE_PURCHASE_APP_RESPONSE_REQUEST_FAILED);
+ filter.addAction(ACTION_SLICE_PURCHASE_APP_RESPONSE_NOT_DEFAULT_DATA_SUB);
+ filter.addAction(ACTION_SLICE_PURCHASE_APP_RESPONSE_SUCCESS);
+ mPhone.getContext().registerReceiver(
+ mSlicePurchaseControllerBroadcastReceivers.get(capability), filter);
}
/**
- * Create the PendingIntent to allow SliceStore to send back responses.
+ * Create the PendingIntent to allow the slice purchase application to send back responses.
*
* @param action The action that will be sent for this PendingIntent
* @param capability The premium capability that was requested.
@@ -611,15 +668,15 @@
private void onTimeout(@TelephonyManager.PremiumCapability int capability) {
logd("onTimeout: " + TelephonyManager.convertPremiumCapabilityToString(capability));
- // Broadcast timeout intent to clean up the SliceStore notification and activity
- Intent intent = new Intent(ACTION_SLICE_STORE_RESPONSE_TIMEOUT);
- intent.setComponent(SLICE_STORE_COMPONENT_NAME);
+ // Broadcast timeout intent to clean up the slice purchase notification and activity
+ Intent intent = new Intent(ACTION_SLICE_PURCHASE_APP_RESPONSE_TIMEOUT);
+ intent.setComponent(SLICE_PURCHASE_APP_COMPONENT_NAME);
intent.putExtra(EXTRA_PHONE_ID, mPhone.getPhoneId());
intent.putExtra(EXTRA_PREMIUM_CAPABILITY, capability);
- logd("Broadcasting timeout intent to SliceStoreBroadcastReceiver.");
+ logd("Broadcasting timeout intent to SlicePurchaseBroadcastReceiver.");
mPhone.getContext().sendBroadcast(intent);
- sendPurchaseResultFromSliceStore(
+ handlePurchaseResult(
capability, TelephonyManager.PURCHASE_PREMIUM_CAPABILITY_RESULT_TIMEOUT, true);
}
@@ -632,22 +689,22 @@
reportAnomaly(UUID_UNKNOWN_FAILURE_CODE,
"Failure code needs to be added for: " + failureReason);
}
- sendPurchaseResultFromSliceStore(capability,
+ handlePurchaseResult(capability,
TelephonyManager.PURCHASE_PREMIUM_CAPABILITY_RESULT_CARRIER_ERROR, true);
}
private void onCarrierSuccess(@TelephonyManager.PremiumCapability int capability,
long duration) {
logd("Successfully purchased premium capability "
- + TelephonyManager.convertPremiumCapabilityToString(capability)
- + " for " + TimeUnit.MILLISECONDS.toMinutes(duration) + " minutes.");
+ + TelephonyManager.convertPremiumCapabilityToString(capability) + (duration > 0
+ ? " for " + TimeUnit.MILLISECONDS.toMinutes(duration) + " minutes." : "."));
mPendingSetupCapabilities.add(capability);
long setupDuration = getCarrierConfigs().getLong(
CarrierConfigManager.KEY_PREMIUM_CAPABILITY_NETWORK_SETUP_TIME_MILLIS_LONG);
logd("Waiting " + TimeUnit.MILLISECONDS.toMinutes(setupDuration) + " minutes for the "
+ "network to set up the slicing configuration.");
sendMessageDelayed(obtainMessage(EVENT_SETUP_TIMEOUT, capability), setupDuration);
- sendPurchaseResultFromSliceStore(
+ handlePurchaseResult(
capability, TelephonyManager.PURCHASE_PREMIUM_CAPABILITY_RESULT_SUCCESS, false);
}
@@ -673,7 +730,7 @@
return getCarrierConfigs().getLong(CarrierConfigManager
.KEY_PREMIUM_CAPABILITY_NOTIFICATION_BACKOFF_HYSTERESIS_TIME_MILLIS_LONG);
}
- if (result == TelephonyManager.PURCHASE_PREMIUM_CAPABILITY_RESULT_NETWORK_CONGESTED
+ if (result == TelephonyManager.PURCHASE_PREMIUM_CAPABILITY_RESULT_ENTITLEMENT_CHECK_FAILED
|| result == TelephonyManager.PURCHASE_PREMIUM_CAPABILITY_RESULT_CARRIER_ERROR) {
return getCarrierConfigs().getLong(CarrierConfigManager
.KEY_PREMIUM_CAPABILITY_PURCHASE_CONDITION_BACKOFF_HYSTERESIS_TIME_MILLIS_LONG);
@@ -710,7 +767,7 @@
& TelephonyManager.NETWORK_TYPE_BITMASK_NR) != 0;
}
- private boolean isDefaultData() {
+ private boolean isDefaultDataSub() {
return mPhone.getSubId() == SubscriptionManager.getDefaultDataSubscriptionId();
}
@@ -749,18 +806,13 @@
return false;
}
- private boolean isNetworkCongested(@TelephonyManager.PremiumCapability int capability) {
- // TODO: Implement TS43
- return true;
- }
-
/**
* Returns the failure code {@link FailureCode} as a String.
*
* @param failureCode The failure code.
* @return The failure code as a String.
*/
- @NonNull public static String convertFailureCodeToString(@FailureCode int failureCode) {
+ @NonNull private static String convertFailureCodeToString(@FailureCode int failureCode) {
switch (failureCode) {
case FAILURE_CODE_UNKNOWN: return "UNKNOWN";
case FAILURE_CODE_CARRIER_URL_UNAVAILABLE: return "CARRIER_URL_UNAVAILABLE";
diff --git a/src/com/android/services/telephony/TelephonyConferenceController.java b/src/com/android/services/telephony/TelephonyConferenceController.java
index 9aa3dbe..f0aa641 100644
--- a/src/com/android/services/telephony/TelephonyConferenceController.java
+++ b/src/com/android/services/telephony/TelephonyConferenceController.java
@@ -20,6 +20,8 @@
import android.telecom.Connection;
import android.telecom.DisconnectCause;
import android.telecom.PhoneAccountHandle;
+import android.text.TextUtils;
+import android.util.Patterns;
import com.android.internal.telephony.Call;
import com.android.phone.PhoneUtils;
@@ -40,7 +42,6 @@
*/
final class TelephonyConferenceController {
private static final int TELEPHONY_CONFERENCE_MAX_SIZE = 5;
- private static final String RIL_REPORTED_CONFERENCE_CALL_STRING = "Conference Call";
private final TelephonyConnection.TelephonyConnectionListener mTelephonyConnectionListener =
new TelephonyConnection.TelephonyConnectionListener() {
@@ -271,13 +272,13 @@
// Remove all instances of PROPERTY_IS_DOWNGRADED_CONFERENCE. This
// property should only be set on the parent call (i.e. the newly
// created TelephonyConference.
- // This doesn't apply to a connection whose address is "Conference
- // Call", which may be updated by some modem to create a connection
- // to represent a merged conference connection in SRVCC.
+ // This doesn't apply to a connection whose address is not an
+ // identifiable phone number, which may be updated by some modem
+ // to create a connection to represent a merged conference connection
+ // in SRVCC.
if (connection.getAddress() == null
- || !connection.getAddress().getSchemeSpecificPart()
- .equalsIgnoreCase(
- RIL_REPORTED_CONFERENCE_CALL_STRING)) {
+ || isPhoneNumber(
+ connection.getAddress().getSchemeSpecificPart())) {
Log.d(this, "Removing PROPERTY_IS_DOWNGRADED_CONFERENCE"
+ " from connection %s", connection);
int newProperties = connection.getConnectionProperties()
@@ -320,4 +321,11 @@
}
}
}
+
+ private boolean isPhoneNumber(String number) {
+ if (TextUtils.isEmpty(number)) {
+ return false;
+ }
+ return Patterns.PHONE.matcher(number).matches();
+ }
}
diff --git a/testapps/TestServerApp/.gitignore b/testapps/TestServerApp/.gitignore
new file mode 100644
index 0000000..aa724b7
--- /dev/null
+++ b/testapps/TestServerApp/.gitignore
@@ -0,0 +1,15 @@
+*.iml
+.gradle
+/local.properties
+/.idea/caches
+/.idea/libraries
+/.idea/modules.xml
+/.idea/workspace.xml
+/.idea/navEditor.xml
+/.idea/assetWizardSettings.xml
+.DS_Store
+/build
+/captures
+.externalNativeBuild
+.cxx
+local.properties
diff --git a/testapps/TestServerApp/.idea/.gitignore b/testapps/TestServerApp/.idea/.gitignore
new file mode 100644
index 0000000..26d3352
--- /dev/null
+++ b/testapps/TestServerApp/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/testapps/TestServerApp/.idea/compiler.xml b/testapps/TestServerApp/.idea/compiler.xml
new file mode 100644
index 0000000..fb7f4a8
--- /dev/null
+++ b/testapps/TestServerApp/.idea/compiler.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="CompilerConfiguration">
+ <bytecodeTargetLevel target="11" />
+ </component>
+</project>
\ No newline at end of file
diff --git a/testapps/TestServerApp/.idea/gradle.xml b/testapps/TestServerApp/.idea/gradle.xml
new file mode 100644
index 0000000..a2d7c21
--- /dev/null
+++ b/testapps/TestServerApp/.idea/gradle.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="GradleMigrationSettings" migrationVersion="1" />
+ <component name="GradleSettings">
+ <option name="linkedExternalProjectsSettings">
+ <GradleProjectSettings>
+ <option name="testRunner" value="GRADLE" />
+ <option name="distributionType" value="DEFAULT_WRAPPED" />
+ <option name="externalProjectPath" value="$PROJECT_DIR$" />
+ <option name="modules">
+ <set>
+ <option value="$PROJECT_DIR$" />
+ <option value="$PROJECT_DIR$/app" />
+ </set>
+ </option>
+ </GradleProjectSettings>
+ </option>
+ </component>
+</project>
\ No newline at end of file
diff --git a/testapps/TestServerApp/.idea/misc.xml b/testapps/TestServerApp/.idea/misc.xml
new file mode 100644
index 0000000..7c85865
--- /dev/null
+++ b/testapps/TestServerApp/.idea/misc.xml
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="ExternalStorageConfigurationManager" enabled="true" />
+ <component name="NullableNotNullManager">
+ <option name="myDefaultNullable" value="androidx.annotation.Nullable" />
+ <option name="myDefaultNotNull" value="androidx.annotation.NonNull" />
+ <option name="myNullables">
+ <value>
+ <list size="15">
+ <item index="0" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.compatqual.NullableDecl" />
+ <item index="1" class="java.lang.String" itemvalue="org.jetbrains.annotations.Nullable" />
+ <item index="2" class="java.lang.String" itemvalue="androidx.annotation.Nullable" />
+ <item index="3" class="java.lang.String" itemvalue="org.eclipse.jdt.annotation.Nullable" />
+ <item index="4" class="java.lang.String" itemvalue="com.android.annotations.Nullable" />
+ <item index="5" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.Nullable" />
+ <item index="6" class="java.lang.String" itemvalue="androidx.annotation.RecentlyNullable" />
+ <item index="7" class="java.lang.String" itemvalue="android.support.annotation.Nullable" />
+ <item index="8" class="java.lang.String" itemvalue="javax.annotation.CheckForNull" />
+ <item index="9" class="java.lang.String" itemvalue="javax.annotation.Nullable" />
+ <item index="10" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.qual.Nullable" />
+ <item index="11" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.compatqual.NullableType" />
+ <item index="12" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.compatqual.NullableDecl" />
+ <item index="13" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.compatqual.NullableType" />
+ <item index="14" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.qual.Nullable" />
+ </list>
+ </value>
+ </option>
+ <option name="myNotNulls">
+ <value>
+ <list size="14">
+ <item index="0" class="java.lang.String" itemvalue="androidx.annotation.RecentlyNonNull" />
+ <item index="1" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.qual.NonNull" />
+ <item index="2" class="java.lang.String" itemvalue="com.android.annotations.NonNull" />
+ <item index="3" class="java.lang.String" itemvalue="androidx.annotation.NonNull" />
+ <item index="4" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.compatqual.NonNullType" />
+ <item index="5" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.NonNull" />
+ <item index="6" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.compatqual.NonNullDecl" />
+ <item index="7" class="java.lang.String" itemvalue="android.support.annotation.NonNull" />
+ <item index="8" class="java.lang.String" itemvalue="org.jetbrains.annotations.NotNull" />
+ <item index="9" class="java.lang.String" itemvalue="javax.annotation.Nonnull" />
+ <item index="10" class="java.lang.String" itemvalue="org.eclipse.jdt.annotation.NonNull" />
+ <item index="11" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.compatqual.NonNullDecl" />
+ <item index="12" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.compatqual.NonNullType" />
+ <item index="13" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.qual.NonNull" />
+ </list>
+ </value>
+ </option>
+ </component>
+ <component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="true" project-jdk-name="JDK" project-jdk-type="JavaSDK">
+ <output url="file://$PROJECT_DIR$/build/classes" />
+ </component>
+ <component name="ProjectType">
+ <option name="id" value="Android" />
+ </component>
+</project>
\ No newline at end of file
diff --git a/testapps/TestServerApp/.idea/vcs.xml b/testapps/TestServerApp/.idea/vcs.xml
new file mode 100644
index 0000000..47fe944
--- /dev/null
+++ b/testapps/TestServerApp/.idea/vcs.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="IssueNavigationConfiguration">
+ <option name="links">
+ <list>
+ <IssueNavigationLink>
+ <option name="issueRegexp" value="\bb/(\d+)(#\w+)?\b" />
+ <option name="linkRegexp" value="https://buganizer.corp.google.com/issues/$1$2" />
+ </IssueNavigationLink>
+ <IssueNavigationLink>
+ <option name="issueRegexp" value="\b(?:BUG=|FIXED=)(\d+)\b" />
+ <option name="linkRegexp" value="https://buganizer.corp.google.com/issues/$1" />
+ </IssueNavigationLink>
+ <IssueNavigationLink>
+ <option name="issueRegexp" value="\b(?:cl/|cr/|OCL=|DIFFBASE=|ROLLBACK_OF=)(\d+)\b" />
+ <option name="linkRegexp" value="https://critique.corp.google.com/$1" />
+ </IssueNavigationLink>
+ <IssueNavigationLink>
+ <option name="issueRegexp" value="\bomg/(\d+)\b" />
+ <option name="linkRegexp" value="https://omg.corp.google.com/$1" />
+ </IssueNavigationLink>
+ <IssueNavigationLink>
+ <option name="issueRegexp" value="\b(?:go/|goto/)([^,.<>()"\s]+(?:[.,][^,.<>()"\s]+)*)" />
+ <option name="linkRegexp" value="https://goto.google.com/$1" />
+ </IssueNavigationLink>
+ <IssueNavigationLink>
+ <option name="issueRegexp" value="\bcs/([^\s]+[\w$])" />
+ <option name="linkRegexp" value="https://cs.corp.google.com/search/?q=$1" />
+ </IssueNavigationLink>
+ <IssueNavigationLink>
+ <option name="issueRegexp" value="(LINT\.IfChange)|(LINT\.ThenChange)" />
+ <option name="linkRegexp" value="https://goto.google.com/ifthisthenthatlint" />
+ </IssueNavigationLink>
+ </list>
+ </option>
+ </component>
+</project>
\ No newline at end of file
diff --git a/testapps/TestServerApp/app/.gitignore b/testapps/TestServerApp/app/.gitignore
new file mode 100644
index 0000000..42afabf
--- /dev/null
+++ b/testapps/TestServerApp/app/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/testapps/TestServerApp/app/build.gradle b/testapps/TestServerApp/app/build.gradle
new file mode 100644
index 0000000..64a8ed9
--- /dev/null
+++ b/testapps/TestServerApp/app/build.gradle
@@ -0,0 +1,40 @@
+plugins {
+ id 'com.android.application'
+}
+
+android {
+ compileSdkPreview "android-Tiramisu"
+
+ defaultConfig {
+ applicationId "com.google.android.testserverapp"
+ minSdkPreview "Tiramisu"
+ targetSdkPreview "Tiramisu"
+ versionCode 1
+ versionName "1.0"
+
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ }
+
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+}
+
+dependencies {
+
+ implementation 'androidx.appcompat:appcompat:1.4.1'
+ implementation 'com.google.android.material:material:1.5.0'
+ implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
+ implementation 'androidx.legacy:legacy-support-v4:1.0.0'
+ testImplementation 'junit:junit:4.+'
+ androidTestImplementation 'androidx.test.ext:junit:1.1.3'
+ androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
+ implementation 'com.squareup.okhttp3:okhttp:3.10.0'
+}
\ No newline at end of file
diff --git a/testapps/TestServerApp/app/proguard-rules.pro b/testapps/TestServerApp/app/proguard-rules.pro
new file mode 100644
index 0000000..481bb43
--- /dev/null
+++ b/testapps/TestServerApp/app/proguard-rules.pro
@@ -0,0 +1,21 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
\ No newline at end of file
diff --git a/testapps/TestServerApp/app/src/androidTest/java/com/google/android/testserverapp/ExampleInstrumentedTest.java b/testapps/TestServerApp/app/src/androidTest/java/com/google/android/testserverapp/ExampleInstrumentedTest.java
new file mode 100644
index 0000000..555bec9
--- /dev/null
+++ b/testapps/TestServerApp/app/src/androidTest/java/com/google/android/testserverapp/ExampleInstrumentedTest.java
@@ -0,0 +1,26 @@
+package com.google.android.testserverapp;
+
+import android.content.Context;
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+
+ @Test
+ public void useAppContext() {
+ // Context of the app under test.
+ Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
+ assertEquals("com.google.android.testserverapp", appContext.getPackageName());
+ }
+}
\ No newline at end of file
diff --git a/testapps/TestServerApp/app/src/main/Android.bp b/testapps/TestServerApp/app/src/main/Android.bp
new file mode 100644
index 0000000..1605962
--- /dev/null
+++ b/testapps/TestServerApp/app/src/main/Android.bp
@@ -0,0 +1,30 @@
+package {
+ // See: http://go/android-license-faq
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+java_import {
+ name: "sun-http-server",
+ jars: ["libs/http-2.2.1.jar", "libs/sun-common-server.jar"],
+}
+
+android_app {
+ name: "TestServerApp",
+ srcs: [
+ "java/com/google/android/testserverapp/*.java",
+ ],
+ static_libs: [
+ "androidx-constraintlayout_constraintlayout",
+ "androidx.appcompat_appcompat",
+ "sun-http-server",
+ ],
+ libs: ["org.apache.http.legacy"],
+ certificate: "platform",
+ privileged: true,
+ product_specific: true,
+ sdk_version: "system_current",
+ min_sdk_version: "30",
+ optimize: {
+ proguard_flags_files: ["proguard.flags"],
+ },
+}
diff --git a/testapps/TestServerApp/app/src/main/AndroidManifest.xml b/testapps/TestServerApp/app/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..3c91a82
--- /dev/null
+++ b/testapps/TestServerApp/app/src/main/AndroidManifest.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.google.android.testserverapp">
+
+ <uses-permission android:name="android.permission.INTERNET"/>
+
+ <application
+ android:allowBackup="true"
+ android:dataExtractionRules="@xml/data_extraction_rules"
+ android:fullBackupContent="@xml/backup_rules"
+ android:icon="@mipmap/ic_launcher"
+ android:label="@string/app_name"
+ android:roundIcon="@mipmap/ic_launcher_round"
+ android:supportsRtl="true"
+ android:theme="@style/Theme.AppCompat"
+ android:versionCode="34">
+ <activity
+ android:name=".MainActivity"
+ android:exported="true">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+
+ <meta-data
+ android:name="android.app.lib_name"
+ android:value="" />
+ </activity>
+ </application>
+
+</manifest>
\ No newline at end of file
diff --git a/testapps/TestServerApp/app/src/main/java/com/google/android/testserverapp/MainActivity.java b/testapps/TestServerApp/app/src/main/java/com/google/android/testserverapp/MainActivity.java
new file mode 100644
index 0000000..b0d49ef
--- /dev/null
+++ b/testapps/TestServerApp/app/src/main/java/com/google/android/testserverapp/MainActivity.java
@@ -0,0 +1,245 @@
+/*
+ * Copyright (C) 2022 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.google.android.testserverapp;
+
+import android.os.Bundle;
+import android.util.Log;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.AdapterView;
+import android.widget.AdapterView.OnItemSelectedListener;
+import android.widget.ArrayAdapter;
+import android.widget.Button;
+import android.widget.TextView;
+import androidx.appcompat.app.AppCompatActivity;
+import com.sun.net.httpserver.Headers;
+import com.sun.net.httpserver.HttpExchange;
+import com.sun.net.httpserver.HttpHandler;
+import com.sun.net.httpserver.HttpServer;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.net.InetSocketAddress;
+import java.util.List;
+import java.util.Map.Entry;
+import java.util.concurrent.Executors;
+
+public class MainActivity extends AppCompatActivity {
+ private static final String TAG = "TestServerApp";
+ private static final int SERVER_PORT = 5555;
+
+ private HttpServer mHttpServer = null;
+ private boolean mIsServerUp = false;
+ private int mEntitlementStatus = 1;
+ private int mProvisionStatus = 1;
+ private int mResponseCount = 0;
+
+ private Button mServerButton;
+ private TextView mServerStatusTextView, mClientRequestTextView;
+ private AdapterView mEntitlementStatusSpinner, mProvisionStatusSpinner;
+
+ private HttpHandler mHttpHandler = new HttpHandler() {
+ @Override
+ public void handle(HttpExchange httpExchange) throws IOException {
+ String method = httpExchange.getRequestMethod();
+ switch (method) {
+ case "GET":
+ case "POST":
+ updateClientRequestTextView("Client Request: received a request from client");
+ Log.d(TAG, "Client Request: received a request from client, requestHeaders = "
+ + httpHeadersToString(httpExchange.getRequestHeaders()));
+
+ sendResponseToClient(httpExchange, getTS43Response(), 200);
+ break;
+ default:
+ Log.d(TAG, "Request method = " + method);
+ }
+ }
+ };
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
+
+ mServerStatusTextView = findViewById(R.id.serverStatusTextView);
+ mClientRequestTextView = findViewById(R.id.clientRequestTextView);
+ mServerButton = findViewById(R.id.serverButton);
+ mServerButton.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ if (mIsServerUp) {
+ stopServer();
+ mIsServerUp = false;
+ } else {
+ startServer(SERVER_PORT);
+ mIsServerUp = true;
+ }
+ }
+ });
+
+ mEntitlementStatusSpinner = findViewById(R.id.entitlementStatusSpinner);
+ ArrayAdapter<CharSequence> entitlementArrayAdapter = ArrayAdapter.createFromResource(this,
+ R.array.entitlement_status, android.R.layout.simple_spinner_item);
+ entitlementArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_item);
+ mEntitlementStatusSpinner.setAdapter(entitlementArrayAdapter);
+ mEntitlementStatusSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
+ @Override
+ public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
+ updateEntitlementStatus(parent.getItemAtPosition(position).toString());
+ }
+
+ @Override
+ public void onNothingSelected(AdapterView<?> parent) {}
+ });
+
+ mProvisionStatusSpinner = findViewById(R.id.provisionStatusSpinner);
+ ArrayAdapter<CharSequence> provisionArrayAdapter = ArrayAdapter.createFromResource(this,
+ R.array.provision_status, android.R.layout.simple_spinner_item);
+ entitlementArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_item);
+ mProvisionStatusSpinner.setAdapter(provisionArrayAdapter);
+ mProvisionStatusSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
+ @Override
+ public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
+ updateProvisionStatus(parent.getItemAtPosition(position).toString());
+ }
+
+ @Override
+ public void onNothingSelected(AdapterView<?> parent) {}
+ });
+ }
+
+ private void startServer(int port) {
+ try {
+ mHttpServer = HttpServer.create(new InetSocketAddress(port), 0);
+ mHttpServer.setExecutor(Executors.newCachedThreadPool());
+
+ mHttpServer.createContext("/", mHttpHandler);
+ mHttpServer.createContext("/index", mHttpHandler);
+
+ mHttpServer.start();
+
+ mServerStatusTextView.setText(R.string.server_running);
+ mServerButton.setText(R.string.stop_server);
+ } catch (IOException e) {
+ Log.d(TAG, "Exception in startServer, e = " + e);
+ }
+ }
+
+ private void stopServer() {
+ if (mHttpServer != null) {
+ mHttpServer.stop(0);
+
+ mServerStatusTextView.setText(R.string.server_down);
+ mServerButton.setText(R.string.start_server);
+ }
+ }
+
+ private void sendResponseToClient(HttpExchange httpExchange, String message, int responseCode) {
+ try {
+ httpExchange.sendResponseHeaders(responseCode, message.length());
+ OutputStream os = httpExchange.getResponseBody();
+ os.write(message.getBytes());
+ os.close();
+
+ Log.d(TAG, "Sent a response to client, message = " + message);
+ updateClientRequestTextView("Client Request: Sent " + ++mResponseCount
+ + " responses to the clients");
+ } catch (IOException e) {
+ Log.d(TAG, "Exception in sendResponseToClient, e = " + e);
+ updateClientRequestTextView("Client Request: Exception in sendResponseToClient!!!");
+ }
+ }
+
+ private String httpHeadersToString(Headers headers) {
+ StringBuilder sb = new StringBuilder();
+ for (Entry<String, List<String>> entry : headers.entrySet()) {
+ sb.append("{" + entry.getKey() + ":");
+ for (String str : entry.getValue()) {
+ sb.append(str + ",");
+ }
+ sb.append("}");
+ }
+ return sb.toString();
+ }
+
+ private String getTS43Response() {
+ return "{"
+ + " \"Vers\":{"
+ + " \"version\": \"1\","
+ + " \"validity\": \"1728000\""
+ + " },"
+ + " \"Token\":{"
+ + " \"token\": \"kZYfCEpSsMr88KZVmab5UsZVzl+nWSsX\""
+ + " },"
+ + " \"ap2012\":{"
+ + " \"EntitlementStatus\": " + mEntitlementStatus + ","
+ + " \"ServiceFlow_URL\": \"file:///android_asset/slice_purchase_test.html\","
+ + " \"ServiceFlow_UserData\": \"PostData=U6%2FbQ%2BEP&amp;l=en_US\","
+ + " \"ProvStatus\": "+ mProvisionStatus + ","
+ + " \"ProvTimeLeft\": 0"
+ + " },"
+ + " \"eap-relay-packet\":\"EapAkaChallengeRequest\""
+ + "}";
+ }
+
+ private void updateClientRequestTextView(String status) {
+ runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ mClientRequestTextView.setText(status);
+ }
+ });
+ }
+
+ private void updateEntitlementStatus(String status) {
+ switch (status) {
+ case "Disabled":
+ mEntitlementStatus = 0;
+ break;
+ case "Enabled":
+ mEntitlementStatus = 1;
+ break;
+ case "Incompatible":
+ mEntitlementStatus = 2;
+ break;
+ case "Provisioning":
+ mEntitlementStatus = 3;
+ break;
+ case "Included":
+ mEntitlementStatus = 4;
+ break;
+ }
+ mClientRequestTextView.setText("Entitlement Status is set to \"" + status + "\"");
+ }
+
+ private void updateProvisionStatus(String status) {
+ switch (status) {
+ case "Not Provisioned":
+ mProvisionStatus = 0;
+ break;
+ case "Provisioned":
+ mProvisionStatus = 1;
+ break;
+ case "Not Required":
+ mProvisionStatus = 2;
+ break;
+ case "In Progress":
+ mProvisionStatus = 3;
+ break;
+ }
+ mClientRequestTextView.setText("Provision Status is set to \"" + status + "\"");
+ }
+}
diff --git a/testapps/TestServerApp/app/src/main/libs/LICENSE b/testapps/TestServerApp/app/src/main/libs/LICENSE
new file mode 100644
index 0000000..3d33284
--- /dev/null
+++ b/testapps/TestServerApp/app/src/main/libs/LICENSE
@@ -0,0 +1,201 @@
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ 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.
\ No newline at end of file
diff --git a/testapps/TestServerApp/app/src/main/libs/http-2.2.1.jar b/testapps/TestServerApp/app/src/main/libs/http-2.2.1.jar
new file mode 100644
index 0000000..6e2b44e
--- /dev/null
+++ b/testapps/TestServerApp/app/src/main/libs/http-2.2.1.jar
Binary files differ
diff --git a/testapps/TestServerApp/app/src/main/libs/sun-common-server.jar b/testapps/TestServerApp/app/src/main/libs/sun-common-server.jar
new file mode 100644
index 0000000..ca7127f
--- /dev/null
+++ b/testapps/TestServerApp/app/src/main/libs/sun-common-server.jar
Binary files differ
diff --git a/testapps/TestServerApp/app/src/main/proguard.flags b/testapps/TestServerApp/app/src/main/proguard.flags
new file mode 100644
index 0000000..4eefde6
--- /dev/null
+++ b/testapps/TestServerApp/app/src/main/proguard.flags
@@ -0,0 +1,4 @@
+-dontobfuscate
+-dontoptimize
+
+-keep class com.google.android.testserverapp.*
diff --git a/testapps/TestServerApp/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/testapps/TestServerApp/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
new file mode 100644
index 0000000..966abaf
--- /dev/null
+++ b/testapps/TestServerApp/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
@@ -0,0 +1,30 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:aapt="http://schemas.android.com/aapt"
+ android:width="108dp"
+ android:height="108dp"
+ android:viewportHeight="108"
+ android:viewportWidth="108">
+ <path android:pathData="M31,63.928c0,0 6.4,-11 12.1,-13.1c7.2,-2.6 26,-1.4 26,-1.4l38.1,38.1L107,108.928l-32,-1L31,63.928z">
+ <aapt:attr name="android:fillColor">
+ <gradient
+ android:endX="85.84757"
+ android:endY="92.4963"
+ android:startX="42.9492"
+ android:startY="49.59793"
+ android:type="linear">
+ <item
+ android:color="#44000000"
+ android:offset="0.0" />
+ <item
+ android:color="#00000000"
+ android:offset="1.0" />
+ </gradient>
+ </aapt:attr>
+ </path>
+ <path
+ android:fillColor="#FFFFFF"
+ android:fillType="nonZero"
+ android:pathData="M65.3,45.828l3.8,-6.6c0.2,-0.4 0.1,-0.9 -0.3,-1.1c-0.4,-0.2 -0.9,-0.1 -1.1,0.3l-3.9,6.7c-6.3,-2.8 -13.4,-2.8 -19.7,0l-3.9,-6.7c-0.2,-0.4 -0.7,-0.5 -1.1,-0.3C38.8,38.328 38.7,38.828 38.9,39.228l3.8,6.6C36.2,49.428 31.7,56.028 31,63.928h46C76.3,56.028 71.8,49.428 65.3,45.828zM43.4,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2c-0.3,-0.7 -0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C45.3,56.528 44.5,57.328 43.4,57.328L43.4,57.328zM64.6,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2s-0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C66.5,56.528 65.6,57.328 64.6,57.328L64.6,57.328z"
+ android:strokeColor="#00000000"
+ android:strokeWidth="1" />
+</vector>
\ No newline at end of file
diff --git a/testapps/TestServerApp/app/src/main/res/drawable/ic_launcher_background.xml b/testapps/TestServerApp/app/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 0000000..61bb79e
--- /dev/null
+++ b/testapps/TestServerApp/app/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,170 @@
+<?xml version="1.0" encoding="utf-8"?>
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="108dp"
+ android:height="108dp"
+ android:viewportHeight="108"
+ android:viewportWidth="108">
+ <path
+ android:fillColor="#3DDC84"
+ android:pathData="M0,0h108v108h-108z" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M9,0L9,108"
+ android:strokeColor="#33FFFFFF"
+ android:strokeWidth="0.8" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M19,0L19,108"
+ android:strokeColor="#33FFFFFF"
+ android:strokeWidth="0.8" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M29,0L29,108"
+ android:strokeColor="#33FFFFFF"
+ android:strokeWidth="0.8" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M39,0L39,108"
+ android:strokeColor="#33FFFFFF"
+ android:strokeWidth="0.8" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M49,0L49,108"
+ android:strokeColor="#33FFFFFF"
+ android:strokeWidth="0.8" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M59,0L59,108"
+ android:strokeColor="#33FFFFFF"
+ android:strokeWidth="0.8" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M69,0L69,108"
+ android:strokeColor="#33FFFFFF"
+ android:strokeWidth="0.8" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M79,0L79,108"
+ android:strokeColor="#33FFFFFF"
+ android:strokeWidth="0.8" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M89,0L89,108"
+ android:strokeColor="#33FFFFFF"
+ android:strokeWidth="0.8" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M99,0L99,108"
+ android:strokeColor="#33FFFFFF"
+ android:strokeWidth="0.8" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M0,9L108,9"
+ android:strokeColor="#33FFFFFF"
+ android:strokeWidth="0.8" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M0,19L108,19"
+ android:strokeColor="#33FFFFFF"
+ android:strokeWidth="0.8" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M0,29L108,29"
+ android:strokeColor="#33FFFFFF"
+ android:strokeWidth="0.8" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M0,39L108,39"
+ android:strokeColor="#33FFFFFF"
+ android:strokeWidth="0.8" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M0,49L108,49"
+ android:strokeColor="#33FFFFFF"
+ android:strokeWidth="0.8" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M0,59L108,59"
+ android:strokeColor="#33FFFFFF"
+ android:strokeWidth="0.8" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M0,69L108,69"
+ android:strokeColor="#33FFFFFF"
+ android:strokeWidth="0.8" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M0,79L108,79"
+ android:strokeColor="#33FFFFFF"
+ android:strokeWidth="0.8" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M0,89L108,89"
+ android:strokeColor="#33FFFFFF"
+ android:strokeWidth="0.8" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M0,99L108,99"
+ android:strokeColor="#33FFFFFF"
+ android:strokeWidth="0.8" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M19,29L89,29"
+ android:strokeColor="#33FFFFFF"
+ android:strokeWidth="0.8" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M19,39L89,39"
+ android:strokeColor="#33FFFFFF"
+ android:strokeWidth="0.8" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M19,49L89,49"
+ android:strokeColor="#33FFFFFF"
+ android:strokeWidth="0.8" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M19,59L89,59"
+ android:strokeColor="#33FFFFFF"
+ android:strokeWidth="0.8" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M19,69L89,69"
+ android:strokeColor="#33FFFFFF"
+ android:strokeWidth="0.8" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M19,79L89,79"
+ android:strokeColor="#33FFFFFF"
+ android:strokeWidth="0.8" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M29,19L29,89"
+ android:strokeColor="#33FFFFFF"
+ android:strokeWidth="0.8" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M39,19L39,89"
+ android:strokeColor="#33FFFFFF"
+ android:strokeWidth="0.8" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M49,19L49,89"
+ android:strokeColor="#33FFFFFF"
+ android:strokeWidth="0.8" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M59,19L59,89"
+ android:strokeColor="#33FFFFFF"
+ android:strokeWidth="0.8" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M69,19L69,89"
+ android:strokeColor="#33FFFFFF"
+ android:strokeWidth="0.8" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M79,19L79,89"
+ android:strokeColor="#33FFFFFF"
+ android:strokeWidth="0.8" />
+</vector>
diff --git a/testapps/TestServerApp/app/src/main/res/layout/activity_main.xml b/testapps/TestServerApp/app/src/main/res/layout/activity_main.xml
new file mode 100644
index 0000000..a4ca45a
--- /dev/null
+++ b/testapps/TestServerApp/app/src/main/res/layout/activity_main.xml
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="match_parent"
+
+ android:layout_height="match_parent"
+ tools:context=".MainActivity">
+
+ <Button
+ android:id="@+id/serverButton"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:gravity="center|center_horizontal"
+ android:text="@string/start_server"
+ tools:layout_editor_absoluteX="124dp"
+ tools:layout_editor_absoluteY="55dp" />
+ <TextView
+ android:id="@+id/serverStatusTextView"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="10dp"
+ android:gravity="center"
+ android:text="@string/server_down"
+ android:textColor="#4CAF50"
+ android:textSize="20sp"
+ app:layout_constraintTop_toBottomOf="@id/serverButton"
+ tools:layout_editor_absoluteX="0dp" />
+ <TextView
+ android:id="@+id/entitlementStatus"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="20dp"
+ android:gravity="left"
+ android:text="Entitlement Status:"
+ android:textColor="#4CAF50"
+ android:textSize="20sp"
+ app:layout_constraintTop_toBottomOf="@id/serverStatusTextView"
+ tools:layout_editor_absoluteX="0dp" />
+ <Spinner
+ android:id="@+id/entitlementStatusSpinner"
+ android:layout_width="232dp"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="15dp"
+ android:gravity="left"
+ android:textColor="#4CAF50"
+ android:textSize="20sp"
+ app:layout_constraintTop_toBottomOf="@id/entitlementStatus"
+ tools:layout_editor_absoluteX="-195dp" />
+ <TextView
+ android:id="@+id/provisionStatus"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="20dp"
+ android:gravity="left"
+ android:text="Provision Status:"
+ android:textColor="#4CAF50"
+ android:textSize="20sp"
+ app:layout_constraintTop_toBottomOf="@id/entitlementStatusSpinner"
+ tools:layout_editor_absoluteX="0dp" />
+ <Spinner
+ android:id="@+id/provisionStatusSpinner"
+ android:layout_width="233dp"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="15dp"
+ android:gravity="center"
+ android:textColor="#4CAF50"
+ android:textSize="20sp"
+ app:layout_constraintTop_toBottomOf="@id/provisionStatus"
+ tools:layout_editor_absoluteX="-195dp" />
+ <TextView
+ android:id="@+id/clientRequestTextView"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="20dp"
+ android:gravity="center"
+ android:text="Client Request:"
+ android:textColor="#4CAF50"
+ android:textSize="20sp"
+ app:layout_constraintTop_toBottomOf="@id/provisionStatusSpinner"
+ tools:layout_editor_absoluteX="0dp" />
+</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/testapps/TestServerApp/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/testapps/TestServerApp/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 0000000..03eed25
--- /dev/null
+++ b/testapps/TestServerApp/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
+ <background android:drawable="@drawable/ic_launcher_background" />
+ <foreground android:drawable="@drawable/ic_launcher_foreground" />
+</adaptive-icon>
\ No newline at end of file
diff --git a/testapps/TestServerApp/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/testapps/TestServerApp/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 0000000..03eed25
--- /dev/null
+++ b/testapps/TestServerApp/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
+ <background android:drawable="@drawable/ic_launcher_background" />
+ <foreground android:drawable="@drawable/ic_launcher_foreground" />
+</adaptive-icon>
\ No newline at end of file
diff --git a/testapps/TestServerApp/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/testapps/TestServerApp/app/src/main/res/mipmap-hdpi/ic_launcher.webp
new file mode 100644
index 0000000..c209e78
--- /dev/null
+++ b/testapps/TestServerApp/app/src/main/res/mipmap-hdpi/ic_launcher.webp
Binary files differ
diff --git a/testapps/TestServerApp/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/testapps/TestServerApp/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp
new file mode 100644
index 0000000..b2dfe3d
--- /dev/null
+++ b/testapps/TestServerApp/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp
Binary files differ
diff --git a/testapps/TestServerApp/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/testapps/TestServerApp/app/src/main/res/mipmap-mdpi/ic_launcher.webp
new file mode 100644
index 0000000..4f0f1d6
--- /dev/null
+++ b/testapps/TestServerApp/app/src/main/res/mipmap-mdpi/ic_launcher.webp
Binary files differ
diff --git a/testapps/TestServerApp/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/testapps/TestServerApp/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp
new file mode 100644
index 0000000..62b611d
--- /dev/null
+++ b/testapps/TestServerApp/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp
Binary files differ
diff --git a/testapps/TestServerApp/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/testapps/TestServerApp/app/src/main/res/mipmap-xhdpi/ic_launcher.webp
new file mode 100644
index 0000000..948a307
--- /dev/null
+++ b/testapps/TestServerApp/app/src/main/res/mipmap-xhdpi/ic_launcher.webp
Binary files differ
diff --git a/testapps/TestServerApp/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/testapps/TestServerApp/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
new file mode 100644
index 0000000..1b9a695
--- /dev/null
+++ b/testapps/TestServerApp/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
Binary files differ
diff --git a/testapps/TestServerApp/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/testapps/TestServerApp/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp
new file mode 100644
index 0000000..28d4b77
--- /dev/null
+++ b/testapps/TestServerApp/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp
Binary files differ
diff --git a/testapps/TestServerApp/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/testapps/TestServerApp/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
new file mode 100644
index 0000000..9287f50
--- /dev/null
+++ b/testapps/TestServerApp/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
Binary files differ
diff --git a/testapps/TestServerApp/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/testapps/TestServerApp/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
new file mode 100644
index 0000000..aa7d642
--- /dev/null
+++ b/testapps/TestServerApp/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
Binary files differ
diff --git a/testapps/TestServerApp/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/testapps/TestServerApp/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
new file mode 100644
index 0000000..9126ae3
--- /dev/null
+++ b/testapps/TestServerApp/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
Binary files differ
diff --git a/testapps/TestServerApp/app/src/main/res/values/colors.xml b/testapps/TestServerApp/app/src/main/res/values/colors.xml
new file mode 100644
index 0000000..09837df
--- /dev/null
+++ b/testapps/TestServerApp/app/src/main/res/values/colors.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <color name="purple_200">#FFBB86FC</color>
+ <color name="purple_500">#FF6200EE</color>
+ <color name="purple_700">#FF3700B3</color>
+ <color name="teal_200">#FF03DAC5</color>
+ <color name="teal_700">#FF018786</color>
+ <color name="black">#FF000000</color>
+ <color name="white">#FFFFFFFF</color>
+</resources>
\ No newline at end of file
diff --git a/testapps/TestServerApp/app/src/main/res/values/strings.xml b/testapps/TestServerApp/app/src/main/res/values/strings.xml
new file mode 100644
index 0000000..0d1efa8
--- /dev/null
+++ b/testapps/TestServerApp/app/src/main/res/values/strings.xml
@@ -0,0 +1,21 @@
+<resources>
+ <string name="app_name">TestServerApp</string>
+ <string name="action_settings">Settings</string>
+ <string name="server_running">Server is running...</string>
+ <string name="stop_server">Stop Server</string>
+ <string name="server_down">Server is down</string>
+ <string name="start_server">Start Server</string>
+ <string-array name="entitlement_status">
+ <item>Disabled</item>
+ <item>Enabled</item>
+ <item>Incompatible</item>
+ <item>Provisioning</item>
+ <item>Included</item>
+ </string-array>
+ <string-array name="provision_status">
+ <item>Not Provisioned</item>
+ <item>Provisioned</item>
+ <item>Not Required</item>
+ <item>In Progress</item>
+ </string-array>
+</resources>
\ No newline at end of file
diff --git a/testapps/TestServerApp/app/src/main/res/xml/backup_rules.xml b/testapps/TestServerApp/app/src/main/res/xml/backup_rules.xml
new file mode 100644
index 0000000..9b42d90
--- /dev/null
+++ b/testapps/TestServerApp/app/src/main/res/xml/backup_rules.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?><!--
+ Sample backup rules file; uncomment and customize as necessary.
+ See https://developer.android.com/guide/topics/data/autobackup
+ for details.
+ Note: This file is ignored for devices older that API 31
+ See https://developer.android.com/about/versions/12/backup-restore
+-->
+<full-backup-content>
+ <!--
+ <include domain="sharedpref" path="."/>
+ <exclude domain="sharedpref" path="device.xml"/>
+-->
+</full-backup-content>
\ No newline at end of file
diff --git a/testapps/TestServerApp/app/src/main/res/xml/data_extraction_rules.xml b/testapps/TestServerApp/app/src/main/res/xml/data_extraction_rules.xml
new file mode 100644
index 0000000..c6c3bb0
--- /dev/null
+++ b/testapps/TestServerApp/app/src/main/res/xml/data_extraction_rules.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?><!--
+ Sample data extraction rules file; uncomment and customize as necessary.
+ See https://developer.android.com/about/versions/12/backup-restore#xml-changes
+ for details.
+-->
+<data-extraction-rules>
+ <cloud-backup>
+ <!-- TODO: Use <include> and <exclude> to control what is backed up.
+ <include .../>
+ <exclude .../>
+ -->
+ </cloud-backup>
+ <!--
+ <device-transfer>
+ <include .../>
+ <exclude .../>
+ </device-transfer>
+ -->
+</data-extraction-rules>
\ No newline at end of file
diff --git a/testapps/TestServerApp/app/src/test/java/com/google/android/testserverapp/ExampleUnitTest.java b/testapps/TestServerApp/app/src/test/java/com/google/android/testserverapp/ExampleUnitTest.java
new file mode 100644
index 0000000..88a8c5a
--- /dev/null
+++ b/testapps/TestServerApp/app/src/test/java/com/google/android/testserverapp/ExampleUnitTest.java
@@ -0,0 +1,18 @@
+package com.google.android.testserverapp;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
+ */
+public class ExampleUnitTest {
+
+ @Test
+ public void addition_isCorrect() {
+ assertEquals(4, 2 + 2);
+ }
+}
\ No newline at end of file
diff --git a/testapps/TestServerApp/build.gradle b/testapps/TestServerApp/build.gradle
new file mode 100644
index 0000000..90f9008
--- /dev/null
+++ b/testapps/TestServerApp/build.gradle
@@ -0,0 +1,5 @@
+// Top-level build file where you can add configuration options common to all sub-projects/modules.
+plugins {
+ id 'com.android.application' version '7.3.0' apply false
+ id 'com.android.library' version '7.3.0' apply false
+}
\ No newline at end of file
diff --git a/testapps/TestServerApp/gradle.properties b/testapps/TestServerApp/gradle.properties
new file mode 100644
index 0000000..3e927b1
--- /dev/null
+++ b/testapps/TestServerApp/gradle.properties
@@ -0,0 +1,21 @@
+# Project-wide Gradle settings.
+# IDE (e.g. Android Studio) users:
+# Gradle settings configured through the IDE *will override*
+# any settings specified in this file.
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
+# When configured, Gradle will run in incubating parallel mode.
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+# org.gradle.parallel=true
+# AndroidX package structure to make it clearer which packages are bundled with the
+# Android operating system, and which are packaged with your app's APK
+# https://developer.android.com/topic/libraries/support-library/androidx-rn
+android.useAndroidX=true
+# Enables namespacing of each library's R class so that its R class includes only the
+# resources declared in the library itself and none from the library's dependencies,
+# thereby reducing the size of the R class for that library
+android.nonTransitiveRClass=true
\ No newline at end of file
diff --git a/testapps/TestServerApp/gradle/wrapper/gradle-wrapper.jar b/testapps/TestServerApp/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000..e708b1c
--- /dev/null
+++ b/testapps/TestServerApp/gradle/wrapper/gradle-wrapper.jar
Binary files differ
diff --git a/testapps/TestServerApp/gradle/wrapper/gradle-wrapper.properties b/testapps/TestServerApp/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..e12f4cd
--- /dev/null
+++ b/testapps/TestServerApp/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Sat Nov 05 01:06:49 UTC 2022
+distributionBase=GRADLE_USER_HOME
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip
+distributionPath=wrapper/dists
+zipStorePath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
diff --git a/testapps/TestServerApp/gradlew b/testapps/TestServerApp/gradlew
new file mode 100755
index 0000000..4f906e0
--- /dev/null
+++ b/testapps/TestServerApp/gradlew
@@ -0,0 +1,185 @@
+#!/usr/bin/env sh
+
+#
+# Copyright 2015 the original author or authors.
+#
+# 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
+#
+# https://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.
+#
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+ echo "$*"
+}
+
+die () {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+ NONSTOP* )
+ nonstop=true
+ ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin or MSYS, switch paths to Windows format before running java
+if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=`expr $i + 1`
+ done
+ case $i in
+ 0) set -- ;;
+ 1) set -- "$args0" ;;
+ 2) set -- "$args0" "$args1" ;;
+ 3) set -- "$args0" "$args1" "$args2" ;;
+ 4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Escape application args
+save () {
+ for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+ echo " "
+}
+APP_ARGS=`save "$@"`
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+exec "$JAVACMD" "$@"
diff --git a/testapps/TestServerApp/gradlew.bat b/testapps/TestServerApp/gradlew.bat
new file mode 100644
index 0000000..ac1b06f
--- /dev/null
+++ b/testapps/TestServerApp/gradlew.bat
@@ -0,0 +1,89 @@
+@rem
+@rem Copyright 2015 the original author or authors.
+@rem
+@rem Licensed under the Apache License, Version 2.0 (the "License");
+@rem you may not use this file except in compliance with the License.
+@rem You may obtain a copy of the License at
+@rem
+@rem https://www.apache.org/licenses/LICENSE-2.0
+@rem
+@rem Unless required by applicable law or agreed to in writing, software
+@rem distributed under the License is distributed on an "AS IS" BASIS,
+@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+@rem See the License for the specific language governing permissions and
+@rem limitations under the License.
+@rem
+
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Resolve any "." and ".." in APP_HOME to make it shorter.
+for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto execute
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto execute
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/testapps/TestServerApp/settings.gradle b/testapps/TestServerApp/settings.gradle
new file mode 100644
index 0000000..a6a2846
--- /dev/null
+++ b/testapps/TestServerApp/settings.gradle
@@ -0,0 +1,16 @@
+pluginManagement {
+ repositories {
+ gradlePluginPortal()
+ google()
+ mavenCentral()
+ }
+}
+dependencyResolutionManagement {
+ repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
+ repositories {
+ google()
+ mavenCentral()
+ }
+}
+rootProject.name = "TestServerApp"
+include ':app'
diff --git a/testapps/TestSliceApp/.idea/.gitignore b/testapps/TestSliceApp/.idea/.gitignore
new file mode 100644
index 0000000..26d3352
--- /dev/null
+++ b/testapps/TestSliceApp/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/testapps/TestSliceApp/.idea/compiler.xml b/testapps/TestSliceApp/.idea/compiler.xml
new file mode 100644
index 0000000..fb7f4a8
--- /dev/null
+++ b/testapps/TestSliceApp/.idea/compiler.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="CompilerConfiguration">
+ <bytecodeTargetLevel target="11" />
+ </component>
+</project>
\ No newline at end of file
diff --git a/testapps/TestSliceApp/.idea/gradle.xml b/testapps/TestSliceApp/.idea/gradle.xml
new file mode 100644
index 0000000..a2d7c21
--- /dev/null
+++ b/testapps/TestSliceApp/.idea/gradle.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="GradleMigrationSettings" migrationVersion="1" />
+ <component name="GradleSettings">
+ <option name="linkedExternalProjectsSettings">
+ <GradleProjectSettings>
+ <option name="testRunner" value="GRADLE" />
+ <option name="distributionType" value="DEFAULT_WRAPPED" />
+ <option name="externalProjectPath" value="$PROJECT_DIR$" />
+ <option name="modules">
+ <set>
+ <option value="$PROJECT_DIR$" />
+ <option value="$PROJECT_DIR$/app" />
+ </set>
+ </option>
+ </GradleProjectSettings>
+ </option>
+ </component>
+</project>
\ No newline at end of file
diff --git a/testapps/TestSliceApp/.idea/misc.xml b/testapps/TestSliceApp/.idea/misc.xml
new file mode 100644
index 0000000..7c85865
--- /dev/null
+++ b/testapps/TestSliceApp/.idea/misc.xml
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="ExternalStorageConfigurationManager" enabled="true" />
+ <component name="NullableNotNullManager">
+ <option name="myDefaultNullable" value="androidx.annotation.Nullable" />
+ <option name="myDefaultNotNull" value="androidx.annotation.NonNull" />
+ <option name="myNullables">
+ <value>
+ <list size="15">
+ <item index="0" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.compatqual.NullableDecl" />
+ <item index="1" class="java.lang.String" itemvalue="org.jetbrains.annotations.Nullable" />
+ <item index="2" class="java.lang.String" itemvalue="androidx.annotation.Nullable" />
+ <item index="3" class="java.lang.String" itemvalue="org.eclipse.jdt.annotation.Nullable" />
+ <item index="4" class="java.lang.String" itemvalue="com.android.annotations.Nullable" />
+ <item index="5" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.Nullable" />
+ <item index="6" class="java.lang.String" itemvalue="androidx.annotation.RecentlyNullable" />
+ <item index="7" class="java.lang.String" itemvalue="android.support.annotation.Nullable" />
+ <item index="8" class="java.lang.String" itemvalue="javax.annotation.CheckForNull" />
+ <item index="9" class="java.lang.String" itemvalue="javax.annotation.Nullable" />
+ <item index="10" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.qual.Nullable" />
+ <item index="11" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.compatqual.NullableType" />
+ <item index="12" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.compatqual.NullableDecl" />
+ <item index="13" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.compatqual.NullableType" />
+ <item index="14" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.qual.Nullable" />
+ </list>
+ </value>
+ </option>
+ <option name="myNotNulls">
+ <value>
+ <list size="14">
+ <item index="0" class="java.lang.String" itemvalue="androidx.annotation.RecentlyNonNull" />
+ <item index="1" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.qual.NonNull" />
+ <item index="2" class="java.lang.String" itemvalue="com.android.annotations.NonNull" />
+ <item index="3" class="java.lang.String" itemvalue="androidx.annotation.NonNull" />
+ <item index="4" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.compatqual.NonNullType" />
+ <item index="5" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.NonNull" />
+ <item index="6" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.compatqual.NonNullDecl" />
+ <item index="7" class="java.lang.String" itemvalue="android.support.annotation.NonNull" />
+ <item index="8" class="java.lang.String" itemvalue="org.jetbrains.annotations.NotNull" />
+ <item index="9" class="java.lang.String" itemvalue="javax.annotation.Nonnull" />
+ <item index="10" class="java.lang.String" itemvalue="org.eclipse.jdt.annotation.NonNull" />
+ <item index="11" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.compatqual.NonNullDecl" />
+ <item index="12" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.compatqual.NonNullType" />
+ <item index="13" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.qual.NonNull" />
+ </list>
+ </value>
+ </option>
+ </component>
+ <component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="true" project-jdk-name="JDK" project-jdk-type="JavaSDK">
+ <output url="file://$PROJECT_DIR$/build/classes" />
+ </component>
+ <component name="ProjectType">
+ <option name="id" value="Android" />
+ </component>
+</project>
\ No newline at end of file
diff --git a/testapps/TestSliceApp/.idea/vcs.xml b/testapps/TestSliceApp/.idea/vcs.xml
new file mode 100644
index 0000000..498ba99
--- /dev/null
+++ b/testapps/TestSliceApp/.idea/vcs.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="IssueNavigationConfiguration">
+ <option name="links">
+ <list>
+ <IssueNavigationLink>
+ <option name="issueRegexp" value="\bb/(\d+)(#\w+)?\b" />
+ <option name="linkRegexp" value="https://buganizer.corp.google.com/issues/$1$2" />
+ </IssueNavigationLink>
+ <IssueNavigationLink>
+ <option name="issueRegexp" value="\b(?:BUG=|FIXED=)(\d+)\b" />
+ <option name="linkRegexp" value="https://buganizer.corp.google.com/issues/$1" />
+ </IssueNavigationLink>
+ <IssueNavigationLink>
+ <option name="issueRegexp" value="\b(?:cl/|cr/|OCL=|DIFFBASE=|ROLLBACK_OF=)(\d+)\b" />
+ <option name="linkRegexp" value="https://critique.corp.google.com/$1" />
+ </IssueNavigationLink>
+ <IssueNavigationLink>
+ <option name="issueRegexp" value="\bomg/(\d+)\b" />
+ <option name="linkRegexp" value="https://omg.corp.google.com/$1" />
+ </IssueNavigationLink>
+ <IssueNavigationLink>
+ <option name="issueRegexp" value="\b(?:go/|goto/)([^,.<>()"\s]+(?:[.,][^,.<>()"\s]+)*)" />
+ <option name="linkRegexp" value="https://goto.google.com/$1" />
+ </IssueNavigationLink>
+ <IssueNavigationLink>
+ <option name="issueRegexp" value="\bcs/([^\s]+[\w$])" />
+ <option name="linkRegexp" value="https://cs.corp.google.com/search/?q=$1" />
+ </IssueNavigationLink>
+ <IssueNavigationLink>
+ <option name="issueRegexp" value="(LINT\.IfChange)|(LINT\.ThenChange)" />
+ <option name="linkRegexp" value="https://goto.google.com/ifthisthenthatlint" />
+ </IssueNavigationLink>
+ </list>
+ </option>
+ </component>
+ <component name="VcsDirectoryMappings">
+ <mapping directory="$PROJECT_DIR$/../.." vcs="Git" />
+ </component>
+</project>
\ No newline at end of file
diff --git a/testapps/TestSliceApp/app/src/main/AndroidManifest.xml b/testapps/TestSliceApp/app/src/main/AndroidManifest.xml
index a34c254..53754de 100644
--- a/testapps/TestSliceApp/app/src/main/AndroidManifest.xml
+++ b/testapps/TestSliceApp/app/src/main/AndroidManifest.xml
@@ -4,6 +4,7 @@
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
+ <uses-permission android:name="android.permission.READ_BASIC_PHONE_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<application
android:allowBackup="true"
diff --git a/testapps/TestSliceApp/app/src/main/java/com/google/android/sample/testsliceapp/PrioritizeLatency.java b/testapps/TestSliceApp/app/src/main/java/com/google/android/sample/testsliceapp/PrioritizeLatency.java
index 45ea666..6ad6ebd 100644
--- a/testapps/TestSliceApp/app/src/main/java/com/google/android/sample/testsliceapp/PrioritizeLatency.java
+++ b/testapps/TestSliceApp/app/src/main/java/com/google/android/sample/testsliceapp/PrioritizeLatency.java
@@ -15,32 +15,64 @@
*/
package com.google.android.sample.testsliceapp;
+import static android.telephony.TelephonyManager.PURCHASE_PREMIUM_CAPABILITY_RESULT_ALREADY_IN_PROGRESS;
+import static android.telephony.TelephonyManager.PURCHASE_PREMIUM_CAPABILITY_RESULT_ALREADY_PURCHASED;
+import static android.telephony.TelephonyManager.PURCHASE_PREMIUM_CAPABILITY_RESULT_CARRIER_DISABLED;
+import static android.telephony.TelephonyManager.PURCHASE_PREMIUM_CAPABILITY_RESULT_CARRIER_ERROR;
+import static android.telephony.TelephonyManager.PURCHASE_PREMIUM_CAPABILITY_RESULT_ENTITLEMENT_CHECK_FAILED;
+import static android.telephony.TelephonyManager.PURCHASE_PREMIUM_CAPABILITY_RESULT_FEATURE_NOT_SUPPORTED;
+import static android.telephony.TelephonyManager.PURCHASE_PREMIUM_CAPABILITY_RESULT_NETWORK_NOT_AVAILABLE;
+import static android.telephony.TelephonyManager.PURCHASE_PREMIUM_CAPABILITY_RESULT_NOT_DEFAULT_DATA_SUB;
+import static android.telephony.TelephonyManager.PURCHASE_PREMIUM_CAPABILITY_RESULT_OVERRIDDEN;
+import static android.telephony.TelephonyManager.PURCHASE_PREMIUM_CAPABILITY_RESULT_PENDING_NETWORK_SETUP;
+import static android.telephony.TelephonyManager.PURCHASE_PREMIUM_CAPABILITY_RESULT_SUCCESS;
+import static android.telephony.TelephonyManager.PURCHASE_PREMIUM_CAPABILITY_RESULT_THROTTLED;
+import static android.telephony.TelephonyManager.PURCHASE_PREMIUM_CAPABILITY_RESULT_TIMEOUT;
+import static android.telephony.TelephonyManager.PURCHASE_PREMIUM_CAPABILITY_RESULT_USER_CANCELED;
+
+import android.annotation.TargetApi;
+import android.content.Context;
import android.net.ConnectivityManager;
import android.net.ConnectivityManager.NetworkCallback;
import android.net.Network;
import android.net.NetworkCapabilities;
import android.net.NetworkRequest;
import android.os.Bundle;
+import android.telephony.TelephonyManager;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
+import android.widget.TextView;
import androidx.fragment.app.Fragment;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.TimeUnit;
+
/**
* A simple {@link Fragment} subclass. Use the {@link PrioritizeLatency#newInstance} factory method
* to create an instance of this fragment.
*/
public class PrioritizeLatency extends Fragment {
- Button mRelease, mRequest, mPing;
- Network mNetwork;
+ Button mPurchase, mNetworkRequestRelease, mPing;
+ TextView mResultTextView;
+ Network mNetwork = null;
ConnectivityManager mConnectivityManager;
NetworkCallback mProfileCheckNetworkCallback;
+ TelephonyManager mTelephonyManager;
+ Context mContext;
+ private final ExecutorService mFixedThreadPool = Executors.newFixedThreadPool(3);
+
+ private static final String LOG_TAG = "PrioritizeLatency";
+ private static final int TIMEOUT_FOR_PURCHASE = 5 * 60; // 5 minutes
+
public PrioritizeLatency() {
- // Required empty public constructor
+ // Required empty public constructor
}
/**
@@ -62,7 +94,9 @@
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- mConnectivityManager = getContext().getSystemService(ConnectivityManager.class);
+ mContext = getContext();
+ mConnectivityManager = mContext.getSystemService(ConnectivityManager.class);
+ mTelephonyManager = mContext.getSystemService(TelephonyManager.class);
}
@Override
@@ -70,56 +104,190 @@
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_prioritize_latency, container, false);
- mProfileCheckNetworkCallback =
- new NetworkCallback() {
- @Override
- public void onAvailable(final Network network) {
- mNetwork = network;
- }
- };
- mRelease = view.findViewById(R.id.releaselatency);
- mRelease.setOnClickListener(new OnClickListener() {
+ mResultTextView = view.findViewById(R.id.resultTextView);
+
+ mPurchase = view.findViewById(R.id.purchaseButton);
+ mPurchase.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
- try {
- mConnectivityManager.unregisterNetworkCallback(
- mProfileCheckNetworkCallback);
- } catch (Exception e) {
- Log.d("SliceTest", "Exception: " + e);
- }
+ Log.d(LOG_TAG, "Clicking purchase button");
+ onPurchaseButtonClick();
}
});
- mRequest = view.findViewById(R.id.requestlatency);
- mRequest.setOnClickListener(new OnClickListener() {
+
+ mNetworkRequestRelease = view.findViewById(R.id.requestReleaseButton);
+ mNetworkRequestRelease.setEnabled(false);
+ mNetworkRequestRelease.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
- mProfileCheckNetworkCallback = new NetworkCallback() {
- @Override
- public void onAvailable(final Network network) {
- Log.d("PrioritizeLatency", "onAvailable + " + network);
- mNetwork = network;
- }
- };
- NetworkRequest.Builder builder = new NetworkRequest.Builder();
- builder.addCapability(NetworkCapabilities.NET_CAPABILITY_PRIORITIZE_LATENCY);
- mConnectivityManager.requestNetwork(builder.build(), mProfileCheckNetworkCallback);
- Log.d("PrioritizeLatency", "onClick + " + builder.build());
+ Log.d(LOG_TAG, "Clicking Request/Release Network button");
+ onNetworkRequestReleaseClick();
}
});
+
mPing = view.findViewById(R.id.pinglatency);
+ mPing.setEnabled(false);
mPing.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
if (mNetwork != null) {
- //mNetwork.
try {
new RequestTask().ping(mNetwork);
} catch (Exception e) {
- Log.d("SliceTest", "Exception: " + e);
+ Log.e(LOG_TAG, "Exception at ping: " + e);
}
}
}
});
return view;
}
+
+ private void onNetworkRequestReleaseClick() {
+ if (mNetwork == null) {
+ mProfileCheckNetworkCallback = new NetworkCallback() {
+ @Override
+ public void onAvailable(final Network network) {
+ Log.d(LOG_TAG, "onAvailable + " + network);
+ mNetwork = network;
+ mPing.setEnabled(true);
+ mNetworkRequestRelease.setText(R.string.release_network);
+ mResultTextView.setText(R.string.network_available);
+ }
+ };
+ NetworkRequest.Builder builder = new NetworkRequest.Builder();
+ builder.addCapability(NetworkCapabilities.NET_CAPABILITY_PRIORITIZE_LATENCY);
+ mConnectivityManager.requestNetwork(builder.build(),
+ mProfileCheckNetworkCallback);
+ Log.d(LOG_TAG, "Network Request/Release onClick + " + builder.build());
+ mResultTextView.setText(R.string.network_requested);
+ } else {
+ try {
+ mConnectivityManager.unregisterNetworkCallback(
+ mProfileCheckNetworkCallback);
+ mNetwork = null;
+ mNetworkRequestRelease.setText(R.string.request_network);
+ mResultTextView.setText(R.string.network_released);
+ } catch (Exception e) {
+ Log.e(LOG_TAG, "Exception when releasing network: " + e);
+ mResultTextView.setText(R.string.network_release_failed);
+ }
+ }
+ }
+
+ @TargetApi(34)
+ private void onPurchaseButtonClick() {
+ try {
+ if (mTelephonyManager.isPremiumCapabilityAvailableForPurchase(
+ TelephonyManager.PREMIUM_CAPABILITY_PRIORITIZE_LATENCY)) {
+ LinkedBlockingQueue<Integer> purchaseRequest = new LinkedBlockingQueue<>(1);
+
+ // Try to purchase the capability
+ mTelephonyManager.purchasePremiumCapability(
+ TelephonyManager.PREMIUM_CAPABILITY_PRIORITIZE_LATENCY,
+ mFixedThreadPool, purchaseRequest::offer);
+ mResultTextView.setText(R.string.purchase_in_progress);
+
+ mFixedThreadPool.execute(() -> {
+ try {
+ Integer result = purchaseRequest.poll(
+ TIMEOUT_FOR_PURCHASE, TimeUnit.SECONDS);
+ if (result == null) {
+ updateResultTextView(R.string.purchase_empty_result);
+ Log.d(LOG_TAG, "Got null result at purchasePremiumCapability");
+ return;
+ }
+
+ String purchaseResultText = "Result: "
+ + purchasePremiumResultToText(result.intValue());
+ updateResultTextView(purchaseResultText);
+ Log.d(LOG_TAG, purchaseResultText);
+
+ if (isPremiumCapacityAvailableForUse(result.intValue())) {
+ updateNetworkRequestReleaseButton(true);
+ }
+ } catch (InterruptedException e) {
+ Log.e(LOG_TAG, "InterruptedException at onPurchaseButtonClick: " + e);
+ updateResultTextView(R.string.purchase_exception);
+ }
+ });
+ } else {
+ mResultTextView.setText(R.string.premium_not_available);
+ }
+ } catch (Exception e) {
+ Log.e(LOG_TAG, "Exception when purchasing network premium: " + e);
+ mResultTextView.setText(R.string.purchase_exception);
+ }
+ }
+
+ private void updateNetworkRequestReleaseButton(boolean enabled) {
+ getActivity().runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ mNetworkRequestRelease.setEnabled(enabled);
+ }
+ });
+ }
+
+ private void updateResultTextView(int status) {
+ getActivity().runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ mResultTextView.setText(status);
+ }
+ });
+ }
+
+ private void updateResultTextView(String status) {
+ getActivity().runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ mResultTextView.setText(status);
+ }
+ });
+ }
+
+ private String purchasePremiumResultToText(int result) {
+ switch (result) {
+ case PURCHASE_PREMIUM_CAPABILITY_RESULT_SUCCESS:
+ return "Success";
+ case PURCHASE_PREMIUM_CAPABILITY_RESULT_THROTTLED:
+ return "Throttled";
+ case PURCHASE_PREMIUM_CAPABILITY_RESULT_ALREADY_PURCHASED:
+ return "Already purchased";
+ case PURCHASE_PREMIUM_CAPABILITY_RESULT_ALREADY_IN_PROGRESS:
+ return "Already in progress";
+ case PURCHASE_PREMIUM_CAPABILITY_RESULT_OVERRIDDEN:
+ return "Overridden";
+ case PURCHASE_PREMIUM_CAPABILITY_RESULT_USER_CANCELED:
+ return "User canceled";
+ case PURCHASE_PREMIUM_CAPABILITY_RESULT_CARRIER_DISABLED:
+ return "Carrier disabled";
+ case PURCHASE_PREMIUM_CAPABILITY_RESULT_CARRIER_ERROR:
+ return "Carrier error";
+ case PURCHASE_PREMIUM_CAPABILITY_RESULT_TIMEOUT:
+ return "Timeout";
+ case PURCHASE_PREMIUM_CAPABILITY_RESULT_FEATURE_NOT_SUPPORTED:
+ return "Feature not supported";
+ case PURCHASE_PREMIUM_CAPABILITY_RESULT_NETWORK_NOT_AVAILABLE:
+ return "Network not available";
+ case PURCHASE_PREMIUM_CAPABILITY_RESULT_ENTITLEMENT_CHECK_FAILED:
+ return "Entitlement check failed";
+ case PURCHASE_PREMIUM_CAPABILITY_RESULT_NOT_DEFAULT_DATA_SUB:
+ return "No default data";
+ case PURCHASE_PREMIUM_CAPABILITY_RESULT_PENDING_NETWORK_SETUP:
+ return "Pending network setup";
+ default:
+ String errorStr = "Unknown purchasing result " + result;
+ Log.e(LOG_TAG, errorStr);
+ return errorStr;
+ }
+ }
+
+ private boolean isPremiumCapacityAvailableForUse(int purchaseResult) {
+ if (purchaseResult == PURCHASE_PREMIUM_CAPABILITY_RESULT_SUCCESS
+ || purchaseResult == PURCHASE_PREMIUM_CAPABILITY_RESULT_ALREADY_PURCHASED) {
+ return true;
+ }
+ return false;
+ }
}
diff --git a/testapps/TestSliceApp/app/src/main/java/com/google/android/sample/testsliceapp/RequestTask.java b/testapps/TestSliceApp/app/src/main/java/com/google/android/sample/testsliceapp/RequestTask.java
index 3849860..1521a14 100644
--- a/testapps/TestSliceApp/app/src/main/java/com/google/android/sample/testsliceapp/RequestTask.java
+++ b/testapps/TestSliceApp/app/src/main/java/com/google/android/sample/testsliceapp/RequestTask.java
@@ -35,6 +35,7 @@
try {
url = new URL("http://www.google.com");
} catch (Exception e) {
+ Log.d("SliceTest", "exception: " + e);
}
if (url != null) {
try {
diff --git a/testapps/TestSliceApp/app/src/main/res/layout/activity_main.xml b/testapps/TestSliceApp/app/src/main/res/layout/activity_main.xml
index a723e6f..8a7d991 100644
--- a/testapps/TestSliceApp/app/src/main/res/layout/activity_main.xml
+++ b/testapps/TestSliceApp/app/src/main/res/layout/activity_main.xml
@@ -6,7 +6,6 @@
android:layout_height="match_parent"
tools:context=".MainActivity" >
<androidx.fragment.app.FragmentContainerView
- xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/frameLayoutMainFrag"
diff --git a/testapps/TestSliceApp/app/src/main/res/layout/fragment_c_b_s.xml b/testapps/TestSliceApp/app/src/main/res/layout/fragment_c_b_s.xml
index 5305b53..eff68ac 100644
--- a/testapps/TestSliceApp/app/src/main/res/layout/fragment_c_b_s.xml
+++ b/testapps/TestSliceApp/app/src/main/res/layout/fragment_c_b_s.xml
@@ -17,7 +17,7 @@
android:id="@+id/textView3"
android:layout_width="342dp"
android:layout_height="49dp"
- android:text="CBS"
+ android:text="@string/cbs_title"
tools:layout_editor_absoluteX="19dp"
tools:layout_editor_absoluteY="7dp" />
<Button
@@ -25,7 +25,7 @@
android:layout_width="186dp"
android:layout_height="57dp"
android:layout_marginTop="164dp"
- android:text="Request Network"
+ android:text="@string/request_network"
app:layout_constraintTop_toTopOf="parent"
tools:layout_editor_absoluteX="112dp" />
<Button
@@ -33,14 +33,14 @@
android:layout_width="187dp"
android:layout_height="61dp"
android:layout_marginTop="124dp"
- android:text="Release Network"
+ android:text="@string/release_network"
app:layout_constraintTop_toBottomOf="@+id/requestcbs"
tools:layout_editor_absoluteX="119dp" />
<Button
android:id="@+id/pingcbs"
android:layout_width="186dp"
android:layout_height="55dp"
- android:text="Ping"
+ android:text="@string/ping"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@+id/releasecbs"
tools:layout_editor_absoluteX="120dp" />
diff --git a/testapps/TestSliceApp/app/src/main/res/layout/fragment_main.xml b/testapps/TestSliceApp/app/src/main/res/layout/fragment_main.xml
index 11e95a8..5c12075 100644
--- a/testapps/TestSliceApp/app/src/main/res/layout/fragment_main.xml
+++ b/testapps/TestSliceApp/app/src/main/res/layout/fragment_main.xml
@@ -5,18 +5,17 @@
android:layout_height="match_parent"
tools:context=".MainFragment">
- <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ <androidx.constraintlayout.widget.ConstraintLayout
xmlns:app="http://schemas.android.com/apk/res-auto"
- xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/frameLayoutMain"
tools:context=".MainActivity">
<Button
android:id="@+id/cbs"
- android:layout_width="222dp"
- android:layout_height="51dp"
- android:text="CBS"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/cbs_title"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.493"
@@ -25,9 +24,9 @@
app:layout_constraintVertical_bias="0.751" />
<Button
android:id="@+id/latency"
- android:layout_width="222dp"
- android:layout_height="46dp"
- android:text="PRIORITIZE LATENCY"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/latency_title"
app:layout_constraintBottom_toTopOf="@+id/cbs"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.497"
@@ -38,7 +37,7 @@
android:id="@+id/bw"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:text="PRIORITIZE BANDWIDTH"
+ android:text="@string/bw_title"
app:layout_constraintBottom_toTopOf="@+id/latency"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.497"
diff --git a/testapps/TestSliceApp/app/src/main/res/layout/fragment_prioritize_bandwidth.xml b/testapps/TestSliceApp/app/src/main/res/layout/fragment_prioritize_bandwidth.xml
index 8933e7a..412ec39 100644
--- a/testapps/TestSliceApp/app/src/main/res/layout/fragment_prioritize_bandwidth.xml
+++ b/testapps/TestSliceApp/app/src/main/res/layout/fragment_prioritize_bandwidth.xml
@@ -8,9 +8,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/frameLayoutBW">
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:app="http://schemas.android.com/apk/res-auto"
- xmlns:tools="http://schemas.android.com/tools"
+<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/frameLayout2"
android:layout_width="match_parent"
android:layout_height="match_parent"
@@ -19,7 +17,7 @@
android:id="@+id/textView2"
android:layout_width="371dp"
android:layout_height="52dp"
- android:text="Prioritize Bandwidth"
+ android:text="@string/bw_title"
tools:layout_editor_absoluteX="20dp"
tools:layout_editor_absoluteY="4dp" />
<Button
@@ -27,7 +25,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="64dp"
- android:text="Release Network"
+ android:text="@string/release_network"
app:layout_constraintBottom_toTopOf="@+id/requestbw"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
@@ -38,7 +36,7 @@
android:layout_width="182dp"
android:layout_height="42dp"
android:layout_marginBottom="228dp"
- android:text="Ping"
+ android:text="@string/ping"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.493"
@@ -48,7 +46,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="308dp"
- android:text="RequestNetwork"
+ android:text="@string/request_network"
app:layout_constraintBottom_toTopOf="@+id/pingbw"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.495"
diff --git a/testapps/TestSliceApp/app/src/main/res/layout/fragment_prioritize_latency.xml b/testapps/TestSliceApp/app/src/main/res/layout/fragment_prioritize_latency.xml
index b040995..37a519f 100644
--- a/testapps/TestSliceApp/app/src/main/res/layout/fragment_prioritize_latency.xml
+++ b/testapps/TestSliceApp/app/src/main/res/layout/fragment_prioritize_latency.xml
@@ -14,44 +14,52 @@
android:layout_height="match_parent"
tools:context=".PrioritizeLatency">
<Button
- android:id="@+id/requestlatency"
- android:layout_width="183dp"
+ android:id="@+id/purchaseButton"
+ android:layout_width="233dp"
android:layout_height="50dp"
android:layout_marginTop="176dp"
- android:text="RequestNetwork"
- app:layout_constraintBottom_toTopOf="@+id/button6"
+ android:text="@string/purchase"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.495"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.717" />
<Button
- android:id="@+id/releaselatency"
+ android:id="@+id/requestReleaseButton"
android:layout_width="183dp"
android:layout_height="50dp"
android:layout_marginTop="84dp"
- android:text="ReleaseNetwork"
- app:layout_constraintBottom_toTopOf="@+id/button6"
+ android:text="@string/request_network"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toBottomOf="@+id/requestlatency"
+ app:layout_constraintTop_toBottomOf="@+id/purchaseButton"
app:layout_constraintVertical_bias="0.717" />
<Button
android:id="@+id/pinglatency"
android:layout_width="182dp"
android:layout_height="42dp"
android:layout_marginBottom="92dp"
- android:text="Ping"
+ android:text="@string/ping"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.493"
app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toBottomOf="@+id/releaselatency" />
+ app:layout_constraintTop_toBottomOf="@+id/requestReleaseButton" />
+ <TextView
+ android:id="@+id/resultTextView"
+ android:layout_width="283dp"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="84dp"
+ android:text="@string/result_prefix"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/pinglatency"
+ app:layout_constraintVertical_bias="0.717" />
<TextView
android:id="@+id/textView"
android:layout_width="371dp"
android:layout_height="52dp"
- android:text="Prioritize Latency"
+ android:text="@string/latency_title"
tools:layout_editor_absoluteX="16dp"
tools:layout_editor_absoluteY="16dp" />
</androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-af/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-af/strings.xml
index d172f0f..2a1383b 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-af/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-af/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Hallo leë fragment"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-am/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-am/strings.xml
index 229ff5d..5fe7673 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-am/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-am/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Hello blank fragment"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-ar/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-ar/strings.xml
index 0cadb81..be17e82 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-ar/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-ar/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"جزء فارغ للترحيب"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-as/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-as/strings.xml
index 229ff5d..5fe7673 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-as/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-as/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Hello blank fragment"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-az/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-az/strings.xml
index 3702d56..55d3bbb 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-az/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-az/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Boş salamlama fraqmenti"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-b+sr+Latn/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-b+sr+Latn/strings.xml
index 229ff5d..5fe7673 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-b+sr+Latn/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-b+sr+Latn/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Hello blank fragment"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-be/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-be/strings.xml
index 385f84e..4a972f1 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-be/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-be/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Вітаем,"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-bg/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-bg/strings.xml
index 943a70d..a9ee446 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-bg/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-bg/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Здравей, празен фрагмент"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-bn/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-bn/strings.xml
index 229ff5d..5fe7673 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-bn/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-bn/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Hello blank fragment"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-bs/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-bs/strings.xml
index 229ff5d..5fe7673 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-bs/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-bs/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Hello blank fragment"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-ca/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-ca/strings.xml
index 9799d39..d8d82a9 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-ca/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-ca/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Fragment de benvinguda en blanc"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-cs/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-cs/strings.xml
index 793ab6f..10d273e 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-cs/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-cs/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Prázdný fragment pro pozdrav"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-da/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-da/strings.xml
index 229ff5d..5fe7673 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-da/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-da/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Hello blank fragment"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-de/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-de/strings.xml
index 229ff5d..5fe7673 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-de/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-de/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Hello blank fragment"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-el/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-el/strings.xml
index 229ff5d..5fe7673 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-el/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-el/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Hello blank fragment"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-en-rAU/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-en-rAU/strings.xml
index 229ff5d..5fe7673 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-en-rAU/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-en-rAU/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Hello blank fragment"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-en-rCA/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-en-rCA/strings.xml
index 229ff5d..5fe7673 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-en-rCA/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-en-rCA/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Hello blank fragment"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-en-rGB/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-en-rGB/strings.xml
index 229ff5d..5fe7673 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-en-rGB/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-en-rGB/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Hello blank fragment"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-en-rIN/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-en-rIN/strings.xml
index 229ff5d..5fe7673 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-en-rIN/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-en-rIN/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Hello blank fragment"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-en-rXC/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-en-rXC/strings.xml
index dafc7d2..182246f 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-en-rXC/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-en-rXC/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Hello blank fragment"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-es-rUS/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-es-rUS/strings.xml
index 229ff5d..5fe7673 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-es-rUS/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-es-rUS/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Hello blank fragment"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-es/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-es/strings.xml
index 355b912..3f5617d 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-es/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-es/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Hola, (segmento en blanco):"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-et/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-et/strings.xml
index 229ff5d..5fe7673 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-et/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-et/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Hello blank fragment"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-eu/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-eu/strings.xml
index 229ff5d..5fe7673 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-eu/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-eu/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Hello blank fragment"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-fa/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-fa/strings.xml
index 6f35108..e1a7e02 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-fa/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-fa/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"سلام بخش خالی"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-fi/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-fi/strings.xml
index 229ff5d..5fe7673 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-fi/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-fi/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Hello blank fragment"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-fr-rCA/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-fr-rCA/strings.xml
index 229ff5d..5fe7673 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-fr-rCA/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-fr-rCA/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Hello blank fragment"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-fr/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-fr/strings.xml
index e9b3b45..79dc1f2 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-fr/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-fr/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Bonjour fragment vierge"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-gl/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-gl/strings.xml
index 229ff5d..5fe7673 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-gl/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-gl/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Hello blank fragment"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-gu/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-gu/strings.xml
index 229ff5d..5fe7673 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-gu/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-gu/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Hello blank fragment"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-hi/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-hi/strings.xml
index 229ff5d..5fe7673 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-hi/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-hi/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Hello blank fragment"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-hr/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-hr/strings.xml
index 229ff5d..5fe7673 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-hr/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-hr/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Hello blank fragment"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-hu/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-hu/strings.xml
index 0e73dba..aa9bcb0 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-hu/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-hu/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Üres üdvözlő rész"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-hy/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-hy/strings.xml
index 31a60c6..312bd47 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-hy/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-hy/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Դատարկ հատված"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-in/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-in/strings.xml
index 229ff5d..5fe7673 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-in/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-in/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Hello blank fragment"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-is/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-is/strings.xml
index 229ff5d..5fe7673 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-is/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-is/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Hello blank fragment"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-it/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-it/strings.xml
index 229ff5d..5fe7673 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-it/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-it/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Hello blank fragment"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-iw/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-iw/strings.xml
index 4287a40..1b3caf3 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-iw/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-iw/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"שלום קטע ריק"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-ja/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-ja/strings.xml
index 229ff5d..5fe7673 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-ja/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-ja/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Hello blank fragment"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-ka/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-ka/strings.xml
index 8d91ed0..5f12d5b 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-ka/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-ka/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"მოგესალმებით, ეს ცარიელი ფრაგმენტია"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-kk/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-kk/strings.xml
index 229ff5d..5fe7673 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-kk/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-kk/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Hello blank fragment"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-km/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-km/strings.xml
index 229ff5d..5fe7673 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-km/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-km/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Hello blank fragment"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-kn/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-kn/strings.xml
index 13a202b..40a44fa 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-kn/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-kn/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"ಹಲೋ, ಖಾಲಿ ಫ್ರಾಗ್ಮೆಂಟ್"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-ko/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-ko/strings.xml
index 229ff5d..5fe7673 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-ko/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-ko/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Hello blank fragment"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-ky/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-ky/strings.xml
index 229ff5d..5fe7673 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-ky/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-ky/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Hello blank fragment"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-lo/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-lo/strings.xml
index 3d47ad6..3938c7c 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-lo/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-lo/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"ສະບາຍດີຈຸດແຕກທີ່ຫວ່າງເປົ່າ"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-lt/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-lt/strings.xml
index 509fd2d..d0c9f0b 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-lt/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-lt/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Sveiki, tuščias fragmentas"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-lv/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-lv/strings.xml
index 229ff5d..5fe7673 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-lv/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-lv/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Hello blank fragment"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-mk/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-mk/strings.xml
index 229ff5d..5fe7673 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-mk/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-mk/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Hello blank fragment"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-ml/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-ml/strings.xml
index 47ca9c8..4819bc2 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-ml/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-ml/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"ഹലോ ബ്ലാങ്ക് ഫ്രാഗ്മെന്റ്"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-mn/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-mn/strings.xml
index 1aa5138..1a3381c 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-mn/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-mn/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Сайн байна уу хоосон хэсэг"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-mr/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-mr/strings.xml
index 7fbe792..2dbd14c 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-mr/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-mr/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"हॅलो ब्लँक फ्रॅग्मेंट"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-ms/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-ms/strings.xml
index b928cd6..214c568 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-ms/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-ms/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Helo cebisan kosong"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-my/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-my/strings.xml
index 229ff5d..5fe7673 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-my/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-my/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Hello blank fragment"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-nb/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-nb/strings.xml
index 3d601ab..8d22431 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-nb/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-nb/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Hei, tomt fragment"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-ne/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-ne/strings.xml
index 229ff5d..5fe7673 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-ne/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-ne/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Hello blank fragment"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-nl/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-nl/strings.xml
index 5d10fc6..111d4cd 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-nl/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-nl/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Hallo leeg fragment"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-or/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-or/strings.xml
index 229ff5d..5fe7673 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-or/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-or/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Hello blank fragment"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-pa/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-pa/strings.xml
index 229ff5d..5fe7673 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-pa/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-pa/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Hello blank fragment"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-pl/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-pl/strings.xml
index 0bf147b..4b99fcb 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-pl/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-pl/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Tutaj jest pusty fragment"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-pt-rPT/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-pt-rPT/strings.xml
index b94a687..2532a83 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-pt-rPT/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-pt-rPT/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Olá, fragmento em branco"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-pt/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-pt/strings.xml
index 229ff5d..5fe7673 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-pt/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-pt/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Hello blank fragment"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-ro/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-ro/strings.xml
index 229ff5d..5fe7673 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-ro/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-ro/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Hello blank fragment"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-ru/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-ru/strings.xml
index 229ff5d..5fe7673 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-ru/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-ru/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Hello blank fragment"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-si/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-si/strings.xml
index 7c88afe..1c5b58c 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-si/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-si/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"ආයුබෝවන් හිස් කොටස"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-sk/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-sk/strings.xml
index 229ff5d..5fe7673 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-sk/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-sk/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Hello blank fragment"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-sl/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-sl/strings.xml
index b3fd35a..d15a53e 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-sl/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-sl/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Prazen del za pozdrav"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-sq/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-sq/strings.xml
index 229ff5d..5fe7673 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-sq/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-sq/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Hello blank fragment"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-sr/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-sr/strings.xml
index 229ff5d..5fe7673 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-sr/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-sr/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Hello blank fragment"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-sv/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-sv/strings.xml
index 229ff5d..5fe7673 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-sv/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-sv/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Hello blank fragment"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-sw/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-sw/strings.xml
index 5cc6a6a..f79ee6f 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-sw/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-sw/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Kipande cha salamu kisichokuwa na kitu"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-ta/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-ta/strings.xml
index 229ff5d..5fe7673 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-ta/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-ta/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Hello blank fragment"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-te/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-te/strings.xml
index ad9cef8..855e108 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-te/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-te/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"హలో ఖాళీ విడిభాగము"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-th/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-th/strings.xml
index 229ff5d..5fe7673 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-th/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-th/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Hello blank fragment"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-tl/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-tl/strings.xml
index 229ff5d..5fe7673 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-tl/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-tl/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Hello blank fragment"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-tr/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-tr/strings.xml
index 1e18a88..c4a39d8 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-tr/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-tr/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Merhaba boş bölüm"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-uk/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-uk/strings.xml
index 0219615..cdf416b 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-uk/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-uk/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Пустий фрагмент із привітанням"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-ur/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-ur/strings.xml
index 229ff5d..5fe7673 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-ur/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-ur/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Hello blank fragment"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-uz/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-uz/strings.xml
index 229ff5d..5fe7673 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-uz/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-uz/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Hello blank fragment"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-vi/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-vi/strings.xml
index 229ff5d..5fe7673 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-vi/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-vi/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Hello blank fragment"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-zh-rCN/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-zh-rCN/strings.xml
index 229ff5d..5fe7673 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-zh-rCN/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-zh-rCN/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Hello blank fragment"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-zh-rHK/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-zh-rHK/strings.xml
index 93c0492..c8f0c65 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-zh-rHK/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-zh-rHK/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"歡迎詞空白片段"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-zh-rTW/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-zh-rTW/strings.xml
index 229ff5d..5fe7673 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-zh-rTW/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-zh-rTW/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Hello blank fragment"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values-zu/strings.xml b/testapps/TestSliceApp/app/src/main/res/values-zu/strings.xml
index 229ff5d..5fe7673 100644
--- a/testapps/TestSliceApp/app/src/main/res/values-zu/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values-zu/strings.xml
@@ -3,4 +3,36 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="1265450418387661962">"TestSliceApp"</string>
<string name="hello_blank_fragment" msgid="1245093642770491175">"Hello blank fragment"</string>
+ <!-- no translation found for request_network (8945235490804849914) -->
+ <skip />
+ <!-- no translation found for release_network (174252378593535238) -->
+ <skip />
+ <!-- no translation found for ping (7890607576220714932) -->
+ <skip />
+ <!-- no translation found for result_prefix (3522796186427501399) -->
+ <skip />
+ <!-- no translation found for latency_title (963052613947017009) -->
+ <skip />
+ <!-- no translation found for bw_title (3902162973688221344) -->
+ <skip />
+ <!-- no translation found for cbs_title (5234410535569935600) -->
+ <skip />
+ <!-- no translation found for purchase (7843181995697372128) -->
+ <skip />
+ <!-- no translation found for network_available (4780293262690730734) -->
+ <skip />
+ <!-- no translation found for network_requested (5646123922691865991) -->
+ <skip />
+ <!-- no translation found for network_released (2992280481133877025) -->
+ <skip />
+ <!-- no translation found for network_release_failed (256471231420029151) -->
+ <skip />
+ <!-- no translation found for purchase_exception (8876841120055716671) -->
+ <skip />
+ <!-- no translation found for purchase_empty_result (7497824191649973928) -->
+ <skip />
+ <!-- no translation found for premium_not_available (7346368693802644748) -->
+ <skip />
+ <!-- no translation found for purchase_in_progress (5450288183685032424) -->
+ <skip />
</resources>
diff --git a/testapps/TestSliceApp/app/src/main/res/values/strings.xml b/testapps/TestSliceApp/app/src/main/res/values/strings.xml
index c2bb089..4990cec 100644
--- a/testapps/TestSliceApp/app/src/main/res/values/strings.xml
+++ b/testapps/TestSliceApp/app/src/main/res/values/strings.xml
@@ -1,5 +1,20 @@
-<resources>
+<resources xmlns:tools="http://schemas.android.com/tools">
<string name="app_name">TestSliceApp</string>
- <!-- TODO: Remove or change this placeholder text -->
<string name="hello_blank_fragment">Hello blank fragment</string>
+ <string name="request_network">Request Network</string>
+ <string name="release_network">Release Network</string>
+ <string name="ping">Ping</string>
+ <string name="result_prefix">Result: </string>
+ <string name="latency_title">Prioritize Latency</string>
+ <string name="bw_title">Prioritize Bandwidth</string>
+ <string name="cbs_title">CBS</string>
+ <string name="purchase">Purchase Network Premium</string>
+ <string name="network_available">Result: The requested network is available now!</string>
+ <string name="network_requested">Result: The network has been requested!</string>
+ <string name="network_released">Result: The network has been released!</string>
+ <string name="network_release_failed">Result: Failed to release the network!!!</string>
+ <string name="purchase_exception">Result: Exception when purchasing network premium!!!</string>
+ <string name="purchase_empty_result">Result: Got empty result when purchasing network premium!!!</string>
+ <string name="premium_not_available">Result: The network premium is not available for purchase!!!</string>
+ <string name="purchase_in_progress">Result: The network premium purchase is in progress ...</string>
</resources>
\ No newline at end of file
diff --git a/tests/src/com/android/phone/CarrierConfigLoaderTest.java b/tests/src/com/android/phone/CarrierConfigLoaderTest.java
index 60c3a84..9c425d6 100644
--- a/tests/src/com/android/phone/CarrierConfigLoaderTest.java
+++ b/tests/src/com/android/phone/CarrierConfigLoaderTest.java
@@ -192,6 +192,7 @@
* will return the right config in the XML.
*/
@Test
+ @Ignore("b/257169357")
public void testUpdateConfigForPhoneId_simLoaded_withCachedConfigInXml() throws Exception {
// Bypass case if default subId is not supported by device to reduce flakiness
if (!SubscriptionManager.isValidPhoneId(SubscriptionManager.getPhoneId(DEFAULT_SUB_ID))) {
diff --git a/tests/src/com/android/phone/NotificationMgrTest.java b/tests/src/com/android/phone/NotificationMgrTest.java
index 6d979d6..3e8cf28 100644
--- a/tests/src/com/android/phone/NotificationMgrTest.java
+++ b/tests/src/com/android/phone/NotificationMgrTest.java
@@ -62,6 +62,7 @@
import android.os.UserManager;
import android.telecom.TelecomManager;
import android.telephony.CarrierConfigManager;
+import android.telephony.NetworkRegistrationInfo;
import android.telephony.ServiceState;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
@@ -73,6 +74,8 @@
import com.android.internal.telephony.Phone;
import com.android.internal.telephony.PhoneConstants;
import com.android.internal.telephony.PhoneFactory;
+import com.android.internal.telephony.ServiceStateTracker;
+import com.android.internal.telephony.SignalStrengthController;
import com.android.internal.telephony.data.DataConfigManager;
import com.android.internal.telephony.data.DataNetworkController;
import com.android.internal.telephony.data.DataSettingsManager;
@@ -115,11 +118,13 @@
@Mock SubscriptionInfo mSubscriptionInfo;
@Mock Resources mResources;
@Mock Context mMockedContext;
+ @Mock ServiceStateTracker mServiceStateTracker;
@Mock ServiceState mServiceState;
@Mock CarrierConfigManager mCarrierConfigManager;
@Mock DataNetworkController mDataNetworkController;
@Mock DataSettingsManager mDataSettingsManager;
@Mock DataConfigManager mDataConfigManager;
+ @Mock SignalStrengthController mSignalStrengthController;
private Phone[] mPhones;
private NotificationMgr mNotificationMgr;
@@ -133,6 +138,14 @@
when(mPhone.getContext()).thenReturn(mMockedContext);
when(mMockedContext.getResources()).thenReturn(mResources);
when(mPhone.getServiceState()).thenReturn(mServiceState);
+ when(mServiceState.getNetworkRegistrationInfo(anyInt(), anyInt())).thenReturn(
+ new NetworkRegistrationInfo.Builder()
+ .setAccessNetworkTechnology(TelephonyManager.NETWORK_TYPE_LTE)
+ .setRegistrationState(NetworkRegistrationInfo.REGISTRATION_STATE_HOME)
+ .build());
+ when(mPhone.getServiceStateTracker()).thenReturn(mServiceStateTracker);
+ mServiceStateTracker.mSS = mServiceState;
+ when(mPhone.getSignalStrengthController()).thenReturn(mSignalStrengthController);
when(mPhone.getDataNetworkController()).thenReturn(mDataNetworkController);
when(mDataNetworkController.getInternetDataDisallowedReasons()).thenReturn(
Collections.emptyList());