Merge "Thermal shutdown fix: cool down on writing to disk" into pi-dev
diff --git a/core/java/android/app/IActivityManager.aidl b/core/java/android/app/IActivityManager.aidl
index 569c2bd..b192021 100644
--- a/core/java/android/app/IActivityManager.aidl
+++ b/core/java/android/app/IActivityManager.aidl
@@ -121,7 +121,7 @@
oneway void activityIdle(in IBinder token, in Configuration config,
in boolean stopProfiling);
void activityPaused(in IBinder token);
- oneway void activityStopped(in IBinder token, in Bundle state,
+ void activityStopped(in IBinder token, in Bundle state,
in PersistableBundle persistentState, in CharSequence description);
String getCallingPackage(in IBinder token);
ComponentName getCallingActivity(in IBinder token);
diff --git a/proto/src/wifi.proto b/proto/src/wifi.proto
index bde6030..927e74a 100644
--- a/proto/src/wifi.proto
+++ b/proto/src/wifi.proto
@@ -784,6 +784,12 @@
// Framework changed Sta interface MAC address
TYPE_MAC_CHANGE = 17;
+
+ // Wifi is turned on
+ TYPE_WIFI_ENABLED = 18;
+
+ // Wifi is turned off
+ TYPE_WIFI_DISABLED = 19;
}
enum FrameworkDisconnectReason {
diff --git a/services/core/java/com/android/server/am/ActivityMetricsLogger.java b/services/core/java/com/android/server/am/ActivityMetricsLogger.java
index 552a162..5cbd8fd 100644
--- a/services/core/java/com/android/server/am/ActivityMetricsLogger.java
+++ b/services/core/java/com/android/server/am/ActivityMetricsLogger.java
@@ -372,7 +372,7 @@
return;
}
- if (launchedActivity != null && launchedActivity.nowVisible) {
+ if (launchedActivity != null && launchedActivity.drawn) {
// Launched activity is already visible. We cannot measure windows drawn delay.
reset(true /* abort */, info);
return;
diff --git a/services/core/java/com/android/server/am/ActivityRecord.java b/services/core/java/com/android/server/am/ActivityRecord.java
index 1d7e00e..97ae377 100644
--- a/services/core/java/com/android/server/am/ActivityRecord.java
+++ b/services/core/java/com/android/server/am/ActivityRecord.java
@@ -308,6 +308,7 @@
// process that it is hidden.
boolean sleeping; // have we told the activity to sleep?
boolean nowVisible; // is this activity's window visible?
+ boolean drawn; // is this activity's window drawn?
boolean mClientVisibilityDeferred;// was the visibility change message to client deferred?
boolean idle; // has the activity gone idle?
boolean hasBeenLaunched;// has this activity ever been launched?
@@ -871,6 +872,7 @@
inHistory = false;
visible = false;
nowVisible = false;
+ drawn = false;
idle = false;
hasBeenLaunched = false;
mStackSupervisor = supervisor;
@@ -1999,6 +2001,7 @@
@Override
public void onWindowsDrawn(long timestamp) {
synchronized (service) {
+ drawn = true;
final WindowingModeTransitionInfoSnapshot info = mStackSupervisor
.getActivityMetricsLogger().notifyWindowsDrawn(getWindowingMode(), timestamp);
final int windowsDrawnDelayMs = info != null ? info.windowsDrawnDelayMs : INVALID_DELAY;
@@ -2013,6 +2016,13 @@
}
@Override
+ public void onWindowsNotDrawn(long timestamp) {
+ synchronized (service) {
+ drawn = false;
+ }
+ }
+
+ @Override
public void onWindowsVisible() {
synchronized (service) {
mStackSupervisor.reportActivityVisibleLocked(this);
diff --git a/services/core/java/com/android/server/stats/StatsCompanionService.java b/services/core/java/com/android/server/stats/StatsCompanionService.java
index d683dbd..bf349ef 100644
--- a/services/core/java/com/android/server/stats/StatsCompanionService.java
+++ b/services/core/java/com/android/server/stats/StatsCompanionService.java
@@ -1208,7 +1208,10 @@
private static final class ThermalEventListener extends IThermalEventListener.Stub {
@Override public void notifyThrottling(boolean isThrottling, Temperature temp) {
StatsLog.write(StatsLog.THERMAL_THROTTLING, temp.getType(),
- isThrottling ? 1 : 0, temp.getValue());
+ isThrottling ?
+ StatsLog.THERMAL_THROTTLING_STATE_CHANGED__STATE__START :
+ StatsLog.THERMAL_THROTTLING_STATE_CHANGED__STATE__STOP,
+ temp.getValue());
}
}
}
diff --git a/services/core/java/com/android/server/wm/AppWindowContainerController.java b/services/core/java/com/android/server/wm/AppWindowContainerController.java
index 4f15c5d..2e29931 100644
--- a/services/core/java/com/android/server/wm/AppWindowContainerController.java
+++ b/services/core/java/com/android/server/wm/AppWindowContainerController.java
@@ -18,9 +18,9 @@
import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED;
import static android.view.WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER;
-
import static android.view.WindowManager.TRANSIT_DOCK_TASK_FROM_RECENTS;
import static android.view.WindowManager.TRANSIT_UNSET;
+
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_ADD_REMOVE;
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_APP_TRANSITIONS;
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_ORIENTATION;
@@ -65,6 +65,7 @@
private final class H extends Handler {
public static final int NOTIFY_WINDOWS_DRAWN = 1;
public static final int NOTIFY_STARTING_WINDOW_DRAWN = 2;
+ public static final int NOTIFY_WINDOWS_NOTDRAWN = 3;
public H(Looper looper) {
super(looper);
@@ -85,10 +86,18 @@
if (mListener == null) {
return;
}
- if (DEBUG_VISIBILITY) Slog.v(TAG_WM, "Reporting drawn in "
+ if (DEBUG_VISIBILITY) Slog.v(TAG_WM, "Reporting starting window drawn in "
+ AppWindowContainerController.this.mToken);
mListener.onStartingWindowDrawn(msg.getWhen());
break;
+ case NOTIFY_WINDOWS_NOTDRAWN:
+ if (mListener == null) {
+ return;
+ }
+ if (DEBUG_VISIBILITY) Slog.v(TAG_WM, "Reporting undrawn in "
+ + AppWindowContainerController.this.mToken);
+ mListener.onWindowsNotDrawn(msg.getWhen());
+ break;
default:
break;
}
@@ -740,6 +749,10 @@
mHandler.sendMessage(mHandler.obtainMessage(H.NOTIFY_WINDOWS_DRAWN));
}
+ void reportWindowsNotDrawn() {
+ mHandler.sendMessage(mHandler.obtainMessage(H.NOTIFY_WINDOWS_NOTDRAWN));
+ }
+
void reportWindowsVisible() {
mHandler.post(mOnWindowsVisible);
}
diff --git a/services/core/java/com/android/server/wm/AppWindowContainerListener.java b/services/core/java/com/android/server/wm/AppWindowContainerListener.java
index 8a39a74..9d2758a 100644
--- a/services/core/java/com/android/server/wm/AppWindowContainerListener.java
+++ b/services/core/java/com/android/server/wm/AppWindowContainerListener.java
@@ -20,6 +20,8 @@
public interface AppWindowContainerListener extends WindowContainerListener {
/** Called when the windows associated app window container are drawn. */
void onWindowsDrawn(long timestamp);
+ /** Called when the windows associated app window container are no longer drawn. */
+ default void onWindowsNotDrawn(long timestamp) {}
/** Called when the windows associated app window container are visible. */
void onWindowsVisible();
/** Called when the windows associated app window container are no longer visible. */
diff --git a/services/core/java/com/android/server/wm/AppWindowToken.java b/services/core/java/com/android/server/wm/AppWindowToken.java
index fa6079c..bd5d35e 100644
--- a/services/core/java/com/android/server/wm/AppWindowToken.java
+++ b/services/core/java/com/android/server/wm/AppWindowToken.java
@@ -354,6 +354,10 @@
if (controller != null) {
controller.reportWindowsDrawn();
}
+ } else {
+ if (controller != null) {
+ controller.reportWindowsNotDrawn();
+ }
}
reportedDrawn = nowDrawn;
}