| // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CHROME_INSTALLER_GCAPI_GCAPI_H_ |
| #define CHROME_INSTALLER_GCAPI_GCAPI_H_ |
| |
| #include <windows.h> |
| |
| // Error conditions for GoogleChromeCompatibilityCheck(). |
| #define GCCC_ERROR_USERLEVELALREADYPRESENT (1 << 0) |
| #define GCCC_ERROR_SYSTEMLEVELALREADYPRESENT (1 << 1) |
| #define GCCC_ERROR_ACCESSDENIED (1 << 2) |
| #define GCCC_ERROR_OSNOTSUPPORTED (1 << 3) |
| #define GCCC_ERROR_ALREADYOFFERED (1 << 4) |
| #define GCCC_ERROR_INTEGRITYLEVEL (1 << 5) |
| |
| // Error conditions for CanReactivateChrome(). |
| #define REACTIVATE_ERROR_NOTINSTALLED (1 << 0) |
| #define REACTIVATE_ERROR_NOTDORMANT (1 << 1) |
| #define REACTIVATE_ERROR_ALREADY_REACTIVATED (1 << 2) |
| #define REACTIVATE_ERROR_INVALID_INPUT (1 << 3) |
| #define REACTIVATE_ERROR_REACTIVATION_FAILED (1 << 4) |
| |
| // Error conditions for CanOfferRelaunch(). |
| #define RELAUNCH_ERROR_NOTINSTALLED (1 << 0) |
| #define RELAUNCH_ERROR_INVALID_PARTNER (1 << 1) |
| #define RELAUNCH_ERROR_PINGS_SENT (1 << 2) |
| #define RELAUNCH_ERROR_NOTDORMANT (1 << 3) |
| #define RELAUNCH_ERROR_ALREADY_RELAUNCHED (1 << 4) |
| #define RELAUNCH_ERROR_INVALID_INPUT (1 << 5) |
| #define RELAUNCH_ERROR_RELAUNCH_FAILED (1 << 6) |
| |
| // Flags to indicate how GCAPI is invoked |
| #define GCAPI_INVOKED_STANDARD_SHELL (1 << 0) |
| #define GCAPI_INVOKED_UAC_ELEVATION (1 << 1) |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| // The minimum number of days an installation can be dormant before reactivation |
| // may be offered. |
| const int kReactivationMinDaysDormant = 50; |
| |
| // The minimum number of days an installation can be dormant before a relaunch |
| // may be offered. |
| const int kRelaunchMinDaysDormant = 30; |
| |
| // This function returns TRUE if Google Chrome should be offered. |
| // If the return is FALSE, the |reasons| DWORD explains why. If you don't care |
| // for the reason, you can pass NULL for |reasons|. |
| // |set_flag| indicates whether a flag should be set indicating that Chrome was |
| // offered within the last six months; if passed FALSE, this method will not |
| // set the flag even if Chrome can be offered. If passed TRUE, this method |
| // will set the flag only if Chrome can be offered. |
| // |shell_mode| should be set to one of GCAPI_INVOKED_STANDARD_SHELL or |
| // GCAPI_INVOKED_UAC_ELEVATION depending on whether this method is invoked |
| // from an elevated or non-elevated process. |
| BOOL __stdcall GoogleChromeCompatibilityCheck(BOOL set_flag, |
| int shell_mode, |
| DWORD* reasons); |
| |
| // This function launches Google Chrome after a successful install. Make |
| // sure COM library is NOT initialized before you call this function (so if |
| // you called CoInitialize, call CoUninitialize before calling this function). |
| BOOL __stdcall LaunchGoogleChrome(); |
| |
| // This function launches Google Chrome after a successful install, ensuring |
| // that any windows that it makes are shunted to the background. Make sure COM |
| // library is NOT initialized before you call this function (so if you called |
| // CoInitialize, call CoUninitialize before calling this function). |
| BOOL __stdcall LaunchGoogleChromeInBackground(); |
| |
| // This function launches Google Chrome after a successful install at the given |
| // x,y coordinates with size height,length. Pass -1 for x and y to avoid moving |
| // the window. Pass -1 for width and height to avoid resizing the window. Set |
| // in_background to true to move Google Chrome behind all other windows or false |
| // to have it appear at the default z-order. Make sure that COM is NOT |
| // initialized before you call this function (so if you called CoInitialize, |
| // call CoUninitialize before calling this function). This call is synchronous, |
| // meaning it waits for Chrome to launch and appear to resize it before |
| // returning. |
| BOOL __stdcall LaunchGoogleChromeWithDimensions(int x, |
| int y, |
| int width, |
| int height, |
| bool in_background); |
| |
| // This function returns the number of days since Google Chrome was last run by |
| // the current user. If both user-level and machine-wide installations are |
| // present on the system, it will return the lowest last-run-days count of |
| // the two. |
| // Returns -1 if Chrome is not installed, the last run date is in the future, |
| // or we are otherwise unable to determine how long since Chrome was last |
| // launched. |
| int __stdcall GoogleChromeDaysSinceLastRun(); |
| |
| // Returns true if a vendor with the specified |brand_code| may offer |
| // reactivation at this time. Returns false if the vendor may not offer |
| // reactivation at this time, and places one of the REACTIVATE_ERROR_XXX values |
| // in |error_code| if |error_code| is non-null. |
| // |shell_mode| should be set to one of GCAPI_INVOKED_STANDARD_SHELL or |
| // GCAPI_INVOKED_UAC_ELEVATION depending on whether this method is invoked |
| // from an elevated or non-elevated process. |
| BOOL __stdcall CanOfferReactivation(const wchar_t* brand_code, |
| int shell_mode, |
| DWORD* error_code); |
| |
| // Attempts to reactivate Chrome for the specified |brand_code|. Returns false |
| // if reactivation fails, and places one of the REACTIVATE_ERROR_XXX values |
| // in |error_code| if |error_code| is non-null. |
| // |shell_mode| should be set to one of GCAPI_INVOKED_STANDARD_SHELL or |
| // GCAPI_INVOKED_UAC_ELEVATION depending on whether this method is invoked |
| // from an elevated or non-elevated process. |
| BOOL __stdcall ReactivateChrome(const wchar_t* brand_code, |
| int shell_mode, |
| DWORD* error_code); |
| |
| // Returns true if a vendor may offer relaunch at this time. Returns false if |
| // the vendor may not offer relaunching at this time, and places one of the |
| // RELAUNCH_ERROR_XXX values in |error_code| if |error_code| is non-null. The |
| // installed brandcode must be in |partner_brandcode_list|. |shell_mode| should |
| // be set to one of GCAPI_INVOKED_STANDARD_SHELL or GCAPI_INVOKED_UAC_ELEVATION |
| // depending on whether this method is invoked from an elevated or non-elevated |
| // process. |
| BOOL __stdcall CanOfferRelaunch(const wchar_t** partner_brandcode_list, |
| int partner_brandcode_list_length, |
| int shell_mode, |
| DWORD* error_code); |
| |
| // Returns true if a vendor may relaunch at this time (and stores that a |
| // relaunch was offered). Returns false if the vendor may not relaunch |
| // at this time, and places one of the RELAUNCH_ERROR_XXX values in |error_code| |
| // if |error_code| is non-null. As for |CanOfferRelaunch|, the installed |
| // brandcode must be in |partner_brandcode_list|. |shell_mode| should be set to |
| // one of GCAPI_INVOKED_STANDARD_SHELL or GCAPI_INVOKED_UAC_ELEVATION depending |
| // on whether this method is invoked from an elevated or non-elevated process. |
| // The |relaunch_brandcode| will be stored as the brandcode that was used for |
| // offering this relaunch. |
| BOOL __stdcall SetRelaunchOffered(const wchar_t** partner_brandcode_list, |
| int partner_brandcode_list_length, |
| const wchar_t* relaunch_brandcode, |
| int shell_mode, |
| DWORD* error_code); |
| |
| // Function pointer type declarations to use with GetProcAddress. |
| typedef BOOL (__stdcall *GCCC_CompatibilityCheck)(BOOL, int, DWORD *); |
| typedef BOOL (__stdcall *GCCC_LaunchGC)(); |
| typedef BOOL (__stdcall *GCCC_LaunchGoogleChromeInBackground)(); |
| typedef BOOL (__stdcall *GCCC_LaunchGCWithDimensions)(int, int, int, int, bool); |
| typedef int (__stdcall *GCCC_GoogleChromeDaysSinceLastRun)(); |
| typedef BOOL (__stdcall *GCCC_CanOfferReactivation)(const wchar_t*, |
| int, |
| DWORD*); |
| typedef BOOL (__stdcall *GCCC_ReactivateChrome)(const wchar_t*, |
| int, |
| DWORD*); |
| typedef BOOL (__stdcall *GCCC_CanOfferRelaunch)(const wchar_t**, |
| int, |
| int, |
| DWORD*); |
| typedef BOOL (__stdcall *GCCC_SetRelaunchOffered)(const wchar_t**, |
| int, |
| const wchar_t*, |
| int, |
| DWORD*); |
| |
| #ifdef __cplusplus |
| } // extern "C" |
| #endif |
| |
| #endif // CHROME_INSTALLER_GCAPI_GCAPI_H_ |