diff options
| author | Lynx Linden <lynx@lindenlab.com> | 2010-01-14 18:42:29 +0000 | 
|---|---|---|
| committer | Lynx Linden <lynx@lindenlab.com> | 2010-01-14 18:42:29 +0000 | 
| commit | be8e6100a7862bfcb91797db69e8f0d42fff9cd1 (patch) | |
| tree | d44e43830f4fa21cf081ae3bbd6ad302d54690a5 | |
| parent | 556d5b8d5fdd442241ff8d81f76f9794bd536716 (diff) | |
| parent | caa9acaaed9c9be92c11002e1d09fbf3350ed0de (diff) | |
Automated merge with ssh://hg.lindenlab.com/viewer/viewer-2-0
| -rw-r--r-- | indra/llplugin/llpluginclassmedia.cpp | 28 | ||||
| -rw-r--r-- | indra/llplugin/llpluginclassmedia.h | 12 | ||||
| -rw-r--r-- | indra/media_plugins/webkit/media_plugin_webkit.cpp | 1 | ||||
| -rw-r--r-- | indra/newview/llfloaterabout.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/llmediactrl.cpp | 45 | ||||
| -rw-r--r-- | indra/newview/llmediactrl.h | 1 | ||||
| -rw-r--r-- | install.xml | 12 | 
7 files changed, 78 insertions, 23 deletions
| diff --git a/indra/llplugin/llpluginclassmedia.cpp b/indra/llplugin/llpluginclassmedia.cpp index 69f19afdad..3d2eaed5c5 100644 --- a/indra/llplugin/llpluginclassmedia.cpp +++ b/indra/llplugin/llpluginclassmedia.cpp @@ -37,6 +37,8 @@  #include "llpluginclassmedia.h"  #include "llpluginmessageclasses.h" +#include "llqtwebkit.h" +  static int LOW_PRIORITY_TEXTURE_SIZE_DEFAULT = 256;  static int nextPowerOf2( int value ) @@ -134,6 +136,9 @@ void LLPluginClassMedia::reset()  	mHistoryForwardAvailable = false;  	mStatusText.clear();  	mProgressPercent = 0;	 +	mClickURL.clear(); +	mClickTarget.clear(); +	mClickTargetType = TARGET_NONE;  	// media_time class  	mCurrentTime = 0.0f; @@ -669,6 +674,26 @@ void LLPluginClassMedia::paste()  	sendMessage(message);  } +LLPluginClassMedia::ETargetType getTargetTypeFromLLQtWebkit(int target_type) +{ +	// convert a LinkTargetType value from llqtwebkit to an ETargetType +	// so that we don't expose the llqtwebkit header in viewer code +	switch (target_type) +	{ +	case LinkTargetType::LTT_TARGET_NONE: +		return LLPluginClassMedia::TARGET_NONE; + +	case LinkTargetType::LTT_TARGET_BLANK: +		return LLPluginClassMedia::TARGET_BLANK; + +	case LinkTargetType::LTT_TARGET_EXTERNAL: +		return LLPluginClassMedia::TARGET_EXTERNAL; + +	default: +		return LLPluginClassMedia::TARGET_OTHER; +	} +} +  /* virtual */   void LLPluginClassMedia::receivePluginMessage(const LLPluginMessage &message)  { @@ -921,12 +946,15 @@ void LLPluginClassMedia::receivePluginMessage(const LLPluginMessage &message)  		{  			mClickURL = message.getValue("uri");  			mClickTarget = message.getValue("target"); +			U32 target_type = message.getValueU32("target_type"); +			mClickTargetType = ::getTargetTypeFromLLQtWebkit(target_type);  			mediaEvent(LLPluginClassMediaOwner::MEDIA_EVENT_CLICK_LINK_HREF);  		}  		else if(message_name == "click_nofollow")  		{  			mClickURL = message.getValue("uri");  			mClickTarget.clear(); +			mClickTargetType = TARGET_NONE;  			mediaEvent(LLPluginClassMediaOwner::MEDIA_EVENT_CLICK_LINK_NOFOLLOW);  		}  		else diff --git a/indra/llplugin/llpluginclassmedia.h b/indra/llplugin/llpluginclassmedia.h index 5a1928ab1d..ebb9099576 100644 --- a/indra/llplugin/llpluginclassmedia.h +++ b/indra/llplugin/llpluginclassmedia.h @@ -214,6 +214,17 @@ public:  	// This is valid after MEDIA_EVENT_CLICK_LINK_HREF  	std::string getClickTarget() const { return mClickTarget; }; +	typedef enum  +	{ +		TARGET_NONE,        // empty href target string +		TARGET_BLANK,       // target to open link in user's preferred browser +		TARGET_EXTERNAL,    // target to open link in external browser +		TARGET_OTHER        // nonempty and unsupported target type +	}ETargetType; + +	// This is valid after MEDIA_EVENT_CLICK_LINK_HREF +	ETargetType getClickTargetType() const { return mClickTargetType; }; +  	std::string getMediaName() const { return mMediaName; };  	std::string getMediaDescription() const { return mMediaDescription; }; @@ -344,6 +355,7 @@ protected:  	std::string		mLocation;  	std::string		mClickURL;  	std::string		mClickTarget; +	ETargetType     mClickTargetType;  	/////////////////////////////////////////  	// media_time class diff --git a/indra/media_plugins/webkit/media_plugin_webkit.cpp b/indra/media_plugins/webkit/media_plugin_webkit.cpp index a0336f6156..084cdd9561 100644 --- a/indra/media_plugins/webkit/media_plugin_webkit.cpp +++ b/indra/media_plugins/webkit/media_plugin_webkit.cpp @@ -429,6 +429,7 @@ private:  		LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "click_href");  		message.setValue("uri", event.getStringValue());  		message.setValue("target", event.getStringValue2()); +		message.setValueU32("target_type", event.getLinkType());  		sendMessage(message);  	} diff --git a/indra/newview/llfloaterabout.cpp b/indra/newview/llfloaterabout.cpp index aa343b2f69..ef69f39ad2 100644 --- a/indra/newview/llfloaterabout.cpp +++ b/indra/newview/llfloaterabout.cpp @@ -269,7 +269,7 @@ LLSD LLFloaterAbout::getInfo()  	info["VIVOX_VERSION"] = gVoiceClient ? gVoiceClient->getAPIVersion() : LLTrans::getString("NotConnected");  	// TODO: Implement media plugin version query -	info["QT_WEBKIT_VERSION"] = "4.5.2 (version number hard-coded)"; +	info["QT_WEBKIT_VERSION"] = "4.6 (version number hard-coded)";  	if (gPacketsIn > 0)  	{ diff --git a/indra/newview/llmediactrl.cpp b/indra/newview/llmediactrl.cpp index 6b0f9b709d..87ebce1d34 100644 --- a/indra/newview/llmediactrl.cpp +++ b/indra/newview/llmediactrl.cpp @@ -84,7 +84,6 @@ LLMediaCtrl::LLMediaCtrl( const Params& p) :  	mHomePageUrl( "" ),  	mIgnoreUIScale( true ),  	mAlwaysRefresh( false ), -	mExternalUrl( "" ),  	mMediaSource( 0 ),  	mTakeFocusOnClick( true ),  	mCurrentNavUrl( "" ), @@ -877,9 +876,27 @@ bool LLMediaCtrl::onClickLinkExternalTarget(const LLSD& notification, const LLSD  	S32 option = LLNotificationsUtil::getSelectedOption(notification, response);  	if ( 0 == option )  	{ -		// open in external browser because we don't support  -		// creation of our own secondary browser windows -		LLWeb::loadURLExternal( notification["payload"]["external_url"].asString() ); +		LLSD payload = notification["payload"]; +		std::string url = payload["url"].asString(); +		S32 target_type = payload["target_type"].asInteger(); + +		switch (target_type) +		{ +		case LLPluginClassMedia::TARGET_EXTERNAL: +			// load target in an external browser +			LLWeb::loadURLExternal(url); +			break; + +		case LLPluginClassMedia::TARGET_BLANK: +			// load target in the user's preferred browser +			LLWeb::loadURL(url); +			break; + +		default: +			// unsupported link target - shouldn't happen +			LL_WARNS("LinkTarget") << "Unsupported link target type" << LL_ENDL; +			break; +		}  	}  	return false;  } @@ -993,20 +1010,18 @@ void LLMediaCtrl::handleMediaEvent(LLPluginClassMedia* self, EMediaEvent event)  void LLMediaCtrl::onClickLinkHref( LLPluginClassMedia* self )  {  	// retrieve the event parameters -	std::string target = self->getClickTarget();  	std::string url = self->getClickURL(); +	U32 target_type = self->getClickTargetType(); -	// if there is a value for the target -	if ( !target.empty() ) +	// is there is a target specified for the link? +	if (target_type == LLPluginClassMedia::TARGET_EXTERNAL || +		target_type == LLPluginClassMedia::TARGET_BLANK)  	{ -		if ( target == "_external" )		 -		{ -			mExternalUrl = url; -			LLSD payload; -			payload["external_url"] = mExternalUrl; -			LLNotificationsUtil::add( "WebLaunchExternalTarget", LLSD(), payload, onClickLinkExternalTarget); -			return; -		} +		LLSD payload; +		payload["url"] = url; +		payload["target_type"] = LLSD::Integer(target_type); +		LLNotificationsUtil::add( "WebLaunchExternalTarget", LLSD(), payload, onClickLinkExternalTarget); +		return;  	}  	const std::string protocol1( "http://" ); diff --git a/indra/newview/llmediactrl.h b/indra/newview/llmediactrl.h index 8f9e6e7179..b0aca3cfa4 100644 --- a/indra/newview/llmediactrl.h +++ b/indra/newview/llmediactrl.h @@ -182,7 +182,6 @@ public:  		bool mOpenLinksInInternalBrowser;  		bool mTrusted;  		std::string mHomePageUrl; -		std::string mExternalUrl;  		std::string mCurrentNavUrl;  		bool mIgnoreUIScale;  		bool mAlwaysRefresh; diff --git a/install.xml b/install.xml index 62a1061049..aa25744f15 100644 --- a/install.xml +++ b/install.xml @@ -948,23 +948,23 @@ anguage Infrstructure (CLI) international standard</string>            <key>darwin</key>            <map>              <key>md5sum</key> -            <string>5362a53488693f9bd7d9083758af25eb</string> +            <string>2eb58f544c0d912aa382de2c947be7f1</string>              <key>url</key> -            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-4.6-darwin-20091218.tar.bz2</uri> +            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-4.6-darwin-20100104.tar.bz2</uri>            </map>            <key>linux</key>            <map>              <key>md5sum</key> -            <string>09674cbae982e7e7f6ebc7e1d06580e8</string> +            <string>c4c40fca14a8bd32096f8a27c75c526f</string>              <key>url</key> -            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-linux-20091216.tar.bz2</uri> +            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-linux-20100105c.tar.bz2</uri>            </map>            <key>windows</key>            <map>              <key>md5sum</key> -            <string>4dd305f2ce38b2e55a2014ad3a2de34d</string> +            <string>b50db4fdb833111e1e679188e4cb5815</string>              <key>url</key> -            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-windows-qt4.6-20091218.tar.bz2</uri> +            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-windows-qt4.6-20100104.tar.bz2</uri>            </map>          </map>        </map> | 
