/usr/lib/thunderbird-addons/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calCalendarSearchService.js is in xul-ext-lightning 1:24.4.0+build1-0ubuntu1.
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 | /* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
function calCalendarSearchListener(numOperations, finalListener) {
this.mFinalListener = finalListener;
this.mNumOperations = numOperations;
this.mResults = [];
var this_ = this;
function cancelFunc() { // operation group has been cancelled
this_.notifyResult(null);
}
this.opGroup = new calOperationGroup(cancelFunc);
}
calCalendarSearchListener.prototype = {
mFinalListener: null,
mNumOperations: 0,
opGroup: null,
notifyResult: function calCalendarSearchListener_notifyResult(result) {
var listener = this.mFinalListener
if (listener) {
if (!this.opGroup.isPending) {
this.mFinalListener = null;
}
listener.onResult(this.opGroup, result);
}
},
// calIGenericOperationListener:
onResult: function calCalendarSearchListener_onResult(aOperation, aResult) {
if (this.mFinalListener) {
if (!aOperation || !aOperation.isPending) {
--this.mNumOperations;
if (this.mNumOperations == 0) {
this.opGroup.notifyCompleted();
}
}
if (aResult) {
this.notifyResult(aResult);
}
}
}
};
function calCalendarSearchService() {
this.wrappedJSObject = this;
this.mProviders = new calInterfaceBag(Components.interfaces.calICalendarSearchProvider);
}
const calCalendarSearchServiceClassID = Components.ID("{f5f743cd-8997-428e-bc1b-644e73f61203}");
const calCalendarSearchServiceInterfaces = [
Components.interfaces.calICalendarSearchProvider,
Components.interfaces.calICalendarSearchService
];
calCalendarSearchService.prototype = {
mProviders: null,
classID: calCalendarSearchServiceClassID,
QueryInterface: XPCOMUtils.generateQI(calCalendarSearchServiceInterfaces),
classInfo: XPCOMUtils.generateCI({
classID: calCalendarSearchServiceClassID,
contractID: "@mozilla.org/calendar/calendarsearch-service;1",
classDescription: "Calendar Search Service",
interfaces: calCalendarSearchServiceInterfaces,
flags: Components.interfaces.nsIClassInfo.SINGLETON
}),
// calICalendarSearchProvider:
searchForCalendars: function calCalendarSearchService_searchForCalendars(aString,
aHints,
aMaxResults,
aListener) {
var groupListener = new calCalendarSearchListener(this.mProviders.size, aListener);
function searchForCalendars_(provider) {
try {
groupListener.opGroup.add(provider.searchForCalendars(aString,
aHints,
aMaxResults,
groupListener));
} catch (exc) {
Components.utils.reportError(exc);
groupListener.onResult(null, []); // dummy to adopt mNumOperations
}
}
this.mProviders.forEach(searchForCalendars_);
return groupListener.opGroup;
},
// calICalendarSearchService:
getProviders: function calCalendarSearchService_getProviders(out_aCount) {
var ret = this.mProviders.interfaceArray;
out_aCount.value = ret.length;
return ret;
},
addProvider: function calCalendarSearchService_addProvider(aProvider) {
this.mProviders.add(aProvider);
},
removeProvider: function calCalendarSearchService_removeProvider(aProvider) {
this.mProviders.remove(aProvider);
}
};
|