Merge "Blank out recents for locked work tasks"

This commit is contained in:
Robin Lee
2016-12-16 20:50:57 +00:00
committed by Android (Google) Code Review
4 changed files with 40 additions and 3 deletions

View File

@@ -74,6 +74,7 @@ import android.view.WindowManager;
import android.view.WindowManager.KeyboardShortcutsReceiver;
import android.view.WindowManagerGlobal;
import android.view.accessibility.AccessibilityManager;
import android.app.KeyguardManager;
import com.android.internal.app.AssistUtils;
import com.android.internal.os.BackgroundThread;
@@ -124,6 +125,7 @@ public class SystemServicesProxy {
AssistUtils mAssistUtils;
WindowManager mWm;
IWindowManager mIwm;
KeyguardManager mKgm;
UserManager mUm;
Display mDisplay;
String mRecentsPackage;
@@ -212,6 +214,7 @@ public class SystemServicesProxy {
mAssistUtils = new AssistUtils(context);
mWm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
mIwm = WindowManagerGlobal.getWindowManagerService();
mKgm = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE);
mUm = UserManager.get(context);
mDisplay = mWm.getDefaultDisplay();
mRecentsPackage = context.getPackageName();
@@ -862,6 +865,16 @@ public class SystemServicesProxy {
return label;
}
/**
* Returns whether the provided {@param userId} is currently locked (and showing Keyguard).
*/
public boolean isDeviceLocked(int userId) {
if (mKgm == null) {
return false;
}
return mKgm.isDeviceLocked(userId);
}
/** Returns the package name of the home activity. */
public String getHomeActivityPackageName() {
if (mPm == null) return null;

View File

@@ -28,6 +28,7 @@ import android.os.UserHandle;
import android.os.UserManager;
import android.util.ArraySet;
import android.util.SparseArray;
import android.util.SparseBooleanArray;
import android.util.SparseIntArray;
import com.android.systemui.Prefs;
@@ -130,6 +131,7 @@ public class RecentsTaskLoadPlan {
SparseArray<Task.TaskKey> affiliatedTasks = new SparseArray<>();
SparseIntArray affiliatedTaskCounts = new SparseIntArray();
SparseBooleanArray lockedUsers = new SparseBooleanArray();
String dismissDescFormat = mContext.getString(
R.string.accessibility_recents_item_will_be_dismissed);
String appInfoDescFormat = mContext.getString(
@@ -177,12 +179,17 @@ public class RecentsTaskLoadPlan {
int backgroundColor = loader.getActivityBackgroundColor(t.taskDescription);
boolean isSystemApp = (info != null) &&
((info.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0);
if (lockedUsers.indexOfKey(t.userId) < 0) {
lockedUsers.put(t.userId, Recents.getSystemServices().isDeviceLocked(t.userId));
}
boolean isLocked = lockedUsers.get(t.userId);
// Add the task to the stack
Task task = new Task(taskKey, t.affiliatedTaskId, t.affiliatedTaskColor, icon,
thumbnail, title, titleDescription, dismissDescription, appInfoDescription,
activityColor, backgroundColor, isLaunchTarget, isStackTask, isSystemApp,
t.isDockable, t.bounds, t.taskDescription, t.resizeMode, t.topActivity);
t.isDockable, t.bounds, t.taskDescription, t.resizeMode, t.topActivity,
isLocked);
allTasks.add(task);
affiliatedTaskCounts.put(taskKey.id, affiliatedTaskCounts.get(taskKey.id, 0) + 1);

View File

@@ -189,6 +189,9 @@ public class Task {
@ViewDebug.ExportedProperty(category="recents")
public ComponentName topActivity;
@ViewDebug.ExportedProperty(category="recents")
public boolean isLocked;
private ArrayList<TaskCallbacks> mCallbacks = new ArrayList<>();
public Task() {
@@ -200,7 +203,7 @@ public class Task {
String appInfoDescription, int colorPrimary, int colorBackground,
boolean isLaunchTarget, boolean isStackTask, boolean isSystemApp,
boolean isDockable, Rect bounds, ActivityManager.TaskDescription taskDescription,
int resizeMode, ComponentName topActivity) {
int resizeMode, ComponentName topActivity, boolean isLocked) {
boolean isInAffiliationGroup = (affiliationTaskId != key.id);
boolean hasAffiliationGroupColor = isInAffiliationGroup && (affiliationColor != 0);
this.key = key;
@@ -224,6 +227,7 @@ public class Task {
this.isDockable = isDockable;
this.resizeMode = resizeMode;
this.topActivity = topActivity;
this.isLocked = isLocked;
}
/**
@@ -250,6 +254,7 @@ public class Task {
this.isSystemApp = o.isSystemApp;
this.isDockable = o.isDockable;
this.resizeMode = o.resizeMode;
this.isLocked = o.isLocked;
this.topActivity = o.topActivity;
}
@@ -355,6 +360,9 @@ public class Task {
if (isFreeformTask()) {
writer.print(" freeform=Y");
}
if (isLocked) {
writer.print(" locked=Y");
}
writer.print(" "); writer.print(title);
writer.println();
}

View File

@@ -67,6 +67,7 @@ public class TaskViewThumbnail extends View {
private float mDimAlpha;
private Matrix mScaleMatrix = new Matrix();
private Paint mDrawPaint = new Paint();
private Paint mLockedPaint = new Paint();
private Paint mBgFillPaint = new Paint();
private BitmapShader mBitmapShader;
private LightingColorFilter mLightingColorFilter = new LightingColorFilter(0xffffffff, 0);
@@ -102,6 +103,7 @@ public class TaskViewThumbnail extends View {
mCornerRadius = getResources().getDimensionPixelSize(
R.dimen.recents_task_view_rounded_corners_radius);
mBgFillPaint.setColor(Color.WHITE);
mLockedPaint.setColor(Color.WHITE);
mFullscreenThumbnailScale = context.getResources().getFraction(
com.android.internal.R.fraction.thumbnail_fullscreen_scale, 1, 1);
}
@@ -133,7 +135,11 @@ public class TaskViewThumbnail extends View {
(int) (mThumbnailRect.width() * mThumbnailScale));
int thumbnailHeight = Math.min(viewHeight,
(int) (mThumbnailRect.height() * mThumbnailScale));
if (mBitmapShader != null && thumbnailWidth > 0 && thumbnailHeight > 0) {
if (mTask.isLocked) {
canvas.drawRoundRect(0, 0, viewWidth, viewHeight, mCornerRadius, mCornerRadius,
mLockedPaint);
} else if (mBitmapShader != null && thumbnailWidth > 0 && thumbnailHeight > 0) {
int topOffset = mTaskBar != null
? mTaskBar.getHeight() - mCornerRadius
: 0;
@@ -200,11 +206,13 @@ public class TaskViewThumbnail extends View {
ColorMatrixColorFilter filter = new ColorMatrixColorFilter(TMP_FILTER_COLOR_MATRIX);
mDrawPaint.setColorFilter(filter);
mBgFillPaint.setColorFilter(filter);
mLockedPaint.setColorFilter(filter);
} else {
mLightingColorFilter.setColorMultiply(Color.argb(255, mul, mul, mul));
mDrawPaint.setColorFilter(mLightingColorFilter);
mDrawPaint.setColor(0xFFffffff);
mBgFillPaint.setColorFilter(mLightingColorFilter);
mLockedPaint.setColorFilter(mLightingColorFilter);
}
} else {
int grey = mul;
@@ -299,6 +307,7 @@ public class TaskViewThumbnail extends View {
if (t.colorBackground != 0) {
mBgFillPaint.setColor(t.colorBackground);
}
mLockedPaint.setColor(t.colorPrimary);
}
/**