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