diff options
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/newview/CMakeLists.txt | 1 | ||||
| -rw-r--r-- | indra/newview/app_settings/cmd_line.xml | 3 | ||||
| -rw-r--r-- | indra/newview/app_settings/settings.xml | 11 | ||||
| -rw-r--r-- | indra/newview/llappviewer.cpp | 25 | ||||
| -rw-r--r-- | indra/newview/llcurrencyuimanager.cpp | 4 | ||||
| -rw-r--r-- | indra/newview/llfloaterabout.cpp | 4 | ||||
| -rw-r--r-- | indra/newview/lllogininstance.cpp | 5 | ||||
| -rw-r--r-- | indra/newview/llpanellogin.cpp | 4 | ||||
| -rw-r--r-- | indra/newview/llversioninfo.cpp | 37 | ||||
| -rw-r--r-- | indra/newview/llversioninfo.h | 7 | ||||
| -rw-r--r-- | indra/newview/llviewercontrol.cpp | 1 | ||||
| -rw-r--r-- | indra/newview/llviewercontrol.h | 2 | ||||
| -rw-r--r-- | indra/newview/llviewermedia.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/llviewerstats.cpp | 3 | ||||
| -rw-r--r-- | indra/newview/tests/lllogininstance_test.cpp | 9 | ||||
| -rw-r--r-- | indra/newview/tests/llversioninfo_test.cpp | 114 | 
16 files changed, 189 insertions, 43 deletions
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 63982ba87b..a488fb1069 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -1858,6 +1858,7 @@ if (LL_TESTS)      llmediadataclient.cpp      lllogininstance.cpp      llviewerhelputil.cpp +    llversioninfo.cpp    )    ################################################## diff --git a/indra/newview/app_settings/cmd_line.xml b/indra/newview/app_settings/cmd_line.xml index 00d69f805e..a17da8e344 100644 --- a/indra/newview/app_settings/cmd_line.xml +++ b/indra/newview/app_settings/cmd_line.xml @@ -361,8 +361,7 @@      <map>        <key>count</key>        <integer>1</integer> -      <key>map-to</key> -      <string>VersionChannelName</string> +      <!-- Special case. Not mapped to a setting. -->      </map>      <key>loginpage</key> diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 371326c0f5..96d4fb1295 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -11344,17 +11344,6 @@        <key>Value</key>        <integer>0</integer>      </map> -    <key>VersionChannelName</key> -    <map> -      <key>Comment</key> -      <string>Versioning Channel Name.</string> -      <key>Persist</key> -      <integer>0</integer> -      <key>Type</key> -      <string>String</string> -      <key>Value</key> -      <string>Second Life Release</string> -    </map>      <key>VertexShaderEnable</key>      <map>        <key>Comment</key> diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index e6feaae504..b122209af8 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -662,11 +662,6 @@ bool LLAppViewer::init()      initThreads();      writeSystemInfo(); -	// Build a string representing the current version number. -    gCurrentVersion = llformat("%s %s",  -							   gSavedSettings.getString("VersionChannelName").c_str(), -							   LLVersionInfo::getVersion().c_str()); -  	//////////////////////////////////////////////////////////////////////////////  	//////////////////////////////////////////////////////////////////////////////  	////////////////////////////////////////////////////////////////////////////// @@ -905,7 +900,8 @@ bool LLAppViewer::init()  	gDebugInfo["GraphicsCard"] = LLFeatureManager::getInstance()->getGPUString();  	// Save the current version to the prefs file -	gSavedSettings.setString("LastRunVersion", gCurrentVersion); +	gSavedSettings.setString("LastRunVersion",  +							 LLVersionInfo::getVersionAndChannel());  	gSimLastTime = gRenderStartTime.getElapsedTimeF32();  	gSimFrames = (F32)gFrameCount; @@ -1941,8 +1937,6 @@ bool LLAppViewer::initConfiguration()  	gSavedSettings.setString("ClientSettingsFile",           gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, getSettingsFilename("Default", "Global"))); -	gSavedSettings.setString("VersionChannelName", LLVersionInfo::getChannel()); -  #ifndef	LL_RELEASE_FOR_DOWNLOAD  	// provide developer build only overrides for these control variables that are not  	// persisted to settings.xml @@ -2074,6 +2068,11 @@ bool LLAppViewer::initConfiguration()          }      } +    if(clp.hasOption("channel")) +    { +		LLVersionInfo::resetChannel(clp.getOption("channel")[0]); +	} +	  	// If we have specified crash on startup, set the global so we'll trigger the crash at the right time  	if(clp.hasOption("crashonstartup")) @@ -2336,7 +2335,7 @@ void LLAppViewer::initUpdater()  	// Get Channel  	// Get Version  	std::string url = gSavedSettings.getString("UpdaterServiceURL"); -	std::string channel = gSavedSettings.getString("VersionChannelName"); +	std::string channel = LLVersionInfo::getChannel();  	std::string version = LLVersionInfo::getVersion();  	U32 check_period = gSavedSettings.getU32("UpdaterServiceCheckPeriod"); @@ -2538,7 +2537,7 @@ void LLAppViewer::writeSystemInfo()  {  	gDebugInfo["SLLog"] = LLError::logFileName(); -	gDebugInfo["ClientInfo"]["Name"] = gSavedSettings.getString("VersionChannelName"); +	gDebugInfo["ClientInfo"]["Name"] = LLVersionInfo::getChannel();  	gDebugInfo["ClientInfo"]["MajorVersion"] = LLVersionInfo::getMajor();  	gDebugInfo["ClientInfo"]["MinorVersion"] = LLVersionInfo::getMinor();  	gDebugInfo["ClientInfo"]["PatchVersion"] = LLVersionInfo::getPatch(); @@ -2636,7 +2635,7 @@ void LLAppViewer::handleViewerCrash()  	//We already do this in writeSystemInfo(), but we do it again here to make /sure/ we have a version  	//to check against no matter what -	gDebugInfo["ClientInfo"]["Name"] = gSavedSettings.getString("VersionChannelName"); +	gDebugInfo["ClientInfo"]["Name"] = LLVersionInfo::getChannel();  	gDebugInfo["ClientInfo"]["MajorVersion"] = LLVersionInfo::getMajor();  	gDebugInfo["ClientInfo"]["MinorVersion"] = LLVersionInfo::getMinor(); @@ -4363,7 +4362,7 @@ void LLAppViewer::handleLoginComplete()  	initMainloopTimeout("Mainloop Init");  	// Store some data to DebugInfo in case of a freeze. -	gDebugInfo["ClientInfo"]["Name"] = gSavedSettings.getString("VersionChannelName"); +	gDebugInfo["ClientInfo"]["Name"] = LLVersionInfo::getChannel();  	gDebugInfo["ClientInfo"]["MajorVersion"] = LLVersionInfo::getMajor();  	gDebugInfo["ClientInfo"]["MinorVersion"] = LLVersionInfo::getMinor(); @@ -4469,7 +4468,7 @@ void LLAppViewer::launchUpdater()  	// *TODO change userserver to be grid on both viewer and sim, since  	// userserver no longer exists.  	query_map["userserver"] = LLGridManager::getInstance()->getGridLabel(); -	query_map["channel"] = gSavedSettings.getString("VersionChannelName"); +	query_map["channel"] = LLVersionInfo::getChannel();  	// *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); diff --git a/indra/newview/llcurrencyuimanager.cpp b/indra/newview/llcurrencyuimanager.cpp index 2b92b228b3..b4a1457f47 100644 --- a/indra/newview/llcurrencyuimanager.cpp +++ b/indra/newview/llcurrencyuimanager.cpp @@ -166,7 +166,7 @@ void LLCurrencyUIManager::Impl::updateCurrencyInfo()  		gAgent.getSecureSessionID().asString());  	keywordArgs.appendString("language", LLUI::getLanguage());  	keywordArgs.appendInt("currencyBuy", mUserCurrencyBuy); -	keywordArgs.appendString("viewerChannel", gSavedSettings.getString("VersionChannelName")); +	keywordArgs.appendString("viewerChannel", LLVersionInfo::getChannel());  	keywordArgs.appendInt("viewerMajorVersion", LLVersionInfo::getMajor());  	keywordArgs.appendInt("viewerMinorVersion", LLVersionInfo::getMinor());  	keywordArgs.appendInt("viewerPatchVersion", LLVersionInfo::getPatch()); @@ -241,7 +241,7 @@ void LLCurrencyUIManager::Impl::startCurrencyBuy(const std::string& password)  	{  		keywordArgs.appendString("password", password);  	} -	keywordArgs.appendString("viewerChannel", gSavedSettings.getString("VersionChannelName")); +	keywordArgs.appendString("viewerChannel", LLVersionInfo::getChannel());  	keywordArgs.appendInt("viewerMajorVersion", LLVersionInfo::getMajor());  	keywordArgs.appendInt("viewerMinorVersion", LLVersionInfo::getMinor());  	keywordArgs.appendInt("viewerPatchVersion", LLVersionInfo::getPatch()); diff --git a/indra/newview/llfloaterabout.cpp b/indra/newview/llfloaterabout.cpp index 135137069c..8ae3ccbae3 100644 --- a/indra/newview/llfloaterabout.cpp +++ b/indra/newview/llfloaterabout.cpp @@ -213,7 +213,7 @@ LLSD LLFloaterAbout::getInfo()  	info["VIEWER_VERSION_STR"] = LLVersionInfo::getVersion();  	info["BUILD_DATE"] = __DATE__;  	info["BUILD_TIME"] = __TIME__; -	info["CHANNEL"] = gSavedSettings.getString("VersionChannelName"); +	info["CHANNEL"] = LLVersionInfo::getChannel();  	info["VIEWER_RELEASE_NOTES_URL"] = get_viewer_release_notes_url(); @@ -291,7 +291,7 @@ static std::string get_viewer_release_notes_url()  	std::string url = LLTrans::getString("RELEASE_NOTES_BASE_URL");  	if (! LLStringUtil::endsWith(url, "/"))  		url += "/"; -	url += gSavedSettings.getString("VersionChannelName") + "/"; +	url += LLVersionInfo::getChannel() + "/";  	url += LLVersionInfo::getShortVersion();  	return LLWeb::escapeURL(url);  } diff --git a/indra/newview/lllogininstance.cpp b/indra/newview/lllogininstance.cpp index 029e700c4c..fe84aca147 100644 --- a/indra/newview/lllogininstance.cpp +++ b/indra/newview/lllogininstance.cpp @@ -42,6 +42,7 @@  // newview  #include "llviewernetwork.h"  #include "llviewercontrol.h" +#include "llversioninfo.h"  #include "llslurl.h"  #include "llstartup.h"  #include "llfloaterreg.h" @@ -181,8 +182,8 @@ void LLLoginInstance::constructAuthParams(LLPointer<LLCredential> user_credentia  	request_params["read_critical"] = false; // handleTOSResponse  	request_params["last_exec_event"] = mLastExecEvent;  	request_params["mac"] = hashed_unique_id_string; -	request_params["version"] = gCurrentVersion; // Includes channel name -	request_params["channel"] = gSavedSettings.getString("VersionChannelName"); +	request_params["version"] = LLVersionInfo::getVersionAndChannel(); // Includes channel name +	request_params["channel"] = LLVersionInfo::getChannel();  	request_params["id0"] = mSerialNumber;  	mRequestData.clear(); diff --git a/indra/newview/llpanellogin.cpp b/indra/newview/llpanellogin.cpp index 467aefc60f..cf567fb208 100644 --- a/indra/newview/llpanellogin.cpp +++ b/indra/newview/llpanellogin.cpp @@ -230,7 +230,7 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect,  	getChild<LLPanel>("login")->setDefaultBtn("connect_btn"); -	std::string channel = gSavedSettings.getString("VersionChannelName"); +	std::string channel = LLVersionInfo::getChannel();  	std::string version = llformat("%s (%d)",  								   LLVersionInfo::getShortVersion().c_str(),  								   LLVersionInfo::getBuild()); @@ -817,7 +817,7 @@ void LLPanelLogin::loadLoginPage()  								   LLVersionInfo::getShortVersion().c_str(),  								   LLVersionInfo::getBuild()); -	char* curl_channel = curl_escape(gSavedSettings.getString("VersionChannelName").c_str(), 0); +	char* curl_channel = curl_escape(LLVersionInfo::getChannel().c_str(), 0);  	char* curl_version = curl_escape(version.c_str(), 0);  	oStr << "&channel=" << curl_channel; diff --git a/indra/newview/llversioninfo.cpp b/indra/newview/llversioninfo.cpp index 733d05834a..53994c68f2 100644 --- a/indra/newview/llversioninfo.cpp +++ b/indra/newview/llversioninfo.cpp @@ -95,9 +95,42 @@ const std::string &LLVersionInfo::getShortVersion()  	return version;  } +namespace +{ +	/// Storage of the channel name the viewer is using. +	//  The channel name is set by hardcoded constant,  +	//  or by calling LLVersionInfo::resetChannel() +	std::string sWorkingChannelName(LL_CHANNEL); + +	// Storage for the "version and channel" string. +	// This will get reset too. +	std::string sVersionChannel(""); +} + +//static +const std::string &LLVersionInfo::getVersionAndChannel() +{ +	if (sVersionChannel.empty()) +	{ +		// cache the version string +		std::ostringstream stream; +		stream << LLVersionInfo::getVersion()  +			   << " " +			   << LLVersionInfo::getChannel(); +		sVersionChannel = stream.str(); +	} + +	return sVersionChannel; +} +  //static  const std::string &LLVersionInfo::getChannel()  { -	static std::string name(LL_CHANNEL); -	return name; +	return sWorkingChannelName; +} + +void LLVersionInfo::resetChannel(const std::string& channel) +{ +	sWorkingChannelName = channel; +	sVersionChannel.clear(); // Reset version and channel string til next use.  } diff --git a/indra/newview/llversioninfo.h b/indra/newview/llversioninfo.h index e468b6ae4e..36defbcd68 100644 --- a/indra/newview/llversioninfo.h +++ b/indra/newview/llversioninfo.h @@ -58,8 +58,15 @@ public:  	/// return the viewer version as a string like "2.0.0"  	static const std::string &getShortVersion(); +	/// return the viewer version and channel as a string +	/// like "2.0.0.200030 Second Life Release" +	static const std::string &getVersionAndChannel(); +  	/// return the channel name, e.g. "Second Life"  	static const std::string &getChannel(); +	 +	/// reset the channel name used by the viewer. +	static void resetChannel(const std::string& channel);  };  #endif diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp index 522b5a7dfa..ebe9f7e275 100644 --- a/indra/newview/llviewercontrol.cpp +++ b/indra/newview/llviewercontrol.cpp @@ -82,7 +82,6 @@ LLControlGroup gCrashSettings("CrashSettings");	// saved at end of session  LLControlGroup gWarningSettings("Warnings"); // persists ignored dialogs/warnings  std::string gLastRunVersion; -std::string gCurrentVersion;  extern BOOL gResizeScreenTexture;  extern BOOL gDebugGL; diff --git a/indra/newview/llviewercontrol.h b/indra/newview/llviewercontrol.h index 22b48f8906..d7191f5c8d 100644 --- a/indra/newview/llviewercontrol.h +++ b/indra/newview/llviewercontrol.h @@ -57,7 +57,5 @@ extern LLControlGroup gCrashSettings;  // Set after settings loaded  extern std::string gLastRunVersion; -extern std::string gCurrentVersion; -  #endif // LL_LLVIEWERCONTROL_H diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index 48ab122edf..13fbce910b 100644 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -492,7 +492,7 @@ std::string LLViewerMedia::getCurrentUserAgent()  	// Just in case we need to check browser differences in A/B test  	// builds. -	std::string channel = gSavedSettings.getString("VersionChannelName"); +	std::string channel = LLVersionInfo::getChannel();  	// append our magic version number string to the browser user agent id  	// See the HTTP 1.0 and 1.1 specifications for allowed formats: diff --git a/indra/newview/llviewerstats.cpp b/indra/newview/llviewerstats.cpp index 42266ad233..3b7e44668d 100644 --- a/indra/newview/llviewerstats.cpp +++ b/indra/newview/llviewerstats.cpp @@ -48,6 +48,7 @@  #include "llagent.h"  #include "llagentcamera.h"  #include "llviewercontrol.h" +#include "llversioninfo.h"  #include "llfloatertools.h"  #include "lldebugview.h"  #include "llfasttimerview.h" @@ -749,7 +750,7 @@ void send_stats()  	// send fps only for time app spends in foreground  	agent["fps"] = (F32)gForegroundFrameCount / gForegroundTime.getElapsedTimeF32(); -	agent["version"] = gCurrentVersion; +	agent["version"] = LLVersionInfo::getVersionAndChannel();  	std::string language = LLUI::getLanguage();  	agent["language"] = language; diff --git a/indra/newview/tests/lllogininstance_test.cpp b/indra/newview/tests/lllogininstance_test.cpp index db50b89620..b902c7ab09 100644 --- a/indra/newview/tests/lllogininstance_test.cpp +++ b/indra/newview/tests/lllogininstance_test.cpp @@ -48,6 +48,9 @@ const std::string VIEWERLOGIN_GRIDLABEL("viewerlogin_grid");  const std::string APPVIEWER_SERIALNUMBER("appviewer_serialno"); +const std::string VIEWERLOGIN_CHANNEL("invalid_channel"); +const std::string VIEWERLOGIN_VERSION_CHANNEL("invalid_version"); +  // Link seams.  //----------------------------------------------------------------------------- @@ -160,7 +163,6 @@ std::string LLGridManager::getAppSLURLBase(const std::string& grid_name)  //-----------------------------------------------------------------------------  #include "../llviewercontrol.h"  LLControlGroup gSavedSettings("Global"); -std::string gCurrentVersion = "invalid_version";  LLControlGroup::LLControlGroup(const std::string& name) :  	LLInstanceTracker<LLControlGroup, std::string>(name){} @@ -177,6 +179,10 @@ BOOL LLControlGroup::declareString(const std::string& name, const std::string &i  #include "lluicolortable.h"  void LLUIColorTable::saveUserSettings(void)const {} +//----------------------------------------------------------------------------- +#include "../llversioninfo.h" +const std::string &LLVersionInfo::getVersionAndChannel() { return VIEWERLOGIN_VERSION_CHANNEL; } +const std::string &LLVersionInfo::getChannel() { return VIEWERLOGIN_CHANNEL; }  //-----------------------------------------------------------------------------  #include "llnotifications.h" @@ -290,7 +296,6 @@ namespace tut  			gSavedSettings.declareBOOL("UseDebugMenus", FALSE, "", FALSE);  			gSavedSettings.declareBOOL("ForceMandatoryUpdate", FALSE, "", FALSE);  			gSavedSettings.declareString("ClientSettingsFile", "test_settings.xml", "", FALSE); -			gSavedSettings.declareString("VersionChannelName", "test_version_string", "", FALSE);  			gSavedSettings.declareString("NextLoginLocation", "", "", FALSE);  			gSavedSettings.declareBOOL("LoginLastLocation", FALSE, "", FALSE); diff --git a/indra/newview/tests/llversioninfo_test.cpp b/indra/newview/tests/llversioninfo_test.cpp new file mode 100644 index 0000000000..b4f1b0273f --- /dev/null +++ b/indra/newview/tests/llversioninfo_test.cpp @@ -0,0 +1,114 @@ +/**  + * @file llversioninfo_test.cpp + * + * $LicenseInfo:firstyear=2010&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2010, Linden Research, Inc. + *  + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only. + *  + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU + * Lesser General Public License for more details. + *  + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA + *  + * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA + * $/LicenseInfo$ + */ + +#include "linden_common.h" + +#include "../test/lltut.h" + +#include "../llversioninfo.h" +#include "llversionviewer.h" + +namespace tut +{ +    struct versioninfo +    { +		versioninfo() +			: mResetChannel("Reset Channel") +		{ +			std::ostringstream stream; +			stream << LL_VERSION_MAJOR << "." +				   << LL_VERSION_MINOR << "." +				   << LL_VERSION_PATCH << "." +				   << LL_VERSION_BUILD; +			mVersion = stream.str(); +			stream.str(""); + +			stream << LL_VERSION_MAJOR << "." +				   << LL_VERSION_MINOR << "." +				   << LL_VERSION_PATCH; +			mShortVersion = stream.str(); +			stream.str(""); + +			stream << mVersion +				   << " " +				   << LL_CHANNEL; +			mVersionAndChannel = stream.str(); +			stream.str(""); + +			stream << mVersion +				   << " " +				   << mResetChannel; +			mResetVersionAndChannel = stream.str(); +		} +		std::string mResetChannel; +		std::string mVersion; +		std::string mShortVersion; +		std::string mVersionAndChannel; +		std::string mResetVersionAndChannel; +    }; +     +	typedef test_group<versioninfo> versioninfo_t; +	typedef versioninfo_t::object versioninfo_object_t; +	tut::versioninfo_t tut_versioninfo("LLVersionInfo"); + +	template<> template<> +	void versioninfo_object_t::test<1>() +	{ +		ensure_equals("Major version",  +					  LLVersionInfo::getMajor(),  +					  LL_VERSION_MAJOR); +		ensure_equals("Minor version",  +					  LLVersionInfo::getMinor(),  +					  LL_VERSION_MINOR); +		ensure_equals("Patch version",  +					  LLVersionInfo::getPatch(),  +					  LL_VERSION_PATCH); +		ensure_equals("Build version",  +					  LLVersionInfo::getBuild(),  +					  LL_VERSION_BUILD); +		ensure_equals("Channel version",  +					  LLVersionInfo::getChannel(),  +					  LL_CHANNEL); + +		ensure_equals("Version String",  +					  LLVersionInfo::getVersion(),  +					  mVersion); +		ensure_equals("Short Version String",  +					  LLVersionInfo::getShortVersion(),  +					  mShortVersion); +		ensure_equals("Version and channel String",  +					  LLVersionInfo::getVersionAndChannel(),  +					  mVersionAndChannel); + +		LLVersionInfo::resetChannel(mResetChannel); +		ensure_equals("Reset channel version",  +					  LLVersionInfo::getChannel(),  +					  mResetChannel); + +		ensure_equals("Reset Version and channel String",  +					  LLVersionInfo::getVersionAndChannel(),  +					  mResetVersionAndChannel); +	} +}
\ No newline at end of file  | 
