diff options
Diffstat (limited to 'indra/llplugin')
25 files changed, 79 insertions, 34 deletions
| diff --git a/indra/llplugin/CMakeLists.txt b/indra/llplugin/CMakeLists.txt index 441becbae0..441becbae0 100755..100644 --- a/indra/llplugin/CMakeLists.txt +++ b/indra/llplugin/CMakeLists.txt diff --git a/indra/llplugin/llpluginclassmedia.cpp b/indra/llplugin/llpluginclassmedia.cpp index 41ace62964..f2a4705717 100755..100644 --- a/indra/llplugin/llpluginclassmedia.cpp +++ b/indra/llplugin/llpluginclassmedia.cpp @@ -79,6 +79,7 @@ bool LLPluginClassMedia::init(const std::string &launcher_filename, const std::s  	// Queue up the media init message -- it will be sent after all the currently queued messages.  	LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "init"); +	message.setValue("target", mTarget);  	sendMessage(message);  	mPlugin->init(launcher_filename, plugin_filename, debug); @@ -148,7 +149,7 @@ void LLPluginClassMedia::reset()  	mProgressPercent = 0;	  	mClickURL.clear();  	mClickTarget.clear(); -	mClickTargetType = TARGET_NONE; +	mClickUUID.clear();  	// media_time class  	mCurrentTime = 0.0f; @@ -674,6 +675,18 @@ F64 LLPluginClassMedia::getCPUUsage()  	return result;  } +void LLPluginClassMedia::sendPickFileResponse(const std::string &file) +{ +	LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "pick_file_response"); +	message.setValue("file", file); +	if(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::cut()  {  	LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "edit_cut"); @@ -720,24 +733,9 @@ void LLPluginClassMedia::setJavascriptEnabled(const bool enabled)  	sendMessage(message);  } -LLPluginClassMedia::ETargetType getTargetTypeFromLLQtWebkit(int target_type) +void LLPluginClassMedia::setTarget(const std::string &target)  { -	// 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 LLQtWebKit::LTT_TARGET_NONE: -		return LLPluginClassMedia::TARGET_NONE; - -	case LLQtWebKit::LTT_TARGET_BLANK: -		return LLPluginClassMedia::TARGET_BLANK; - -	case LLQtWebKit::LTT_TARGET_EXTERNAL: -		return LLPluginClassMedia::TARGET_EXTERNAL; - -	default: -		return LLPluginClassMedia::TARGET_OTHER; -	} +	mTarget = target;  }  /* virtual */  @@ -950,6 +948,10 @@ void LLPluginClassMedia::receivePluginMessage(const LLPluginMessage &message)  			mMediaName = message.getValue("name");  			mediaEvent(LLPluginClassMediaOwner::MEDIA_EVENT_NAME_CHANGED);  		} +		else if(message_name == "pick_file") +		{ +			mediaEvent(LLPluginClassMediaOwner::MEDIA_EVENT_PICK_FILE_REQUEST); +		}  		else  		{  			LL_WARNS("Plugin") << "Unknown " << message_name << " class message: " << message_name << LL_ENDL; @@ -992,15 +994,13 @@ 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); +			mClickUUID = message.getValue("uuid");  			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 if(message_name == "cookie_set") @@ -1010,6 +1010,20 @@ void LLPluginClassMedia::receivePluginMessage(const LLPluginMessage &message)  				mOwner->handleCookieSet(this, message.getValue("cookie"));  			}  		} +		else if(message_name == "close_request") +		{ +			mediaEvent(LLPluginClassMediaOwner::MEDIA_EVENT_CLOSE_REQUEST); +		} +		else if(message_name == "geometry_change") +		{ +			mClickUUID = message.getValue("uuid"); +			mGeometryX = message.getValueS32("x"); +			mGeometryY = message.getValueS32("y"); +			mGeometryWidth = message.getValueS32("width"); +			mGeometryHeight = message.getValueS32("height"); +				 +			mediaEvent(LLPluginClassMediaOwner::MEDIA_EVENT_GEOMETRY_CHANGE); +		}  		else  		{  			LL_WARNS("Plugin") << "Unknown " << message_name << " class message: " << message_name << LL_ENDL; @@ -1164,6 +1178,25 @@ void LLPluginClassMedia::setBrowserUserAgent(const std::string& user_agent)  	sendMessage(message);  } +void LLPluginClassMedia::proxyWindowOpened(const std::string &target, const std::string &uuid) +{ +	LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "proxy_window_opened"); + +	message.setValue("target", target); +	message.setValue("uuid", uuid); + +	sendMessage(message); +} + +void LLPluginClassMedia::proxyWindowClosed(const std::string &uuid) +{ +	LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "proxy_window_closed"); + +	message.setValue("uuid", uuid); + +	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 66853c9940..0e086eb4fb 100755..100644 --- a/indra/llplugin/llpluginclassmedia.h +++ b/indra/llplugin/llpluginclassmedia.h @@ -161,6 +161,8 @@ public:  	void setLowPrioritySizeLimit(int size);  	F64 getCPUUsage(); +	 +	void sendPickFileResponse(const std::string &file);  	// Valid after a MEDIA_EVENT_CURSOR_CHANGED event  	std::string getCursorName() const { return mCursorName; }; @@ -181,7 +183,8 @@ public:  	void	setLanguageCode(const std::string &language_code);  	void	setPluginsEnabled(const bool enabled);  	void	setJavascriptEnabled(const bool enabled); -		 +	void	setTarget(const std::string &target); +	  	///////////////////////////////////  	// media browser class functions  	bool pluginSupportsMediaBrowser(void); @@ -198,6 +201,8 @@ public:  	void browse_back();  	void set_status_redirect(int code, const std::string &url);  	void setBrowserUserAgent(const std::string& user_agent); +	void proxyWindowOpened(const std::string &target, const std::string &uuid); +	void proxyWindowClosed(const std::string &uuid);  	// This is valid after MEDIA_EVENT_NAVIGATE_BEGIN or MEDIA_EVENT_NAVIGATE_COMPLETE  	std::string	getNavigateURI() const { return mNavigateURI; }; @@ -223,16 +228,14 @@ 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; }; +	// This is valid during MEDIA_EVENT_CLICK_LINK_HREF and MEDIA_EVENT_GEOMETRY_CHANGE +	std::string getClickUUID() const { return mClickUUID; }; +	 +	// These are valid during MEDIA_EVENT_GEOMETRY_CHANGE +	S32 getGeometryX() const { return mGeometryX; }; +	S32 getGeometryY() const { return mGeometryY; }; +	S32 getGeometryWidth() const { return mGeometryWidth; }; +	S32 getGeometryHeight() const { return mGeometryHeight; };  	std::string getMediaName() const { return mMediaName; };  	std::string getMediaDescription() const { return mMediaDescription; }; @@ -352,6 +355,8 @@ protected:  	LLColor4		mBackgroundColor; +	std::string		mTarget; +	  	/////////////////////////////////////////  	// media_browser class  	std::string		mNavigateURI; @@ -364,7 +369,11 @@ protected:  	std::string		mLocation;  	std::string		mClickURL;  	std::string		mClickTarget; -	ETargetType     mClickTargetType; +	std::string		mClickUUID; +	S32				mGeometryX; +	S32				mGeometryY; +	S32				mGeometryWidth; +	S32				mGeometryHeight;  	/////////////////////////////////////////  	// media_time class diff --git a/indra/llplugin/llpluginclassmediaowner.h b/indra/llplugin/llpluginclassmediaowner.h index 5669b81fd1..334c72fd8c 100755..100644 --- a/indra/llplugin/llpluginclassmediaowner.h +++ b/indra/llplugin/llpluginclassmediaowner.h @@ -59,6 +59,9 @@ public:  		MEDIA_EVENT_LOCATION_CHANGED,		// browser location (URL) has changed (maybe due to internal navagation/frames/etc)  		MEDIA_EVENT_CLICK_LINK_HREF,		// I'm not entirely sure what the semantics of these two are  		MEDIA_EVENT_CLICK_LINK_NOFOLLOW, +		MEDIA_EVENT_CLOSE_REQUEST,			// The plugin requested its window be closed (currently hooked up to javascript window.close in webkit) +		MEDIA_EVENT_PICK_FILE_REQUEST,		// The plugin wants the user to pick a file +		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 diff --git a/indra/llplugin/llplugincookiestore.cpp b/indra/llplugin/llplugincookiestore.cpp index da770c5f2e..da770c5f2e 100755..100644 --- a/indra/llplugin/llplugincookiestore.cpp +++ b/indra/llplugin/llplugincookiestore.cpp diff --git a/indra/llplugin/llplugincookiestore.h b/indra/llplugin/llplugincookiestore.h index a93f0c14f0..a93f0c14f0 100755..100644 --- a/indra/llplugin/llplugincookiestore.h +++ b/indra/llplugin/llplugincookiestore.h diff --git a/indra/llplugin/llplugininstance.cpp b/indra/llplugin/llplugininstance.cpp index 44e3b4950f..44e3b4950f 100755..100644 --- a/indra/llplugin/llplugininstance.cpp +++ b/indra/llplugin/llplugininstance.cpp diff --git a/indra/llplugin/llplugininstance.h b/indra/llplugin/llplugininstance.h index c11d5ab5d4..c11d5ab5d4 100755..100644 --- a/indra/llplugin/llplugininstance.h +++ b/indra/llplugin/llplugininstance.h diff --git a/indra/llplugin/llpluginmessage.cpp b/indra/llplugin/llpluginmessage.cpp index f76d848a70..f76d848a70 100755..100644 --- a/indra/llplugin/llpluginmessage.cpp +++ b/indra/llplugin/llpluginmessage.cpp diff --git a/indra/llplugin/llpluginmessage.h b/indra/llplugin/llpluginmessage.h index cbd31e0964..cbd31e0964 100755..100644 --- a/indra/llplugin/llpluginmessage.h +++ b/indra/llplugin/llpluginmessage.h diff --git a/indra/llplugin/llpluginmessageclasses.h b/indra/llplugin/llpluginmessageclasses.h index 01fddb92c5..01fddb92c5 100755..100644 --- a/indra/llplugin/llpluginmessageclasses.h +++ b/indra/llplugin/llpluginmessageclasses.h diff --git a/indra/llplugin/llpluginmessagepipe.cpp b/indra/llplugin/llpluginmessagepipe.cpp index 89f8b44569..89f8b44569 100755..100644 --- a/indra/llplugin/llpluginmessagepipe.cpp +++ b/indra/llplugin/llpluginmessagepipe.cpp diff --git a/indra/llplugin/llpluginmessagepipe.h b/indra/llplugin/llpluginmessagepipe.h index 1b0a08254b..1b0a08254b 100755..100644 --- a/indra/llplugin/llpluginmessagepipe.h +++ b/indra/llplugin/llpluginmessagepipe.h diff --git a/indra/llplugin/llpluginprocesschild.cpp b/indra/llplugin/llpluginprocesschild.cpp index d1cf91b253..d1cf91b253 100755..100644 --- a/indra/llplugin/llpluginprocesschild.cpp +++ b/indra/llplugin/llpluginprocesschild.cpp diff --git a/indra/llplugin/llpluginprocesschild.h b/indra/llplugin/llpluginprocesschild.h index 1430ad7a5d..1430ad7a5d 100755..100644 --- a/indra/llplugin/llpluginprocesschild.h +++ b/indra/llplugin/llpluginprocesschild.h diff --git a/indra/llplugin/llpluginprocessparent.cpp b/indra/llplugin/llpluginprocessparent.cpp index 3589b22a77..3589b22a77 100755..100644 --- a/indra/llplugin/llpluginprocessparent.cpp +++ b/indra/llplugin/llpluginprocessparent.cpp diff --git a/indra/llplugin/llpluginprocessparent.h b/indra/llplugin/llpluginprocessparent.h index 4dff835b6a..4dff835b6a 100755..100644 --- a/indra/llplugin/llpluginprocessparent.h +++ b/indra/llplugin/llpluginprocessparent.h diff --git a/indra/llplugin/llpluginsharedmemory.cpp b/indra/llplugin/llpluginsharedmemory.cpp index 9c18b410c7..9c18b410c7 100755..100644 --- a/indra/llplugin/llpluginsharedmemory.cpp +++ b/indra/llplugin/llpluginsharedmemory.cpp diff --git a/indra/llplugin/llpluginsharedmemory.h b/indra/llplugin/llpluginsharedmemory.h index 00c54ef08c..00c54ef08c 100755..100644 --- a/indra/llplugin/llpluginsharedmemory.h +++ b/indra/llplugin/llpluginsharedmemory.h diff --git a/indra/llplugin/slplugin/CMakeLists.txt b/indra/llplugin/slplugin/CMakeLists.txt index 08d35f9ae7..08d35f9ae7 100755..100644 --- a/indra/llplugin/slplugin/CMakeLists.txt +++ b/indra/llplugin/slplugin/CMakeLists.txt diff --git a/indra/llplugin/slplugin/slplugin-objc.h b/indra/llplugin/slplugin/slplugin-objc.h index 4e55cb14cf..4e55cb14cf 100755..100644 --- a/indra/llplugin/slplugin/slplugin-objc.h +++ b/indra/llplugin/slplugin/slplugin-objc.h diff --git a/indra/llplugin/slplugin/slplugin-objc.mm b/indra/llplugin/slplugin/slplugin-objc.mm index 823e1ebea6..823e1ebea6 100755..100644 --- a/indra/llplugin/slplugin/slplugin-objc.mm +++ b/indra/llplugin/slplugin/slplugin-objc.mm diff --git a/indra/llplugin/slplugin/slplugin.cpp b/indra/llplugin/slplugin/slplugin.cpp index febce9bcb7..febce9bcb7 100755..100644 --- a/indra/llplugin/slplugin/slplugin.cpp +++ b/indra/llplugin/slplugin/slplugin.cpp diff --git a/indra/llplugin/slplugin/slplugin_info.plist b/indra/llplugin/slplugin/slplugin_info.plist index c4597380e0..c4597380e0 100755..100644 --- a/indra/llplugin/slplugin/slplugin_info.plist +++ b/indra/llplugin/slplugin/slplugin_info.plist diff --git a/indra/llplugin/tests/llplugincookiestore_test.cpp b/indra/llplugin/tests/llplugincookiestore_test.cpp index c903464c64..ef96c482e5 100755..100644 --- a/indra/llplugin/tests/llplugincookiestore_test.cpp +++ b/indra/llplugin/tests/llplugincookiestore_test.cpp @@ -117,7 +117,7 @@ namespace tut  	typedef test_group<LLPluginCookieStoreFixture> factory;  	typedef factory::object object; -	factory tf("LLPluginCookieStore test"); +	factory tf("LLPluginCookieStore");  	// Tests  	template<> template<> | 
