diff options
author | 2022-10-28 16:06:40 +0000 | |
---|---|---|
committer | 2022-10-28 16:06:40 +0000 | |
commit | 6bc4ed39c208b2e957c0360d34b3eeb860667ec8 (patch) | |
tree | fbf6736a7aab5616976f27d14e27941c9585885e | |
parent | c22578bcb7e039886175b5dfe65823039364141f (diff) | |
parent | f629ddf28bc6c0e1e8ee92b7f73e7843ef461c13 (diff) |
Merge "Rename IInputMethodManagerGlobal to InputMethodManagerGlobal"
-rw-r--r-- | core/java/android/view/inputmethod/IInputMethodManagerGlobalInvoker.java (renamed from core/java/com/android/internal/inputmethod/IInputMethodManagerGlobal.java) | 23 | ||||
-rw-r--r-- | core/java/android/view/inputmethod/InputMethodManagerGlobal.java | 104 | ||||
-rw-r--r-- | core/java/com/android/internal/inputmethod/ImeTracing.java | 9 | ||||
-rw-r--r-- | core/java/com/android/internal/inputmethod/ImeTracingClientImpl.java | 3 | ||||
-rw-r--r-- | libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayImeController.java | 4 |
5 files changed, 126 insertions, 17 deletions
diff --git a/core/java/com/android/internal/inputmethod/IInputMethodManagerGlobal.java b/core/java/android/view/inputmethod/IInputMethodManagerGlobalInvoker.java index 5392bdcec5ee..e32c6aafc4df 100644 --- a/core/java/com/android/internal/inputmethod/IInputMethodManagerGlobal.java +++ b/core/java/android/view/inputmethod/IInputMethodManagerGlobalInvoker.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.internal.inputmethod; +package android.view.inputmethod; import android.annotation.AnyThread; import android.annotation.NonNull; @@ -36,8 +36,11 @@ import java.util.function.Consumer; * * <p>All public methods are guaranteed to do nothing when {@link IInputMethodManager} is * unavailable.</p> + * + * <p>If you want to use any of this method outside of {@code android.view.inputmethod}, create + * a wrapper method in {@link InputMethodManagerGlobal} instead of making this class public.</p> */ -public final class IInputMethodManagerGlobal { +final class IInputMethodManagerGlobalInvoker { @Nullable private static volatile IInputMethodManager sServiceCache = null; @@ -45,7 +48,7 @@ public final class IInputMethodManagerGlobal { * @return {@code true} if {@link IInputMethodManager} is available. */ @AnyThread - public static boolean isAvailable() { + static boolean isAvailable() { return getService() != null; } @@ -79,14 +82,14 @@ public final class IInputMethodManagerGlobal { * * @param protoDump client or service side information to be stored by the server * @param source where the information is coming from, refer to - * {@link ImeTracing#IME_TRACING_FROM_CLIENT} and - * {@link ImeTracing#IME_TRACING_FROM_IMS} + * {@link com.android.internal.inputmethod.ImeTracing#IME_TRACING_FROM_CLIENT} and + * {@link com.android.internal.inputmethod.ImeTracing#IME_TRACING_FROM_IMS} * @param where where the information is coming from. * @param exceptionHandler an optional {@link RemoteException} handler. */ @RequiresNoPermission @AnyThread - public static void startProtoDump(byte[] protoDump, int source, String where, + static void startProtoDump(byte[] protoDump, int source, String where, @Nullable Consumer<RemoteException> exceptionHandler) { final IInputMethodManager service = getService(); if (service == null) { @@ -106,7 +109,7 @@ public final class IInputMethodManagerGlobal { */ @RequiresPermission(android.Manifest.permission.CONTROL_UI_TRACING) @AnyThread - public static void startImeTrace(@Nullable Consumer<RemoteException> exceptionHandler) { + static void startImeTrace(@Nullable Consumer<RemoteException> exceptionHandler) { final IInputMethodManager service = getService(); if (service == null) { return; @@ -125,7 +128,7 @@ public final class IInputMethodManagerGlobal { */ @RequiresPermission(android.Manifest.permission.CONTROL_UI_TRACING) @AnyThread - public static void stopImeTrace(@Nullable Consumer<RemoteException> exceptionHandler) { + static void stopImeTrace(@Nullable Consumer<RemoteException> exceptionHandler) { final IInputMethodManager service = getService(); if (service == null) { return; @@ -144,7 +147,7 @@ public final class IInputMethodManagerGlobal { */ @RequiresNoPermission @AnyThread - public static boolean isImeTraceEnabled() { + static boolean isImeTraceEnabled() { final IInputMethodManager service = getService(); if (service == null) { return false; @@ -161,7 +164,7 @@ public final class IInputMethodManagerGlobal { */ @RequiresPermission(android.Manifest.permission.INTERNAL_SYSTEM_WINDOW) @AnyThread - public static void removeImeSurface(@Nullable Consumer<RemoteException> exceptionHandler) { + static void removeImeSurface(@Nullable Consumer<RemoteException> exceptionHandler) { final IInputMethodManager service = getService(); if (service == null) { return; diff --git a/core/java/android/view/inputmethod/InputMethodManagerGlobal.java b/core/java/android/view/inputmethod/InputMethodManagerGlobal.java new file mode 100644 index 000000000000..63d9167bb2f9 --- /dev/null +++ b/core/java/android/view/inputmethod/InputMethodManagerGlobal.java @@ -0,0 +1,104 @@ +/* + * 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 android.view.inputmethod; + +import android.annotation.AnyThread; +import android.annotation.Nullable; +import android.annotation.RequiresNoPermission; +import android.annotation.RequiresPermission; +import android.os.RemoteException; + +import com.android.internal.inputmethod.ImeTracing; +import com.android.internal.view.IInputMethodManager; + +import java.util.function.Consumer; + +/** + * Defines a set of static methods that can be used globally by framework classes. + * + * @hide + */ +public class InputMethodManagerGlobal { + /** + * @return {@code true} if IME tracing is currently is available. + */ + @AnyThread + public static boolean isImeTraceAvailable() { + return IInputMethodManagerGlobalInvoker.isAvailable(); + } + + /** + * Invokes {@link IInputMethodManager#startProtoDump(byte[], int, String)}. + * + * @param protoDump client or service side information to be stored by the server + * @param source where the information is coming from, refer to + * {@link ImeTracing#IME_TRACING_FROM_CLIENT} and + * {@link ImeTracing#IME_TRACING_FROM_IMS} + * @param where where the information is coming from. + * @param exceptionHandler an optional {@link RemoteException} handler. + */ + @RequiresNoPermission + @AnyThread + public static void startProtoDump(byte[] protoDump, int source, String where, + @Nullable Consumer<RemoteException> exceptionHandler) { + IInputMethodManagerGlobalInvoker.startProtoDump(protoDump, source, where, exceptionHandler); + } + + /** + * Invokes {@link IInputMethodManager#startImeTrace()}. + * + * @param exceptionHandler an optional {@link RemoteException} handler. + */ + @RequiresPermission(android.Manifest.permission.CONTROL_UI_TRACING) + @AnyThread + public static void startImeTrace(@Nullable Consumer<RemoteException> exceptionHandler) { + IInputMethodManagerGlobalInvoker.startImeTrace(exceptionHandler); + } + + /** + * Invokes {@link IInputMethodManager#stopImeTrace()}. + * + * @param exceptionHandler an optional {@link RemoteException} handler. + */ + @RequiresPermission(android.Manifest.permission.CONTROL_UI_TRACING) + @AnyThread + public static void stopImeTrace(@Nullable Consumer<RemoteException> exceptionHandler) { + IInputMethodManagerGlobalInvoker.stopImeTrace(exceptionHandler); + } + + /** + * Invokes {@link IInputMethodManager#isImeTraceEnabled()}. + * + * @return The return value of {@link IInputMethodManager#isImeTraceEnabled()}. + */ + @RequiresNoPermission + @AnyThread + public static boolean isImeTraceEnabled() { + return IInputMethodManagerGlobalInvoker.isImeTraceEnabled(); + } + + /** + * Invokes {@link IInputMethodManager#removeImeSurface()} + * + * @param exceptionHandler an optional {@link RemoteException} handler. + */ + @RequiresPermission(android.Manifest.permission.INTERNAL_SYSTEM_WINDOW) + @AnyThread + public static void removeImeSurface(@Nullable Consumer<RemoteException> exceptionHandler) { + IInputMethodManagerGlobalInvoker.removeImeSurface(exceptionHandler); + } +} diff --git a/core/java/com/android/internal/inputmethod/ImeTracing.java b/core/java/com/android/internal/inputmethod/ImeTracing.java index a4328cc14aa0..e6a9b543dae2 100644 --- a/core/java/com/android/internal/inputmethod/ImeTracing.java +++ b/core/java/com/android/internal/inputmethod/ImeTracing.java @@ -22,6 +22,7 @@ import android.app.ActivityThread; import android.util.Log; import android.util.proto.ProtoOutputStream; import android.view.inputmethod.InputMethodManager; +import android.view.inputmethod.InputMethodManagerGlobal; import java.io.PrintWriter; @@ -44,7 +45,7 @@ public abstract class ImeTracing { private static ImeTracing sInstance; static boolean sEnabled = false; - private final boolean mIsAvailable = IInputMethodManagerGlobal.isAvailable(); + private final boolean mIsAvailable = InputMethodManagerGlobal.isImeTraceAvailable(); protected boolean mDumpInProgress; protected final Object mDumpInProgressLock = new Object(); @@ -81,7 +82,7 @@ public abstract class ImeTracing { * @param where */ public void sendToService(byte[] protoDump, int source, String where) { - IInputMethodManagerGlobal.startProtoDump(protoDump, source, where, + InputMethodManagerGlobal.startProtoDump(protoDump, source, where, e -> Log.e(TAG, "Exception while sending ime-related dump to server", e)); } @@ -90,7 +91,7 @@ public abstract class ImeTracing { */ @RequiresPermission(android.Manifest.permission.CONTROL_UI_TRACING) public final void startImeTrace() { - IInputMethodManagerGlobal.startImeTrace(e -> Log.e(TAG, "Could not start ime trace.", e)); + InputMethodManagerGlobal.startImeTrace(e -> Log.e(TAG, "Could not start ime trace.", e)); } /** @@ -98,7 +99,7 @@ public abstract class ImeTracing { */ @RequiresPermission(android.Manifest.permission.CONTROL_UI_TRACING) public final void stopImeTrace() { - IInputMethodManagerGlobal.stopImeTrace(e -> Log.e(TAG, "Could not stop ime trace.", e)); + InputMethodManagerGlobal.stopImeTrace(e -> Log.e(TAG, "Could not stop ime trace.", e)); } /** diff --git a/core/java/com/android/internal/inputmethod/ImeTracingClientImpl.java b/core/java/com/android/internal/inputmethod/ImeTracingClientImpl.java index 4caca84d76c7..95ed4ed50971 100644 --- a/core/java/com/android/internal/inputmethod/ImeTracingClientImpl.java +++ b/core/java/com/android/internal/inputmethod/ImeTracingClientImpl.java @@ -20,6 +20,7 @@ import android.annotation.NonNull; import android.annotation.Nullable; import android.util.proto.ProtoOutputStream; import android.view.inputmethod.InputMethodManager; +import android.view.inputmethod.InputMethodManagerGlobal; import java.io.PrintWriter; @@ -28,7 +29,7 @@ import java.io.PrintWriter; */ class ImeTracingClientImpl extends ImeTracing { ImeTracingClientImpl() { - sEnabled = IInputMethodManagerGlobal.isImeTraceEnabled(); + sEnabled = InputMethodManagerGlobal.isImeTraceEnabled(); } @Override diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayImeController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayImeController.java index 0bb76b9e61e7..bb7c4134aaaf 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayImeController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayImeController.java @@ -38,10 +38,10 @@ import android.view.WindowInsets; import android.view.WindowInsets.Type.InsetsType; import android.view.animation.Interpolator; import android.view.animation.PathInterpolator; +import android.view.inputmethod.InputMethodManagerGlobal; import androidx.annotation.VisibleForTesting; -import com.android.internal.inputmethod.IInputMethodManagerGlobal; import com.android.wm.shell.sysui.ShellInit; import java.util.ArrayList; @@ -515,7 +515,7 @@ public class DisplayImeController implements DisplayController.OnDisplaysChanged void removeImeSurface() { // Remove the IME surface to make the insets invisible for // non-client controlled insets. - IInputMethodManagerGlobal.removeImeSurface( + InputMethodManagerGlobal.removeImeSurface( e -> Slog.e(TAG, "Failed to remove IME surface.", e)); } |