1 /* 2 * Copyright (C) 2019 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 package android.app; 17 18 import android.annotation.FloatRange; 19 import android.annotation.NonNull; 20 import android.annotation.Nullable; 21 import android.compat.annotation.UnsupportedAppUsage; 22 import android.content.ComponentName; 23 import android.content.Intent; 24 import android.graphics.Bitmap; 25 import android.graphics.Point; 26 import android.graphics.Rect; 27 import android.graphics.RectF; 28 import android.graphics.drawable.Drawable; 29 import android.net.Uri; 30 import android.os.Bundle; 31 import android.os.Handler; 32 import android.os.IBinder; 33 import android.os.ParcelFileDescriptor; 34 import android.util.Log; 35 import android.util.SparseArray; 36 37 import java.io.IOException; 38 import java.io.InputStream; 39 import java.util.List; 40 import java.util.Map; 41 42 /** 43 * A no-op implementation of {@link WallpaperManager}. 44 */ 45 final class DisabledWallpaperManager extends WallpaperManager { 46 47 private static final String TAG = DisabledWallpaperManager.class.getSimpleName(); 48 49 // Don't need to worry about synchronization 50 private static DisabledWallpaperManager sInstance; 51 52 private static final boolean DEBUG = false; 53 54 @NonNull getInstance()55 static DisabledWallpaperManager getInstance() { 56 if (sInstance == null) { 57 sInstance = new DisabledWallpaperManager(); 58 } 59 return sInstance; 60 } 61 DisabledWallpaperManager()62 private DisabledWallpaperManager() { 63 } 64 65 @UnsupportedAppUsage getIWallpaperManager()66 public IWallpaperManager getIWallpaperManager() { 67 return unsupported(); 68 } 69 70 @Override isLockscreenLiveWallpaperEnabled()71 public boolean isLockscreenLiveWallpaperEnabled() { 72 return unsupportedBoolean(); 73 } 74 75 @Override shouldEnableWideColorGamut()76 public boolean shouldEnableWideColorGamut() { 77 return unsupportedBoolean(); 78 } 79 80 @Override getDrawable()81 public Drawable getDrawable() { 82 return unsupported(); 83 } 84 85 @Override getBuiltInDrawable()86 public Drawable getBuiltInDrawable() { 87 return unsupported(); 88 } 89 90 @Override getBuiltInDrawable(int which)91 public Drawable getBuiltInDrawable(int which) { 92 return unsupported(); 93 } 94 95 @Override getBuiltInDrawable(int outWidth, int outHeight, boolean scaleToFit, float horizontalAlignment, float verticalAlignment)96 public Drawable getBuiltInDrawable(int outWidth, int outHeight, boolean scaleToFit, 97 float horizontalAlignment, float verticalAlignment) { 98 return unsupported(); 99 } 100 101 @Override getBuiltInDrawable(int outWidth, int outHeight, boolean scaleToFit, float horizontalAlignment, float verticalAlignment, int which)102 public Drawable getBuiltInDrawable(int outWidth, int outHeight, boolean scaleToFit, 103 float horizontalAlignment, float verticalAlignment, int which) { 104 return unsupported(); 105 } 106 107 @Override peekDrawable()108 public Drawable peekDrawable() { 109 return unsupported(); 110 } 111 112 @Override getFastDrawable()113 public Drawable getFastDrawable() { 114 return unsupported(); 115 } 116 117 @Override peekFastDrawable()118 public Drawable peekFastDrawable() { 119 return unsupported(); 120 } 121 122 @Override wallpaperSupportsWcg(int which)123 public boolean wallpaperSupportsWcg(int which) { 124 return unsupportedBoolean(); 125 } 126 127 @Override getBitmap()128 public Bitmap getBitmap() { 129 return unsupported(); 130 } 131 132 @Override getBitmap(boolean hardware)133 public Bitmap getBitmap(boolean hardware) { 134 return unsupported(); 135 } 136 137 @Nullable getBitmap(boolean hardware, @SetWallpaperFlags int which)138 public Bitmap getBitmap(boolean hardware, @SetWallpaperFlags int which) { 139 return unsupported(); 140 } 141 142 @Override getBitmapAsUser(int userId, boolean hardware)143 public Bitmap getBitmapAsUser(int userId, boolean hardware) { 144 return unsupported(); 145 } 146 147 @Override getBitmapAsUser(int userId, boolean hardware, @SetWallpaperFlags int which)148 public Bitmap getBitmapAsUser(int userId, boolean hardware, @SetWallpaperFlags int which) { 149 return unsupported(); 150 } 151 152 @Override getBitmapAsUser(int userId, boolean hardware, @SetWallpaperFlags int which, boolean returnDefault)153 public Bitmap getBitmapAsUser(int userId, boolean hardware, 154 @SetWallpaperFlags int which, boolean returnDefault) { 155 return unsupported(); 156 } 157 158 @Override peekBitmapDimensions()159 public Rect peekBitmapDimensions() { 160 return unsupported(); 161 } 162 163 @Override peekBitmapDimensions(@etWallpaperFlags int which)164 public Rect peekBitmapDimensions(@SetWallpaperFlags int which) { 165 return unsupported(); 166 } 167 168 @Nullable peekBitmapDimensions(@etWallpaperFlags int which, boolean returnDefault)169 public Rect peekBitmapDimensions(@SetWallpaperFlags int which, boolean returnDefault) { 170 return unsupported(); 171 } 172 173 @Override getBitmapCrops(@onNull List<Point> displaySizes, @SetWallpaperFlags int which, boolean originalBitmap)174 public List<Rect> getBitmapCrops(@NonNull List<Point> displaySizes, 175 @SetWallpaperFlags int which, boolean originalBitmap) { 176 return unsupported(); 177 } 178 179 @Override getBitmapCrops(@onNull Point bitmapSize, @NonNull List<Point> displaySizes, @Nullable Map<Point, Rect> cropHints)180 public List<Rect> getBitmapCrops(@NonNull Point bitmapSize, @NonNull List<Point> displaySizes, 181 @Nullable Map<Point, Rect> cropHints) { 182 return unsupported(); 183 } 184 185 @Override getWallpaperColors(@onNull Bitmap bitmap, @Nullable Map<Point, Rect> cropHints)186 public WallpaperColors getWallpaperColors(@NonNull Bitmap bitmap, 187 @Nullable Map<Point, Rect> cropHints) { 188 return unsupported(); 189 } 190 191 @Override getWallpaperFile(int which)192 public ParcelFileDescriptor getWallpaperFile(int which) { 193 return unsupported(); 194 } 195 196 @Override addOnColorsChangedListener(OnColorsChangedListener listener, Handler handler)197 public void addOnColorsChangedListener(OnColorsChangedListener listener, Handler handler) { 198 unsupported(); 199 } 200 201 @Override addOnColorsChangedListener(OnColorsChangedListener listener, Handler handler, int userId)202 public void addOnColorsChangedListener(OnColorsChangedListener listener, Handler handler, 203 int userId) { 204 unsupported(); 205 } 206 207 @Override removeOnColorsChangedListener(OnColorsChangedListener callback)208 public void removeOnColorsChangedListener(OnColorsChangedListener callback) { 209 unsupported(); 210 } 211 212 @Override removeOnColorsChangedListener(OnColorsChangedListener callback, int userId)213 public void removeOnColorsChangedListener(OnColorsChangedListener callback, int userId) { 214 unsupported(); 215 } 216 217 @Override getWallpaperColors(int which)218 public WallpaperColors getWallpaperColors(int which) { 219 return unsupported(); 220 } 221 222 @Override getWallpaperColors(int which, int userId)223 public WallpaperColors getWallpaperColors(int which, int userId) { 224 return unsupported(); 225 } 226 227 @Override addOnColorsChangedListener(@onNull LocalWallpaperColorConsumer callback, List<RectF> regions, int which)228 public void addOnColorsChangedListener(@NonNull LocalWallpaperColorConsumer callback, 229 List<RectF> regions, int which) throws IllegalArgumentException { 230 unsupported(); 231 } 232 233 @Override removeOnColorsChangedListener(@onNull LocalWallpaperColorConsumer callback)234 public void removeOnColorsChangedListener(@NonNull LocalWallpaperColorConsumer callback) { 235 unsupported(); 236 } 237 238 @Override getWallpaperFile(int which, int userId)239 public ParcelFileDescriptor getWallpaperFile(int which, int userId) { 240 return unsupported(); 241 } 242 243 @Override getWallpaperFile(int which, boolean getCropped)244 public ParcelFileDescriptor getWallpaperFile(int which, boolean getCropped) { 245 return unsupported(); 246 } 247 248 @Override forgetLoadedWallpaper()249 public void forgetLoadedWallpaper() { 250 unsupported(); 251 } 252 253 @Override getWallpaperInfo()254 public WallpaperInfo getWallpaperInfo() { 255 return unsupported(); 256 } 257 getWallpaperInfoForUser(int userId)258 public WallpaperInfo getWallpaperInfoForUser(int userId) { 259 return unsupported(); 260 } 261 262 @Override getWallpaperInfo(@etWallpaperFlags int which)263 public WallpaperInfo getWallpaperInfo(@SetWallpaperFlags int which) { 264 return unsupported(); 265 } 266 267 @Override getWallpaperInfo(@etWallpaperFlags int which, int userId)268 public WallpaperInfo getWallpaperInfo(@SetWallpaperFlags int which, int userId) { 269 return unsupported(); 270 } 271 272 @Override getWallpaperInfoFile()273 public ParcelFileDescriptor getWallpaperInfoFile() { 274 return unsupported(); 275 } 276 277 @Override getWallpaperId(int which)278 public int getWallpaperId(int which) { 279 return unsupportedInt(); 280 } 281 282 @Override getWallpaperIdForUser(int which, int userId)283 public int getWallpaperIdForUser(int which, int userId) { 284 return unsupportedInt(); 285 } 286 287 @Override getCropAndSetWallpaperIntent(Uri imageUri)288 public Intent getCropAndSetWallpaperIntent(Uri imageUri) { 289 return unsupported(); 290 } 291 292 @Override setResource(int resid)293 public void setResource(int resid) throws IOException { 294 unsupported(); 295 } 296 297 @Override setResource(int resid, int which)298 public int setResource(int resid, int which) throws IOException { 299 unsupported(); 300 return 0; 301 } 302 303 @Override setBitmap(Bitmap bitmap)304 public void setBitmap(Bitmap bitmap) throws IOException { 305 unsupported(); 306 } 307 308 @Override setBitmap(Bitmap fullImage, Rect visibleCropHint, boolean allowBackup)309 public int setBitmap(Bitmap fullImage, Rect visibleCropHint, boolean allowBackup) 310 throws IOException { 311 unsupported(); 312 return 0; 313 } 314 315 @Override setBitmap(Bitmap fullImage, Rect visibleCropHint, boolean allowBackup, int which)316 public int setBitmap(Bitmap fullImage, Rect visibleCropHint, boolean allowBackup, int which) 317 throws IOException { 318 unsupported(); 319 return 0; 320 } 321 322 @Override setBitmap(Bitmap fullImage, Rect visibleCropHint, boolean allowBackup, int which, int userId)323 public int setBitmap(Bitmap fullImage, Rect visibleCropHint, boolean allowBackup, int which, 324 int userId) throws IOException { 325 unsupported(); 326 return 0; 327 } 328 setBitmapWithCrops(@ullable Bitmap fullImage, @NonNull Map<Point, Rect> cropHints, boolean allowBackup, @SetWallpaperFlags int which)329 public int setBitmapWithCrops(@Nullable Bitmap fullImage, @NonNull Map<Point, Rect> cropHints, 330 boolean allowBackup, @SetWallpaperFlags int which) throws IOException { 331 return unsupportedInt(); 332 } 333 334 @Override setStream(InputStream bitmapData)335 public void setStream(InputStream bitmapData) throws IOException { 336 unsupported(); 337 } 338 339 @Override setStream(InputStream bitmapData, Rect visibleCropHint, boolean allowBackup)340 public int setStream(InputStream bitmapData, Rect visibleCropHint, boolean allowBackup) 341 throws IOException { 342 unsupported(); 343 return 0; 344 } 345 346 @Override setStream(InputStream bitmapData, Rect visibleCropHint, boolean allowBackup, int which)347 public int setStream(InputStream bitmapData, Rect visibleCropHint, boolean allowBackup, 348 int which) throws IOException { 349 unsupported(); 350 return 0; 351 } 352 353 @Override setStreamWithCrops(InputStream bitmapData, @NonNull Map<Point, Rect> cropHints, boolean allowBackup, @SetWallpaperFlags int which)354 public int setStreamWithCrops(InputStream bitmapData, @NonNull Map<Point, Rect> cropHints, 355 boolean allowBackup, @SetWallpaperFlags int which) throws IOException { 356 return unsupportedInt(); 357 } 358 359 360 @Override setStreamWithCrops(@onNull InputStream bitmapData, @NonNull SparseArray<Rect> cropHints, boolean allowBackup, @SetWallpaperFlags int which )361 public int setStreamWithCrops(@NonNull InputStream bitmapData, 362 @NonNull SparseArray<Rect> cropHints, boolean allowBackup, @SetWallpaperFlags int which 363 ) throws IOException { 364 return unsupportedInt(); 365 } 366 367 @Override hasResourceWallpaper(int resid)368 public boolean hasResourceWallpaper(int resid) { 369 return unsupportedBoolean(); 370 } 371 372 @Override getDesiredMinimumWidth()373 public int getDesiredMinimumWidth() { 374 return unsupportedInt(); 375 } 376 377 @Override getDesiredMinimumHeight()378 public int getDesiredMinimumHeight() { 379 return unsupportedInt(); 380 } 381 382 @Override suggestDesiredDimensions(int minimumWidth, int minimumHeight)383 public void suggestDesiredDimensions(int minimumWidth, int minimumHeight) { 384 unsupported(); 385 } 386 387 @Override setDisplayPadding(Rect padding)388 public void setDisplayPadding(Rect padding) { 389 unsupported(); 390 } 391 392 @Override setDisplayOffset(IBinder windowToken, int x, int y)393 public void setDisplayOffset(IBinder windowToken, int x, int y) { 394 unsupported(); 395 } 396 397 @Override clearWallpaper()398 public void clearWallpaper() { 399 unsupported(); 400 } 401 402 @Override clearWallpaper(int which, int userId)403 public void clearWallpaper(int which, int userId) { 404 unsupported(); 405 } 406 407 @Override setWallpaperComponent(ComponentName name)408 public boolean setWallpaperComponent(ComponentName name) { 409 return unsupportedBoolean(); 410 } 411 412 413 @Override setWallpaperDimAmount(@loatRangefrom = 0f, to = 1f) float dimAmount)414 public void setWallpaperDimAmount(@FloatRange(from = 0f, to = 1f) float dimAmount) { 415 unsupported(); 416 } 417 418 @Override getWallpaperDimAmount()419 public @FloatRange(from = 0f, to = 1f) float getWallpaperDimAmount() { 420 return unsupportedInt(); 421 } 422 423 @Override lockScreenWallpaperExists()424 public boolean lockScreenWallpaperExists() { 425 return unsupportedBoolean(); 426 } 427 428 @Override setWallpaperComponent(ComponentName name, int userId)429 public boolean setWallpaperComponent(ComponentName name, int userId) { 430 return unsupportedBoolean(); 431 } 432 433 @Override setWallpaperComponentWithFlags(@onNull ComponentName name, @SetWallpaperFlags int which)434 public boolean setWallpaperComponentWithFlags(@NonNull ComponentName name, 435 @SetWallpaperFlags int which) { 436 return unsupportedBoolean(); 437 } 438 439 @Override setWallpaperComponentWithFlags(@onNull ComponentName name, @SetWallpaperFlags int which, int userId)440 public boolean setWallpaperComponentWithFlags(@NonNull ComponentName name, 441 @SetWallpaperFlags int which, int userId) { 442 return unsupportedBoolean(); 443 } 444 445 @Override setWallpaperOffsets(IBinder windowToken, float xOffset, float yOffset)446 public void setWallpaperOffsets(IBinder windowToken, float xOffset, float yOffset) { 447 unsupported(); 448 } 449 450 @Override setWallpaperOffsetSteps(float xStep, float yStep)451 public void setWallpaperOffsetSteps(float xStep, float yStep) { 452 unsupported(); 453 } 454 455 @Override sendWallpaperCommand(IBinder windowToken, String action, int x, int y, int z, Bundle extras)456 public void sendWallpaperCommand(IBinder windowToken, String action, int x, int y, int z, 457 Bundle extras) { 458 unsupported(); 459 } 460 461 @Override setWallpaperZoomOut(@onNull IBinder windowToken, float zoom)462 public void setWallpaperZoomOut(@NonNull IBinder windowToken, float zoom) { 463 unsupported(); 464 } 465 466 @Override isWallpaperSupported()467 public boolean isWallpaperSupported() { 468 return false; 469 } 470 471 @Override isSetWallpaperAllowed()472 public boolean isSetWallpaperAllowed() { 473 return false; 474 } 475 476 @Override clearWallpaperOffsets(IBinder windowToken)477 public void clearWallpaperOffsets(IBinder windowToken) { 478 unsupported(); 479 } 480 481 @Override clear()482 public void clear() throws IOException { 483 unsupported(); 484 } 485 486 @Override clear(int which)487 public void clear(int which) throws IOException { 488 unsupported(); 489 } 490 491 @Override isWallpaperBackupEligible(int which)492 public boolean isWallpaperBackupEligible(int which) { 493 return unsupportedBoolean(); 494 } 495 unsupported()496 private static <T> T unsupported() { 497 if (DEBUG) Log.w(TAG, "unsupported method called; returning null", new Exception()); 498 return null; 499 } 500 unsupportedBoolean()501 private static boolean unsupportedBoolean() { 502 if (DEBUG) Log.w(TAG, "unsupported method called; returning false", new Exception()); 503 return false; 504 } 505 unsupportedInt()506 private static int unsupportedInt() { 507 if (DEBUG) Log.w(TAG, "unsupported method called; returning -1", new Exception()); 508 return -1; 509 } 510 } 511