diff options
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/newview/llavataractions.cpp | 18 | ||||
| -rw-r--r-- | indra/newview/llavataractions.h | 1 | ||||
| -rw-r--r-- | indra/newview/llcommandhandler.cpp | 13 | ||||
| -rw-r--r-- | indra/newview/llimview.cpp | 30 | ||||
| -rw-r--r-- | indra/newview/llimview.h | 7 | ||||
| -rw-r--r-- | indra/newview/llpanelimcontrolpanel.cpp | 8 | ||||
| -rw-r--r-- | indra/newview/llpanelimcontrolpanel.h | 4 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/notifications.xml | 17 | 
8 files changed, 54 insertions, 44 deletions
diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp index 5af023f565..5f90a7627f 100644 --- a/indra/newview/llavataractions.cpp +++ b/indra/newview/llavataractions.cpp @@ -62,9 +62,6 @@  #include "llimfloater.h"  #include "lltrans.h" -// callback connection to auto-call when the IM floater initializes -boost::signals2::connection gAdhocAutoCall; -  // static  void LLAvatarActions::requestFriendshipDialog(const LLUUID& id, const std::string& name)  { @@ -250,8 +247,8 @@ void LLAvatarActions::startAdhocCall(const std::vector<LLUUID>& ids)  	// always open IM window when connecting to voice  	LLIMFloater::show(session_id); -	// start the call once the floater has fully initialized -	gAdhocAutoCall = LLIMModel::getInstance()->addSessionInitializedCallback(callbackAutoStartCall); +	// start the call once the session has fully initialized +	gIMMgr->autoStartCallOnStartup(session_id);  	make_ui_sound("UISndStartIM");  } @@ -467,17 +464,6 @@ bool LLAvatarActions::callbackAddFriend(const LLSD& notification, const LLSD& re  }  // static -void LLAvatarActions::callbackAutoStartCall(const LLSD& data) -{ -	// start the adhoc voice call now the IM panel has initialized -	LLUUID session_id = data["session_id"].asUUID(); -	gIMMgr->startCall(session_id); - -	// and deschedule this callback as its work is done now -	gAdhocAutoCall.disconnect(); -} - -// static  void LLAvatarActions::requestFriendship(const LLUUID& target_id, const std::string& target_name, const std::string& message)  {  	const LLUUID calling_card_folder_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_CALLINGCARD); diff --git a/indra/newview/llavataractions.h b/indra/newview/llavataractions.h index 4c9851a48d..2dd2a4c4b1 100644 --- a/indra/newview/llavataractions.h +++ b/indra/newview/llavataractions.h @@ -139,7 +139,6 @@ private:  	static bool handleRemove(const LLSD& notification, const LLSD& response);  	static bool handlePay(const LLSD& notification, const LLSD& response, LLUUID avatar_id);  	static void callback_invite_to_group(LLUUID group_id, LLUUID id); -	static void callbackAutoStartCall(const LLSD& data);  	// Just request friendship, no dialog.  	static void requestFriendship(const LLUUID& target_id, const std::string& target_name, const std::string& message); diff --git a/indra/newview/llcommandhandler.cpp b/indra/newview/llcommandhandler.cpp index af6488388a..1d92661ea2 100644 --- a/indra/newview/llcommandhandler.cpp +++ b/indra/newview/llcommandhandler.cpp @@ -34,6 +34,7 @@  #include "llviewerprecompiledheaders.h"  #include "llcommandhandler.h" +#include "llnotificationsutil.h"  // system includes  #include <boost/tokenizer.hpp> @@ -93,6 +94,8 @@ bool LLCommandHandlerRegistry::dispatch(const std::string& cmd,  										LLMediaCtrl* web,  										bool trusted_browser)  { +	static bool slurl_blocked = false; +	static bool slurl_throttled = false;  	static F64 last_throttle_time = 0.0;  	F64 cur_time = 0.0;  	std::map<std::string, LLCommandHandlerInfo>::iterator it = mMap.find(cmd); @@ -110,6 +113,11 @@ bool LLCommandHandlerRegistry::dispatch(const std::string& cmd,  			// block request from external browser, but report as  			// "handled" because it was well formatted.  			LL_WARNS_ONCE("SLURL") << "Blocked SLURL command from untrusted browser" << LL_ENDL; +			if (! slurl_blocked) +			{ +				LLNotificationsUtil::add("BlockedSLURL"); +				slurl_blocked = true; +			}  			return true;  		case LLCommandHandler::UNTRUSTED_THROTTLE: @@ -119,6 +127,11 @@ bool LLCommandHandlerRegistry::dispatch(const std::string& cmd,  				// block request from external browser if it happened  				// within THROTTLE_PERIOD secs of the last command  				LL_WARNS_ONCE("SLURL") << "Throttled SLURL command from untrusted browser" << LL_ENDL; +				if (! slurl_throttled) +				{ +					LLNotificationsUtil::add("ThrottledSLURL"); +					slurl_throttled = true; +				}  				return true;  			}  			last_throttle_time = cur_time; diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index fd1fb38914..4d2ba16a4c 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -167,7 +167,8 @@ LLIMModel::LLIMSession::LLIMSession(const LLUUID& session_id, const std::string&  	mSessionInitialized(false),  	mCallBackEnabled(true),  	mTextIMPossible(true), -	mOtherParticipantIsAvatar(true) +	mOtherParticipantIsAvatar(true), +	mStartCallOnInitialize(false)  {  	if (IM_NOTHING_SPECIAL == type || IM_SESSION_P2P_INVITE == type)  	{ @@ -419,6 +420,12 @@ void LLIMModel::processSessionInitializedReply(const LLUUID& old_session_id, con  		{  			im_floater->sessionInitReplyReceived(new_session_id);  		} + +		// auto-start the call on session initialization? +		if (session->mStartCallOnInitialize) +		{ +			gIMMgr->startCall(new_session_id); +		}  	}  	//*TODO remove this "floater" stuff when Communicate Floater is gone @@ -1007,18 +1014,6 @@ bool LLIMModel::sendStartSession(  	return false;  } -// static -void LLIMModel::sendSessionInitialized(const LLUUID &session_id) -{ -	LLIMSession* session = getInstance()->findIMSession(session_id); -	if (session) -	{ -		LLSD arg; -		arg["session_id"] = session_id; -		getInstance()->mSessionInitializedSignal(arg); -	} -} -  //  // Helper Functions  // @@ -2012,6 +2007,15 @@ BOOL LLIMMgr::getIMReceived() const  	return mIMReceived;  } +void LLIMMgr::autoStartCallOnStartup(const LLUUID& session_id) +{ +	LLIMModel::LLIMSession *session = LLIMModel::getInstance()->findIMSession(session_id); +	if (session) +	{ +		session->mStartCallOnInitialize = true; +	}	 +} +  LLUUID LLIMMgr::addP2PSession(const std::string& name,  							const LLUUID& other_participant_id,  							const std::string& voice_session_handle, diff --git a/indra/newview/llimview.h b/indra/newview/llimview.h index 3fc1a00868..f26889ac91 100644 --- a/indra/newview/llimview.h +++ b/indra/newview/llimview.h @@ -104,6 +104,7 @@ public:  		bool mTextIMPossible;  		bool mOtherParticipantIsAvatar; +		bool mStartCallOnInitialize;  	}; @@ -123,7 +124,6 @@ public:  	typedef boost::function<void(const LLSD&)> session_callback_t;  	session_signal_t mNewMsgSignal;  	session_signal_t mNoUnreadMsgsSignal; -	session_signal_t mSessionInitializedSignal;  	/**   	 * Find an IM Session corresponding to session_id @@ -138,7 +138,6 @@ public:  	boost::signals2::connection addNewMsgCallback( session_callback_t cb ) { return mNewMsgSignal.connect(cb); }  	boost::signals2::connection addNoUnreadMsgsCallback( session_callback_t cb ) { return mNoUnreadMsgsSignal.connect(cb); } -	boost::signals2::connection addSessionInitializedCallback(session_callback_t cb ) {	return mSessionInitializedSignal.connect(cb); }  	/**  	 * Create new session object in a model @@ -213,7 +212,6 @@ public:  	static bool sendStartSession(const LLUUID& temp_session_id, const LLUUID& other_participant_id,  						  const std::vector<LLUUID>& ids, EInstantMessage dialog);  	static void sendTypingState(LLUUID session_id, LLUUID other_participant_id, BOOL typing); -	static void sendSessionInitialized(const LLUUID &session_id);  	static void sendMessage(const std::string& utf8_text, const LLUUID& im_session_id,  								const LLUUID& other_participant_id, EInstantMessage dialog); @@ -331,6 +329,9 @@ public:  	void notifyNewIM();  	void clearNewIMNotification(); +	// automatically start a call once the session has initialized +	void autoStartCallOnStartup(const LLUUID& session_id); +  	// IM received that you haven't seen yet  	BOOL getIMReceived() const; diff --git a/indra/newview/llpanelimcontrolpanel.cpp b/indra/newview/llpanelimcontrolpanel.cpp index 8c19865550..4f76d32ad5 100644 --- a/indra/newview/llpanelimcontrolpanel.cpp +++ b/indra/newview/llpanelimcontrolpanel.cpp @@ -101,14 +101,6 @@ void LLPanelChatControlPanel::draw()  		&& callback_enabled;  	childSetEnabled("call_btn", enable_connect); -	// send a signal when the floater is fully initialized -	// this lets LLAvatarActions::startAdhocCall() start the call -	if (enable_connect && !mInitialized) -	{ -		LLIMModel::sendSessionInitialized(mSessionId); -		mInitialized = true; -	} -  	LLPanel::draw();  } diff --git a/indra/newview/llpanelimcontrolpanel.h b/indra/newview/llpanelimcontrolpanel.h index 871779b273..711340efc7 100644 --- a/indra/newview/llpanelimcontrolpanel.h +++ b/indra/newview/llpanelimcontrolpanel.h @@ -45,8 +45,7 @@ class LLPanelChatControlPanel : public LLPanel  {  public:  	LLPanelChatControlPanel() : -		mSessionId(LLUUID()), -		mInitialized(false) {}; +		mSessionId(LLUUID()) {};  	~LLPanelChatControlPanel();  	virtual BOOL postBuild(); @@ -63,7 +62,6 @@ public:  private:  	LLUUID mSessionId; -	bool   mInitialized;  	// connection to voice channel state change signal  	boost::signals2::connection mVoiceChannelStateChangeConnection; diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index a6ed1f4c86..22896d59c3 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -5750,6 +5750,23 @@ You just entered a region using a different server version, which may affect per  The SLurl you clicked on is not supported.    </notification> +  <notification +   icon="notifytip.tga" +   name="BlockedSLURL" +   priority="high" +   type="notifytip"> +A SLurl was received from an untrusted browser and has been blocked for your security. +  </notification> + +  <notification +   icon="notifytip.tga" +   name="ThrottledSLURL" +   priority="high" +   type="notifytip"> +Multiple SLurls were received from an untrusted browser within a short period. +They will be blocked for a few seconds for your security.  +  </notification> +    <notification name="IMToast" type="notifytoast">  [MESSAGE]      <form name="form">  | 
