Merge "Enforce an opaque background color when drawing secure window snapshots."
This commit is contained in:
committed by
Android (Google) Code Review
commit
de368344fc
@@ -27,6 +27,7 @@ import android.app.ActivityManager;
|
||||
import android.app.ActivityManager.TaskSnapshot;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.GraphicBuffer;
|
||||
import android.graphics.Rect;
|
||||
import android.os.Environment;
|
||||
@@ -40,6 +41,7 @@ import android.view.ThreadedRenderer;
|
||||
import android.view.WindowManager.LayoutParams;
|
||||
|
||||
import com.android.internal.annotations.VisibleForTesting;
|
||||
import com.android.internal.graphics.ColorUtils;
|
||||
import com.android.server.policy.WindowManagerPolicy.ScreenOffListener;
|
||||
import com.android.server.policy.WindowManagerPolicy.StartingSurface;
|
||||
import com.android.server.wm.TaskSnapshotSurface.SystemBarBackgroundPainter;
|
||||
@@ -324,7 +326,8 @@ class TaskSnapshotController {
|
||||
if (mainWindow == null) {
|
||||
return null;
|
||||
}
|
||||
final int color = task.getTaskDescription().getBackgroundColor();
|
||||
final int color = ColorUtils.setAlphaComponent(
|
||||
task.getTaskDescription().getBackgroundColor(), 255);
|
||||
final int statusBarColor = task.getTaskDescription().getStatusBarColor();
|
||||
final int navigationBarColor = task.getTaskDescription().getNavigationBarColor();
|
||||
final LayoutParams attrs = mainWindow.getAttrs();
|
||||
|
||||
@@ -47,6 +47,7 @@ import android.app.ActivityManager.TaskSnapshot;
|
||||
import android.app.ActivityThread;
|
||||
import android.content.Context;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.GraphicBuffer;
|
||||
import android.graphics.Paint;
|
||||
import android.graphics.Rect;
|
||||
@@ -516,7 +517,7 @@ class TaskSnapshotSurface implements StartingSurface {
|
||||
@VisibleForTesting
|
||||
void drawStatusBarBackground(Canvas c, @Nullable Rect alreadyDrawnFrame,
|
||||
int statusBarHeight) {
|
||||
if (statusBarHeight > 0
|
||||
if (statusBarHeight > 0 && Color.alpha(mStatusBarColor) != 0
|
||||
&& (alreadyDrawnFrame == null || c.getWidth() > alreadyDrawnFrame.right)) {
|
||||
final int rightInset = DecorView.getColorViewRightInset(mStableInsets.right,
|
||||
mContentInsets.right);
|
||||
@@ -531,7 +532,7 @@ class TaskSnapshotSurface implements StartingSurface {
|
||||
getNavigationBarRect(c.getWidth(), c.getHeight(), mStableInsets, mContentInsets,
|
||||
navigationBarRect);
|
||||
final boolean visible = isNavigationBarColorViewVisible();
|
||||
if (visible && !navigationBarRect.isEmpty()) {
|
||||
if (visible && Color.alpha(mNavigationBarColor) != 0 && !navigationBarRect.isEmpty()) {
|
||||
c.drawRect(navigationBarRect, mNavigationBarPaint);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user