Move common display dump to gs-common

Bug: 269212897
Test: adb bugreport
Change-Id: I6739aec7a432e55e829bbd4a69fec50e0d4050ac
diff --git a/display/Android.bp b/display/Android.bp
index 4ca3636..c3b346b 100644
--- a/display/Android.bp
+++ b/display/Android.bp
@@ -8,3 +8,20 @@
     vendor: true,
     sub_dir: "dump",
 }
+
+cc_binary {
+    name: "dump_display",
+    srcs: ["dump_display.cpp"],
+    cflags: [
+        "-Wall",
+        "-Wextra",
+        "-Werror",
+    ],
+    shared_libs: [
+        "libbase",
+        "libdump",
+    ],
+    vendor: true,
+    relative_install_path: "dump",
+}
+
diff --git a/display/dump.mk b/display/dump.mk
index a1519c3..2af14da 100644
--- a/display/dump.mk
+++ b/display/dump.mk
@@ -1,3 +1,4 @@
 BOARD_VENDOR_SEPOLICY_DIRS += device/google/gs-common/display/sepolicy
 
 PRODUCT_PACKAGES_DEBUG += dump_display_userdebug.sh
+PRODUCT_PACKAGES += dump_display
diff --git a/display/dump_display.cpp b/display/dump_display.cpp
new file mode 100644
index 0000000..d78a91a
--- /dev/null
+++ b/display/dump_display.cpp
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#include <dump/pixel_dump.h>
+#include <android-base/file.h>
+
+
+int main() {
+    setbuf(stdout, NULL);
+    dumpFileContent("DECON-0 counters /sys/class/drm/card0/device/decon0/counters", "/sys/class/drm/card0/device/decon0/counters");
+    dumpFileContent("CRTC-0 event log", "/sys/kernel/debug/dri/0/crtc-0/event");
+    runCommand("libdisplaycolor", "/vendor/bin/dumpsys displaycolor -v");
+    dumpFileContent("Primary panel name", "/sys/devices/platform/exynos-drm/primary-panel/panel_name");
+    dumpFileContent("Primary panel extra info", "/sys/devices/platform/exynos-drm/primary-panel/panel_extinfo");
+    return 0;
+}
+
diff --git a/display/sepolicy/dump_display.te b/display/sepolicy/dump_display.te
new file mode 100644
index 0000000..b8fd1b8
--- /dev/null
+++ b/display/sepolicy/dump_display.te
@@ -0,0 +1,14 @@
+pixel_bugreport(dump_display)
+
+allow dump_display sysfs_display:file r_file_perms;
+allow dump_display vendor_displaycolor_service:service_manager find;
+binder_call(dump_display, hal_graphics_composer_default)
+allow dump_display vendor_dumpsys:file execute_no_trans;
+allow dump_display vendor_shell_exec:file execute_no_trans;
+
+userdebug_or_eng(`
+  allow dump_display vendor_dri_debugfs:dir r_dir_perms;
+  allow dump_display vendor_dri_debugfs:file r_file_perms;
+')
+vndbinder_use(dump_display)
+
diff --git a/display/sepolicy/file.te b/display/sepolicy/file.te
index bc43f3a..e3f2382 100644
--- a/display/sepolicy/file.te
+++ b/display/sepolicy/file.te
@@ -1 +1,3 @@
 type vendor_hwc_log_file, file_type, data_file_type;
+type vendor_dri_debugfs, fs_type, debugfs_type;
+
diff --git a/display/sepolicy/file_contexts b/display/sepolicy/file_contexts
index bd9bb34..66118d0 100644
--- a/display/sepolicy/file_contexts
+++ b/display/sepolicy/file_contexts
@@ -1,4 +1,5 @@
 /vendor/bin/dump/dump_display_userdebug\.sh      u:object_r:dump_display_userdebug_exec:s0
+/vendor/bin/dump/dump_display                    u:object_r:dump_display_exec:s0
 
 /data/vendor/log/hwc(/.*)?                       u:object_r:vendor_hwc_log_file:s0
 
diff --git a/display/sepolicy/genfs_contexts b/display/sepolicy/genfs_contexts
new file mode 100644
index 0000000..9eaf5fb
--- /dev/null
+++ b/display/sepolicy/genfs_contexts
@@ -0,0 +1,3 @@
+
+genfscon debugfs /dri/0/crtc-                                           u:object_r:vendor_dri_debugfs:s0
+
diff --git a/display/sepolicy/hal_graphics_composer_default.te b/display/sepolicy/hal_graphics_composer_default.te
new file mode 100644
index 0000000..c644559
--- /dev/null
+++ b/display/sepolicy/hal_graphics_composer_default.te
@@ -0,0 +1,3 @@
+allow hal_graphics_composer_default dump_display:fifo_file { append write };
+allow hal_graphics_composer_default dump_display:fd use;
+
diff --git a/display/sepolicy/vndservice.te b/display/sepolicy/vndservice.te
new file mode 100644
index 0000000..5c3693b
--- /dev/null
+++ b/display/sepolicy/vndservice.te
@@ -0,0 +1,2 @@
+type vendor_displaycolor_service, vndservice_manager_type;
+
diff --git a/display/sepolicy/vndservice_contexts b/display/sepolicy/vndservice_contexts
new file mode 100644
index 0000000..9276f97
--- /dev/null
+++ b/display/sepolicy/vndservice_contexts
@@ -0,0 +1,2 @@
+displaycolor          u:object_r:vendor_displaycolor_service:s0
+