Merge "Use explicit intent to broadcast grayscale state changed"
This commit is contained in:
committed by
Android (Google) Code Review
commit
7c49d1505f
@@ -22,21 +22,27 @@ 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.IntentFilter;
|
||||||
|
import android.content.pm.PackageManager;
|
||||||
|
import android.content.pm.ResolveInfo;
|
||||||
import android.hardware.display.ColorDisplayManager;
|
import android.hardware.display.ColorDisplayManager;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
|
import androidx.annotation.VisibleForTesting;
|
||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.homepage.contextualcards.ContextualCard;
|
import com.android.settings.homepage.contextualcards.ContextualCard;
|
||||||
|
|
||||||
import java.net.URISyntaxException;
|
import java.net.URISyntaxException;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
public class GrayscaleConditionController implements ConditionalCardController {
|
public class GrayscaleConditionController implements ConditionalCardController {
|
||||||
static final int ID = Objects.hash("GrayscaleConditionController");
|
static final int ID = Objects.hash("GrayscaleConditionController");
|
||||||
|
|
||||||
|
@VisibleForTesting
|
||||||
|
static final String ACTION_GRAYSCALE_CHANGED = "android.settings.action.GRAYSCALE_CHANGED";
|
||||||
|
|
||||||
private static final String TAG = "GrayscaleCondition";
|
private static final String TAG = "GrayscaleCondition";
|
||||||
private static final String ACTION_GRAYSCALE_CHANGED =
|
|
||||||
"android.settings.action.GRAYSCALE_CHANGED";
|
|
||||||
private static final IntentFilter GRAYSCALE_CHANGED_FILTER = new IntentFilter(
|
private static final IntentFilter GRAYSCALE_CHANGED_FILTER = new IntentFilter(
|
||||||
ACTION_GRAYSCALE_CHANGED);
|
ACTION_GRAYSCALE_CHANGED);
|
||||||
|
|
||||||
@@ -113,9 +119,13 @@ public class GrayscaleConditionController implements ConditionalCardController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void sendBroadcast() {
|
private void sendBroadcast() {
|
||||||
final Intent intent = new Intent();
|
final PackageManager pm = mAppContext.getPackageManager();
|
||||||
intent.setAction(ACTION_GRAYSCALE_CHANGED);
|
final Intent intent = new Intent(ACTION_GRAYSCALE_CHANGED);
|
||||||
mAppContext.sendBroadcast(intent, Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS);
|
final List<ResolveInfo> receivers = pm.queryBroadcastReceivers(intent, 0 /* flags */);
|
||||||
|
for (ResolveInfo receiver : receivers) {
|
||||||
|
intent.setPackage(receiver.activityInfo.packageName);
|
||||||
|
mAppContext.sendBroadcast(intent);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class Receiver extends BroadcastReceiver {
|
public class Receiver extends BroadcastReceiver {
|
||||||
|
@@ -25,6 +25,8 @@ import static org.mockito.Mockito.verify;
|
|||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.content.pm.ActivityInfo;
|
||||||
|
import android.content.pm.ResolveInfo;
|
||||||
import android.hardware.display.ColorDisplayManager;
|
import android.hardware.display.ColorDisplayManager;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
@@ -34,7 +36,9 @@ import org.mockito.Mock;
|
|||||||
import org.mockito.MockitoAnnotations;
|
import org.mockito.MockitoAnnotations;
|
||||||
import org.robolectric.RobolectricTestRunner;
|
import org.robolectric.RobolectricTestRunner;
|
||||||
import org.robolectric.RuntimeEnvironment;
|
import org.robolectric.RuntimeEnvironment;
|
||||||
|
import org.robolectric.Shadows;
|
||||||
import org.robolectric.annotation.Config;
|
import org.robolectric.annotation.Config;
|
||||||
|
import org.robolectric.shadows.ShadowPackageManager;
|
||||||
|
|
||||||
@RunWith(RobolectricTestRunner.class)
|
@RunWith(RobolectricTestRunner.class)
|
||||||
public class GrayscaleConditionControllerTest {
|
public class GrayscaleConditionControllerTest {
|
||||||
@@ -45,6 +49,7 @@ public class GrayscaleConditionControllerTest {
|
|||||||
private ColorDisplayManager mColorDisplayManager;
|
private ColorDisplayManager mColorDisplayManager;
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
private GrayscaleConditionController mController;
|
private GrayscaleConditionController mController;
|
||||||
|
private ShadowPackageManager mPackageManager;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
@@ -53,6 +58,7 @@ public class GrayscaleConditionControllerTest {
|
|||||||
mColorDisplayManager = spy(mContext.getSystemService(ColorDisplayManager.class));
|
mColorDisplayManager = spy(mContext.getSystemService(ColorDisplayManager.class));
|
||||||
doReturn(mColorDisplayManager).when(mContext).getSystemService(ColorDisplayManager.class);
|
doReturn(mColorDisplayManager).when(mContext).getSystemService(ColorDisplayManager.class);
|
||||||
mController = new GrayscaleConditionController(mContext, mConditionManager);
|
mController = new GrayscaleConditionController(mContext, mConditionManager);
|
||||||
|
mPackageManager = Shadows.shadowOf(mContext.getPackageManager());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -85,8 +91,13 @@ public class GrayscaleConditionControllerTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void onActionClick_shouldSendBroadcast() {
|
public void onActionClick_shouldSendBroadcast() {
|
||||||
|
final Intent intent = new Intent(GrayscaleConditionController.ACTION_GRAYSCALE_CHANGED);
|
||||||
|
final ResolveInfo info = new ResolveInfo();
|
||||||
|
info.activityInfo = new ActivityInfo();
|
||||||
|
mPackageManager.addResolveInfoForIntent(intent, info);
|
||||||
|
|
||||||
mController.onActionClick();
|
mController.onActionClick();
|
||||||
|
|
||||||
verify(mContext).sendBroadcast(any(Intent.class), any(String.class));
|
verify(mContext).sendBroadcast(any(Intent.class));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user