// Copyright 2006 Google Inc. All Rights Reserved. // // Author: Vivek Rao - vivekrao@google.com // // The proxy clsid #defined as PROXY_CLSID_IS in mk_common needs to be changed // anytime any interface below changes, or if a new interface is added. import "oaidl.idl"; import "ocidl.idl"; [ object, uuid(5B25A8DC-1780-4178-A629-6BE8B8DEFAA2), oleautomation, nonextensible, pointer_default(unique) ] interface IBrowserHttpRequest2 : IUnknown { // This method will send request/data from the browser process. // @param url URL where request will be send. // @param post_data POST data, if any. Can be NULL. // @param request_headers HTTP request headers, if any. Can be NULL. // @param response_headers_needed HTTP response headers that are needed. // Should be one of the values listed here: // http://go/queryinfoflags // The input is a SAFEARRAY of DWORD. Can be a // VT_EMPTY. // @param response_headers HTTP response headers, returned as SAFEARRAY // of BSTR. The values corresponding one-to-one // with the response_headers_needed values. Can // be NULL if response_headers_needed==VT_EMPTY // @param response_code HTTP response code. // @param cache_filename Cache file that contains the response data. HRESULT Send([in] BSTR url, [in] BSTR post_data, [in] BSTR request_headers, [in] VARIANT response_headers_needed, [out] VARIANT* response_headers, [out] DWORD* response_code, [out] BSTR* cache_filename); }; [ object, oleautomation, uuid(128C2DA6-2BC0-44c0-B3F6-4EC22E647964), helpstring("Google Update IProcessLauncher Interface"), pointer_default(unique) ] interface IProcessLauncher : IUnknown { // @param cmd_line The full command line to execute. HRESULT LaunchCmdLine([in, string] const WCHAR* cmd_line); // @param browser_type The browser to start. // @param url The url to launch the browser with. HRESULT LaunchBrowser([in] DWORD browser_type, [in, string] const WCHAR* url); // @param app_id Unique id to identify the calling client application // @param event_id Unique id for the command // @param caller_proc_id The process id of the calling process // @param proc_handle The process handle valid in the caller's context HRESULT LaunchCmdElevated([in, string] const WCHAR* app_guid, [in, string] const WCHAR* cmd_id, [in] DWORD caller_proc_id, [out] ULONG_PTR* proc_handle); }; typedef enum { COMPLETION_CODE_SUCCESS = 1, COMPLETION_CODE_SUCCESS_CLOSE_UI, COMPLETION_CODE_ERROR, COMPLETION_CODE_RESTART_ALL_BROWSERS, COMPLETION_CODE_REBOOT, COMPLETION_CODE_RESTART_BROWSER, COMPLETION_CODE_RESTART_ALL_BROWSERS_NOTICE_ONLY, COMPLETION_CODE_REBOOT_NOTICE_ONLY, COMPLETION_CODE_RESTART_BROWSER_NOTICE_ONLY, COMPLETION_CODE_RUN_COMMAND, } CompletionCodes; [ object, oleautomation, uuid(1C642CED-CA3B-4013-A9DF-CA6CE5FF6503), helpstring("GoogleUpdate UI-specific events Interface"), pointer_default(unique) ] interface IProgressWndEvents : IUnknown { // The UI is closing down. The user has clicked on either the "X" or the // other buttons of the UI to close the window. HRESULT DoClose(); // Pause has been clicked on. HRESULT DoPause(); // Resume has been clicked on. HRESULT DoResume(); // RestartBrowsers button has been clicked on. HRESULT DoRestartBrowsers(); // Reboot button has been clicked on. HRESULT DoReboot(); // Launch Browser. HRESULT DoLaunchBrowser([in, string] const WCHAR* url); }; [ object, oleautomation, uuid(49D7563B-2DDB-4831-88C8-768A53833837), helpstring("IJobObserver Interface"), pointer_default(unique) ] interface IJobObserver : IUnknown { HRESULT OnShow(); HRESULT OnCheckingForUpdate(); HRESULT OnUpdateAvailable([in, string] const WCHAR* version_string); HRESULT OnWaitingToDownload(); HRESULT OnDownloading([in] int time_remaining_ms, [in] int pos); HRESULT OnWaitingToInstall(); HRESULT OnInstalling(); HRESULT OnPause(); HRESULT OnComplete([in] CompletionCodes code, [in, string] const WCHAR* reserved); HRESULT SetEventSink([in] IProgressWndEvents* ui_sink); }; // TODO(ganesh): Component story. // TODO(ganesh): Should CheckForUpdate be synchronous? We can avoid the // observer. However, it may block the UI. // TODO(ganesh): On-Demand Installs. [ object, oleautomation, uuid(31AC3F11-E5EA-4a85-8A3D-8E095A39C27B), helpstring("IGoogleUpdate Interface"), pointer_default(unique) ] interface IGoogleUpdate : IUnknown { // @param guid The guid for the app to be updated. // @param observer The eventing interface. HRESULT CheckForUpdate([in, string] const WCHAR* guid, [in] IJobObserver* observer); // @param guid The guid for the app to be updated. // @param observer The eventing interface. HRESULT Update([in, string] const WCHAR* guid, [in] IJobObserver* observer); }; // IGoogleUpdateCore is an internal Omaha interface. [ object, oleautomation, uuid(909489C2-85A6-4322-AA56-D25278649D67), helpstring("Google Update Core Interface"), pointer_default(unique) ] interface IGoogleUpdateCore : IUnknown { // Runs a command elevated. // // @param app_id Unique id to identify the calling client application // @param event_id Unique id for the command // @param caller_proc_id The process id of the calling process // @param proc_handle The process handle valid in the caller's context HRESULT LaunchCmdElevated([in, string] const WCHAR* app_guid, [in, string] const WCHAR* cmd_id, [in] DWORD caller_proc_id, [out] ULONG_PTR* proc_handle); }; [ uuid(7E6CD20B-8688-4960-96D9-B979471577B8), version(1.0), helpstring("Google Update Type Library") ] library GoogleUpdateLib { importlib("stdole2.tlb"); [ uuid(ABC01078-F197-4b0b-ADBC-CFE684B39C82), helpstring("ProcessLauncherClass Class") ] coclass ProcessLauncherClass { [default] interface IProcessLauncher; } // This coclass declaration exists only for the purpose of forcing // ::RegisterTypeLib() to register the interfaces within. This is // required so that we can marshal/unmarshal the interfaces using the TypeLib // marshaler. [ uuid(9564861C-3469-4c9a-956A-74D5690790E6), helpstring("InterfaceRegistrar Class") ] coclass InterfaceRegistrar { [default] interface IBrowserHttpRequest2; interface IJobObserver; interface IProgressWndEvents; } [ uuid(2F0E2680-9FF5-43c0-B76E-114A56E93598), helpstring("OnDemand updates for per-user applications.") ] coclass OnDemandUserAppsClass { [default] interface IGoogleUpdate; } [ uuid(6F8BD55B-E83D-4a47-85BE-81FFA8057A69), helpstring("OnDemand updates for per-machine applications.") ] coclass OnDemandMachineAppsClass { [default] interface IGoogleUpdate; } [ uuid(E225E692-4B47-4777-9BED-4FD7FE257F0E), helpstring("GoogleUpdateCore Class") ] coclass GoogleUpdateCoreClass { [default] interface IGoogleUpdateCore; } };