[DO NOT MERGE] Provide IconProvider in sysui dagger am: 7891acface

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/16091098

Change-Id: I4b2ac5cce73dbe16301ba0f75f13f9e70437e616
This commit is contained in:
Jerry Chang
2021-10-21 01:56:09 +00:00
committed by Automerger Merge Worker
5 changed files with 27 additions and 11 deletions

View File

@@ -110,9 +110,9 @@ public class SplashscreenContentDrawer {
@VisibleForTesting @VisibleForTesting
final ColorCache mColorCache; final ColorCache mColorCache;
SplashscreenContentDrawer(Context context, TransactionPool pool) { SplashscreenContentDrawer(Context context, IconProvider iconProvider, TransactionPool pool) {
mContext = context; mContext = context;
mIconProvider = new IconProvider(context); mIconProvider = iconProvider;
mTransactionPool = pool; mTransactionPool = pool;
// Initialize Splashscreen worker thread // Initialize Splashscreen worker thread

View File

@@ -61,6 +61,7 @@ import android.window.TaskSnapshot;
import com.android.internal.R; import com.android.internal.R;
import com.android.internal.annotations.VisibleForTesting; import com.android.internal.annotations.VisibleForTesting;
import com.android.launcher3.icons.IconProvider;
import com.android.wm.shell.common.ShellExecutor; import com.android.wm.shell.common.ShellExecutor;
import com.android.wm.shell.common.TransactionPool; import com.android.wm.shell.common.TransactionPool;
import com.android.wm.shell.common.annotations.ShellSplashscreenThread; import com.android.wm.shell.common.annotations.ShellSplashscreenThread;
@@ -123,11 +124,11 @@ public class StartingSurfaceDrawer {
* @param splashScreenExecutor The thread used to control add and remove starting window. * @param splashScreenExecutor The thread used to control add and remove starting window.
*/ */
public StartingSurfaceDrawer(Context context, ShellExecutor splashScreenExecutor, public StartingSurfaceDrawer(Context context, ShellExecutor splashScreenExecutor,
TransactionPool pool) { IconProvider iconProvider, TransactionPool pool) {
mContext = context; mContext = context;
mDisplayManager = mContext.getSystemService(DisplayManager.class); mDisplayManager = mContext.getSystemService(DisplayManager.class);
mSplashScreenExecutor = splashScreenExecutor; mSplashScreenExecutor = splashScreenExecutor;
mSplashscreenContentDrawer = new SplashscreenContentDrawer(mContext, pool); mSplashscreenContentDrawer = new SplashscreenContentDrawer(mContext, iconProvider, pool);
mSplashScreenExecutor.execute(() -> mChoreographer = Choreographer.getInstance()); mSplashScreenExecutor.execute(() -> mChoreographer = Choreographer.getInstance());
mWindowManagerGlobal = WindowManagerGlobal.getInstance(); mWindowManagerGlobal = WindowManagerGlobal.getInstance();
mDisplayManager.getDisplay(DEFAULT_DISPLAY); mDisplayManager.getDisplay(DEFAULT_DISPLAY);

View File

@@ -43,6 +43,7 @@ import androidx.annotation.BinderThread;
import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.GuardedBy;
import com.android.internal.util.function.TriConsumer; import com.android.internal.util.function.TriConsumer;
import com.android.launcher3.icons.IconProvider;
import com.android.wm.shell.common.RemoteCallable; import com.android.wm.shell.common.RemoteCallable;
import com.android.wm.shell.common.ShellExecutor; import com.android.wm.shell.common.ShellExecutor;
import com.android.wm.shell.common.TransactionPool; import com.android.wm.shell.common.TransactionPool;
@@ -85,9 +86,11 @@ public class StartingWindowController implements RemoteCallable<StartingWindowCo
private final SparseIntArray mTaskBackgroundColors = new SparseIntArray(); private final SparseIntArray mTaskBackgroundColors = new SparseIntArray();
public StartingWindowController(Context context, ShellExecutor splashScreenExecutor, public StartingWindowController(Context context, ShellExecutor splashScreenExecutor,
StartingWindowTypeAlgorithm startingWindowTypeAlgorithm, TransactionPool pool) { StartingWindowTypeAlgorithm startingWindowTypeAlgorithm, IconProvider iconProvider,
TransactionPool pool) {
mContext = context; mContext = context;
mStartingSurfaceDrawer = new StartingSurfaceDrawer(context, splashScreenExecutor, pool); mStartingSurfaceDrawer = new StartingSurfaceDrawer(context, splashScreenExecutor,
iconProvider, pool);
mStartingWindowTypeAlgorithm = startingWindowTypeAlgorithm; mStartingWindowTypeAlgorithm = startingWindowTypeAlgorithm;
mSplashScreenExecutor = splashScreenExecutor; mSplashScreenExecutor = splashScreenExecutor;
} }

View File

@@ -69,6 +69,7 @@ import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest; import androidx.test.filters.SmallTest;
import androidx.test.platform.app.InstrumentationRegistry; import androidx.test.platform.app.InstrumentationRegistry;
import com.android.launcher3.icons.IconProvider;
import com.android.wm.shell.common.HandlerExecutor; import com.android.wm.shell.common.HandlerExecutor;
import com.android.wm.shell.common.ShellExecutor; import com.android.wm.shell.common.ShellExecutor;
import com.android.wm.shell.common.TransactionPool; import com.android.wm.shell.common.TransactionPool;
@@ -93,6 +94,8 @@ public class StartingSurfaceDrawerTests {
@Mock @Mock
private WindowManager mMockWindowManager; private WindowManager mMockWindowManager;
@Mock @Mock
private IconProvider mIconProvider;
@Mock
private TransactionPool mTransactionPool; private TransactionPool mTransactionPool;
private final Handler mTestHandler = new Handler(Looper.getMainLooper()); private final Handler mTestHandler = new Handler(Looper.getMainLooper());
@@ -105,8 +108,8 @@ public class StartingSurfaceDrawerTests {
int mAddWindowForTask = 0; int mAddWindowForTask = 0;
TestStartingSurfaceDrawer(Context context, ShellExecutor splashScreenExecutor, TestStartingSurfaceDrawer(Context context, ShellExecutor splashScreenExecutor,
TransactionPool pool) { IconProvider iconProvider, TransactionPool pool) {
super(context, splashScreenExecutor, pool); super(context, splashScreenExecutor, iconProvider, pool);
} }
@Override @Override
@@ -156,7 +159,8 @@ public class StartingSurfaceDrawerTests {
doNothing().when(mMockWindowManager).addView(any(), any()); doNothing().when(mMockWindowManager).addView(any(), any());
mTestExecutor = new HandlerExecutor(mTestHandler); mTestExecutor = new HandlerExecutor(mTestHandler);
mStartingSurfaceDrawer = spy( mStartingSurfaceDrawer = spy(
new TestStartingSurfaceDrawer(mTestContext, mTestExecutor, mTransactionPool)); new TestStartingSurfaceDrawer(mTestContext, mTestExecutor, mIconProvider,
mTransactionPool));
} }
@Test @Test

View File

@@ -26,6 +26,7 @@ import android.view.WindowManager;
import com.android.internal.logging.UiEventLogger; import com.android.internal.logging.UiEventLogger;
import com.android.internal.statusbar.IStatusBarService; import com.android.internal.statusbar.IStatusBarService;
import com.android.launcher3.icons.IconProvider;
import com.android.systemui.dagger.WMComponent; import com.android.systemui.dagger.WMComponent;
import com.android.systemui.dagger.WMSingleton; import com.android.systemui.dagger.WMSingleton;
import com.android.wm.shell.RootDisplayAreaOrganizer; import com.android.wm.shell.RootDisplayAreaOrganizer;
@@ -169,6 +170,12 @@ public abstract class WMShellBaseModule {
return new SystemWindows(displayController, wmService); return new SystemWindows(displayController, wmService);
} }
@WMSingleton
@Provides
static IconProvider provideIconProvider(Context context) {
return new IconProvider(context);
}
// We currently dedupe multiple messages, so we use the shell main handler directly // We currently dedupe multiple messages, so we use the shell main handler directly
@WMSingleton @WMSingleton
@Provides @Provides
@@ -504,9 +511,10 @@ public abstract class WMShellBaseModule {
@Provides @Provides
static StartingWindowController provideStartingWindowController(Context context, static StartingWindowController provideStartingWindowController(Context context,
@ShellSplashscreenThread ShellExecutor splashScreenExecutor, @ShellSplashscreenThread ShellExecutor splashScreenExecutor,
StartingWindowTypeAlgorithm startingWindowTypeAlgorithm, TransactionPool pool) { StartingWindowTypeAlgorithm startingWindowTypeAlgorithm, IconProvider iconProvider,
TransactionPool pool) {
return new StartingWindowController(context, splashScreenExecutor, return new StartingWindowController(context, splashScreenExecutor,
startingWindowTypeAlgorithm, pool); startingWindowTypeAlgorithm, iconProvider, pool);
} }
// //