Merge "Add multi-user support for kids mode" into tm-dev
This commit is contained in:
@@ -16,13 +16,18 @@
|
|||||||
|
|
||||||
package com.android.internal.policy;
|
package com.android.internal.policy;
|
||||||
|
|
||||||
|
import android.annotation.NonNull;
|
||||||
|
import android.app.ActivityManager;
|
||||||
import android.content.ContentResolver;
|
import android.content.ContentResolver;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.database.ContentObserver;
|
import android.database.ContentObserver;
|
||||||
|
import android.net.Uri;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.UserHandle;
|
import android.os.UserHandle;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A ContentObserver for listening {@link Settings.Secure#NAV_BAR_FORCE_VISIBLE} setting key.
|
* A ContentObserver for listening {@link Settings.Secure#NAV_BAR_FORCE_VISIBLE} setting key.
|
||||||
*
|
*
|
||||||
@@ -59,7 +64,11 @@ public class ForceShowNavBarSettingsObserver extends ContentObserver {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onChange(boolean selfChange) {
|
public void onChange(boolean selfChange, @NonNull Collection<Uri> uris, int flags, int userId) {
|
||||||
|
if (userId != ActivityManager.getCurrentUser()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (mOnChangeRunnable != null) {
|
if (mOnChangeRunnable != null) {
|
||||||
mOnChangeRunnable.run();
|
mOnChangeRunnable.run();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,13 +16,18 @@
|
|||||||
|
|
||||||
package com.android.wm.shell.kidsmode;
|
package com.android.wm.shell.kidsmode;
|
||||||
|
|
||||||
|
import android.annotation.NonNull;
|
||||||
|
import android.app.ActivityManager;
|
||||||
import android.content.ContentResolver;
|
import android.content.ContentResolver;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.database.ContentObserver;
|
import android.database.ContentObserver;
|
||||||
|
import android.net.Uri;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.UserHandle;
|
import android.os.UserHandle;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A ContentObserver for listening kids mode relative setting keys:
|
* A ContentObserver for listening kids mode relative setting keys:
|
||||||
* - {@link Settings.Secure#NAVIGATION_MODE}
|
* - {@link Settings.Secure#NAVIGATION_MODE}
|
||||||
@@ -64,7 +69,11 @@ public class KidsModeSettingsObserver extends ContentObserver {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onChange(boolean selfChange) {
|
public void onChange(boolean selfChange, @NonNull Collection<Uri> uris, int flags, int userId) {
|
||||||
|
if (userId != ActivityManager.getCurrentUser()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (mOnChangeRunnable != null) {
|
if (mOnChangeRunnable != null) {
|
||||||
mOnChangeRunnable.run();
|
mOnChangeRunnable.run();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,7 +23,10 @@ import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED;
|
|||||||
import static android.view.Display.DEFAULT_DISPLAY;
|
import static android.view.Display.DEFAULT_DISPLAY;
|
||||||
|
|
||||||
import android.app.ActivityManager;
|
import android.app.ActivityManager;
|
||||||
|
import android.content.BroadcastReceiver;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.content.IntentFilter;
|
||||||
import android.content.res.Configuration;
|
import android.content.res.Configuration;
|
||||||
import android.graphics.Rect;
|
import android.graphics.Rect;
|
||||||
import android.os.Binder;
|
import android.os.Binder;
|
||||||
@@ -87,6 +90,13 @@ public class KidsModeTaskOrganizer extends ShellTaskOrganizer {
|
|||||||
private KidsModeSettingsObserver mKidsModeSettingsObserver;
|
private KidsModeSettingsObserver mKidsModeSettingsObserver;
|
||||||
private boolean mEnabled;
|
private boolean mEnabled;
|
||||||
|
|
||||||
|
private final BroadcastReceiver mUserSwitchIntentReceiver = new BroadcastReceiver() {
|
||||||
|
@Override
|
||||||
|
public void onReceive(Context context, Intent intent) {
|
||||||
|
updateKidsModeState();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
DisplayController.OnDisplaysChangedListener mOnDisplaysChangedListener =
|
DisplayController.OnDisplaysChangedListener mOnDisplaysChangedListener =
|
||||||
new DisplayController.OnDisplaysChangedListener() {
|
new DisplayController.OnDisplaysChangedListener() {
|
||||||
@Override
|
@Override
|
||||||
@@ -169,12 +179,15 @@ public class KidsModeTaskOrganizer extends ShellTaskOrganizer {
|
|||||||
public void initialize(StartingWindowController startingWindowController) {
|
public void initialize(StartingWindowController startingWindowController) {
|
||||||
initStartingWindow(startingWindowController);
|
initStartingWindow(startingWindowController);
|
||||||
if (mKidsModeSettingsObserver == null) {
|
if (mKidsModeSettingsObserver == null) {
|
||||||
mKidsModeSettingsObserver = new KidsModeSettingsObserver(
|
mKidsModeSettingsObserver = new KidsModeSettingsObserver(mMainHandler, mContext);
|
||||||
mMainHandler, mContext);
|
|
||||||
}
|
}
|
||||||
mKidsModeSettingsObserver.setOnChangeRunnable(() -> updateKidsModeState());
|
mKidsModeSettingsObserver.setOnChangeRunnable(() -> updateKidsModeState());
|
||||||
updateKidsModeState();
|
updateKidsModeState();
|
||||||
mKidsModeSettingsObserver.register();
|
mKidsModeSettingsObserver.register();
|
||||||
|
|
||||||
|
final IntentFilter filter = new IntentFilter();
|
||||||
|
filter.addAction(Intent.ACTION_USER_SWITCHED);
|
||||||
|
mContext.registerReceiverForAllUsers(mUserSwitchIntentReceiver, filter, null, mMainHandler);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -651,17 +651,19 @@ public class DisplayPolicy {
|
|||||||
|
|
||||||
mForceShowNavBarSettingsObserver = new ForceShowNavBarSettingsObserver(
|
mForceShowNavBarSettingsObserver = new ForceShowNavBarSettingsObserver(
|
||||||
mHandler, mContext);
|
mHandler, mContext);
|
||||||
mForceShowNavBarSettingsObserver.setOnChangeRunnable(() -> {
|
mForceShowNavBarSettingsObserver.setOnChangeRunnable(this::updateForceShowNavBarSettings);
|
||||||
synchronized (mLock) {
|
|
||||||
mForceShowNavigationBarEnabled =
|
|
||||||
mForceShowNavBarSettingsObserver.isEnabled();
|
|
||||||
updateSystemBarAttributes();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
mForceShowNavigationBarEnabled = mForceShowNavBarSettingsObserver.isEnabled();
|
mForceShowNavigationBarEnabled = mForceShowNavBarSettingsObserver.isEnabled();
|
||||||
mHandler.post(mForceShowNavBarSettingsObserver::register);
|
mHandler.post(mForceShowNavBarSettingsObserver::register);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void updateForceShowNavBarSettings() {
|
||||||
|
synchronized (mLock) {
|
||||||
|
mForceShowNavigationBarEnabled =
|
||||||
|
mForceShowNavBarSettingsObserver.isEnabled();
|
||||||
|
updateSystemBarAttributes();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the first non-null alt bar window matching the given position.
|
* Returns the first non-null alt bar window matching the given position.
|
||||||
*/
|
*/
|
||||||
@@ -1801,6 +1803,7 @@ public class DisplayPolicy {
|
|||||||
*/
|
*/
|
||||||
public void switchUser() {
|
public void switchUser() {
|
||||||
updateCurrentUserResources();
|
updateCurrentUserResources();
|
||||||
|
updateForceShowNavBarSettings();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user