This file is indexed.

/usr/share/cinnamon/js/ui/searchProviderManager.js is in cinnamon-common 2.8.6-1ubuntu1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-

const Extension = imports.ui.extension;
const GLib = imports.gi.GLib;
const Gio = imports.gi.Gio;
const Lang = imports.lang;

// Maps uuid -> importer object (extension directory tree)
var extensions;
// Maps uuid -> metadata object
var extensionMeta;
// Maps uuid -> extension state object (returned from init())
const searchProviderObj = {};
// Arrays of uuids
var enabledSearchProviders;

const ENABLED_SEARCH_PROVIDERS_KEY = 'enabled-search-providers';

// Callback for extension.js
function prepareExtensionUnload(extension) {
    delete searchProviderObj[extension.uuid];
}

// Callback for extension.js
function finishExtensionLoad(extension) {
    searchProviderObj[extension.uuid] = extension.module;
    return true;
}

function onEnabledSearchProvidersChanged() {
    enabledSearchProviders = global.settings.get_strv(ENABLED_SEARCH_PROVIDERS_KEY);

    for(let uuid in Extension.Type.SEARCH_PROVIDER.maps.objects) {
        if(enabledSearchProviders.indexOf(uuid) == -1)
            Extension.unloadExtension(uuid, Extension.Type.SEARCH_PROVIDER);
    }
    
    for(let i=0; i<enabledSearchProviders.length; i++) {
        Extension.loadExtension(enabledSearchProviders[i], Extension.Type.SEARCH_PROVIDER);
    }
}

function init() {
    extensions = Extension.Type.SEARCH_PROVIDER.maps.importObjects;
    extensionMeta = Extension.Type.SEARCH_PROVIDER.maps.meta;

    global.settings.connect('changed::' + ENABLED_SEARCH_PROVIDERS_KEY, onEnabledSearchProvidersChanged);
    
    enabledSearchProviders = global.settings.get_strv(ENABLED_SEARCH_PROVIDERS_KEY);
    for (let i = 0; i < enabledSearchProviders.length; i++){
        Extension.loadExtension(enabledSearchProviders[i], Extension.Type.SEARCH_PROVIDER);
    }
}

function get_object_for_uuid(uuid){
    return searchProviderObj[uuid];
}

function launch_all(pattern, callback){
    var provider, supports_locale, language_names;
    for (var i in enabledSearchProviders){
        try{
            provider = get_object_for_uuid(enabledSearchProviders[i]);
            provider.uuid = enabledSearchProviders[i];
            if (provider)
            {
                if (extensionMeta[enabledSearchProviders[i]] && extensionMeta[enabledSearchProviders[i]].supported_locales){
                    supports_locale = false;
                    language_names = GLib.get_language_names();
                    for (var j in language_names){
                        if (extensionMeta[enabledSearchProviders[i]].supported_locales.indexOf(language_names[j]) != -1){
                            supports_locale = true;
                            break;
                        }
                    }
                }else{
                    supports_locale = true;
                }
                if (supports_locale){
                    provider.send_results = Lang.bind(this, function(results, p, cb){
                        cb(p, results);
                    }, provider, callback);
                    provider.get_locale_string = Lang.bind(this, function(key, providerData){
                        if (extensionMeta[providerData] && extensionMeta[providerData].locale_data && extensionMeta[providerData].locale_data[key]){
                            language_names = GLib.get_language_names();
                            for (var j in language_names){
                                if (extensionMeta[providerData].locale_data[key][language_names[j]]){
                                    return extensionMeta[providerData].locale_data[key][language_names[j]];
                                }
                            }
                        }
                        return "";
                    }, enabledSearchProviders[i]);
                    provider.perform_search(pattern);
                }
            }
        }
        catch(e)
        {
            global.logError(e);
        }
    }
}