blob: ad329234edaa4beb74fbdef66be7f3cf0a0c2308 [file] [log] [blame]
/*
* Copyright (C) 2017 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 android.permission.cts;
import android.app.WallpaperManager;
import android.content.Context;
import android.graphics.Bitmap;
import android.media.MediaPlayer;
import android.net.wifi.WifiManager;
import android.net.wifi.WifiManager.WifiLock;
import android.os.PowerManager;
import android.test.AndroidTestCase;
import android.test.suitebuilder.annotation.SmallTest;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import static android.app.WallpaperManager.FLAG_SYSTEM;
import static android.app.WallpaperManager.FLAG_LOCK;
/**
* Verify that Wallpaper-related operations enforce the correct permissions.
*/
public class NoWallpaperPermissionsTest extends AndroidTestCase {
private WallpaperManager mWM;
@Override
protected void setUp() throws Exception {
super.setUp();
mWM = (WallpaperManager) mContext.getSystemService(Context.WALLPAPER_SERVICE);
}
/**
* Verify that the setResource(...) methods enforce the SET_WALLPAPER permission
*/
@SmallTest
public void testSetResource() throws IOException {
if (wallpaperNotSupported()) {
return;
}
try {
mWM.setResource(R.drawable.robot);
fail("WallpaperManager.setResource(id) did not enforce SET_WALLPAPER");
} catch (SecurityException expected) { /* expected */ }
try {
mWM.setResource(R.drawable.robot, FLAG_LOCK);
fail("WallpaperManager.setResource(id, which) did not enforce SET_WALLPAPER");
} catch (SecurityException expected) { /* expected */ }
}
/**
* Verify that the setBitmap(...) methods enforce the SET_WALLPAPER permission
*/
@SmallTest
public void testSetBitmap() throws IOException {
if (wallpaperNotSupported()) {
return;
}
Bitmap b = Bitmap.createBitmap(160, 120, Bitmap.Config.RGB_565);
try {
mWM.setBitmap(b);
fail("setBitmap(b) did not enforce SET_WALLPAPER");
} catch (SecurityException expected) { /* expected */ }
try {
mWM.setBitmap(b, null, false);
fail("setBitmap(b, crop, allowBackup) did not enforce SET_WALLPAPER");
} catch (SecurityException expected) { /* expected */ }
try {
mWM.setBitmap(b, null, false, FLAG_SYSTEM);
fail("setBitmap(b, crop, allowBackup, which) did not enforce SET_WALLPAPER");
} catch (SecurityException expected) { /* expected */ }
}
/**
* Verify that the setStream(...) methods enforce the SET_WALLPAPER permission
*/
@SmallTest
public void testSetStream() throws IOException {
if (wallpaperNotSupported()) {
return;
}
ByteArrayInputStream stream = new ByteArrayInputStream(new byte[32]);
try {
mWM.setStream(stream);
fail("setStream(stream) did not enforce SET_WALLPAPER");
} catch (SecurityException expected) { /* expected */ }
try {
mWM.setStream(stream, null, false);
fail("setStream(stream, crop, allowBackup) did not enforce SET_WALLPAPER");
} catch (SecurityException expected) { /* expected */ }
try {
mWM.setStream(stream, null, false, FLAG_LOCK);
fail("setStream(stream, crop, allowBackup, which) did not enforce SET_WALLPAPER");
} catch (SecurityException expected) { /* expected */ }
}
/**
* Verify that the clearWallpaper(...) methods enforce the SET_WALLPAPER permission
*/
@SmallTest
public void testClearWallpaper() throws IOException {
if (wallpaperNotSupported()) {
return;
}
try {
mWM.clear();
fail("clear() did not enforce SET_WALLPAPER");
} catch (SecurityException expected) { /* expected */ }
try {
mWM.clear(FLAG_SYSTEM);
fail("clear(which) did not enforce SET_WALLPAPER");
} catch (SecurityException expected) { /* expected */ }
}
/**
* Verify that reading the current wallpaper requires READ_EXTERNAL_STORAGE
*/
@SmallTest
public void testReadWallpaper() {
if (wallpaperNotSupported()) {
return;
}
try {
/* ignore result */ mWM.getFastDrawable();
fail("getFastDrawable() did not enforce READ_EXTERNAL_STORAGE");
} catch (SecurityException expected) { /* expected */ }
try {
/* ignore result */ mWM.peekFastDrawable();
fail("peekFastDrawable() did not enforce READ_EXTERNAL_STORAGE");
} catch (SecurityException expected) { /* expected */ }
try {
/* ignore result */ mWM.getWallpaperFile(FLAG_SYSTEM);
fail("getWallpaperFile(FLAG_SYSTEM) did not enforce READ_EXTERNAL_STORAGE");
} catch (SecurityException expected) { /* expected */ }
}
// ---------- Utility methods ----------
private boolean wallpaperNotSupported() {
return !(mWM.isWallpaperSupported() && mWM.isSetWallpaperAllowed());
}
}