[DO NOT MERGE] Provide IconProvider in sysui dagger
So that other components can get app icon throught it as well. Like showing app icon as resizing hint while dragging divider bar in split screen. Bug: 202740435 Bug: 201653912 Test: atest WMShellUnitTests Change-Id: I7cc10be4ebfe7f9aad5db036a595613546ca15c9
This commit is contained in:
@@ -110,9 +110,9 @@ public class SplashscreenContentDrawer {
|
||||
@VisibleForTesting
|
||||
final ColorCache mColorCache;
|
||||
|
||||
SplashscreenContentDrawer(Context context, TransactionPool pool) {
|
||||
SplashscreenContentDrawer(Context context, IconProvider iconProvider, TransactionPool pool) {
|
||||
mContext = context;
|
||||
mIconProvider = new IconProvider(context);
|
||||
mIconProvider = iconProvider;
|
||||
mTransactionPool = pool;
|
||||
|
||||
// Initialize Splashscreen worker thread
|
||||
|
||||
@@ -61,6 +61,7 @@ import android.window.TaskSnapshot;
|
||||
|
||||
import com.android.internal.R;
|
||||
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.TransactionPool;
|
||||
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.
|
||||
*/
|
||||
public StartingSurfaceDrawer(Context context, ShellExecutor splashScreenExecutor,
|
||||
TransactionPool pool) {
|
||||
IconProvider iconProvider, TransactionPool pool) {
|
||||
mContext = context;
|
||||
mDisplayManager = mContext.getSystemService(DisplayManager.class);
|
||||
mSplashScreenExecutor = splashScreenExecutor;
|
||||
mSplashscreenContentDrawer = new SplashscreenContentDrawer(mContext, pool);
|
||||
mSplashscreenContentDrawer = new SplashscreenContentDrawer(mContext, iconProvider, pool);
|
||||
mSplashScreenExecutor.execute(() -> mChoreographer = Choreographer.getInstance());
|
||||
mWindowManagerGlobal = WindowManagerGlobal.getInstance();
|
||||
mDisplayManager.getDisplay(DEFAULT_DISPLAY);
|
||||
|
||||
@@ -43,6 +43,7 @@ import androidx.annotation.BinderThread;
|
||||
|
||||
import com.android.internal.annotations.GuardedBy;
|
||||
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.ShellExecutor;
|
||||
import com.android.wm.shell.common.TransactionPool;
|
||||
@@ -85,9 +86,11 @@ public class StartingWindowController implements RemoteCallable<StartingWindowCo
|
||||
private final SparseIntArray mTaskBackgroundColors = new SparseIntArray();
|
||||
|
||||
public StartingWindowController(Context context, ShellExecutor splashScreenExecutor,
|
||||
StartingWindowTypeAlgorithm startingWindowTypeAlgorithm, TransactionPool pool) {
|
||||
StartingWindowTypeAlgorithm startingWindowTypeAlgorithm, IconProvider iconProvider,
|
||||
TransactionPool pool) {
|
||||
mContext = context;
|
||||
mStartingSurfaceDrawer = new StartingSurfaceDrawer(context, splashScreenExecutor, pool);
|
||||
mStartingSurfaceDrawer = new StartingSurfaceDrawer(context, splashScreenExecutor,
|
||||
iconProvider, pool);
|
||||
mStartingWindowTypeAlgorithm = startingWindowTypeAlgorithm;
|
||||
mSplashScreenExecutor = splashScreenExecutor;
|
||||
}
|
||||
|
||||
@@ -69,6 +69,7 @@ import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||
import androidx.test.filters.SmallTest;
|
||||
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.ShellExecutor;
|
||||
import com.android.wm.shell.common.TransactionPool;
|
||||
@@ -93,6 +94,8 @@ public class StartingSurfaceDrawerTests {
|
||||
@Mock
|
||||
private WindowManager mMockWindowManager;
|
||||
@Mock
|
||||
private IconProvider mIconProvider;
|
||||
@Mock
|
||||
private TransactionPool mTransactionPool;
|
||||
|
||||
private final Handler mTestHandler = new Handler(Looper.getMainLooper());
|
||||
@@ -105,8 +108,8 @@ public class StartingSurfaceDrawerTests {
|
||||
int mAddWindowForTask = 0;
|
||||
|
||||
TestStartingSurfaceDrawer(Context context, ShellExecutor splashScreenExecutor,
|
||||
TransactionPool pool) {
|
||||
super(context, splashScreenExecutor, pool);
|
||||
IconProvider iconProvider, TransactionPool pool) {
|
||||
super(context, splashScreenExecutor, iconProvider, pool);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -156,7 +159,8 @@ public class StartingSurfaceDrawerTests {
|
||||
doNothing().when(mMockWindowManager).addView(any(), any());
|
||||
mTestExecutor = new HandlerExecutor(mTestHandler);
|
||||
mStartingSurfaceDrawer = spy(
|
||||
new TestStartingSurfaceDrawer(mTestContext, mTestExecutor, mTransactionPool));
|
||||
new TestStartingSurfaceDrawer(mTestContext, mTestExecutor, mIconProvider,
|
||||
mTransactionPool));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -26,6 +26,7 @@ import android.view.WindowManager;
|
||||
|
||||
import com.android.internal.logging.UiEventLogger;
|
||||
import com.android.internal.statusbar.IStatusBarService;
|
||||
import com.android.launcher3.icons.IconProvider;
|
||||
import com.android.systemui.dagger.WMComponent;
|
||||
import com.android.systemui.dagger.WMSingleton;
|
||||
import com.android.wm.shell.RootDisplayAreaOrganizer;
|
||||
@@ -169,6 +170,12 @@ public abstract class WMShellBaseModule {
|
||||
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
|
||||
@WMSingleton
|
||||
@Provides
|
||||
@@ -504,9 +511,10 @@ public abstract class WMShellBaseModule {
|
||||
@Provides
|
||||
static StartingWindowController provideStartingWindowController(Context context,
|
||||
@ShellSplashscreenThread ShellExecutor splashScreenExecutor,
|
||||
StartingWindowTypeAlgorithm startingWindowTypeAlgorithm, TransactionPool pool) {
|
||||
StartingWindowTypeAlgorithm startingWindowTypeAlgorithm, IconProvider iconProvider,
|
||||
TransactionPool pool) {
|
||||
return new StartingWindowController(context, splashScreenExecutor,
|
||||
startingWindowTypeAlgorithm, pool);
|
||||
startingWindowTypeAlgorithm, iconProvider, pool);
|
||||
}
|
||||
|
||||
//
|
||||
|
||||
Reference in New Issue
Block a user