This file is indexed.

/usr/share/idl/thunderbird/calIRecurrenceInfo.idl is in thunderbird-dev 1:52.8.0-1~deb8u1.

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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
/* 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/. */

#include "nsISupports.idl"

interface calIItemBase;
interface calIDateTime;

interface calIRecurrenceItem;

interface calIIcalProperty;

[scriptable, uuid(8ca5db89-2583-4f0c-b845-4a6d2f229efd)]
interface calIRecurrenceInfo : nsISupports
{
  // returns true if this thing is able to be modified;
  // if the item is not mutable, attempts to modify
  // any data will throw CAL_ERROR_ITEM_IS_IMMUTABLE
  readonly attribute boolean isMutable;

  // makes this item immutable
  void makeImmutable();

  // clone always returns a mutable event
  calIRecurrenceInfo clone();

  // initialize this with the item for which this recurrence
  // applies, so that the start date can be tracked
  attribute calIItemBase item;

  /**
   * The start date of an item is directly referenced by parts of calIRecurrenceInfo,
   * thus changing the former without adjusting the latter would break the internal structure.
   * This method provides the necessary functionality. There's no need to call it manually
   * after writing to the start date of an item, since it's called automatically in the
   * appropriate setter of an item.
   */
  void onStartDateChange(in calIDateTime aNewStartTime, in calIDateTime aOldStartTime);

  /**
   * If the base item's UID changes, this implicitly has to change all overridden items' UID, too.
   *
   * @param id new UID 
   */
  void onIdChange(in AUTF8String aNewId);

  /*
   * Set of recurrence items; the order of these matters.
   */

  void getRecurrenceItems(out unsigned long aCount, [array,size_is(aCount),retval] out calIRecurrenceItem aItems);
  void setRecurrenceItems(in unsigned long aCount, [array,size_is(aCount)] in calIRecurrenceItem aItems);

  unsigned long countRecurrenceItems();
  void clearRecurrenceItems();
  void appendRecurrenceItem(in calIRecurrenceItem aItem);

  calIRecurrenceItem getRecurrenceItemAt(in unsigned long aIndex);
  void deleteRecurrenceItemAt(in unsigned long aIndex);
  void deleteRecurrenceItem(in calIRecurrenceItem aItem);
  // inserts the item at the given index, pushing the item that was previously there forward
  void insertRecurrenceItemAt(in calIRecurrenceItem aItem, in unsigned long aIndex);

  /**
   * isFinite is true if the recurrence items specify a finite number
   * of occurrences.  This is useful for UI and for possibly other users.
   */
  readonly attribute boolean isFinite;

  /**
   * This is a shortcut to appending or removing a single negative date
   * assertion. aRecurrenceId needs to be a normal recurrence id, it may not be
   * RDATE.
   */
  void removeOccurrenceAt(in calIDateTime aRecurrenceId);
  void restoreOccurrenceAt(in calIDateTime aRecurrenceId);

  /*
   * exceptions
   */

  /**
   * Modify an a particular occurrence with the given exception proxy
   * item.  If the recurrenceId isn't an already existing exception item,
   * a new exception is added.  Otherwise, the existing exception
   * is modified.
   *
   * The item's parentItem must be equal to this RecurrenceInfo's
   * item. <-- XXX check this, compare by calendar/id only
   *
   * @param anItem exceptional/overridden item
   * @param aTakeOverOwnership whether the recurrence info object can take over
   *        the item or needs to clone it
   */
  void modifyException(in calIItemBase anItem, in boolean aTakeOverOwnership);

  /**
   * Return an existing exception item for the given recurrence ID.
   * If an exception does not exist, null is returned.
   */
  calIItemBase getExceptionFor(in calIDateTime aRecurrenceId);

  /**
   * Removes an exception item for the given recurrence ID, if
   * any exist.
   */
  void removeExceptionFor(in calIDateTime aRecurrenceId);

  /**
   * Returns a list of all recurrence ids that have exceptions.
   */
  void getExceptionIds(out unsigned long aCount, [array,size_is(aCount),retval] out calIDateTime aIds);

  /*
   * Recurrence calculation
   */

  /*
   * Get the occurrence at the given recurrence ID; if there is no
   * exception, then create a new proxy object with the normal occurrence.
   * Otherwise, return the exception.
   *
   * @param aRecurrenceId   The recurrence ID to get the occurrence for.
   * @return                The occurrence or exception corresponding to the id
   */
  calIItemBase getOccurrenceFor(in calIDateTime aRecurrenceId);

  /**
   * Return the chronologically next occurrence after aTime. This takes
   * exceptions and EXDATE/RDATEs into account.
   *
   * @param aTime           The (exclusive) date to start searching.
   * @return                The next occurrence, or null if there is none.
   */
  calIItemBase getNextOccurrence(in calIDateTime aTime);

  /**
   * Return the chronologically previous occurrence after aTime. This takes
   * exceptions and EXDATE/RDATEs into account.
   *
   * @param aTime           The (exclusive) date to start searching.
   * @return                The previous occurrence, or null if there is none.
   */
  calIItemBase getPreviousOccurrence(in calIDateTime aTime);

  /**
   * Return an array of calIDateTime representing all start times of this event
   * between start (inclusive) and end (non-inclusive). Exceptions are taken
   * into account.
   *
   * @param aRangeStart     The (inclusive) date to start searching.
   * @param aRangeEnd       The (exclusive) date to end searching.
   * @param aMaxCount       The maximum number of dates to return
   *
   * @param aCount          The number of dates returned.
   * @return                The array of dates.
   */
  void getOccurrenceDates(in calIDateTime aRangeStart,
                          in calIDateTime aRangeEnd,
                          in unsigned long aMaxCount,
                          out unsigned long aCount, [array,size_is(aCount),retval] out calIDateTime aDates);

  /**
   * Return an array of calIItemBase representing all occurrences of this event
   * between start (inclusive) and end (non-inclusive). Exceptions are taken
   * into account.
   *
   * @param aRangeStart     The (inclusive) date to start searching.
   * @param aRangeEnd       The (exclusive) date to end searching.
   * @param aMaxCount       The maximum number of occurrences to return
   *
   * @param aCount          The number of occurrences returned.
   * @return                The array of occurrences.
   */
  void getOccurrences(in calIDateTime aRangeStart,
                       in calIDateTime aRangeEnd,
                       in unsigned long aMaxCount,
                       out unsigned long aCount, [array,size_is(aCount),retval] out calIItemBase aItems);
};