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

Commit 6d9c7631 authored by Rob Carr's avatar Rob Carr Committed by Android (Google) Code Review
Browse files

Merge "Exclude secure layers from most screenshots taken by the system server."

parents 4c47a63d fa8855f5
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -100,7 +100,7 @@ public:
                                   const ui::Dataspace reqDataspace,
                                   const ui::PixelFormat reqPixelFormat, Rect sourceCrop,
                                   uint32_t reqWidth, uint32_t reqHeight, bool useIdentityTransform,
                                   ISurfaceComposer::Rotation rotation) {
                                   ISurfaceComposer::Rotation rotation, bool captureSecureLayers) {
        Parcel data, reply;
        data.writeInterfaceToken(ISurfaceComposer::getInterfaceDescriptor());
        data.writeStrongBinder(display);
@@ -111,6 +111,7 @@ public:
        data.writeUint32(reqHeight);
        data.writeInt32(static_cast<int32_t>(useIdentityTransform));
        data.writeInt32(static_cast<int32_t>(rotation));
        data.writeInt32(static_cast<int32_t>(captureSecureLayers));
        status_t result = remote()->transact(BnSurfaceComposer::CAPTURE_SCREEN, data, &reply);
        if (result != NO_ERROR) {
            ALOGE("captureScreen failed to transact: %d", result);
@@ -884,10 +885,11 @@ status_t BnSurfaceComposer::onTransact(
            uint32_t reqHeight = data.readUint32();
            bool useIdentityTransform = static_cast<bool>(data.readInt32());
            int32_t rotation = data.readInt32();
            bool captureSecureLayers = static_cast<bool>(data.readInt32());

            status_t res = captureScreen(display, &outBuffer, reqDataspace, reqPixelFormat,
                                         sourceCrop, reqWidth, reqHeight, useIdentityTransform,
                                         static_cast<ISurfaceComposer::Rotation>(rotation));
                                         static_cast<ISurfaceComposer::Rotation>(rotation), captureSecureLayers);
            reply->writeInt32(res);
            if (res == NO_ERROR) {
                reply->write(*outBuffer);
+12 −3
Original line number Diff line number Diff line
@@ -1469,18 +1469,27 @@ status_t SurfaceComposerClient::isWideColorDisplay(const sp<IBinder>& display,
status_t ScreenshotClient::capture(const sp<IBinder>& display, const ui::Dataspace reqDataSpace,
                                   const ui::PixelFormat reqPixelFormat, Rect sourceCrop,
                                   uint32_t reqWidth, uint32_t reqHeight, bool useIdentityTransform,
                                   uint32_t rotation, sp<GraphicBuffer>* outBuffer) {
                                   uint32_t rotation, bool captureSecureLayers, sp<GraphicBuffer>* outBuffer) {
    sp<ISurfaceComposer> s(ComposerService::getComposerService());
    if (s == nullptr) return NO_INIT;
    status_t ret = s->captureScreen(display, outBuffer, reqDataSpace, reqPixelFormat, sourceCrop,
            reqWidth, reqHeight, useIdentityTransform,
                                    static_cast<ISurfaceComposer::Rotation>(rotation));
            static_cast<ISurfaceComposer::Rotation>(rotation),
            captureSecureLayers);
    if (ret != NO_ERROR) {
        return ret;
    }
    return ret;
}

status_t ScreenshotClient::capture(const sp<IBinder>& display, const ui::Dataspace reqDataSpace,
                                   const ui::PixelFormat reqPixelFormat, Rect sourceCrop,
                                   uint32_t reqWidth, uint32_t reqHeight, bool useIdentityTransform,
                                   uint32_t rotation, sp<GraphicBuffer>* outBuffer) {
    return capture(display, reqDataSpace, reqPixelFormat, sourceCrop, reqWidth,
            reqHeight, useIdentityTransform, rotation, false, outBuffer);
}

status_t ScreenshotClient::captureLayers(const sp<IBinder>& layerHandle,
                                         const ui::Dataspace reqDataSpace,
                                         const ui::PixelFormat reqPixelFormat, Rect sourceCrop,
+2 −1
Original line number Diff line number Diff line
@@ -209,7 +209,8 @@ public:
                                   const ui::Dataspace reqDataspace,
                                   const ui::PixelFormat reqPixelFormat, Rect sourceCrop,
                                   uint32_t reqWidth, uint32_t reqHeight, bool useIdentityTransform,
                                   Rotation rotation = eRotateNone) = 0;
                                   Rotation rotation = eRotateNone,
                                   bool captureSecureLayers = false) = 0;
    /**
     * Capture the specified screen. This requires READ_FRAME_BUFFER
     * permission.  This function will fail if there is a secure window on
+4 −0
Original line number Diff line number Diff line
@@ -451,6 +451,10 @@ class ScreenshotClient {
public:
    // if cropping isn't required, callers may pass in a default Rect, e.g.:
    //   capture(display, producer, Rect(), reqWidth, ...);
    static status_t capture(const sp<IBinder>& display, const ui::Dataspace reqDataSpace,
                            const ui::PixelFormat reqPixelFormat, Rect sourceCrop,
                            uint32_t reqWidth, uint32_t reqHeight, bool useIdentityTransform,
                            uint32_t rotation, bool captureSecureLayers, sp<GraphicBuffer>* outBuffer);
    static status_t capture(const sp<IBinder>& display, const ui::Dataspace reqDataSpace,
                            const ui::PixelFormat reqPixelFormat, Rect sourceCrop,
                            uint32_t reqWidth, uint32_t reqHeight, bool useIdentityTransform,
+2 −1
Original line number Diff line number Diff line
@@ -615,7 +615,8 @@ public:
                           const ui::Dataspace /*reqDataspace*/,
                           const ui::PixelFormat /*reqPixelFormat*/, Rect /*sourceCrop*/,
                           uint32_t /*reqWidth*/, uint32_t /*reqHeight*/,
                           bool /*useIdentityTransform*/, Rotation /*rotation*/) override {
                           bool /*useIdentityTransform*/, Rotation /*rotation*/,
                           bool /*captureSecureLayers*/) override {
        return NO_ERROR;
    }
    virtual status_t captureLayers(const sp<IBinder>& /*parentHandle*/,
Loading