Add additional logging around foreground/permitted

Additional logging only applies to debug builds.

Bug: 184924939
Test: manual
Change-Id: If7f4e7703974191993cff57c4103c84a4bb98960
This commit is contained in:
Soonil Nagarkar
2021-05-06 08:40:49 -07:00
parent d6e2ea07a9
commit 857709a8b8
2 changed files with 98 additions and 17 deletions

View File

@@ -58,13 +58,17 @@ public class LocationEventLog extends LocalEventLog {
private static final int EVENT_LOCATION_ENABLED = 2;
private static final int EVENT_PROVIDER_ENABLED = 3;
private static final int EVENT_PROVIDER_MOCKED = 4;
private static final int EVENT_PROVIDER_REGISTER_CLIENT = 5;
private static final int EVENT_PROVIDER_UNREGISTER_CLIENT = 6;
private static final int EVENT_PROVIDER_UPDATE_REQUEST = 7;
private static final int EVENT_PROVIDER_RECEIVE_LOCATION = 8;
private static final int EVENT_PROVIDER_DELIVER_LOCATION = 9;
private static final int EVENT_PROVIDER_STATIONARY_THROTTLED = 10;
private static final int EVENT_LOCATION_POWER_SAVE_MODE_CHANGE = 11;
private static final int EVENT_PROVIDER_CLIENT_REGISTER = 5;
private static final int EVENT_PROVIDER_CLIENT_UNREGISTER = 6;
private static final int EVENT_PROVIDER_CLIENT_FOREGROUND = 7;
private static final int EVENT_PROVIDER_CLIENT_BACKGROUND = 8;
private static final int EVENT_PROVIDER_CLIENT_PERMITTED = 9;
private static final int EVENT_PROVIDER_CLIENT_UNPERMITTED = 10;
private static final int EVENT_PROVIDER_UPDATE_REQUEST = 11;
private static final int EVENT_PROVIDER_RECEIVE_LOCATION = 12;
private static final int EVENT_PROVIDER_DELIVER_LOCATION = 13;
private static final int EVENT_PROVIDER_STATIONARY_THROTTLED = 14;
private static final int EVENT_LOCATION_POWER_SAVE_MODE_CHANGE = 15;
@GuardedBy("mAggregateStats")
private final ArrayMap<String, ArrayMap<CallerIdentity, AggregateStats>> mAggregateStats;
@@ -126,13 +130,13 @@ public class LocationEventLog extends LocalEventLog {
/** Logs a new client registration for a location provider. */
public void logProviderClientRegistered(String provider, CallerIdentity identity,
LocationRequest request) {
addLogEvent(EVENT_PROVIDER_REGISTER_CLIENT, provider, identity, request);
addLogEvent(EVENT_PROVIDER_CLIENT_REGISTER, provider, identity, request);
getAggregateStats(provider, identity).markRequestAdded(request.getIntervalMillis());
}
/** Logs a client unregistration for a location provider. */
public void logProviderClientUnregistered(String provider, CallerIdentity identity) {
addLogEvent(EVENT_PROVIDER_UNREGISTER_CLIENT, provider, identity);
addLogEvent(EVENT_PROVIDER_CLIENT_UNREGISTER, provider, identity);
getAggregateStats(provider, identity).markRequestRemoved();
}
@@ -148,14 +152,34 @@ public class LocationEventLog extends LocalEventLog {
/** Logs a client for a location provider entering the foreground state. */
public void logProviderClientForeground(String provider, CallerIdentity identity) {
if (Build.IS_DEBUGGABLE || D) {
addLogEvent(EVENT_PROVIDER_CLIENT_FOREGROUND, provider, identity);
}
getAggregateStats(provider, identity).markRequestForeground();
}
/** Logs a client for a location provider leaving the foreground state. */
public void logProviderClientBackground(String provider, CallerIdentity identity) {
if (Build.IS_DEBUGGABLE || D) {
addLogEvent(EVENT_PROVIDER_CLIENT_BACKGROUND, provider, identity);
}
getAggregateStats(provider, identity).markRequestBackground();
}
/** Logs a client for a location provider entering the permitted state. */
public void logProviderClientPermitted(String provider, CallerIdentity identity) {
if (Build.IS_DEBUGGABLE || D) {
addLogEvent(EVENT_PROVIDER_CLIENT_PERMITTED, provider, identity);
}
}
/** Logs a client for a location provider leaving the permitted state. */
public void logProviderClientUnpermitted(String provider, CallerIdentity identity) {
if (Build.IS_DEBUGGABLE || D) {
addLogEvent(EVENT_PROVIDER_CLIENT_UNPERMITTED, provider, identity);
}
}
/** Logs a change to the provider request for a location provider. */
public void logProviderUpdateRequest(String provider, ProviderRequest request) {
addLogEvent(EVENT_PROVIDER_UPDATE_REQUEST, provider, request);
@@ -201,12 +225,24 @@ public class LocationEventLog extends LocalEventLog {
(Boolean) args[2]);
case EVENT_PROVIDER_MOCKED:
return new ProviderMockedEvent(timeDelta, (String) args[0], (Boolean) args[1]);
case EVENT_PROVIDER_REGISTER_CLIENT:
return new ProviderRegisterEvent(timeDelta, (String) args[0], true,
case EVENT_PROVIDER_CLIENT_REGISTER:
return new ProviderClientRegisterEvent(timeDelta, (String) args[0], true,
(CallerIdentity) args[1], (LocationRequest) args[2]);
case EVENT_PROVIDER_UNREGISTER_CLIENT:
return new ProviderRegisterEvent(timeDelta, (String) args[0], false,
case EVENT_PROVIDER_CLIENT_UNREGISTER:
return new ProviderClientRegisterEvent(timeDelta, (String) args[0], false,
(CallerIdentity) args[1], null);
case EVENT_PROVIDER_CLIENT_FOREGROUND:
return new ProviderClientForegroundEvent(timeDelta, (String) args[0], true,
(CallerIdentity) args[1]);
case EVENT_PROVIDER_CLIENT_BACKGROUND:
return new ProviderClientForegroundEvent(timeDelta, (String) args[0], false,
(CallerIdentity) args[1]);
case EVENT_PROVIDER_CLIENT_PERMITTED:
return new ProviderClientPermittedEvent(timeDelta, (String) args[0], true,
(CallerIdentity) args[1]);
case EVENT_PROVIDER_CLIENT_UNPERMITTED:
return new ProviderClientPermittedEvent(timeDelta, (String) args[0], false,
(CallerIdentity) args[1]);
case EVENT_PROVIDER_UPDATE_REQUEST:
return new ProviderUpdateEvent(timeDelta, (String) args[0],
(ProviderRequest) args[1]);
@@ -279,13 +315,13 @@ public class LocationEventLog extends LocalEventLog {
}
}
private static final class ProviderRegisterEvent extends ProviderEvent {
private static final class ProviderClientRegisterEvent extends ProviderEvent {
private final boolean mRegistered;
private final CallerIdentity mIdentity;
@Nullable private final LocationRequest mLocationRequest;
ProviderRegisterEvent(long timeDelta, String provider, boolean registered,
ProviderClientRegisterEvent(long timeDelta, String provider, boolean registered,
CallerIdentity identity, @Nullable LocationRequest locationRequest) {
super(timeDelta, provider);
mRegistered = registered;
@@ -296,14 +332,52 @@ public class LocationEventLog extends LocalEventLog {
@Override
public String getLogString() {
if (mRegistered) {
return mProvider + " provider " + "+registration " + mIdentity + " -> "
return mProvider + " provider +registration " + mIdentity + " -> "
+ mLocationRequest;
} else {
return mProvider + " provider " + "-registration " + mIdentity;
return mProvider + " provider -registration " + mIdentity;
}
}
}
private static final class ProviderClientForegroundEvent extends ProviderEvent {
private final boolean mForeground;
private final CallerIdentity mIdentity;
ProviderClientForegroundEvent(long timeDelta, String provider, boolean foreground,
CallerIdentity identity) {
super(timeDelta, provider);
mForeground = foreground;
mIdentity = identity;
}
@Override
public String getLogString() {
return mProvider + " provider client " + mIdentity + " -> "
+ (mForeground ? "foreground" : "background");
}
}
private static final class ProviderClientPermittedEvent extends ProviderEvent {
private final boolean mPermitted;
private final CallerIdentity mIdentity;
ProviderClientPermittedEvent(long timeDelta, String provider, boolean permitted,
CallerIdentity identity) {
super(timeDelta, provider);
mPermitted = permitted;
mIdentity = identity;
}
@Override
public String getLogString() {
return mProvider + " provider client " + mIdentity + " -> "
+ (mPermitted ? "permitted" : "unpermitted");
}
}
private static final class ProviderUpdateEvent extends ProviderEvent {
private final ProviderRequest mRequest;

View File

@@ -523,6 +523,13 @@ public class LocationProviderManager extends
}
mPermitted = permitted;
if (mForeground) {
EVENT_LOG.logProviderClientPermitted(mName, getIdentity());
} else {
EVENT_LOG.logProviderClientUnpermitted(mName, getIdentity());
}
return true;
}