diff options
author | alexeypa@chromium.org <alexeypa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-04-10 18:12:34 +0000 |
---|---|---|
committer | alexeypa@chromium.org <alexeypa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-04-10 18:12:34 +0000 |
commit | facf52d7aff1b18b8d1bc0496b0c5ec83060c383 (patch) | |
tree | d27108cd775b7030cc0cd67e7dc216678bc8a724 /google_update | |
parent | c799da3df7838f8beb8f3abc86382170f289562a (diff) | |
download | chromium_src-facf52d7aff1b18b8d1bc0496b0c5ec83060c383.zip chromium_src-facf52d7aff1b18b8d1bc0496b0c5ec83060c383.tar.gz chromium_src-facf52d7aff1b18b8d1bc0496b0c5ec83060c383.tar.bz2 |
Implemented on-demand installation of the Chromoting Host on Windows.
This CL also updates the Google Update interface definition file with v3 interfaces.
BUG=120991
Review URL: http://codereview.chromium.org/10021003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@131587 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'google_update')
-rw-r--r-- | google_update/README.chromium | 25 | ||||
-rw-r--r-- | google_update/google_update_idl.idl | 783 |
2 files changed, 777 insertions, 31 deletions
diff --git a/google_update/README.chromium b/google_update/README.chromium index b6676f6..248ad70 100644 --- a/google_update/README.chromium +++ b/google_update/README.chromium @@ -1,2 +1,23 @@ -This IDL was provided by the Google Update team so that we could use the new -On-Demand checking for updates. +Originally this IDL was provided by the Google Update team so that we could use +the On-Demand checking for updates. Now it is copied from the public Omaha +repository with minor modifications. See +http://omaha.googlecode.com/svn/trunk/official/goopdate/omaha3_idl.idl. + +This copy is based on http://omaha.googlecode.com/svn/trunk/official/goopdate/omaha3_idl.idl@120 +with the following two coclasses removed: + + [ + uuid(___AUTO_GENERATED_GUID___), + helpstring("GoogleComProxyMachineClass") + ] + coclass GoogleComProxyMachineClass { + [default] interface IUnknown; + } + + [ + uuid(___AUTO_GENERATED_GUID___), + helpstring("GoogleComProxyUserClass") + ] + coclass GoogleComProxyUserClass { + [default] interface IUnknown; + } diff --git a/google_update/google_update_idl.idl b/google_update/google_update_idl.idl index a8889b8..bcaadfe 100644 --- a/google_update/google_update_idl.idl +++ b/google_update/google_update_idl.idl @@ -1,13 +1,593 @@ -// Copyright 2006 Google Inc. All Rights Reserved. +// Copyright 2009-2010 Google Inc. // -// Author: Vivek Rao - vivekrao@google.com +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// 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. +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// ======================================================================== import "oaidl.idl"; import "ocidl.idl"; +// When adding interfaces to this file: +// * Do not use "Google" or "GoogleUpdate" directly. Instead, use preprocessor +// defines. +// * Add a test for the Google-specific value to +// omaha_customization_goopdate_apis_unittest.cc. + +// +// Enums. +// These values can be passed to interface methods and/or compared to their +// output. +// + +// Must be kept in sync with the enum in base/browser_utils.h. +typedef enum BrowserType { + BROWSER_UNKNOWN = 0, + BROWSER_DEFAULT = 1, + BROWSER_INTERNET_EXPLORER = 2, + BROWSER_FIREFOX = 3, + BROWSER_CHROME = 4, +} BrowserType; + +// The normal install flow proceeds from STATE_INIT through +// STATE_INSTALL_COMPLETE in order, skipping states that are not relevant. +// All exceptions and terminal states are start with STATE_INSTALL_COMPLETE. +typedef enum CurrentState { + STATE_INIT = 1, + STATE_WAITING_TO_CHECK_FOR_UPDATE = 2, + STATE_CHECKING_FOR_UPDATE = 3, + STATE_UPDATE_AVAILABLE = 4, + STATE_WAITING_TO_DOWNLOAD = 5, + STATE_RETRYING_DOWNLOAD = 6, + STATE_DOWNLOADING = 7, + STATE_DOWNLOAD_COMPLETE = 8, + STATE_EXTRACTING = 9, + STATE_APPLYING_DIFFERENTIAL_PATCH = 10, + // TODO(omaha3): Should we move STATE_DOWNLOAD_COMPLETE here and eliminate + // STATE_READY_TO_INSTALL? + STATE_READY_TO_INSTALL = 11, + STATE_WAITING_TO_INSTALL = 12, + STATE_INSTALLING = 13, + STATE_INSTALL_COMPLETE = 14, + STATE_PAUSED = 15, + STATE_NO_UPDATE = 16, + STATE_ERROR = 17, +} CurrentState; + +typedef enum InstallPriority { + INSTALL_PRIORITY_LOW = 0, + INSTALL_PRIORITY_HIGH = 10, +} InstallPriority; + +// Specifies what the client should do after installation. +typedef enum PostInstallAction { + POST_INSTALL_ACTION_DEFAULT = 0, + + // Caller should exit silently. + POST_INSTALL_ACTION_EXIT_SILENTLY = 1, + + // Caller should launch the command. + POST_INSTALL_ACTION_LAUNCH_COMMAND = 2, + + // Caller should launch the command and exit silently. + POST_INSTALL_ACTION_EXIT_SILENTLY_ON_LAUNCH_COMMAND = 3, + + // The caller should ask the user to restart the browser. If the value of + // IApp's browser is supported and postInstallUrl is valid, the client should + // offer to restart the browser. If the user chooses to do so, the client + // should launch the ICurrentState::postInstallUrl after shutting down and + // restarting the browser. + POST_INSTALL_ACTION_RESTART_BROWSER = 4, + + // Similar to POST_INSTALL_ACTION_RESTART_BROWSER, but ask the user to shut + // down all browsers. + POST_INSTALL_ACTION_RESTART_ALL_BROWSERS = 5, + + // The caller should ask the user to reboot the machine. + POST_INSTALL_ACTION_REBOOT = 6, +} PostInstallAction; + +[ + object, + dual, + uuid(6DB17455-4E85-46e7-9D23-E555E4B005AF), + helpstring("IGoogleUpdate3 Interface"), + pointer_default(unique) +] +interface IGoogleUpdate3 : IDispatch { + // TODO(Omaha): Perhaps this interface exposes helpers such as + // RestartBrowsers, etc. + + // Returns the count of the AppBundles in this IGoogleUpdate3 interface. + [id(1), propget] HRESULT Count([out, retval] long* count); + + // Returns an IDispatch of the AppBundle in this IGoogleUpdate3 interface at + // the specified 0-based index. This property has the dispid of DISPID_VALUE + // to make it the default property of IGoogleUpdate3. + [id(DISPID_VALUE), propget] HRESULT Item([in] long index, + [out, retval] IDispatch** bundle); + // Returns an IDispatch to a newly created empty AppBundle. + [id(2)] HRESULT createAppBundle([out, retval] IDispatch** app_bundle); +} + +[ + object, + dual, + uuid(313cfb25-4888-4fc6-9e19-764d8c5fc8f8), + helpstring("IAppBundle Interface"), + pointer_default(unique) +] +interface IAppBundle : IDispatch { + // TODO(omaha3): AppBundle::display_name_ is never used. Should we remove? + [propget] HRESULT displayName([out, retval] BSTR*); + [propput] HRESULT displayName([in] BSTR); + + [propget] HRESULT displayLanguage([out, retval] BSTR*); + [propput] HRESULT displayLanguage([in] BSTR); + + [propget] HRESULT installSource([out, retval] BSTR*); + [propput] HRESULT installSource([in] BSTR); + + [propget] HRESULT originURL([out, retval] BSTR*); + [propput] HRESULT originURL([in] BSTR); + + [propget] HRESULT offlineDirectory([out, retval] BSTR* offline_dir); + [propput] HRESULT offlineDirectory([in] BSTR offline_dir); + + [propget] HRESULT sessionId([out, retval] BSTR* session_id); + [propput] HRESULT sessionId([in] BSTR session_id); + + // The priority property determines download speed/priority and the number/ + // frequency of retries. Use values from the InstallPriority enum. + [propget] HRESULT priority([out, retval] long* priority); + [propput] HRESULT priority([in] long priority); + + // Returns the count of the Apps in the AppBundle. + [id(1), propget] HRESULT Count([out, retval] long* count); + + // Returns an IDispatch of the App in the AppBundle at the specified 0-based + // index. This property has the dispid of DISPID_VALUE to make it the default + // property of IAppBundle. + [id(DISPID_VALUE), propget] HRESULT Item([in] long index, + [out, retval] IDispatch** app); + + // Impersonation and primary tokens set by the client. Typically only + // set by the gupdatem service. The gupdatem service exposes a narrow + // interface to medium integrity clients. When a medium integrity client calls + // into the gupdatem service, the gupdatem service captures the token of the + // caller, and then calls put_altTokens() on the gupdate service, so that the + // gupdate service can use it for future download() and install() requests. + [propput] HRESULT altTokens([in] ULONG_PTR impersonation_token, + [in] ULONG_PTR primary_token, + [in] DWORD caller_proc_id); + + // Sets a HWND to associate with the client, if any. This will be used as + // the parent window for any dialogs that the server may need to display. + [propput] HRESULT parentHWND([in] ULONG_PTR hwnd); + + // Initializes the bundle with the properties that have been set. + [id(2)] HRESULT initialize(); + + // Returns an IDispatch to a new App for the specified app id. + // The App is added to the Bundle. + [id(3)] HRESULT createApp([in] BSTR app_id, + [out, retval] IDispatch** app); + + // Returns an IDispatch to a newly created App for the specified app ID. The + // App is populated with information from the existing installation and added + // to the Bundle. Fails if the specified app is not installed. + [id(4)] HRESULT createInstalledApp([in] BSTR app_id, + [out, retval] IDispatch** app); + + // Creates App instances for all installed apps managed by this Omaha + // instance. Each App is populated with information from the existing install. + [id(5)] HRESULT createAllInstalledApps(); + + // These methods are non-blocking. The operation is scheduled. + [id(6)] HRESULT checkForUpdate(); + [id(7)] HRESULT download(); + [id(8)] HRESULT install(); + + // All-in-one function for automatically updating all apps. Populates the + // bundle then schedules the update, which includes the update check and + // download and install, if necessary. + [id(9)] HRESULT updateAllApps(); + + // These three methods are non-blocking. The operation is requested. + [id(10)] HRESULT stop(); + [id(11)] HRESULT pause(); + [id(12)] HRESULT resume(); + + // Returns true if the bundle has an uncompleted non-blocking request. + [id(13)] HRESULT isBusy([out, retval] VARIANT_BOOL* is_busy); + + // Downloads a package of an installed application. + [id(14)] HRESULT downloadPackage([in] BSTR app_id, [in] BSTR package_name); + + // TODO(omaha): Define this aggregated bundle state. Is this really a property + // or should it be getCurrentState? + // The server and bundle are the only thing that can provide aggregated + // time estimates for downloads. Also, aggregate percentage is not currently + // available to the client because the total bytes to download is not + // available from App in all post-update check states. + // To do this, we will probably need to know the total expected download + // size for all packages to be installed - those that are required or in use - + // by the time the update check phase is complete. + [id(15), propget] HRESULT currentState([out, retval] VARIANT* current_state); +}; + +[ + object, + dual, + uuid(D999CE21-98B3-4894-BACB-A49A1D50848F), + helpstring("IApp Interface"), + pointer_default(unique) +] +interface IApp : IDispatch { + // Returns a version IDispatch object. + [id(1), propget] HRESULT currentVersion([out, retval] IDispatch** current); + [id(2), propget] HRESULT nextVersion([out, retval] IDispatch** next); + + [propget] HRESULT appId([out, retval] BSTR*); + + [propget] HRESULT displayName([out, retval] BSTR*); + [propput] HRESULT displayName([in] BSTR); + + [propget] HRESULT language([out, retval] BSTR*); + [propput] HRESULT language([in] BSTR); + + [propget] HRESULT ap([out, retval] BSTR*); + [propput] HRESULT ap([in] BSTR); + + [propget] HRESULT ttToken([out, retval] BSTR*); + [propput] HRESULT ttToken([in] BSTR); + + [propget] HRESULT iid([out, retval] BSTR*); + [propput] HRESULT iid([in] BSTR); + + [propget] HRESULT brandCode([out, retval] BSTR*); + [propput] HRESULT brandCode([in] BSTR); + + [propget] HRESULT clientId([out, retval] BSTR*); + [propput] HRESULT clientId([in] BSTR); + + [propget] HRESULT labels([out, retval] BSTR*); + [propput] HRESULT labels([in] BSTR); + + [propget] HRESULT referralId([out, retval] BSTR*); + [propput] HRESULT referralId([in] BSTR); + + // Use values from the BrowserType enum. + [propget] HRESULT browserType([out, retval] UINT*); + [propput] HRESULT browserType([in] UINT); + + [propget] HRESULT clientInstallData([out, retval] BSTR*); + [propput] HRESULT clientInstallData([in] BSTR); + + [propget] HRESULT serverInstallDataIndex([out, retval] BSTR*); + [propput] HRESULT serverInstallDataIndex([in] BSTR); + + // Set as soon as possible. Error pings are disabled until set to true. + [propget] HRESULT isEulaAccepted([out, retval] VARIANT_BOOL*); + [propput] HRESULT isEulaAccepted([in] VARIANT_BOOL); + + [propget] HRESULT usageStatsEnable([out, retval] UINT*); + [propput] HRESULT usageStatsEnable([in] UINT); + + [propget] HRESULT installTimeDiffSec([out, retval] UINT*); + + // Returns an ICurrentState interface. The object underlying the interface has + // static data that does not get updated as the server state changes. To get + // the most "current" state, the currentState property needs to be queried + // again. + [propget] HRESULT currentState([out, retval] IDispatch**); +}; + +[ + object, + dual, + uuid(BCDCB538-01C0-46d1-A6A7-52F4D021C272), + helpstring("IAppVersion Interface"), + pointer_default(unique) +] +interface IAppVersion : IDispatch { + [propget] HRESULT version([out, retval] BSTR*); + + // [propget] HRESULT installManifest([out, retval] BSTR*); + + // Returns the count of the Packages in the AppVersion. + [propget] HRESULT packageCount([out, retval] long* count); + + // Returns an IDispatch of the Package in the AppVersion at the specified + // 0-based index. + [propget] HRESULT package([in] long index, + [out, retval] IDispatch** package); +}; + +[ + object, + dual, + uuid(DCAB8386-4F03-4dbd-A366-D90BC9F68DE6), + helpstring("IPackage Interface"), + pointer_default(unique) +] +interface IPackage : IDispatch { + // Retrieves the package from the package cache and copies it to the + // directory provided. Returns an error is the package is not available + // locally. + [id(1)] HRESULT get([in] BSTR dir); + + // Returns true if the package has been downloaded and is available + // locally. + [propget] HRESULT isAvailable([out, retval] VARIANT_BOOL*); + + // Returns the manifest name of the package. + [propget] HRESULT filename([out, retval] BSTR*); +}; + +// TODO(omaha3): We should figure out what else we are going to want in this +// interface before dogfood even if we do not implement it. +[ + object, + dual, + uuid(247954F9-9EDC-4E68-8CC3-150C2B89EADF), + helpstring("ICurrentState Interface"), + pointer_default(unique) +] +interface ICurrentState : IDispatch { + // This interface is exposed to web clients! + // TODO(omaha3): Update valid comments once we settle on an implementation. + + // A value from the CurrentState enum. This value determines which of the + // properties below are valid. + [propget] HRESULT stateValue([out, retval] LONG*); + + // The remaining properties are only valid in the specified states. For all + // other states, the values are not specified. + + // This property is valid only when stateValue is STATE_UPDATE_AVAILABLE. + [propget] HRESULT availableVersion([out, retval] BSTR*); + + // The following three properties are only valid when stateValue is + // STATE_WAITING_TO_DOWNLOAD, STATE_RETRYING_DOWNLOAD, STATE_DOWNLOADING, + // STATE_DOWNLOAD_COMPLETE, STATE_EXTRACTING, + // STATE_APPLYING_DIFFERENTIAL_PATCH, or STATE_READY_TO_INSTALL. + + // Bytes downloaded so far. + [propget] HRESULT bytesDownloaded([out, retval] ULONG*); + + // Total bytes to download. + [propget] HRESULT totalBytesToDownload([out, retval] ULONG*); + + // Estimated download time remaining in ms. -1 indicates unknown. + // Progress may not always be available, so clients should handle the -1 case. + [propget] HRESULT downloadTimeRemainingMs([out, retval] LONG*); + + [propget] HRESULT nextRetryTime([out, retval] ULONGLONG*); + + // TODO(omaha 3): Need some way to indicate reconnecting, retrying, etc. + + // The following two properties are only valid when stateValue is + // STATE_INSTALLING or STATE_INSTALL_COMPLETE. + + // Current install progress in percentage from 0 to 100. -1 indicates unknown. + // Progress may not always be available, so clients should handle the -1 case. + [propget] HRESULT installProgress([out, retval] LONG*); + + // Estimated download time remaining in ms. -1 indicates unknown. + // Progress may not always be available, so clients should handle the -1 case. + [propget] HRESULT installTimeRemainingMs([out, retval] LONG*); + + // The following four properties are only valid when stateValue is + // STATE_ERROR: + + // Returns true if the app has been canceled. + [propget] HRESULT isCanceled([out, retval] VARIANT_BOOL* is_canceled); + + // Error code. + [propget] HRESULT errorCode([out, retval] LONG*); + + // Error extra code. + [propget] HRESULT extraCode1([out, retval] LONG*); + + // The following three properties are only valid when stateValue is + // STATE_ERROR or STATE_INSTALL_COMPLETE. + // TODO(omaha3): If STATE_DOWNLOAD_COMPLETE or STATE_READY_TO_INSTALL becomes + // a terminal state, does it support completion messages? + + // Completion message, localized in the specified language. + // TODO(omaha3): If we're going to have bundle error messages too, should the + // language be at bundle level? Should bundle have its own language setter? + [propget] HRESULT completionMessage([out, retval] BSTR*); + + // Application installer result code. This is to be used as additional + // information only. Success/failure should be determined using errorCode. + // This is an error if errorCode is GOOPDATEINSTALL_E_INSTALLER_FAILED. + [propget] HRESULT installerResultCode([out, retval] LONG*); + + // Application installer extra code. + [propget] HRESULT installerResultExtraCode1([out, retval] LONG*); + + // A command that needs to be launched by the client after installation. + [propget] HRESULT postInstallLaunchCommandLine([out, retval] BSTR*); + + // URL to be launched after restarting the browser. + [propget] HRESULT postInstallUrl([out, retval] BSTR*); + + // Returns a PostInstallAction value indicating the action to be taken by the + // client after installation. + [propget] HRESULT postInstallAction([out, retval] LONG*); +} + +[ + object, + dual, + uuid(4E223325-C16B-4eeb-AEDC-19AA99A237FA), + helpstring("IRegistrationUpdateHook Interface"), + pointer_default(unique), +] +interface IRegistrationUpdateHook : IDispatch { + HRESULT UpdateRegistry([in] BSTR app_id, [in] VARIANT_BOOL is_machine); +}; + +[ + object, + uuid(b3a47570-0a85-4aea-8270-529d47899603), + helpstring("ICredentialDialog Interface"), + pointer_default(unique), +] +interface ICredentialDialog : IUnknown { + HRESULT QueryUserForCredentials([in] ULONG_PTR owner_hwnd, + [in] BSTR server, + [in] BSTR message, + [out] BSTR* username, + [out] BSTR* password); +}; + +// BEGIN gupdatem interfaces. + +// The following interfaces are exposed as a narrower version of the +// IGoogleUpdate3 interface from the gupdatem service. These interfaces are +// meant for use from medium and low integrity clients. + +[ + object, + dual, + uuid(494B20CF-282E-4BDD-9F5D-B70CB09D351E), + helpstring("IGoogleUpdate3Web Interface"), + pointer_default(unique), +] +interface IGoogleUpdate3Web : IDispatch { + HRESULT createAppBundleWeb([out, retval] IDispatch** app_bundle_web); +}; + +[ + object, + uuid(2D363682-561D-4c3a-81C6-F2F82107562A), + helpstring("IGoogleUpdate3WebSecurity Interface"), + pointer_default(unique), +] +interface IGoogleUpdate3WebSecurity : IUnknown { + HRESULT setOriginURL([in] BSTR origin_url); +}; + +[ + object, + dual, + uuid(DD42475D-6D46-496a-924E-BD5630B4CBBA), + helpstring("IAppBundleWeb Interface"), + pointer_default(unique), +] +interface IAppBundleWeb : IDispatch { + [id(2)] HRESULT createApp([in] BSTR app_guid, + [in] BSTR brand_code, + [in] BSTR language, + [in] BSTR ap); + [id(3)] HRESULT createInstalledApp([in] BSTR app_id); + [id(4)] HRESULT createAllInstalledApps(); + + [propget] HRESULT displayLanguage([out, retval] BSTR*); + [propput] HRESULT displayLanguage([in] BSTR); + + [propput] HRESULT parentHWND([in] ULONG_PTR hwnd); + + [propget] HRESULT length([out, retval] int* index); + [id(DISPID_VALUE), propget] HRESULT appWeb( + [in] int index, [out, retval] IDispatch** app_web); + + HRESULT initialize(); + + HRESULT checkForUpdate(); + HRESULT download(); + HRESULT install(); + + HRESULT pause(); + HRESULT resume(); + HRESULT cancel(); + + HRESULT downloadPackage([in] BSTR app_id, [in] BSTR package_name); + + [propget] HRESULT currentState([out, retval] VARIANT* current_state); +}; + +[ + object, + dual, + uuid(C6398F88-69CE-44ac-B6A7-1D3E2AA46679), + helpstring("IAppWeb Interface"), + pointer_default(unique), +] +interface IAppWeb : IDispatch { + [propget] HRESULT appId([out, retval] BSTR*); + + // Returns an IAppVersionWeb IDispatch object. + [propget] HRESULT currentVersionWeb([out, retval] IDispatch** current); + [propget] HRESULT nextVersionWeb([out, retval] IDispatch** next); + + HRESULT cancel(); + [propget] HRESULT currentState([out, retval] IDispatch** current_state); + HRESULT launch(); + HRESULT uninstall(); +}; + +[ + object, + dual, + uuid(0CD01D1E-4A1C-489d-93B9-9B6672877C57), + helpstring("IAppVersionWeb Interface"), + pointer_default(unique) +] +interface IAppVersionWeb : IDispatch { + [propget] HRESULT version([out, retval] BSTR*); + + // Returns the count of the Packages in the AppVersion. + [propget] HRESULT packageCount([out, retval] long* count); + + // TODO(omaha3): Implement this after a security review. + // Returns an IDispatch of the Package in the AppVersion at the specified + // 0-based index. + [propget] HRESULT packageWeb([in] long index, + [out, retval] IDispatch** package); +}; + +[ + object, + dual, + uuid(2E629606-312A-482f-9B12-2C4ABF6F0B6D), + helpstring("ICoCreateAsyncStatus Interface"), + pointer_default(unique) +] +interface ICoCreateAsyncStatus : IDispatch { + [propget] HRESULT isDone([out, retval] VARIANT_BOOL* is_done); + [propget] HRESULT completionHResult([out, retval] LONG* hr); + [propget] HRESULT createdInstance([out, retval] IDispatch** instance); +}; + +[ + object, + uuid(DAB1D343-1B2A-47f9-B445-93DC50704BFE), + helpstring("ICoCreateAsync Interface"), + pointer_default(unique) +] +interface ICoCreateAsync : IUnknown { + HRESULT createOmahaMachineServerAsync( + [in] BSTR origin_url, + [in] BOOL create_elevated, + [out, retval] ICoCreateAsyncStatus** status); +}; + +// END gupdatem interfaces. + +// BEGIN Legacy google_update_idl interfaces. + [ object, uuid(5B25A8DC-1780-4178-A629-6BE8B8DEFAA2), @@ -22,7 +602,7 @@ interface IBrowserHttpRequest2 : IUnknown { // @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 + // http://msdn.microsoft.com/aa385351.aspx // The input is a SAFEARRAY of DWORD. Can be a // VT_EMPTY. // @param response_headers HTTP response headers, returned as SAFEARRAY @@ -66,6 +646,18 @@ interface IProcessLauncher : IUnknown { [out] ULONG_PTR* proc_handle); }; +[ + object, + oleautomation, + uuid(5CCCB0EF-7073-4516-8028-4C628D0C8AAB), + helpstring("Google Update IOneClickProcessLauncher Interface"), + pointer_default(unique) +] +interface IOneClickProcessLauncher : IUnknown { + HRESULT LaunchAppCommand([in, string] const WCHAR* app_guid, + [in, string] const WCHAR* cmd_id); +}; + typedef enum { COMPLETION_CODE_SUCCESS = 1, COMPLETION_CODE_SUCCESS_CLOSE_UI, @@ -77,7 +669,7 @@ typedef enum { COMPLETION_CODE_REBOOT_NOTICE_ONLY, COMPLETION_CODE_RESTART_BROWSER_NOTICE_ONLY, COMPLETION_CODE_RUN_COMMAND, -} CompletionCodes; +} LegacyCompletionCodes; [ object, @@ -124,15 +716,11 @@ interface IJobObserver : IUnknown { HRESULT OnWaitingToInstall(); HRESULT OnInstalling(); HRESULT OnPause(); - HRESULT OnComplete([in] CompletionCodes code, + HRESULT OnComplete([in] LegacyCompletionCodes 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, @@ -174,33 +762,144 @@ interface IGoogleUpdateCore : IUnknown [out] ULONG_PTR* proc_handle); }; +// END Legacy google_update_idl interfaces. + [ - uuid(7E6CD20B-8688-4960-96D9-B979471577B8), + uuid(655DD85A-3C0D-4674-9C58-AF7168C5861E), version(1.0), - helpstring("Google Update Type Library") + helpstring("Google Update 3.0 Type Library") ] -library GoogleUpdateLib { +library GoogleUpdate3Lib { importlib("stdole2.tlb"); + + // These Interfaces are forward declared to ensure that they are described in + // the generated TLB file. This is required for ATL to correctly implement the + // corresponding IDispatch interfaces. + interface IGoogleUpdate3; + interface IAppBundle; + interface IApp; + interface IAppVersion; + interface IPackage; + interface ICurrentState; + + interface IGoogleUpdate3Web; + interface IAppBundleWeb; + interface IAppWeb; + interface IAppVersionWeb; + interface ICoCreateAsyncStatus; + + [ + uuid(022105BD-948A-40c9-AB42-A3300DDF097F), + helpstring("GoogleUpdate3 Class for per-user applications") + ] + coclass GoogleUpdate3UserClass { + [default] interface IDispatch; + } + + [ + uuid(4EB61BAC-A3B6-4760-9581-655041EF4D69), + helpstring("GoogleUpdate3 Service Class for machine applications") + ] + coclass GoogleUpdate3ServiceClass { + [default] interface IDispatch; + } + + [ + uuid(22181302-A8A6-4f84-A541-E5CBFC70CC43), + helpstring("GoogleUpdate3Web for user applications") + ] + coclass GoogleUpdate3WebUserClass { + [default] interface IDispatch; + } + + [ + uuid(8A1D4361-2C08-4700-A351-3EAA9CBFF5E4), + helpstring("Pass-through broker for the GoogleUpdate3WebServiceClass") + ] + coclass GoogleUpdate3WebMachineClass { + [default] interface IDispatch; + } + + [ + uuid(534F5323-3569-4f42-919D-1E1CF93E5BF6), + helpstring("GoogleUpdate3Web") + ] + coclass GoogleUpdate3WebServiceClass { + [default] interface IDispatch; + } + + [ + uuid(598FE0E5-E02D-465d-9A9D-37974A28FD42), + helpstring("Fallback mechanism if GoogleUpdate3WebServiceClass fails") + ] + coclass GoogleUpdate3WebMachineFallbackClass { + [default] interface IDispatch; + } + + [ + uuid(E8CF3E55-F919-49d9-ABC0-948E6CB34B9F), + helpstring("CurrentStateUserClass") + ] + coclass CurrentStateUserClass { + [default] interface ICurrentState; + } + + [ + uuid(9D6AA569-9F30-41ad-885A-346685C74928), + helpstring("CurrentStateMachineClass") + ] + coclass CurrentStateMachineClass { + [default] interface ICurrentState; + } + + [ + uuid(7DE94008-8AFD-4c70-9728-C6FBFFF6A73E), + helpstring("CoCreateAsyncClass") + ] + coclass CoCreateAsyncClass { + [default] interface IUnknown; + } + + [ + uuid(e67be843-bbbe-4484-95fb-05271ae86750), + helpstring("CredentialDialogUserClass") + ] + coclass CredentialDialogUserClass { + [default] interface IUnknown; + } + + [ + uuid(25461599-633d-42b1-84fb-7cd68d026e53), + helpstring("CredentialDialogMachineClass") + ] + coclass CredentialDialogMachineClass { + [default] interface IUnknown; + } + + // BEGIN Legacy google_update_idl coclasses. + [ uuid(ABC01078-F197-4b0b-ADBC-CFE684B39C82), helpstring("ProcessLauncherClass Class") ] coclass ProcessLauncherClass { - [default] interface IProcessLauncher; + [default] interface IUnknown; + } + + [ + uuid(51F9E8EF-59D7-475b-A106-C7EA6F30C119), + helpstring("OneClickUserProcessLauncherClass Class") + ] + coclass OneClickUserProcessLauncherClass { + [default] interface IOneClickProcessLauncher; } - // 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") + uuid(AAD4AE2E-D834-46d4-8B09-490FAC9C722B), + helpstring("OneClickMachineProcessLauncherClass Class") ] - coclass InterfaceRegistrar { - [default] interface IBrowserHttpRequest2; - interface IJobObserver; - interface IProgressWndEvents; + coclass OneClickMachineProcessLauncherClass { + [default] interface IOneClickProcessLauncher; } [ @@ -208,15 +907,31 @@ library GoogleUpdateLib { helpstring("OnDemand updates for per-user applications.") ] coclass OnDemandUserAppsClass { - [default] interface IGoogleUpdate; + [default] interface IUnknown; } [ uuid(6F8BD55B-E83D-4a47-85BE-81FFA8057A69), - helpstring("OnDemand updates for per-machine applications.") + helpstring("OnDemand pass-through broker for machine applications.") ] coclass OnDemandMachineAppsClass { - [default] interface IGoogleUpdate; + [default] interface IUnknown; + } + + [ + uuid(9465B4B4-5216-4042-9A2C-754D3BCDC410), + helpstring("OnDemand updates for per-machine applications.") + ] + coclass OnDemandMachineAppsServiceClass { + [default] interface IUnknown; + } + + [ + uuid(B3D28DBD-0DFA-40e4-8071-520767BADC7E), + helpstring("Fallback for if OnDemandMachineAppsServiceClass fails.") + ] + coclass OnDemandMachineAppsFallbackClass { + [default] interface IUnknown; } [ @@ -225,7 +940,17 @@ library GoogleUpdateLib { ] coclass GoogleUpdateCoreClass { - [default] interface IGoogleUpdateCore; + [default] interface IUnknown; + } + + [ + uuid(9B2340A0-4068-43d6-B404-32E27217859D), + helpstring("GoogleUpdateCore Machine Class") + ] + coclass GoogleUpdateCoreMachineClass + { + [default] interface IUnknown; } + // END Legacy google_update_idl coclasses. }; |