Index: goopdate/app.h |
diff --git a/goopdate/app.h b/goopdate/app.h |
deleted file mode 100644 |
index 9e2dcd9dccce8fb93ccbbaa78243c486e98f306e..0000000000000000000000000000000000000000 |
--- a/goopdate/app.h |
+++ /dev/null |
@@ -1,481 +0,0 @@ |
-// Copyright 2009-2010 Google Inc. |
-// |
-// 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 |
-// |
-// 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. |
-// ======================================================================== |
- |
-// Defines the App COM object exposed by the model. App tracks two versions: |
-// - the version currently installed |
-// - the future version to be updated to, if such a version exists |
- |
-#ifndef OMAHA_GOOPDATE_APP_H_ |
-#define OMAHA_GOOPDATE_APP_H_ |
- |
-#include <atlbase.h> |
-#include <atlcom.h> |
-#include "base/basictypes.h" |
-#include "base/scoped_ptr.h" |
-#include "goopdate/omaha3_idl.h" |
-#include "omaha/base/browser_utils.h" |
-#include "omaha/base/constants.h" |
-#include "omaha/common/const_goopdate.h" |
-#include "omaha/common/ping_event.h" |
-#include "omaha/goopdate/com_wrapper_creator.h" |
-#include "omaha/goopdate/installer_result_info.h" |
-#include "omaha/goopdate/model_object.h" |
- |
-namespace omaha { |
- |
-// Stores the error codes associated with a particular error. |
-struct ErrorContext { |
- ErrorContext() : error_code(S_OK), extra_code1(0) {} |
- explicit ErrorContext(HRESULT hr, int code1 = 0) |
- : error_code(hr), |
- extra_code1(code1) {} |
- |
- HRESULT error_code; |
- int extra_code1; |
- |
- // Add more extra codes here as needed. |
-}; |
- |
-class DownloadManagerInterface; |
-class InstallManagerInterface; |
- |
-namespace fsm { |
- |
-class AppState; |
- |
-} // namespace fsm |
- |
-namespace xml { |
- |
-class UpdateRequest; |
-class UpdateResponse; |
- |
-} // namespace xml |
- |
-class AppBundle; |
-class AppVersion; |
-class CurrentAppState; |
- |
-class App : public ModelObject { |
- public: |
- App(const GUID& app_guid, bool is_update, AppBundle* app_bundle); |
- virtual ~App(); |
- |
- AppVersion* current_version(); |
- const AppVersion* current_version() const; |
- |
- AppVersion* next_version(); |
- const AppVersion* next_version() const; |
- |
- AppBundle* app_bundle(); |
- const AppBundle* app_bundle() const; |
- |
- CString app_guid_string() const; |
- |
- // TODO(omaha): refactor so that the app guid setter is only used by tests. |
- GUID app_guid() const; |
- void set_app_guid(const GUID& app_guid); |
- |
- CString language() const; |
- |
- bool is_eula_accepted() const; |
- |
- CString display_name() const; |
- |
- CurrentState state() const; |
- |
- bool is_install() const { return !is_update(); } |
- bool is_update() const; |
- |
- bool has_update_available() const; |
- void set_has_update_available(bool has_update_available); |
- |
- GUID iid() const; |
- |
- CString client_id() const; |
- |
- CString GetExperimentLabels() const; |
- |
- CString referral_id() const; |
- |
- BrowserType browser_type() const; |
- |
- Tristate usage_stats_enable() const; |
- |
- CString client_install_data() const; |
- |
- CString server_install_data() const; |
- void set_server_install_data(const CString& server_install_data); |
- |
- CString brand_code() const; |
- |
- uint32 install_time_diff_sec() const; |
- |
- ActiveStates did_run() const; |
- |
- int days_since_last_active_ping() const; |
- void set_days_since_last_active_ping(int days); |
- |
- int days_since_last_roll_call() const; |
- void set_days_since_last_roll_call(int days); |
- |
- CString ap() const; |
- |
- CString tt_token() const; |
- |
- CString server_install_data_index() const; |
- |
- HRESULT error_code() const; |
- |
- ErrorContext error_context() const; |
- |
- int installer_result_code() const; |
- |
- int installer_result_extra_code1() const; |
- |
- const PingEventVector& ping_events() const; |
- |
- AppVersion* working_version(); |
- const AppVersion* working_version() const; |
- |
- // IApp. |
- STDMETHOD(get_appId)(BSTR* app_id); |
- |
- STDMETHOD(get_pv)(BSTR* pv); |
- STDMETHOD(put_pv)(BSTR pv); |
- |
- STDMETHOD(get_language)(BSTR* language); |
- STDMETHOD(put_language)(BSTR language); |
- |
- STDMETHOD(get_ap)(BSTR* ap); |
- STDMETHOD(put_ap)(BSTR ap); |
- |
- STDMETHOD(get_ttToken)(BSTR* tt_token); |
- STDMETHOD(put_ttToken)(BSTR tt_token); |
- |
- STDMETHOD(get_iid)(BSTR* iid); |
- STDMETHOD(put_iid)(BSTR iid); |
- |
- STDMETHOD(get_brandCode)(BSTR* brand_code); |
- STDMETHOD(put_brandCode)(BSTR brand_code); |
- |
- STDMETHOD(get_clientId)(BSTR* client_id); |
- STDMETHOD(put_clientId)(BSTR client_id); |
- |
- STDMETHOD(get_labels)(BSTR* labels); |
- STDMETHOD(put_labels)(BSTR labels); |
- |
- STDMETHOD(get_referralId)(BSTR* referral_id); |
- STDMETHOD(put_referralId)(BSTR referral_id); |
- |
- STDMETHOD(get_installTimeDiffSec)(UINT* install_time_diff_sec); |
- |
- STDMETHOD(get_isEulaAccepted)(VARIANT_BOOL* is_eula_accepted); |
- STDMETHOD(put_isEulaAccepted)(VARIANT_BOOL is_eula_accepted); |
- |
- STDMETHOD(get_displayName)(BSTR* display_name); |
- STDMETHOD(put_displayName)(BSTR display_name); |
- |
- STDMETHOD(get_browserType)(UINT* browser_type); |
- STDMETHOD(put_browserType)(UINT browser_type); |
- |
- STDMETHOD(get_clientInstallData)(BSTR* data); |
- STDMETHOD(put_clientInstallData)(BSTR data); |
- |
- STDMETHOD(get_serverInstallDataIndex)(BSTR* index); |
- STDMETHOD(put_serverInstallDataIndex)(BSTR index); |
- |
- STDMETHOD(get_usageStatsEnable)(UINT* usage_stats_enable); |
- STDMETHOD(put_usageStatsEnable)(UINT usage_stats_enable); |
- |
- STDMETHOD(get_currentState)(IDispatch** current_state); |
- |
- // Sets the error context and the completion message. |
- void SetNoUpdate(const ErrorContext& error_context, const CString& message); |
- void SetError(const ErrorContext& error_context, const CString& message); |
- |
- // Records the details of the installer success or failure. |
- void SetInstallerResult(const InstallerResultInfo& result_info); |
- |
- // Gets the appropriate installer data regardless of the source. Only valid |
- // in STATE_UPDATE_AVAILABLE and later. |
- CString GetInstallData() const; |
- |
- |
- // |
- // App state machine transition conditions. These functions make |
- // the application change states. |
- // |
- |
- // Sets the app to Waiting To Check. |
- void QueueUpdateCheck(); |
- |
- // Adds the app to the update request. |
- void PreUpdateCheck(xml::UpdateRequest* update_request); |
- |
- // Processes the update response for the app. |
- void PostUpdateCheck(HRESULT result, xml::UpdateResponse* update_response); |
- |
- // Sets the app to Waiting To Download. |
- void QueueDownload(); |
- |
- // Sets the app to Waiting To Download or Waiting To Install depending on the |
- // current state. |
- void QueueDownloadOrInstall(); |
- |
- // Initiates download of the app if necessary. |
- void Download(DownloadManagerInterface* download_manager); |
- |
- // Reports that the download is in progress. May be called multiple times. |
- void Downloading(); |
- |
- // Reports that all packages have been downloaded. |
- void DownloadComplete(); |
- |
- // Sets the app to Ready To install. |
- void MarkReadyToInstall(); |
- |
- // Sets the app to Waiting To Install. |
- void QueueInstall(); |
- |
- // Initiates installation of the app. |
- void Install(InstallManagerInterface* install_manager); |
- |
- // Reports that the install is in progress. May be called multiple times. |
- void Installing(); |
- |
- // Reports that the app installer has completed. Can be success or failure. |
- void ReportInstallerComplete(const InstallerResultInfo& result_info); |
- |
- // TODO(omaha3): What does this pause? |
- void Pause(); |
- |
- // Cancels the app install. |
- void Cancel(); |
- |
- // Stops installation in the Error state. |
- void Error(const ErrorContext& error_context, const CString& message); |
- |
- // For logging support. |
- CString FetchAndResetLogText(); |
- void LogTextAppendFormat(const TCHAR* format, ...); |
- |
- // Adds an event to the app's ping, which is sent when the bundle is |
- // destroyed. In most cases, pings should be added in |
- // AppState::CreatePingEvent(). |
- void AddPingEvent(const PingEventPtr& ping_event); |
- |
- // Returns an error if update/install, as determined by is_update_, is |
- // disabled by Group Policy. |
- HRESULT CheckGroupPolicy() const; |
- |
- // Sets current time as download start time. |
- void SetDownloadStartTime(); |
- |
- // Sets current time as download complete time. |
- void SetDownloadCompleteTime(); |
- |
- // Updates num bytes downloaded by adding newly downloaded bytes. |
- void UpdateNumBytesDownloaded(uint64 num_bytes); |
- |
- // Returns how long it takes for the download manager to download this app. |
- int GetDownloadTimeMs() const; |
- |
- // Returns how many bytes are actually downloaded. |
- uint64 num_bytes_downloaded() const; |
- |
- // Returns the size sum of all packages for this app. |
- uint64 GetPackagesTotalSize() const; |
- |
- private: |
- // TODO(omaha): accessing directly the data members bypasses locking. Review |
- // the places where members are accessed by friends and check the caller locks |
- // before going directly for the private members. |
- friend class AppManager; |
- friend class AppManagerTestBase; |
- |
- // TODO(omaha3): Maybe use a mock in these tests instead. |
- friend class InstallManagerInstallAppTest; |
- |
- friend class fsm::AppState; |
- |
- // Sets the app state for unit testing. |
- friend void SetAppStateForUnitTest(App* app, fsm::AppState* state); |
- |
- HRESULT GetDownloadProgress(uint64* bytes_downloaded, |
- uint64* bytes_total, |
- LONG* time_remaining_ms, |
- uint64* next_retry_time); |
- |
- void ChangeState(fsm::AppState* app_state); |
- |
- scoped_ptr<fsm::AppState> app_state_; |
- |
- scoped_ptr<AppVersion> current_version_; |
- scoped_ptr<AppVersion> next_version_; |
- |
- // Alias to the version of the app that is being modified. |
- AppVersion* working_version_; |
- |
- PingEventVector ping_events_; |
- |
- CString event_log_text_; |
- |
- // Weak reference to the containing bundle. |
- AppBundle* app_bundle_; |
- |
- // True if the app is in the update scenario. |
- const bool is_update_; |
- |
- // True if the server responded that an update is available for the app. |
- // This can happen in both install and update cases. |
- bool has_update_available_; |
- |
- GUID app_guid_; |
- CString pv_; |
- |
- // These values are stored in Clients. language can be in ClientState too. |
- CString language_; |
- CString display_name_; |
- |
- // These values are stored in ClientState. |
- CString ap_; |
- CString tt_token_; |
- GUID iid_; |
- CString brand_code_; |
- CString client_id_; |
- // TODO(omaha3): Rename member and registry value to match the COM property. |
- CString referral_id_; |
- uint32 install_time_diff_sec_; |
- Tristate is_eula_accepted_; |
- BrowserType browser_type_; |
- int days_since_last_active_ping_; |
- int days_since_last_roll_call_; |
- |
- // This value is stored in ClientState but not currently populated from there. |
- Tristate usage_stats_enable_; |
- |
- // This value is stored by the clients in one of several registry locations. |
- ActiveStates did_run_; |
- |
- // This value is not currently persisted in the registry. |
- CString server_install_data_index_; |
- |
- // Contains the installer data string specified by the client (usually |
- // contained in /appdata). |
- CString client_install_data_; |
- |
- // Contains the installer data string returned by the server for |
- // server_install_data_index_. |
- CString server_install_data_; |
- |
- bool is_canceled_; |
- ErrorContext error_context_; |
- CString completion_message_; |
- PingEvent::Results completion_result_; |
- int installer_result_code_; |
- int installer_result_extra_code1_; |
- CString post_install_launch_command_line_; |
- CString post_install_url_; |
- PostInstallAction post_install_action_; |
- |
- uint64 previous_total_download_bytes_; |
- |
- // Values for download metrics. |
- uint64 download_start_time_ms_; |
- uint64 download_complete_time_ms_; |
- uint64 num_bytes_downloaded_; |
- |
- DISALLOW_COPY_AND_ASSIGN(App); |
-}; |
- |
-class ATL_NO_VTABLE AppWrapper |
- : public ComWrapper<AppWrapper, App>, |
- public IDispatchImpl<IApp, |
- &__uuidof(IApp), |
- &CAtlModule::m_libid, |
- kMajorTypeLibVersion, |
- kMinorTypeLibVersion> { |
- public: |
- // IApp. |
- STDMETHOD(get_currentVersion)(IDispatch** current); |
- STDMETHOD(get_nextVersion)(IDispatch** next); |
- STDMETHOD(get_currentState)(IDispatch** current_state_disp); |
- |
- STDMETHOD(get_appId)(BSTR* app_id); |
- |
- STDMETHOD(get_pv)(BSTR* pv); |
- STDMETHOD(put_pv)(BSTR pv); |
- |
- STDMETHOD(get_language)(BSTR* language); |
- STDMETHOD(put_language)(BSTR language); |
- |
- STDMETHOD(get_ap)(BSTR* ap); |
- STDMETHOD(put_ap)(BSTR ap); |
- |
- STDMETHOD(get_ttToken)(BSTR* tt_token); |
- STDMETHOD(put_ttToken)(BSTR tt_token); |
- |
- STDMETHOD(get_iid)(BSTR* iid); |
- STDMETHOD(put_iid)(BSTR iid); |
- |
- STDMETHOD(get_brandCode)(BSTR* brand_code); |
- STDMETHOD(put_brandCode)(BSTR brand_code); |
- |
- STDMETHOD(get_clientId)(BSTR* client_id); |
- STDMETHOD(put_clientId)(BSTR client_id); |
- |
- STDMETHOD(get_labels)(BSTR* labels); |
- STDMETHOD(put_labels)(BSTR labels); |
- |
- STDMETHOD(get_referralId)(BSTR* referral_id); |
- STDMETHOD(put_referralId)(BSTR referral_id); |
- |
- STDMETHOD(get_installTimeDiffSec)(UINT* install_time_diff_sec); |
- |
- STDMETHOD(get_isEulaAccepted)(VARIANT_BOOL* is_eula_accepted); |
- STDMETHOD(put_isEulaAccepted)(VARIANT_BOOL is_eula_accepted); |
- |
- STDMETHOD(get_displayName)(BSTR* display_name); |
- STDMETHOD(put_displayName)(BSTR display_name); |
- |
- STDMETHOD(get_browserType)(UINT* browser_type); |
- STDMETHOD(put_browserType)(UINT browser_type); |
- |
- STDMETHOD(get_clientInstallData)(BSTR* data); |
- STDMETHOD(put_clientInstallData)(BSTR data); |
- |
- STDMETHOD(get_serverInstallDataIndex)(BSTR* index); |
- STDMETHOD(put_serverInstallDataIndex)(BSTR index); |
- |
- STDMETHOD(get_usageStatsEnable)(UINT* usage_stats_enable); |
- STDMETHOD(put_usageStatsEnable)(UINT usage_stats_enable); |
- |
- protected: |
- AppWrapper() {} |
- virtual ~AppWrapper() {} |
- |
- BEGIN_COM_MAP(AppWrapper) |
- COM_INTERFACE_ENTRY(IApp) |
- COM_INTERFACE_ENTRY(IDispatch) |
- END_COM_MAP() |
- |
- private: |
- DISALLOW_COPY_AND_ASSIGN(AppWrapper); |
-}; |
- |
-} // namespace omaha |
- |
-#endif // OMAHA_GOOPDATE_APP_H_ |