Adding LLLoginInstance unit test
parent
89dcba8b82
commit
db7f15df68
|
|
@ -24,5 +24,32 @@ LLNotificationsListener::LLNotificationsListener(LLNotifications & notifications
|
|||
|
||||
void LLNotificationsListener::requestAdd(const LLSD& event_data) const
|
||||
{
|
||||
mNotifications.add(event_data["name"], event_data["substitutions"], event_data["payload"]);
|
||||
if(event_data.has("reply"))
|
||||
{
|
||||
mNotifications.add(event_data["name"],
|
||||
event_data["substitutions"],
|
||||
event_data["payload"],
|
||||
boost::bind(&LLNotificationListener::Responder,
|
||||
this,
|
||||
event_data["reply"].asString(),
|
||||
_1, _2
|
||||
)
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
mNotifications.add(event_data["name"],
|
||||
event_data["substitutions"],
|
||||
event_data["payload"]);
|
||||
}
|
||||
}
|
||||
|
||||
void LLNotificationsListener::Responder(const std::string& reply_pump,
|
||||
const LLSD& notification,
|
||||
const LLSD& response)
|
||||
{
|
||||
LLSD reponse_event;
|
||||
reponse_event["notification"] = notification;
|
||||
reponse_event["response"] = response;
|
||||
mEventPumps.obtain(reply_pump).post(reponse_event);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,7 +25,10 @@ public:
|
|||
void requestAdd(LLSD const & event_data) const;
|
||||
|
||||
private:
|
||||
LLNotifications & mNotifications;
|
||||
void NotificationResponder(const std::string& replypump,
|
||||
const LLSD& notification,
|
||||
const LLSD& response);
|
||||
LLNotifications & mNotifications;
|
||||
};
|
||||
|
||||
#endif // LL_LLNOTIFICATIONSLISTENER_H
|
||||
|
|
|
|||
|
|
@ -1480,6 +1480,7 @@ endif (INSTALL)
|
|||
include(LLAddBuildTest)
|
||||
SET(viewer_TEST_SOURCE_FILES
|
||||
llagentaccess.cpp
|
||||
lllogininstance.cpp
|
||||
# Not *actually* a unit test, it's an integration test.
|
||||
# Because it won't work in the new unit test iface, i've commented out
|
||||
# and notified Nat. Delete this when it's replaced!
|
||||
|
|
|
|||
|
|
@ -3986,7 +3986,7 @@ void LLAppViewer::forceErrorBadMemoryAccess()
|
|||
return;
|
||||
}
|
||||
|
||||
void LLAppViewer::forceErrorInifiniteLoop()
|
||||
void LLAppViewer::forceErrorInfiniteLoop()
|
||||
{
|
||||
while(true)
|
||||
{
|
||||
|
|
@ -4152,3 +4152,111 @@ void LLAppViewer::loadEventHostModule(S32 listen_port)
|
|||
|
||||
mPlugins.insert(eventhost_dso_handle);
|
||||
}
|
||||
|
||||
void LLAppViewer::launchUpdater()
|
||||
{
|
||||
LLSD query_map = LLSD::emptyMap();
|
||||
// *TODO place os string in a global constant
|
||||
#if LL_WINDOWS
|
||||
query_map["os"] = "win";
|
||||
#elif LL_DARWIN
|
||||
query_map["os"] = "mac";
|
||||
#elif LL_LINUX
|
||||
query_map["os"] = "lnx";
|
||||
#elif LL_SOLARIS
|
||||
query_map["os"] = "sol";
|
||||
#endif
|
||||
// *TODO change userserver to be grid on both viewer and sim, since
|
||||
// userserver no longer exists.
|
||||
query_map["userserver"] = LLViewerLogin::getInstance()->getGridLabel();
|
||||
query_map["channel"] = gSavedSettings.getString("VersionChannelName");
|
||||
// *TODO constantize this guy
|
||||
// *NOTE: This URL is also used in win_setup/lldownloader.cpp
|
||||
LLURI update_url = LLURI::buildHTTP("secondlife.com", 80, "update.php", query_map);
|
||||
|
||||
if(LLAppViewer::sUpdaterInfo)
|
||||
{
|
||||
delete LLAppViewer::sUpdaterInfo;
|
||||
}
|
||||
LLAppViewer::sUpdaterInfo = new LLAppViewer::LLUpdaterInfo() ;
|
||||
|
||||
#if LL_WINDOWS
|
||||
LLAppViewer::sUpdaterInfo->mUpdateExePath = gDirUtilp->getTempFilename();
|
||||
if (LLAppViewer::sUpdaterInfo->mUpdateExePath.empty())
|
||||
{
|
||||
delete LLAppViewer::sUpdaterInfo ;
|
||||
LLAppViewer::sUpdaterInfo = NULL ;
|
||||
|
||||
// We're hosed, bail
|
||||
LL_WARNS("AppInit") << "LLDir::getTempFilename() failed" << LL_ENDL;
|
||||
return;
|
||||
}
|
||||
|
||||
LLAppViewer::sUpdaterInfo->mUpdateExePath += ".exe";
|
||||
|
||||
std::string updater_source = gDirUtilp->getAppRODataDir();
|
||||
updater_source += gDirUtilp->getDirDelimiter();
|
||||
updater_source += "updater.exe";
|
||||
|
||||
LL_DEBUGS("AppInit") << "Calling CopyFile source: " << updater_source
|
||||
<< " dest: " << LLAppViewer::sUpdaterInfo->mUpdateExePath
|
||||
<< LL_ENDL;
|
||||
|
||||
|
||||
if (!CopyFileA(updater_source.c_str(), LLAppViewer::sUpdaterInfo->mUpdateExePath.c_str(), FALSE))
|
||||
{
|
||||
delete LLAppViewer::sUpdaterInfo ;
|
||||
LLAppViewer::sUpdaterInfo = NULL ;
|
||||
|
||||
LL_WARNS("AppInit") << "Unable to copy the updater!" << LL_ENDL;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// if a sim name was passed in via command line parameter (typically through a SLURL)
|
||||
if ( LLURLSimString::sInstance.mSimString.length() )
|
||||
{
|
||||
// record the location to start at next time
|
||||
gSavedSettings.setString( "NextLoginLocation", LLURLSimString::sInstance.mSimString );
|
||||
};
|
||||
|
||||
LLAppViewer::sUpdaterInfo->mParams << "-url \"" << update_url.asString() << "\"";
|
||||
|
||||
LL_DEBUGS("AppInit") << "Calling updater: " << LLAppViewer::sUpdaterInfo->mUpdateExePath << " " << LLAppViewer::sUpdaterInfo->mParams.str() << LL_ENDL;
|
||||
|
||||
//Explicitly remove the marker file, otherwise we pass the lock onto the child process and things get weird.
|
||||
LLAppViewer::instance()->removeMarkerFile(); // In case updater fails
|
||||
|
||||
// *NOTE:Mani The updater is spawned as the last thing before the WinMain exit.
|
||||
// see LLAppViewerWin32.cpp
|
||||
|
||||
#elif LL_DARWIN
|
||||
// if a sim name was passed in via command line parameter (typically through a SLURL)
|
||||
if ( LLURLSimString::sInstance.mSimString.length() )
|
||||
{
|
||||
// record the location to start at next time
|
||||
gSavedSettings.setString( "NextLoginLocation", LLURLSimString::sInstance.mSimString );
|
||||
};
|
||||
|
||||
LLAppViewer::sUpdaterInfo->mUpdateExePath = "'";
|
||||
LLAppViewer::sUpdaterInfo->mUpdateExePath += gDirUtilp->getAppRODataDir();
|
||||
LLAppViewer::sUpdaterInfo->mUpdateExePath += "/mac-updater.app/Contents/MacOS/mac-updater' -url \"";
|
||||
LLAppViewer::sUpdaterInfo->mUpdateExePath += update_url.asString();
|
||||
LLAppViewer::sUpdaterInfo->mUpdateExePath += "\" -name \"";
|
||||
LLAppViewer::sUpdaterInfo->mUpdateExePath += LLAppViewer::instance()->getSecondLifeTitle();
|
||||
LLAppViewer::sUpdaterInfo->mUpdateExePath += "\" &";
|
||||
|
||||
LL_DEBUGS("AppInit") << "Calling updater: " << LLAppViewer::sUpdaterInfo->mUpdateExePath << LL_ENDL;
|
||||
|
||||
// Run the auto-updater.
|
||||
system(LLAppViewer::sUpdaterInfo->mUpdateExePath.c_str()); /* Flawfinder: ignore */
|
||||
|
||||
#elif LL_LINUX || LL_SOLARIS
|
||||
OSMessageBox("Automatic updating is not yet implemented for Linux.\n"
|
||||
"Please download the latest version from www.secondlife.com.",
|
||||
LLStringUtil::null, OSMB_OK);
|
||||
#endif
|
||||
|
||||
// *REMOVE:Mani - Saving for reference...
|
||||
// LLAppViewer::instance()->forceQuit();
|
||||
}
|
||||
|
|
@ -126,7 +126,7 @@ public:
|
|||
virtual void forceErrorLLError();
|
||||
virtual void forceErrorBreakpoint();
|
||||
virtual void forceErrorBadMemoryAccess();
|
||||
virtual void forceErrorInifiniteLoop();
|
||||
virtual void forceErrorInfiniteLoop();
|
||||
virtual void forceErrorSoftwareException();
|
||||
virtual void forceErrorDriverCrash();
|
||||
|
||||
|
|
@ -262,6 +262,8 @@ public:
|
|||
std::ostringstream mParams;
|
||||
}LLUpdaterInfo ;
|
||||
static LLUpdaterInfo *sUpdaterInfo ;
|
||||
|
||||
void launchUpdater();
|
||||
};
|
||||
|
||||
// consts from viewer.h
|
||||
|
|
|
|||
|
|
@ -74,6 +74,8 @@ LLFloaterTOS* LLFloaterTOS::show(ETOSType type,
|
|||
LLUICtrlFactory::getInstance()->buildFloater(LLFloaterTOS::sInstance, "floater_critical.xml");
|
||||
}
|
||||
|
||||
sInstance->startModal();
|
||||
|
||||
return LLFloaterTOS::sInstance;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -47,7 +47,6 @@
|
|||
|
||||
// newview
|
||||
#include "llviewernetwork.h"
|
||||
#include "llappviewer.h" // Wish I didn't have to, but...
|
||||
#include "llviewercontrol.h"
|
||||
#include "llurlsimstring.h"
|
||||
#include "llfloatertos.h"
|
||||
|
|
@ -74,7 +73,6 @@ LLLoginInstance::~LLLoginInstance()
|
|||
{
|
||||
}
|
||||
|
||||
|
||||
void LLLoginInstance::connect(const LLSD& credentials)
|
||||
{
|
||||
std::vector<std::string> uris;
|
||||
|
|
@ -84,6 +82,7 @@ void LLLoginInstance::connect(const LLSD& credentials)
|
|||
|
||||
void LLLoginInstance::connect(const std::string& uri, const LLSD& credentials)
|
||||
{
|
||||
mAttemptComplete = false; // Reset attempt complete at this point!
|
||||
constructAuthParams(credentials);
|
||||
mLoginModule->connect(uri, mRequestData);
|
||||
}
|
||||
|
|
@ -99,6 +98,7 @@ void LLLoginInstance::reconnect()
|
|||
|
||||
void LLLoginInstance::disconnect()
|
||||
{
|
||||
mAttemptComplete = false; // Reset attempt complete at this point!
|
||||
mRequestData.clear();
|
||||
mLoginModule->disconnect();
|
||||
}
|
||||
|
|
@ -162,12 +162,13 @@ void LLLoginInstance::constructAuthParams(const LLSD& credentials)
|
|||
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"] = gLastExecEvent;
|
||||
request_params["last_exec_event"] = mLastExecEvent;
|
||||
request_params["mac"] = hashed_mac_string;
|
||||
request_params["version"] = gCurrentVersion; // Includes channel name
|
||||
request_params["channel"] = gSavedSettings.getString("VersionChannelName");
|
||||
request_params["id0"] = LLAppViewer::instance()->getSerialNumber();
|
||||
request_params["id0"] = mSerialNumber;
|
||||
|
||||
mRequestData.clear();
|
||||
mRequestData["method"] = "login_to_simulator";
|
||||
mRequestData["params"] = request_params;
|
||||
mRequestData["options"] = requested_options;
|
||||
|
|
@ -219,21 +220,18 @@ bool LLLoginInstance::handleLoginFailure(const LLSD& event)
|
|||
// to reconnect or to end the attempt in failure.
|
||||
if(reason_response == "tos")
|
||||
{
|
||||
LLFloaterTOS* tos_dialog = LLFloaterTOS::show(LLFloaterTOS::TOS_TOS,
|
||||
message_response,
|
||||
boost::bind(&LLLoginInstance::handleTOSResponse,
|
||||
this, _1, "agree_to_tos")
|
||||
);
|
||||
tos_dialog->startModal();
|
||||
LLFloaterTOS::show(LLFloaterTOS::TOS_TOS,
|
||||
message_response,
|
||||
boost::bind(&LLLoginInstance::handleTOSResponse,
|
||||
this, _1, "agree_to_tos"));
|
||||
}
|
||||
else if(reason_response == "critical")
|
||||
{
|
||||
LLFloaterTOS* tos_dialog = LLFloaterTOS::show(LLFloaterTOS::TOS_CRITICAL_MESSAGE,
|
||||
message_response,
|
||||
boost::bind(&LLLoginInstance::handleTOSResponse,
|
||||
this, _1, "read_critical")
|
||||
LLFloaterTOS::show(LLFloaterTOS::TOS_CRITICAL_MESSAGE,
|
||||
message_response,
|
||||
boost::bind(&LLLoginInstance::handleTOSResponse,
|
||||
this, _1, "read_critical")
|
||||
);
|
||||
tos_dialog->startModal();
|
||||
}
|
||||
else if(reason_response == "update" || gSavedSettings.getBOOL("ForceMandatoryUpdate"))
|
||||
{
|
||||
|
|
@ -259,12 +257,14 @@ bool LLLoginInstance::handleLoginFailure(const LLSD& event)
|
|||
|
||||
bool LLLoginInstance::handleLoginSuccess(const LLSD& event)
|
||||
{
|
||||
LLSD response = event["data"];
|
||||
std::string message_response = response["message"].asString();
|
||||
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);
|
||||
|
|
@ -281,7 +281,7 @@ void LLLoginInstance::handleTOSResponse(bool accepted, const std::string& key)
|
|||
if(accepted)
|
||||
{
|
||||
// Set the request data to true and retry login.
|
||||
mRequestData[key] = true;
|
||||
mRequestData["params"][key] = true;
|
||||
reconnect();
|
||||
}
|
||||
else
|
||||
|
|
@ -344,13 +344,36 @@ void LLLoginInstance::updateApp(bool mandatory, const std::string& auth_msg)
|
|||
notification_name += "ReleaseForDownload";
|
||||
#endif
|
||||
}
|
||||
|
||||
LLNotifications::instance().add(notification_name, args, payload,
|
||||
boost::bind(&LLLoginInstance::updateDialogCallback, this, _1, _2));
|
||||
|
||||
// *NOTE:Mani - for reference
|
||||
// LLNotifications::instance().add(notification_name, args, payload,
|
||||
// boost::bind(&LLLoginInstance::updateDialogCallback, this, _1, _2));
|
||||
|
||||
if(!mUpdateAppResponse)
|
||||
{
|
||||
bool make_unique = true;
|
||||
mUpdateAppResponse.reset(new LLEventStream("logininstance_updateapp", make_unique));
|
||||
mUpdateAppResponse->listen("diaupdateDialogCallback",
|
||||
boost::bind(&LLLoginInstance::updateDialogCallback,
|
||||
this, _1
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
LLSD event;
|
||||
event["op"] = "requestAdd";
|
||||
event["name"] = notification_name;
|
||||
event["substitutions"] = args;
|
||||
event["payload"] = payload;
|
||||
event["reply"] = mUpdateAppResponse->getName();
|
||||
|
||||
LLEventPumps::getInstance()->obtain("LLNotifications").post(event);
|
||||
}
|
||||
|
||||
bool LLLoginInstance::updateDialogCallback(const LLSD& notification, const LLSD& response)
|
||||
bool LLLoginInstance::updateDialogCallback(const LLSD& event)
|
||||
{
|
||||
LLSD notification = event["notification"];
|
||||
LLSD response = event["response"];
|
||||
S32 option = LLNotification::getSelectedOption(notification, response);
|
||||
std::string update_exe_path;
|
||||
bool mandatory = notification["payload"]["mandatory"].asBoolean();
|
||||
|
|
@ -395,114 +418,12 @@ bool LLLoginInstance::updateDialogCallback(const LLSD& notification, const LLSD&
|
|||
return false;
|
||||
}
|
||||
|
||||
LLSD query_map = LLSD::emptyMap();
|
||||
// *TODO place os string in a global constant
|
||||
#if LL_WINDOWS
|
||||
query_map["os"] = "win";
|
||||
#elif LL_DARWIN
|
||||
query_map["os"] = "mac";
|
||||
#elif LL_LINUX
|
||||
query_map["os"] = "lnx";
|
||||
#elif LL_SOLARIS
|
||||
query_map["os"] = "sol";
|
||||
#endif
|
||||
// *TODO change userserver to be grid on both viewer and sim, since
|
||||
// userserver no longer exists.
|
||||
query_map["userserver"] = LLViewerLogin::getInstance()->getGridLabel();
|
||||
query_map["channel"] = gSavedSettings.getString("VersionChannelName");
|
||||
// *TODO constantize this guy
|
||||
// *NOTE: This URL is also used in win_setup/lldownloader.cpp
|
||||
LLURI update_url = LLURI::buildHTTP("secondlife.com", 80, "update.php", query_map);
|
||||
|
||||
if(LLAppViewer::sUpdaterInfo)
|
||||
{
|
||||
delete LLAppViewer::sUpdaterInfo;
|
||||
}
|
||||
LLAppViewer::sUpdaterInfo = new LLAppViewer::LLUpdaterInfo() ;
|
||||
|
||||
#if LL_WINDOWS
|
||||
LLAppViewer::sUpdaterInfo->mUpdateExePath = gDirUtilp->getTempFilename();
|
||||
if (LLAppViewer::sUpdaterInfo->mUpdateExePath.empty())
|
||||
{
|
||||
delete LLAppViewer::sUpdaterInfo ;
|
||||
LLAppViewer::sUpdaterInfo = NULL ;
|
||||
|
||||
// We're hosed, bail
|
||||
LL_WARNS("AppInit") << "LLDir::getTempFilename() failed" << LL_ENDL;
|
||||
|
||||
attemptComplete();
|
||||
// *REMOVE:Mani - Saving for reference...
|
||||
// LLAppViewer::instance()->forceQuit();
|
||||
return false;
|
||||
}
|
||||
|
||||
LLAppViewer::sUpdaterInfo->mUpdateExePath += ".exe";
|
||||
|
||||
std::string updater_source = gDirUtilp->getAppRODataDir();
|
||||
updater_source += gDirUtilp->getDirDelimiter();
|
||||
updater_source += "updater.exe";
|
||||
|
||||
LL_DEBUGS("AppInit") << "Calling CopyFile source: " << updater_source
|
||||
<< " dest: " << LLAppViewer::sUpdaterInfo->mUpdateExePath
|
||||
<< LL_ENDL;
|
||||
|
||||
|
||||
if (!CopyFileA(updater_source.c_str(), LLAppViewer::sUpdaterInfo->mUpdateExePath.c_str(), FALSE))
|
||||
{
|
||||
delete LLAppViewer::sUpdaterInfo ;
|
||||
LLAppViewer::sUpdaterInfo = NULL ;
|
||||
|
||||
LL_WARNS("AppInit") << "Unable to copy the updater!" << LL_ENDL;
|
||||
attemptComplete();
|
||||
// *REMOVE:Mani - Saving for reference...
|
||||
// LLAppViewer::instance()->forceQuit();
|
||||
return false;
|
||||
}
|
||||
|
||||
// if a sim name was passed in via command line parameter (typically through a SLURL)
|
||||
if ( LLURLSimString::sInstance.mSimString.length() )
|
||||
{
|
||||
// record the location to start at next time
|
||||
gSavedSettings.setString( "NextLoginLocation", LLURLSimString::sInstance.mSimString );
|
||||
};
|
||||
|
||||
LLAppViewer::sUpdaterInfo->mParams << "-url \"" << update_url.asString() << "\"";
|
||||
|
||||
LL_DEBUGS("AppInit") << "Calling updater: " << LLAppViewer::sUpdaterInfo->mUpdateExePath << " " << LLAppViewer::sUpdaterInfo->mParams.str() << LL_ENDL;
|
||||
|
||||
//Explicitly remove the marker file, otherwise we pass the lock onto the child process and things get weird.
|
||||
LLAppViewer::instance()->removeMarkerFile(); // In case updater fails
|
||||
|
||||
// *NOTE:Mani The updater is spawned as the last thing before the WinMain exit.
|
||||
// see LLAppViewerWin32.cpp
|
||||
|
||||
#elif LL_DARWIN
|
||||
// if a sim name was passed in via command line parameter (typically through a SLURL)
|
||||
if ( LLURLSimString::sInstance.mSimString.length() )
|
||||
{
|
||||
// record the location to start at next time
|
||||
gSavedSettings.setString( "NextLoginLocation", LLURLSimString::sInstance.mSimString );
|
||||
};
|
||||
|
||||
LLAppViewer::sUpdaterInfo->mUpdateExePath = "'";
|
||||
LLAppViewer::sUpdaterInfo->mUpdateExePath += gDirUtilp->getAppRODataDir();
|
||||
LLAppViewer::sUpdaterInfo->mUpdateExePath += "/mac-updater.app/Contents/MacOS/mac-updater' -url \"";
|
||||
LLAppViewer::sUpdaterInfo->mUpdateExePath += update_url.asString();
|
||||
LLAppViewer::sUpdaterInfo->mUpdateExePath += "\" -name \"";
|
||||
LLAppViewer::sUpdaterInfo->mUpdateExePath += LLAppViewer::instance()->getSecondLifeTitle();
|
||||
LLAppViewer::sUpdaterInfo->mUpdateExePath += "\" &";
|
||||
|
||||
LL_DEBUGS("AppInit") << "Calling updater: " << LLAppViewer::sUpdaterInfo->mUpdateExePath << LL_ENDL;
|
||||
|
||||
// Run the auto-updater.
|
||||
system(LLAppViewer::sUpdaterInfo->mUpdateExePath.c_str()); /* Flawfinder: ignore */
|
||||
|
||||
#elif LL_LINUX || LL_SOLARIS
|
||||
OSMessageBox(LLTrans::getString("MBNoAutoUpdate"), LLStringUtil::null, OSMB_OK);
|
||||
#endif
|
||||
|
||||
// *REMOVE:Mani - Saving for reference...
|
||||
// LLAppViewer::instance()->forceQuit();
|
||||
if(mUpdaterLauncher)
|
||||
{
|
||||
mUpdaterLauncher();
|
||||
}
|
||||
|
||||
attemptComplete();
|
||||
|
||||
return false;
|
||||
}
|
||||
|
|
@ -526,4 +447,4 @@ std::string construct_start_string()
|
|||
start = gSavedSettings.getString("LoginLocation");
|
||||
}
|
||||
return start;
|
||||
}
|
||||
}
|
||||
|
|
@ -34,7 +34,9 @@
|
|||
#define LL_LLLOGININSTANCE_H
|
||||
|
||||
#include <boost/scoped_ptr.hpp>
|
||||
#include <boost/function.hpp>
|
||||
class LLLogin;
|
||||
class LLEventStream;
|
||||
|
||||
// This class hosts the login module and is used to
|
||||
// negotiate user authentication attempts.
|
||||
|
|
@ -49,16 +51,6 @@ public:
|
|||
void reconnect(); // reconnect using the current credentials.
|
||||
void disconnect();
|
||||
|
||||
// Set whether this class will drive user interaction.
|
||||
// If not, login failures like 'need tos agreement' will
|
||||
// end the login attempt.
|
||||
void setUserInteraction(bool state) { mUserInteraction = state; }
|
||||
bool getUserInteraction() { return mUserInteraction; }
|
||||
|
||||
// Whether to tell login to skip optional update request.
|
||||
// False by default.
|
||||
void setSkipOptionalUpdate(bool state) { mSkipOptionalUpdate = state; }
|
||||
|
||||
bool authFailure() { return mAttemptComplete && mLoginState == "offline"; }
|
||||
bool authSuccess() { return mAttemptComplete && mLoginState == "online"; }
|
||||
|
||||
|
|
@ -69,10 +61,25 @@ public:
|
|||
// Only valid when authSuccess == true.
|
||||
const F64 getLastTransferRateBPS() { return mTransferRate; }
|
||||
|
||||
// Set whether this class will drive user interaction.
|
||||
// If not, login failures like 'need tos agreement' will
|
||||
// end the login attempt.
|
||||
void setUserInteraction(bool state) { mUserInteraction = state; }
|
||||
bool getUserInteraction() { return mUserInteraction; }
|
||||
|
||||
// Whether to tell login to skip optional update request.
|
||||
// False by default.
|
||||
void setSkipOptionalUpdate(bool state) { mSkipOptionalUpdate = state; }
|
||||
void setSerialNumber(const std::string& sn) { mSerialNumber = sn; }
|
||||
void setLastExecEvent(int lee) { mLastExecEvent = lee; }
|
||||
|
||||
typedef boost::function<void()> UpdaterLauncherCallback;
|
||||
void setUpdaterLauncher(const UpdaterLauncherCallback& ulc) { mUpdaterLauncher = ulc; }
|
||||
|
||||
private:
|
||||
void constructAuthParams(const LLSD& credentials);
|
||||
void updateApp(bool mandatory, const std::string& message);
|
||||
bool updateDialogCallback(const LLSD& notification, const LLSD& response);
|
||||
bool updateDialogCallback(const LLSD& event);
|
||||
|
||||
bool handleLoginEvent(const LLSD& event);
|
||||
bool handleLoginFailure(const LLSD& event);
|
||||
|
|
@ -90,6 +97,10 @@ private:
|
|||
bool mSkipOptionalUpdate;
|
||||
bool mAttemptComplete;
|
||||
F64 mTransferRate;
|
||||
std::string mSerialNumber;
|
||||
int mLastExecEvent;
|
||||
UpdaterLauncherCallback mUpdaterLauncher;
|
||||
boost::scoped_ptr<LLEventStream> mUpdateAppResponse;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -432,8 +432,7 @@ BOOL LLPanelLogin::handleKeyHere(KEY key, MASK mask)
|
|||
if ( KEY_F2 == key )
|
||||
{
|
||||
llinfos << "Spawning floater TOS window" << llendl;
|
||||
LLFloaterTOS* tos_dialog = LLFloaterTOS::show(LLFloaterTOS::TOS_TOS,"", 0);
|
||||
tos_dialog->startModal();
|
||||
LLFloaterTOS::show(LLFloaterTOS::TOS_TOS,"", NULL);
|
||||
return TRUE;
|
||||
}
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -965,13 +965,17 @@ bool idle_startup()
|
|||
display_startup();
|
||||
|
||||
// Setting initial values...
|
||||
LLLoginInstance* login = LLLoginInstance::getInstance();
|
||||
if(gNoRender)
|
||||
{
|
||||
// HACK, skip optional updates if you're running drones
|
||||
LLLoginInstance::getInstance()->setSkipOptionalUpdate(true);
|
||||
login->setSkipOptionalUpdate(true);
|
||||
}
|
||||
|
||||
LLLoginInstance::getInstance()->setUserInteraction(show_connect_box);
|
||||
login->setUserInteraction(show_connect_box);
|
||||
login->setSerialNumber(LLAppViewer::instance()->getSerialNumber());
|
||||
login->setLastExecEvent(gLastExecEvent);
|
||||
login->setUpdaterLauncher(boost::bind(LLAppViewer::launchUpdater, LLAppViewer::instance()));
|
||||
|
||||
// This call to LLLoginInstance::connect() starts the
|
||||
// authentication process.
|
||||
|
|
@ -979,7 +983,7 @@ bool idle_startup()
|
|||
credentials["first"] = gFirstname;
|
||||
credentials["last"] = gLastname;
|
||||
credentials["passwd"] = gPassword;
|
||||
LLLoginInstance::getInstance()->connect(credentials);
|
||||
login->connect(credentials);
|
||||
|
||||
LLStartUp::setStartupState( STATE_LOGIN_PROCESS_RESPONSE );
|
||||
return FALSE;
|
||||
|
|
|
|||
|
|
@ -7103,7 +7103,7 @@ void force_error_bad_memory_access(void *)
|
|||
|
||||
void force_error_infinite_loop(void *)
|
||||
{
|
||||
LLAppViewer::instance()->forceErrorInifiniteLoop();
|
||||
LLAppViewer::instance()->forceErrorInfiniteLoop();
|
||||
}
|
||||
|
||||
void force_error_software_exception(void *)
|
||||
|
|
|
|||
Loading…
Reference in New Issue