Refresh conditions only when it changes.

- Instead of force refresh when user tap action button, we not wait
  until state changes for each conditional cards.

Test: robotests
Change-Id: I2eca59a06b8cb332b7b99f017baefb3d5b53234b
This commit is contained in:
Fan Zhang
2018-08-23 17:34:55 -07:00
parent 161ff18a0b
commit 5d7ebbf963
7 changed files with 127 additions and 15 deletions

View File

@@ -22,28 +22,37 @@ import static org.mockito.Mockito.verify;
import android.content.Context;
import android.content.Intent;
import android.net.NetworkPolicyManager;
import com.android.settings.Settings;
import com.android.settings.homepage.conditional.BackgroundDataConditionController;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.shadows.ShadowApplication;
@RunWith(SettingsRobolectricTestRunner.class)
public class BackgroundDataConditionControllerTest {
@Mock
private ConditionManager mConditionManager;
@Mock
private NetworkPolicyManager mNetworkPolicyManager;
private Context mContext;
private BackgroundDataConditionController mController;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
ShadowApplication.getInstance().setSystemService(Context.NETWORK_POLICY_SERVICE,
mNetworkPolicyManager);
mContext = spy(RuntimeEnvironment.application);
mController = new BackgroundDataConditionController(mContext);
mController = new BackgroundDataConditionController(mContext, mConditionManager);
}
@Test
@@ -56,4 +65,10 @@ public class BackgroundDataConditionControllerTest {
assertThat(intent.getComponent().getClassName()).isEqualTo(
Settings.DataUsageSummaryActivity.class.getName());
}
@Test
public void onActionClick_shouldRefreshCondition() {
mController.onActionClick();
verify(mConditionManager).onConditionChanged();
}
}

View File

@@ -0,0 +1,54 @@
/*
* Copyright (C) 2018 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.settings.homepage.conditional;
import static org.mockito.Mockito.verify;
import android.content.Context;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RuntimeEnvironment;
@RunWith(SettingsRobolectricTestRunner.class)
public class NightDisplayConditionControllerTest {
@Mock
private ConditionManager mConditionManager;
private Context mContext;
private NightDisplayConditionController mController;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
mContext = RuntimeEnvironment.application;
mController = new NightDisplayConditionController(mContext, mConditionManager);
}
@Test
public void onActivated_shouldUpdateCondition() {
mController.onActivated(true);
verify(mConditionManager).onConditionChanged();
}
}

View File

@@ -24,24 +24,28 @@ import android.content.ComponentName;
import android.content.Context;
import com.android.settings.Settings;
import com.android.settings.homepage.conditional.WorkModeConditionController;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RuntimeEnvironment;
@RunWith(SettingsRobolectricTestRunner.class)
public class WorkModeConditionControllerTest {
@Mock
private ConditionManager mConditionManager;
private Context mContext;
private WorkModeConditionController mController;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
mContext = spy(RuntimeEnvironment.application);
mController = new WorkModeConditionController(mContext);
mController = new WorkModeConditionController(mContext, mConditionManager);
}
@Test