summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorandroid-build-team Robot <android-build-team-robot@google.com>2019-06-25 12:43:24 +0000
committerandroid-build-team Robot <android-build-team-robot@google.com>2019-06-25 12:43:24 +0000
commit73a40197d1fd2d0d319e034bcef8323c65251c3e (patch)
treee05910d2293ecb6f18aa753778c1bb588284b913
parentd79b6e414ba7f9bfcd34fc8e6886b9a6318f4b30 (diff)
parent02e6a6128bac71ea2f1840d4c6ddcb1d93b6c789 (diff)
downloadtaimen-android-security-10.0.0_r61.tar.gz
Snap for 5685999 from 02e6a6128bac71ea2f1840d4c6ddcb1d93b6c789 to qt-releaseandroid-vts-10.0_r9android-vts-10.0_r8android-vts-10.0_r7android-vts-10.0_r6android-vts-10.0_r5android-vts-10.0_r4android-vts-10.0_r3android-vts-10.0_r2android-vts-10.0_r16android-vts-10.0_r15android-vts-10.0_r14android-vts-10.0_r13android-vts-10.0_r12android-vts-10.0_r11android-vts-10.0_r10android-vts-10.0_r1android-security-10.0.0_r75android-security-10.0.0_r74android-security-10.0.0_r73android-security-10.0.0_r72android-security-10.0.0_r71android-security-10.0.0_r70android-security-10.0.0_r69android-security-10.0.0_r68android-security-10.0.0_r67android-security-10.0.0_r66android-security-10.0.0_r65android-security-10.0.0_r64android-security-10.0.0_r63android-security-10.0.0_r62android-security-10.0.0_r61android-security-10.0.0_r60android-security-10.0.0_r59android-security-10.0.0_r58android-security-10.0.0_r57android-security-10.0.0_r56android-security-10.0.0_r55android-security-10.0.0_r54android-security-10.0.0_r53android-security-10.0.0_r52android-security-10.0.0_r51android-security-10.0.0_r50android-security-10.0.0_r49android-security-10.0.0_r48android-cts-10.0_r9android-cts-10.0_r8android-cts-10.0_r7android-cts-10.0_r6android-cts-10.0_r5android-cts-10.0_r4android-cts-10.0_r3android-cts-10.0_r2android-cts-10.0_r16android-cts-10.0_r15android-cts-10.0_r14android-cts-10.0_r13android-cts-10.0_r12android-cts-10.0_r11android-cts-10.0_r10android-cts-10.0_r1android-10.0.0_r6android-10.0.0_r5android-10.0.0_r47android-10.0.0_r46android-10.0.0_r4android-10.0.0_r3android-10.0.0_r2android-10.0.0_r17android-10.0.0_r11android-10.0.0_r10android-10.0.0_r1android10-tests-releaseandroid10-security-releaseandroid10-s3-releaseandroid10-s2-releaseandroid10-s1-releaseandroid10-release
Change-Id: I9d9d40026ce3baf31a6e477cc2bf40c4945eed71
-rw-r--r--BoardConfig.mk5
-rw-r--r--init-taimen.rc24
-rw-r--r--recovery/Android.bp38
-rw-r--r--recovery/recovery_ui.cpp57
4 files changed, 124 insertions, 0 deletions
diff --git a/BoardConfig.mk b/BoardConfig.mk
index 0181ba6..fdd04a5 100644
--- a/BoardConfig.mk
+++ b/BoardConfig.mk
@@ -89,6 +89,11 @@ BOARD_LISA_TARGET_SCRIPTS := device/google/wahoo/lisa/
# rounded_corner_radius in overlay/frameworks/base/packages/SystemUI/res/values/dimens.xml.
TARGET_RECOVERY_UI_MARGIN_HEIGHT := 105
+TARGET_RECOVERY_UI_LIB := \
+ librecovery_ui_taimen \
+ libbootloader_message \
+ libfstab
+
# VTS DTBO Verification. This kernel cmdline parameter should be added by the bootloader
# for all future devices.
BOARD_KERNEL_CMDLINE += androidboot.dtbo_idx=12
diff --git a/init-taimen.rc b/init-taimen.rc
index 4a70d9e..78d48d8 100644
--- a/init-taimen.rc
+++ b/init-taimen.rc
@@ -52,3 +52,27 @@ on late-init && property:ro.boot.revision=rev_a
on late-init && property:ro.boot.revision=rev_b
setprop vendor.thermal.config thermal_info_config_evt.json
+
+# Write the dark theme magic (`theme-dark`, or 0x7468656d652d6461726b in hex string) to /misc
+# partition. Offset 0 in vendor space is effectively offset 2048 in /misc partition.
+service vendor.theme_set /vendor/bin/misc_writer --vendor-space-offset 0 --hex-string 0x7468656d652d6461726b
+ disabled
+ oneshot
+
+# Clear the 10-byte dark theme magic in /misc partition. Offset 0 in vendor space is effectively
+# offset 2048 in /misc partition.
+service vendor.theme_clear /vendor/bin/misc_writer --vendor-space-offset 0 --hex-string 0x00000000000000000000
+ disabled
+ oneshot
+
+# Set the dark boot flag on dark mode (UiModeManager.MODE_NIGHT_YES == 2).
+on property:persist.sys.theme=2
+ start vendor.theme_set
+
+# Clear the dark theme flag on light mode (UiModeManager.MODE_NIGHT_NO == 1) or auto mode
+# (UiModeManager.MODE_NIGHT_AUTO == 0).
+on property:persist.sys.theme=1
+ start vendor.theme_clear
+
+on property:persist.sys.theme=0
+ start vendor.theme_clear
diff --git a/recovery/Android.bp b/recovery/Android.bp
new file mode 100644
index 0000000..0df54eb
--- /dev/null
+++ b/recovery/Android.bp
@@ -0,0 +1,38 @@
+//
+// Copyright (C) 2019 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.
+//
+
+cc_library_static {
+ name: "librecovery_ui_taimen",
+ owner: "google",
+ cflags: [
+ "-Wall",
+ "-Wextra",
+ "-Werror",
+ "-pedantic",
+ ],
+ srcs: [
+ "recovery_ui.cpp",
+ ],
+
+ static_libs: [
+ "libbootloader_message",
+ ],
+
+ shared_libs: [
+ "libbase",
+ "librecovery_ui",
+ ],
+}
diff --git a/recovery/recovery_ui.cpp b/recovery/recovery_ui.cpp
new file mode 100644
index 0000000..2998b2a
--- /dev/null
+++ b/recovery/recovery_ui.cpp
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2019 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 <string>
+
+#include <android-base/logging.h>
+#include <bootloader_message/bootloader_message.h>
+#include <recovery_ui/device.h>
+#include <recovery_ui/screen_ui.h>
+
+// Wipes the provisioned flag as part of data wipe.
+static bool WipeProvisionedFlag() {
+ // Must be consistent with the one in init.hardware.rc (10-byte `theme-dark`).
+ const std::string wipe_str(10, '\x00');
+ constexpr size_t kProvisionedFlagOffsetInVendorSpace = 0;
+ if (std::string err; !WriteMiscPartitionVendorSpace(
+ wipe_str.data(), wipe_str.size(), kProvisionedFlagOffsetInVendorSpace, &err)) {
+ LOG(ERROR) << "Failed to write wipe string: " << err;
+ return false;
+ }
+ LOG(INFO) << "Provisioned flag wiped successful";
+ return true;
+}
+
+class TaimenDevice : public Device {
+ public:
+ TaimenDevice(ScreenRecoveryUI* ui) : Device(ui) {}
+
+ // Hook to wipe user data not stored in /data.
+ bool PostWipeData() override {
+ // Try to do everything but report a failure if anything wasn't successful.
+ bool total_success = true;
+ auto ui = GetUI();
+ ui->Print("Wiping provisioned flag...\n");
+ if (!WipeProvisionedFlag()) {
+ total_success = false;
+ }
+ return total_success;
+ }
+};
+
+Device* make_device() {
+ return new TaimenDevice(new ScreenRecoveryUI);
+}