Merge "Remove angle tests from MTS." into rvc-dev
diff --git a/hostsidetests/appsecurity/src/android/appsecurity/cts/DocumentsTest.java b/hostsidetests/appsecurity/src/android/appsecurity/cts/DocumentsTest.java
index 1c83284..fc63925 100644
--- a/hostsidetests/appsecurity/src/android/appsecurity/cts/DocumentsTest.java
+++ b/hostsidetests/appsecurity/src/android/appsecurity/cts/DocumentsTest.java
@@ -18,6 +18,8 @@
 
 import com.android.compatibility.common.tradefed.build.CompatibilityBuildHelper;
 
+import com.android.tradefed.device.DeviceNotAvailableException;
+
 import com.google.common.collect.ImmutableSet;
 
 /**
@@ -124,7 +126,7 @@
     }
 
     public void testRestrictStorageAccessFrameworkEnabled_blockFromTree() throws Exception {
-        if (isAtLeastR()) {
+        if (isAtLeastR() && isSupportedHardware()) {
             runDeviceCompatTest(CLIENT_PKG, ".DocumentsClientTest",
                 "testRestrictStorageAccessFrameworkEnabled_blockFromTree",
                 /* enabledChanges */ ImmutableSet.of(RESTRICT_STORAGE_ACCESS_FRAMEWORK),
