BufferQueue: Support query of consumer usage bits

Bug: 9592202
Change-Id: I61a17758200e61adaca695b426db3df0f6637d4c
diff --git a/libs/gui/tests/Surface_test.cpp b/libs/gui/tests/Surface_test.cpp
index 953f6f9..bcdbedb 100644
--- a/libs/gui/tests/Surface_test.cpp
+++ b/libs/gui/tests/Surface_test.cpp
@@ -20,6 +20,7 @@
 #include <gui/ISurfaceComposer.h>
 #include <gui/Surface.h>
 #include <gui/SurfaceComposerClient.h>
+#include <gui/BufferItemConsumer.h>
 #include <utils/String8.h>
 
 #include <private/gui/ComposerService.h>
@@ -132,4 +133,21 @@
     EXPECT_EQ(NATIVE_WINDOW_SURFACE, result);
 }
 
+TEST_F(SurfaceTest, QueryConsumerUsage) {
+    const int TEST_USAGE_FLAGS =
+            GRALLOC_USAGE_SW_READ_OFTEN | GRALLOC_USAGE_HW_RENDER;
+    sp<BufferQueue> bq = new BufferQueue();
+    sp<BufferItemConsumer> c = new BufferItemConsumer(bq,
+            TEST_USAGE_FLAGS);
+    sp<Surface> s = new Surface(c->getProducerInterface());
+
+    sp<ANativeWindow> anw(s);
+
+    int flags = -1;
+    int err = anw->query(anw.get(), NATIVE_WINDOW_CONSUMER_USAGE_BITS, &flags);
+
+    ASSERT_EQ(NO_ERROR, err);
+    ASSERT_EQ(TEST_USAGE_FLAGS, flags);
+}
+
 }