summaryrefslogtreecommitdiffstats
path: root/uriloader/exthandler/PHandlerService.ipdl
blob: bcd1e746684bfe10b3ed3b89af7a9c2f00f6d7bb (plain)
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
/* 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 protocol PContent;

namespace mozilla {
namespace dom {

struct HandlerApp {
  nsString name;
  nsString detailedDescription;
};

struct HandlerInfo {
  nsCString type;
  bool isMIMEInfo;
  nsString description;
  bool alwaysAskBeforeHandling;
  nsCString[] extensions;
  HandlerApp preferredApplicationHandler;
  HandlerApp[] possibleApplicationHandlers;
  int32_t preferredAction;
};

[ChildImpl=virtual, ParentImpl=virtual]
sync protocol PHandlerService
{
  manager PContent;

parent:
  sync FillHandlerInfo(HandlerInfo aHandlerInfoData,
                       nsCString aOverrideType)
      returns (HandlerInfo handlerInfoData);

  /*
   * Check if an OS handler exists for the given protocol scheme.
   */
  sync ExistsForProtocolOS(nsCString aProtocolScheme)
      returns (bool exists);

  /*
   * Check if a handler exists for the given protocol scheme. Check
   * the datastore first and then fallback to an OS handler check.
   */
  sync ExistsForProtocol(nsCString aProtocolScheme)
      returns (bool exists);

  sync Exists(HandlerInfo aHandlerInfo)
      returns (bool exists);
  sync GetTypeFromExtension(nsCString aFileExtension)
      returns (nsCString type);
  sync GetMIMEInfoFromOS(nsCString aMIMEType, nsCString aExtension)
      returns (nsresult rv, HandlerInfo handlerInfoData, bool found);
  sync GetApplicationDescription(nsCString aScheme)
      returns (nsresult rv, nsString description);
  async __delete__();
};


} // namespace dom
} // namespace mozilla