diff options
author | Glenn Glazer <coyot@lindenlab.com> | 2016-08-18 13:05:30 -0700 |
---|---|---|
committer | Glenn Glazer <coyot@lindenlab.com> | 2016-08-18 13:05:30 -0700 |
commit | c8c143e7741d2b93b589d770b64c265228293564 (patch) | |
tree | d7a6c4f500976e98031b2dca4bc08b6bd6998edd /indra/newview/lllogininstance.cpp | |
parent | 8ae320edf1bf17a762b0477584b13b61ea94922c (diff) |
SL-323: first pass at ripping out old updater
Diffstat (limited to 'indra/newview/lllogininstance.cpp')
-rw-r--r-- | indra/newview/lllogininstance.cpp | 568 |
1 files changed, 3 insertions, 565 deletions
diff --git a/indra/newview/lllogininstance.cpp b/indra/newview/lllogininstance.cpp index b4d0bb6823..b9e9c12aec 100644 --- a/indra/newview/lllogininstance.cpp +++ b/indra/newview/lllogininstance.cpp @@ -50,13 +50,12 @@ #include "llwindow.h" #include "llviewerwindow.h" #include "llprogressview.h" -#if LL_LINUX || LL_SOLARIS +#if LL_LINUX #include "lltrans.h" #endif #include "llsecapi.h" #include "llstartup.h" #include "llmachineid.h" -#include "llupdaterservice.h" #include "llevents.h" #include "llappviewer.h" @@ -68,406 +67,11 @@ public: virtual ~Disposable() {} }; -namespace { - class MandatoryUpdateMachine: - public LLLoginInstance::Disposable - { - public: - MandatoryUpdateMachine(LLLoginInstance & loginInstance, LLUpdaterService & updaterService); - - void start(void); - - LLNotificationsInterface& getNotificationsInterface() const - { - return mLoginInstance.getNotificationsInterface(); - } - - private: - class State; - class CheckingForUpdate; - class Error; - class ReadyToInstall; - class StartingUpdaterService; - class WaitingForDownload; - - boost::scoped_ptr<State> mState; - LLLoginInstance & mLoginInstance; - LLUpdaterService & mUpdaterService; - - void setCurrentState(State * newState); - }; - - - class MandatoryUpdateMachine::State { - public: - virtual ~State() {} - virtual void enter(void) {} - virtual void exit(void) {} - }; - - - class MandatoryUpdateMachine::CheckingForUpdate: - public MandatoryUpdateMachine::State - { - public: - CheckingForUpdate(MandatoryUpdateMachine & machine); - - virtual void enter(void); - virtual void exit(void); - - private: - LLTempBoundListener mConnection; - MandatoryUpdateMachine & mMachine; - LLProgressView * mProgressView; - - bool onEvent(LLSD const & event); - }; - - - class MandatoryUpdateMachine::Error: - public MandatoryUpdateMachine::State - { - public: - Error(MandatoryUpdateMachine & machine); - - virtual void enter(void); - virtual void exit(void); - void onButtonClicked(const LLSD &, const LLSD &); - - private: - MandatoryUpdateMachine & mMachine; - }; - - - class MandatoryUpdateMachine::ReadyToInstall: - public MandatoryUpdateMachine::State - { - public: - ReadyToInstall(MandatoryUpdateMachine & machine); - - virtual void enter(void); - virtual void exit(void); - - private: - //MandatoryUpdateMachine & mMachine; - }; - - - class MandatoryUpdateMachine::StartingUpdaterService: - public MandatoryUpdateMachine::State - { - public: - StartingUpdaterService(MandatoryUpdateMachine & machine); - - virtual void enter(void); - virtual void exit(void); - void onButtonClicked(const LLSD & uiform, const LLSD & result); - private: - MandatoryUpdateMachine & mMachine; - }; - - - class MandatoryUpdateMachine::WaitingForDownload: - public MandatoryUpdateMachine::State - { - public: - WaitingForDownload(MandatoryUpdateMachine & machine); - - virtual void enter(void); - virtual void exit(void); - - private: - LLTempBoundListener mConnection; - MandatoryUpdateMachine & mMachine; - LLProgressView * mProgressView; - - bool onEvent(LLSD const & event); - }; -} - static const char * const TOS_REPLY_PUMP = "lllogininstance_tos_callback"; static const char * const TOS_LISTENER_NAME = "lllogininstance_tos"; std::string construct_start_string(); - - -// MandatoryUpdateMachine -//----------------------------------------------------------------------------- - - -MandatoryUpdateMachine::MandatoryUpdateMachine(LLLoginInstance & loginInstance, LLUpdaterService & updaterService): - mLoginInstance(loginInstance), - mUpdaterService(updaterService) -{ - ; // No op. -} - - -void MandatoryUpdateMachine::start(void) -{ - LL_INFOS() << "starting mandatory update machine" << LL_ENDL; - - if(mUpdaterService.isChecking()) { - switch(mUpdaterService.getState()) { - case LLUpdaterService::UP_TO_DATE: - mUpdaterService.stopChecking(); - mUpdaterService.startChecking(); - // Fall through. - case LLUpdaterService::INITIAL: - case LLUpdaterService::CHECKING_FOR_UPDATE: - setCurrentState(new CheckingForUpdate(*this)); - break; - case LLUpdaterService::TEMPORARY_ERROR: - setCurrentState(new Error(*this)); - break; - case LLUpdaterService::DOWNLOADING: - setCurrentState(new WaitingForDownload(*this)); - break; - case LLUpdaterService::TERMINAL: - if(LLUpdaterService::updateReadyToInstall()) { - setCurrentState(new ReadyToInstall(*this)); - } else { - setCurrentState(new Error(*this)); - } - break; - case LLUpdaterService::FAILURE: - setCurrentState(new Error(*this)); - break; - default: - llassert(!"unpossible case"); - break; - } - } else { - setCurrentState(new StartingUpdaterService(*this)); - } -} - - -void MandatoryUpdateMachine::setCurrentState(State * newStatePointer) -{ - { - boost::scoped_ptr<State> newState(newStatePointer); - if(mState != 0) mState->exit(); - mState.swap(newState); - - // Old state will be deleted on exit from this block before the new state - // is entered. - } - if(mState != 0) mState->enter(); -} - - - -// MandatoryUpdateMachine::CheckingForUpdate -//----------------------------------------------------------------------------- - - -MandatoryUpdateMachine::CheckingForUpdate::CheckingForUpdate(MandatoryUpdateMachine & machine): - mMachine(machine) -{ - ; // No op. -} - - -void MandatoryUpdateMachine::CheckingForUpdate::enter(void) -{ - LL_INFOS() << "entering checking for update" << LL_ENDL; - - mProgressView = gViewerWindow->getProgressView(); - mProgressView->setMessage("Looking for update..."); - mProgressView->setText("There is a required update for your Second Life installation."); - mProgressView->setPercent(0); - mProgressView->setVisible(true); - mConnection = LLEventPumps::instance().obtain(LLUpdaterService::pumpName()). - listen("MandatoryUpdateMachine::CheckingForUpdate", boost::bind(&MandatoryUpdateMachine::CheckingForUpdate::onEvent, this, _1)); -} - - -void MandatoryUpdateMachine::CheckingForUpdate::exit(void) -{ -} - - -bool MandatoryUpdateMachine::CheckingForUpdate::onEvent(LLSD const & event) -{ - if(event["type"].asInteger() == LLUpdaterService::STATE_CHANGE) { - switch(event["state"].asInteger()) { - case LLUpdaterService::DOWNLOADING: - mMachine.setCurrentState(new WaitingForDownload(mMachine)); - break; - case LLUpdaterService::TEMPORARY_ERROR: - case LLUpdaterService::UP_TO_DATE: - case LLUpdaterService::TERMINAL: - case LLUpdaterService::FAILURE: - mProgressView->setVisible(false); - mMachine.setCurrentState(new Error(mMachine)); - break; - case LLUpdaterService::INSTALLING: - llassert(!"can't possibly be installing"); - break; - default: - break; - } - } else { - ; // Ignore. - } - - return false; -} - - - -// MandatoryUpdateMachine::Error -//----------------------------------------------------------------------------- - - -MandatoryUpdateMachine::Error::Error(MandatoryUpdateMachine & machine): - mMachine(machine) -{ - ; // No op. -} - - -void MandatoryUpdateMachine::Error::enter(void) -{ - LL_INFOS() << "entering error" << LL_ENDL; - mMachine.getNotificationsInterface().add("FailedRequiredUpdateInstall", LLSD(), LLSD(), boost::bind(&MandatoryUpdateMachine::Error::onButtonClicked, this, _1, _2)); -} - - -void MandatoryUpdateMachine::Error::exit(void) -{ - LLAppViewer::instance()->forceQuit(); -} - - -void MandatoryUpdateMachine::Error::onButtonClicked(const LLSD &, const LLSD &) -{ - mMachine.setCurrentState(0); -} - - - -// MandatoryUpdateMachine::ReadyToInstall -//----------------------------------------------------------------------------- - - -MandatoryUpdateMachine::ReadyToInstall::ReadyToInstall(MandatoryUpdateMachine & machine) //: - //mMachine(machine) -{ - ; // No op. -} - - -void MandatoryUpdateMachine::ReadyToInstall::enter(void) -{ - LL_INFOS() << "entering ready to install" << LL_ENDL; - // Open update ready dialog. -} - - -void MandatoryUpdateMachine::ReadyToInstall::exit(void) -{ - // Restart viewer. -} - - - -// MandatoryUpdateMachine::StartingUpdaterService -//----------------------------------------------------------------------------- - - -MandatoryUpdateMachine::StartingUpdaterService::StartingUpdaterService(MandatoryUpdateMachine & machine): - mMachine(machine) -{ - ; // No op. -} - - -void MandatoryUpdateMachine::StartingUpdaterService::enter(void) -{ - LL_INFOS() << "entering start update service" << LL_ENDL; - mMachine.getNotificationsInterface().add("UpdaterServiceNotRunning", LLSD(), LLSD(), boost::bind(&MandatoryUpdateMachine::StartingUpdaterService::onButtonClicked, this, _1, _2)); -} - - -void MandatoryUpdateMachine::StartingUpdaterService::exit(void) -{ - ; // No op. -} - - -void MandatoryUpdateMachine::StartingUpdaterService::onButtonClicked(const LLSD & uiform, const LLSD & result) -{ - if(result["OK_okcancelbuttons"].asBoolean()) { - mMachine.mUpdaterService.startChecking(false); - mMachine.setCurrentState(new CheckingForUpdate(mMachine)); - } else { - LLAppViewer::instance()->forceQuit(); - } -} - - - -// MandatoryUpdateMachine::WaitingForDownload -//----------------------------------------------------------------------------- - - -MandatoryUpdateMachine::WaitingForDownload::WaitingForDownload(MandatoryUpdateMachine & machine): - mMachine(machine), - mProgressView(0) -{ - ; // No op. -} - - -void MandatoryUpdateMachine::WaitingForDownload::enter(void) -{ - LL_INFOS() << "entering waiting for download" << LL_ENDL; - mProgressView = gViewerWindow->getProgressView(); - mProgressView->setMessage("Downloading update..."); - std::ostringstream stream; - stream << "There is a required update for your Second Life installation." << std::endl << - "Version " << mMachine.mUpdaterService.updatedVersion(); - mProgressView->setText(stream.str()); - mProgressView->setPercent(0); - mProgressView->setVisible(true); - mConnection = LLEventPumps::instance().obtain(LLUpdaterService::pumpName()). - listen("MandatoryUpdateMachine::CheckingForUpdate", boost::bind(&MandatoryUpdateMachine::WaitingForDownload::onEvent, this, _1)); -} - - -void MandatoryUpdateMachine::WaitingForDownload::exit(void) -{ - mProgressView->setVisible(false); -} - - -bool MandatoryUpdateMachine::WaitingForDownload::onEvent(LLSD const & event) -{ - switch(event["type"].asInteger()) { - case LLUpdaterService::DOWNLOAD_COMPLETE: - mMachine.setCurrentState(new ReadyToInstall(mMachine)); - break; - case LLUpdaterService::DOWNLOAD_ERROR: - mMachine.setCurrentState(new Error(mMachine)); - break; - case LLUpdaterService::PROGRESS: { - double downloadSize = event["download_size"].asReal(); - double bytesDownloaded = event["bytes_downloaded"].asReal(); - mProgressView->setPercent(100. * bytesDownloaded / downloadSize); - break; - } - default: - break; - } - - return false; -} - - - // LLLoginInstance //----------------------------------------------------------------------------- @@ -476,11 +80,9 @@ LLLoginInstance::LLLoginInstance() : mLoginModule(new LLLogin()), mNotifications(NULL), mLoginState("offline"), - mSkipOptionalUpdate(false), mAttemptComplete(false), mTransferRate(0.0f), - mDispatcher("LLLoginInstance", "change"), - mUpdaterService(0) + mDispatcher("LLLoginInstance", "change") { mLoginModule->getEventPump().listen("lllogininstance", boost::bind(&LLLoginInstance::handleLoginEvent, this, _1)); @@ -590,18 +192,11 @@ void LLLoginInstance::constructAuthParams(LLPointer<LLCredential> user_credentia // (re)initialize the request params with creds. LLSD request_params = user_credential->getLoginParams(); - unsigned char hashed_unique_id_string[MD5HEX_STR_SIZE]; - if ( ! llHashedUniqueID(hashed_unique_id_string) ) - { - LL_WARNS() << "Not providing a unique id in request params" << LL_ENDL; - } request_params["start"] = construct_start_string(); - request_params["skipoptional"] = mSkipOptionalUpdate; request_params["agree_to_tos"] = false; // Always false here. Set true in request_params["read_critical"] = false; // handleTOSResponse request_params["last_exec_event"] = mLastExecEvent; request_params["last_exec_duration"] = mLastExecDuration; - request_params["mac"] = (char*)hashed_unique_id_string; request_params["version"] = LLVersionInfo::getVersion(); request_params["channel"] = LLVersionInfo::getChannel(); request_params["platform"] = mPlatform; @@ -698,19 +293,6 @@ void LLLoginInstance::handleLoginFailure(const LLSD& event) boost::bind(&LLLoginInstance::handleTOSResponse, this, _1, "read_critical")); } - else if(reason_response == "update" || gSavedSettings.getBOOL("ForceMandatoryUpdate")) - { - LL_INFOS() << "LLLoginInstance::handleLoginFailure update" << LL_ENDL; - - gSavedSettings.setBOOL("ForceMandatoryUpdate", FALSE); - updateApp(true, message_response); - } - else if(reason_response == "optional") - { - LL_INFOS() << "LLLoginInstance::handleLoginFailure optional" << LL_ENDL; - - updateApp(false, message_response); - } else { LL_INFOS() << "LLLoginInstance::handleLoginFailure attemptComplete" << LL_ENDL; @@ -722,22 +304,7 @@ void LLLoginInstance::handleLoginSuccess(const LLSD& event) { LL_INFOS() << "LLLoginInstance::handleLoginSuccess" << LL_ENDL; - if(gSavedSettings.getBOOL("ForceMandatoryUpdate")) - { - LLSD response = event["data"]; - std::string message_response = response["message"].asString(); - - // Testing update... - gSavedSettings.setBOOL("ForceMandatoryUpdate", FALSE); - - // Don't confuse startup by leaving login "online". - mLoginModule->disconnect(); - updateApp(true, message_response); - } - else - { - attemptComplete(); - } + attemptComplete(); } void LLLoginInstance::handleDisconnect(const LLSD& event) @@ -787,135 +354,6 @@ bool LLLoginInstance::handleTOSResponse(bool accepted, const std::string& key) return true; } - -void LLLoginInstance::updateApp(bool mandatory, const std::string& auth_msg) -{ - if(mandatory) - { - gViewerWindow->setShowProgress(false); - MandatoryUpdateMachine * machine = new MandatoryUpdateMachine(*this, *mUpdaterService); - mUpdateStateMachine.reset(machine); - machine->start(); - return; - } - - // store off config state, as we might quit soon - gSavedSettings.saveToFile(gSavedSettings.getString("ClientSettingsFile"), TRUE); - LLUIColorTable::instance().saveUserSettings(); - - std::ostringstream message; - std::string msg; - if (!auth_msg.empty()) - { - msg = "(" + auth_msg + ") \n"; - } - - LLSD args; - args["MESSAGE"] = msg; - - LLSD payload; - payload["mandatory"] = mandatory; - - /* - * We're constructing one of the following 9 strings here: - * "DownloadWindowsMandatory" - * "DownloadWindowsReleaseForDownload" - * "DownloadWindows" - * "DownloadMacMandatory" - * "DownloadMacReleaseForDownload" - * "DownloadMac" - * "DownloadLinuxMandatory" - * "DownloadLinuxReleaseForDownload" - * "DownloadLinux" - * - * I've called them out explicitly in this comment so that they can be grepped for. - */ - std::string notification_name = "Download"; - -#if LL_WINDOWS - notification_name += "Windows"; -#elif LL_DARWIN - notification_name += "Mac"; -#else - notification_name += "Linux"; -#endif - - if (mandatory) - { - notification_name += "Mandatory"; - } - else - { -#if LL_RELEASE_FOR_DOWNLOAD - notification_name += "ReleaseForDownload"; -#endif - } - - if(mNotifications) - { - mNotifications->add(notification_name, args, payload, - boost::bind(&LLLoginInstance::updateDialogCallback, this, _1, _2)); - - gViewerWindow->setShowProgress(false); - } -} - -bool LLLoginInstance::updateDialogCallback(const LLSD& notification, const LLSD& response) -{ - S32 option = LLNotification::getSelectedOption(notification, response); - std::string update_exe_path; - bool mandatory = notification["payload"]["mandatory"].asBoolean(); - -#if !LL_RELEASE_FOR_DOWNLOAD - if (option == 2) - { - // This condition attempts to skip the - // update if using a dev build. - // The relog probably won't work if the - // update is mandatory. :) - - // *REMOVE:Mani - Saving for reference... - //LLStartUp::setStartupState( STATE_LOGIN_AUTH_INIT ); - mSkipOptionalUpdate = true; - reconnect(); - return false; - } -#endif - - if (option == 1) - { - // ...user doesn't want to do it - if (mandatory) - { - // Mandatory update, user chose to not to update... - // The login attemp is complete, startup should - // quit when detecting this. - attemptComplete(); - - // *REMOVE:Mani - Saving for reference... - //LLAppViewer::instance()->forceQuit(); - // // Bump them back to the login screen. - // //reset_login(); - } - else - { - // Optional update, user chose to skip - mSkipOptionalUpdate = true; - reconnect(); - } - return false; - } - - if(mUpdaterLauncher) - { - mUpdaterLauncher(); - } - - attemptComplete(); - - return false; -} - std::string construct_start_string() { std::string start; |