summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--api/current.txt8
-rw-r--r--api/system-current.txt8
-rw-r--r--api/test-current.txt8
-rw-r--r--core/java/android/app/admin/DnsEvent.java18
-rw-r--r--core/java/android/content/Intent.java8
-rw-r--r--core/java/android/content/pm/InstrumentationInfo.java9
-rw-r--r--core/java/android/content/pm/PackageParser.java8
-rw-r--r--core/java/android/service/quicksettings/TileService.java18
-rw-r--r--core/res/res/values/attrs_manifest.xml4
-rw-r--r--core/res/res/values/public.xml2
-rw-r--r--libs/hwui/Android.mk2
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/external/CustomTile.java2
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/external/TileServices.java2
-rw-r--r--services/core/java/com/android/server/am/ActivityManagerService.java6
-rw-r--r--services/core/java/com/android/server/pm/InstantAppRegistry.java5
-rw-r--r--services/core/java/com/android/server/wm/AppWindowToken.java15
-rw-r--r--services/core/java/com/android/server/wm/DisplayContent.java2
-rw-r--r--services/tests/servicestests/src/com/android/server/devicepolicy/NetworkEventTest.java7
-rw-r--r--services/tests/servicestests/src/com/android/server/pm/PackageParserTest.java3
19 files changed, 78 insertions, 57 deletions
diff --git a/api/current.txt b/api/current.txt
index c8bfa47335c6..eb587df45e21 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -1296,7 +1296,7 @@ package android {
field public static final int targetId = 16843740; // 0x10103dc
field public static final int targetName = 16843853; // 0x101044d
field public static final int targetPackage = 16842785; // 0x1010021
- field public static final int targetProcess = 16844097; // 0x1010541
+ field public static final int targetProcesses = 16844097; // 0x1010541
field public static final int targetSandboxVersion = 16844110; // 0x101054e
field public static final int targetSdkVersion = 16843376; // 0x1010270
field public static final int taskAffinity = 16842770; // 0x1010012
@@ -6531,7 +6531,7 @@ package android.app.admin {
public final class DnsEvent extends android.app.admin.NetworkEvent implements android.os.Parcelable {
method public java.lang.String getHostname();
- method public java.net.InetAddress[] getInetAddresses();
+ method public java.util.List<java.net.InetAddress> getInetAddresses();
method public int getTotalResolvedAddressCount();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.app.admin.DnsEvent> CREATOR;
@@ -9496,6 +9496,7 @@ package android.content {
field public static final java.lang.String EXTRA_CHOOSER_TARGETS = "android.intent.extra.CHOOSER_TARGETS";
field public static final java.lang.String EXTRA_CHOSEN_COMPONENT = "android.intent.extra.CHOSEN_COMPONENT";
field public static final java.lang.String EXTRA_CHOSEN_COMPONENT_INTENT_SENDER = "android.intent.extra.CHOSEN_COMPONENT_INTENT_SENDER";
+ field public static final java.lang.String EXTRA_COMPONENT_NAME = "android.intent.extra.COMPONENT_NAME";
field public static final java.lang.String EXTRA_CONTENT_ANNOTATIONS = "android.intent.extra.CONTENT_ANNOTATIONS";
field public static final java.lang.String EXTRA_DATA_REMOVED = "android.intent.extra.DATA_REMOVED";
field public static final java.lang.String EXTRA_DOCK_STATE = "android.intent.extra.DOCK_STATE";
@@ -10319,7 +10320,7 @@ package android.content.pm {
field public java.lang.String[] splitPublicSourceDirs;
field public java.lang.String[] splitSourceDirs;
field public java.lang.String targetPackage;
- field public java.lang.String targetProcess;
+ field public java.lang.String targetProcesses;
}
public class LabeledIntent extends android.content.Intent {
@@ -37478,7 +37479,6 @@ package android.service.quicksettings {
method public final void unlockAndRun(java.lang.Runnable);
field public static final java.lang.String ACTION_QS_TILE = "android.service.quicksettings.action.QS_TILE";
field public static final java.lang.String ACTION_QS_TILE_PREFERENCES = "android.service.quicksettings.action.QS_TILE_PREFERENCES";
- field public static final java.lang.String EXTRA_COMPONENT = "android.service.quicksettings.extra.COMPONENT";
field public static final java.lang.String META_DATA_ACTIVE_TILE = "android.service.quicksettings.ACTIVE_TILE";
}
diff --git a/api/system-current.txt b/api/system-current.txt
index 1696bfa308d3..260780eaf7e5 100644
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -1422,7 +1422,7 @@ package android {
field public static final int targetId = 16843740; // 0x10103dc
field public static final int targetName = 16843853; // 0x101044d
field public static final int targetPackage = 16842785; // 0x1010021
- field public static final int targetProcess = 16844097; // 0x1010541
+ field public static final int targetProcesses = 16844097; // 0x1010541
field public static final int targetSandboxVersion = 16844110; // 0x101054e
field public static final int targetSdkVersion = 16843376; // 0x1010270
field public static final int taskAffinity = 16842770; // 0x1010012
@@ -6780,7 +6780,7 @@ package android.app.admin {
public final class DnsEvent extends android.app.admin.NetworkEvent implements android.os.Parcelable {
method public java.lang.String getHostname();
- method public java.net.InetAddress[] getInetAddresses();
+ method public java.util.List<java.net.InetAddress> getInetAddresses();
method public int getTotalResolvedAddressCount();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.app.admin.DnsEvent> CREATOR;
@@ -10046,6 +10046,7 @@ package android.content {
field public static final java.lang.String EXTRA_CHOOSER_TARGETS = "android.intent.extra.CHOOSER_TARGETS";
field public static final java.lang.String EXTRA_CHOSEN_COMPONENT = "android.intent.extra.CHOSEN_COMPONENT";
field public static final java.lang.String EXTRA_CHOSEN_COMPONENT_INTENT_SENDER = "android.intent.extra.CHOSEN_COMPONENT_INTENT_SENDER";
+ field public static final java.lang.String EXTRA_COMPONENT_NAME = "android.intent.extra.COMPONENT_NAME";
field public static final java.lang.String EXTRA_CONTENT_ANNOTATIONS = "android.intent.extra.CONTENT_ANNOTATIONS";
field public static final deprecated java.lang.String EXTRA_CSS_INDICATOR = "cssIndicator";
field public static final deprecated java.lang.String EXTRA_DATA_OPERATOR_ALPHA_LONG = "data-operator-alpha-long";
@@ -10980,7 +10981,7 @@ package android.content.pm {
field public java.lang.String[] splitPublicSourceDirs;
field public java.lang.String[] splitSourceDirs;
field public java.lang.String targetPackage;
- field public java.lang.String targetProcess;
+ field public java.lang.String targetProcesses;
}
public final class IntentFilterVerificationInfo implements android.os.Parcelable {
@@ -40680,7 +40681,6 @@ package android.service.quicksettings {
method public final void unlockAndRun(java.lang.Runnable);
field public static final java.lang.String ACTION_QS_TILE = "android.service.quicksettings.action.QS_TILE";
field public static final java.lang.String ACTION_QS_TILE_PREFERENCES = "android.service.quicksettings.action.QS_TILE_PREFERENCES";
- field public static final java.lang.String EXTRA_COMPONENT = "android.service.quicksettings.extra.COMPONENT";
field public static final java.lang.String META_DATA_ACTIVE_TILE = "android.service.quicksettings.ACTIVE_TILE";
}
diff --git a/api/test-current.txt b/api/test-current.txt
index a97f16592934..4f06bd68ee07 100644
--- a/api/test-current.txt
+++ b/api/test-current.txt
@@ -1296,7 +1296,7 @@ package android {
field public static final int targetId = 16843740; // 0x10103dc
field public static final int targetName = 16843853; // 0x101044d
field public static final int targetPackage = 16842785; // 0x1010021
- field public static final int targetProcess = 16844097; // 0x1010541
+ field public static final int targetProcesses = 16844097; // 0x1010541
field public static final int targetSandboxVersion = 16844110; // 0x101054e
field public static final int targetSdkVersion = 16843376; // 0x1010270
field public static final int taskAffinity = 16842770; // 0x1010012
@@ -6561,7 +6561,7 @@ package android.app.admin {
public final class DnsEvent extends android.app.admin.NetworkEvent implements android.os.Parcelable {
method public java.lang.String getHostname();
- method public java.net.InetAddress[] getInetAddresses();
+ method public java.util.List<java.net.InetAddress> getInetAddresses();
method public int getTotalResolvedAddressCount();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.app.admin.DnsEvent> CREATOR;
@@ -9530,6 +9530,7 @@ package android.content {
field public static final java.lang.String EXTRA_CHOOSER_TARGETS = "android.intent.extra.CHOOSER_TARGETS";
field public static final java.lang.String EXTRA_CHOSEN_COMPONENT = "android.intent.extra.CHOSEN_COMPONENT";
field public static final java.lang.String EXTRA_CHOSEN_COMPONENT_INTENT_SENDER = "android.intent.extra.CHOSEN_COMPONENT_INTENT_SENDER";
+ field public static final java.lang.String EXTRA_COMPONENT_NAME = "android.intent.extra.COMPONENT_NAME";
field public static final java.lang.String EXTRA_CONTENT_ANNOTATIONS = "android.intent.extra.CONTENT_ANNOTATIONS";
field public static final java.lang.String EXTRA_DATA_REMOVED = "android.intent.extra.DATA_REMOVED";
field public static final java.lang.String EXTRA_DOCK_STATE = "android.intent.extra.DOCK_STATE";
@@ -10355,7 +10356,7 @@ package android.content.pm {
field public java.lang.String[] splitPublicSourceDirs;
field public java.lang.String[] splitSourceDirs;
field public java.lang.String targetPackage;
- field public java.lang.String targetProcess;
+ field public java.lang.String targetProcesses;
}
public class LabeledIntent extends android.content.Intent {
@@ -37673,7 +37674,6 @@ package android.service.quicksettings {
method public final void unlockAndRun(java.lang.Runnable);
field public static final java.lang.String ACTION_QS_TILE = "android.service.quicksettings.action.QS_TILE";
field public static final java.lang.String ACTION_QS_TILE_PREFERENCES = "android.service.quicksettings.action.QS_TILE_PREFERENCES";
- field public static final java.lang.String EXTRA_COMPONENT = "android.service.quicksettings.extra.COMPONENT";
field public static final java.lang.String META_DATA_ACTIVE_TILE = "android.service.quicksettings.ACTIVE_TILE";
}
diff --git a/core/java/android/app/admin/DnsEvent.java b/core/java/android/app/admin/DnsEvent.java
index 87f86b5e35ea..c21725f0e86f 100644
--- a/core/java/android/app/admin/DnsEvent.java
+++ b/core/java/android/app/admin/DnsEvent.java
@@ -21,6 +21,9 @@ import android.os.Parcelable;
import java.net.InetAddress;
import java.net.UnknownHostException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
/**
* A class that represents a DNS lookup event.
@@ -62,16 +65,17 @@ public final class DnsEvent extends NetworkEvent implements Parcelable {
}
/** Returns (possibly a subset of) the IP addresses returned. */
- public InetAddress[] getInetAddresses() {
- final int length = ipAddresses != null ? ipAddresses.length : 0;
- final InetAddress[] inetAddresses = new InetAddress[length];
- for (int i = 0; i < length; i++) {
+ public List<InetAddress> getInetAddresses() {
+ if (ipAddresses == null || ipAddresses.length == 0) {
+ return Collections.emptyList();
+ }
+ final List<InetAddress> inetAddresses = new ArrayList<>(ipAddresses.length);
+ for (final String ipAddress : ipAddresses) {
try {
// ipAddress is already an address, not a host name, no DNS resolution will happen.
- inetAddresses[i] = InetAddress.getByName(ipAddresses[i]);
+ inetAddresses.add(InetAddress.getByName(ipAddress));
} catch (UnknownHostException e) {
// Should never happen as we aren't passing a host name.
- inetAddresses[i] = InetAddress.getLoopbackAddress();
}
}
return inetAddresses;
@@ -79,7 +83,7 @@ public final class DnsEvent extends NetworkEvent implements Parcelable {
/**
* Returns the number of IP addresses returned from the DNS lookup event. May be different from
- * the length of the array returned by {@link #getInetAddresses()} if there were too many
+ * the length of the list returned by {@link #getInetAddresses()} if there were too many
* addresses to log.
*/
public int getTotalResolvedAddressCount() {
diff --git a/core/java/android/content/Intent.java b/core/java/android/content/Intent.java
index d74637784c57..e013662616ed 100644
--- a/core/java/android/content/Intent.java
+++ b/core/java/android/content/Intent.java
@@ -1840,6 +1840,14 @@ public class Intent implements Parcelable, Cloneable {
public static final String EXTRA_SPLIT_NAME = "android.intent.extra.SPLIT_NAME";
/**
+ * Intent extra: A {@link ComponentName} value.
+ * <p>
+ * Type: String
+ * </p>
+ */
+ public static final String EXTRA_COMPONENT_NAME = "android.intent.extra.COMPONENT_NAME";
+
+ /**
* Intent extra: An extra for specifying whether a result is needed.
* <p>
* Type: boolean
diff --git a/core/java/android/content/pm/InstrumentationInfo.java b/core/java/android/content/pm/InstrumentationInfo.java
index f6f1be63baee..3faa9517d17a 100644
--- a/core/java/android/content/pm/InstrumentationInfo.java
+++ b/core/java/android/content/pm/InstrumentationInfo.java
@@ -19,7 +19,6 @@ package android.content.pm;
import android.os.Parcel;
import android.os.Parcelable;
import android.util.SparseArray;
-import android.util.SparseIntArray;
/**
* Information you can retrieve about a particular piece of test
@@ -38,7 +37,7 @@ public class InstrumentationInfo extends PackageItemInfo implements Parcelable {
* runs in the main process of the targetPackage. Can either be a comma-separated list
* of process names or '*' for any process that launches to run targetPackage code.
*/
- public String targetProcess;
+ public String targetProcesses;
/**
* Full path to the base APK for this application.
@@ -122,7 +121,7 @@ public class InstrumentationInfo extends PackageItemInfo implements Parcelable {
public InstrumentationInfo(InstrumentationInfo orig) {
super(orig);
targetPackage = orig.targetPackage;
- targetProcess = orig.targetProcess;
+ targetProcesses = orig.targetProcesses;
sourceDir = orig.sourceDir;
publicSourceDir = orig.publicSourceDir;
splitNames = orig.splitNames;
@@ -151,7 +150,7 @@ public class InstrumentationInfo extends PackageItemInfo implements Parcelable {
public void writeToParcel(Parcel dest, int parcelableFlags) {
super.writeToParcel(dest, parcelableFlags);
dest.writeString(targetPackage);
- dest.writeString(targetProcess);
+ dest.writeString(targetProcesses);
dest.writeString(sourceDir);
dest.writeString(publicSourceDir);
dest.writeStringArray(splitNames);
@@ -181,7 +180,7 @@ public class InstrumentationInfo extends PackageItemInfo implements Parcelable {
private InstrumentationInfo(Parcel source) {
super(source);
targetPackage = source.readString();
- targetProcess = source.readString();
+ targetProcesses = source.readString();
sourceDir = source.readString();
publicSourceDir = source.readString();
splitNames = source.readStringArray();
diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java
index a05f11b1953c..766eab9dac4d 100644
--- a/core/java/android/content/pm/PackageParser.java
+++ b/core/java/android/content/pm/PackageParser.java
@@ -3300,8 +3300,8 @@ public class PackageParser {
a.info.targetPackage = str != null ? str.intern() : null;
str = sa.getNonResourceString(
- com.android.internal.R.styleable.AndroidManifestInstrumentation_targetProcess);
- a.info.targetProcess = str != null ? str.intern() : null;
+ com.android.internal.R.styleable.AndroidManifestInstrumentation_targetProcesses);
+ a.info.targetProcesses = str != null ? str.intern() : null;
a.info.handleProfiling = sa.getBoolean(
com.android.internal.R.styleable.AndroidManifestInstrumentation_handleProfiling,
@@ -7237,8 +7237,8 @@ public class PackageParser {
info.targetPackage = info.targetPackage.intern();
}
- if (info.targetProcess != null) {
- info.targetProcess = info.targetProcess.intern();
+ if (info.targetProcesses != null) {
+ info.targetProcesses = info.targetProcesses.intern();
}
}
diff --git a/core/java/android/service/quicksettings/TileService.java b/core/java/android/service/quicksettings/TileService.java
index 56b267fb2c9d..c35423fb09c6 100644
--- a/core/java/android/service/quicksettings/TileService.java
+++ b/core/java/android/service/quicksettings/TileService.java
@@ -80,8 +80,13 @@ import com.android.internal.R;
public class TileService extends Service {
/**
- * An activity that provides a user interface for adjusting TileService preferences.
- * Optional but recommended for apps that implement a TileService.
+ * An activity that provides a user interface for adjusting TileService
+ * preferences. Optional but recommended for apps that implement a
+ * TileService.
+ * <p>
+ * This intent may also define a {@link Intent#EXTRA_COMPONENT_NAME} value
+ * to indicate the {@link ComponentName} that caused the preferences to be
+ * opened.
*/
@SdkConstant(SdkConstantType.INTENT_CATEGORY)
public static final String ACTION_QS_TILE_PREFERENCES
@@ -130,13 +135,6 @@ public class TileService extends Service {
public static final String EXTRA_TOKEN = "token";
/**
- * May be included when {@link #ACTION_QS_TILE_PREFERENCES} is launched from a tile.
- * This extra may contain the {@link ComponentName} of the tile that triggered
- * the preferences to be opened.
- */
- public static final String EXTRA_COMPONENT = "android.service.quicksettings.extra.COMPONENT";
-
- /**
* @hide
*/
public static final String EXTRA_STATE = "state";
@@ -445,7 +443,7 @@ public class TileService extends Service {
*/
public static final void requestListeningState(Context context, ComponentName component) {
Intent intent = new Intent(ACTION_REQUEST_LISTENING);
- intent.putExtra(EXTRA_COMPONENT, component);
+ intent.putExtra(Intent.EXTRA_COMPONENT_NAME, component);
intent.setPackage("com.android.systemui");
context.sendBroadcast(intent, Manifest.permission.BIND_QUICK_SETTINGS_TILE);
}
diff --git a/core/res/res/values/attrs_manifest.xml b/core/res/res/values/attrs_manifest.xml
index 95ba94209343..c88367476984 100644
--- a/core/res/res/values/attrs_manifest.xml
+++ b/core/res/res/values/attrs_manifest.xml
@@ -897,7 +897,7 @@
will run against. If not specified, only runs in the main process of the targetPackage.
Can either be a comma-separated list of process names or '*' for any process that
launches to run targetPackage code. -->
- <attr name="targetProcess" format="string" />
+ <attr name="targetProcesses" format="string" />
<!-- Flag indicating that an Instrumentation class wants to take care
of starting/stopping profiling itself, rather than relying on
@@ -2355,7 +2355,7 @@
is a period then it is appended to your package name. -->
<attr name="name" />
<attr name="targetPackage" />
- <attr name="targetProcess" />
+ <attr name="targetProcesses" />
<attr name="label" />
<attr name="icon" />
<attr name="roundIcon" />
diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml
index e13026b1360e..1fbcac247ac9 100644
--- a/core/res/res/values/public.xml
+++ b/core/res/res/values/public.xml
@@ -2778,7 +2778,7 @@
<public name="paddingVertical" />
<public name="fontStyle" />
<public name="keyboardNavigationCluster" />
- <public name="targetProcess" />
+ <public name="targetProcesses" />
<public name="nextClusterForward" />
<public name="__removed1" />
<public name="colorError" />
diff --git a/libs/hwui/Android.mk b/libs/hwui/Android.mk
index fde0e4760d61..5ef49dc5fecd 100644
--- a/libs/hwui/Android.mk
+++ b/libs/hwui/Android.mk
@@ -7,7 +7,7 @@ BUGREPORT_FONT_CACHE_USAGE := false
# Enables fine-grained GLES error checking
# If set to true, every GLES call is wrapped & error checked
# Has moderate overhead
-HWUI_ENABLE_OPENGL_VALIDATION := true
+HWUI_ENABLE_OPENGL_VALIDATION := false
hwui_src_files := \
hwui/Bitmap.cpp \
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 b5c1bd9ff9db..dc9176f66bb2 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/external/CustomTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/external/CustomTile.java
@@ -240,7 +240,7 @@ public class CustomTile extends QSTileImpl<State> implements TileChangeListener
i.setPackage(mComponent.getPackageName());
i = resolveIntent(i);
if (i != null) {
- i.putExtra(TileService.EXTRA_COMPONENT, mComponent);
+ i.putExtra(Intent.EXTRA_COMPONENT_NAME, mComponent);
i.putExtra(TileService.EXTRA_STATE, mTile.getState());
return i;
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/external/TileServices.java b/packages/SystemUI/src/com/android/systemui/qs/external/TileServices.java
index d9c3cc3fd61f..d2f3bb603077 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/external/TileServices.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/external/TileServices.java
@@ -313,7 +313,7 @@ public class TileServices extends IQSService.Stub {
public void onReceive(Context context, Intent intent) {
if (TileService.ACTION_REQUEST_LISTENING.equals(intent.getAction())) {
requestListening(
- (ComponentName) intent.getParcelableExtra(TileService.EXTRA_COMPONENT));
+ (ComponentName) intent.getParcelableExtra(Intent.EXTRA_COMPONENT_NAME));
}
}
};
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index cabaebd43e46..71ef23028651 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -19719,12 +19719,12 @@ public class ActivityManagerService extends IActivityManager.Stub
ActiveInstrumentation activeInstr = new ActiveInstrumentation(this);
activeInstr.mClass = className;
String defProcess = ai.processName;;
- if (ii.targetProcess == null) {
+ if (ii.targetProcesses == null) {
activeInstr.mTargetProcesses = new String[]{ai.processName};
- } else if (ii.targetProcess.equals("*")) {
+ } else if (ii.targetProcesses.equals("*")) {
activeInstr.mTargetProcesses = new String[0];
} else {
- activeInstr.mTargetProcesses = ii.targetProcess.split(",");
+ activeInstr.mTargetProcesses = ii.targetProcesses.split(",");
defProcess = activeInstr.mTargetProcesses[0];
}
activeInstr.mTargetInfo = ai;
diff --git a/services/core/java/com/android/server/pm/InstantAppRegistry.java b/services/core/java/com/android/server/pm/InstantAppRegistry.java
index fc9e0a3edd51..b1659841d5ac 100644
--- a/services/core/java/com/android/server/pm/InstantAppRegistry.java
+++ b/services/core/java/com/android/server/pm/InstantAppRegistry.java
@@ -218,6 +218,11 @@ class InstantAppRegistry {
byte[] randomBytes = new byte[8];
new SecureRandom().nextBytes(randomBytes);
String id = ByteStringUtils.toHexString(randomBytes).toLowerCase(Locale.US);
+ File appDir = getInstantApplicationDir(packageName, userId);
+ if (!appDir.exists() && !appDir.mkdirs()) {
+ Slog.e(LOG_TAG, "Cannot create instant app cookie directory");
+ return id;
+ }
File idFile = new File(getInstantApplicationDir(packageName, userId),
INSTANT_APP_ANDROID_ID_FILE);
try (FileOutputStream fos = new FileOutputStream(idFile)) {
diff --git a/services/core/java/com/android/server/wm/AppWindowToken.java b/services/core/java/com/android/server/wm/AppWindowToken.java
index 3c2dfa51d8f6..36418bea1940 100644
--- a/services/core/java/com/android/server/wm/AppWindowToken.java
+++ b/services/core/java/com/android/server/wm/AppWindowToken.java
@@ -893,6 +893,7 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree
if (mPendingRelaunchCount > 0) {
mPendingRelaunchCount--;
}
+ updateAllDrawn();
}
void clearRelaunching() {
@@ -1301,16 +1302,20 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree
}
}
- void updateAllDrawn(DisplayContent dc) {
+ void updateAllDrawn() {
if (!allDrawn) {
+ // Number of drawn windows can be less when a window is being relaunched, wait for
+ // all windows to be launched and drawn for this token be considered all drawn
final int numInteresting = mNumInterestingWindows;
- if (numInteresting > 0 && mNumDrawnWindows >= numInteresting) {
+ if (numInteresting > 0 && mNumDrawnWindows >= numInteresting && !isRelaunching()) {
if (DEBUG_VISIBILITY) Slog.v(TAG, "allDrawn: " + this
+ " interesting=" + numInteresting + " drawn=" + mNumDrawnWindows);
allDrawn = true;
// Force an additional layout pass where
// WindowStateAnimator#commitFinishDrawingLocked() will call performShowLocked().
- dc.setLayoutNeeded();
+ if (mDisplayContent != null) {
+ mDisplayContent.setLayoutNeeded();
+ }
mService.mH.obtainMessage(NOTIFY_ACTIVITY_DRAWN, token).sendToTarget();
final TaskStack s = getStack();
@@ -1327,7 +1332,9 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree
+ " interesting=" + numInteresting
+ " drawn=" + mNumDrawnWindowsExcludingSaved);
allDrawnExcludingSaved = true;
- dc.setLayoutNeeded();
+ if (mDisplayContent != null) {
+ mDisplayContent.setLayoutNeeded();
+ }
if (isAnimatingInvisibleWithSavedSurface()
&& !mService.mFinishedEarlyAnim.contains(this)) {
mService.mFinishedEarlyAnim.add(this);
diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java
index d85552a4d140..05b95e2659b2 100644
--- a/services/core/java/com/android/server/wm/DisplayContent.java
+++ b/services/core/java/com/android/server/wm/DisplayContent.java
@@ -2730,7 +2730,7 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo
final AppWindowToken atoken = mTmpUpdateAllDrawn.removeLast();
// See if any windows have been drawn, so they (and others associated with them)
// can now be shown.
- atoken.updateAllDrawn(this);
+ atoken.updateAllDrawn();
}
return mTmpApplySurfaceChangesTransactionState.focusDisplayed;
diff --git a/services/tests/servicestests/src/com/android/server/devicepolicy/NetworkEventTest.java b/services/tests/servicestests/src/com/android/server/devicepolicy/NetworkEventTest.java
index caa26e1e3fca..db317a0e4cca 100644
--- a/services/tests/servicestests/src/com/android/server/devicepolicy/NetworkEventTest.java
+++ b/services/tests/servicestests/src/com/android/server/devicepolicy/NetworkEventTest.java
@@ -53,9 +53,10 @@ public class NetworkEventTest extends DpmTestBase {
DnsEvent unparceledEvent = p.readParcelable(NetworkEventTest.class.getClassLoader());
p.recycle();
assertEquals(event.getHostname(), unparceledEvent.getHostname());
- assertEquals(event.getInetAddresses()[0], unparceledEvent.getInetAddresses()[0]);
- assertEquals(event.getInetAddresses()[1], unparceledEvent.getInetAddresses()[1]);
- assertEquals(event.getTotalResolvedAddressCount(), unparceledEvent.getTotalResolvedAddressCount());
+ assertEquals(event.getInetAddresses().get(0), unparceledEvent.getInetAddresses().get(0));
+ assertEquals(event.getInetAddresses().get(1), unparceledEvent.getInetAddresses().get(1));
+ assertEquals(event.getTotalResolvedAddressCount(),
+ unparceledEvent.getTotalResolvedAddressCount());
assertEquals(event.getPackageName(), unparceledEvent.getPackageName());
assertEquals(event.getTimestamp(), unparceledEvent.getTimestamp());
}
diff --git a/services/tests/servicestests/src/com/android/server/pm/PackageParserTest.java b/services/tests/servicestests/src/com/android/server/pm/PackageParserTest.java
index d8db3315d423..1284b1b5bf24 100644
--- a/services/tests/servicestests/src/com/android/server/pm/PackageParserTest.java
+++ b/services/tests/servicestests/src/com/android/server/pm/PackageParserTest.java
@@ -15,7 +15,6 @@
*/
package com.android.server.pm;
-import android.annotation.TestApi;
import android.content.pm.ActivityInfo;
import android.content.pm.ApplicationInfo;
import android.content.pm.ConfigurationInfo;
@@ -338,7 +337,7 @@ public class PackageParserTest {
// Sanity check for InstrumentationInfo.
assertEquals(a.info.targetPackage, b.info.targetPackage);
- assertEquals(a.info.targetProcess, b.info.targetProcess);
+ assertEquals(a.info.targetProcesses, b.info.targetProcesses);
assertEquals(a.info.sourceDir, b.info.sourceDir);
assertEquals(a.info.publicSourceDir, b.info.publicSourceDir);
}