diff --git a/src/com/android/launcher3/widget/LauncherAppWidgetHost.java b/src/com/android/launcher3/widget/LauncherAppWidgetHost.java index 40c39840d6..71d850390d 100644 --- a/src/com/android/launcher3/widget/LauncherAppWidgetHost.java +++ b/src/com/android/launcher3/widget/LauncherAppWidgetHost.java @@ -21,22 +21,16 @@ import static com.android.launcher3.widget.LauncherWidgetHolder.APPWIDGET_HOST_I import android.appwidget.AppWidgetHost; import android.appwidget.AppWidgetProviderInfo; import android.content.Context; -import android.view.accessibility.AccessibilityNodeInfo; -import android.widget.RemoteViews; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import com.android.launcher3.LauncherAppState; import com.android.launcher3.util.Executors; -import com.android.launcher3.util.SafeCloseable; import com.android.launcher3.widget.LauncherWidgetHolder.ProviderChangedListener; import java.util.ArrayList; -import java.util.Collections; import java.util.List; -import java.util.Set; -import java.util.WeakHashMap; import java.util.function.IntConsumer; /** @@ -129,37 +123,4 @@ class LauncherAppWidgetHost extends AppWidgetHost { public void clearViews() { super.clearViews(); } - - public static class ListenableHostView extends LauncherAppWidgetHostView { - - private Set mUpdateListeners = Collections.EMPTY_SET; - - ListenableHostView(Context context) { - super(context); - } - - @Override - public void updateAppWidget(RemoteViews remoteViews) { - super.updateAppWidget(remoteViews); - mUpdateListeners.forEach(Runnable::run); - } - - @Override - public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { - super.onInitializeAccessibilityNodeInfo(info); - info.setClassName(LauncherAppWidgetHostView.class.getName()); - } - - /** - * Adds a callback to be run everytime the provided app widget updates. - * @return a closable to remove this callback - */ - public SafeCloseable addUpdateListener(Runnable callback) { - if (mUpdateListeners == Collections.EMPTY_SET) { - mUpdateListeners = Collections.newSetFromMap(new WeakHashMap<>()); - } - mUpdateListeners.add(callback); - return () -> mUpdateListeners.remove(callback); - } - } } diff --git a/src/com/android/launcher3/widget/LauncherWidgetHolder.java b/src/com/android/launcher3/widget/LauncherWidgetHolder.java index 1fb8c8306f..93451b3978 100644 --- a/src/com/android/launcher3/widget/LauncherWidgetHolder.java +++ b/src/com/android/launcher3/widget/LauncherWidgetHolder.java @@ -49,7 +49,6 @@ import com.android.launcher3.testing.shared.TestProtocol; import com.android.launcher3.util.LooperExecutor; import com.android.launcher3.util.ResourceBasedOverride; import com.android.launcher3.util.SafeCloseable; -import com.android.launcher3.widget.LauncherAppWidgetHost.ListenableHostView; import com.android.launcher3.widget.custom.CustomWidgetManager; import java.util.ArrayList; diff --git a/src/com/android/launcher3/widget/ListenableHostView.java b/src/com/android/launcher3/widget/ListenableHostView.java new file mode 100644 index 0000000000..b809db016b --- /dev/null +++ b/src/com/android/launcher3/widget/ListenableHostView.java @@ -0,0 +1,60 @@ +/* + * Copyright (C) 2024 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 com.android.launcher3.widget; + +import android.content.Context; +import android.view.accessibility.AccessibilityNodeInfo; +import android.widget.RemoteViews; + +import com.android.launcher3.util.SafeCloseable; + +import java.util.Collections; +import java.util.Set; +import java.util.WeakHashMap; + +public class ListenableHostView extends LauncherAppWidgetHostView { + + private Set mUpdateListeners = Collections.EMPTY_SET; + + ListenableHostView(Context context) { + super(context); + } + + @Override + public void updateAppWidget(RemoteViews remoteViews) { + super.updateAppWidget(remoteViews); + mUpdateListeners.forEach(Runnable::run); + } + + @Override + public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { + super.onInitializeAccessibilityNodeInfo(info); + info.setClassName(LauncherAppWidgetHostView.class.getName()); + } + + /** + * Adds a callback to be run everytime the provided app widget updates. + * @return a closable to remove this callback + */ + public SafeCloseable addUpdateListener(Runnable callback) { + if (mUpdateListeners == Collections.EMPTY_SET) { + mUpdateListeners = Collections.newSetFromMap(new WeakHashMap<>()); + } + mUpdateListeners.add(callback); + return () -> mUpdateListeners.remove(callback); + } +}