@@ -133,7 +135,7 @@
     }
 
     public void testRestrictStorageAccessFrameworkDisabled_notBlockFromTree() throws Exception {
-        if (isAtLeastR()) {
+        if (isAtLeastR() && isSupportedHardware()) {
             runDeviceCompatTest(CLIENT_PKG, ".DocumentsClientTest",
                 "testRestrictStorageAccessFrameworkDisabled_notBlockFromTree",
                 /* enabledChanges */ ImmutableSet.of(),
@@ -153,4 +155,17 @@
             return false;
         }
     }
+
+    private boolean isSupportedHardware() {
+        try {
+            if (getDevice().hasFeature("feature:android.hardware.type.television")
+                    || getDevice().hasFeature("feature:android.hardware.type.watch")
+                    || getDevice().hasFeature("feature:android.hardware.type.automotive")) {
+                return false;
+            }
+        } catch (DeviceNotAvailableException e) {
+            return true;
+        }
+        return true;
+    }
 }
diff --git a/hostsidetests/incident/src/com/android/server/cts/IncidentdTest.java b/hostsidetests/incident/src/com/android/server/cts/IncidentdTest.java
index 460181d..f7dcec1 100644
--- a/hostsidetests/incident/src/com/android/server/cts/IncidentdTest.java
+++ b/hostsidetests/incident/src/com/android/server/cts/IncidentdTest.java
@@ -72,8 +72,6 @@
 
         AlarmManagerIncidentTest.verifyAlarmManagerServiceDumpProto(dump.getAlarm(), filterLevel);
 
-        MemInfoIncidentTest.verifyMemInfoDumpProto(dump.getMeminfo(), filterLevel);
-
         // GraphicsStats is expected to be all AUTOMATIC.
 
         WindowManagerIncidentTest.verifyWindowManagerServiceDumpProto(dump.getWindow(), filterLevel);
diff --git a/hostsidetests/incident/src/com/android/server/cts/MemInfoIncidentTest.java b/hostsidetests/incident/src/com/android/server/cts/MemInfoIncidentTest.java
deleted file mode 100644
index 2747972..0000000
--- a/hostsidetests/incident/src/com/android/server/cts/MemInfoIncidentTest.java
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
- * Copyright (C) 2016 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.
- */
-
-package com.android.server.cts;
-
-import com.android.server.am.MemInfoDumpProto;
-import com.android.server.am.MemInfoDumpProto.AppData;
-import com.android.server.am.MemInfoDumpProto.MemItem;
-import com.android.server.am.MemInfoDumpProto.ProcessMemory;
-
-/** Test to check that ActivityManager properly outputs meminfo data. */
-public class MemInfoIncidentTest extends ProtoDumpTestCase {
-
-    public void testMemInfoDump() throws Exception {
-        final MemInfoDumpProto dump =
-                getDump(MemInfoDumpProto.parser(), "dumpsys -t 30000 meminfo -a --proto");
-
-        verifyMemInfoDumpProto(dump, PRIVACY_NONE);
-    }
-
-    static void verifyMemInfoDumpProto(MemInfoDumpProto dump, final int filterLevel) throws Exception {
-        assertTrue(dump.getUptimeDurationMs() >= 0);
-        assertTrue(dump.getElapsedRealtimeMs() >= 0);
-
-        for (ProcessMemory pm : dump.getNativeProcessesList()) {
-            testProcessMemory(pm);
-        }
-
-        for (AppData ad : dump.getAppProcessesList()) {
-            testAppData(ad);
-        }
-
-        for (MemItem mi : dump.getTotalPssByProcessList()) {
-            testMemItem(mi);
-        }
-        for (MemItem mi : dump.getTotalPssByOomAdjustmentList()) {
-            testMemItem(mi);
-        }
-        for (MemItem mi : dump.getTotalPssByCategoryList()) {
-            testMemItem(mi);
-        }
-
-        assertTrue(0 <= dump.getTotalRamKb());
-        assertTrue(0 <= dump.getCachedPssKb());
-        assertTrue(0 <= dump.getCachedKernelKb());
-        assertTrue(0 <= dump.getFreeKb());
-        assertTrue(0 <= dump.getUsedPssKb());
-        assertTrue(0 <= dump.getUsedKernelKb());
-
-        // Ideally lost RAM would not be negative, but there's an issue where it's sometimes
-        // calculated to be negative.
-        // TODO: re-enable check once the underlying bug has been fixed.
-        // assertTrue(0 <= dump.getLostRamKb());
-
-        assertTrue(0 <= dump.getTotalZramKb());
-        assertTrue(0 <= dump.getZramPhysicalUsedInSwapKb());
-        assertTrue(0 <= dump.getTotalZramSwapKb());
-
-        assertTrue(0 <= dump.getKsmSharingKb());
-        assertTrue(0 <= dump.getKsmSharedKb());
-        assertTrue(0 <= dump.getKsmUnsharedKb());
-        assertTrue(0 <= dump.getKsmVolatileKb());
-
-        assertTrue("Tuning_mb (" + dump.getTuningMb() + ") is not positive", 0 < dump.getTuningMb());
-        assertTrue(0 < dump.getTuningLargeMb());
-
-        assertTrue(0 <= dump.getOomKb());
-
-        assertTrue(0 < dump.getRestoreLimitKb());
-    }
-
-    private static void testProcessMemory(ProcessMemory pm) throws Exception {
-        assertNotNull(pm);
-
-        assertTrue(0 < pm.getPid());
-        // On most Linux machines, the max pid value is 32768 (=2^15), but, it can be set to any
-        // value up to 4194304 (=2^22) if necessary.
-        assertTrue(4194304 >= pm.getPid());
-
-        testHeapInfo(pm.getNativeHeap());
-        testHeapInfo(pm.getDalvikHeap());
-
-        for (ProcessMemory.MemoryInfo mi : pm.getOtherHeapsList()) {
-            testMemoryInfo(mi);
-        }
-        testMemoryInfo(pm.getUnknownHeap());
-        testHeapInfo(pm.getTotalHeap());
-
-        for (ProcessMemory.MemoryInfo mi : pm.getDalvikDetailsList()) {
-            testMemoryInfo(mi);
-        }
-
-        ProcessMemory.AppSummary as = pm.getAppSummary();
-        assertTrue(0 <= as.getJavaHeapPssKb());
-        assertTrue(0 <= as.getNativeHeapPssKb());
-        assertTrue(0 <= as.getCodePssKb());
-        assertTrue(0 <= as.getStackPssKb());
-        assertTrue(0 <= as.getGraphicsPssKb());
-        assertTrue(0 <= as.getPrivateOtherPssKb());
-        assertTrue(0 <= as.getSystemPssKb());
-        assertTrue(0 <= as.getTotalSwapPss());
-        assertTrue(0 <= as.getTotalSwapKb());
-    }
-
-    private static void testMemoryInfo(ProcessMemory.MemoryInfo mi) throws Exception {
-        assertNotNull(mi);
-
-        assertTrue(0 <= mi.getTotalPssKb());
-        assertTrue(0 <= mi.getCleanPssKb());
-        assertTrue(0 <= mi.getSharedDirtyKb());
-        assertTrue(0 <= mi.getPrivateDirtyKb());
-        assertTrue(0 <= mi.getSharedCleanKb());
-        assertTrue(0 <= mi.getPrivateCleanKb());
-        assertTrue(0 <= mi.getDirtySwapKb());
-        assertTrue(0 <= mi.getDirtySwapPssKb());
-    }
-
-    private static void testHeapInfo(ProcessMemory.HeapInfo hi) throws Exception {
-        assertNotNull(hi);
-
-        testMemoryInfo(hi.getMemInfo());
-        assertTrue(0 <= hi.getHeapSizeKb());
-        assertTrue(0 <= hi.getHeapAllocKb());
-        assertTrue(0 <= hi.getHeapFreeKb());
-    }
-
-    private static void testAppData(AppData ad) throws Exception {
-        assertNotNull(ad);
-
-        testProcessMemory(ad.getProcessMemory());
-
-        AppData.ObjectStats os = ad.getObjects();
-        assertTrue(0 <= os.getViewInstanceCount());
-        assertTrue(0 <= os.getViewRootInstanceCount());
-        assertTrue(0 <= os.getAppContextInstanceCount());
-        assertTrue(0 <= os.getActivityInstanceCount());
-        assertTrue(0 <= os.getGlobalAssetCount());
-        assertTrue(0 <= os.getGlobalAssetManagerCount());
-        assertTrue(0 <= os.getLocalBinderObjectCount());
-        assertTrue(0 <= os.getProxyBinderObjectCount());
-        assertTrue(0 <= os.getParcelMemoryKb());
-        assertTrue(0 <= os.getParcelCount());
-        assertTrue(0 <= os.getBinderObjectDeathCount());
-        assertTrue(0 <= os.getOpenSslSocketCount());
-        assertTrue(0 <= os.getWebviewInstanceCount());
-
-        AppData.SqlStats ss = ad.getSql();
-        assertTrue(0 <= ss.getMemoryUsedKb());
-        assertTrue(0 <= ss.getPagecacheOverflowKb());
-        assertTrue(0 <= ss.getMallocSizeKb());
-        for (AppData.SqlStats.Database d : ss.getDatabasesList()) {
-            assertTrue(0 <= d.getPageSize());
-            assertTrue(0 <= d.getDbSize());
-            assertTrue(0 <= d.getLookasideB());
-        }
-    }
-
-    private static void testMemItem(MemItem mi) throws Exception {
-        assertNotNull(mi);
-
-        assertTrue(0 <= mi.getPssKb());
-        assertTrue(0 <= mi.getSwapPssKb());
-
-        for (MemItem smi : mi.getSubItemsList()) {
-            testMemItem(smi);
-        }
-    }
-}
diff --git a/hostsidetests/securitybulletin/securityPatch/includes/memutils.c b/hostsidetests/securitybulletin/securityPatch/includes/memutils.c
index 650d2f6..65e1e90 100644
--- a/hostsidetests/securitybulletin/securityPatch/includes/memutils.c
+++ b/hostsidetests/securitybulletin/securityPatch/includes/memutils.c
@@ -61,6 +61,7 @@
     if (NULL == real_memalign) {
         return;
     }
+#ifndef DISABLE_MALLOC_OVERLOADING
     real_calloc = dlsym(RTLD_NEXT, "calloc");
     if (NULL == real_calloc) {
         return;
@@ -73,6 +74,7 @@
     if (NULL == real_realloc) {
         return;
     }
+#endif /* DISABLE_MALLOC_OVERLOADING */
     real_free = dlsym(RTLD_NEXT, "free");
     if (NULL == real_free) {
         return;
@@ -99,14 +101,6 @@
     size_t num_pages;
     size_t page_size = getpagesize();
 
-    /* User specified alignment is not respected and is overridden by
-     * "new_alignment". This is required to catch OOB read when read offset is
-     * less than user specified alignment. "new_alignment" is derived based on
-     * size_t, and helps to avoid bus errors due to non-aligned memory.
-     * "new_alignment", whenever used, is checked to ensure sizeof(size_t)
-     * has returned proper value                                            */
-    size_t new_alignment = sizeof(size_t);
-
     if (s_mem_map_index == MAX_ENTRIES) {
         return real_memalign(alignment, size);
     }
@@ -115,13 +109,16 @@
         return real_memalign(alignment, size);
     }
 
-    if ((0 == page_size) || (0 == alignment) || (0 == size)
-            || (0 == new_alignment)) {
+    if ((0 == page_size) || (0 == alignment) || (0 == size)) {
         return real_memalign(alignment, size);
     }
 #ifdef CHECK_OVERFLOW
-    if (0 != (size % new_alignment)) {
-        aligned_size = size + (new_alignment - (size % new_alignment));
+    /* User specified alignment is not respected and is overridden by
+     * MINIMUM_ALIGNMENT. This is required to catch OOB read when read offset
+     * is less than user specified alignment. "MINIMUM_ALIGNMENT" helps to
+     * avoid bus errors due to non-aligned memory.                         */
+    if (0 != (size % MINIMUM_ALIGNMENT)) {
+        aligned_size = size + (MINIMUM_ALIGNMENT - (size % MINIMUM_ALIGNMENT));
     }
 #endif
 
@@ -134,11 +131,7 @@
     total_size = (num_pages * page_size);
     start_ptr = (char *) real_memalign(page_size, total_size);
 #ifdef CHECK_OVERFLOW
-#ifdef FORCE_UNALIGN
-    mem_ptr = (char *) start_ptr + ((num_pages - 1) * page_size) - size;
-#else
     mem_ptr = (char *) start_ptr + ((num_pages - 1) * page_size) - aligned_size;
-#endif /* FORCE_UNALIGN */
     DISABLE_MEM_ACCESS((start_ptr + ((num_pages - 1) * page_size)), page_size);
 #endif /* CHECK_OVERFLOW */
 #ifdef CHECK_UNDERFLOW
@@ -154,6 +147,7 @@
     return mem_ptr;
 }
 
+#ifndef DISABLE_MALLOC_OVERLOADING
 void *malloc(size_t size) {
     if (s_memutils_initialized == 0) {
         memutils_init();
@@ -163,7 +157,7 @@
         return real_malloc(size);
     }
 #endif /* ENABLE_SELECTIVE_OVERLOADING */
-    return memalign(sizeof(size_t), size);
+    return memalign(MINIMUM_ALIGNMENT, size);
 }
 
 void *calloc(size_t nitems, size_t size) {
@@ -210,6 +204,7 @@
     }
     return real_realloc(ptr, size);
 }
+#endif /* DISABLE_MALLOC_OVERLOADING */
 
 void free(void *ptr) {
     if (s_memutils_initialized == 0) {
diff --git a/hostsidetests/securitybulletin/securityPatch/includes/memutils.h b/hostsidetests/securitybulletin/securityPatch/includes/memutils.h
index 10ee31e..4d3791e 100644
--- a/hostsidetests/securitybulletin/securityPatch/includes/memutils.h
+++ b/hostsidetests/securitybulletin/securityPatch/includes/memutils.h
@@ -19,6 +19,7 @@
 #endif /* __cplusplus */
 #define MAX_ENTRIES        (1024 * 1024)
 #define INITIAL_VAL        (0xBE)
+#define MINIMUM_ALIGNMENT  (16)
 
 #define DISABLE_MEM_ACCESS(mem, size)\
     mprotect((char *) mem, size, PROT_NONE);
@@ -43,9 +44,11 @@
 } map_struct_t;
 
 static void* (*real_memalign)(size_t, size_t) = NULL;
+#ifndef DISABLE_MALLOC_OVERLOADING
 static void* (*real_calloc)(size_t, size_t) = NULL;
 static void* (*real_malloc)(size_t) = NULL;
 static void* (*real_realloc)(void *ptr, size_t size) = NULL;
+#endif /* DISABLE_MALLOC_OVERLOADING */
 static void (*real_free)(void *) = NULL;
 static int s_memutils_initialized = 0;
 static int s_mem_map_index = 0;
diff --git a/hostsidetests/statsd/src/android/cts/statsd/metadata/MetadataTests.java b/hostsidetests/statsd/src/android/cts/statsd/metadata/MetadataTests.java
index 4c0e4e6..7ad2d17 100644
--- a/hostsidetests/statsd/src/android/cts/statsd/metadata/MetadataTests.java
+++ b/hostsidetests/statsd/src/android/cts/statsd/metadata/MetadataTests.java
@@ -76,6 +76,7 @@
             Thread.sleep(10);
         }
         doAppBreadcrumbReportedStart(/* irrelevant val */ 6); // Event, after TTL_TIME_SEC secs.
+        Thread.sleep(WAIT_TIME_SHORT);
         report = getStatsdStatsReport();
         LogUtil.CLog.d("got following statsdstats report: " + report.toString());
         foundActiveConfig = false;
diff --git a/hostsidetests/systemui/src/android/host/systemui/TvMicrophoneCaptureIndicatorTest.java b/hostsidetests/systemui/src/android/host/systemui/TvMicrophoneCaptureIndicatorTest.java
index c42faa2..674226c 100644
--- a/hostsidetests/systemui/src/android/host/systemui/TvMicrophoneCaptureIndicatorTest.java
+++ b/hostsidetests/systemui/src/android/host/systemui/TvMicrophoneCaptureIndicatorTest.java
@@ -37,12 +37,14 @@
 import com.android.tradefed.testtype.junit4.BaseHostJUnit4Test;
 
 import org.junit.After;
+import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
 import java.util.ArrayList;
 import java.util.List;
 
+@Ignore
 @RunWith(DeviceJUnit4ClassRunner.class)
 public class TvMicrophoneCaptureIndicatorTest extends BaseHostJUnit4Test {
     private static final String SHELL_AM_START_FG_SERVICE =
diff --git a/tests/BlobStore/src/com/android/cts/blob/BlobStoreManagerTest.java b/tests/BlobStore/src/com/android/cts/blob/BlobStoreManagerTest.java
index 3826a4d..ad1fae9 100644
--- a/tests/BlobStore/src/com/android/cts/blob/BlobStoreManagerTest.java
+++ b/tests/BlobStore/src/com/android/cts/blob/BlobStoreManagerTest.java
@@ -62,6 +62,8 @@
 import org.junit.runner.RunWith;
 
 import java.io.IOException;
+import java.io.OutputStream;
+import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.Map;
 import java.util.Objects;
@@ -210,9 +212,15 @@
                 blobData.readFromSessionAndVerifyBytes(session,
                         101 /* offset */, 1001 /* length */);
 
-                blobData.writeToSession(session, 202 /* offset */, 2002 /* length */);
+                blobData.writeToSession(session, 202 /* offset */, 2002 /* length */,
+                        blobData.getFileSize());
                 blobData.readFromSessionAndVerifyBytes(session,
                         202 /* offset */, 2002 /* length */);
+
+                final CompletableFuture<Integer> callback = new CompletableFuture<>();
+                session.commit(mContext.getMainExecutor(), callback::complete);
+                assertThat(callback.get(TIMEOUT_COMMIT_CALLBACK_SEC, TimeUnit.SECONDS))
+                        .isEqualTo(0);
             }
         } finally {
             blobData.delete();
@@ -600,6 +608,52 @@
     }
 
     @Test
+    public void testSessionCommit_incompleteData() throws Exception {
+        final DummyBlobData blobData = new DummyBlobData.Builder(mContext).build();
+        blobData.prepare();
+        try {
+            final long sessionId = mBlobStoreManager.createSession(blobData.getBlobHandle());
+            assertThat(sessionId).isGreaterThan(0L);
+
+            try (BlobStoreManager.Session session = mBlobStoreManager.openSession(sessionId)) {
+                blobData.writeToSession(session, 0, blobData.getFileSize() - 2);
+
+                final CompletableFuture<Integer> callback = new CompletableFuture<>();
+                session.commit(mContext.getMainExecutor(), callback::complete);
+                assertThat(callback.get(TIMEOUT_COMMIT_CALLBACK_SEC, TimeUnit.SECONDS))
+                        .isEqualTo(1);
+            }
+        } finally {
+            blobData.delete();
+        }
+    }
+
+    @Test
+    public void testSessionCommit_incorrectData() throws Exception {
+        final DummyBlobData blobData = new DummyBlobData.Builder(mContext).build();
+        blobData.prepare();
+        try {
+            final long sessionId = mBlobStoreManager.createSession(blobData.getBlobHandle());
+            assertThat(sessionId).isGreaterThan(0L);
+
+            try (BlobStoreManager.Session session = mBlobStoreManager.openSession(sessionId)) {
+                blobData.writeToSession(session, 0, blobData.getFileSize());
+                try (OutputStream out = new ParcelFileDescriptor.AutoCloseOutputStream(
+                        session.openWrite(0, blobData.getFileSize()))) {
+                    out.write("wrong_data".getBytes(StandardCharsets.UTF_8));
+                }
+
+                final CompletableFuture<Integer> callback = new CompletableFuture<>();
+                session.commit(mContext.getMainExecutor(), callback::complete);
+                assertThat(callback.get(TIMEOUT_COMMIT_CALLBACK_SEC, TimeUnit.SECONDS))
+                        .isEqualTo(1);
+            }
+        } finally {
+            blobData.delete();
+        }
+    }
+
+    @Test
     public void testRecommitBlob() throws Exception {
         final DummyBlobData blobData = new DummyBlobData.Builder(mContext).build();
         blobData.prepare();
@@ -735,11 +789,13 @@
                     try (BlobStoreManager.Session session = mBlobStoreManager.openSession(
                             sessionId)) {
                         final long partialFileSizeBytes = minSizeMb * 1024L * 1024L;
-                        blobData.writeToSession(session, 0L, partialFileSizeBytes);
+                        blobData.writeToSession(session, 0L, partialFileSizeBytes,
+                                blobData.getFileSize());
                         blobData.readFromSessionAndVerifyBytes(session, 0L,
                                 (int) partialFileSizeBytes);
                         blobData.writeToSession(session, partialFileSizeBytes,
-                                blobData.getFileSize() - partialFileSizeBytes);
+                                blobData.getFileSize() - partialFileSizeBytes,
+                                blobData.getFileSize());
                         blobData.readFromSessionAndVerifyBytes(session, partialFileSizeBytes,
                                 (int) (blobData.getFileSize() - partialFileSizeBytes));
 
@@ -950,7 +1006,7 @@
         final long sessionId = mBlobStoreManager.createSession(blobData.getBlobHandle());
         assertThat(sessionId).isGreaterThan(0L);
         try (BlobStoreManager.Session session = mBlobStoreManager.openSession(sessionId)) {
-            blobData.writeToSession(session, 0, partialFileSize);
+            blobData.writeToSession(session, 0, partialFileSize, partialFileSize);
         }
 
         StorageStats afterStatsForPkg = storageStatsManager
@@ -967,7 +1023,8 @@
         // Complete writing data.
         final long totalFileSize = blobData.getFileSize();
         try (BlobStoreManager.Session session = mBlobStoreManager.openSession(sessionId)) {
-            blobData.writeToSession(session, partialFileSize, totalFileSize - partialFileSize);
+            blobData.writeToSession(session, partialFileSize, totalFileSize - partialFileSize,
+                    totalFileSize);
         }
 
         afterStatsForPkg = storageStatsManager
@@ -983,7 +1040,8 @@
 
         // Commit the session.
         try (BlobStoreManager.Session session = mBlobStoreManager.openSession(sessionId)) {
-            blobData.writeToSession(session, partialFileSize, session.getSize() - partialFileSize);
+            blobData.writeToSession(session, partialFileSize,
+                    session.getSize() - partialFileSize, blobData.getFileSize());
             final CompletableFuture<Integer> callback = new CompletableFuture<>();
             session.commit(mContext.getMainExecutor(), callback::complete);
             assertThat(callback.get(TIMEOUT_COMMIT_CALLBACK_SEC, TimeUnit.SECONDS))
@@ -1241,7 +1299,7 @@
         assertThat(sessionId).isGreaterThan(0L);
 
         try (BlobStoreManager.Session session = mBlobStoreManager.openSession(sessionId)) {
-            blobData.writeToSession(session, 0, partialFileSize);
+            blobData.writeToSession(session, 0, partialFileSize, blobData.getFileSize());
         }
 
         SystemClock.sleep(waitDurationMs);
@@ -1251,7 +1309,7 @@
 
         try (BlobStoreManager.Session session = mBlobStoreManager.openSession(sessionId)) {
             blobData.writeToSession(session, partialFileSize,
-                    blobData.getFileSize() - partialFileSize);
+                    blobData.getFileSize() - partialFileSize, blobData.getFileSize());
             final CompletableFuture<Integer> callback = new CompletableFuture<>();
             session.commit(mContext.getMainExecutor(), callback::complete);
             assertThat(callback.get(TIMEOUT_COMMIT_CALLBACK_SEC, TimeUnit.SECONDS))
@@ -1287,7 +1345,7 @@
             assertThat(sessionId).isGreaterThan(0L);
 
             try (BlobStoreManager.Session session = mBlobStoreManager.openSession(sessionId)) {
-                blobData.writeToSession(session, 0, 100);
+                blobData.writeToSession(session, 0, 100, blobData.getFileSize());
             }
 
             SystemClock.sleep(waitDurationMs);
diff --git a/tests/tests/app.usage/src/android/app/usage/cts/UsageStatsTest.java b/tests/tests/app.usage/src/android/app/usage/cts/UsageStatsTest.java
index 4440010..92e351a 100644
--- a/tests/tests/app.usage/src/android/app/usage/cts/UsageStatsTest.java
+++ b/tests/tests/app.usage/src/android/app/usage/cts/UsageStatsTest.java
@@ -105,14 +105,11 @@
     private static final String APPOPS_SET_SHELL_COMMAND = "appops set {0} " +
             AppOpsManager.OPSTR_GET_USAGE_STATS + " {1}";
 
-    private static final String USAGE_SOURCE_GET_SHELL_COMMAND = "settings get global " +
-            Settings.Global.APP_TIME_LIMIT_USAGE_SOURCE;
+    private static final String GET_SHELL_COMMAND = "settings get global ";
 
-    private static final String USAGE_SOURCE_SET_SHELL_COMMAND = "settings put global " +
-            Settings.Global.APP_TIME_LIMIT_USAGE_SOURCE + " {0}";
+    private static final String SET_SHELL_COMMAND = "settings put global ";
 
-    private static final String USAGE_SOURCE_DELETE_SHELL_COMMAND = "settings delete global " +
-            Settings.Global.APP_TIME_LIMIT_USAGE_SOURCE;
+    private static final String DELETE_SHELL_COMMAND = "settings delete global ";
 
     private static final String TEST_APP_PKG = "android.app.usage.cts.test1";
     private static final String TEST_APP_CLASS = "android.app.usage.cts.test1.SomeActivity";
@@ -139,6 +136,7 @@
     private KeyguardManager mKeyguardManager;
     private String mTargetPackage;
     private String mCachedUsageSourceSetting;
+    private String mCachedEnableRestrictedBucketSetting;
 
     @Before
     public void setUp() throws Exception {
@@ -152,16 +150,18 @@
 
         assumeTrue("App Standby not enabled on device", AppStandbyUtils.isAppStandbyEnabled());
         setAppOpsMode("allow");
-        mCachedUsageSourceSetting = getUsageSourceSetting();
+        mCachedUsageSourceSetting = getSetting(Settings.Global.APP_TIME_LIMIT_USAGE_SOURCE);
+        mCachedEnableRestrictedBucketSetting = getSetting(Settings.Global.ENABLE_RESTRICTED_BUCKET);
     }
 
     @After
     public void cleanUp() throws Exception {
         if (mCachedUsageSourceSetting != null &&
-            !mCachedUsageSourceSetting.equals(getUsageSourceSetting())) {
+                !mCachedUsageSourceSetting.equals(
+                    getSetting(Settings.Global.APP_TIME_LIMIT_USAGE_SOURCE))) {
             setUsageSourceSetting(mCachedUsageSourceSetting);
-            mUsageStatsManager.forceUsageSourceSettingRead();
         }
+        setSetting(Settings.Global.ENABLE_RESTRICTED_BUCKET, mCachedEnableRestrictedBucketSetting);
         // Force stop test package to avoid any running test code from carrying over to the next run
         SystemUtil.runWithShellPermissionIdentity(() -> mAm.forceStopPackage(TEST_APP_PKG));
         mUiDevice.pressHome();
@@ -179,16 +179,20 @@
         executeShellCmd(MessageFormat.format(APPOPS_SET_SHELL_COMMAND, mTargetPackage, mode));
     }
 
-    private String getUsageSourceSetting() throws Exception {
-        return executeShellCmd(USAGE_SOURCE_GET_SHELL_COMMAND);
+    private String getSetting(String name) throws Exception {
+        return executeShellCmd(GET_SHELL_COMMAND + name);
     }
 
-    private void setUsageSourceSetting(String usageSource) throws Exception {
-        if (usageSource.equals("null")) {
-            executeShellCmd(USAGE_SOURCE_DELETE_SHELL_COMMAND);
+    private void setSetting(String name, String setting) throws Exception {
+        if (setting == null || setting.equals("null")) {
+            executeShellCmd(DELETE_SHELL_COMMAND + name);
         } else {
-            executeShellCmd(MessageFormat.format(USAGE_SOURCE_SET_SHELL_COMMAND, usageSource));
+            executeShellCmd(SET_SHELL_COMMAND + name + " " + setting);
         }
+    }
+
+    private void setUsageSourceSetting(String value) throws Exception {
+        setSetting(Settings.Global.APP_TIME_LIMIT_USAGE_SOURCE, value);
         mUsageStatsManager.forceUsageSourceSettingRead();
     }
 
@@ -683,7 +687,9 @@
     // TODO(148887416): get this test to work for instant apps
     @AppModeFull(reason = "Test APK Activity not found when installed as an instant app")
     @Test
-    public void testUserForceIntoRestricted() throws IOException {
+    public void testUserForceIntoRestricted() throws Exception {
+        setSetting(Settings.Global.ENABLE_RESTRICTED_BUCKET, "1");
+
         launchSubActivity(TaskRootActivity.class);
         assertEquals("Activity launch didn't bring app up to ACTIVE bucket",
                 UsageStatsManager.STANDBY_BUCKET_ACTIVE,
@@ -700,7 +706,28 @@
     // TODO(148887416): get this test to work for instant apps
     @AppModeFull(reason = "Test APK Activity not found when installed as an instant app")
     @Test
-    public void testUserLaunchRemovesFromRestricted() throws IOException {
+    public void testUserForceIntoRestricted_BucketDisabled() throws Exception {
+        setSetting(Settings.Global.ENABLE_RESTRICTED_BUCKET, "0");
+
+        launchSubActivity(TaskRootActivity.class);
+        assertEquals("Activity launch didn't bring app up to ACTIVE bucket",
+                UsageStatsManager.STANDBY_BUCKET_ACTIVE,
+                mUsageStatsManager.getAppStandbyBucket(mTargetPackage));
+
+        // User force shouldn't have to deal with the timeout.
+        setStandByBucket(mTargetPackage, "restricted");
+        assertNotEquals("User was able to force into RESTRICTED bucket when bucket disabled",
+                UsageStatsManager.STANDBY_BUCKET_RESTRICTED,
+                mUsageStatsManager.getAppStandbyBucket(mTargetPackage));
+
+    }
+
+    // TODO(148887416): get this test to work for instant apps
+    @AppModeFull(reason = "Test APK Activity not found when installed as an instant app")
+    @Test
+    public void testUserLaunchRemovesFromRestricted() throws Exception {
+        setSetting(Settings.Global.ENABLE_RESTRICTED_BUCKET, "1");
+
         setStandByBucket(mTargetPackage, "restricted");
         assertEquals("User was unable to force an app into RESTRICTED bucket",
                 UsageStatsManager.STANDBY_BUCKET_RESTRICTED,
@@ -712,6 +739,26 @@
                 mUsageStatsManager.getAppStandbyBucket(mTargetPackage));
     }
 
+    /** Confirm the default value of {@link Settings.Global.ENABLE_RESTRICTED_BUCKET}. */
+    // TODO(148887416): get this test to work for instant apps
+    @AppModeFull(reason = "Test APK Activity not found when installed as an instant app")
+    @Test
+    public void testDefaultEnableRestrictedBucketOff() throws Exception {
+        setSetting(Settings.Global.ENABLE_RESTRICTED_BUCKET, null);
+
+        launchSubActivity(TaskRootActivity.class);
+        assertEquals("Activity launch didn't bring app up to ACTIVE bucket",
+                UsageStatsManager.STANDBY_BUCKET_ACTIVE,
+                mUsageStatsManager.getAppStandbyBucket(mTargetPackage));
+
+        // User force shouldn't have to deal with the timeout.
+        setStandByBucket(mTargetPackage, "restricted");
+        assertNotEquals("User was able to force into RESTRICTED bucket when bucket disabled",
+                UsageStatsManager.STANDBY_BUCKET_RESTRICTED,
+                mUsageStatsManager.getAppStandbyBucket(mTargetPackage));
+
+    }
+
     // TODO(148887416): get this test to work for instant apps
     @AppModeFull(reason = "Test APK Activity not found when installed as an instant app")
     @Test
diff --git a/tests/tests/packageinstaller/install/src/android/packageinstaller/install/cts/IntentTest.kt b/tests/tests/packageinstaller/install/src/android/packageinstaller/install/cts/IntentTest.kt
index 9a24968..33a8966 100644
--- a/tests/tests/packageinstaller/install/src/android/packageinstaller/install/cts/IntentTest.kt
+++ b/tests/tests/packageinstaller/install/src/android/packageinstaller/install/cts/IntentTest.kt
@@ -24,9 +24,6 @@
 import androidx.test.InstrumentationRegistry
 import androidx.test.runner.AndroidJUnit4
 
-import com.android.compatibility.common.util.SystemUtil.runShellCommand
-import com.android.compatibility.common.util.SystemUtil.runWithShellPermissionIdentity
-
 import org.junit.After
 import org.junit.Assert.assertEquals
 import org.junit.Test
@@ -42,12 +39,6 @@
 class IntentTest : PackageInstallerTestBase() {
     private val context = InstrumentationRegistry.getTargetContext()
 
-    private fun setSecureFrp(secureFrp: Boolean) {
-        runWithShellPermissionIdentity {
-            runShellCommand("settings put secure secure_frp_mode ${if (secureFrp) 1 else 0}")
-        }
-    }
-
     @After
     fun disableSecureFrp() {
         setSecureFrp(false)
diff --git a/tests/tests/packageinstaller/install/src/android/packageinstaller/install/cts/PackageInstallerTestBase.kt b/tests/tests/packageinstaller/install/src/android/packageinstaller/install/cts/PackageInstallerTestBase.kt
index ad7c7fd..45eb038 100644
--- a/tests/tests/packageinstaller/install/src/android/packageinstaller/install/cts/PackageInstallerTestBase.kt
+++ b/tests/tests/packageinstaller/install/src/android/packageinstaller/install/cts/PackageInstallerTestBase.kt
@@ -198,6 +198,11 @@
         uiDevice.executeShellCommand("settings put secure $secureSetting $value")
     }
 
+    fun setSecureFrp(secureFrp: Boolean) {
+        uiDevice.executeShellCommand("settings --user 0 " +
+                "put secure secure_frp_mode ${if (secureFrp) 1 else 0}")
+    }
+
     @After
     fun unregisterInstallResultReceiver() {
         try {
diff --git a/tests/tests/packageinstaller/install/src/android/packageinstaller/install/cts/SessionTest.kt b/tests/tests/packageinstaller/install/src/android/packageinstaller/install/cts/SessionTest.kt
index 24a1128..69096f8 100644
--- a/tests/tests/packageinstaller/install/src/android/packageinstaller/install/cts/SessionTest.kt
+++ b/tests/tests/packageinstaller/install/src/android/packageinstaller/install/cts/SessionTest.kt
@@ -98,7 +98,7 @@
     @Test
     fun confirmFrpInstallationFails() {
         try {
-            setSecureSetting("secure_frp_mode", 1)
+            setSecureFrp(true)
 
             try {
                 val installation = startInstallationViaSession()
@@ -111,7 +111,7 @@
             // Install should never have started
             assertNotInstalled()
         } finally {
-            setSecureSetting("secure_frp_mode", 0)
+            setSecureFrp(false)
         }
     }
 }
diff --git a/tests/tests/permission2/res/raw/automotive_android_manifest.xml b/tests/tests/permission2/res/raw/automotive_android_manifest.xml
index dac484b..dd37ac9 100644
--- a/tests/tests/permission2/res/raw/automotive_android_manifest.xml
+++ b/tests/tests/permission2/res/raw/automotive_android_manifest.xml
@@ -15,205 +15,340 @@
 -->
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-        xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
-        package="com.android.car"
-        coreApp="true"
-        android:sharedUserId="android.uid.system">
+     xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
+     package="com.android.car"
+     coreApp="true"
+     android:sharedUserId="android.uid.system">
 
-    <original-package android:name="com.android.car" />
-     <permission-group
-        android:name="android.car.permission-group.CAR_MONITORING"
-        android:icon="@drawable/perm_group_car"
-        android:description="@string/car_permission_desc"
-        android:label="@string/car_permission_label" />
-    <permission
-        android:name="android.car.permission.CAR_ENERGY"
-        android:permissionGroup="android.car.permission-group.CAR_MONITORING"
-        android:protectionLevel="dangerous"
-        android:label="@string/car_permission_label_energy"
-        android:description="@string/car_permission_desc_energy" />
-    <permission
-        android:name="android.car.permission.CAR_IDENTIFICATION"
-        android:protectionLevel="system|signature"
-        android:label="@string/car_permission_label_car_identification"
-        android:description="@string/car_permission_desc_car_identification" />
-    <permission
-        android:name="android.car.permission.CONTROL_CAR_CLIMATE"
-        android:protectionLevel="system|signature"
-        android:label="@string/car_permission_label_hvac"
-        android:description="@string/car_permission_desc_hvac" />
-    <permission
-        android:name="android.car.permission.CONTROL_CAR_DOORS"
-        android:protectionLevel="system|signature"
-        android:label="@string/car_permission_label_control_car_doors"
-        android:description="@string/car_permission_desc_control_car_doors" />
-    <permission
-        android:name="android.car.permission.CONTROL_CAR_WINDOWS"
-        android:protectionLevel="system|signature"
-        android:label="@string/car_permission_label_control_car_windows"
-        android:description="@string/car_permission_desc_control_car_windows" />
-    <permission
-        android:name="android.car.permission.CONTROL_CAR_MIRRORS"
-        android:protectionLevel="system|signature"
-        android:label="@string/car_permission_label_control_car_mirrors"
-        android:description="@string/car_permission_desc_control_car_mirrors" />
-    <permission
-        android:name="android.car.permission.CONTROL_CAR_SEATS"
-        android:protectionLevel="system|signature"
-        android:label="@string/car_permission_label_control_car_seats"
-        android:description="@string/car_permission_desc_control_car_seats" />
-    <permission
-        android:name="android.car.permission.CAR_MILEAGE"
-        android:protectionLevel="system|signature"
-        android:label="@string/car_permission_label_mileage"
-        android:description="@string/car_permission_desc_mileage" />
-    <permission
-        android:name="android.car.permission.CAR_TIRES"
-        android:protectionLevel="system|signature"
-        android:label="@string/car_permission_label_car_tires"
-        android:description="@string/car_permission_desc_car_tires" />
-    <permission
-        android:name="android.car.permission.READ_CAR_STEERING"
-        android:protectionLevel="system|signature"
-        android:label="@string/car_permission_label_car_steering"
-        android:description="@string/car_permission_desc_car_steering" />
-    <permission
-        android:name="android.car.permission.READ_CAR_DISPLAY_UNITS"
-        android:protectionLevel="normal"
-        android:label="@string/car_permission_label_read_car_display_units"
-        android:description="@string/car_permission_desc_read_car_display_units" />
-    <permission
-        android:name="android.car.permission.CONTROL_CAR_DISPLAY_UNITS"
-        android:protectionLevel="normal"
-        android:label="@string/car_permission_label_control_car_display_units"
-        android:description="@string/car_permission_desc_control_car_display_units" />
-    <permission
-        android:name="android.car.permission.CAR_SPEED"
-        android:permissionGroup="android.permission-group.LOCATION"
-        android:protectionLevel="dangerous"
-        android:label="@string/car_permission_label_speed"
-        android:description="@string/car_permission_desc_speed" />
-    <permission
-        android:name="android.car.permission.CAR_ENERGY_PORTS"
-        android:protectionLevel="normal"
-        android:label="@string/car_permission_label_car_energy_ports"
-        android:description="@string/car_permission_desc_car_energy_ports" />
-    <permission
-        android:name="android.car.permission.CAR_ENGINE_DETAILED"
-        android:protectionLevel="system|signature"
-        android:label="@string/car_permission_label_car_engine_detailed"
-        android:description="@string/car_permission_desc_car_engine_detailed" />
-    <permission
-        android:name="android.car.permission.CAR_DYNAMICS_STATE"
-        android:protectionLevel="system|signature"
-        android:label="@string/car_permission_label_vehicle_dynamics_state"
-        android:description="@string/car_permission_desc_vehicle_dynamics_state" />
-    <permission
-        android:name="android.car.permission.CAR_VENDOR_EXTENSION"
-        android:protectionLevel="system|signature"
-        android:label="@string/car_permission_label_vendor_extension"
-        android:description="@string/car_permission_desc_vendor_extension" />
-    <permission
-        android:name="android.car.permission.CAR_PROJECTION"
-        android:protectionLevel="system|signature"
-        android:label="@string/car_permission_label_projection"
-        android:description="@string/car_permission_desc_projection" />
-    <permission
-            android:name="android.car.permission.ACCESS_CAR_PROJECTION_STATUS"
-            android:protectionLevel="system|signature"
-            android:label="@string/car_permission_label_access_projection_status"
-            android:description="@string/car_permission_desc_access_projection_status" />
-    <permission
-            android:name="android.car.permission.BIND_PROJECTION_SERVICE"
-            android:protectionLevel="signature"
-            android:label="@string/car_permission_label_bind_projection_service"
-            android:description="@string/car_permission_desc_bind_projection_service" />
-    <permission
-        android:name="android.car.permission.CAR_MOCK_VEHICLE_HAL"
-        android:protectionLevel="system|signature"
-        android:label="@string/car_permission_label_mock_vehicle_hal"
-        android:description="@string/car_permission_desc_mock_vehicle_hal" />
-    <permission
-        android:name="android.car.permission.CAR_INFO"
-        android:protectionLevel="normal"
-        android:label="@string/car_permission_label_car_info"
-        android:description="@string/car_permission_desc_car_info" />
-    <permission
-        android:name="android.car.permission.CAR_EXTERIOR_ENVIRONMENT"
-        android:protectionLevel="normal"
-        android:label="@string/car_permission_label_car_exterior_environment"
-        android:description="@string/car_permission_desc_car_exterior_environment" />
-    <permission
-        android:name="android.car.permission.CAR_EXTERIOR_LIGHTS"
-        android:protectionLevel="system|signature"
-        android:label="@string/car_permission_label_car_exterior_lights"
-        android:description="@string/car_permission_desc_car_exterior_lights" />
-    <permission
-        android:name="android.car.permission.CONTROL_CAR_EXTERIOR_LIGHTS"
-        android:protectionLevel="system|signature"
-        android:label="@string/car_permission_label_control_car_exterior_lights"
-        android:description="@string/car_permission_desc_control_car_exterior_lights" />
-    <permission
-        android:name="android.car.permission.READ_CAR_INTERIOR_LIGHTS"
-        android:protectionLevel="system|signature"
-        android:label="@string/car_permission_label_car_interior_lights"
-        android:description="@string/car_permission_desc_car_interior_lights" />
-    <permission
-        android:name="android.car.permission.CONTROL_CAR_INTERIOR_LIGHTS"
-        android:protectionLevel="system|signature"
-        android:label="@string/car_permission_label_control_car_interior_lights"
-        android:description="@string/car_permission_desc_control_car_interior_lights" />
-    <permission
-        android:name="android.car.permission.CAR_POWER"
-        android:protectionLevel="system|signature"
-        android:label="@string/car_permission_label_car_power"
-        android:description="@string/car_permission_desc_car_power" />
-    <permission
-        android:name="android.car.permission.CAR_POWERTRAIN"
-        android:protectionLevel="normal"
-        android:label="@string/car_permission_label_car_powertrain"
-        android:description="@string/car_permission_desc_car_powertrain" />
-    <permission
-        android:name="android.car.permission.CAR_NAVIGATION_MANAGER"
-        android:protectionLevel="system|signature"
-        android:label="@string/car_permission_car_navigation_manager"
-        android:description="@string/car_permission_desc_car_navigation_manager" />
-    <permission
-        android:name="android.car.permission.CAR_DIAGNOSTICS"
-        android:protectionLevel="system|signature"
-        android:label="@string/car_permission_label_diag_read"
-        android:description="@string/car_permission_desc_diag_read" />
-    <permission
-      android:name="android.car.permission.CLEAR_CAR_DIAGNOSTICS"
-      android:protectionLevel="system|signature"
-      android:label="@string/car_permission_label_diag_clear"
-      android:description="@string/car_permission_desc_diag_clear" />
-    <permission
-        android:name="android.car.permission.BIND_VMS_CLIENT"
-        android:protectionLevel="signature"
-        android:label="@string/car_permission_label_bind_vms_client"
-        android:description="@string/car_permission_desc_bind_vms_client" />
-    <permission
-        android:name="android.car.permission.VMS_PUBLISHER"
-        android:protectionLevel="system|signature"
-        android:label="@string/car_permission_label_vms_publisher"
-        android:description="@string/car_permission_desc_vms_publisher" />
-    <permission
-        android:name="android.car.permission.VMS_SUBSCRIBER"
-        android:protectionLevel="system|signature"
-        android:label="@string/car_permission_label_vms_subscriber"
-        android:description="@string/car_permission_desc_vms_subscriber" />
-    <permission
-        android:name="android.car.permission.CAR_DRIVING_STATE"
-        android:protectionLevel="system|signature"
-        android:label="@string/car_permission_label_driving_state"
-        android:description="@string/car_permission_desc_driving_state" />
+    <original-package android:name="com.android.car"/>
+     <permission-group android:name="android.car.permission-group.CAR_MONITORING"
+          android:icon="@drawable/perm_group_car"
+          android:description="@string/car_permission_desc"
+          android:label="@string/car_permission_label"/>
+    <permission android:name="android.car.permission.CAR_ENERGY"
+         android:permissionGroup="android.car.permission-group.CAR_MONITORING"
+         android:protectionLevel="dangerous"
+         android:label="@string/car_permission_label_energy"
+         android:description="@string/car_permission_desc_energy"/>
+    <permission android:name="android.car.permission.CAR_IDENTIFICATION"
+         android:protectionLevel="system|signature"
+         android:label="@string/car_permission_label_car_identification"
+         android:description="@string/car_permission_desc_car_identification"/>
+    <permission android:name="android.car.permission.CONTROL_CAR_CLIMATE"
+         android:protectionLevel="system|signature"
+         android:label="@string/car_permission_label_hvac"
+         android:description="@string/car_permission_desc_hvac"/>
+    <permission android:name="android.car.permission.CONTROL_CAR_DOORS"
+         android:protectionLevel="system|signature"
+         android:label="@string/car_permission_label_control_car_doors"
+         android:description="@string/car_permission_desc_control_car_doors"/>
+    <permission android:name="android.car.permission.CONTROL_CAR_WINDOWS"
+         android:protectionLevel="system|signature"
+         android:label="@string/car_permission_label_control_car_windows"
+         android:description="@string/car_permission_desc_control_car_windows"/>
+    <permission android:name="android.car.permission.CONTROL_CAR_MIRRORS"
+         android:protectionLevel="system|signature"
+         android:label="@string/car_permission_label_control_car_mirrors"
+         android:description="@string/car_permission_desc_control_car_mirrors"/>
+    <permission android:name="android.car.permission.CONTROL_CAR_SEATS"
+         android:protectionLevel="system|signature"
+         android:label="@string/car_permission_label_control_car_seats"
+         android:description="@string/car_permission_desc_control_car_seats"/>
+    <permission android:name="android.car.permission.CAR_MILEAGE"
+         android:protectionLevel="system|signature"
+         android:label="@string/car_permission_label_mileage"
+         android:description="@string/car_permission_desc_mileage"/>
+    <permission android:name="android.car.permission.CAR_TIRES"
+         android:protectionLevel="system|signature"
+         android:label="@string/car_permission_label_car_tires"
+         android:description="@string/car_permission_desc_car_tires"/>
+    <permission android:name="android.car.permission.READ_CAR_STEERING"
+         android:protectionLevel="system|signature"
+         android:label="@string/car_permission_label_car_steering"
+         android:description="@string/car_permission_desc_car_steering"/>
+    <permission android:name="android.car.permission.READ_CAR_DISPLAY_UNITS"
+         android:protectionLevel="normal"
+         android:label="@string/car_permission_label_read_car_display_units"
+         android:description="@string/car_permission_desc_read_car_display_units"/>
+    <permission android:name="android.car.permission.CONTROL_CAR_DISPLAY_UNITS"
+         android:protectionLevel="normal"
+         android:label="@string/car_permission_label_control_car_display_units"
+         android:description="@string/car_permission_desc_control_car_display_units"/>
+    <permission android:name="android.car.permission.CAR_SPEED"
+         android:permissionGroup="android.permission-group.LOCATION"
+         android:protectionLevel="dangerous"
+         android:label="@string/car_permission_label_speed"
+         android:description="@string/car_permission_desc_speed"/>
+    <permission android:name="android.car.permission.CAR_ENERGY_PORTS"
+         android:protectionLevel="normal"
+         android:label="@string/car_permission_label_car_energy_ports"
+         android:description="@string/car_permission_desc_car_energy_ports"/>
+    <permission android:name="android.car.permission.CAR_ENGINE_DETAILED"
+         android:protectionLevel="system|signature"
+         android:label="@string/car_permission_label_car_engine_detailed"
+         android:description="@string/car_permission_desc_car_engine_detailed"/>
+    <permission android:name="android.car.permission.CAR_DYNAMICS_STATE"
+         android:protectionLevel="system|signature"
+         android:label="@string/car_permission_label_vehicle_dynamics_state"
+         android:description="@string/car_permission_desc_vehicle_dynamics_state"/>
+    <permission android:name="android.car.permission.CAR_VENDOR_EXTENSION"
+         android:protectionLevel="system|signature"
+         android:label="@string/car_permission_label_vendor_extension"
+         android:description="@string/car_permission_desc_vendor_extension"/>
+    <permission android:name="android.car.permission.CAR_PROJECTION"
+         android:protectionLevel="system|signature"
+         android:label="@string/car_permission_label_projection"
+         android:description="@string/car_permission_desc_projection"/>
+    <permission android:name="android.car.permission.ACCESS_CAR_PROJECTION_STATUS"
+         android:protectionLevel="system|signature"
+         android:label="@string/car_permission_label_access_projection_status"
+         android:description="@string/car_permission_desc_access_projection_status"/>
+    <permission android:name="android.car.permission.BIND_PROJECTION_SERVICE"
+         android:protectionLevel="signature"
+         android:label="@string/car_permission_label_bind_projection_service"
+         android:description="@string/car_permission_desc_bind_projection_service"/>
+    <permission android:name="android.car.permission.CAR_MOCK_VEHICLE_HAL"
+         android:protectionLevel="system|signature"
+         android:label="@string/car_permission_label_mock_vehicle_hal"
+         android:description="@string/car_permission_desc_mock_vehicle_hal"/>
+    <permission android:name="android.car.permission.CAR_INFO"
+         android:protectionLevel="normal"
+         android:label="@string/car_permission_label_car_info"
+         android:description="@string/car_permission_desc_car_info"/>
+    <permission android:name="android.car.permission.CAR_EXTERIOR_ENVIRONMENT"
+         android:protectionLevel="normal"
+         android:label="@string/car_permission_label_car_exterior_environment"
+         android:description="@string/car_permission_desc_car_exterior_environment"/>
+    <permission android:name="android.car.permission.CAR_EXTERIOR_LIGHTS"
+         android:protectionLevel="system|signature"
+         android:label="@string/car_permission_label_car_exterior_lights"
+         android:description="@string/car_permission_desc_car_exterior_lights"/>
+    <permission android:name="android.car.permission.CONTROL_CAR_EXTERIOR_LIGHTS"
+         android:protectionLevel="system|signature"
+         android:label="@string/car_permission_label_control_car_exterior_lights"
+         android:description="@string/car_permission_desc_control_car_exterior_lights"/>
+    <permission android:name="android.car.permission.READ_CAR_INTERIOR_LIGHTS"
+         android:protectionLevel="system|signature"
+         android:label="@string/car_permission_label_car_interior_lights"
+         android:description="@string/car_permission_desc_car_interior_lights"/>
+    <permission android:name="android.car.permission.CONTROL_CAR_INTERIOR_LIGHTS"
+         android:protectionLevel="system|signature"
+         android:label="@string/car_permission_label_control_car_interior_lights"
+         android:description="@string/car_permission_desc_control_car_interior_lights"/>
+    <permission android:name="android.car.permission.CAR_POWER"
+         android:protectionLevel="system|signature"
+         android:label="@string/car_permission_label_car_power"
+         android:description="@string/car_permission_desc_car_power"/>
+    <permission android:name="android.car.permission.CAR_POWERTRAIN"
+         android:protectionLevel="normal"
+         android:label="@string/car_permission_label_car_powertrain"
+         android:description="@string/car_permission_desc_car_powertrain"/>
+    <permission android:name="android.car.permission.CAR_NAVIGATION_MANAGER"
+         android:protectionLevel="system|signature"
+         android:label="@string/car_permission_car_navigation_manager"
+         android:description="@string/car_permission_desc_car_navigation_manager"/>
+    <permission android:name="android.car.permission.CAR_DIAGNOSTICS"
+         android:protectionLevel="system|signature"
+         android:label="@string/car_permission_label_diag_read"
+         android:description="@string/car_permission_desc_diag_read"/>
+    <permission android:name="android.car.permission.CLEAR_CAR_DIAGNOSTICS"
+         android:protectionLevel="system|signature"
+         android:label="@string/car_permission_label_diag_clear"
+         android:description="@string/car_permission_desc_diag_clear"/>
+    <permission android:name="android.car.permission.BIND_VMS_CLIENT"
+         android:protectionLevel="signature"
+         android:label="@string/car_permission_label_bind_vms_client"
+         android:description="@string/car_permission_desc_bind_vms_client"/>
+    <permission android:name="android.car.permission.VMS_PUBLISHER"
+         android:protectionLevel="system|signature"
+         android:label="@string/car_permission_label_vms_publisher"
+         android:description="@string/car_permission_desc_vms_publisher"/>
+    <permission android:name="android.car.permission.VMS_SUBSCRIBER"
+         android:protectionLevel="system|signature"
+         android:label="@string/car_permission_label_vms_subscriber"
+         android:description="@string/car_permission_desc_vms_subscriber"/>
+    <permission android:name="android.car.permission.CAR_DRIVING_STATE"
+         android:protectionLevel="system|signature"
+         android:label="@string/car_permission_label_driving_state"
+         android:description="@string/car_permission_desc_driving_state"/>
     <!--  may replace this with system permission if proper one is defined. -->
-    <permission
-        android:name="android.car.permission.CONTROL_APP_BLOCKING"
-        android:protectionLevel="system|signature"
-        android:label="@string/car_permission_label_control_app_blocking"
-        android:description="@string/car_permission_desc_control_app_blocking" />
+    <permission android:name="android.car.permission.CONTROL_APP_BLOCKING"
+         android:protectionLevel="system|signature"
+         android:label="@string/car_permission_label_control_app_blocking"
+         android:description="@string/car_permission_desc_control_app_blocking"/>
+    <permission android:name="android.car.permission.ADJUST_RANGE_REMAINING"
+         android:protectionLevel="signature|privileged"
+         android:label="@string/car_permission_label_adjust_range_remaining"
+         android:description="@string/car_permission_desc_adjust_range_remaining"/>
+    <permission android:name="android.car.permission.READ_CAR_OCCUPANT_AWARENESS_STATE"
+         android:protectionLevel="signature|privileged"
+         android:label="@string/car_permission_label_read_car_occupant_awareness_state"
+         android:description="@string/car_permission_desc_read_car_occupant_awareness_state"/>
+    <permission android:name="android.car.permission.CONTROL_CAR_ENERGY_PORTS"
+         android:protectionLevel="signature|privileged"
+         android:label="@string/car_permission_label_control_car_energy_ports"
+         android:description="@string/car_permission_desc_control_car_energy_ports"/>
+    <permission android:name="android.car.permission.CONTROL_CAR_OCCUPANT_AWARENESS_SYSTEM"
+         android:protectionLevel="signature|privileged"
+         android:label="@string/car_permission_label_control_car_occupant_awareness_system"
+         android:description="@string/car_permission_desc_control_car_occupant_awareness_system"/>
+    <permission android:name="android.car.permission.CONTROL_CAR_FEATURES"
+         android:protectionLevel="signature|privileged"
+         android:label="@string/car_permission_label_control_car_features"
+         android:description="@string/car_permission_desc_control_car_features"/>
+    <permission android:name="android.car.permission.USE_CAR_WATCHDOG"
+         android:protectionLevel="signature|privileged"
+         android:label="@string/car_permission_label_use_car_watchdog"
+         android:description="@string/car_permission_desc_use_car_watchdog"/>
+    <permission android:name="android.car.permission.READ_CAR_VENDOR_PERMISSION_INFO"
+         android:protectionLevel="signature|privileged"
+         android:label="@string/car_permission_label_vendor_permission_info"
+         android:description="@string/car_permission_desc_vendor_permission_info"/>
+    <!-- Permission for vendor properties -->
+    <permission android:name="android.car.permission.GET_CAR_VENDOR_CATEGORY_WINDOW"
+         android:protectionLevel="signature|privileged"
+         android:label="@string/car_permission_label_get_car_vendor_category_window"
+         android:description="@string/car_permission_desc_get_car_vendor_category_window"/>
+    <permission android:name="android.car.permission.SET_CAR_VENDOR_CATEGORY_WINDOW"
+         android:protectionLevel="signature|privileged"
+         android:label="@string/car_permission_label_set_car_vendor_category_window"
+         android:description="@string/car_permission_desc_set_car_vendor_category_window"/>
+    <permission android:name="android.car.permission.GET_CAR_VENDOR_CATEGORY_DOOR"
+         android:protectionLevel="signature|privileged"
+         android:label="@string/car_permission_label_get_car_vendor_category_door"
+         android:description="@string/car_permission_desc_get_car_vendor_category_door"/>
+    <permission android:name="android.car.permission.SET_CAR_VENDOR_CATEGORY_DOOR"
+         android:protectionLevel="signature|privileged"
+         android:label="@string/car_permission_label_set_car_vendor_category_door"
+         android:description="@string/car_permission_desc_set_car_vendor_category_door"/>
+    <permission android:name="android.car.permission.GET_CAR_VENDOR_CATEGORY_SEAT"
+         android:protectionLevel="signature|privileged"
+         android:label="@string/car_permission_label_get_car_vendor_category_seat"
+         android:description="@string/car_permission_desc_get_car_vendor_category_seat"/>
+    <permission android:name="android.car.permission.SET_CAR_VENDOR_CATEGORY_SEAT"
+         android:protectionLevel="signature|privileged"
+         android:label="@string/car_permission_label_set_car_vendor_category_seat"
+         android:description="@string/car_permission_desc_set_car_vendor_category_seat"/>
+    <permission android:name="android.car.permission.GET_CAR_VENDOR_CATEGORY_MIRROR"
+         android:protectionLevel="signature|privileged"
+         android:label="@string/car_permission_label_get_car_vendor_category_mirror"
+         android:description="@string/car_permission_desc_get_car_vendor_category_mirror"/>
+    <permission android:name="android.car.permission.SET_CAR_VENDOR_CATEGORY_MIRROR"
+         android:protectionLevel="signature|privileged"
+         android:label="@string/car_permission_label_set_car_vendor_category_mirror"
+         android:description="@string/car_permission_desc_set_car_vendor_category_mirror"/>
+    <permission android:name="android.car.permission.GET_CAR_VENDOR_CATEGORY_INFO"
+         android:protectionLevel="signature|privileged"
+         android:label="@string/car_permission_label_get_car_vendor_category_info"
+         android:description="@string/car_permission_desc_get_car_vendor_category_info"/>
+    <permission android:name="android.car.permission.SET_CAR_VENDOR_CATEGORY_INFO"
+         android:protectionLevel="signature|privileged"
+         android:label="@string/car_permission_label_set_car_vendor_category_info"
+         android:description="@string/car_permission_desc_set_car_vendor_category_info"/>
+    <permission android:name="android.car.permission.GET_CAR_VENDOR_CATEGORY_ENGINE"
+         android:protectionLevel="signature|privileged"
+         android:label="@string/car_permission_label_get_car_vendor_category_engine"
+         android:description="@string/car_permission_desc_get_car_vendor_category_engine"/>
+    <permission android:name="android.car.permission.SET_CAR_VENDOR_CATEGORY_ENGINE"
+         android:protectionLevel="signature|privileged"
+         android:label="@string/car_permission_label_set_car_vendor_category_engine"
+         android:description="@string/car_permission_desc_set_car_vendor_category_engine"/>
+    <permission android:name="android.car.permission.GET_CAR_VENDOR_CATEGORY_HVAC"
+         android:protectionLevel="signature|privileged"
+         android:label="@string/car_permission_label_get_car_vendor_category_hvac"
+         android:description="@string/car_permission_desc_get_car_vendor_category_hvac"/>
+    <permission android:name="android.car.permission.SET_CAR_VENDOR_CATEGORY_HVAC"
+         android:protectionLevel="signature|privileged"
+         android:label="@string/car_permission_label_set_car_vendor_category_hvac"
+         android:description="@string/car_permission_desc_set_car_vendor_category_hvac"/>
+    <permission android:name="android.car.permission.GET_CAR_VENDOR_CATEGORY_LIGHT"
+         android:protectionLevel="signature|privileged"
+         android:label="@string/car_permission_label_get_car_vendor_category_light"
+         android:description="@string/car_permission_desc_get_car_vendor_category_light"/>
+    <permission android:name="android.car.permission.SET_CAR_VENDOR_CATEGORY_LIGHT"
+         android:protectionLevel="signature|privileged"
+         android:label="@string/car_permission_label_set_car_vendor_category_light"
+         android:description="@string/car_permission_desc_set_car_vendor_category_light"/>
+    <permission android:name="android.car.permission.GET_CAR_VENDOR_CATEGORY_1"
+         android:protectionLevel="signature|privileged"
+         android:label="@string/car_permission_label_get_car_vendor_category_1"
+         android:description="@string/car_permission_desc_get_car_vendor_category_1"/>
+    <permission android:name="android.car.permission.SET_CAR_VENDOR_CATEGORY_1"
+         android:protectionLevel="signature|privileged"
+         android:label="@string/car_permission_label_set_car_vendor_category_1"
+         android:description="@string/car_permission_desc_set_car_vendor_category_1"/>
+    <permission android:name="android.car.permission.GET_CAR_VENDOR_CATEGORY_2"
+         android:protectionLevel="signature|privileged"
+         android:label="@string/car_permission_label_get_car_vendor_category_2"
+         android:description="@string/car_permission_desc_get_car_vendor_category_2"/>
+    <permission android:name="android.car.permission.SET_CAR_VENDOR_CATEGORY_2"
+         android:protectionLevel="signature|privileged"
+         android:label="@string/car_permission_label_set_car_vendor_category_2"
+         android:description="@string/car_permission_desc_set_car_vendor_category_2"/>
+    <permission android:name="android.car.permission.GET_CAR_VENDOR_CATEGORY_3"
+         android:protectionLevel="signature|privileged"
+         android:label="@string/car_permission_label_get_car_vendor_category_3"
+         android:description="@string/car_permission_desc_get_car_vendor_category_3"/>
+    <permission android:name="android.car.permission.SET_CAR_VENDOR_CATEGORY_3"
+         android:protectionLevel="signature|privileged"
+         android:label="@string/car_permission_label_set_car_vendor_category_3"
+         android:description="@string/car_permission_desc_set_car_vendor_category_3"/>
+    <permission android:name="android.car.permission.GET_CAR_VENDOR_CATEGORY_4"
+         android:protectionLevel="signature|privileged"
+         android:label="@string/car_permission_label_get_car_vendor_category_4"
+         android:description="@string/car_permission_desc_get_car_vendor_category_4"/>
+    <permission android:name="android.car.permission.SET_CAR_VENDOR_CATEGORY_4"
+         android:protectionLevel="signature|privileged"
+         android:label="@string/car_permission_label_set_car_vendor_category_4"
+         android:description="@string/car_permission_desc_set_car_vendor_category_4"/>
+    <permission android:name="android.car.permission.GET_CAR_VENDOR_CATEGORY_5"
+         android:protectionLevel="signature|privileged"
+         android:label="@string/car_permission_label_get_car_vendor_category_5"
+         android:description="@string/car_permission_desc_get_car_vendor_category_5"/>
+    <permission android:name="android.car.permission.SET_CAR_VENDOR_CATEGORY_5"
+         android:protectionLevel="signature|privileged"
+         android:label="@string/car_permission_label_set_car_vendor_category_5"
+         android:description="@string/car_permission_desc_set_car_vendor_category_5"/>
+    <permission android:name="android.car.permission.GET_CAR_VENDOR_CATEGORY_6"
+         android:protectionLevel="signature|privileged"
+         android:label="@string/car_permission_label_get_car_vendor_category_6"
+         android:description="@string/car_permission_desc_get_car_vendor_category_6"/>
+    <permission android:name="android.car.permission.SET_CAR_VENDOR_CATEGORY_6"
+         android:protectionLevel="signature|privileged"
+         android:label="@string/car_permission_label_set_car_vendor_category_6"
+         android:description="@string/car_permission_desc_set_car_vendor_category_6"/>
+    <permission android:name="android.car.permission.GET_CAR_VENDOR_CATEGORY_7"
+         android:protectionLevel="signature|privileged"
+         android:label="@string/car_permission_label_get_car_vendor_category_7"
+         android:description="@string/car_permission_desc_get_car_vendor_category_7"/>
+    <permission android:name="android.car.permission.SET_CAR_VENDOR_CATEGORY_7"
+         android:protectionLevel="signature|privileged"
+         android:label="@string/car_permission_label_set_car_vendor_category_7"
+         android:description="@string/car_permission_desc_set_car_vendor_category_7"/>
+    <permission android:name="android.car.permission.GET_CAR_VENDOR_CATEGORY_8"
+         android:protectionLevel="signature|privileged"
+         android:label="@string/car_permission_label_get_car_vendor_category_8"
+         android:description="@string/car_permission_desc_get_car_vendor_category_8"/>
+    <permission android:name="android.car.permission.SET_CAR_VENDOR_CATEGORY_8"
+         android:protectionLevel="signature|privileged"
+         android:label="@string/car_permission_label_set_car_vendor_category_8"
+         android:description="@string/car_permission_desc_set_car_vendor_category_8"/>
+    <permission android:name="android.car.permission.GET_CAR_VENDOR_CATEGORY_9"
+         android:protectionLevel="signature|privileged"
+         android:label="@string/car_permission_label_get_car_vendor_category_9"
+         android:description="@string/car_permission_desc_get_car_vendor_category_9"/>
+    <permission android:name="android.car.permission.SET_CAR_VENDOR_CATEGORY_9"
+         android:protectionLevel="signature|privileged"
+         android:label="@string/car_permission_label_set_car_vendor_category_9"
+         android:description="@string/car_permission_desc_set_car_vendor_category_9"/>
+    <permission android:name="android.car.permission.GET_CAR_VENDOR_CATEGORY_10"
+         android:protectionLevel="signature|privileged"
+         android:label="@string/car_permission_label_get_car_vendor_category_10"
+         android:description="@string/car_permission_desc_get_car_vendor_category_10"/>
+    <permission android:name="android.car.permission.SET_CAR_VENDOR_CATEGORY_10"
+         android:protectionLevel="signature|privileged"
+         android:label="@string/car_permission_label_set_car_vendor_category_10"
+         android:description="@string/car_permission_desc_set_car_vendor_category_10"/>
 
     <permission
         android:name="android.car.permission.CAR_CONTROL_AUDIO_VOLUME"