Plumb through SetTaskProfiles in libprocessgroup. am: 88d59a9cdd am: 09ba9fff15 am: 9daa86fa35

Original change: https://android-review.googlesource.com/c/platform/system/libartpalette/+/2385592

Change-Id: Id073d0f9dabe183b2444ff1dd55ad2047a80ac23
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/Android.bp b/Android.bp
index dd4e1fa..facd495 100644
--- a/Android.bp
+++ b/Android.bp
@@ -67,6 +67,7 @@
         versions: [
             "1",
             "2",
+            "3",
         ],
         symbol_file: "libartpalette.map.txt",
     },
diff --git a/libartpalette.map.txt b/libartpalette.map.txt
index 0de133f..fbe1ae3 100644
--- a/libartpalette.map.txt
+++ b/libartpalette.map.txt
@@ -45,3 +45,9 @@
     # --- VERSION 02 API ---
     PaletteReportLockContention; # systemapi
 } LIBARTPALETTE_1;
+
+LIBARTPALETTE_3 { # introduced=UpsideDownCake
+  global:
+    # --- VERSION 03 API ---
+    PaletteSetTaskProfiles; # systemapi
+} LIBARTPALETTE_2;
diff --git a/palette_android.cc b/palette_android.cc
index 66a360f..191596f 100644
--- a/palette_android.cc
+++ b/palette_android.cc
@@ -31,12 +31,15 @@
 #include <android-base/macros.h>
 #include <cutils/ashmem.h>
 #include <cutils/trace.h>
+#include <processgroup/processgroup.h>
 #include <selinux/selinux.h>
 #include <tombstoned/tombstoned.h>
 #include <utils/Thread.h>
 
 #include "palette_system.h"
 
+// Methods in version 1 API, corresponding to SDK level 31.
+
 // Conversion map for "nice" values.
 //
 // We use Android thread priority constants to be consistent with the rest
@@ -244,3 +247,15 @@
   *staging_dir = kStagingDirectory;
   return PALETTE_STATUS_OK;
 }
+
+// Methods in version 3 API, corresponding to SDK level UpsideDownCake.
+
+palette_status_t PaletteSetTaskProfiles(int32_t tid, const char* const profiles[],
+                                        size_t profiles_len) {
+  std::vector<std::string> p;
+  p.reserve(profiles_len);
+  for (int i = 0; i < profiles_len; ++i) {
+    p.push_back(profiles[i]);
+  }
+  return SetTaskProfiles(tid, p, false) ? PALETTE_STATUS_OK : PALETTE_STATUS_FAILED_CHECK_LOG;
+}
diff --git a/palette_fake.cc b/palette_fake.cc
index 5b68f9d..2a5c0b1 100644
--- a/palette_fake.cc
+++ b/palette_fake.cc
@@ -140,3 +140,11 @@
     const char* proc_name ATTRIBUTE_UNUSED, const char* thread_name ATTRIBUTE_UNUSED) {
   return PALETTE_STATUS_OK;
 }
+
+// Methods in version 3 API, corresponding to SDK level UpsideDownCake.
+
+palette_status_t PaletteSetTaskProfiles(int32_t tid ATTRIBUTE_UNUSED,
+                                        const char* const profiles[] ATTRIBUTE_UNUSED,
+                                        size_t profiles_len ATTRIBUTE_UNUSED) {
+  return PALETTE_STATUS_OK;
+}