Merge "Add test for correct MBR ComponentName resolution"

This commit is contained in:
Iván Budnik
2022-11-15 13:33:36 +00:00
committed by Android (Google) Code Review
9 changed files with 157 additions and 0 deletions

View File

@@ -275,6 +275,10 @@ final class MediaButtonReceiverHolder {
String.valueOf(mComponentType));
}
public ComponentName getComponentName() {
return mComponentName;
}
@ComponentType
private static int getComponentType(PendingIntent pendingIntent) {
if (pendingIntent.isBroadcast()) {

View File

@@ -107,6 +107,9 @@
<queries>
<package android:name="com.android.servicestests.apps.suspendtestapp" />
<intent>
<action android:name="android.media.browse.MediaBrowserService" />
</intent>
</queries>
<!-- Uses API introduced in O (26) -->

View File

@@ -33,6 +33,7 @@
<option name="test-file-name" value="SimpleServiceTestApp1.apk" />
<option name="test-file-name" value="SimpleServiceTestApp2.apk" />
<option name="test-file-name" value="SimpleServiceTestApp3.apk" />
<option name="test-file-name" value="FakeMediaApp.apk" />
</target_preparer>
<!-- Create place to store apks -->

View File

@@ -0,0 +1,45 @@
/*
* Copyright (C) 2022 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.server.media;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.platform.app.InstrumentationRegistry;
import com.google.common.truth.Truth;
import org.junit.Test;
import org.junit.runner.RunWith;
@RunWith(AndroidJUnit4.class)
public class MediaButtonReceiverHolderTest {
@Test
public void createMediaButtonReceiverHolder_resolvesNullComponentName() {
Context context = InstrumentationRegistry.getInstrumentation().getContext();
Intent intent = new Intent(Intent.ACTION_MEDIA_BUTTON);
PendingIntent pi = PendingIntent.getBroadcast(context, /* requestCode= */ 0, intent,
PendingIntent.FLAG_IMMUTABLE);
MediaButtonReceiverHolder a = MediaButtonReceiverHolder.create(/* userId= */ 0, pi,
context.getPackageName());
Truth.assertWithMessage("Component name must match PendingIntent creator package.").that(
a.getComponentName()).isNull();
}
}

View File

@@ -0,0 +1,2 @@
# Bug component: 137631
include platform/frameworks/av:/media/janitors/media_solutions_OWNERS

View File

@@ -0,0 +1,37 @@
// Copyright (C) 2019 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 {
// See: http://go/android-license-faq
// A large-scale-change added 'default_applicable_licenses' to import
// all of the 'license_kinds' from "frameworks_base_license"
// to get the below license kinds:
// SPDX-license-identifier-Apache-2.0
default_applicable_licenses: ["frameworks_base_license"],
}
android_test_helper_app {
name: "FakeMediaApp",
sdk_version: "current",
srcs: ["**/*.java"],
dex_preopt: {
enabled: false,
},
optimize: {
enabled: false,
},
}

View File

@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2022 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.
-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.servicestests.apps.fakemediaapp">
<application>
<receiver
android:name=".FakeMediaButtonBroadcastReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MEDIA_BUTTON" />
</intent-filter>
</receiver>
</application>
</manifest>

View File

@@ -0,0 +1,2 @@
# Bug component: 137631
include platform/frameworks/av:/media/janitors/media_solutions_OWNERS

View File

@@ -0,0 +1,32 @@
/*
* Copyright 2022 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.servicestests.apps.fakemediaapp;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
public class FakeMediaButtonBroadcastReceiver extends BroadcastReceiver {
private static final String TAG = "FakeMediaButtonBroadcastReceiver";
@Override
public void onReceive(Context context, Intent intent) {
Log.v(TAG, "onReceive not expected");
}
}