From 79fa0d3a90634c710decb5aebfd9cd9bf57b78ce Mon Sep 17 00:00:00 2001 From: topjohnwu Date: Wed, 30 Dec 2020 16:40:22 -0800 Subject: [PATCH] Hide selection improvements --- .../java/com/topjohnwu/magisk/ui/hide/HideInfo.kt | 5 ++++- .../com/topjohnwu/magisk/ui/hide/HideRvItems.kt | 13 ++++++++++--- native/jni/magiskhide/proc_monitor.cpp | 6 +++--- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/topjohnwu/magisk/ui/hide/HideInfo.kt b/app/src/main/java/com/topjohnwu/magisk/ui/hide/HideInfo.kt index d82c1e34a..abf19476f 100644 --- a/app/src/main/java/com/topjohnwu/magisk/ui/hide/HideInfo.kt +++ b/app/src/main/java/com/topjohnwu/magisk/ui/hide/HideInfo.kt @@ -99,4 +99,7 @@ data class HideProcessInfo( val name: String, val packageName: String, var isHidden: Boolean -) +) { + val isIsolated get() = name == ISOLATED_MAGIC + val isAppZygote get() = name.endsWith("_zygote") +} diff --git a/app/src/main/java/com/topjohnwu/magisk/ui/hide/HideRvItems.kt b/app/src/main/java/com/topjohnwu/magisk/ui/hide/HideRvItems.kt index 4a75cabee..d35d03630 100644 --- a/app/src/main/java/com/topjohnwu/magisk/ui/hide/HideRvItems.kt +++ b/app/src/main/java/com/topjohnwu/magisk/ui/hide/HideRvItems.kt @@ -40,11 +40,10 @@ class HideRvItem( if (value == true) { processes .filterNot { it.isHidden } - .filter { isExpanded || it.process.name == it.process.packageName } + .filter { isExpanded || it.defaultSelection } } else { processes .filter { it.isHidden } - .filter { isExpanded || it.process.name == it.process.packageName } }.forEach { it.toggle() } } @@ -68,7 +67,12 @@ class HideRvItem( else -> null } } else { - processes.find { it.isHidden && it.process.name == it.process.packageName } != null + val defaultProcesses = processes.filter { it.defaultSelection } + when (defaultProcesses.count { it.isHidden }) { + 0 -> false + defaultProcesses.size -> true + else -> null + } } } @@ -102,6 +106,9 @@ class HideProcessRvItem( isHidden = !isHidden } + val defaultSelection get() = + process.isIsolated || process.isAppZygote || process.name == process.packageName + override fun contentSameAs(other: HideProcessRvItem) = process == other.process override fun itemSameAs(other: HideProcessRvItem) = process.name == other.process.name diff --git a/native/jni/magiskhide/proc_monitor.cpp b/native/jni/magiskhide/proc_monitor.cpp index 687386fe9..377b0356b 100644 --- a/native/jni/magiskhide/proc_monitor.cpp +++ b/native/jni/magiskhide/proc_monitor.cpp @@ -86,7 +86,7 @@ void update_uid_map() { string data_path(APP_DATA_DIR); size_t len = data_path.length(); auto dir = open_dir(APP_DATA_DIR); - bool firstIteration = true; + bool first_iter = true; for (dirent *entry; (entry = xreaddir(dir.get()));) { data_path.resize(len); data_path += '/'; @@ -96,7 +96,7 @@ void update_uid_map() { struct stat st; for (auto &hide : hide_set) { if (hide.first == ISOLATED_MAGIC) { - if (!firstIteration) continue; + if (!first_iter) continue; // Setup isolated processes uid_proc_map[-1].emplace_back(hide.second); } @@ -106,7 +106,7 @@ void update_uid_map() { continue; uid_proc_map[st.st_uid].emplace_back(hide.second); } - firstIteration = false; + first_iter = false; } }