Merge "SystemUI: show owner VPN for restricted profile" into mnc-dev

This commit is contained in:
Robin Lee
2015-06-26 20:44:55 +00:00
committed by Android (Google) Code Review
2 changed files with 16 additions and 6 deletions

View File

@@ -2931,6 +2931,9 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
if (mZenModeController != null) { if (mZenModeController != null) {
mZenModeController.setUserId(mCurrentUserId); mZenModeController.setUserId(mCurrentUserId);
} }
if (mSecurityController != null) {
mSecurityController.onUserSwitched(mCurrentUserId);
}
} }
private void resetUserSetupObserver() { private void resetUserSetupObserver() {

View File

@@ -64,6 +64,7 @@ public class SecurityControllerImpl implements SecurityController {
private SparseArray<VpnConfig> mCurrentVpns = new SparseArray<>(); private SparseArray<VpnConfig> mCurrentVpns = new SparseArray<>();
private int mCurrentUserId; private int mCurrentUserId;
private int mVpnUserId;
public SecurityControllerImpl(Context context) { public SecurityControllerImpl(Context context) {
mContext = context; mContext = context;
@@ -78,7 +79,7 @@ public class SecurityControllerImpl implements SecurityController {
// TODO: re-register network callback on user change. // TODO: re-register network callback on user change.
mConnectivityManager.registerNetworkCallback(REQUEST, mNetworkCallback); mConnectivityManager.registerNetworkCallback(REQUEST, mNetworkCallback);
mCurrentUserId = ActivityManager.getCurrentUser(); onUserSwitched(ActivityManager.getCurrentUser());
} }
public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
@@ -123,9 +124,9 @@ public class SecurityControllerImpl implements SecurityController {
@Override @Override
public String getPrimaryVpnName() { public String getPrimaryVpnName() {
VpnConfig cfg = mCurrentVpns.get(mCurrentUserId); VpnConfig cfg = mCurrentVpns.get(mVpnUserId);
if (cfg != null) { if (cfg != null) {
return getNameForVpnConfig(cfg, new UserHandle(mCurrentUserId)); return getNameForVpnConfig(cfg, new UserHandle(mVpnUserId));
} else { } else {
return null; return null;
} }
@@ -133,8 +134,8 @@ public class SecurityControllerImpl implements SecurityController {
@Override @Override
public String getProfileVpnName() { public String getProfileVpnName() {
for (UserInfo profile : mUserManager.getProfiles(mCurrentUserId)) { for (UserInfo profile : mUserManager.getProfiles(mVpnUserId)) {
if (profile.id == mCurrentUserId) { if (profile.id == mVpnUserId) {
continue; continue;
} }
VpnConfig cfg = mCurrentVpns.get(profile.id); VpnConfig cfg = mCurrentVpns.get(profile.id);
@@ -147,7 +148,7 @@ public class SecurityControllerImpl implements SecurityController {
@Override @Override
public boolean isVpnEnabled() { public boolean isVpnEnabled() {
for (UserInfo profile : mUserManager.getProfiles(mCurrentUserId)) { for (UserInfo profile : mUserManager.getProfiles(mVpnUserId)) {
if (mCurrentVpns.get(profile.id) != null) { if (mCurrentVpns.get(profile.id) != null) {
return true; return true;
} }
@@ -172,6 +173,12 @@ public class SecurityControllerImpl implements SecurityController {
@Override @Override
public void onUserSwitched(int newUserId) { public void onUserSwitched(int newUserId) {
mCurrentUserId = newUserId; mCurrentUserId = newUserId;
if (mUserManager.getUserInfo(newUserId).isRestricted()) {
// VPN for a restricted profile is routed through its owner user
mVpnUserId = UserHandle.USER_OWNER;
} else {
mVpnUserId = mCurrentUserId;
}
fireCallbacks(); fireCallbacks();
} }