This file is indexed.

/usr/share/idl/thunderbird/nsIMsgCloudFileProvider.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
/* 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 nsIFile;
interface nsIRequestObserver;
interface nsIPrefBranch;
[scriptable, uuid(c961919b-980b-4adc-bcfe-dabe916d1acc)]
interface nsIMsgCloudFileProvider : nsISupports {
  // The type is a unique string identifier used by various interface elements
  // for styling. As such, the type should be an alphanumpheric string with
  // no spaces.
  readonly attribute ACString type;
  // Unlike the type, the displayName is purely for rendering the name of
  // a storage service provider.
  readonly attribute ACString displayName;
  // A link to the homepage of the service, if applicable.
  readonly attribute ACString serviceURL;
  /// Some providers might want to provide an icon for the menu
  readonly attribute ACString iconClass;

  readonly attribute ACString accountKey;

  readonly attribute ACString settingsURL;

  readonly attribute ACString managementURL;

  void init(in ACString aAccountKey);

  /**
   * upload the file to the cloud provider. The callback's OnStopRequest
   * method will be called when finished, with success or an error code.
   *
   * @param aFile file to upload
   * @param aCallback callback when finished.
   *
   * @throws nsIMsgCloudFileProvider.offlineErr if we are offline.
   */
  void uploadFile(in nsIFile aFile, in nsIRequestObserver aCallback);
  ACString urlForFile(in nsIFile aFile);

  /**
   * Cancels the upload of the passed in file, if it hasn't finished yet.
   * If it hasn't started yet, it will be removed from the upload queue.
   *
   * @param aFile file whose upload we should cancel.
   */
  void cancelFileUpload(in nsIFile aFile);

  /**
   * Refresh the user info for this account. This will fill in the quota info,
   * if supported by the provider.
   *
   * @param aWithUI if true, we may prompt for a password, or bring up an auth
   *                page. If false, we won't, and will fail if auth is required.
   * @param aCallback callback when finished.
   * @throws nsIMsgCloudFileProvider.offlineErr if we are offline.
   */
  void refreshUserInfo(in boolean aWithUI, in nsIRequestObserver aCallback);

  /**
   * Delete a file that we've uploaded in this session and discarded. This
   * operation is asynchronous.
   *
   * @param aFile File we previously uploaded in this session.
   * @param aCallback callback when finished
   *
   * @throws NS_ERROR_FAILURE if we don't know about the file.
   * @throws nsIMsgCloudFileProvider.offlineErr if we are offline.
   */
  void deleteFile(in nsIFile aFile, in nsIRequestObserver aCallback);

  /**
   * If the provider has an API for creating an account, this will start the
   * process of creating one. There will probably have to be some sort of
   * validation on the part of the user before the account is created.
   * If not, this will throw NS_ERROR_NOT_IMPLEMENTED.
   *
   * If the REST call succeeds, aCallback.onStopRequest will get called back
   * with an http status. Generally, status between 200 and 300 is OK,
   * otherwise, an error occurred which is * probably specific to the provider.
   * If the request fails completely, onStopRequest will get called with
   * Components.results.NS_ERROR_FAILURE
   * @throws nsIMsgCloudFileProvider.offlineErr if we are offline.
   */
  void createNewAccount(in ACString aEmailAddress, in ACString aPassword,
                        in ACString aFirstName, in ACString aLastName,
                        in nsIRequestObserver aCallback);

  void createExistingAccount(in nsIRequestObserver aCallback);

  /**
   * If the provider doesn't have an API for creating an account, perhaps
   * there's a url we can load in a content tab that will allow the user
   * to create an account.
   */
  readonly attribute ACString createNewAccountUrl;

  /**
   * For some errors, the provider may have an explanatory page, or have an
   * option to upgrade an account to handle the error. This method returns a url
   * to a page hosted by the provider which can help with the error.
   *
   * @param aError e.g. uploadWouldExceedQuota or uploadExceedsFileLimit
   * @returns provider url, if any, for the error, empty string otherwise.
   */
  ACString providerUrlForError(in unsigned long aError);

  /**
   * If we don't know the limit, this will return -1.
   */
  readonly attribute long fileUploadSizeLimit;

  /// -1 if we don't have this info
  readonly attribute long long remainingFileSpace;

  /// -1 if we don't have this info
  readonly attribute long long fileSpaceUsed;

  /// This is used by our test harness to override the urls the provider uses.
  void overrideUrls(in uint32_t aNumUrls, [array, size_is(aNumUrls)] in string aUrls);

  // Error handling
  // If the cloud provider gets textual errors back from the server,
  // they can be retrieved here.
  readonly attribute ACString lastError;
  // I'm mapping these to real NS_MSG error codes where possible,
  // but it really doesn't matter as long as we only return these
  // errors.
  const unsigned long offlineErr = 0x80550014; // NS_MSG_ERROR_OFFLINE
  const unsigned long authErr = 0x8055001e; // NS_MSG_USER_NOT_AUTHENTICATED
  const unsigned long uploadErr = 0x8055311a; // NS_MSG_ERROR_ATTACHING_FILE
  const unsigned long uploadWouldExceedQuota = 0x8055311b;
  const unsigned long uploadExceedsFileLimit = 0x8055311c;
  const unsigned long uploadCanceled = 0x8055311d;
  const unsigned long uploadExceedsFileNameLimit = 0x8055311e;
};