diff options
| author | Loren Shih <seraph@lindenlab.com> | 2010-12-29 13:23:02 -0500 | 
|---|---|---|
| committer | Loren Shih <seraph@lindenlab.com> | 2010-12-29 13:23:02 -0500 | 
| commit | 5f99331f4a9ed5ed78af7b47bdad152949e63ec4 (patch) | |
| tree | 78aa91b7a1ac5f31a4e1de11f1a30d4b53561a05 /indra/llplugin | |
| parent | ed365b9c0eea12fa30629be7d26605b77eeedc05 (diff) | |
| parent | 087c105317058dc3a011c937a5aceaf87fdecc26 (diff) | |
Automated merge up from viewer-development
Diffstat (limited to 'indra/llplugin')
| -rw-r--r-- | indra/llplugin/CMakeLists.txt | 1 | ||||
| -rw-r--r-- | indra/llplugin/llpluginclassmedia.cpp | 57 | ||||
| -rw-r--r-- | indra/llplugin/llpluginclassmedia.h | 18 | ||||
| -rw-r--r-- | indra/llplugin/llpluginclassmediaowner.h | 6 | 
4 files changed, 78 insertions, 4 deletions
| diff --git a/indra/llplugin/CMakeLists.txt b/indra/llplugin/CMakeLists.txt index 26aa2c250b..2f28673c07 100644 --- a/indra/llplugin/CMakeLists.txt +++ b/indra/llplugin/CMakeLists.txt @@ -20,6 +20,7 @@ include_directories(      ${LLRENDER_INCLUDE_DIRS}      ${LLXML_INCLUDE_DIRS}      ${LLWINDOW_INCLUDE_DIRS} +    ${LLQTWEBKIT_INCLUDE_DIR}      )  set(llplugin_SOURCE_FILES diff --git a/indra/llplugin/llpluginclassmedia.cpp b/indra/llplugin/llpluginclassmedia.cpp index 69ed0fb09c..595c470a19 100644 --- a/indra/llplugin/llpluginclassmedia.cpp +++ b/indra/llplugin/llpluginclassmedia.cpp @@ -160,7 +160,7 @@ void LLPluginClassMedia::idle(void)  		mPlugin->idle();  	} -	if((mMediaWidth == -1) || (!mTextureParamsReceived) || (mPlugin == NULL) || (mPlugin->isBlocked())) +	if((mMediaWidth == -1) || (!mTextureParamsReceived) || (mPlugin == NULL) || (mPlugin->isBlocked()) || (mOwner == NULL))  	{  		// Can't process a size change at this time  	} @@ -522,7 +522,15 @@ bool LLPluginClassMedia::keyEvent(EKeyEventType type, int key_code, MASK modifie  			}  		break;  	} -	 + +#if LL_DARWIN	 +	if(modifiers & MASK_ALT) +	{ +		// Option-key modified characters should be handled by the unicode input path instead of this one. +		result = false; +	} +#endif +  	if(result)  	{  		LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "key_event"); @@ -674,7 +682,21 @@ void LLPluginClassMedia::sendPickFileResponse(const std::string &file)  {  	LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "pick_file_response");  	message.setValue("file", file); -	if(mPlugin->isBlocked()) +	if(mPlugin && mPlugin->isBlocked()) +	{ +		// If the plugin sent a blocking pick-file request, the response should unblock it. +		message.setValueBoolean("blocking_response", true); +	} +	sendMessage(message); +} + +void LLPluginClassMedia::sendAuthResponse(bool ok, const std::string &username, const std::string &password) +{ +	LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "auth_response"); +	message.setValueBoolean("ok", ok); +	message.setValue("username", username); +	message.setValue("password", password); +	if(mPlugin && mPlugin->isBlocked())  	{  		// If the plugin sent a blocking pick-file request, the response should unblock it.  		message.setValueBoolean("blocking_response", true); @@ -947,6 +969,12 @@ void LLPluginClassMedia::receivePluginMessage(const LLPluginMessage &message)  		{  			mediaEvent(LLPluginClassMediaOwner::MEDIA_EVENT_PICK_FILE_REQUEST);  		} +		else if(message_name == "auth_request") +		{ +			mAuthURL = message.getValue("url"); +			mAuthRealm = message.getValue("realm"); +			mediaEvent(LLPluginClassMediaOwner::MEDIA_EVENT_AUTH_REQUEST); +		}  		else  		{  			LL_WARNS("Plugin") << "Unknown " << message_name << " class message: " << message_name << LL_ENDL; @@ -1019,6 +1047,15 @@ void LLPluginClassMedia::receivePluginMessage(const LLPluginMessage &message)  			mediaEvent(LLPluginClassMediaOwner::MEDIA_EVENT_GEOMETRY_CHANGE);  		} +		else if(message_name == "link_hovered") +		{ +			// text is not currently used -- the tooltip hover text is taken from the "title". +			mHoverLink = message.getValue("link"); +			mHoverText = message.getValue("title"); +			// message.getValue("text"); +				 +			mediaEvent(LLPluginClassMediaOwner::MEDIA_EVENT_LINK_HOVERED); +		}  		else  		{  			LL_WARNS("Plugin") << "Unknown " << message_name << " class message: " << message_name << LL_ENDL; @@ -1192,6 +1229,20 @@ void LLPluginClassMedia::proxyWindowClosed(const std::string &uuid)  	sendMessage(message);  } +void LLPluginClassMedia::ignore_ssl_cert_errors(bool ignore) +{ +	LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "ignore_ssl_cert_errors"); +	message.setValueBoolean("ignore", ignore); +	sendMessage(message); +} + +void LLPluginClassMedia::addCertificateFilePath(const std::string& path) +{ +	LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "add_certificate_file_path"); +	message.setValue("path", path); +	sendMessage(message); +} +  void LLPluginClassMedia::crashPlugin()  {  	LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_INTERNAL, "crash"); diff --git a/indra/llplugin/llpluginclassmedia.h b/indra/llplugin/llpluginclassmedia.h index 9cb67fe909..c826e13c40 100644 --- a/indra/llplugin/llpluginclassmedia.h +++ b/indra/llplugin/llpluginclassmedia.h @@ -85,6 +85,8 @@ public:  	void setBackgroundColor(LLColor4 color) { mBackgroundColor = color; }; +	void setOwner(LLPluginClassMediaOwner *owner) { mOwner = owner; }; +	  	// Returns true if all of the texture parameters (depth, format, size, and texture size) are set up and consistent.  	// This will initially be false, and will also be false for some time after setSize while the resize is processed.  	// Note that if this returns true, it is safe to use all the get() functions above without checking for invalid return values @@ -159,6 +161,8 @@ public:  	void sendPickFileResponse(const std::string &file); +	void sendAuthResponse(bool ok, const std::string &username, const std::string &password); +  	// Valid after a MEDIA_EVENT_CURSOR_CHANGED event  	std::string getCursorName() const { return mCursorName; }; @@ -198,6 +202,8 @@ public:  	void setBrowserUserAgent(const std::string& user_agent);  	void proxyWindowOpened(const std::string &target, const std::string &uuid);  	void proxyWindowClosed(const std::string &uuid); +	void ignore_ssl_cert_errors(bool ignore); +	void addCertificateFilePath(const std::string& path);  	// This is valid after MEDIA_EVENT_NAVIGATE_BEGIN or MEDIA_EVENT_NAVIGATE_COMPLETE  	std::string	getNavigateURI() const { return mNavigateURI; }; @@ -231,7 +237,15 @@ public:  	S32 getGeometryY() const { return mGeometryY; };  	S32 getGeometryWidth() const { return mGeometryWidth; };  	S32 getGeometryHeight() const { return mGeometryHeight; }; +	 +	// These are valid during MEDIA_EVENT_AUTH_REQUEST +	std::string	getAuthURL() const { return mAuthURL; }; +	std::string	getAuthRealm() const { return mAuthRealm; }; +	// These are valid during MEDIA_EVENT_LINK_HOVERED +	std::string	getHoverText() const { return mHoverText; }; +	std::string	getHoverLink() const { return mHoverLink; }; +	  	std::string getMediaName() const { return mMediaName; };  	std::string getMediaDescription() const { return mMediaDescription; }; @@ -369,6 +383,10 @@ protected:  	S32				mGeometryY;  	S32				mGeometryWidth;  	S32				mGeometryHeight; +	std::string		mAuthURL; +	std::string		mAuthRealm; +	std::string		mHoverText; +	std::string		mHoverLink;  	/////////////////////////////////////////  	// media_time class diff --git a/indra/llplugin/llpluginclassmediaowner.h b/indra/llplugin/llpluginclassmediaowner.h index c9efff216c..42e93cc6d7 100644 --- a/indra/llplugin/llpluginclassmediaowner.h +++ b/indra/llplugin/llpluginclassmediaowner.h @@ -59,7 +59,11 @@ public:  		MEDIA_EVENT_GEOMETRY_CHANGE,		// The plugin requested its window geometry be changed (per the javascript window interface)  		MEDIA_EVENT_PLUGIN_FAILED_LAUNCH,	// The plugin failed to launch  -		MEDIA_EVENT_PLUGIN_FAILED			// The plugin died unexpectedly +		MEDIA_EVENT_PLUGIN_FAILED,			// The plugin died unexpectedly + +		MEDIA_EVENT_AUTH_REQUEST,			// The plugin wants to display an auth dialog + +		MEDIA_EVENT_LINK_HOVERED			// Got a "link hovered" event from the plugin  	} EMediaEvent; | 
