diff options
| author | Oz Linden <oz@lindenlab.com> | 2015-04-14 05:39:36 -0400 | 
|---|---|---|
| committer | Oz Linden <oz@lindenlab.com> | 2015-04-14 05:39:36 -0400 | 
| commit | 034fb74d05d25582ebdc086414cb0307b1e2e8e2 (patch) | |
| tree | d1c5e85e0f35782517921e1d80269cb23a511e97 | |
| parent | bef5a95cafdf6e20a243f4091b4fbcf426fb529b (diff) | |
| parent | 5a282abe184323643f1a88f2aba662648059b4e2 (diff) | |
merge changes for STORM-2113
| -rwxr-xr-x | doc/contributions.txt | 2 | ||||
| -rw-r--r-- | indra/llcommon/lluriparser.h | 2 | ||||
| -rwxr-xr-x | indra/llui/lltextbase.cpp | 1 | ||||
| -rwxr-xr-x | indra/llui/llurlentry.cpp | 22 | ||||
| -rwxr-xr-x | indra/llui/llurlentry.h | 4 | ||||
| -rwxr-xr-x | indra/llui/llurlregistry.cpp | 11 | ||||
| -rwxr-xr-x | indra/llui/llurlregistry.h | 1 | ||||
| -rwxr-xr-x | indra/newview/llweb.cpp | 19 | 
8 files changed, 29 insertions, 33 deletions
| diff --git a/doc/contributions.txt b/doc/contributions.txt index f7041c538e..211d4fcf08 100755 --- a/doc/contributions.txt +++ b/doc/contributions.txt @@ -327,6 +327,7 @@ Cinder Roxley      STORM-2036      STORM-2037      STORM-2053 +    STORM-2113  Clara Young  Coaldust Numbers      VWR-1095 @@ -1231,6 +1232,7 @@ Sovereign Engineer      MAINT-2334      OPEN-189      STORM-1972 +    STORM-2113      OPEN-195      OPEN-217      OPEN-295 diff --git a/indra/llcommon/lluriparser.h b/indra/llcommon/lluriparser.h index 561431e8f9..2df8085ae6 100644 --- a/indra/llcommon/lluriparser.h +++ b/indra/llcommon/lluriparser.h @@ -36,7 +36,7 @@ class LL_COMMON_API LLUriParser  {  public:  	LLUriParser(const std::string& u); -	virtual ~LLUriParser(); +	~LLUriParser();  	const char * scheme() const;  	void sheme (const std::string& s); diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp index 7ccb6055b3..602a703450 100755 --- a/indra/llui/lltextbase.cpp +++ b/indra/llui/lltextbase.cpp @@ -38,7 +38,6 @@  #include "lltextutil.h"  #include "lltooltip.h"  #include "lluictrl.h" -#include "lluriparser.h"  #include "llurlaction.h"  #include "llurlregistry.h"  #include "llview.h" diff --git a/indra/llui/llurlentry.cpp b/indra/llui/llurlentry.cpp index 65fbd9ba69..5f60d80858 100755 --- a/indra/llui/llurlentry.cpp +++ b/indra/llui/llurlentry.cpp @@ -39,8 +39,6 @@  #include "lluicolortable.h"  #include "message.h" -#include "uriparser/Uri.h" -  #define APP_HEADER_REGEX "((x-grid-location-info://[-\\w\\.]+/app)|(secondlife:///app))"  // Utility functions @@ -495,6 +493,17 @@ LLUrlEntrySecondlifeURL::LLUrlEntrySecondlifeURL()  	mIcon = "Hand";  	mMenuName = "menu_url_http.xml"; +	mTooltip = LLTrans::getString("TooltipHttpUrl"); +} + +/// Return the url from a string that matched the regex +std::string LLUrlEntrySecondlifeURL::getUrl(const std::string &string) const +{ +	if (string.find("://") == std::string::npos) +	{ +		return "https://" + escapeUrl(string); +	} +	return escapeUrl(string);  }  std::string LLUrlEntrySecondlifeURL::getLabel(const std::string &url, const LLUrlLabelCallback &cb) @@ -512,15 +521,6 @@ std::string LLUrlEntrySecondlifeURL::getTooltip(const std::string &url) const  	return url;  } -std::string LLUrlEntrySecondlifeURL::getUrl(const std::string &string) const -{ -	if (string.find("://") == std::string::npos) -	{ -		return "http://" + escapeUrl(string); -	} -	return escapeUrl(string); -} -  //  // LLUrlEntrySimpleSecondlifeURL Describes *secondlife.com and *lindenlab.com urls to substitute icon 'hand.png' before link  // diff --git a/indra/llui/llurlentry.h b/indra/llui/llurlentry.h index ddfc33ab78..60a494974f 100755 --- a/indra/llui/llurlentry.h +++ b/indra/llui/llurlentry.h @@ -199,11 +199,11 @@ class LLUrlEntrySecondlifeURL : public LLUrlEntryBase  {  public:  	LLUrlEntrySecondlifeURL(); -	bool isTrusted() const { return true; } +	/*virtual*/ bool isTrusted() const { return true; } +	/*virtual*/ std::string getUrl(const std::string &string) const;  	/*virtual*/ std::string getLabel(const std::string &url, const LLUrlLabelCallback &cb);  	/*virtual*/ std::string getQuery(const std::string &url) const;  	/*virtual*/ std::string getTooltip(const std::string &url) const; -	/*virtual*/ std::string getUrl(const std::string &string) const;  };  /// diff --git a/indra/llui/llurlregistry.cpp b/indra/llui/llurlregistry.cpp index 4fc79964e2..1143574968 100755 --- a/indra/llui/llurlregistry.cpp +++ b/indra/llui/llurlregistry.cpp @@ -220,9 +220,12 @@ bool LLUrlRegistry::findUrl(const std::string &text, LLUrlMatch &match, const LL  		// fill in the LLUrlMatch object and return it  		std::string url = text.substr(match_start, match_end - match_start + 1); -		LLUriParser up(url); -		up.normalize(); -		url = up.normalizedUri(); +		if (match_entry == mUrlEntryTrusted) +		{ +			LLUriParser up(url); +			up.normalize(); +			url = up.normalizedUri(); +		}  		match.setValues(match_start, match_end,  						match_entry->getUrl(url), @@ -255,7 +258,7 @@ bool LLUrlRegistry::findUrl(const LLWString &text, LLUrlMatch &match, const LLUr  		// character encoding, so we need to update the start  		// and end values to be correct for the wide string.  		LLWString wurl = utf8str_to_wstring(match.getUrl()); -		S32 start = text.find(wurl); +		size_t start = text.find(wurl);  		if (start == std::string::npos)  		{  			return false; diff --git a/indra/llui/llurlregistry.h b/indra/llui/llurlregistry.h index d85fbcb012..5ce4048d5d 100755 --- a/indra/llui/llurlregistry.h +++ b/indra/llui/llurlregistry.h @@ -93,6 +93,7 @@ private:  	friend class LLSingleton<LLUrlRegistry>;  	std::vector<LLUrlEntryBase *> mUrlEntry; +	LLUrlEntryBase*	mUrlEntryTrusted;  	LLUrlEntryBase*	mUrlEntryIcon;  	LLUrlEntryBase* mLLUrlEntryInvalidSLURL;  	LLUrlEntryBase* mUrlEntryHTTPLabel; diff --git a/indra/newview/llweb.cpp b/indra/newview/llweb.cpp index 0f0d9ce703..0be6e49834 100755 --- a/indra/newview/llweb.cpp +++ b/indra/newview/llweb.cpp @@ -49,7 +49,7 @@  #include "llviewerregion.h"  #include "llviewerwindow.h"  #include "llnotificationsutil.h" - +#include "lluriparser.h"  #include "uriparser/Uri.h"  #include <boost/regex.hpp> @@ -240,19 +240,10 @@ bool LLWeb::useExternalBrowser(const std::string &url)  	}  	else if (gSavedSettings.getU32("PreferredBrowserBehavior") == BROWSER_INT_LL_EXT_OTHERS)  	{ -		UriParserStateA state; -		UriUriA uri; -		state.uri = &uri; - -		std::string uri_string = url; -		uriParseUriA(&state, uri_string.c_str()); -		if (uri.hostText.first) -		{ -			S32 length = uri.hostText.afterLast - uri.hostText.first; -			std::string buf = uri.hostText.first; -			uri_string = buf.substr(0,length); -		} -		uriFreeUriMembersA(&uri); +		LLUriParser up(url); +		up.normalize(); +		up.extractParts(); +		std::string uri_string = up.host();  		boost::regex pattern = boost::regex("\\b(lindenlab.com|secondlife.com)$", boost::regex::perl|boost::regex::icase);  		boost::match_results<std::string::const_iterator> matches; | 
