[gnome-shell] search: Hide search providers which are blacklisted by parental controls



commit 143ab6ac7ffbcc8c47cda7720dfbabc3674aa443
Author: Philip Withnall <withnall endlessm com>
Date:   Mon Mar 30 12:40:11 2020 +0100

    search: Hide search providers which are blacklisted by parental controls
    
    If a search provider is installed by an app which is blacklisted for the
    current user by their parental controls, don’t show it or results for
    it.
    
    Currently, this only filters ‘remote’ (not built-in to the shell) search
    providers. This seems fine for now; in future it could be expanded to
    also filter built-in search providers, if any of them end up needing to
    be filtered.
    
    No corresponding changes need to be made `remoteSearch.js`, because the
    results of `loadRemoteSearchProviders()` are filtered in `search.js`.
    
    Signed-off-by: Philip Withnall <withnall endlessm com>
    
    https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/465

 js/ui/search.js | 9 +++++++++
 1 file changed, 9 insertions(+)
---
diff --git a/js/ui/search.js b/js/ui/search.js
index 88f06211c4..f9125123e6 100644
--- a/js/ui/search.js
+++ b/js/ui/search.js
@@ -6,6 +6,7 @@ const { Clutter, Gio, GLib, GObject, Meta, Shell, St } = imports.gi;
 const AppDisplay = imports.ui.appDisplay;
 const IconGrid = imports.ui.iconGrid;
 const Main = imports.ui.main;
+const ParentalControlsManager = imports.misc.parentalControlsManager;
 const RemoteSearch = imports.ui.remoteSearch;
 const Util = imports.misc.util;
 
@@ -431,6 +432,9 @@ var SearchResultsView = GObject.registerClass({
     _init() {
         super._init({ name: 'searchResults', vertical: true });
 
+        this._parentalControlsManager = ParentalControlsManager.getDefault();
+        this._parentalControlsManager.connect('app-filter-changed', this._reloadRemoteProviders.bind(this));
+
         this._content = new MaxWidthBox({
             name: 'searchResultsContent',
             vertical: true,
@@ -505,6 +509,11 @@ var SearchResultsView = GObject.registerClass({
 
     _registerProvider(provider) {
         provider.searchInProgress = false;
+
+        // Filter out unwanted providers.
+        if (provider.appInfo && !this._parentalControlsManager.shouldShowApp(provider.appInfo))
+            return;
+
         this._providers.push(provider);
         this._ensureProviderDisplay(provider);
     }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]