Loading core/java/android/app/ActivityManagerNative.java +2 −2 Original line number Diff line number Diff line Loading @@ -1998,7 +1998,7 @@ public abstract class ActivityManagerNative extends Binder implements IActivityM data.enforceInterface(IActivityManager.descriptor); IBinder parentActivityToken = data.readStrongBinder(); IActivityContainerCallback callback = (IActivityContainerCallback) data.readStrongBinder(); IActivityContainerCallback.Stub.asInterface(data.readStrongBinder()); IActivityContainer activityContainer = createActivityContainer(parentActivityToken, callback); reply.writeNoException(); Loading Loading @@ -4627,7 +4627,7 @@ class ActivityManagerProxy implements IActivityManager Parcel reply = Parcel.obtain(); data.writeInterfaceToken(IActivityManager.descriptor); data.writeStrongBinder(parentActivityToken); data.writeStrongBinder((IBinder)callback); data.writeStrongBinder(callback == null ? null : callback.asBinder()); mRemote.transact(CREATE_ACTIVITY_CONTAINER_TRANSACTION, data, reply, 0); reply.readException(); final int result = reply.readInt(); Loading core/java/android/app/ActivityView.java +12 −2 Original line number Diff line number Diff line Loading @@ -92,8 +92,8 @@ public class ActivityView extends ViewGroup { super.onAttachedToWindow(); try { final IBinder token = mActivity.getActivityToken(); mActivityContainer = ActivityManagerNative.getDefault().createActivityContainer(token, null); mActivityContainer = ActivityManagerNative.getDefault().createActivityContainer(token, new ActivityContainerCallback()); } catch (RemoteException e) { throw new IllegalStateException("ActivityView: Unable to create ActivityContainer. " + e); Loading Loading @@ -282,4 +282,14 @@ public class ActivityView extends ViewGroup { } } private class ActivityContainerCallback extends IActivityContainerCallback.Stub { @Override public void setVisible(IBinder container, boolean visible) { if (DEBUG) Log.v(TAG, "setVisible(): container=" + container + " visible=" + visible); if (visible) { } else { } } } } core/java/android/app/IActivityContainerCallback.aidl +1 −1 Original line number Diff line number Diff line Loading @@ -20,5 +20,5 @@ import android.os.IBinder; /** @hide */ interface IActivityContainerCallback { oneway void onLastActivityRemoved(IBinder container); oneway void setVisible(IBinder container, boolean visible); } services/core/java/com/android/server/am/ActivityStack.java +13 −5 Original line number Diff line number Diff line Loading @@ -1025,6 +1025,16 @@ final class ActivityStack { return mStackSupervisor.isFrontStack(this); } private void setVisibile(ActivityRecord r, boolean visible) { r.visible = visible; mWindowManager.setAppVisibility(r.appToken, visible); final ArrayList<ActivityStack> containers = r.mChildContainers; for (int containerNdx = containers.size() - 1; containerNdx >= 0; --containerNdx) { ActivityContainer container = containers.get(containerNdx).mActivityContainer; container.setVisible(visible); } } /** * Version of ensureActivitiesVisible that can easily be called anywhere. */ Loading Loading @@ -1103,8 +1113,7 @@ final class ActivityStack { if (!r.visible) { if (DEBUG_VISBILITY) Slog.v( TAG, "Starting and making visible: " + r); r.visible = true; mWindowManager.setAppVisibility(r.appToken, true); setVisibile(r, true); } if (r != starting) { mStackSupervisor.startSpecificActivityLocked(r, false, false); Loading @@ -1130,7 +1139,7 @@ final class ActivityStack { if (mTranslucentActivityWaiting != null) { mUndrawnActivitiesBelowTopTranslucent.add(r); } mWindowManager.setAppVisibility(r.appToken, true); setVisibile(r, true); r.sleeping = false; r.app.pendingUiClean = true; r.app.thread.scheduleWindowVisibility(r.appToken, true); Loading Loading @@ -1165,9 +1174,8 @@ final class ActivityStack { // sure they no longer are keeping the screen frozen. if (r.visible) { if (DEBUG_VISBILITY) Slog.v(TAG, "Making invisible: " + r); r.visible = false; try { mWindowManager.setAppVisibility(r.appToken, false); setVisibile(r, false); switch (r.state) { case STOPPING: case STOPPED: Loading services/core/java/com/android/server/am/ActivityStackSupervisor.java +21 −0 Original line number Diff line number Diff line Loading @@ -126,6 +126,7 @@ public final class ActivityStackSupervisor implements DisplayListener { static final int HANDLE_DISPLAY_ADDED = FIRST_SUPERVISOR_STACK_MSG + 5; static final int HANDLE_DISPLAY_CHANGED = FIRST_SUPERVISOR_STACK_MSG + 6; static final int HANDLE_DISPLAY_REMOVED = FIRST_SUPERVISOR_STACK_MSG + 7; static final int CONTAINER_CALLBACK_VISIBILITY = FIRST_SUPERVISOR_STACK_MSG + 8; private final static String VIRTUAL_DISPLAY_BASE_NAME = "ActivityViewVirtualDisplay"; Loading Loading @@ -2952,6 +2953,14 @@ public final class ActivityStackSupervisor implements DisplayListener { case HANDLE_DISPLAY_REMOVED: { handleDisplayRemovedLocked(msg.arg1); } break; case CONTAINER_CALLBACK_VISIBILITY: { final ActivityContainer container = (ActivityContainer) msg.obj; try { // We only send this message if mCallback is non-null. container.mCallback.setVisible(container.asBinder(), msg.arg1 == 1); } catch (RemoteException e) { } } } } } Loading @@ -2963,6 +2972,8 @@ public final class ActivityStackSupervisor implements DisplayListener { final ActivityRecord mParentActivity; final String mIdString; boolean mVisible = true; /** Display this ActivityStack is currently on. Null if not attached to a Display. */ ActivityDisplay mActivityDisplay; Loading Loading @@ -3110,6 +3121,16 @@ public final class ActivityStackSupervisor implements DisplayListener { } } void setVisible(boolean visible) { if (mVisible != visible) { mVisible = visible; if (mCallback != null) { mHandler.obtainMessage(CONTAINER_CALLBACK_VISIBILITY, visible ? 1 : 0, 0 /* unused */, this).sendToTarget(); } } } @Override public String toString() { return mIdString + (mActivityDisplay == null ? "N" : "A"); Loading Loading
core/java/android/app/ActivityManagerNative.java +2 −2 Original line number Diff line number Diff line Loading @@ -1998,7 +1998,7 @@ public abstract class ActivityManagerNative extends Binder implements IActivityM data.enforceInterface(IActivityManager.descriptor); IBinder parentActivityToken = data.readStrongBinder(); IActivityContainerCallback callback = (IActivityContainerCallback) data.readStrongBinder(); IActivityContainerCallback.Stub.asInterface(data.readStrongBinder()); IActivityContainer activityContainer = createActivityContainer(parentActivityToken, callback); reply.writeNoException(); Loading Loading @@ -4627,7 +4627,7 @@ class ActivityManagerProxy implements IActivityManager Parcel reply = Parcel.obtain(); data.writeInterfaceToken(IActivityManager.descriptor); data.writeStrongBinder(parentActivityToken); data.writeStrongBinder((IBinder)callback); data.writeStrongBinder(callback == null ? null : callback.asBinder()); mRemote.transact(CREATE_ACTIVITY_CONTAINER_TRANSACTION, data, reply, 0); reply.readException(); final int result = reply.readInt(); Loading
core/java/android/app/ActivityView.java +12 −2 Original line number Diff line number Diff line Loading @@ -92,8 +92,8 @@ public class ActivityView extends ViewGroup { super.onAttachedToWindow(); try { final IBinder token = mActivity.getActivityToken(); mActivityContainer = ActivityManagerNative.getDefault().createActivityContainer(token, null); mActivityContainer = ActivityManagerNative.getDefault().createActivityContainer(token, new ActivityContainerCallback()); } catch (RemoteException e) { throw new IllegalStateException("ActivityView: Unable to create ActivityContainer. " + e); Loading Loading @@ -282,4 +282,14 @@ public class ActivityView extends ViewGroup { } } private class ActivityContainerCallback extends IActivityContainerCallback.Stub { @Override public void setVisible(IBinder container, boolean visible) { if (DEBUG) Log.v(TAG, "setVisible(): container=" + container + " visible=" + visible); if (visible) { } else { } } } }
core/java/android/app/IActivityContainerCallback.aidl +1 −1 Original line number Diff line number Diff line Loading @@ -20,5 +20,5 @@ import android.os.IBinder; /** @hide */ interface IActivityContainerCallback { oneway void onLastActivityRemoved(IBinder container); oneway void setVisible(IBinder container, boolean visible); }
services/core/java/com/android/server/am/ActivityStack.java +13 −5 Original line number Diff line number Diff line Loading @@ -1025,6 +1025,16 @@ final class ActivityStack { return mStackSupervisor.isFrontStack(this); } private void setVisibile(ActivityRecord r, boolean visible) { r.visible = visible; mWindowManager.setAppVisibility(r.appToken, visible); final ArrayList<ActivityStack> containers = r.mChildContainers; for (int containerNdx = containers.size() - 1; containerNdx >= 0; --containerNdx) { ActivityContainer container = containers.get(containerNdx).mActivityContainer; container.setVisible(visible); } } /** * Version of ensureActivitiesVisible that can easily be called anywhere. */ Loading Loading @@ -1103,8 +1113,7 @@ final class ActivityStack { if (!r.visible) { if (DEBUG_VISBILITY) Slog.v( TAG, "Starting and making visible: " + r); r.visible = true; mWindowManager.setAppVisibility(r.appToken, true); setVisibile(r, true); } if (r != starting) { mStackSupervisor.startSpecificActivityLocked(r, false, false); Loading @@ -1130,7 +1139,7 @@ final class ActivityStack { if (mTranslucentActivityWaiting != null) { mUndrawnActivitiesBelowTopTranslucent.add(r); } mWindowManager.setAppVisibility(r.appToken, true); setVisibile(r, true); r.sleeping = false; r.app.pendingUiClean = true; r.app.thread.scheduleWindowVisibility(r.appToken, true); Loading Loading @@ -1165,9 +1174,8 @@ final class ActivityStack { // sure they no longer are keeping the screen frozen. if (r.visible) { if (DEBUG_VISBILITY) Slog.v(TAG, "Making invisible: " + r); r.visible = false; try { mWindowManager.setAppVisibility(r.appToken, false); setVisibile(r, false); switch (r.state) { case STOPPING: case STOPPED: Loading
services/core/java/com/android/server/am/ActivityStackSupervisor.java +21 −0 Original line number Diff line number Diff line Loading @@ -126,6 +126,7 @@ public final class ActivityStackSupervisor implements DisplayListener { static final int HANDLE_DISPLAY_ADDED = FIRST_SUPERVISOR_STACK_MSG + 5; static final int HANDLE_DISPLAY_CHANGED = FIRST_SUPERVISOR_STACK_MSG + 6; static final int HANDLE_DISPLAY_REMOVED = FIRST_SUPERVISOR_STACK_MSG + 7; static final int CONTAINER_CALLBACK_VISIBILITY = FIRST_SUPERVISOR_STACK_MSG + 8; private final static String VIRTUAL_DISPLAY_BASE_NAME = "ActivityViewVirtualDisplay"; Loading Loading @@ -2952,6 +2953,14 @@ public final class ActivityStackSupervisor implements DisplayListener { case HANDLE_DISPLAY_REMOVED: { handleDisplayRemovedLocked(msg.arg1); } break; case CONTAINER_CALLBACK_VISIBILITY: { final ActivityContainer container = (ActivityContainer) msg.obj; try { // We only send this message if mCallback is non-null. container.mCallback.setVisible(container.asBinder(), msg.arg1 == 1); } catch (RemoteException e) { } } } } } Loading @@ -2963,6 +2972,8 @@ public final class ActivityStackSupervisor implements DisplayListener { final ActivityRecord mParentActivity; final String mIdString; boolean mVisible = true; /** Display this ActivityStack is currently on. Null if not attached to a Display. */ ActivityDisplay mActivityDisplay; Loading Loading @@ -3110,6 +3121,16 @@ public final class ActivityStackSupervisor implements DisplayListener { } } void setVisible(boolean visible) { if (mVisible != visible) { mVisible = visible; if (mCallback != null) { mHandler.obtainMessage(CONTAINER_CALLBACK_VISIBILITY, visible ? 1 : 0, 0 /* unused */, this).sendToTarget(); } } } @Override public String toString() { return mIdString + (mActivityDisplay == null ? "N" : "A"); Loading