Merge "FRP bypass defense in the Settings App for SPA" into udc-dev am: 7c042f374b am: 3d06aec9ab
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/22948156 Change-Id: Ie1b0bc84ff0a286544815d1b8e860b403ef157cd Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -22,14 +22,34 @@ import android.content.Intent
|
||||
import android.os.RemoteException
|
||||
import android.os.UserHandle
|
||||
import android.util.Log
|
||||
import androidx.annotation.VisibleForTesting
|
||||
import com.android.settings.spa.app.appinfo.AppInfoSettingsProvider
|
||||
import com.android.settingslib.spa.framework.BrowseActivity
|
||||
import com.android.settingslib.spa.framework.common.SettingsPage
|
||||
import com.android.settingslib.spa.framework.util.SESSION_BROWSE
|
||||
import com.android.settingslib.spa.framework.util.SESSION_EXTERNAL
|
||||
import com.android.settingslib.spa.framework.util.appendSpaParams
|
||||
import com.google.android.setupcompat.util.WizardManagerHelper
|
||||
|
||||
class SpaActivity : BrowseActivity() {
|
||||
override fun isPageEnabled(page: SettingsPage) =
|
||||
super.isPageEnabled(page) && !isSuwAndPageBlocked(page.sppName)
|
||||
|
||||
companion object {
|
||||
private const val TAG = "SpaActivity"
|
||||
|
||||
/** The pages that blocked from SUW. */
|
||||
private val SuwBlockedPages = setOf(AppInfoSettingsProvider.name)
|
||||
|
||||
@VisibleForTesting
|
||||
fun Context.isSuwAndPageBlocked(name: String): Boolean =
|
||||
if (name in SuwBlockedPages && !WizardManagerHelper.isDeviceProvisioned(this)) {
|
||||
Log.w(TAG, "$name blocked before SUW completed.");
|
||||
true
|
||||
} else {
|
||||
false
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun Context.startSpaActivity(destination: String) {
|
||||
val intent = Intent(this, SpaActivity::class.java)
|
||||
|
||||
Reference in New Issue
Block a user