Merge "Temporary flag for Launcher to debug their usage of sandboxed display APIs" into sc-v2-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
5dd564dcf3
@@ -1463,10 +1463,10 @@ public final class Display {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
final Configuration config = mResources.getConfiguration();
|
final Configuration config = mResources.getConfiguration();
|
||||||
// TODO(b/179308296) Temporarily exclude Launcher from being given max bounds, by checking
|
// TODO(b/179308296) Temporarily - never report max bounds to only Launcher if the feature
|
||||||
// if the caller is the recents component.
|
// is disabled.
|
||||||
return config != null && !config.windowConfiguration.getMaxBounds().isEmpty()
|
return config != null && !config.windowConfiguration.getMaxBounds().isEmpty()
|
||||||
&& !isRecentsComponent();
|
&& (mDisplayInfo.shouldConstrainMetricsForLauncher || !isRecentsComponent());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -305,6 +305,13 @@ public final class DisplayInfo implements Parcelable {
|
|||||||
*/
|
*/
|
||||||
public float brightnessDefault;
|
public float brightnessDefault;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @hide
|
||||||
|
* True if Display#getRealSize and getRealMetrics should be constrained for Launcher, false
|
||||||
|
* otherwise.
|
||||||
|
*/
|
||||||
|
public boolean shouldConstrainMetricsForLauncher = false;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The {@link RoundedCorners} if present, otherwise {@code null}.
|
* The {@link RoundedCorners} if present, otherwise {@code null}.
|
||||||
*/
|
*/
|
||||||
@@ -381,7 +388,8 @@ public final class DisplayInfo implements Parcelable {
|
|||||||
&& brightnessMinimum == other.brightnessMinimum
|
&& brightnessMinimum == other.brightnessMinimum
|
||||||
&& brightnessMaximum == other.brightnessMaximum
|
&& brightnessMaximum == other.brightnessMaximum
|
||||||
&& brightnessDefault == other.brightnessDefault
|
&& brightnessDefault == other.brightnessDefault
|
||||||
&& Objects.equals(roundedCorners, other.roundedCorners);
|
&& Objects.equals(roundedCorners, other.roundedCorners)
|
||||||
|
&& shouldConstrainMetricsForLauncher == other.shouldConstrainMetricsForLauncher;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -432,6 +440,7 @@ public final class DisplayInfo implements Parcelable {
|
|||||||
brightnessMaximum = other.brightnessMaximum;
|
brightnessMaximum = other.brightnessMaximum;
|
||||||
brightnessDefault = other.brightnessDefault;
|
brightnessDefault = other.brightnessDefault;
|
||||||
roundedCorners = other.roundedCorners;
|
roundedCorners = other.roundedCorners;
|
||||||
|
shouldConstrainMetricsForLauncher = other.shouldConstrainMetricsForLauncher;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void readFromParcel(Parcel source) {
|
public void readFromParcel(Parcel source) {
|
||||||
@@ -488,6 +497,7 @@ public final class DisplayInfo implements Parcelable {
|
|||||||
for (int i = 0; i < numUserDisabledFormats; i++) {
|
for (int i = 0; i < numUserDisabledFormats; i++) {
|
||||||
userDisabledHdrTypes[i] = source.readInt();
|
userDisabledHdrTypes[i] = source.readInt();
|
||||||
}
|
}
|
||||||
|
shouldConstrainMetricsForLauncher = source.readBoolean();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -542,6 +552,7 @@ public final class DisplayInfo implements Parcelable {
|
|||||||
for (int i = 0; i < userDisabledHdrTypes.length; i++) {
|
for (int i = 0; i < userDisabledHdrTypes.length; i++) {
|
||||||
dest.writeInt(userDisabledHdrTypes[i]);
|
dest.writeInt(userDisabledHdrTypes[i]);
|
||||||
}
|
}
|
||||||
|
dest.writeBoolean(shouldConstrainMetricsForLauncher);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -796,6 +807,8 @@ public final class DisplayInfo implements Parcelable {
|
|||||||
sb.append(brightnessMaximum);
|
sb.append(brightnessMaximum);
|
||||||
sb.append(", brightnessDefault ");
|
sb.append(", brightnessDefault ");
|
||||||
sb.append(brightnessDefault);
|
sb.append(brightnessDefault);
|
||||||
|
sb.append(", shouldConstrainMetricsForLauncher ");
|
||||||
|
sb.append(shouldConstrainMetricsForLauncher);
|
||||||
sb.append("}");
|
sb.append("}");
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -63,8 +63,6 @@ import android.hardware.display.DisplayManagerGlobal;
|
|||||||
import android.hardware.display.DisplayManagerInternal;
|
import android.hardware.display.DisplayManagerInternal;
|
||||||
import android.hardware.display.DisplayManagerInternal.DisplayGroupListener;
|
import android.hardware.display.DisplayManagerInternal.DisplayGroupListener;
|
||||||
import android.hardware.display.DisplayManagerInternal.DisplayTransactionListener;
|
import android.hardware.display.DisplayManagerInternal.DisplayTransactionListener;
|
||||||
import android.hardware.display.DisplayManagerInternal.RefreshRateLimitation;
|
|
||||||
import android.hardware.display.DisplayManagerInternal.RefreshRateRange;
|
|
||||||
import android.hardware.display.DisplayViewport;
|
import android.hardware.display.DisplayViewport;
|
||||||
import android.hardware.display.DisplayedContentSample;
|
import android.hardware.display.DisplayedContentSample;
|
||||||
import android.hardware.display.DisplayedContentSamplingAttributes;
|
import android.hardware.display.DisplayedContentSamplingAttributes;
|
||||||
@@ -636,6 +634,9 @@ public final class DisplayManagerService extends SystemService {
|
|||||||
synchronized (mSyncRoot) {
|
synchronized (mSyncRoot) {
|
||||||
final LogicalDisplay display = mLogicalDisplayMapper.getDisplayLocked(displayId);
|
final LogicalDisplay display = mLogicalDisplayMapper.getDisplayLocked(displayId);
|
||||||
if (display != null) {
|
if (display != null) {
|
||||||
|
// Do not let constrain be overwritten by override from WindowManager.
|
||||||
|
info.shouldConstrainMetricsForLauncher =
|
||||||
|
display.getDisplayInfoLocked().shouldConstrainMetricsForLauncher;
|
||||||
if (display.setDisplayInfoOverrideFromWindowManagerLocked(info)) {
|
if (display.setDisplayInfoOverrideFromWindowManagerLocked(info)) {
|
||||||
handleLogicalDisplayChangedLocked(display);
|
handleLogicalDisplayChangedLocked(display);
|
||||||
scheduleTraversalLocked(false);
|
scheduleTraversalLocked(false);
|
||||||
@@ -1723,6 +1724,21 @@ public final class DisplayManagerService extends SystemService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void setShouldConstrainMetricsForLauncher(boolean constrain) {
|
||||||
|
// Apply constrain for every display.
|
||||||
|
synchronized (mSyncRoot) {
|
||||||
|
int[] displayIds = mLogicalDisplayMapper.getDisplayIdsLocked(Process.myUid());
|
||||||
|
for (int i : displayIds) {
|
||||||
|
final LogicalDisplay display = mLogicalDisplayMapper.getDisplayLocked(i);
|
||||||
|
if (display == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
display.getDisplayInfoLocked().shouldConstrainMetricsForLauncher = constrain;
|
||||||
|
setDisplayInfoOverrideFromWindowManagerInternal(i, display.getDisplayInfoLocked());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void clearViewportsLocked() {
|
private void clearViewportsLocked() {
|
||||||
mViewports.clear();
|
mViewports.clear();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -58,6 +58,8 @@ class DisplayManagerShellCommand extends ShellCommand {
|
|||||||
return setDisplayModeDirectorLoggingEnabled(false);
|
return setDisplayModeDirectorLoggingEnabled(false);
|
||||||
case "dwb-set-cct":
|
case "dwb-set-cct":
|
||||||
return setAmbientColorTemperatureOverride();
|
return setAmbientColorTemperatureOverride();
|
||||||
|
case "constrain-launcher-metrics":
|
||||||
|
return setConstrainLauncherMetrics();
|
||||||
default:
|
default:
|
||||||
return handleDefaultCommands(cmd);
|
return handleDefaultCommands(cmd);
|
||||||
}
|
}
|
||||||
@@ -88,6 +90,9 @@ class DisplayManagerShellCommand extends ShellCommand {
|
|||||||
pw.println(" Disable display mode director logging.");
|
pw.println(" Disable display mode director logging.");
|
||||||
pw.println(" dwb-set-cct CCT");
|
pw.println(" dwb-set-cct CCT");
|
||||||
pw.println(" Sets the ambient color temperature override to CCT (use -1 to disable).");
|
pw.println(" Sets the ambient color temperature override to CCT (use -1 to disable).");
|
||||||
|
pw.println(" constrain-launcher-metrics [true|false]");
|
||||||
|
pw.println(" Sets if Display#getRealSize and getRealMetrics should be constrained for ");
|
||||||
|
pw.println(" Launcher.");
|
||||||
pw.println();
|
pw.println();
|
||||||
Intent.printIntentArgsHelp(pw , "");
|
Intent.printIntentArgsHelp(pw , "");
|
||||||
}
|
}
|
||||||
@@ -150,4 +155,15 @@ class DisplayManagerShellCommand extends ShellCommand {
|
|||||||
mService.setAmbientColorTemperatureOverride(cct);
|
mService.setAmbientColorTemperatureOverride(cct);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private int setConstrainLauncherMetrics() {
|
||||||
|
String constrainText = getNextArg();
|
||||||
|
if (constrainText == null) {
|
||||||
|
getErrPrintWriter().println("Error: no value specified");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
boolean constrain = Boolean.parseBoolean(constrainText);
|
||||||
|
mService.setShouldConstrainMetricsForLauncher(constrain);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -233,6 +233,8 @@ final class LogicalDisplay {
|
|||||||
info.physicalXDpi = mOverrideDisplayInfo.physicalXDpi;
|
info.physicalXDpi = mOverrideDisplayInfo.physicalXDpi;
|
||||||
info.physicalYDpi = mOverrideDisplayInfo.physicalYDpi;
|
info.physicalYDpi = mOverrideDisplayInfo.physicalYDpi;
|
||||||
info.roundedCorners = mOverrideDisplayInfo.roundedCorners;
|
info.roundedCorners = mOverrideDisplayInfo.roundedCorners;
|
||||||
|
info.shouldConstrainMetricsForLauncher =
|
||||||
|
mOverrideDisplayInfo.shouldConstrainMetricsForLauncher;
|
||||||
}
|
}
|
||||||
mInfo.set(info);
|
mInfo.set(info);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user