• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2018 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.Activity;
8 import android.content.ClipData;
9 import android.content.ComponentName;
10 import android.content.pm.PackageManager;
11 import android.media.MediaCodec.CryptoInfo;
12 import android.net.ConnectivityManager;
13 import android.os.Build;
14 import android.os.Process;
15 import android.security.NetworkSecurityPolicy;
16 import android.view.MotionEvent;
17 import android.view.PointerIcon;
18 import android.view.View;
19 import android.view.View.DragShadowBuilder;
20 
21 import androidx.annotation.RequiresApi;
22 
23 /**
24  * Utility class to use new APIs that were added in N (API level 24). 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.N)
29 public final class ApiHelperForN {
ApiHelperForN()30     private ApiHelperForN() {}
31 
32     /** See {@link View#startDragAndDrop(ClipData, DragShadowBuilder, Object, int)}. */
startDragAndDrop( View view, ClipData data, DragShadowBuilder shadowBuilder, Object myLocalState, int flags)33     public static boolean startDragAndDrop(
34             View view,
35             ClipData data,
36             DragShadowBuilder shadowBuilder,
37             Object myLocalState,
38             int flags) {
39         return view.startDragAndDrop(data, shadowBuilder, myLocalState, flags);
40     }
41 
42     /** See {@link CryptoInfo#setPattern(Pattern)}. */
setCryptoInfoPattern(CryptoInfo cryptoInfo, int encrypt, int skip)43     public static void setCryptoInfoPattern(CryptoInfo cryptoInfo, int encrypt, int skip) {
44         cryptoInfo.setPattern(new CryptoInfo.Pattern(encrypt, skip));
45     }
46 
47     /** See {@link Activity#setVrModeEnabled(boolean, ComponentName)}. */
setVrModeEnabled( Activity activity, boolean enabled, ComponentName requestedComponent)48     public static void setVrModeEnabled(
49             Activity activity, boolean enabled, ComponentName requestedComponent)
50             throws PackageManager.NameNotFoundException {
51         activity.setVrModeEnabled(enabled, requestedComponent);
52     }
53 
54     /** See {@link NetworkSecurityPolicy#isCleartextTrafficPermitted(String)}. */
isCleartextTrafficPermitted(String host)55     public static boolean isCleartextTrafficPermitted(String host) {
56         return NetworkSecurityPolicy.getInstance().isCleartextTrafficPermitted(host);
57     }
58 
59     /** See {@link View#onResolvePointerIcon(MotionEvent, int)}. */
onResolvePointerIcon(View view, MotionEvent event, int pointerIndex)60     public static PointerIcon onResolvePointerIcon(View view, MotionEvent event, int pointerIndex) {
61         return view.onResolvePointerIcon(event, pointerIndex);
62     }
63 
64     /** See {@link Process#getStartUptimeMillis()}. */
getStartUptimeMillis()65     public static long getStartUptimeMillis() {
66         return Process.getStartUptimeMillis();
67     }
68 
69     /** See {@link ConnectivityManager#getRestrictBackgroundStatus(ConnectivityManager)}. */
getRestrictBackgroundStatus(ConnectivityManager cm)70     public static int getRestrictBackgroundStatus(ConnectivityManager cm) {
71         return cm.getRestrictBackgroundStatus();
72     }
73 }
74