diff options
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/newview/llfacebookconnect.cpp | 10 | ||||
| -rwxr-xr-x | indra/newview/llfloaterwebcontent.cpp | 6 | ||||
| -rwxr-xr-x | indra/newview/llfloaterwebcontent.h | 3 | ||||
| -rwxr-xr-x | indra/newview/llmediactrl.cpp | 4 | ||||
| -rwxr-xr-x | indra/newview/llmediactrl.h | 2 | ||||
| -rwxr-xr-x | indra/newview/llviewermedia.cpp | 39 | ||||
| -rwxr-xr-x | indra/newview/llviewermedia.h | 5 | 
7 files changed, 43 insertions, 26 deletions
diff --git a/indra/newview/llfacebookconnect.cpp b/indra/newview/llfacebookconnect.cpp index 0a662b4671..8cde871cd1 100644 --- a/indra/newview/llfacebookconnect.cpp +++ b/indra/newview/llfacebookconnect.cpp @@ -377,10 +377,12 @@ void LLFacebookConnect::openFacebookWeb(std::string url)  {  	// Open the URL in an internal browser window without navigation UI  	LLFloaterWebContent::Params p; -    p.url(url).show_chrome(true); -    p.url(url).allow_address_entry(false); -    p.url(url).allow_back_forward_navigation(false); -    p.url(url).trusted_content(true); +    p.url(url); +    p.show_chrome(true); +    p.allow_address_entry(false); +    p.allow_back_forward_navigation(false); +    p.trusted_content(true); +    p.clean_browser(true);  	LLFloater *floater = LLFloaterReg::showInstance("fbc_web", p);  	//the internal web browser has a bug that prevents it from gaining focus unless a mouse event occurs first (it seems).  	//So when showing the internal web browser, set focus to it's containing floater "fbc_web". When a mouse event  diff --git a/indra/newview/llfloaterwebcontent.cpp b/indra/newview/llfloaterwebcontent.cpp index 814c91ef6c..2e08b3792f 100755 --- a/indra/newview/llfloaterwebcontent.cpp +++ b/indra/newview/llfloaterwebcontent.cpp @@ -53,7 +53,8 @@ LLFloaterWebContent::_Params::_Params()      allow_back_forward_navigation("allow_back_forward_navigation", true),  	preferred_media_size("preferred_media_size"),  	trusted_content("trusted_content", false), -	show_page_title("show_page_title", true) +	show_page_title("show_page_title", true), +    clean_browser("clean_browser", false)  {}  LLFloaterWebContent::LLFloaterWebContent( const Params& params ) @@ -240,11 +241,12 @@ void LLFloaterWebContent::preCreate(LLFloaterWebContent::Params& p)  void LLFloaterWebContent::open_media(const Params& p)  { +    llinfos << "Merov : LLFloaterWebContent::open_media, allow_address_entry = " << p.allow_address_entry << ", clean_browser = " << p.clean_browser << llendl;  	// Specifying a mime type of text/html here causes the plugin system to skip the MIME type probe and just open a browser plugin.  	LLViewerMedia::proxyWindowOpened(p.target(), p.id());  	mWebBrowser->setHomePageUrl(p.url, "text/html");  	mWebBrowser->setTarget(p.target); -	mWebBrowser->navigateTo(p.url, "text/html"); +	mWebBrowser->navigateTo(p.url, "text/html", p.clean_browser);  	set_current_url(p.url); diff --git a/indra/newview/llfloaterwebcontent.h b/indra/newview/llfloaterwebcontent.h index f22940cd07..2bb8e3271f 100755 --- a/indra/newview/llfloaterwebcontent.h +++ b/indra/newview/llfloaterwebcontent.h @@ -57,7 +57,8 @@ public:  								allow_address_entry,                                  allow_back_forward_navigation,  								trusted_content, -								show_page_title; +								show_page_title, +                                clean_browser;  		Optional<LLRect>		preferred_media_size;  		_Params(); diff --git a/indra/newview/llmediactrl.cpp b/indra/newview/llmediactrl.cpp index 2075aeed63..229542c1c4 100755 --- a/indra/newview/llmediactrl.cpp +++ b/indra/newview/llmediactrl.cpp @@ -539,7 +539,7 @@ void LLMediaCtrl::clearCache()  ////////////////////////////////////////////////////////////////////////////////  // -void LLMediaCtrl::navigateTo( std::string url_in, std::string mime_type) +void LLMediaCtrl::navigateTo( std::string url_in, std::string mime_type, bool clean_browser)  {  	// don't browse to anything that starts with secondlife:// or sl://  	const std::string protocol1 = "secondlife://"; @@ -556,7 +556,7 @@ void LLMediaCtrl::navigateTo( std::string url_in, std::string mime_type)  	{  		mCurrentNavUrl = url_in;  		mMediaSource->setSize(mTextureWidth, mTextureHeight); -		mMediaSource->navigateTo(url_in, mime_type, mime_type.empty()); +		mMediaSource->navigateTo(url_in, mime_type, mime_type.empty(), false, clean_browser);  	}  } diff --git a/indra/newview/llmediactrl.h b/indra/newview/llmediactrl.h index 6c38c1fb56..8429d8188e 100755 --- a/indra/newview/llmediactrl.h +++ b/indra/newview/llmediactrl.h @@ -95,7 +95,7 @@ public:  		virtual BOOL handleToolTip(S32 x, S32 y, MASK mask);  		// navigation -		void navigateTo( std::string url_in, std::string mime_type = ""); +		void navigateTo( std::string url_in, std::string mime_type = "", bool clean_browser = false);  		void navigateBack();  		void navigateHome();  		void navigateForward();	 diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index 13483790ed..2393a932a2 100755 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -429,7 +429,7 @@ viewer_media_t LLViewerMedia::updateMediaImpl(LLMediaEntry* media_entry, const s  	// Try to find media with the same media ID  	viewer_media_t media_impl = getMediaImplFromTextureID(media_entry->getMediaID()); -	lldebugs << "called, current URL is \"" << media_entry->getCurrentURL()  +	llinfos << "Merov : called, current URL is \"" << media_entry->getCurrentURL()  			<< "\", previous URL is \"" << previous_url   			<< "\", update_from_self is " << (update_from_self?"true":"false")  			<< llendl; @@ -790,6 +790,8 @@ void LLViewerMedia::updateMedia(void *dummy_arg)  {  	LLFastTimer t1(FTM_MEDIA_UPDATE); +    //llinfos << "Merov : updateMedia called" << llendl; +      	// Enable/disable the plugin read thread  	LLPluginProcessParent::setUseReadThread(gSavedSettings.getBOOL("PluginUseReadThread")); @@ -1534,7 +1536,8 @@ void LLViewerMedia::createSpareBrowserMediaSource()  	// popping up at the moment we start a media plugin.  	if (!sSpareBrowserMediaSource && !gSavedSettings.getBOOL("PluginAttachDebuggerToPlugins"))  	{ -		// The null owner will keep the browser plugin from fully initializing  +        llinfos << "Merov : createSpareBrowserMediaSource : need to create a spare browser..." << llendl; +		// The null owner will keep the browser plugin from fully initializing  		// (specifically, it keeps LLPluginClassMedia from negotiating a size change,   		// which keeps MediaPluginWebkit::initBrowserWindow from doing anything until we have some necessary data, like the background color)  		sSpareBrowserMediaSource = LLViewerMediaImpl::newSourceFromMediaType("text/html", NULL, 0, 0); @@ -1543,8 +1546,9 @@ void LLViewerMedia::createSpareBrowserMediaSource()  /////////////////////////////////////////////////////////////////////////////////////////  // static -LLPluginClassMedia* LLViewerMedia::getSpareBrowserMediaSource()  +LLPluginClassMedia* LLViewerMedia::getSpareBrowserMediaSource()  { +    llinfos << "Merov : getSpareBrowserMediaSource : give up the spare browser..." << llendl;  	LLPluginClassMedia* result = sSpareBrowserMediaSource;  	sSpareBrowserMediaSource = NULL;  	return result;  @@ -1592,7 +1596,8 @@ std::string LLViewerMedia::getParcelAudioURL()  // static  void LLViewerMedia::initClass()  { -	gIdleCallbacks.addFunction(LLViewerMedia::updateMedia, NULL);	 +    llinfos << "Merov : initClass called" << llendl; +	gIdleCallbacks.addFunction(LLViewerMedia::updateMedia, NULL);  	sTeleportFinishConnection = LLViewerParcelMgr::getInstance()->  		setTeleportFinishedCallback(boost::bind(&LLViewerMedia::onTeleportFinished));  } @@ -1601,6 +1606,7 @@ void LLViewerMedia::initClass()  // static  void LLViewerMedia::cleanupClass()  { +    llinfos << "Merov : cleanupClass called" << llendl;  	gIdleCallbacks.deleteFunction(LLViewerMedia::updateMedia, NULL);  	sTeleportFinishConnection.disconnect();  } @@ -1669,7 +1675,8 @@ LLViewerMediaImpl::LLViewerMediaImpl(	  const LLUUID& texture_id,  	mNavigateSuspendedDeferred(false),  	mIsUpdated(false),  	mTrustedBrowser(false), -	mZoomFactor(1.0) +	mZoomFactor(1.0), +    mCleanBrowser(false)  {   	// Set up the mute list observer if it hasn't been set up already. @@ -1793,14 +1800,15 @@ void LLViewerMediaImpl::setMediaType(const std::string& media_type)  //////////////////////////////////////////////////////////////////////////////////////////  /*static*/ -LLPluginClassMedia* LLViewerMediaImpl::newSourceFromMediaType(std::string media_type, LLPluginClassMediaOwner *owner /* may be NULL */, S32 default_width, S32 default_height, const std::string target) +LLPluginClassMedia* LLViewerMediaImpl::newSourceFromMediaType(std::string media_type, LLPluginClassMediaOwner *owner /* may be NULL */, S32 default_width, S32 default_height, const std::string target, bool get_clean_source)  {  	std::string plugin_basename = LLMIMETypes::implType(media_type);  	LLPluginClassMedia* media_source = NULL;  	// HACK: we always try to keep a spare running webkit plugin around to improve launch times.  	// If a spare was already created before PluginAttachDebuggerToPlugins was set, don't use it. -	if(plugin_basename == "media_plugin_webkit" && !gSavedSettings.getBOOL("PluginAttachDebuggerToPlugins")) +    // Merov : do not use a spare if launching with full viewer control (e.g. Facebook, Twitter and few others) +	if(plugin_basename == "media_plugin_webkit" && !gSavedSettings.getBOOL("PluginAttachDebuggerToPlugins") && !get_clean_source)  	{  		media_source = LLViewerMedia::getSpareBrowserMediaSource();  		if(media_source) @@ -1812,7 +1820,7 @@ LLPluginClassMedia* LLViewerMediaImpl::newSourceFromMediaType(std::string media_  			return media_source;  		}  	} -	 +	llinfos << "Merov : newSourceFromMediaType, get_clean_source = " << get_clean_source << llendl;  	if(plugin_basename.empty())  	{  		LL_WARNS_ONCE("Media") << "Couldn't find plugin for media type " << media_type << LL_ENDL; @@ -1856,18 +1864,19 @@ LLPluginClassMedia* LLViewerMediaImpl::newSourceFromMediaType(std::string media_  			// collect 'cookies enabled' setting from prefs and send to embedded browser  			bool cookies_enabled = gSavedSettings.getBOOL( "CookiesEnabled" ); -			media_source->enable_cookies( cookies_enabled ); +			media_source->enable_cookies( cookies_enabled || get_clean_source);  			// collect 'plugins enabled' setting from prefs and send to embedded browser  			bool plugins_enabled = gSavedSettings.getBOOL( "BrowserPluginsEnabled" ); -			media_source->setPluginsEnabled( plugins_enabled ); +			media_source->setPluginsEnabled( plugins_enabled  || get_clean_source);  			// collect 'javascript enabled' setting from prefs and send to embedded browser  			bool javascript_enabled = gSavedSettings.getBOOL( "BrowserJavascriptEnabled" ); -			media_source->setJavascriptEnabled( javascript_enabled ); +            llinfos << "Merov : setting javascript flag : " << javascript_enabled << llendl; +			media_source->setJavascriptEnabled( javascript_enabled || get_clean_source);  			bool media_plugin_debugging_enabled = gSavedSettings.getBOOL("MediaPluginDebugging"); -			media_source->enableMediaPluginDebugging( media_plugin_debugging_enabled ); +			media_source->enableMediaPluginDebugging( media_plugin_debugging_enabled  || get_clean_source);  			media_source->setTarget(target); @@ -1922,7 +1931,7 @@ bool LLViewerMediaImpl::initializePlugin(const std::string& media_type)  	// Save the MIME type that really caused the plugin to load  	mCurrentMimeType = mMimeType; -	LLPluginClassMedia* media_source = newSourceFromMediaType(mMimeType, this, mMediaWidth, mMediaHeight, mTarget); +	LLPluginClassMedia* media_source = newSourceFromMediaType(mMimeType, this, mMediaWidth, mMediaHeight, mTarget, mCleanBrowser);  	if (media_source)  	{ @@ -2543,7 +2552,7 @@ void LLViewerMediaImpl::unload()  }  ////////////////////////////////////////////////////////////////////////////////////////// -void LLViewerMediaImpl::navigateTo(const std::string& url, const std::string& mime_type,  bool rediscover_type, bool server_request) +void LLViewerMediaImpl::navigateTo(const std::string& url, const std::string& mime_type,  bool rediscover_type, bool server_request, bool clean_browser)  {  	cancelMimeTypeProbe(); @@ -2554,8 +2563,10 @@ void LLViewerMediaImpl::navigateTo(const std::string& url, const std::string& mi  	}  	// Always set the current URL and MIME type. +    llinfos << "Merov : LLViewerMediaImpl::navigateTo url = " << url << llendl;  	mMediaURL = url;  	mMimeType = mime_type; +    mCleanBrowser = clean_browser;  	// Clear the current media URL, since it will no longer be correct.  	mCurrentMediaURL.clear(); diff --git a/indra/newview/llviewermedia.h b/indra/newview/llviewermedia.h index fff5b3fc08..07125e07e5 100755 --- a/indra/newview/llviewermedia.h +++ b/indra/newview/llviewermedia.h @@ -234,7 +234,7 @@ public:  	void navigateReload();  	void navigateHome();  	void unload(); -	void navigateTo(const std::string& url, const std::string& mime_type = "", bool rediscover_type = false, bool server_request = false); +	void navigateTo(const std::string& url, const std::string& mime_type = "", bool rediscover_type = false, bool server_request = false, bool clean_browser = false);  	void navigateInternal();  	void navigateStop();  	bool handleKeyHere(KEY key, MASK mask); @@ -289,7 +289,7 @@ public:  	void setTarget(const std::string& target) { mTarget = target; }  	// utility function to create a ready-to-use media instance from a desired media type. -	static LLPluginClassMedia* newSourceFromMediaType(std::string media_type, LLPluginClassMediaOwner *owner /* may be NULL */, S32 default_width, S32 default_height, const std::string target = LLStringUtil::null); +	static LLPluginClassMedia* newSourceFromMediaType(std::string media_type, LLPluginClassMediaOwner *owner /* may be NULL */, S32 default_width, S32 default_height, const std::string target = LLStringUtil::null, bool get_clean_source = false);  	// Internally set our desired browser user agent string, including  	// the Second Life version and skin name.  Used because we can @@ -464,6 +464,7 @@ private:  	bool mTrustedBrowser;  	std::string mTarget;  	LLNotificationPtr mNotification; +    bool mCleanBrowser;     // force the creation of a clean browsing target with full options enabled  private:  	BOOL mIsUpdated ;  | 
