Index: client/bundle_installer.h |
diff --git a/client/bundle_installer.h b/client/bundle_installer.h |
deleted file mode 100644 |
index 44cc601631ba668e8024688b1868c03a06a606de..0000000000000000000000000000000000000000 |
--- a/client/bundle_installer.h |
+++ /dev/null |
@@ -1,242 +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. |
-// ======================================================================== |
- |
- |
-#ifndef OMAHA_CLIENT_BUNDLE_INSTALLER_H_ |
-#define OMAHA_CLIENT_BUNDLE_INSTALLER_H_ |
- |
-#include <windows.h> |
-#include <atlstr.h> |
-#include <vector> |
-#include "base/basictypes.h" |
-#include "base/scoped_ptr.h" |
-#include "omaha/base/safe_format.h" |
-#include "omaha/base/wtl_atlapp_wrapper.h" |
-#include "goopdate/omaha3_idl.h" |
-#include "omaha/client/install_progress_observer.h" |
- |
-namespace omaha { |
- |
-// TODO(omaha): These should be declared in their own file. |
-namespace internal { |
- |
-CString GetAppDisplayName(IApp* app); |
- |
-// Builds a list of app names of the format "one, two, three". |
-// TODO(omaha): If this does not end up using AppCompletionInfo, move it to |
-// client_utils. |
-CString BuildAppNameList(const std::vector<CString>& app_names); |
- |
-// Helper function that returns the error information from the ICurrentState. |
-HRESULT GetCompletionInformation(IApp* app, |
- CurrentState* current_state, |
- AppCompletionInfo* app_info); |
- |
-// Gets the completion message for an app. |
-void GetAppCompletionMessage(IApp* app, |
- AppCompletionInfo* app_info); |
- |
-// Gets the completion message for the bundle. |
-// If the bundle name cannot be obtained, pass an empty string in bundle_name. |
-// TODO(omaha): If AppCompletionInfo is exposed, maybe move to client_utils. |
-CString GetBundleCompletionMessage( |
- const CString& bundle_name, |
- const std::vector<AppCompletionInfo>& apps_info, |
- bool is_only_no_update, |
- bool is_canceled); |
- |
-} // namespace internal |
- |
-class HelpUrlBuilder; |
-class ShutdownCallback; |
- |
-class BundleInstaller |
- : public CWindowImpl<BundleInstaller, |
- CWindow, |
- CWinTraits<WS_OVERLAPPED, WS_EX_TOOLWINDOW> > { |
- public: |
- // Takes ownership of help_url_builder. |
- BundleInstaller(HelpUrlBuilder* help_url_builder, |
- bool is_update_all_apps, |
- bool is_update_check_only, |
- bool is_browser_type_supported); |
- ~BundleInstaller(); |
- |
- HRESULT Initialize(); |
- void Uninitialize(); |
- |
- // Installs a bundle. The installer takes the ownership of the bundle and |
- // releases the inteface before function returns. |
- HRESULT InstallBundle(bool is_machine, |
- bool listen_to_shutdown_event, |
- IAppBundle* app_bundle, |
- InstallProgressObserver* observer); |
- |
- void SetBundleParentWindow(HWND parent_window); |
- |
- // Message loop that pumps messages during installation. |
- CMessageLoop* message_loop() { return &message_loop_; } |
- |
- // Handles asynchronous requests for the application to close. |
- void DoClose(); |
- |
- // Handles requests to exit the BundleInstaller message loop. Should only be |
- // called after the BundleInstaller is in the kComplete state, i.e., after |
- // OnComplete(). |
- void DoExit(); |
- |
- // Handles asynchronous requests to cancel install. |
- void DoCancel(); |
- |
- // Polls the COM server and advances the install state appropriately. |
- // Returns true if the caller should continue polling. |
- bool PollServer(); |
- |
- HRESULT result(); |
- |
- private: |
- enum State { |
- kInit, |
- kProcessing, |
- kComplete, |
- }; |
- |
- // Contains additional information about the bundle completion. |
- struct BundleCompletionInfo { |
- CompletionCodes completion_code; |
- HRESULT bundle_result; // Result to return up call stack on completion. |
- CString bundle_completion_message; |
- std::vector<AppCompletionInfo> apps_info; |
- |
- BundleCompletionInfo(CompletionCodes code, |
- HRESULT result, |
- const CString& message) |
- : completion_code(code), |
- bundle_result(result), |
- bundle_completion_message(message) {} |
- |
-#ifdef DEBUG |
- CString ToString() const { |
- CString result; |
- SafeCStringFormat(&result, _T("[BundleCompletionInfo][%d][0x%x][%s]"), |
- completion_code, |
- bundle_result, |
- bundle_completion_message); |
- for (size_t i = 0; i < apps_info.size(); ++i) { |
- SafeCStringAppendFormat(&result, _T("[%s]"), apps_info[i].ToString()); |
- } |
- return result; |
- } |
-#endif |
- }; |
- |
- // Does the work for PollServer. |
- HRESULT DoPollServer(); |
- |
- // Performs the polling while checking for update. |
- HRESULT HandleUpdateAvailable(); |
- |
- // Handles the first call to PollServer(). |
- HRESULT HandleInitState(); |
- |
- // Performs all subsequent calls to PollServer() until the state is complete. |
- HRESULT HandleProcessingState(); |
- |
- // Makes installer listen to the shutdown event. |
- HRESULT ListenToShutdownEvent(bool is_machine); |
- |
- // Stops listening to the shutdown event if the installer is currently |
- // listening. Otherwise no effect. |
- void StopListenToShutdownEvent(bool is_machine); |
- |
- // These functions update the UI during HandleProcessingState(). |
- // TODO(omaha): Rename these to Notify*. |
- HRESULT NotifyUpdateAvailable(IApp* app); |
- HRESULT NotifyDownloadProgress(IApp* app, ICurrentState* icurrent_state); |
- HRESULT NotifyWaitingToInstall(IApp* app); |
- HRESULT NotifyInstallProgress(IApp* app, ICurrentState* icurrent_state); |
- HRESULT NotifyBundleUpdateCheckOnlyComplete(); |
- HRESULT NotifyBundleInstallComplete(); |
- |
- // Helper functions for the Notify* functions. |
- HRESULT HandleUpdateCheckResults(int* num_updates); |
- void GetAppDownloadProgress(ICurrentState* icurrent_state, |
- int* time_remaining_ms, |
- int* percentage, |
- time64* next_retry_time); |
- |
- void CancelBundle(); |
- |
- // Sets the state to complete and informs the UI. |
- void Complete(const BundleCompletionInfo& bundle_info); |
- |
- BEGIN_MSG_MAP(BundleInstaller) |
- MESSAGE_HANDLER(WM_CLOSE, OnClose) |
- MESSAGE_HANDLER(WM_TIMER, OnTimer) |
- END_MSG_MAP() |
- |
- static const int kPollingTimerId = 1; |
- static const int kPollingTimerPeriodMs = 100; |
- |
- // The main use case for this OnClose() handler is the shutdown handler via a |
- // PostMessage in the /UA scenario. |
- LRESULT OnClose(UINT msg, |
- WPARAM wparam, |
- LPARAM lparam, |
- BOOL& handled); // NOLINT |
- |
- // Calls BundleInstaller::PollServer() at periodic intervals. |
- LRESULT OnTimer(UINT msg, |
- WPARAM wparam, |
- LPARAM lparam, |
- BOOL& handled); // NOLINT |
- |
- void ReleaseAppBundle(); |
- |
- InstallProgressObserver* observer_; |
- scoped_ptr<HelpUrlBuilder> help_url_builder_; |
- |
- // The bundle to be installed. |
- CComPtr<IAppBundle> app_bundle_; |
- |
- // Bundle parent window. |
- HWND parent_window_; |
- |
- // Message loop that pumps messages during installation. |
- CMessageLoop message_loop_; |
- |
- // Shutdown event listener. |
- scoped_ptr<ShutdownCallback> shutdown_callback_; |
- |
- // The apps in app_bundle_. Allows easier and quicker access to the apps than |
- // going through app_bundle_. |
- typedef CComPtr<IApp> ComPtrIApp; |
- typedef CAdapt<ComPtrIApp> AdaptIApp; |
- std::vector<AdaptIApp> apps_; |
- |
- State state_; |
- HRESULT result_; |
- bool is_canceled_; |
- |
- const bool is_update_all_apps_; |
- const bool is_update_check_only_; // Only used by legacy OnDemand. |
- const bool is_browser_type_supported_; |
- |
- DISALLOW_IMPLICIT_CONSTRUCTORS(BundleInstaller); |
-}; |
- |
-} // namespace omaha |
- |
-#endif // OMAHA_CLIENT_BUNDLE_INSTALLER_H_ |