Merge "Remove CommunalConditionsMonitor."
This commit is contained in:
@@ -16,12 +16,14 @@
|
||||
|
||||
package com.android.systemui.communal;
|
||||
|
||||
import static com.android.systemui.communal.dagger.CommunalModule.COMMUNAL_CONDITIONS;
|
||||
|
||||
import android.util.Log;
|
||||
|
||||
import com.android.internal.annotations.VisibleForTesting;
|
||||
import com.android.systemui.communal.conditions.CommunalConditionsMonitor;
|
||||
import com.android.systemui.dagger.SysUISingleton;
|
||||
import com.android.systemui.dagger.qualifiers.Main;
|
||||
import com.android.systemui.util.condition.Monitor;
|
||||
|
||||
import com.google.android.collect.Lists;
|
||||
|
||||
@@ -31,6 +33,7 @@ import java.util.Iterator;
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Named;
|
||||
|
||||
/**
|
||||
* A Monitor for reporting a {@link CommunalSource} presence.
|
||||
@@ -42,7 +45,7 @@ public class CommunalSourceMonitor {
|
||||
|
||||
// A list of {@link Callback} that have registered to receive updates.
|
||||
private final ArrayList<WeakReference<Callback>> mCallbacks = Lists.newArrayList();
|
||||
private final CommunalConditionsMonitor mConditionsMonitor;
|
||||
private final Monitor mConditionsMonitor;
|
||||
private final Executor mExecutor;
|
||||
|
||||
private CommunalSource mCurrentSource;
|
||||
@@ -53,7 +56,7 @@ public class CommunalSourceMonitor {
|
||||
// Whether the class is currently listening for condition changes.
|
||||
private boolean mListeningForConditions = false;
|
||||
|
||||
private final CommunalConditionsMonitor.Callback mConditionsCallback =
|
||||
private final Monitor.Callback mConditionsCallback =
|
||||
allConditionsMet -> {
|
||||
if (mAllCommunalConditionsMet != allConditionsMet) {
|
||||
if (DEBUG) Log.d(TAG, "communal conditions changed: " + allConditionsMet);
|
||||
@@ -66,7 +69,7 @@ public class CommunalSourceMonitor {
|
||||
@VisibleForTesting
|
||||
@Inject
|
||||
public CommunalSourceMonitor(@Main Executor executor,
|
||||
CommunalConditionsMonitor communalConditionsMonitor) {
|
||||
@Named(COMMUNAL_CONDITIONS) Monitor communalConditionsMonitor) {
|
||||
mExecutor = executor;
|
||||
mConditionsMonitor = communalConditionsMonitor;
|
||||
}
|
||||
|
||||
@@ -34,6 +34,8 @@ import com.android.systemui.idle.AmbientLightModeMonitor;
|
||||
import com.android.systemui.idle.LightSensorEventsDebounceAlgorithm;
|
||||
import com.android.systemui.idle.dagger.IdleViewComponent;
|
||||
import com.android.systemui.util.condition.Condition;
|
||||
import com.android.systemui.util.condition.Monitor;
|
||||
import com.android.systemui.util.condition.dagger.MonitorComponent;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
@@ -135,4 +137,14 @@ public interface CommunalModule {
|
||||
return Optional.empty();
|
||||
}
|
||||
}
|
||||
|
||||
/** */
|
||||
@Provides
|
||||
@Named(COMMUNAL_CONDITIONS)
|
||||
static Monitor provideCommunalSourceMonitor(
|
||||
@Named(COMMUNAL_CONDITIONS) Set<Condition> communalConditions,
|
||||
MonitorComponent.Factory factory) {
|
||||
final MonitorComponent component = factory.create(communalConditions, new HashSet<>());
|
||||
return component.getMonitor();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,7 +23,6 @@ import com.android.systemui.statusbar.policy.CallbackController;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.lang.ref.WeakReference;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
@@ -38,7 +37,7 @@ import javax.inject.Inject;
|
||||
public class Monitor implements CallbackController<Monitor.Callback> {
|
||||
private final String mTag = getClass().getSimpleName();
|
||||
|
||||
private final ArrayList<WeakReference<Callback>> mCallbacks = new ArrayList<>();
|
||||
private final ArrayList<Callback> mCallbacks = new ArrayList<>();
|
||||
|
||||
// Set of all conditions that need to be monitored.
|
||||
private final Set<Condition> mConditions;
|
||||
@@ -66,9 +65,9 @@ public class Monitor implements CallbackController<Monitor.Callback> {
|
||||
mAllConditionsMet = newAllConditionsMet;
|
||||
|
||||
// Updates all callbacks.
|
||||
final Iterator<WeakReference<Callback>> iterator = mCallbacks.iterator();
|
||||
final Iterator<Callback> iterator = mCallbacks.iterator();
|
||||
while (iterator.hasNext()) {
|
||||
final Callback callback = iterator.next().get();
|
||||
final Callback callback = iterator.next();
|
||||
if (callback == null) {
|
||||
iterator.remove();
|
||||
} else {
|
||||
@@ -78,7 +77,7 @@ public class Monitor implements CallbackController<Monitor.Callback> {
|
||||
};
|
||||
|
||||
@Inject
|
||||
public Monitor(Set<Condition> conditions) {
|
||||
public Monitor(Set<Condition> conditions, Set<Callback> callbacks) {
|
||||
mConditions = conditions;
|
||||
|
||||
// If there is no condition, give green pass.
|
||||
@@ -89,12 +88,20 @@ public class Monitor implements CallbackController<Monitor.Callback> {
|
||||
|
||||
// Initializes the conditions map and registers a callback for each condition.
|
||||
mConditions.forEach((condition -> mConditionsMap.put(condition, false)));
|
||||
|
||||
if (callbacks == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
for (Callback callback : callbacks) {
|
||||
addCallback(callback);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addCallback(@NotNull Callback callback) {
|
||||
if (shouldLog()) Log.d(mTag, "adding callback");
|
||||
mCallbacks.add(new WeakReference<>(callback));
|
||||
mCallbacks.add(callback);
|
||||
|
||||
// Updates the callback immediately.
|
||||
callback.onConditionsChanged(mAllConditionsMet);
|
||||
@@ -109,9 +116,9 @@ public class Monitor implements CallbackController<Monitor.Callback> {
|
||||
@Override
|
||||
public void removeCallback(@NotNull Callback callback) {
|
||||
if (shouldLog()) Log.d(mTag, "removing callback");
|
||||
final Iterator<WeakReference<Callback>> iterator = mCallbacks.iterator();
|
||||
final Iterator<Callback> iterator = mCallbacks.iterator();
|
||||
while (iterator.hasNext()) {
|
||||
final Callback cb = iterator.next().get();
|
||||
final Callback cb = iterator.next();
|
||||
if (cb == null || cb == callback) {
|
||||
iterator.remove();
|
||||
}
|
||||
|
||||
@@ -14,29 +14,33 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.systemui.communal.conditions;
|
||||
package com.android.systemui.util.condition.dagger;
|
||||
|
||||
|
||||
import static com.android.systemui.communal.dagger.CommunalModule.COMMUNAL_CONDITIONS;
|
||||
|
||||
import com.android.systemui.dagger.SysUISingleton;
|
||||
import com.android.systemui.util.condition.Condition;
|
||||
import com.android.systemui.util.condition.Monitor;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Named;
|
||||
import dagger.BindsInstance;
|
||||
import dagger.Subcomponent;
|
||||
|
||||
/**
|
||||
* A concrete implementation of {@Monitor} with conditions for monitoring when communal mode should
|
||||
* be enabled.
|
||||
* Component for {@link Monitor}.
|
||||
*/
|
||||
@SysUISingleton
|
||||
public class CommunalConditionsMonitor extends Monitor {
|
||||
@Inject
|
||||
public CommunalConditionsMonitor(
|
||||
@Named(COMMUNAL_CONDITIONS) Set<Condition> communalConditions) {
|
||||
super(communalConditions);
|
||||
@Subcomponent
|
||||
public interface MonitorComponent {
|
||||
/**
|
||||
* Factory for {@link MonitorComponent}.
|
||||
*/
|
||||
@Subcomponent.Factory
|
||||
interface Factory {
|
||||
MonitorComponent create(@BindsInstance Set<Condition> conditions,
|
||||
@BindsInstance Set<Monitor.Callback> callbacks);
|
||||
}
|
||||
|
||||
/**
|
||||
* Provides {@link Monitor}.
|
||||
* @return
|
||||
*/
|
||||
Monitor getMonitor();
|
||||
}
|
||||
@@ -18,6 +18,7 @@ package com.android.systemui.util.dagger;
|
||||
|
||||
import com.android.systemui.util.RingerModeTracker;
|
||||
import com.android.systemui.util.RingerModeTrackerImpl;
|
||||
import com.android.systemui.util.condition.dagger.MonitorComponent;
|
||||
import com.android.systemui.util.wrapper.UtilWrapperModule;
|
||||
|
||||
import dagger.Binds;
|
||||
@@ -26,6 +27,9 @@ import dagger.Module;
|
||||
/** Dagger Module for code in the util package. */
|
||||
@Module(includes = {
|
||||
UtilWrapperModule.class
|
||||
},
|
||||
subcomponents = {
|
||||
MonitorComponent.class,
|
||||
})
|
||||
public interface UtilModule {
|
||||
/** */
|
||||
|
||||
@@ -28,8 +28,8 @@ import android.testing.AndroidTestingRunner;
|
||||
import androidx.test.filters.SmallTest;
|
||||
|
||||
import com.android.systemui.SysuiTestCase;
|
||||
import com.android.systemui.communal.conditions.CommunalConditionsMonitor;
|
||||
import com.android.systemui.util.concurrency.FakeExecutor;
|
||||
import com.android.systemui.util.condition.Monitor;
|
||||
import com.android.systemui.util.time.FakeSystemClock;
|
||||
|
||||
import org.junit.Before;
|
||||
@@ -45,7 +45,7 @@ public class CommunalManagerUpdaterTest extends SysuiTestCase {
|
||||
@Mock
|
||||
private CommunalManager mCommunalManager;
|
||||
@Mock
|
||||
private CommunalConditionsMonitor mCommunalConditionsMonitor;
|
||||
private Monitor mCommunalConditionsMonitor;
|
||||
|
||||
private FakeExecutor mExecutor = new FakeExecutor(new FakeSystemClock());
|
||||
|
||||
@@ -55,7 +55,7 @@ public class CommunalManagerUpdaterTest extends SysuiTestCase {
|
||||
mContext.addMockSystemService(CommunalManager.class, mCommunalManager);
|
||||
|
||||
doAnswer(invocation -> {
|
||||
final CommunalConditionsMonitor.Callback callback = invocation.getArgument(0);
|
||||
final Monitor.Callback callback = invocation.getArgument(0);
|
||||
callback.onConditionsChanged(true);
|
||||
return null;
|
||||
}).when(mCommunalConditionsMonitor).addCallback(any());
|
||||
|
||||
@@ -31,8 +31,8 @@ import android.testing.TestableLooper;
|
||||
import androidx.test.filters.SmallTest;
|
||||
|
||||
import com.android.systemui.SysuiTestCase;
|
||||
import com.android.systemui.communal.conditions.CommunalConditionsMonitor;
|
||||
import com.android.systemui.util.concurrency.FakeExecutor;
|
||||
import com.android.systemui.util.condition.Monitor;
|
||||
import com.android.systemui.util.time.FakeSystemClock;
|
||||
|
||||
import org.junit.Before;
|
||||
@@ -49,9 +49,9 @@ import java.lang.ref.WeakReference;
|
||||
@RunWith(AndroidTestingRunner.class)
|
||||
@TestableLooper.RunWithLooper
|
||||
public class CommunalSourceMonitorTest extends SysuiTestCase {
|
||||
@Mock private CommunalConditionsMonitor mCommunalConditionsMonitor;
|
||||
@Mock private Monitor mCommunalConditionsMonitor;
|
||||
|
||||
@Captor private ArgumentCaptor<CommunalConditionsMonitor.Callback> mConditionsCallbackCaptor;
|
||||
@Captor private ArgumentCaptor<Monitor.Callback> mConditionsCallbackCaptor;
|
||||
|
||||
private CommunalSourceMonitor mCommunalSourceMonitor;
|
||||
private FakeExecutor mExecutor = new FakeExecutor(new FakeSystemClock());
|
||||
@@ -156,7 +156,7 @@ public class CommunalSourceMonitorTest extends SysuiTestCase {
|
||||
private void setConditionsMet(boolean value) {
|
||||
mExecutor.runAllReady();
|
||||
verify(mCommunalConditionsMonitor).addCallback(mConditionsCallbackCaptor.capture());
|
||||
final CommunalConditionsMonitor.Callback conditionsCallback =
|
||||
final Monitor.Callback conditionsCallback =
|
||||
mConditionsCallbackCaptor.getValue();
|
||||
conditionsCallback.onConditionsChanged(value);
|
||||
mExecutor.runAllReady();
|
||||
|
||||
@@ -58,7 +58,7 @@ public class ConditionMonitorTest extends SysuiTestCase {
|
||||
mCondition3 = spy(new FakeCondition());
|
||||
mConditions = new HashSet<>(Arrays.asList(mCondition1, mCondition2, mCondition3));
|
||||
|
||||
mConditionMonitor = new Monitor(mConditions);
|
||||
mConditionMonitor = new Monitor(mConditions, null /*callbacks*/);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -98,7 +98,7 @@ public class ConditionMonitorTest extends SysuiTestCase {
|
||||
|
||||
@Test
|
||||
public void addCallback_noConditions_reportAllConditionsMet() {
|
||||
final Monitor monitor = new Monitor(new HashSet<>());
|
||||
final Monitor monitor = new Monitor(new HashSet<>(), null /*callbacks*/);
|
||||
final Monitor.Callback callback = mock(Monitor.Callback.class);
|
||||
|
||||
monitor.addCallback(callback);
|
||||
|
||||
Reference in New Issue
Block a user