Merge "Start using some dagger 2"
diff --git a/api/current.txt b/api/current.txt
index de4e8241..86fd650 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -41236,10 +41236,12 @@
method public android.graphics.drawable.Icon getIcon();
method public java.lang.CharSequence getLabel();
method public int getState();
+ method public java.lang.CharSequence getSubtitle();
method public void setContentDescription(java.lang.CharSequence);
method public void setIcon(android.graphics.drawable.Icon);
method public void setLabel(java.lang.CharSequence);
method public void setState(int);
+ method public void setSubtitle(java.lang.CharSequence);
method public void updateTile();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.service.quicksettings.Tile> CREATOR;
diff --git a/core/java/android/app/NotificationManager.java b/core/java/android/app/NotificationManager.java
index 306c366..606b00b 100644
--- a/core/java/android/app/NotificationManager.java
+++ b/core/java/android/app/NotificationManager.java
@@ -1838,12 +1838,17 @@
* Recover a list of active notifications: ones that have been posted by the calling app that
* have not yet been dismissed by the user or {@link #cancel(String, int)}ed by the app.
*
- * Each notification is embedded in a {@link StatusBarNotification} object, including the
+ * <p><Each notification is embedded in a {@link StatusBarNotification} object, including the
* original <code>tag</code> and <code>id</code> supplied to
* {@link #notify(String, int, Notification) notify()}
* (via {@link StatusBarNotification#getTag() getTag()} and
* {@link StatusBarNotification#getId() getId()}) as well as a copy of the original
* {@link Notification} object (via {@link StatusBarNotification#getNotification()}).
+ * </p>
+ * <p>From {@link Build.VERSION_CODES#Q}, will also return notifications you've posted as an
+ * app's notification delegate via
+ * {@link NotificationManager#notifyAsPackage(String, String, int, Notification)}.
+ * </p>
*
* @return An array of {@link StatusBarNotification}.
*/
diff --git a/core/java/android/service/quicksettings/Tile.java b/core/java/android/service/quicksettings/Tile.java
index 4b81a72..6b569cf 100644
--- a/core/java/android/service/quicksettings/Tile.java
+++ b/core/java/android/service/quicksettings/Tile.java
@@ -15,6 +15,7 @@
*/
package android.service.quicksettings;
+import android.annotation.Nullable;
import android.graphics.drawable.Icon;
import android.os.IBinder;
import android.os.Parcel;
@@ -62,6 +63,7 @@
private IBinder mToken;
private Icon mIcon;
private CharSequence mLabel;
+ private CharSequence mSubtitle;
private CharSequence mContentDescription;
// Default to active until clients of the new API can update.
private int mState = STATE_ACTIVE;
@@ -152,6 +154,22 @@
}
/**
+ * Gets the current subtitle for the tile.
+ */
+ @Nullable
+ public CharSequence getSubtitle() {
+ return mSubtitle;
+ }
+
+ /**
+ * Set the subtitle for the tile. Will be displayed as the secondary label.
+ * @param subtitle the subtitle to show.
+ */
+ public void setSubtitle(@Nullable CharSequence subtitle) {
+ this.mSubtitle = subtitle;
+ }
+
+ /**
* Gets the current content description for the tile.
*/
public CharSequence getContentDescription() {
@@ -195,6 +213,7 @@
}
dest.writeInt(mState);
TextUtils.writeToParcel(mLabel, dest, flags);
+ TextUtils.writeToParcel(mSubtitle, dest, flags);
TextUtils.writeToParcel(mContentDescription, dest, flags);
}
@@ -206,6 +225,7 @@
}
mState = source.readInt();
mLabel = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(source);
+ mSubtitle = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(source);
mContentDescription = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(source);
}
diff --git a/core/res/res/values-night/themes_permission_controller.xml b/core/res/res/values-night/themes_permission_controller.xml
index 0ad2bdc..a071927 100644
--- a/core/res/res/values-night/themes_permission_controller.xml
+++ b/core/res/res/values-night/themes_permission_controller.xml
@@ -28,8 +28,5 @@
<style name="Theme.DeviceDefault.PermissionGrant"
parent="@style/Theme.DeviceDefault.Dialog">
<item name="titleTextStyle">@style/PermissionGrantTitleMessage</item>
- <item name="radioButtonStyle">@style/PermissionGrantRadioButton</item>
- <item name="checkboxStyle">@style/PermissionGrantCheckbox</item>
- <item name="buttonBarStyle">@style/PermissionGrantButtonBar</item>
</style>
</resources>
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index dd0b1ee..3f1f9cd 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -3492,8 +3492,6 @@
<!-- Name of a font family to use for headlines. If empty, falls back to platform default -->
<string name="config_headlineFontFamily" translatable="false"></string>
- <!-- Name of a font family to use for headlines. Defaults to sans-serif-light -->
- <string name="config_headlineFontFamilyLight" translatable="false">sans-serif-light</string>
<!-- Allows setting custom fontFeatureSettings on specific text. -->
<string name="config_headlineFontFeatureSettings" translatable="false"></string>
@@ -3560,8 +3558,6 @@
<string name="config_headlineFontFamilyMedium" translateable="false">@string/font_family_button_material</string>
<!-- Name of a font family to use for body text. -->
<string name="config_bodyFontFamily" translatable="false">sans-serif</string>
- <!-- Name of a font family to use for light body text. -->
- <string name="config_bodyFontFamilyLight" translatable="false">sans-serif-light</string>
<!-- Name of a font family to use for medium body text. -->
<string name="config_bodyFontFamilyMedium" translatable="false">sans-serif-medium</string>
diff --git a/core/res/res/values/styles_permission_controller.xml b/core/res/res/values/styles_permission_controller.xml
index e6e0de3..5a9d3e6 100644
--- a/core/res/res/values/styles_permission_controller.xml
+++ b/core/res/res/values/styles_permission_controller.xml
@@ -25,15 +25,16 @@
</style>
<style name="PermissionGrantTitleIcon">
- <item name="layout_width">36dp</item>
- <item name="layout_height">36dp</item>
+ <item name="layout_width">24dp</item>
+ <item name="layout_height">24dp</item>
+ <item name="layout_marginBottom">12dp</item>
<item name="tint">?attr/colorAccent</item>
<item name="scaleType">fitCenter</item>
</style>
<style name="PermissionGrantTitleMessage"
parent="@style/TextAppearance.DeviceDefault">
- <item name="paddingStart">22dp</item>
+ <item name="gravity">center</item>
<item name="textSize">20sp</item>
<item name="textColor">?attr/textColorPrimary</item>
</style>
@@ -46,56 +47,22 @@
</style>
<style name="PermissionGrantDescription">
- <item name="layout_marginTop">20dp</item>
<item name="layout_marginStart">24dp</item>
- <item name="layout_marginBottom">16dp</item>
<item name="layout_marginEnd">24dp</item>
</style>
<style name="PermissionGrantContent">
- <item name="layout_marginStart">16dp</item>
+ <item name="layout_marginStart">24dp</item>
<item name="layout_marginEnd">24dp</item>
</style>
- <style name="PermissionGrantRadioGroup">
- <item name="layout_marginStart">8dp</item>
- <item name="layout_marginTop">-4dp</item>
- </style>
-
- <style name="PermissionGrantRadioButton"
- parent="@style/Widget.DeviceDefault.CompoundButton.RadioButton">
- <item name="paddingStart">16dp</item>
- <item name="paddingTop">8dp</item>
- <item name="paddingBottom">8dp</item>
- <item name="textSize">16sp</item>
- </style>
-
<style name="PermissionGrantDetailMessage"
parent="@style/TextAppearance.DeviceDefault">
- <item name="layout_marginStart">8dp</item>
- <item name="layout_marginBottom">4dp</item>
+ <item name="layout_marginTop">18dp</item>
<item name="textColor">?attr/textColorPrimary</item>
<item name="textSize">16sp</item>
</style>
- <style name="PermissionGrantDetailMessageSpace">
- <item name="layout_height">8dp</item>
- </style>
-
- <style name="PermissionGrantCheckbox"
- parent="@style/Widget.DeviceDefault.CompoundButton.CheckBox">
- <item name="paddingStart">16dp</item>
- <item name="textColor">?attr/textColorSecondary</item>
- <item name="buttonTint">?attr/textColorSecondary</item>
- <item name="textSize">16sp</item>
- </style>
-
- <style name="PermissionGrantButtonBar">
- <item name="layout_marginStart">24dp</item>
- <item name="layout_marginEnd">16dp</item>
- <item name="layout_marginBottom">4dp</item>
- </style>
-
<!-- styles for the permission review screen. -->
<style name="PermissionReviewDescription">
<item name="layout_marginTop">20dp</item>
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index 87fdc1f..ed9f3b1 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -1,4 +1,3 @@
-<?xml version="1.0" encoding="utf-8"?>
<!--
/* Copyright 2012, The Android Open Source Project
**
@@ -3328,7 +3327,6 @@
<java-symbol type="bool" name="config_displayBrightnessBucketsInDoze" />
<java-symbol type="integer" name="config_storageManagerDaystoRetainDefault" />
<java-symbol type="string" name="config_headlineFontFamily" />
- <java-symbol type="string" name="config_headlineFontFamilyLight" />
<java-symbol type="string" name="config_headlineFontFamilyMedium" />
<java-symbol type="drawable" name="stat_sys_vitals" />
diff --git a/core/res/res/values/themes_permission_controller.xml b/core/res/res/values/themes_permission_controller.xml
index 369cee3..205c4eb 100644
--- a/core/res/res/values/themes_permission_controller.xml
+++ b/core/res/res/values/themes_permission_controller.xml
@@ -28,9 +28,6 @@
<style name="Theme.DeviceDefault.PermissionGrant"
parent="@style/Theme.DeviceDefault.Light.Dialog">
<item name="titleTextStyle">@style/PermissionGrantTitleMessage</item>
- <item name="radioButtonStyle">@style/PermissionGrantRadioButton</item>
- <item name="checkboxStyle">@style/PermissionGrantCheckbox</item>
- <item name="buttonBarStyle">@style/PermissionGrantButtonBar</item>
</style>
<!-- themes for the permission review dialog. -->
@@ -39,6 +36,5 @@
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="titleTextStyle">@style/PermissionReviewTitleMessage</item>
- <item name="buttonBarStyle">@style/PermissionReviewButtonBar</item>
</style>
</resources>
diff --git a/core/tests/overlaytests/host/test-apps/UpdateOverlay/Android.mk b/core/tests/overlaytests/host/test-apps/UpdateOverlay/Android.mk
index 8656781..c7b2dd1 100644
--- a/core/tests/overlaytests/host/test-apps/UpdateOverlay/Android.mk
+++ b/core/tests/overlaytests/host/test-apps/UpdateOverlay/Android.mk
@@ -20,7 +20,7 @@
LOCAL_PACKAGE_NAME := OverlayHostTests_UpdateOverlay
LOCAL_SDK_VERSION := current
LOCAL_COMPATIBILITY_SUITE := general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := android-support-test
+LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules
LOCAL_USE_AAPT2 := true
LOCAL_AAPT_FLAGS := --no-resource-removal
include $(BUILD_PACKAGE)
diff --git a/core/tests/overlaytests/host/test-apps/UpdateOverlay/AndroidManifest.xml b/core/tests/overlaytests/host/test-apps/UpdateOverlay/AndroidManifest.xml
index 06077a7..8b5fe99 100644
--- a/core/tests/overlaytests/host/test-apps/UpdateOverlay/AndroidManifest.xml
+++ b/core/tests/overlaytests/host/test-apps/UpdateOverlay/AndroidManifest.xml
@@ -21,7 +21,7 @@
<uses-library android:name="android.test.runner" />
</application>
- <instrumentation android:name="android.support.test.runner.AndroidJUnitRunner"
+ <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
android:targetPackage="com.android.server.om.hosttest.update_overlay_test"
android:label="Update Overlay Test"/>
</manifest>
diff --git a/core/tests/overlaytests/host/test-apps/UpdateOverlay/src/com/android/server/om/hosttest/update_overlay_test/UpdateOverlayTest.java b/core/tests/overlaytests/host/test-apps/UpdateOverlay/src/com/android/server/om/hosttest/update_overlay_test/UpdateOverlayTest.java
index 86a8679..fef6320 100644
--- a/core/tests/overlaytests/host/test-apps/UpdateOverlay/src/com/android/server/om/hosttest/update_overlay_test/UpdateOverlayTest.java
+++ b/core/tests/overlaytests/host/test-apps/UpdateOverlay/src/com/android/server/om/hosttest/update_overlay_test/UpdateOverlayTest.java
@@ -19,9 +19,10 @@
import android.content.res.Configuration;
import android.content.res.Resources;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Before;
import org.junit.Test;
diff --git a/packages/SystemUI/res-keyguard/values/styles.xml b/packages/SystemUI/res-keyguard/values/styles.xml
index ffc7b3c..b9966cf 100644
--- a/packages/SystemUI/res-keyguard/values/styles.xml
+++ b/packages/SystemUI/res-keyguard/values/styles.xml
@@ -33,7 +33,7 @@
<item name="android:gravity">center_horizontal|center_vertical</item>
<item name="android:background">@null</item>
<item name="android:textSize">32sp</item>
- <item name="android:fontFamily">@*android:string/config_headlineFontFamilyLight</item>
+ <item name="android:fontFamily">@*android:string/config_headlineFontFamily</item>
<item name="android:textColor">?attr/wallpaperTextColor</item>
<item name="android:paddingBottom">-16dp</item>
</style>
diff --git a/packages/SystemUI/src/com/android/systemui/qs/external/CustomTile.java b/packages/SystemUI/src/com/android/systemui/qs/external/CustomTile.java
index 8906665..466c808 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/external/CustomTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/external/CustomTile.java
@@ -183,6 +183,7 @@
public void updateState(Tile tile) {
mTile.setIcon(tile.getIcon());
mTile.setLabel(tile.getLabel());
+ mTile.setSubtitle(tile.getSubtitle());
mTile.setContentDescription(tile.getContentDescription());
mTile.setState(tile.getState());
}
@@ -322,6 +323,14 @@
return null;
};
state.label = mTile.getLabel();
+
+ CharSequence subtitle = mTile.getSubtitle();
+ if (subtitle != null && subtitle.length() > 0) {
+ state.secondaryLabel = subtitle;
+ } else {
+ state.secondaryLabel = null;
+ }
+
if (mTile.getContentDescription() != null) {
state.contentDescription = mTile.getContentDescription();
} else {
diff --git a/services/backup/java/com/android/server/backup/BackupManagerService.java b/services/backup/java/com/android/server/backup/BackupManagerService.java
index a533640..fd20437 100644
--- a/services/backup/java/com/android/server/backup/BackupManagerService.java
+++ b/services/backup/java/com/android/server/backup/BackupManagerService.java
@@ -146,7 +146,7 @@
protected void startServiceForUser(int userId) {
UserBackupManagerService userBackupManagerService =
UserBackupManagerService.createAndInitializeService(
- mContext, mTrampoline, mBackupThread, mTransportWhitelist);
+ userId, mContext, mTrampoline, mBackupThread, mTransportWhitelist);
startServiceForUser(userId, userBackupManagerService);
}
diff --git a/services/backup/java/com/android/server/backup/UserBackupManagerService.java b/services/backup/java/com/android/server/backup/UserBackupManagerService.java
index 796ef40..d357404 100644
--- a/services/backup/java/com/android/server/backup/UserBackupManagerService.java
+++ b/services/backup/java/com/android/server/backup/UserBackupManagerService.java
@@ -251,6 +251,7 @@
private static final long BUSY_BACKOFF_MIN_MILLIS = 1000 * 60 * 60; // one hour
private static final int BUSY_BACKOFF_FUZZ = 1000 * 60 * 60 * 2; // two hours
+ private final @UserIdInt int mUserId;
private final BackupAgentTimeoutParameters mAgentTimeoutParameters;
private final TransportManager mTransportManager;
@@ -372,10 +373,11 @@
* Creates an instance of {@link UserBackupManagerService} and initializes state for it. This
* includes setting up the directories where we keep our bookkeeping and transport management.
*
- * @see #createAndInitializeService(Context, Trampoline, HandlerThread, File, File,
+ * @see #createAndInitializeService(int, Context, Trampoline, HandlerThread, File, File,
* TransportManager)
*/
static UserBackupManagerService createAndInitializeService(
+ @UserIdInt int userId,
Context context,
Trampoline trampoline,
HandlerThread backupThread,
@@ -399,12 +401,13 @@
File dataDir = new File(Environment.getDownloadCacheDirectory(), BACKUP_STAGING_DIR);
return createAndInitializeService(
- context, trampoline, backupThread, baseStateDir, dataDir, transportManager);
+ userId, context, trampoline, backupThread, baseStateDir, dataDir, transportManager);
}
/**
* Creates an instance of {@link UserBackupManagerService}.
*
+ * @param userId The user which this service is for.
* @param context The system server context.
* @param trampoline A reference to the proxy to {@link BackupManagerService}.
* @param backupThread The thread running backup/restore operations for the user.
@@ -415,6 +418,7 @@
*/
@VisibleForTesting
public static UserBackupManagerService createAndInitializeService(
+ @UserIdInt int userId,
Context context,
Trampoline trampoline,
HandlerThread backupThread,
@@ -422,16 +426,18 @@
File dataDir,
TransportManager transportManager) {
return new UserBackupManagerService(
- context, trampoline, backupThread, baseStateDir, dataDir, transportManager);
+ userId, context, trampoline, backupThread, baseStateDir, dataDir, transportManager);
}
private UserBackupManagerService(
+ @UserIdInt int userId,
Context context,
Trampoline parent,
HandlerThread backupThread,
File baseStateDir,
File dataDir,
TransportManager transportManager) {
+ mUserId = userId;
mContext = checkNotNull(context, "context cannot be null");
mPackageManager = context.getPackageManager();
mPackageManagerBinder = AppGlobals.getPackageManager();
diff --git a/services/core/java/com/android/server/hdmi/HdmiControlService.java b/services/core/java/com/android/server/hdmi/HdmiControlService.java
index c0d3fdf..f468c0bf 100644
--- a/services/core/java/com/android/server/hdmi/HdmiControlService.java
+++ b/services/core/java/com/android/server/hdmi/HdmiControlService.java
@@ -81,8 +81,10 @@
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
+import java.util.HashMap;
import java.util.List;
import java.util.Locale;
+import java.util.Map;
import libcore.util.EmptyArray;
/**
@@ -94,6 +96,31 @@
private final Locale HONG_KONG = new Locale("zh", "HK");
private final Locale MACAU = new Locale("zh", "MO");
+ private static final Map<String, String> mTerminologyToBibliographicMap;
+ static {
+ mTerminologyToBibliographicMap = new HashMap<>();
+ // NOTE: (TERMINOLOGY_CODE, BIBLIOGRAPHIC_CODE)
+ mTerminologyToBibliographicMap.put("sqi", "alb"); // Albanian
+ mTerminologyToBibliographicMap.put("hye", "arm"); // Armenian
+ mTerminologyToBibliographicMap.put("eus", "baq"); // Basque
+ mTerminologyToBibliographicMap.put("mya", "bur"); // Burmese
+ mTerminologyToBibliographicMap.put("ces", "cze"); // Czech
+ mTerminologyToBibliographicMap.put("nld", "dut"); // Dutch
+ mTerminologyToBibliographicMap.put("kat", "geo"); // Georgian
+ mTerminologyToBibliographicMap.put("deu", "ger"); // German
+ mTerminologyToBibliographicMap.put("ell", "gre"); // Greek
+ mTerminologyToBibliographicMap.put("fra", "fre"); // French
+ mTerminologyToBibliographicMap.put("isl", "ice"); // Icelandic
+ mTerminologyToBibliographicMap.put("mkd", "mac"); // Macedonian
+ mTerminologyToBibliographicMap.put("mri", "mao"); // Maori
+ mTerminologyToBibliographicMap.put("msa", "may"); // Malay
+ mTerminologyToBibliographicMap.put("fas", "per"); // Persian
+ mTerminologyToBibliographicMap.put("ron", "rum"); // Romanian
+ mTerminologyToBibliographicMap.put("slk", "slo"); // Slovak
+ mTerminologyToBibliographicMap.put("bod", "tib"); // Tibetan
+ mTerminologyToBibliographicMap.put("cym", "wel"); // Welsh
+ }
+
static final String PERMISSION = "android.permission.HDMI_CEC";
// The reason code to initiate initializeCec().
@@ -177,7 +204,18 @@
// Chinese used in Taiwan/Hong Kong/Macau.
return "chi";
} else {
- return locale.getISO3Language();
+ String language = locale.getISO3Language();
+
+ // locale.getISO3Language() returns terminology code and need to
+ // send it as bibliographic code instead since the Bibliographic
+ // codes of ISO/FDIS 639-2 shall be used.
+ // NOTE: Chinese also has terminology/bibliographic code "zho" and "chi"
+ // But, as it depends on the locale, is not handled here.
+ if (mTerminologyToBibliographicMap.containsKey(language)) {
+ language = mTerminologyToBibliographicMap.get(language);
+ }
+
+ return language;
}
}
}
diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java
index 405edd2..8fa3c46 100644
--- a/services/core/java/com/android/server/notification/NotificationManagerService.java
+++ b/services/core/java/com/android/server/notification/NotificationManagerService.java
@@ -2647,6 +2647,10 @@
* Note that since notification posting is done asynchronously, this will not return
* notifications that are in the process of being posted.
*
+ * From {@link Build.VERSION_CODES#Q}, will also return notifications you've posted as
+ * an app's notification delegate via
+ * {@link NotificationManager#notifyAsPackage(String, String, int, Notification)}.
+ *
* @returns A list of all the package's notifications, in natural order.
*/
@Override
@@ -2689,16 +2693,18 @@
private StatusBarNotification sanitizeSbn(String pkg, int userId,
StatusBarNotification sbn) {
- if (sbn.getPackageName().equals(pkg) && sbn.getUserId() == userId) {
- // We could pass back a cloneLight() but clients might get confused and
- // try to send this thing back to notify() again, which would not work
- // very well.
- return new StatusBarNotification(
- sbn.getPackageName(),
- sbn.getOpPkg(),
- sbn.getId(), sbn.getTag(), sbn.getUid(), sbn.getInitialPid(),
- sbn.getNotification().clone(),
- sbn.getUser(), sbn.getOverrideGroupKey(), sbn.getPostTime());
+ if (sbn.getUserId() == userId) {
+ if (sbn.getPackageName().equals(pkg) || sbn.getOpPkg().equals(pkg)) {
+ // We could pass back a cloneLight() but clients might get confused and
+ // try to send this thing back to notify() again, which would not work
+ // very well.
+ return new StatusBarNotification(
+ sbn.getPackageName(),
+ sbn.getOpPkg(),
+ sbn.getId(), sbn.getTag(), sbn.getUid(), sbn.getInitialPid(),
+ sbn.getNotification().clone(),
+ sbn.getUser(), sbn.getOverrideGroupKey(), sbn.getPostTime());
+ }
}
return null;
}
diff --git a/services/robotests/backup/src/com/android/server/backup/UserBackupManagerServiceTest.java b/services/robotests/backup/src/com/android/server/backup/UserBackupManagerServiceTest.java
index efbcb96..1e468d4 100644
--- a/services/robotests/backup/src/com/android/server/backup/UserBackupManagerServiceTest.java
+++ b/services/robotests/backup/src/com/android/server/backup/UserBackupManagerServiceTest.java
@@ -87,6 +87,7 @@
private static final String TAG = "BMSTest";
private static final String PACKAGE_1 = "some.package.1";
private static final String PACKAGE_2 = "some.package.2";
+ private static final int USER_ID = 10;
@Mock private TransportManager mTransportManager;
private HandlerThread mBackupThread;
@@ -979,6 +980,7 @@
mShadowContext.grantPermissions(android.Manifest.permission.BACKUP);
UserBackupManagerService.createAndInitializeService(
+ USER_ID,
mContext,
new Trampoline(mContext),
mBackupThread,
@@ -1000,6 +1002,7 @@
mShadowContext.grantPermissions(android.Manifest.permission.BACKUP);
UserBackupManagerService.createAndInitializeService(
+ USER_ID,
mContext,
new Trampoline(mContext),
mBackupThread,
@@ -1022,6 +1025,7 @@
NullPointerException.class,
() ->
UserBackupManagerService.createAndInitializeService(
+ USER_ID,
/* context */ null,
new Trampoline(mContext),
mBackupThread,
@@ -1041,6 +1045,7 @@
NullPointerException.class,
() ->
UserBackupManagerService.createAndInitializeService(
+ USER_ID,
mContext,
/* trampoline */ null,
mBackupThread,
@@ -1060,6 +1065,7 @@
NullPointerException.class,
() ->
UserBackupManagerService.createAndInitializeService(
+ USER_ID,
mContext,
new Trampoline(mContext),
/* backupThread */ null,
@@ -1079,6 +1085,7 @@
NullPointerException.class,
() ->
UserBackupManagerService.createAndInitializeService(
+ USER_ID,
mContext,
new Trampoline(mContext),
mBackupThread,
@@ -1089,8 +1096,8 @@
/**
* Test checking non-null argument on {@link
- * UserBackupManagerService#createAndInitializeService(Context, Trampoline, HandlerThread, File,
- * File, TransportManager)}.
+ * UserBackupManagerService#createAndInitializeService(int, Context, Trampoline, HandlerThread,
+ * File, File, TransportManager)}.
*/
@Test
public void testCreateAndInitializeService_withNullDataDir_throws() {
@@ -1098,6 +1105,7 @@
NullPointerException.class,
() ->
UserBackupManagerService.createAndInitializeService(
+ USER_ID,
mContext,
new Trampoline(mContext),
mBackupThread,
@@ -1108,8 +1116,8 @@
/**
* Test checking non-null argument on {@link
- * UserBackupManagerService#createAndInitializeService(Context, Trampoline, HandlerThread, File,
- * File, TransportManager)}.
+ * UserBackupManagerService#createAndInitializeService(int, Context, Trampoline, HandlerThread,
+ * File, File, TransportManager)}.
*/
@Test
public void testCreateAndInitializeService_withNullTransportManager_throws() {
@@ -1117,6 +1125,7 @@
NullPointerException.class,
() ->
UserBackupManagerService.createAndInitializeService(
+ USER_ID,
mContext,
new Trampoline(mContext),
mBackupThread,
@@ -1127,7 +1136,7 @@
private UserBackupManagerService createUserBackupManagerServiceAndRunTasks() {
return BackupManagerServiceTestUtils.createUserBackupManagerServiceAndRunTasks(
- mContext, mBackupThread, mBaseStateDir, mDataDir, mTransportManager);
+ USER_ID, mContext, mBackupThread, mBaseStateDir, mDataDir, mTransportManager);
}
private void setUpPowerManager(UserBackupManagerService backupManagerService) {
diff --git a/services/robotests/backup/src/com/android/server/backup/keyvalue/KeyValueBackupTaskTest.java b/services/robotests/backup/src/com/android/server/backup/keyvalue/KeyValueBackupTaskTest.java
index 099127c..cf51e19 100644
--- a/services/robotests/backup/src/com/android/server/backup/keyvalue/KeyValueBackupTaskTest.java
+++ b/services/robotests/backup/src/com/android/server/backup/keyvalue/KeyValueBackupTaskTest.java
@@ -169,6 +169,7 @@
private static final PackageData PACKAGE_2 = keyValuePackage(2);
private static final String BACKUP_AGENT_SHARED_PREFS_SYNCHRONIZER_CLASS =
"android.app.backup.BackupAgent$SharedPrefsSynchronizer";
+ private static final int USER_ID = 10;
@Mock private TransportManager mTransportManager;
@Mock private DataChangedJournal mOldJournal;
@@ -224,7 +225,7 @@
setUpBinderCallerAndApplicationAsSystem(mApplication);
mBackupManagerService =
spy(createUserBackupManagerServiceAndRunTasks(
- mContext, mBaseStateDir, mDataDir, mTransportManager));
+ USER_ID, mContext, mBaseStateDir, mDataDir, mTransportManager));
setUpBackupManagerServiceBasics(
mBackupManagerService,
mApplication,
diff --git a/services/robotests/backup/src/com/android/server/backup/testing/BackupManagerServiceTestUtils.java b/services/robotests/backup/src/com/android/server/backup/testing/BackupManagerServiceTestUtils.java
index 06f6d21..b978570 100644
--- a/services/robotests/backup/src/com/android/server/backup/testing/BackupManagerServiceTestUtils.java
+++ b/services/robotests/backup/src/com/android/server/backup/testing/BackupManagerServiceTestUtils.java
@@ -58,13 +58,17 @@
* <p>If the class-under-test is going to execute methods as the system, it's a good idea to
* also call {@link #setUpBinderCallerAndApplicationAsSystem(Application)} before this method.
*
- * @see #createUserBackupManagerServiceAndRunTasks(Context, HandlerThread, File, File,
+ * @see #createUserBackupManagerServiceAndRunTasks(int, Context, HandlerThread, File, File,
* TransportManager)
*/
public static UserBackupManagerService createUserBackupManagerServiceAndRunTasks(
- Context context, File baseStateDir, File dataDir, TransportManager transportManager) {
+ int userId,
+ Context context,
+ File baseStateDir,
+ File dataDir,
+ TransportManager transportManager) {
return createUserBackupManagerServiceAndRunTasks(
- context, startBackupThread(null), baseStateDir, dataDir, transportManager);
+ userId, context, startBackupThread(null), baseStateDir, dataDir, transportManager);
}
/**
@@ -75,6 +79,7 @@
* also call {@link #setUpBinderCallerAndApplicationAsSystem(Application)} before this method.
*/
public static UserBackupManagerService createUserBackupManagerServiceAndRunTasks(
+ int userId,
Context context,
HandlerThread backupThread,
File baseStateDir,
@@ -82,6 +87,7 @@
TransportManager transportManager) {
UserBackupManagerService backupManagerService =
UserBackupManagerService.createAndInitializeService(
+ userId,
context,
new Trampoline(context),
backupThread,