Loading api/test-current.txt +0 −2 Original line number Diff line number Diff line Loading @@ -32047,12 +32047,10 @@ package android.os { public static final class StrictMode.ViolationInfo implements android.os.Parcelable { ctor public StrictMode.ViolationInfo(); ctor public StrictMode.ViolationInfo(java.lang.Throwable, int); ctor public deprecated StrictMode.ViolationInfo(java.lang.String, java.lang.Throwable, int); ctor public StrictMode.ViolationInfo(android.os.Parcel); ctor public StrictMode.ViolationInfo(android.os.Parcel, boolean); method public int describeContents(); method public void dump(android.util.Printer, java.lang.String); method public java.lang.String getMessagePrefix(); method public java.lang.String getStackTrace(); method public java.lang.String getViolationDetails(); method public void writeToParcel(android.os.Parcel, int); core/java/android/os/StrictMode.java +23 −50 Original line number Diff line number Diff line Loading @@ -1648,7 +1648,7 @@ public final class StrictMode { private static class AndroidCloseGuardReporter implements CloseGuard.Reporter { public void report(String message, Throwable allocationSite) { onVmPolicyViolation(message, allocationSite); onVmPolicyViolation(allocationSite); } } Loading Loading @@ -1687,7 +1687,7 @@ public final class StrictMode { long instances = instanceCounts[i]; if (instances > limit) { Throwable tr = new InstanceCountViolation(klass, instances, limit); onVmPolicyViolation(tr.getMessage(), tr); onVmPolicyViolation(tr); } } } Loading Loading @@ -1811,22 +1811,24 @@ public final class StrictMode { /** @hide */ public static void onSqliteObjectLeaked(String message, Throwable originStack) { onVmPolicyViolation(message, originStack); Throwable t = new Throwable(message); t.setStackTrace(originStack.getStackTrace()); onVmPolicyViolation(t); } /** @hide */ public static void onWebViewMethodCalledOnWrongThread(Throwable originStack) { onVmPolicyViolation(null, originStack); onVmPolicyViolation(originStack); } /** @hide */ public static void onIntentReceiverLeaked(Throwable originStack) { onVmPolicyViolation(null, originStack); onVmPolicyViolation(originStack); } /** @hide */ public static void onServiceConnectionLeaked(Throwable originStack) { onVmPolicyViolation(null, originStack); onVmPolicyViolation(originStack); } /** @hide */ Loading @@ -1835,7 +1837,7 @@ public final class StrictMode { if ((sVmPolicy.mask & PENALTY_DEATH_ON_FILE_URI_EXPOSURE) != 0) { throw new FileUriExposedException(message); } else { onVmPolicyViolation(null, new Throwable(message)); onVmPolicyViolation(new Throwable(message)); } } Loading @@ -1847,7 +1849,7 @@ public final class StrictMode { + location + " without permission grant flags; did you forget" + " FLAG_GRANT_READ_URI_PERMISSION?"; onVmPolicyViolation(null, new Throwable(message)); onVmPolicyViolation(new Throwable(message)); } /** @hide */ Loading Loading @@ -1877,10 +1879,9 @@ public final class StrictMode { } catch (UnknownHostException ignored) { } } msg += HexDump.dumpHexString(firstPacket).trim() + " "; final boolean forceDeath = (sVmPolicy.mask & PENALTY_DEATH_ON_CLEARTEXT_NETWORK) != 0; onVmPolicyViolation( HexDump.dumpHexString(firstPacket).trim(), new Throwable(msg), forceDeath); onVmPolicyViolation(new Throwable(msg), forceDeath); } /** @hide */ Loading @@ -1890,24 +1891,23 @@ public final class StrictMode { /** @hide */ public static void onUntaggedSocket() { onVmPolicyViolation(null, new Throwable(UNTAGGED_SOCKET_VIOLATION_MESSAGE)); onVmPolicyViolation(new Throwable(UNTAGGED_SOCKET_VIOLATION_MESSAGE)); } // Map from VM violation fingerprint to uptime millis. private static final HashMap<Integer, Long> sLastVmViolationTime = new HashMap<Integer, Long>(); /** @hide */ public static void onVmPolicyViolation(String message, Throwable originStack) { onVmPolicyViolation(message, originStack, false); public static void onVmPolicyViolation(Throwable originStack) { onVmPolicyViolation(originStack, false); } /** @hide */ public static void onVmPolicyViolation( String message, Throwable originStack, boolean forceDeath) { public static void onVmPolicyViolation(Throwable originStack, boolean forceDeath) { final boolean penaltyDropbox = (sVmPolicy.mask & PENALTY_DROPBOX) != 0; final boolean penaltyDeath = ((sVmPolicy.mask & PENALTY_DEATH) != 0) || forceDeath; final boolean penaltyLog = (sVmPolicy.mask & PENALTY_LOG) != 0; final ViolationInfo info = new ViolationInfo(message, originStack, sVmPolicy.mask); final ViolationInfo info = new ViolationInfo(originStack, sVmPolicy.mask); // Erase stuff not relevant for process-wide violations info.numAnimationsRunning = 0; Loading Loading @@ -2225,7 +2225,7 @@ public final class StrictMode { // StrictMode not enabled. return; } ((AndroidBlockGuardPolicy) policy).onUnbufferedIO(); policy.onUnbufferedIO(); } /** @hide */ Loading @@ -2235,7 +2235,7 @@ public final class StrictMode { // StrictMode not enabled. return; } ((AndroidBlockGuardPolicy) policy).onReadFromDisk(); policy.onReadFromDisk(); } /** @hide */ Loading @@ -2245,7 +2245,7 @@ public final class StrictMode { // StrictMode not enabled. return; } ((AndroidBlockGuardPolicy) policy).onWriteToDisk(); policy.onWriteToDisk(); } @GuardedBy("StrictMode.class") Loading Loading @@ -2324,7 +2324,7 @@ public final class StrictMode { long instances = VMDebug.countInstancesOfClass(klass, false); if (instances > limit) { Throwable tr = new InstanceCountViolation(klass, instances, limit); onVmPolicyViolation(tr.getMessage(), tr); onVmPolicyViolation(tr); } } Loading @@ -2336,9 +2336,6 @@ public final class StrictMode { */ @TestApi public static final class ViolationInfo implements Parcelable { /** Some VM violations provide additional information outside the throwable. */ @Nullable private final String mMessagePrefix; /** Stack and violation details. */ @Nullable private final Throwable mThrowable; Loading Loading @@ -2382,24 +2379,12 @@ public final class StrictMode { /** Create an uninitialized instance of ViolationInfo */ public ViolationInfo() { mMessagePrefix = null; mThrowable = null; policy = 0; } /** Create an instance of ViolationInfo. */ /** Create an instance of ViolationInfo initialized from an exception. */ public ViolationInfo(Throwable tr, int policy) { this(null, tr, policy); } /** * Create an instance of ViolationInfo initialized from an exception with a message prefix. * * @deprecated prefixes belong in the Throwable. */ @Deprecated public ViolationInfo(String messagePrefix, Throwable tr, int policy) { this.mMessagePrefix = messagePrefix; this.mThrowable = tr; violationUptimeMillis = SystemClock.uptimeMillis(); this.policy = policy; Loading Loading @@ -2462,17 +2447,7 @@ public final class StrictMode { } /** * A handful of VM violations provide extra information that should be presented before * {@link #getViolationDetails()}. * * @hide */ @TestApi public String getMessagePrefix() { return mMessagePrefix != null ? mMessagePrefix : ""; } /** If this violation has a useful stack trace. * If this violation has a useful stack trace. * * @hide */ Loading Loading @@ -2552,7 +2527,6 @@ public final class StrictMode { * should be removed. */ public ViolationInfo(Parcel in, boolean unsetGatheringBit) { mMessagePrefix = in.readString(); mThrowable = (Throwable) in.readSerializable(); int binderStackSize = in.readInt(); for (int i = 0; i < binderStackSize; i++) { Loading @@ -2576,7 +2550,6 @@ public final class StrictMode { /** Save a ViolationInfo instance to a parcel. */ @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(mMessagePrefix); dest.writeSerializable(mThrowable); dest.writeInt(mBinderStack.size()); for (Throwable t : mBinderStack) { Loading Loading
api/test-current.txt +0 −2 Original line number Diff line number Diff line Loading @@ -32047,12 +32047,10 @@ package android.os { public static final class StrictMode.ViolationInfo implements android.os.Parcelable { ctor public StrictMode.ViolationInfo(); ctor public StrictMode.ViolationInfo(java.lang.Throwable, int); ctor public deprecated StrictMode.ViolationInfo(java.lang.String, java.lang.Throwable, int); ctor public StrictMode.ViolationInfo(android.os.Parcel); ctor public StrictMode.ViolationInfo(android.os.Parcel, boolean); method public int describeContents(); method public void dump(android.util.Printer, java.lang.String); method public java.lang.String getMessagePrefix(); method public java.lang.String getStackTrace(); method public java.lang.String getViolationDetails(); method public void writeToParcel(android.os.Parcel, int);
core/java/android/os/StrictMode.java +23 −50 Original line number Diff line number Diff line Loading @@ -1648,7 +1648,7 @@ public final class StrictMode { private static class AndroidCloseGuardReporter implements CloseGuard.Reporter { public void report(String message, Throwable allocationSite) { onVmPolicyViolation(message, allocationSite); onVmPolicyViolation(allocationSite); } } Loading Loading @@ -1687,7 +1687,7 @@ public final class StrictMode { long instances = instanceCounts[i]; if (instances > limit) { Throwable tr = new InstanceCountViolation(klass, instances, limit); onVmPolicyViolation(tr.getMessage(), tr); onVmPolicyViolation(tr); } } } Loading Loading @@ -1811,22 +1811,24 @@ public final class StrictMode { /** @hide */ public static void onSqliteObjectLeaked(String message, Throwable originStack) { onVmPolicyViolation(message, originStack); Throwable t = new Throwable(message); t.setStackTrace(originStack.getStackTrace()); onVmPolicyViolation(t); } /** @hide */ public static void onWebViewMethodCalledOnWrongThread(Throwable originStack) { onVmPolicyViolation(null, originStack); onVmPolicyViolation(originStack); } /** @hide */ public static void onIntentReceiverLeaked(Throwable originStack) { onVmPolicyViolation(null, originStack); onVmPolicyViolation(originStack); } /** @hide */ public static void onServiceConnectionLeaked(Throwable originStack) { onVmPolicyViolation(null, originStack); onVmPolicyViolation(originStack); } /** @hide */ Loading @@ -1835,7 +1837,7 @@ public final class StrictMode { if ((sVmPolicy.mask & PENALTY_DEATH_ON_FILE_URI_EXPOSURE) != 0) { throw new FileUriExposedException(message); } else { onVmPolicyViolation(null, new Throwable(message)); onVmPolicyViolation(new Throwable(message)); } } Loading @@ -1847,7 +1849,7 @@ public final class StrictMode { + location + " without permission grant flags; did you forget" + " FLAG_GRANT_READ_URI_PERMISSION?"; onVmPolicyViolation(null, new Throwable(message)); onVmPolicyViolation(new Throwable(message)); } /** @hide */ Loading Loading @@ -1877,10 +1879,9 @@ public final class StrictMode { } catch (UnknownHostException ignored) { } } msg += HexDump.dumpHexString(firstPacket).trim() + " "; final boolean forceDeath = (sVmPolicy.mask & PENALTY_DEATH_ON_CLEARTEXT_NETWORK) != 0; onVmPolicyViolation( HexDump.dumpHexString(firstPacket).trim(), new Throwable(msg), forceDeath); onVmPolicyViolation(new Throwable(msg), forceDeath); } /** @hide */ Loading @@ -1890,24 +1891,23 @@ public final class StrictMode { /** @hide */ public static void onUntaggedSocket() { onVmPolicyViolation(null, new Throwable(UNTAGGED_SOCKET_VIOLATION_MESSAGE)); onVmPolicyViolation(new Throwable(UNTAGGED_SOCKET_VIOLATION_MESSAGE)); } // Map from VM violation fingerprint to uptime millis. private static final HashMap<Integer, Long> sLastVmViolationTime = new HashMap<Integer, Long>(); /** @hide */ public static void onVmPolicyViolation(String message, Throwable originStack) { onVmPolicyViolation(message, originStack, false); public static void onVmPolicyViolation(Throwable originStack) { onVmPolicyViolation(originStack, false); } /** @hide */ public static void onVmPolicyViolation( String message, Throwable originStack, boolean forceDeath) { public static void onVmPolicyViolation(Throwable originStack, boolean forceDeath) { final boolean penaltyDropbox = (sVmPolicy.mask & PENALTY_DROPBOX) != 0; final boolean penaltyDeath = ((sVmPolicy.mask & PENALTY_DEATH) != 0) || forceDeath; final boolean penaltyLog = (sVmPolicy.mask & PENALTY_LOG) != 0; final ViolationInfo info = new ViolationInfo(message, originStack, sVmPolicy.mask); final ViolationInfo info = new ViolationInfo(originStack, sVmPolicy.mask); // Erase stuff not relevant for process-wide violations info.numAnimationsRunning = 0; Loading Loading @@ -2225,7 +2225,7 @@ public final class StrictMode { // StrictMode not enabled. return; } ((AndroidBlockGuardPolicy) policy).onUnbufferedIO(); policy.onUnbufferedIO(); } /** @hide */ Loading @@ -2235,7 +2235,7 @@ public final class StrictMode { // StrictMode not enabled. return; } ((AndroidBlockGuardPolicy) policy).onReadFromDisk(); policy.onReadFromDisk(); } /** @hide */ Loading @@ -2245,7 +2245,7 @@ public final class StrictMode { // StrictMode not enabled. return; } ((AndroidBlockGuardPolicy) policy).onWriteToDisk(); policy.onWriteToDisk(); } @GuardedBy("StrictMode.class") Loading Loading @@ -2324,7 +2324,7 @@ public final class StrictMode { long instances = VMDebug.countInstancesOfClass(klass, false); if (instances > limit) { Throwable tr = new InstanceCountViolation(klass, instances, limit); onVmPolicyViolation(tr.getMessage(), tr); onVmPolicyViolation(tr); } } Loading @@ -2336,9 +2336,6 @@ public final class StrictMode { */ @TestApi public static final class ViolationInfo implements Parcelable { /** Some VM violations provide additional information outside the throwable. */ @Nullable private final String mMessagePrefix; /** Stack and violation details. */ @Nullable private final Throwable mThrowable; Loading Loading @@ -2382,24 +2379,12 @@ public final class StrictMode { /** Create an uninitialized instance of ViolationInfo */ public ViolationInfo() { mMessagePrefix = null; mThrowable = null; policy = 0; } /** Create an instance of ViolationInfo. */ /** Create an instance of ViolationInfo initialized from an exception. */ public ViolationInfo(Throwable tr, int policy) { this(null, tr, policy); } /** * Create an instance of ViolationInfo initialized from an exception with a message prefix. * * @deprecated prefixes belong in the Throwable. */ @Deprecated public ViolationInfo(String messagePrefix, Throwable tr, int policy) { this.mMessagePrefix = messagePrefix; this.mThrowable = tr; violationUptimeMillis = SystemClock.uptimeMillis(); this.policy = policy; Loading Loading @@ -2462,17 +2447,7 @@ public final class StrictMode { } /** * A handful of VM violations provide extra information that should be presented before * {@link #getViolationDetails()}. * * @hide */ @TestApi public String getMessagePrefix() { return mMessagePrefix != null ? mMessagePrefix : ""; } /** If this violation has a useful stack trace. * If this violation has a useful stack trace. * * @hide */ Loading Loading @@ -2552,7 +2527,6 @@ public final class StrictMode { * should be removed. */ public ViolationInfo(Parcel in, boolean unsetGatheringBit) { mMessagePrefix = in.readString(); mThrowable = (Throwable) in.readSerializable(); int binderStackSize = in.readInt(); for (int i = 0; i < binderStackSize; i++) { Loading @@ -2576,7 +2550,6 @@ public final class StrictMode { /** Save a ViolationInfo instance to a parcel. */ @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(mMessagePrefix); dest.writeSerializable(mThrowable); dest.writeInt(mBinderStack.size()); for (Throwable t : mBinderStack) { Loading