1 // Copyright 2020 The Chromium Authors 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 package org.chromium.base.compat; 6 7 import android.app.ActivityManager; 8 import android.content.Context; 9 import android.graphics.Rect; 10 import android.hardware.input.InputManager; 11 import android.net.Uri; 12 import android.os.Build; 13 import android.os.storage.StorageManager; 14 import android.view.Display; 15 import android.view.InputEvent; 16 import android.view.VerifiedInputEvent; 17 import android.view.WindowManager; 18 19 import androidx.annotation.RequiresApi; 20 21 import java.io.File; 22 23 /** 24 * Utility class to use new APIs that were added in R (API level 30). These need to exist in a 25 * separate class so that Android framework can successfully verify classes without 26 * encountering the new APIs. 27 */ 28 @RequiresApi(Build.VERSION_CODES.R) 29 public final class ApiHelperForR { ApiHelperForR()30 private ApiHelperForR() {} 31 getDisplay(Context context)32 public static Display getDisplay(Context context) throws UnsupportedOperationException { 33 return context.getDisplay(); 34 } 35 36 /** 37 * See {@link StorageManager#getStorageVolume(Uri)}. 38 * See {@link File#getDirectory()}. 39 */ getVolumeDir(StorageManager manager, Uri uri)40 public static File getVolumeDir(StorageManager manager, Uri uri) { 41 return manager.getStorageVolume(uri).getDirectory(); 42 } 43 44 /** See {@link InputManager#verifyInputEvent(InputEvent)}. */ verifyInputEvent(InputManager manager, InputEvent inputEvent)45 public static VerifiedInputEvent verifyInputEvent(InputManager manager, InputEvent inputEvent) { 46 return manager.verifyInputEvent(inputEvent); 47 } 48 49 /** See {@link android.app.ActivityManager#setProcessStateSummary(byte[])} */ setProcessStateSummary(ActivityManager am, byte[] bytes)50 public static void setProcessStateSummary(ActivityManager am, byte[] bytes) { 51 am.setProcessStateSummary(bytes); 52 } 53 54 /** 55 * See {@link WindowManager#getMaximumWindowMetrics()}. 56 * See {@link WindowMetrics#getBounds()}. 57 */ getMaximumWindowMetricsBounds(WindowManager manager)58 public static Rect getMaximumWindowMetricsBounds(WindowManager manager) { 59 return manager.getMaximumWindowMetrics().getBounds(); 60 } 61 } 62