@@ -111,8 +111,12 @@ class GuardedContext(
111111 override fun getSystemService (name : String ): Any? {
112112 when (name) {
113113 Context .WINDOW_SERVICE ,
114- Context .CLIPBOARD_SERVICE ,
115- Context .NOTIFICATION_SERVICE ,
114+ Context .NOTIFICATION_SERVICE -> {
115+ if (policy.blockPopups && isCallerBlocked()) return null
116+ }
117+ Context .CLIPBOARD_SERVICE -> {
118+ if (policy.blockClipboard && isCallerBlocked()) return null
119+ }
116120 Context .VIBRATOR_SERVICE ,
117121 Context .LOCATION_SERVICE ,
118122 Context .AUDIO_SERVICE -> {
@@ -123,26 +127,39 @@ class GuardedContext(
123127 }
124128
125129 override fun sendBroadcast (intent : Intent ? ) {
126- if (isCallerBlocked()) return
130+ if (policy.blockBackgroundTasks && isCallerBlocked()) return
127131 super .sendBroadcast(intent)
128132 }
129133
130134 override fun startService (service : Intent ? ): android.content.ComponentName ? {
131- if (isCallerBlocked()) return null
135+ if (policy.blockBackgroundTasks && isCallerBlocked()) return null
132136 return super .startService(service)
133137 }
134138
135139 override fun bindService (service : Intent , conn : android.content.ServiceConnection , flags : Int ): Boolean {
136- if (isCallerBlocked()) return false
140+ if (policy.blockBackgroundTasks && isCallerBlocked()) return false
137141 return super .bindService(service, conn, flags)
138142 }
143+
144+ override fun getSharedPreferences (name : String? , mode : Int ): android.content.SharedPreferences {
145+ if (policy.sandboxPreferences && isCallerBlocked()) {
146+ return super .getSharedPreferences(" sandbox_$name " , mode)
147+ }
148+ return super .getSharedPreferences(name, mode)
149+ }
139150}
140151
141152data class GuardPolicy (
142153 val blockKnownAdHosts : Boolean = true ,
143154 val blockAdPaths : Boolean = true ,
144155 val blockAllUnknown : Boolean = true ,
145156 val showToast : Boolean = false ,
157+
158+ val blockPopups : Boolean = true ,
159+ val blockClipboard : Boolean = true ,
160+ val blockBackgroundTasks : Boolean = true ,
161+ val sandboxPreferences : Boolean = true ,
162+ val watchdogEnabled : Boolean = true
146163) {
147164 companion object {
148165 val DEFAULT get() = STRICT
@@ -152,20 +169,35 @@ data class GuardPolicy(
152169 blockAdPaths = true ,
153170 blockAllUnknown = false ,
154171 showToast = true ,
172+ blockPopups = false ,
173+ blockClipboard = false ,
174+ blockBackgroundTasks = false ,
175+ sandboxPreferences = false ,
176+ watchdogEnabled = false
155177 )
156178
157179 val STRICT = GuardPolicy (
158180 blockKnownAdHosts = true ,
159181 blockAdPaths = true ,
160182 blockAllUnknown = true ,
161- showToast = false , // silent void
183+ showToast = false ,
184+ blockPopups = true ,
185+ blockClipboard = true ,
186+ blockBackgroundTasks = true ,
187+ sandboxPreferences = true ,
188+ watchdogEnabled = true
162189 )
163190
164191 val STRICT_VERBOSE = GuardPolicy (
165192 blockKnownAdHosts = true ,
166193 blockAdPaths = true ,
167194 blockAllUnknown = true ,
168195 showToast = true ,
196+ blockPopups = true ,
197+ blockClipboard = true ,
198+ blockBackgroundTasks = true ,
199+ sandboxPreferences = true ,
200+ watchdogEnabled = true
169201 )
170202 }
171203
0 commit comments