Merge "Clean up dependencies to SystemWindows"
This commit is contained in:
committed by
Android (Google) Code Review
commit
234777b773
@@ -30,6 +30,7 @@ import android.os.ServiceManager;
|
||||
import android.util.Slog;
|
||||
import android.util.SparseArray;
|
||||
import android.view.IDisplayWindowInsetsController;
|
||||
import android.view.IWindowManager;
|
||||
import android.view.InsetsSource;
|
||||
import android.view.InsetsSourceControl;
|
||||
import android.view.InsetsState;
|
||||
@@ -60,20 +61,20 @@ public class DisplayImeController implements DisplayController.OnDisplaysChanged
|
||||
private static final int DIRECTION_HIDE = 2;
|
||||
private static final int FLOATING_IME_BOTTOM_INSET = -80;
|
||||
|
||||
protected final SystemWindows mSystemWindows;
|
||||
protected final IWindowManager mWmService;
|
||||
protected final Handler mHandler;
|
||||
final TransactionPool mTransactionPool;
|
||||
private final TransactionPool mTransactionPool;
|
||||
private final DisplayController mDisplayController;
|
||||
private final SparseArray<PerDisplay> mImePerDisplay = new SparseArray<>();
|
||||
private final ArrayList<ImePositionProcessor> mPositionProcessors = new ArrayList<>();
|
||||
|
||||
final SparseArray<PerDisplay> mImePerDisplay = new SparseArray<>();
|
||||
|
||||
final ArrayList<ImePositionProcessor> mPositionProcessors = new ArrayList<>();
|
||||
|
||||
public DisplayImeController(SystemWindows syswin, DisplayController displayController,
|
||||
Handler handler, TransactionPool transactionPool) {
|
||||
mHandler = handler;
|
||||
mSystemWindows = syswin;
|
||||
public DisplayImeController(IWindowManager wmService, DisplayController displayController,
|
||||
Handler mainHandler, TransactionPool transactionPool) {
|
||||
mHandler = mainHandler;
|
||||
mWmService = wmService;
|
||||
mTransactionPool = transactionPool;
|
||||
displayController.addDisplayWindowListener(this);
|
||||
mDisplayController = displayController;
|
||||
mDisplayController.addDisplayWindowListener(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -81,9 +82,9 @@ public class DisplayImeController implements DisplayController.OnDisplaysChanged
|
||||
// Add's a system-ui window-manager specifically for ime. This type is special because
|
||||
// WM will defer IME inset handling to it in multi-window scenarious.
|
||||
PerDisplay pd = new PerDisplay(displayId,
|
||||
mSystemWindows.mDisplayController.getDisplayLayout(displayId).rotation());
|
||||
mDisplayController.getDisplayLayout(displayId).rotation());
|
||||
try {
|
||||
mSystemWindows.mWmService.setDisplayWindowInsetsController(displayId, pd);
|
||||
mWmService.setDisplayWindowInsetsController(displayId, pd);
|
||||
} catch (RemoteException e) {
|
||||
Slog.w(TAG, "Unable to set insets controller on display " + displayId);
|
||||
}
|
||||
@@ -96,7 +97,7 @@ public class DisplayImeController implements DisplayController.OnDisplaysChanged
|
||||
if (pd == null) {
|
||||
return;
|
||||
}
|
||||
if (mSystemWindows.mDisplayController.getDisplayLayout(displayId).rotation()
|
||||
if (mDisplayController.getDisplayLayout(displayId).rotation()
|
||||
!= pd.mRotation && isImeShowing(displayId)) {
|
||||
pd.startAnimation(true, false /* forceRestart */);
|
||||
}
|
||||
@@ -105,7 +106,7 @@ public class DisplayImeController implements DisplayController.OnDisplaysChanged
|
||||
@Override
|
||||
public void onDisplayRemoved(int displayId) {
|
||||
try {
|
||||
mSystemWindows.mWmService.setDisplayWindowInsetsController(displayId, null);
|
||||
mWmService.setDisplayWindowInsetsController(displayId, null);
|
||||
} catch (RemoteException e) {
|
||||
Slog.w(TAG, "Unable to remove insets controller on display " + displayId);
|
||||
}
|
||||
@@ -263,7 +264,7 @@ public class DisplayImeController implements DisplayController.OnDisplaysChanged
|
||||
private void setVisibleDirectly(boolean visible) {
|
||||
mInsetsState.getSource(InsetsState.ITYPE_IME).setVisible(visible);
|
||||
try {
|
||||
mSystemWindows.mWmService.modifyDisplayWindowInsets(mDisplayId, mInsetsState);
|
||||
mWmService.modifyDisplayWindowInsets(mDisplayId, mInsetsState);
|
||||
} catch (RemoteException e) {
|
||||
}
|
||||
}
|
||||
@@ -282,7 +283,7 @@ public class DisplayImeController implements DisplayController.OnDisplaysChanged
|
||||
// an IME inset). For now, we assume that no non-floating IME will be <= this nav bar
|
||||
// frame height so any reported frame that is <= nav-bar frame height is assumed to
|
||||
// be floating.
|
||||
return frame.height() <= mSystemWindows.mDisplayController.getDisplayLayout(mDisplayId)
|
||||
return frame.height() <= mDisplayController.getDisplayLayout(mDisplayId)
|
||||
.navBarFrameHeight();
|
||||
}
|
||||
|
||||
@@ -297,8 +298,7 @@ public class DisplayImeController implements DisplayController.OnDisplaysChanged
|
||||
// This is a "floating" or "expanded" IME, so to get animations, just
|
||||
// pretend the ime has some size just below the screen.
|
||||
mImeFrame.set(newFrame);
|
||||
final int floatingInset = (int) (
|
||||
mSystemWindows.mDisplayController.getDisplayLayout(mDisplayId)
|
||||
final int floatingInset = (int) (mDisplayController.getDisplayLayout(mDisplayId)
|
||||
.density() * FLOATING_IME_BOTTOM_INSET);
|
||||
mImeFrame.bottom -= floatingInset;
|
||||
} else if (newFrame.height() != 0) {
|
||||
|
||||
@@ -60,11 +60,10 @@ public class SystemWindows {
|
||||
private static final String TAG = "SystemWindows";
|
||||
|
||||
private final SparseArray<PerDisplay> mPerDisplay = new SparseArray<>();
|
||||
final HashMap<View, SurfaceControlViewHost> mViewRoots = new HashMap<>();
|
||||
public Context mContext;
|
||||
public IWindowManager mWmService;
|
||||
IWindowSession mSession;
|
||||
DisplayController mDisplayController;
|
||||
private final HashMap<View, SurfaceControlViewHost> mViewRoots = new HashMap<>();
|
||||
private final DisplayController mDisplayController;
|
||||
private final IWindowManager mWmService;
|
||||
private IWindowSession mSession;
|
||||
|
||||
private final DisplayController.OnDisplaysChangedListener mDisplayListener =
|
||||
new DisplayController.OnDisplaysChangedListener() {
|
||||
@@ -84,9 +83,7 @@ public class SystemWindows {
|
||||
public void onDisplayRemoved(int displayId) { }
|
||||
};
|
||||
|
||||
public SystemWindows(Context context, DisplayController displayController,
|
||||
IWindowManager wmService) {
|
||||
mContext = context;
|
||||
public SystemWindows(DisplayController displayController, IWindowManager wmService) {
|
||||
mWmService = wmService;
|
||||
mDisplayController = displayController;
|
||||
mDisplayController.addDisplayWindowListener(mDisplayListener);
|
||||
@@ -210,8 +207,8 @@ public class SystemWindows {
|
||||
}
|
||||
final Display display = mDisplayController.getDisplay(mDisplayId);
|
||||
SurfaceControlViewHost viewRoot =
|
||||
new SurfaceControlViewHost(mContext, display, wwm,
|
||||
true /* useSfChoreographer */);
|
||||
new SurfaceControlViewHost(
|
||||
view.getContext(), display, wwm, true /* useSfChoreographer */);
|
||||
attrs.flags |= FLAG_HARDWARE_ACCELERATED;
|
||||
viewRoot.setView(view, attrs);
|
||||
mViewRoots.put(view, viewRoot);
|
||||
@@ -313,7 +310,7 @@ public class SystemWindows {
|
||||
}
|
||||
}
|
||||
|
||||
class ContainerWindow extends IWindow.Stub {
|
||||
static class ContainerWindow extends IWindow.Stub {
|
||||
ContainerWindow() {}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -128,9 +128,9 @@ public abstract class CarSystemUIModule {
|
||||
|
||||
@Singleton
|
||||
@Provides
|
||||
static SystemWindows provideSystemWindows(Context context, DisplayController displayController,
|
||||
static SystemWindows provideSystemWindows(DisplayController displayController,
|
||||
IWindowManager wmService) {
|
||||
return new SystemWindows(context, displayController, wmService);
|
||||
return new SystemWindows(displayController, wmService);
|
||||
}
|
||||
|
||||
@Singleton
|
||||
|
||||
@@ -16,12 +16,14 @@
|
||||
|
||||
package com.android.systemui.wm;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Handler;
|
||||
import android.os.RemoteException;
|
||||
import android.util.ArraySet;
|
||||
import android.util.Slog;
|
||||
import android.util.SparseArray;
|
||||
import android.view.IDisplayWindowInsetsController;
|
||||
import android.view.IWindowManager;
|
||||
import android.view.InsetsController;
|
||||
import android.view.InsetsSourceControl;
|
||||
import android.view.InsetsState;
|
||||
@@ -32,7 +34,6 @@ import androidx.annotation.VisibleForTesting;
|
||||
import com.android.systemui.dagger.qualifiers.Main;
|
||||
import com.android.wm.shell.common.DisplayController;
|
||||
import com.android.wm.shell.common.DisplayImeController;
|
||||
import com.android.wm.shell.common.SystemWindows;
|
||||
import com.android.wm.shell.common.TransactionPool;
|
||||
|
||||
import javax.inject.Inject;
|
||||
@@ -50,29 +51,32 @@ public class DisplaySystemBarsController extends DisplayImeController {
|
||||
private static final String TAG = "DisplaySystemBarsController";
|
||||
|
||||
private SparseArray<PerDisplay> mPerDisplaySparseArray;
|
||||
private final Context mContext;
|
||||
|
||||
@Inject
|
||||
public DisplaySystemBarsController(
|
||||
SystemWindows syswin,
|
||||
Context context,
|
||||
IWindowManager wmService,
|
||||
DisplayController displayController,
|
||||
@Main Handler mainHandler,
|
||||
TransactionPool transactionPool) {
|
||||
super(syswin, displayController, mainHandler, transactionPool);
|
||||
super(wmService, displayController, mainHandler, transactionPool);
|
||||
mContext = context;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDisplayAdded(int displayId) {
|
||||
PerDisplay pd = new PerDisplay(displayId);
|
||||
try {
|
||||
mSystemWindows.mWmService.setDisplayWindowInsetsController(displayId, pd);
|
||||
mWmService.setDisplayWindowInsetsController(displayId, pd);
|
||||
} catch (RemoteException e) {
|
||||
Slog.w(TAG, "Unable to set insets controller on display " + displayId);
|
||||
}
|
||||
// Lazy loading policy control filters instead of during boot.
|
||||
if (mPerDisplaySparseArray == null) {
|
||||
mPerDisplaySparseArray = new SparseArray<>();
|
||||
BarControlPolicy.reloadFromSetting(mSystemWindows.mContext);
|
||||
BarControlPolicy.registerContentObserver(mSystemWindows.mContext, mHandler, () -> {
|
||||
BarControlPolicy.reloadFromSetting(mContext);
|
||||
BarControlPolicy.registerContentObserver(mContext, mHandler, () -> {
|
||||
int size = mPerDisplaySparseArray.size();
|
||||
for (int i = 0; i < size; i++) {
|
||||
mPerDisplaySparseArray.valueAt(i).modifyDisplayWindowInsets();
|
||||
@@ -85,7 +89,7 @@ public class DisplaySystemBarsController extends DisplayImeController {
|
||||
@Override
|
||||
public void onDisplayRemoved(int displayId) {
|
||||
try {
|
||||
mSystemWindows.mWmService.setDisplayWindowInsetsController(displayId, null);
|
||||
mWmService.setDisplayWindowInsetsController(displayId, null);
|
||||
} catch (RemoteException e) {
|
||||
Slog.w(TAG, "Unable to remove insets controller on display " + displayId);
|
||||
}
|
||||
@@ -155,7 +159,7 @@ public class DisplaySystemBarsController extends DisplayImeController {
|
||||
showInsets(barVisibilities[0], /* fromIme= */ false);
|
||||
hideInsets(barVisibilities[1], /* fromIme= */ false);
|
||||
try {
|
||||
mSystemWindows.mWmService.modifyDisplayWindowInsets(mDisplayId, mInsetsState);
|
||||
mWmService.modifyDisplayWindowInsets(mDisplayId, mInsetsState);
|
||||
} catch (RemoteException e) {
|
||||
Slog.w(TAG, "Unable to update window manager service.");
|
||||
}
|
||||
|
||||
@@ -34,7 +34,6 @@ import androidx.test.filters.SmallTest;
|
||||
|
||||
import com.android.systemui.SysuiTestCase;
|
||||
import com.android.wm.shell.common.DisplayController;
|
||||
import com.android.wm.shell.common.SystemWindows;
|
||||
import com.android.wm.shell.common.TransactionPool;
|
||||
|
||||
import org.junit.Before;
|
||||
@@ -52,8 +51,6 @@ public class DisplaySystemBarsControllerTest extends SysuiTestCase {
|
||||
|
||||
private static final int DISPLAY_ID = 1;
|
||||
|
||||
@Mock
|
||||
private SystemWindows mSystemWindows;
|
||||
@Mock
|
||||
private IWindowManager mIWindowManager;
|
||||
@Mock
|
||||
@@ -66,11 +63,10 @@ public class DisplaySystemBarsControllerTest extends SysuiTestCase {
|
||||
@Before
|
||||
public void setUp() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
mSystemWindows.mContext = mContext;
|
||||
mSystemWindows.mWmService = mIWindowManager;
|
||||
|
||||
mController = new DisplaySystemBarsController(
|
||||
mSystemWindows,
|
||||
mContext,
|
||||
mIWindowManager,
|
||||
mDisplayController,
|
||||
mHandler,
|
||||
mTransactionPool
|
||||
|
||||
@@ -52,16 +52,16 @@ public class WindowManagerShellModule {
|
||||
|
||||
@Singleton
|
||||
@Provides
|
||||
static SystemWindows provideSystemWindows(Context context, DisplayController displayController,
|
||||
static SystemWindows provideSystemWindows(DisplayController displayController,
|
||||
IWindowManager wmService) {
|
||||
return new SystemWindows(context, displayController, wmService);
|
||||
return new SystemWindows(displayController, wmService);
|
||||
}
|
||||
|
||||
@Singleton
|
||||
@Provides
|
||||
static DisplayImeController provideDisplayImeController(
|
||||
SystemWindows syswin, DisplayController displayController,
|
||||
IWindowManager wmService, DisplayController displayController,
|
||||
@Main Handler mainHandler, TransactionPool transactionPool) {
|
||||
return new DisplayImeController(syswin, displayController, mainHandler, transactionPool);
|
||||
return new DisplayImeController(wmService, displayController, mainHandler, transactionPool);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user