Handle null packageName in PendingIntentRecord

Bug: 27896795
Change-Id: If187e4c9cf4e5a0461f207fd8c8576bcfa559999
This commit is contained in:
Rubin Xu
2016-07-20 17:34:50 +01:00
parent 9fd8d75ebc
commit 5bf8a33aaf

View File

@@ -38,6 +38,7 @@ import com.android.server.am.ActivityStackSupervisor.ActivityContainer;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.lang.ref.WeakReference; import java.lang.ref.WeakReference;
import java.util.Objects;
final class PendingIntentRecord extends IIntentSender.Stub { final class PendingIntentRecord extends IIntentSender.Stub {
private static final String TAG = TAG_WITH_CLASS_NAME ? "PendingIntentRecord" : TAG_AM; private static final String TAG = TAG_WITH_CLASS_NAME ? "PendingIntentRecord" : TAG_AM;
@@ -102,7 +103,7 @@ final class PendingIntentRecord extends IIntentSender.Stub {
if (requestResolvedType != null) { if (requestResolvedType != null) {
hash = (ODD_PRIME_NUMBER*hash) + requestResolvedType.hashCode(); hash = (ODD_PRIME_NUMBER*hash) + requestResolvedType.hashCode();
} }
hash = (ODD_PRIME_NUMBER*hash) + _p.hashCode(); hash = (ODD_PRIME_NUMBER*hash) + (_p != null ? _p.hashCode() : 0);
hash = (ODD_PRIME_NUMBER*hash) + _t; hash = (ODD_PRIME_NUMBER*hash) + _t;
hashCode = hash; hashCode = hash;
//Slog.i(ActivityManagerService.TAG, this + " hashCode=0x" //Slog.i(ActivityManagerService.TAG, this + " hashCode=0x"
@@ -121,20 +122,14 @@ final class PendingIntentRecord extends IIntentSender.Stub {
if (userId != other.userId){ if (userId != other.userId){
return false; return false;
} }
if (!packageName.equals(other.packageName)) { if (!Objects.equals(packageName, other.packageName)) {
return false; return false;
} }
if (activity != other.activity) { if (activity != other.activity) {
return false; return false;
} }
if (who != other.who) { if (!Objects.equals(who, other.who)) {
if (who != null) { return false;
if (!who.equals(other.who)) {
return false;
}
} else if (other.who != null) {
return false;
}
} }
if (requestCode != other.requestCode) { if (requestCode != other.requestCode) {
return false; return false;
@@ -148,14 +143,8 @@ final class PendingIntentRecord extends IIntentSender.Stub {
return false; return false;
} }
} }
if (requestResolvedType != other.requestResolvedType) { if (!Objects.equals(requestResolvedType, other.requestResolvedType)) {
if (requestResolvedType != null) { return false;
if (!requestResolvedType.equals(other.requestResolvedType)) {
return false;
}
} else if (other.requestResolvedType != null) {
return false;
}
} }
if (flags != other.flags) { if (flags != other.flags) {
return false; return false;