diff options
Diffstat (limited to 'indra/media_plugins')
| -rw-r--r-- | indra/media_plugins/cef/media_plugin_cef.cpp | 104 | 
1 files changed, 62 insertions, 42 deletions
| diff --git a/indra/media_plugins/cef/media_plugin_cef.cpp b/indra/media_plugins/cef/media_plugin_cef.cpp index d28caab490..ea70e21414 100644 --- a/indra/media_plugins/cef/media_plugin_cef.cpp +++ b/indra/media_plugins/cef/media_plugin_cef.cpp @@ -86,6 +86,9 @@ private:  	bool mCookiesEnabled;  	bool mPluginsEnabled;  	bool mJavascriptEnabled; +    bool mProxyEnabled; +    std::string mProxyHost; +    int mProxyPort;  	bool mDisableGPU;  	bool mDisableNetworkService;  	bool mUseMockKeyChain; @@ -123,6 +126,9 @@ MediaPluginBase(host_send_func, host_user_data)  	mCookiesEnabled = true;  	mPluginsEnabled = false;  	mJavascriptEnabled = true; +    mProxyEnabled = false; +    mProxyHost = ""; +    mProxyPort = 0;  	mDisableGPU = false;  	mDisableNetworkService = true;  	mUseMockKeyChain = true; @@ -582,50 +588,58 @@ void MediaPluginCEF::receiveMessage(const char* message_string)  		}  		else if (message_class == LLPLUGIN_MESSAGE_CLASS_MEDIA)  		{ -			if (message_name == "init") -			{ -				// event callbacks from Dullahan -				mCEFLib->setOnPageChangedCallback(std::bind(&MediaPluginCEF::onPageChangedCallback, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, std::placeholders::_4, std::placeholders::_5)); -				mCEFLib->setOnCustomSchemeURLCallback(std::bind(&MediaPluginCEF::onCustomSchemeURLCallback, this, std::placeholders::_1)); -				mCEFLib->setOnConsoleMessageCallback(std::bind(&MediaPluginCEF::onConsoleMessageCallback, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3)); -				mCEFLib->setOnStatusMessageCallback(std::bind(&MediaPluginCEF::onStatusMessageCallback, this, std::placeholders::_1)); -				mCEFLib->setOnTitleChangeCallback(std::bind(&MediaPluginCEF::onTitleChangeCallback, this, std::placeholders::_1)); -				mCEFLib->setOnTooltipCallback(std::bind(&MediaPluginCEF::onTooltipCallback, this, std::placeholders::_1)); -				mCEFLib->setOnLoadStartCallback(std::bind(&MediaPluginCEF::onLoadStartCallback, this)); -				mCEFLib->setOnLoadEndCallback(std::bind(&MediaPluginCEF::onLoadEndCallback, this, std::placeholders::_1, std::placeholders::_2)); -				mCEFLib->setOnLoadErrorCallback(std::bind(&MediaPluginCEF::onLoadError, this, std::placeholders::_1, std::placeholders::_2)); -				mCEFLib->setOnAddressChangeCallback(std::bind(&MediaPluginCEF::onAddressChangeCallback, this, std::placeholders::_1)); -				mCEFLib->setOnOpenPopupCallback(std::bind(&MediaPluginCEF::onOpenPopupCallback, this, std::placeholders::_1, std::placeholders::_2)); -				mCEFLib->setOnHTTPAuthCallback(std::bind(&MediaPluginCEF::onHTTPAuthCallback, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, std::placeholders::_4)); -				mCEFLib->setOnFileDialogCallback(std::bind(&MediaPluginCEF::onFileDialog, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, std::placeholders::_4, std::placeholders::_5)); -				mCEFLib->setOnCursorChangedCallback(std::bind(&MediaPluginCEF::onCursorChangedCallback, this, std::placeholders::_1)); -				mCEFLib->setOnRequestExitCallback(std::bind(&MediaPluginCEF::onRequestExitCallback, this)); -				mCEFLib->setOnJSDialogCallback(std::bind(&MediaPluginCEF::onJSDialogCallback, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3)); -				mCEFLib->setOnJSBeforeUnloadCallback(std::bind(&MediaPluginCEF::onJSBeforeUnloadCallback, this)); -				 -				dullahan::dullahan_settings settings; +            if (message_name == "init") +            { +                // event callbacks from Dullahan +                mCEFLib->setOnPageChangedCallback(std::bind(&MediaPluginCEF::onPageChangedCallback, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, std::placeholders::_4, std::placeholders::_5)); +                mCEFLib->setOnCustomSchemeURLCallback(std::bind(&MediaPluginCEF::onCustomSchemeURLCallback, this, std::placeholders::_1)); +                mCEFLib->setOnConsoleMessageCallback(std::bind(&MediaPluginCEF::onConsoleMessageCallback, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3)); +                mCEFLib->setOnStatusMessageCallback(std::bind(&MediaPluginCEF::onStatusMessageCallback, this, std::placeholders::_1)); +                mCEFLib->setOnTitleChangeCallback(std::bind(&MediaPluginCEF::onTitleChangeCallback, this, std::placeholders::_1)); +                mCEFLib->setOnTooltipCallback(std::bind(&MediaPluginCEF::onTooltipCallback, this, std::placeholders::_1)); +                mCEFLib->setOnLoadStartCallback(std::bind(&MediaPluginCEF::onLoadStartCallback, this)); +                mCEFLib->setOnLoadEndCallback(std::bind(&MediaPluginCEF::onLoadEndCallback, this, std::placeholders::_1, std::placeholders::_2)); +                mCEFLib->setOnLoadErrorCallback(std::bind(&MediaPluginCEF::onLoadError, this, std::placeholders::_1, std::placeholders::_2)); +                mCEFLib->setOnAddressChangeCallback(std::bind(&MediaPluginCEF::onAddressChangeCallback, this, std::placeholders::_1)); +                mCEFLib->setOnOpenPopupCallback(std::bind(&MediaPluginCEF::onOpenPopupCallback, this, std::placeholders::_1, std::placeholders::_2)); +                mCEFLib->setOnHTTPAuthCallback(std::bind(&MediaPluginCEF::onHTTPAuthCallback, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, std::placeholders::_4)); +                mCEFLib->setOnFileDialogCallback(std::bind(&MediaPluginCEF::onFileDialog, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, std::placeholders::_4, std::placeholders::_5)); +                mCEFLib->setOnCursorChangedCallback(std::bind(&MediaPluginCEF::onCursorChangedCallback, this, std::placeholders::_1)); +                mCEFLib->setOnRequestExitCallback(std::bind(&MediaPluginCEF::onRequestExitCallback, this)); +                mCEFLib->setOnJSDialogCallback(std::bind(&MediaPluginCEF::onJSDialogCallback, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3)); +                mCEFLib->setOnJSBeforeUnloadCallback(std::bind(&MediaPluginCEF::onJSBeforeUnloadCallback, this)); + +                dullahan::dullahan_settings settings;  #if LL_WINDOWS -				// As of CEF version 83+, for Windows versions, we need to tell CEF  -				// where the host helper process is since this DLL is not in the same -				// dir as the executable that loaded it (SLPlugin.exe). The code in  -				// Dullahan that tried to figure out the location automatically uses  -				// the location of the exe which isn't helpful so we tell it explicitly. -				char cur_dir_str[MAX_PATH]; -				GetCurrentDirectoryA(MAX_PATH, cur_dir_str); -				settings.host_process_path = std::string(cur_dir_str); +                // As of CEF version 83+, for Windows versions, we need to tell CEF  +                // where the host helper process is since this DLL is not in the same +                // dir as the executable that loaded it (SLPlugin.exe). The code in  +                // Dullahan that tried to figure out the location automatically uses  +                // the location of the exe which isn't helpful so we tell it explicitly. +                char cur_dir_str[MAX_PATH]; +                GetCurrentDirectoryA(MAX_PATH, cur_dir_str); +                settings.host_process_path = std::string(cur_dir_str);  #endif -				settings.accept_language_list = mHostLanguage; - -				// SL-15560: Product team overruled my change to set the default -				// embedded background color to match the floater background -				// and set it to white -				settings.background_color = 0xffffffff;	// white  - -				settings.cache_enabled = true; -				settings.root_cache_path = mRootCachePath; -				settings.cache_path = mCachePath; -				settings.context_cache_path = mContextCachePath; -				settings.cookies_enabled = mCookiesEnabled; +                settings.accept_language_list = mHostLanguage; + +                // SL-15560: Product team overruled my change to set the default +                // embedded background color to match the floater background +                // and set it to white +                settings.background_color = 0xffffffff;	// white  + +                settings.cache_enabled = true; +                settings.root_cache_path = mRootCachePath; +                settings.cache_path = mCachePath; +                settings.context_cache_path = mContextCachePath; +                settings.cookies_enabled = mCookiesEnabled; + +                // configure proxy argument if enabled and valid +                if (mProxyEnabled && mProxyHost.length()) +                { +                    std::ostringstream proxy_url; +                    proxy_url << mProxyHost << ":" << mProxyPort; +                    settings.proxy_host_port = proxy_url.str(); +                }  				settings.disable_gpu = mDisableGPU;  #if LL_DARWIN  				settings.disable_network_service = mDisableNetworkService; @@ -970,6 +984,12 @@ void MediaPluginCEF::receiveMessage(const char* message_string)  			{  				mDisableGPU = message_in.getValueBoolean("disable");  			} +            else if (message_name == "proxy_setup") +            { +                mProxyEnabled = message_in.getValueBoolean("enable"); +                mProxyHost = message_in.getValue("host"); +                mProxyPort = message_in.getValueS32("port"); +            }  			else if (message_name == "web_security_disabled")  			{  				mDisableWebSecurity = message_in.getValueBoolean("disabled"); | 
