1// Copyright 2018 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5import "oaidl.idl";
6import "ocidl.idl";
7
8[
9  object,
10  oleautomation,
11  uuid(A949CB4E-C4F9-44C4-B213-6BF8AA9AC69C),
12  helpstring("IElevator Interface"),
13  pointer_default(unique)
14]
15interface IElevator : IUnknown
16{
17  // Elevators are exposed as methods on IElevator, and provide High Integrity
18  // actions. Any changes to add or change a method in IElevator will require a
19  // security review.
20  //
21  // Runs the Chrome Recovery CRX elevated.
22  //
23  // @param crx_path Path for the recovery CRX.
24  // @param browser_appid Omaha AppID for the version of Chrome being recovered.
25  // @param browser_version Version of Chrome for the recovery CRX.
26  // @param session_id Omaha Session Id.
27  // @param caller_proc_id The process id of the calling process.
28  // @param proc_handle The process handle valid in the calling process context.
29  HRESULT RunRecoveryCRXElevated([in, string] const WCHAR* crx_path,
30                                 [in, string] const WCHAR* browser_appid,
31                                 [in, string] const WCHAR* browser_version,
32                                 [in, string] const WCHAR* session_id,
33                                 [in] DWORD caller_proc_id,
34                                 [out] ULONG_PTR* proc_handle);
35};
36
37// The interfaces below are all IElevator with unique IIDs. IElevator is
38// registered with unique IIDs for the various flavors of Chrome and Chromium.
39// This allows the different flavors of Chrome/Chromium to co-exist without side
40// effects.
41[
42  object,
43  oleautomation,
44  uuid(B88C45B9-8825-4629-B83E-77CC67D9CEED),
45  helpstring("IElevatorChromium Interface"),
46  pointer_default(unique)
47]
48interface IElevatorChromium : IElevator
49{
50};
51
52[
53  object,
54  oleautomation,
55  uuid(463ABECF-410D-407F-8AF5-0DF35A005CC8),
56  helpstring("IElevatorChrome Interface"),
57  pointer_default(unique)
58]
59interface IElevatorChrome : IElevator
60{
61};
62
63[
64  object,
65  oleautomation,
66  uuid(A2721D66-376E-4D2F-9F0F-9070E9A42B5F),
67  helpstring("IElevatorChromeBeta Interface"),
68  pointer_default(unique)
69]
70interface IElevatorChromeBeta : IElevator
71{
72};
73
74[
75  object,
76  oleautomation,
77  uuid(BB2AA26B-343A-4072-8B6F-80557B8CE571),
78  helpstring("IElevatorChromeDev Interface"),
79  pointer_default(unique)
80]
81interface IElevatorChromeDev : IElevator
82{
83};
84
85[
86  object,
87  oleautomation,
88  uuid(4F7CE041-28E9-484F-9DD0-61A8CACEFEE4),
89  helpstring("IElevatorChromeCanary Interface"),
90  pointer_default(unique)
91]
92interface IElevatorChromeCanary : IElevator
93{
94};
95
96[
97  uuid(0014D784-7012-4A79-8AB6-ADDB8193A06E),
98  version(1.0),
99  helpstring("Elevator 1.0 Type Library")
100]
101library ElevatorLib {
102  importlib("stdole2.tlb");
103
104  interface IElevator;
105  interface IElevatorChromium;
106  interface IElevatorChrome;
107  interface IElevatorChromeBeta;
108  interface IElevatorChromeDev;
109  interface IElevatorChromeCanary;
110};
111