mirror of
https://github.com/Evolution-X-Devices/device_google_walleye
synced 2026-01-27 15:51:28 +00:00
Dark boot on dark theme.
Bug: 113028175
Bug: 134157796
Test: Build and flash walleye with the matching bootloader change.
Check serial log regarding the start of vendor.darkboot and
vendor.darkboot_clear services when toggling dark theme in
Settings. Also read the value via `dd bs=1 skip=14408
if=/dev/block/sdd1 count=32 | xxd` to confirm the change.
Test: Trigger a factory reset via Settings. Check the value in /misc
after the reset.
Change-Id: Ie8504cec4358576890cc395de8df1679fa52fa01
This commit is contained in:
@@ -48,3 +48,28 @@ on property:persist.vendor.charge.stop.level=* && property:sys.all.modules.ready
|
||||
|
||||
on property:persist.vendor.charge.start.level=* && property:sys.all.modules.ready=1
|
||||
write /sys/module/htc_battery/parameters/charge_start_level ${persist.vendor.charge.start.level}
|
||||
|
||||
# Write the dark theme magic (`theme-dark`, or 0x7468656d652d6461726b in hex string) to /misc
|
||||
# partition. Offset 12360 (0x3048) in vendor space is effectively offset 14408 (0x3848) in /misc
|
||||
# partition.
|
||||
service vendor.darkboot /vendor/bin/misc_writer --vendor-space-offset 12360 --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.darkboot_clear /vendor/bin/misc_writer --vendor-space-offset 12360 --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.darkboot
|
||||
|
||||
# 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.darkboot_clear
|
||||
|
||||
on property:persist.sys.theme=0
|
||||
start vendor.darkboot_clear
|
||||
|
||||
38
recovery/Android.bp
Normal file
38
recovery/Android.bp
Normal file
@@ -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_walleye",
|
||||
owner: "google",
|
||||
cflags: [
|
||||
"-Wall",
|
||||
"-Wextra",
|
||||
"-Werror",
|
||||
"-pedantic",
|
||||
],
|
||||
srcs: [
|
||||
"recovery_ui.cpp",
|
||||
],
|
||||
|
||||
static_libs: [
|
||||
"libbootloader_message",
|
||||
],
|
||||
|
||||
shared_libs: [
|
||||
"libbase",
|
||||
"librecovery_ui",
|
||||
],
|
||||
}
|
||||
58
recovery/recovery_ui.cpp
Normal file
58
recovery/recovery_ui.cpp
Normal file
@@ -0,0 +1,58 @@
|
||||
/*
|
||||
* 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`). The magic is at
|
||||
// 0x3048 in vendor space, or (0x800 + 0x3048) since the start of /misc.
|
||||
const std::string wipe_str(10, '\x00');
|
||||
constexpr size_t kProvisionedFlagOffsetInVendorSpace = 0x3048;
|
||||
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 WalleyeDevice : public Device {
|
||||
public:
|
||||
WalleyeDevice(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 WalleyeDevice(new ScreenRecoveryUI);
|
||||
}
|
||||
@@ -35,3 +35,8 @@ BOARD_LISA_TARGET_SCRIPTS := device/google/wahoo/lisa/
|
||||
BOARD_KERNEL_CMDLINE += androidboot.dtbo_idx=3
|
||||
|
||||
BOARD_EXT4_SHARE_DUP_BLOCKS := true
|
||||
|
||||
TARGET_RECOVERY_UI_LIB := \
|
||||
librecovery_ui_walleye \
|
||||
libbootloader_message \
|
||||
libfstab
|
||||
|
||||
Reference in New Issue
Block a user