Merge "Close screenshot process on user switched"
This commit is contained in:
committed by
Android (Google) Code Review
commit
92b7a54947
@@ -1,12 +1,15 @@
|
||||
package com.android.internal.util;
|
||||
|
||||
import static android.content.Intent.ACTION_USER_SWITCHED;
|
||||
import static android.view.WindowManager.ScreenshotSource.SCREENSHOT_OTHER;
|
||||
|
||||
import android.annotation.NonNull;
|
||||
import android.annotation.Nullable;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.content.ServiceConnection;
|
||||
import android.graphics.Insets;
|
||||
import android.graphics.Rect;
|
||||
@@ -161,8 +164,21 @@ public class ScreenshotHelper {
|
||||
private ServiceConnection mScreenshotConnection = null;
|
||||
private final Context mContext;
|
||||
|
||||
private final BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
synchronized (mScreenshotLock) {
|
||||
if (ACTION_USER_SWITCHED.equals(intent.getAction())) {
|
||||
resetConnection();
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
public ScreenshotHelper(Context context) {
|
||||
mContext = context;
|
||||
IntentFilter filter = new IntentFilter(ACTION_USER_SWITCHED);
|
||||
mContext.registerReceiver(mBroadcastReceiver, filter);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -280,9 +296,7 @@ public class ScreenshotHelper {
|
||||
synchronized (mScreenshotLock) {
|
||||
if (mScreenshotConnection != null) {
|
||||
Log.e(TAG, "Timed out before getting screenshot capture response");
|
||||
mContext.unbindService(mScreenshotConnection);
|
||||
mScreenshotConnection = null;
|
||||
mScreenshotService = null;
|
||||
resetConnection();
|
||||
notifyScreenshotError();
|
||||
}
|
||||
}
|
||||
@@ -305,11 +319,7 @@ public class ScreenshotHelper {
|
||||
break;
|
||||
case SCREENSHOT_MSG_PROCESS_COMPLETE:
|
||||
synchronized (mScreenshotLock) {
|
||||
if (mScreenshotConnection != null) {
|
||||
mContext.unbindService(mScreenshotConnection);
|
||||
mScreenshotConnection = null;
|
||||
mScreenshotService = null;
|
||||
}
|
||||
resetConnection();
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -349,9 +359,7 @@ public class ScreenshotHelper {
|
||||
public void onServiceDisconnected(ComponentName name) {
|
||||
synchronized (mScreenshotLock) {
|
||||
if (mScreenshotConnection != null) {
|
||||
mContext.unbindService(mScreenshotConnection);
|
||||
mScreenshotConnection = null;
|
||||
mScreenshotService = null;
|
||||
resetConnection();
|
||||
// only log an error if we're still within the timeout period
|
||||
if (handler.hasCallbacks(mScreenshotTimeout)) {
|
||||
Log.e(TAG, "Screenshot service disconnected");
|
||||
@@ -384,6 +392,17 @@ public class ScreenshotHelper {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Unbinds the current screenshot connection (if any).
|
||||
*/
|
||||
private void resetConnection() {
|
||||
if (mScreenshotConnection != null) {
|
||||
mContext.unbindService(mScreenshotConnection);
|
||||
mScreenshotConnection = null;
|
||||
mScreenshotService = null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Notifies the screenshot service to show an error.
|
||||
*/
|
||||
|
||||
@@ -125,9 +125,9 @@ public class TakeScreenshotService extends Service {
|
||||
};
|
||||
|
||||
@Inject
|
||||
public TakeScreenshotService(ScreenshotController globalScreenshot, UserManager userManager,
|
||||
public TakeScreenshotService(ScreenshotController screenshotController, UserManager userManager,
|
||||
UiEventLogger uiEventLogger) {
|
||||
mScreenshot = globalScreenshot;
|
||||
mScreenshot = screenshotController;
|
||||
mUserManager = userManager;
|
||||
mUiEventLogger = uiEventLogger;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user