Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bfc555ea authored by Bryce Lee's avatar Bryce Lee
Browse files

Pass Window to DreamOverlayService when attached.

Previously, the DreamService would send the window
attributes to the DreamOverlayService. However, it is
possible that the Window isn't fully associated with
a token at this stage.

This change ensures the Window is only passed when
the token is ready, tracked by when the DecorView
is attached.

Bug: 204605351
Test: atest DreamOverlayTest
Change-Id: Ib1d25ba55edb648739aca22d861e9522102d0668
parent 74e50739
Loading
Loading
Loading
Loading
+10 −10
Original line number Diff line number Diff line
@@ -1173,6 +1173,16 @@ public class DreamService extends Service implements Window.Callback {
                    @Override
                    public void onViewAttachedToWindow(View v) {
                        mDispatchAfterOnAttachedToWindow.run();

                        // Request the DreamOverlay be told to dream with dream's window parameters
                        // once the window has been attached.
                        mOverlayConnection.request(overlay -> {
                            try {
                                overlay.startDream(mWindow.getAttributes(), mOverlayCallback);
                            } catch (RemoteException e) {
                                Log.e(TAG, "could not send window attributes:" + e);
                            }
                        });
                    }

                    @Override
@@ -1185,16 +1195,6 @@ public class DreamService extends Service implements Window.Callback {
                        }
                    }
                });

        // Request the DreamOverlay be told to dream with dream's window parameters once the service
        // has connected.
        mOverlayConnection.request(overlay -> {
            try {
                overlay.startDream(mWindow.getAttributes(), mOverlayCallback);
            } catch (RemoteException e) {
                Log.e(TAG, "could not send window attributes:" + e);
            }
        });
    }

    private boolean getWindowFlagValue(int flag, boolean defaultValue) {