Added ScreenCaptureListener to allow for screenshot request callbacks

Added boiler plate code to send a listener to the screenshot requests to
allow screenshots to be async.

Test: LayerStateTest
Bug: 162367424
Change-Id: I747e7316364a145bed6a920d72a592e493ca0029
diff --git a/libs/gui/LayerState.cpp b/libs/gui/LayerState.cpp
index 62f7c23..3b0b392 100644
--- a/libs/gui/LayerState.cpp
+++ b/libs/gui/LayerState.cpp
@@ -607,19 +607,31 @@
 }
 
 status_t ScreenCaptureResults::write(Parcel& output) const {
-    SAFE_PARCEL(output.write, *buffer);
+    if (buffer != nullptr) {
+        SAFE_PARCEL(output.writeBool, true);
+        SAFE_PARCEL(output.write, *buffer);
+    } else {
+        SAFE_PARCEL(output.writeBool, false);
+    }
     SAFE_PARCEL(output.writeBool, capturedSecureLayers);
     SAFE_PARCEL(output.writeUint32, static_cast<uint32_t>(capturedDataspace));
+    SAFE_PARCEL(output.writeInt32, result);
     return NO_ERROR;
 }
 
 status_t ScreenCaptureResults::read(const Parcel& input) {
-    buffer = new GraphicBuffer();
-    SAFE_PARCEL(input.read, *buffer);
+    bool hasGraphicBuffer;
+    SAFE_PARCEL(input.readBool, &hasGraphicBuffer);
+    if (hasGraphicBuffer) {
+        buffer = new GraphicBuffer();
+        SAFE_PARCEL(input.read, *buffer);
+    }
+
     SAFE_PARCEL(input.readBool, &capturedSecureLayers);
     uint32_t dataspace = 0;
     SAFE_PARCEL(input.readUint32, &dataspace);
     capturedDataspace = static_cast<ui::Dataspace>(dataspace);
+    SAFE_PARCEL(input.readInt32, &result);
     return NO_ERROR;
 }