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

Commit f35768e3 authored by Omar Eissa's avatar Omar Eissa Committed by Android (Google) Code Review
Browse files

Merge "Refactor notifyScreenshotListeners method in WMS" into udc-dev

parents d374dc63 d449468a
Loading
Loading
Loading
Loading
+13 −31
Original line number Diff line number Diff line
@@ -9383,30 +9383,6 @@ public class WindowManagerService extends IWindowManager.Stub
        mSurfaceSyncGroupController.markSyncGroupReady(syncGroupToken);
    }

    private ArraySet<ActivityRecord> getVisibleActivityRecords(int displayId) {
        ArraySet<ActivityRecord> result = new ArraySet<>();
        synchronized (mGlobalLock) {
            ArraySet<ComponentName> addedActivities = new ArraySet<>();
            DisplayContent displayContent = mRoot.getDisplayContent(displayId);
            if (displayContent != null) {
                displayContent.forAllWindows(
                        (w) -> {
                            if (w.isVisible()
                                    && w.isDisplayed()
                                    && w.mActivityRecord != null
                                    && !addedActivities.contains(
                                    w.mActivityRecord.mActivityComponent)
                                    && w.mActivityRecord.isVisible()
                                    && w.isVisibleNow()) {
                                addedActivities.add(w.mActivityRecord.mActivityComponent);
                                result.add(w.mActivityRecord);
                            }
                        },
                        true /* traverseTopToBottom */);
            }
        }
        return result;
    }

    /**
     * Must be called when a screenshot is taken via hardware chord.
@@ -9422,14 +9398,20 @@ public class WindowManagerService extends IWindowManager.Stub
            throw new SecurityException("Requires STATUS_BAR_SERVICE permission");
        }
        synchronized (mGlobalLock) {
            final DisplayContent displayContent = mRoot.getDisplayContent(displayId);
            if (displayContent == null) {
                return new ArrayList<>();
            }
            ArraySet<ComponentName> notifiedApps = new ArraySet<>();
            ArraySet<ActivityRecord> visibleApps = getVisibleActivityRecords(displayId);
            for (ActivityRecord ar : visibleApps) {
                if (ar.isRegisteredForScreenCaptureCallback()) {
            displayContent.forAllActivities(
                    (ar) -> {
                        if (!notifiedApps.contains(ar.mActivityComponent) && ar.isVisible()
                                && ar.isRegisteredForScreenCaptureCallback()) {
                            ar.reportScreenCaptured();
                            notifiedApps.add(ar.mActivityComponent);
                        }
            }
                    },
                    true /* traverseTopToBottom */);
            return List.copyOf(notifiedApps);
        }
    }