Loading src/com/android/settings/homepage/conditional/BackgroundDataConditionController.java +9 −3 Original line number Original line Diff line number Diff line Loading @@ -28,9 +28,14 @@ public class BackgroundDataConditionController implements ConditionalCardControl static final int ID = Objects.hash("BackgroundDataConditionController"); static final int ID = Objects.hash("BackgroundDataConditionController"); private final Context mAppContext; private final Context mAppContext; private final ConditionManager mConditionManager; private final NetworkPolicyManager mNetworkPolicyManager; public BackgroundDataConditionController(Context appContext) { public BackgroundDataConditionController(Context appContext, ConditionManager manager) { mAppContext = appContext; mAppContext = appContext; mConditionManager = manager; mNetworkPolicyManager = (NetworkPolicyManager) appContext.getSystemService(Context.NETWORK_POLICY_SERVICE); } } @Override @Override Loading @@ -40,7 +45,7 @@ public class BackgroundDataConditionController implements ConditionalCardControl @Override @Override public boolean isDisplayable() { public boolean isDisplayable() { return NetworkPolicyManager.from(mAppContext).getRestrictBackground(); return mNetworkPolicyManager.getRestrictBackground(); } } @Override @Override Loading @@ -50,7 +55,8 @@ public class BackgroundDataConditionController implements ConditionalCardControl @Override @Override public void onActionClick() { public void onActionClick() { NetworkPolicyManager.from(mAppContext).setRestrictBackground(false); mNetworkPolicyManager.setRestrictBackground(false); mConditionManager.onConditionChanged(); } } @Override @Override Loading src/com/android/settings/homepage/conditional/ConditionManager.java +4 −4 Original line number Original line Diff line number Diff line Loading @@ -100,7 +100,6 @@ public class ConditionManager { */ */ public void onActionClick(long id) { public void onActionClick(long id) { getController(id).onActionClick(); getController(id).onActionClick(); onConditionChanged(); } } /** /** Loading Loading @@ -155,15 +154,16 @@ public class ConditionManager { private void initCandidates() { private void initCandidates() { // Initialize controllers first. // Initialize controllers first. mCardControllers.add(new AirplaneModeConditionController(mAppContext, this /* manager */)); mCardControllers.add(new AirplaneModeConditionController(mAppContext, this /* manager */)); mCardControllers.add(new BackgroundDataConditionController(mAppContext)); mCardControllers.add( new BackgroundDataConditionController(mAppContext, this /* manager */)); mCardControllers.add(new BatterySaverConditionController(mAppContext, this /* manager */)); mCardControllers.add(new BatterySaverConditionController(mAppContext, this /* manager */)); mCardControllers.add(new CellularDataConditionController(mAppContext, this /* manager */)); mCardControllers.add(new CellularDataConditionController(mAppContext, this /* manager */)); mCardControllers.add(new DndConditionCardController(mAppContext, this /* manager */)); mCardControllers.add(new DndConditionCardController(mAppContext, this /* manager */)); mCardControllers.add(new HotspotConditionController(mAppContext, this /* manager */)); mCardControllers.add(new HotspotConditionController(mAppContext, this /* manager */)); mCardControllers.add(new NightDisplayConditionController(mAppContext)); mCardControllers.add(new NightDisplayConditionController(mAppContext, this /* manager */)); mCardControllers.add(new RingerVibrateConditionController(mAppContext, this /* manager */)); mCardControllers.add(new RingerVibrateConditionController(mAppContext, this /* manager */)); mCardControllers.add(new RingerMutedConditionController(mAppContext, this /* manager */)); mCardControllers.add(new RingerMutedConditionController(mAppContext, this /* manager */)); mCardControllers.add(new WorkModeConditionController(mAppContext)); mCardControllers.add(new WorkModeConditionController(mAppContext, this /* manager */)); // Initialize ui model later. UI model depends on controller. // Initialize ui model later. UI model depends on controller. mCandidates.add(new AirplaneModeConditionCard(mAppContext)); mCandidates.add(new AirplaneModeConditionCard(mAppContext)); Loading src/com/android/settings/homepage/conditional/NightDisplayConditionController.java +8 −1 Original line number Original line Diff line number Diff line Loading @@ -30,10 +30,12 @@ public class NightDisplayConditionController implements ConditionalCardControlle ColorDisplayController.Callback { ColorDisplayController.Callback { static final int ID = Objects.hash("NightDisplayConditionController"); static final int ID = Objects.hash("NightDisplayConditionController"); private final ConditionManager mConditionManager; private final ColorDisplayController mController; private final ColorDisplayController mController; public NightDisplayConditionController(Context appContext) { public NightDisplayConditionController(Context appContext, ConditionManager manager) { mController = new ColorDisplayController(appContext); mController = new ColorDisplayController(appContext); mConditionManager = manager; } } @Override @Override Loading Loading @@ -69,4 +71,9 @@ public class NightDisplayConditionController implements ConditionalCardControlle public void stopMonitoringStateChange() { public void stopMonitoringStateChange() { mController.setListener(null); mController.setListener(null); } } @Override public void onActivated(boolean activated) { mConditionManager.onConditionChanged(); } } } src/com/android/settings/homepage/conditional/WorkModeConditionController.java +29 −3 Original line number Original line Diff line number Diff line Loading @@ -16,11 +16,14 @@ package com.android.settings.homepage.conditional; package com.android.settings.homepage.conditional; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Context; import android.content.Intent; import android.content.Intent; import android.content.IntentFilter; import android.content.pm.UserInfo; import android.content.pm.UserInfo; import android.os.UserHandle; import android.os.UserHandle; import android.os.UserManager; import android.os.UserManager; import android.text.TextUtils; import com.android.settings.Settings; import com.android.settings.Settings; Loading @@ -31,13 +34,25 @@ public class WorkModeConditionController implements ConditionalCardController { static final int ID = Objects.hash("WorkModeConditionController"); static final int ID = Objects.hash("WorkModeConditionController"); private static final IntentFilter FILTER = new IntentFilter(); static { FILTER.addAction(Intent.ACTION_MANAGED_PROFILE_AVAILABLE); FILTER.addAction(Intent.ACTION_MANAGED_PROFILE_UNAVAILABLE); } private final Context mAppContext; private final Context mAppContext; private final UserManager mUm; private final UserManager mUm; private final ConditionManager mConditionManager; private final Receiver mReceiver; private UserHandle mUserHandle; private UserHandle mUserHandle; public WorkModeConditionController(Context appContext) { public WorkModeConditionController(Context appContext, ConditionManager manager) { mAppContext = appContext; mAppContext = appContext; mUm = mAppContext.getSystemService(UserManager.class); mUm = mAppContext.getSystemService(UserManager.class); mConditionManager = manager; mReceiver = new Receiver(); } } @Override @Override Loading Loading @@ -66,12 +81,12 @@ public class WorkModeConditionController implements ConditionalCardController { @Override @Override public void startMonitoringStateChange() { public void startMonitoringStateChange() { mAppContext.registerReceiver(mReceiver, FILTER); } } @Override @Override public void stopMonitoringStateChange() { public void stopMonitoringStateChange() { mAppContext.unregisterReceiver(mReceiver); } } private void updateUserHandle() { private void updateUserHandle() { Loading @@ -87,4 +102,15 @@ public class WorkModeConditionController implements ConditionalCardController { } } } } } } public class Receiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { final String action = intent.getAction(); if (TextUtils.equals(action, Intent.ACTION_MANAGED_PROFILE_AVAILABLE) || TextUtils.equals(action, Intent.ACTION_MANAGED_PROFILE_UNAVAILABLE)) { mConditionManager.onConditionChanged(); } } } } } tests/robotests/src/com/android/settings/homepage/conditional/BackgroundDataConditionControllerTest.java +17 −2 Original line number Original line Diff line number Diff line Loading @@ -22,28 +22,37 @@ import static org.mockito.Mockito.verify; import android.content.Context; import android.content.Context; import android.content.Intent; import android.content.Intent; import android.net.NetworkPolicyManager; import com.android.settings.Settings; import com.android.settings.Settings; import com.android.settings.homepage.conditional.BackgroundDataConditionController; import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.SettingsRobolectricTestRunner; import org.junit.Before; import org.junit.Before; import org.junit.Test; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.mockito.MockitoAnnotations; import org.robolectric.RuntimeEnvironment; import org.robolectric.RuntimeEnvironment; import org.robolectric.shadows.ShadowApplication; @RunWith(SettingsRobolectricTestRunner.class) @RunWith(SettingsRobolectricTestRunner.class) public class BackgroundDataConditionControllerTest { public class BackgroundDataConditionControllerTest { @Mock private ConditionManager mConditionManager; @Mock private NetworkPolicyManager mNetworkPolicyManager; private Context mContext; private Context mContext; private BackgroundDataConditionController mController; private BackgroundDataConditionController mController; @Before @Before public void setUp() { public void setUp() { MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this); ShadowApplication.getInstance().setSystemService(Context.NETWORK_POLICY_SERVICE, mNetworkPolicyManager); mContext = spy(RuntimeEnvironment.application); mContext = spy(RuntimeEnvironment.application); mController = new BackgroundDataConditionController(mContext); mController = new BackgroundDataConditionController(mContext, mConditionManager); } } @Test @Test Loading @@ -56,4 +65,10 @@ public class BackgroundDataConditionControllerTest { assertThat(intent.getComponent().getClassName()).isEqualTo( assertThat(intent.getComponent().getClassName()).isEqualTo( Settings.DataUsageSummaryActivity.class.getName()); Settings.DataUsageSummaryActivity.class.getName()); } } @Test public void onActionClick_shouldRefreshCondition() { mController.onActionClick(); verify(mConditionManager).onConditionChanged(); } } } Loading
src/com/android/settings/homepage/conditional/BackgroundDataConditionController.java +9 −3 Original line number Original line Diff line number Diff line Loading @@ -28,9 +28,14 @@ public class BackgroundDataConditionController implements ConditionalCardControl static final int ID = Objects.hash("BackgroundDataConditionController"); static final int ID = Objects.hash("BackgroundDataConditionController"); private final Context mAppContext; private final Context mAppContext; private final ConditionManager mConditionManager; private final NetworkPolicyManager mNetworkPolicyManager; public BackgroundDataConditionController(Context appContext) { public BackgroundDataConditionController(Context appContext, ConditionManager manager) { mAppContext = appContext; mAppContext = appContext; mConditionManager = manager; mNetworkPolicyManager = (NetworkPolicyManager) appContext.getSystemService(Context.NETWORK_POLICY_SERVICE); } } @Override @Override Loading @@ -40,7 +45,7 @@ public class BackgroundDataConditionController implements ConditionalCardControl @Override @Override public boolean isDisplayable() { public boolean isDisplayable() { return NetworkPolicyManager.from(mAppContext).getRestrictBackground(); return mNetworkPolicyManager.getRestrictBackground(); } } @Override @Override Loading @@ -50,7 +55,8 @@ public class BackgroundDataConditionController implements ConditionalCardControl @Override @Override public void onActionClick() { public void onActionClick() { NetworkPolicyManager.from(mAppContext).setRestrictBackground(false); mNetworkPolicyManager.setRestrictBackground(false); mConditionManager.onConditionChanged(); } } @Override @Override Loading
src/com/android/settings/homepage/conditional/ConditionManager.java +4 −4 Original line number Original line Diff line number Diff line Loading @@ -100,7 +100,6 @@ public class ConditionManager { */ */ public void onActionClick(long id) { public void onActionClick(long id) { getController(id).onActionClick(); getController(id).onActionClick(); onConditionChanged(); } } /** /** Loading Loading @@ -155,15 +154,16 @@ public class ConditionManager { private void initCandidates() { private void initCandidates() { // Initialize controllers first. // Initialize controllers first. mCardControllers.add(new AirplaneModeConditionController(mAppContext, this /* manager */)); mCardControllers.add(new AirplaneModeConditionController(mAppContext, this /* manager */)); mCardControllers.add(new BackgroundDataConditionController(mAppContext)); mCardControllers.add( new BackgroundDataConditionController(mAppContext, this /* manager */)); mCardControllers.add(new BatterySaverConditionController(mAppContext, this /* manager */)); mCardControllers.add(new BatterySaverConditionController(mAppContext, this /* manager */)); mCardControllers.add(new CellularDataConditionController(mAppContext, this /* manager */)); mCardControllers.add(new CellularDataConditionController(mAppContext, this /* manager */)); mCardControllers.add(new DndConditionCardController(mAppContext, this /* manager */)); mCardControllers.add(new DndConditionCardController(mAppContext, this /* manager */)); mCardControllers.add(new HotspotConditionController(mAppContext, this /* manager */)); mCardControllers.add(new HotspotConditionController(mAppContext, this /* manager */)); mCardControllers.add(new NightDisplayConditionController(mAppContext)); mCardControllers.add(new NightDisplayConditionController(mAppContext, this /* manager */)); mCardControllers.add(new RingerVibrateConditionController(mAppContext, this /* manager */)); mCardControllers.add(new RingerVibrateConditionController(mAppContext, this /* manager */)); mCardControllers.add(new RingerMutedConditionController(mAppContext, this /* manager */)); mCardControllers.add(new RingerMutedConditionController(mAppContext, this /* manager */)); mCardControllers.add(new WorkModeConditionController(mAppContext)); mCardControllers.add(new WorkModeConditionController(mAppContext, this /* manager */)); // Initialize ui model later. UI model depends on controller. // Initialize ui model later. UI model depends on controller. mCandidates.add(new AirplaneModeConditionCard(mAppContext)); mCandidates.add(new AirplaneModeConditionCard(mAppContext)); Loading
src/com/android/settings/homepage/conditional/NightDisplayConditionController.java +8 −1 Original line number Original line Diff line number Diff line Loading @@ -30,10 +30,12 @@ public class NightDisplayConditionController implements ConditionalCardControlle ColorDisplayController.Callback { ColorDisplayController.Callback { static final int ID = Objects.hash("NightDisplayConditionController"); static final int ID = Objects.hash("NightDisplayConditionController"); private final ConditionManager mConditionManager; private final ColorDisplayController mController; private final ColorDisplayController mController; public NightDisplayConditionController(Context appContext) { public NightDisplayConditionController(Context appContext, ConditionManager manager) { mController = new ColorDisplayController(appContext); mController = new ColorDisplayController(appContext); mConditionManager = manager; } } @Override @Override Loading Loading @@ -69,4 +71,9 @@ public class NightDisplayConditionController implements ConditionalCardControlle public void stopMonitoringStateChange() { public void stopMonitoringStateChange() { mController.setListener(null); mController.setListener(null); } } @Override public void onActivated(boolean activated) { mConditionManager.onConditionChanged(); } } }
src/com/android/settings/homepage/conditional/WorkModeConditionController.java +29 −3 Original line number Original line Diff line number Diff line Loading @@ -16,11 +16,14 @@ package com.android.settings.homepage.conditional; package com.android.settings.homepage.conditional; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Context; import android.content.Intent; import android.content.Intent; import android.content.IntentFilter; import android.content.pm.UserInfo; import android.content.pm.UserInfo; import android.os.UserHandle; import android.os.UserHandle; import android.os.UserManager; import android.os.UserManager; import android.text.TextUtils; import com.android.settings.Settings; import com.android.settings.Settings; Loading @@ -31,13 +34,25 @@ public class WorkModeConditionController implements ConditionalCardController { static final int ID = Objects.hash("WorkModeConditionController"); static final int ID = Objects.hash("WorkModeConditionController"); private static final IntentFilter FILTER = new IntentFilter(); static { FILTER.addAction(Intent.ACTION_MANAGED_PROFILE_AVAILABLE); FILTER.addAction(Intent.ACTION_MANAGED_PROFILE_UNAVAILABLE); } private final Context mAppContext; private final Context mAppContext; private final UserManager mUm; private final UserManager mUm; private final ConditionManager mConditionManager; private final Receiver mReceiver; private UserHandle mUserHandle; private UserHandle mUserHandle; public WorkModeConditionController(Context appContext) { public WorkModeConditionController(Context appContext, ConditionManager manager) { mAppContext = appContext; mAppContext = appContext; mUm = mAppContext.getSystemService(UserManager.class); mUm = mAppContext.getSystemService(UserManager.class); mConditionManager = manager; mReceiver = new Receiver(); } } @Override @Override Loading Loading @@ -66,12 +81,12 @@ public class WorkModeConditionController implements ConditionalCardController { @Override @Override public void startMonitoringStateChange() { public void startMonitoringStateChange() { mAppContext.registerReceiver(mReceiver, FILTER); } } @Override @Override public void stopMonitoringStateChange() { public void stopMonitoringStateChange() { mAppContext.unregisterReceiver(mReceiver); } } private void updateUserHandle() { private void updateUserHandle() { Loading @@ -87,4 +102,15 @@ public class WorkModeConditionController implements ConditionalCardController { } } } } } } public class Receiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { final String action = intent.getAction(); if (TextUtils.equals(action, Intent.ACTION_MANAGED_PROFILE_AVAILABLE) || TextUtils.equals(action, Intent.ACTION_MANAGED_PROFILE_UNAVAILABLE)) { mConditionManager.onConditionChanged(); } } } } }
tests/robotests/src/com/android/settings/homepage/conditional/BackgroundDataConditionControllerTest.java +17 −2 Original line number Original line Diff line number Diff line Loading @@ -22,28 +22,37 @@ import static org.mockito.Mockito.verify; import android.content.Context; import android.content.Context; import android.content.Intent; import android.content.Intent; import android.net.NetworkPolicyManager; import com.android.settings.Settings; import com.android.settings.Settings; import com.android.settings.homepage.conditional.BackgroundDataConditionController; import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.SettingsRobolectricTestRunner; import org.junit.Before; import org.junit.Before; import org.junit.Test; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.mockito.MockitoAnnotations; import org.robolectric.RuntimeEnvironment; import org.robolectric.RuntimeEnvironment; import org.robolectric.shadows.ShadowApplication; @RunWith(SettingsRobolectricTestRunner.class) @RunWith(SettingsRobolectricTestRunner.class) public class BackgroundDataConditionControllerTest { public class BackgroundDataConditionControllerTest { @Mock private ConditionManager mConditionManager; @Mock private NetworkPolicyManager mNetworkPolicyManager; private Context mContext; private Context mContext; private BackgroundDataConditionController mController; private BackgroundDataConditionController mController; @Before @Before public void setUp() { public void setUp() { MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this); ShadowApplication.getInstance().setSystemService(Context.NETWORK_POLICY_SERVICE, mNetworkPolicyManager); mContext = spy(RuntimeEnvironment.application); mContext = spy(RuntimeEnvironment.application); mController = new BackgroundDataConditionController(mContext); mController = new BackgroundDataConditionController(mContext, mConditionManager); } } @Test @Test Loading @@ -56,4 +65,10 @@ public class BackgroundDataConditionControllerTest { assertThat(intent.getComponent().getClassName()).isEqualTo( assertThat(intent.getComponent().getClassName()).isEqualTo( Settings.DataUsageSummaryActivity.class.getName()); Settings.DataUsageSummaryActivity.class.getName()); } } @Test public void onActionClick_shouldRefreshCondition() { mController.onActionClick(); verify(mConditionManager).onConditionChanged(); } } }