diff options
| author | callum_linden <none@none> | 2015-12-15 15:24:41 -0800 | 
|---|---|---|
| committer | callum_linden <none@none> | 2015-12-15 15:24:41 -0800 | 
| commit | 3bf8929d932a6253177be55766cd2a80bb6e224d (patch) | |
| tree | 316d7c3231e370ed7a786cc23f3a6a9709110ce3 /indra | |
| parent | 3e46058651570f8e3a8cd20b597544bb07fea0a9 (diff) | |
MAINT-5966 - file download failures need feedback
Diffstat (limited to 'indra')
| -rwxr-xr-x | indra/llplugin/llpluginclassmedia.cpp | 5 | ||||
| -rwxr-xr-x | indra/llplugin/llpluginclassmedia.h | 5 | ||||
| -rwxr-xr-x | indra/llplugin/llpluginclassmediaowner.h | 2 | ||||
| -rw-r--r-- | indra/media_plugins/cef/media_plugin_cef.cpp | 14 | ||||
| -rwxr-xr-x | indra/newview/llmediactrl.cpp | 8 | ||||
| -rwxr-xr-x | indra/newview/llviewermedia.cpp | 7 | ||||
| -rwxr-xr-x | indra/newview/skins/default/xui/en/notifications.xml | 17 | 
7 files changed, 56 insertions, 2 deletions
| diff --git a/indra/llplugin/llpluginclassmedia.cpp b/indra/llplugin/llpluginclassmedia.cpp index 4965d7ce08..3d173d0459 100755 --- a/indra/llplugin/llpluginclassmedia.cpp +++ b/indra/llplugin/llpluginclassmedia.cpp @@ -1090,6 +1090,11 @@ void LLPluginClassMedia::receivePluginMessage(const LLPluginMessage &message)  			mAuthRealm = message.getValue("realm");  			mediaEvent(LLPluginClassMediaOwner::MEDIA_EVENT_AUTH_REQUEST);  		} +		else if (message_name == "file_download") +		{ +			mFileDownloadFilename = message.getValue("filename"); +			mediaEvent(LLPluginClassMediaOwner::MEDIA_EVENT_FILE_DOWNLOAD); +		}  		else if(message_name == "debug_message")  		{  			mDebugMessageText = message.getValue("message_text"); diff --git a/indra/llplugin/llpluginclassmedia.h b/indra/llplugin/llpluginclassmedia.h index 62652da9bc..fc27b7bea3 100755 --- a/indra/llplugin/llpluginclassmedia.h +++ b/indra/llplugin/llpluginclassmedia.h @@ -279,6 +279,10 @@ public:  	std::string	getHoverText() const { return mHoverText; };  	std::string	getHoverLink() const { return mHoverLink; }; +	// these are valid during MEDIA_EVENT_LINK_HOVERED  +	std::string getFileDownloadFilename() const { return mFileDownloadFilename; } + +  	const std::string& getMediaName() const { return mMediaName; };  	std::string getMediaDescription() const { return mMediaDescription; }; @@ -426,6 +430,7 @@ protected:  	std::string		mAuthRealm;  	std::string		mHoverText;  	std::string		mHoverLink; +	std::string     mFileDownloadFilename;  	/////////////////////////////////////////  	// media_time class diff --git a/indra/llplugin/llpluginclassmediaowner.h b/indra/llplugin/llpluginclassmediaowner.h index 2f3edba7f3..391c23d883 100755 --- a/indra/llplugin/llpluginclassmediaowner.h +++ b/indra/llplugin/llpluginclassmediaowner.h @@ -64,6 +64,8 @@ public:  		MEDIA_EVENT_AUTH_REQUEST,			// The plugin wants to display an auth dialog +		MEDIA_EVENT_FILE_DOWNLOAD,			// the plugin wants to download a file +  		MEDIA_EVENT_DEBUG_MESSAGE,			// plugin sending back debug information for host to process  		MEDIA_EVENT_LINK_HOVERED			// Got a "link hovered" event from the plugin diff --git a/indra/media_plugins/cef/media_plugin_cef.cpp b/indra/media_plugins/cef/media_plugin_cef.cpp index 19df1fa640..a2479cc946 100644 --- a/indra/media_plugins/cef/media_plugin_cef.cpp +++ b/indra/media_plugins/cef/media_plugin_cef.cpp @@ -68,6 +68,7 @@ private:  	void onNavigateURLCallback(std::string url, std::string target);  	bool onHTTPAuthCallback(const std::string host, const std::string realm, std::string& username, std::string& password);  	void onCursorChangedCallback(LLCEFLib::ECursorType type, unsigned int handle); +	void onFileDownloadCallback(std::string filename);  	void postDebugMessage(const std::string& msg);  	void authResponse(LLPluginMessage &message); @@ -292,6 +293,18 @@ bool MediaPluginCEF::onHTTPAuthCallback(const std::string host, const std::strin  	return mAuthOK;  } +//////////////////////////////////////////////////////////////////////////////// +// +void MediaPluginCEF::onFileDownloadCallback(const std::string filename) +{ +	mAuthOK = false; + +	LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "file_download"); +	message.setValue("filename", filename); + +	sendMessage(message); +} +  void MediaPluginCEF::onCursorChangedCallback(LLCEFLib::ECursorType type, unsigned int handle)  {  	std::string name = ""; @@ -425,6 +438,7 @@ void MediaPluginCEF::receiveMessage(const char* message_string)  				mLLCEFLib->setOnAddressChangeCallback(boost::bind(&MediaPluginCEF::onAddressChangeCallback, this, _1));  				mLLCEFLib->setOnNavigateURLCallback(boost::bind(&MediaPluginCEF::onNavigateURLCallback, this, _1, _2));  				mLLCEFLib->setOnHTTPAuthCallback(boost::bind(&MediaPluginCEF::onHTTPAuthCallback, this, _1, _2, _3, _4)); +				mLLCEFLib->setOnFileDownloadCallback(boost::bind(&MediaPluginCEF::onFileDownloadCallback, this, _1));  				mLLCEFLib->setOnCursorChangedCallback(boost::bind(&MediaPluginCEF::onCursorChangedCallback, this, _1, _2));  				mLLCEFLib->setOnRequestExitCallback(boost::bind(&MediaPluginCEF::onRequestExitCallback, this)); diff --git a/indra/newview/llmediactrl.cpp b/indra/newview/llmediactrl.cpp index 9b8e24a8e8..9cf3249983 100755 --- a/indra/newview/llmediactrl.cpp +++ b/indra/newview/llmediactrl.cpp @@ -57,6 +57,7 @@  #include "llbutton.h"  #include "llcheckboxctrl.h"  #include "llnotifications.h" +#include "llnotificationsutil.h"  #include "lllineeditor.h"  #include "llfloaterwebcontent.h"  #include "llwindowshade.h" @@ -1093,6 +1094,13 @@ void LLMediaCtrl::handleMediaEvent(LLPluginClassMedia* self, EMediaEvent event)  		};  		break; +		case MEDIA_EVENT_FILE_DOWNLOAD: +		{ +			//llinfos << "Media event - file download requested - filename is " << self->getFileDownloadFilename() << llendl; +			//LLNotificationsUtil::add("MediaFileDownloadUnsupported"); +		}; +		break; +  		case MEDIA_EVENT_DEBUG_MESSAGE:  		{  			LL_INFOS("media") << self->getDebugMessageText() << LL_ENDL;  diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index ab685205cf..ffae3c0e1f 100755 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -3300,6 +3300,13 @@ void LLViewerMediaImpl::handleMediaEvent(LLPluginClassMedia* plugin, LLPluginCla  		}  		break; +		case LLViewerMediaObserver::MEDIA_EVENT_FILE_DOWNLOAD: +		{ +			//llinfos << "Media event - file download requested - filename is " << self->getFileDownloadFilename() << llendl; +			LLNotificationsUtil::add("MediaFileDownloadUnsupported"); +		} +		break; +  		case LLViewerMediaObserver::MEDIA_EVENT_NAVIGATE_BEGIN:  		{  			LL_DEBUGS("Media") << "MEDIA_EVENT_NAVIGATE_BEGIN, uri is: " << plugin->getNavigateURI() << LL_ENDL; diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index 70ba4d5077..b4c5cba1fd 100755 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -1592,11 +1592,24 @@ The object may be out of range or may have been deleted.     icon="alertmodal.tga"     name="CannotDownloadFile"     type="alertmodal"> -Unable to download file -  <tag>fail</tag> +    Unable to download file +    <tag>fail</tag>    </notification>    <notification +  name="MediaFileDownloadUnsupported" +  label="" +  type="alert"> +    <unique/> +    <tag>confirm</tag> +    You have requested a file download, which is not supported within [SECOND_LIFE]. +    <usetemplate +     ignoretext="Warn about unsupported file downloads" +     name="okignore" +     yestext="OK"/> +  </notification> +   +  <notification     icon="alertmodal.tga"     name="CannotWriteFile"     type="alertmodal"> | 
