Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 62aa2c71 authored by Mohammed Althaf T's avatar Mohammed Althaf T 😊
Browse files

Merge branch '1229-q-oem_lock' into 'v1-q'

SetupWizard: Turn off OEM unlocking during initial setup if bootloader is locked

See merge request !41
parents 2e769e16 6a0ef849
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -37,6 +37,7 @@
    <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
    <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS" />
    <uses-permission android:name="android.permission.MANAGE_USERS" />
    <uses-permission android:name="android.permission.MANAGE_USER_OEM_UNLOCK_STATE" />
    <uses-permission android:name="android.permission.CHANGE_COMPONENT_ENABLED_STATE" />
    <uses-permission android:name="android.permission.EXPAND_STATUS_BAR" />
    <uses-permission android:name="lineageos.permission.HARDWARE_ABSTRACTION_ACCESS" />
+1 −0
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@
        <permission name="android.permission.INTERACT_ACROSS_USERS"/>
        <permission name="android.permission.LOCAL_MAC_ADDRESS"/>
        <permission name="android.permission.MANAGE_USERS"/>
        <permission name="android.permission.MANAGE_USER_OEM_UNLOCK_STATE" />
        <permission name="android.permission.READ_PRIVILEGED_PHONE_STATE"/>
        <permission name="android.permission.SET_TIME"/>
        <permission name="android.permission.SET_TIME_ZONE"/>
+8 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2013 The CyanogenMod Project
 * Copyright (C) 2017-2021 The LineageOS Project
 * Copyright (C) 2022 The Calyx Institute
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
@@ -21,6 +22,7 @@ package org.lineageos.setupwizard;
import android.app.Application;
import android.os.Bundle;
import android.os.Handler;
import android.service.oemlock.OemLockManager;
import android.util.Log;

import org.lineageos.setupwizard.util.NetworkMonitor;
@@ -97,6 +99,12 @@ public class SetupWizardApp extends Application {
        SetupWizardUtils.disableComponentsForMissingFeatures(this);
        SetupWizardUtils.setMobileDataEnabled(this, false);
        mHandler.postDelayed(mRadioTimeoutRunnable, SetupWizardApp.RADIO_READY_TIMEOUT);
        // If the bootloader is locked, and OEM unlocking is allowed, turn it off
        if (SetupWizardUtils.isOwner()
                && !SetupWizardUtils.isBootloaderUnlocked(this)
                && SetupWizardUtils.isOemunlockAllowed(this)) {
            getSystemService(OemLockManager.class).setOemUnlockAllowedByUser(false);
        }
    }

    public boolean isRadioReady() {
+0 −30
Original line number Diff line number Diff line
@@ -18,13 +18,10 @@
package org.lineageos.setupwizard;

import android.os.Bundle;
import android.os.Handler;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;

import org.lineageos.setupwizard.util.EnableAccessibilityController;
import org.lineageos.setupwizard.util.SetupWizardUtils;

public class WelcomeActivity extends BaseSetupWizardActivity {

@@ -33,9 +30,6 @@ public class WelcomeActivity extends BaseSetupWizardActivity {
    private View mRootView;
    private EnableAccessibilityController mEnableAccessibilityController;

    private int mVolumeUpCount = 0;
    private Handler mHandler = new Handler();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
@@ -58,30 +52,6 @@ public class WelcomeActivity extends BaseSetupWizardActivity {
        startEmergencyDialer();
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) {
            mVolumeUpCount++;
            if (mVolumeUpCount == 1) {
                 // Schedule a runnable to reset the count after 1 second
                mHandler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        mVolumeUpCount = 0;
                    }
                }, 1000); // 1 second delay
            }
        } else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN && mVolumeUpCount == 2) {
            // If the volume down key is pressed and the volume up count is 2
            // Finish the setup wizard and enable the status bar
            SetupWizardUtils.finishSetupWizard(getApplicationContext());
            SetupWizardUtils.enableStatusBar(getApplicationContext());
            finish();
        }

        return super.onKeyDown(keyCode, event);
    }

    @Override
    protected int getLayoutResId() {
        return R.layout.welcome_activity;
+18 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2013 The CyanogenMod Project
 * Copyright (C) 2017 The LineageOS Project
 * Copyright (C) 2022 The Calyx Institute
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
@@ -49,6 +50,7 @@ import android.os.SystemProperties;
import android.os.UserHandle;
import android.net.ConnectivityManager;
import android.provider.Settings;
import android.service.oemlock.OemLockManager;
import android.telephony.ServiceState;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
@@ -258,6 +260,22 @@ public class SetupWizardUtils {
        return PhoneMonitor.getInstance().simMissing();
    }

    public static boolean isBootloaderUnlocked(Context context) {
        OemLockManager oemLockManager = context.getSystemService(OemLockManager.class);
        if (oemLockManager != null) {
            return oemLockManager.isDeviceOemUnlocked();
        }
        return true; // Default to unlocked
    }

    public static boolean isOemunlockAllowed(Context context) {
        OemLockManager oemLockManager = context.getSystemService(OemLockManager.class);
        if (oemLockManager != null) {
            return oemLockManager.isOemUnlockAllowed();
        }
        return true; // Default to unlock allowed
    }

    public static void disableComponentsForMissingFeatures(Context context) {
        if (!hasLeanback(context)) {
            disableComponent(context, BluetoothSetupActivity.class);