diff options
| -rw-r--r-- | autobuild.xml | 14 | ||||
| -rw-r--r-- | indra/media_plugins/cef/media_plugin_cef.cpp | 53 | ||||
| -rw-r--r-- | indra/newview/VIEWER_VERSION.txt | 2 | ||||
| -rw-r--r-- | indra/newview/app_settings/settings.xml | 11 | ||||
| -rw-r--r-- | indra/newview/llsechandler_basic.cpp | 14 | ||||
| -rw-r--r-- | indra/newview/llviewermedia.cpp | 8 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/panel_preferences_setup.xml | 45 | ||||
| -rwxr-xr-x | indra/newview/viewer_manifest.py | 8 | 
8 files changed, 86 insertions, 69 deletions
| diff --git a/autobuild.xml b/autobuild.xml index e3aba1d383..f3df5002fc 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -580,9 +580,9 @@              <key>archive</key>              <map>                <key>hash</key> -              <string>856ba0e5b7be4bf683cf2849bce845e0</string> +              <string>49fff41e17e06cdf9eb0c737d20df52f</string>                <key>url</key> -              <string>https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/72458/699860/dullahan-1.7.0.202011160759_81.3.10_gb223419_chromium-81.0.4044.138-darwin64-552313.tar.bz2</string> +              <string>https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/83411/779825/dullahan-1.12.2.202106220202_91.1.21_g9dd45fe_chromium-91.0.4472.114-darwin64-560751.tar.bz2</string>              </map>              <key>name</key>              <string>darwin64</string> @@ -592,9 +592,9 @@              <key>archive</key>              <map>                <key>hash</key> -              <string>515950c911a53ff910b18c7c417ea984</string> +              <string>f51f324d50a2461cda273e84fa65e0ad</string>                <key>url</key> -              <string>https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/72460/699870/dullahan-1.7.0.202011161603_81.3.10_gb223419_chromium-81.0.4044.138-windows-552313.tar.bz2</string> +              <string>https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/83413/779836/dullahan-1.12.2.202106220213_91.1.21_g9dd45fe_chromium-91.0.4472.114-windows-560751.tar.bz2</string>              </map>              <key>name</key>              <string>windows</string> @@ -604,16 +604,16 @@              <key>archive</key>              <map>                <key>hash</key> -              <string>f1dccbdfe0603f488eeee4c8f518c959</string> +              <string>d3df46f6592715c75df2bf520c1ad68b</string>                <key>url</key> -              <string>https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/72459/699874/dullahan-1.7.0.202011161603_81.3.10_gb223419_chromium-81.0.4044.138-windows64-552313.tar.bz2</string> +              <string>https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/83412/779840/dullahan-1.12.2.202106220213_91.1.21_g9dd45fe_chromium-91.0.4472.114-windows64-560751.tar.bz2</string>              </map>              <key>name</key>              <string>windows64</string>            </map>          </map>          <key>version</key> -        <string>1.7.0.202011161603_81.3.10_gb223419_chromium-81.0.4044.138</string> +        <string>1.12.2.202106220213_91.1.21_g9dd45fe_chromium-91.0.4472.114</string>        </map>        <key>elfio</key>        <map> diff --git a/indra/media_plugins/cef/media_plugin_cef.cpp b/indra/media_plugins/cef/media_plugin_cef.cpp index 0bb62d79ff..8465285d2b 100644 --- a/indra/media_plugins/cef/media_plugin_cef.cpp +++ b/indra/media_plugins/cef/media_plugin_cef.cpp @@ -73,6 +73,7 @@ private:  	void onCursorChangedCallback(dullahan::ECursorType type);  	const std::vector<std::string> onFileDialog(dullahan::EFileDialogType dialog_type, const std::string dialog_title, const std::string default_file, const std::string dialog_accept_filter, bool& use_default);  	bool onJSDialogCallback(const std::string origin_url, const std::string message_text, const std::string default_prompt_text); +	bool onJSBeforeUnloadCallback();  	void postDebugMessage(const std::string& msg);  	void authResponse(LLPluginMessage &message); @@ -377,6 +378,14 @@ bool MediaPluginCEF::onJSDialogCallback(const std::string origin_url, const std:  ////////////////////////////////////////////////////////////////////////////////  // +bool MediaPluginCEF::onJSBeforeUnloadCallback() +{ +	// return true indicates we suppress the JavaScript UI entirely +	return true; +} + +//////////////////////////////////////////////////////////////////////////////// +//  void MediaPluginCEF::onCursorChangedCallback(dullahan::ECursorType type)  {  	std::string name = ""; @@ -523,10 +532,26 @@ void MediaPluginCEF::receiveMessage(const char* message_string)  				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); +#endif  				settings.accept_language_list = mHostLanguage; -				settings.background_color = 0xffffffff; + +				// 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; @@ -537,7 +562,19 @@ void MediaPluginCEF::receiveMessage(const char* message_string)  				settings.disable_network_service = mDisableNetworkService;  				settings.use_mock_keychain = mUseMockKeyChain;  #endif -				settings.flash_enabled = mPluginsEnabled; +				// This setting applies to all plugins, not just Flash +				// Regarding, SL-15559 PDF files do not load in CEF v91, +				// it turns out that on Windows, PDF support is treated +				// as a plugin on Windows only so turning all plugins +				// off, disabled built in PDF support.  (Works okay in +				// macOS surprisingly). To mitigrate this, we set the global +				// media enabled flag to whatever the consumer wants and  +				// explicitly disable Flash with a different setting (below) +				settings.plugins_enabled = mPluginsEnabled; + +				// SL-14897 Disable Flash support in the embedded browser +				settings.flash_enabled = false; +  				settings.flip_mouse_y = false;  				settings.flip_pixels_y = true;  				settings.frame_rate = 60; @@ -546,8 +583,8 @@ void MediaPluginCEF::receiveMessage(const char* message_string)  				settings.initial_width = 1024;  				settings.java_enabled = false;  				settings.javascript_enabled = mJavascriptEnabled; -				settings.media_stream_enabled = false; // MAINT-6060 - WebRTC media removed until we can add granualrity/query UI -				settings.plugins_enabled = mPluginsEnabled; +				settings.media_stream_enabled = false; // MAINT-6060 - WebRTC media removed until we can add granularity/query UI +				  				settings.user_agent_substring = mCEFLib->makeCompatibleUserAgentString(mUserAgentSubtring);  				settings.webgl_enabled = true;  				settings.log_file = mCefLogFile; @@ -558,10 +595,10 @@ void MediaPluginCEF::receiveMessage(const char* message_string)  				mCEFLib->setCustomSchemes(custom_schemes);  				bool result = mCEFLib->init(settings); -				if (!result) -				{ -					// if this fails, the media system in viewer will put up a message -				} +                if (!result) +                { +                    // if this fails, the media system in viewer will put up a message +                }  				// now we can set page zoom factor  				F32 factor = (F32)message_in.getValueReal("factor"); diff --git a/indra/newview/VIEWER_VERSION.txt b/indra/newview/VIEWER_VERSION.txt index a15225fad6..4c8366c864 100644 --- a/indra/newview/VIEWER_VERSION.txt +++ b/indra/newview/VIEWER_VERSION.txt @@ -1 +1 @@ -6.4.22 +6.4.23 diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 25e69f1d49..898c5a5273 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -2077,17 +2077,6 @@        <key>Value</key>        <integer>1</integer>      </map> -    <key>BrowserPluginsEnabled</key> -    <map> -      <key>Comment</key> -      <string>Enable Web plugins in the built-in Web browser?</string> -      <key>Persist</key> -      <integer>1</integer> -      <key>Type</key> -      <string>Boolean</string> -      <key>Value</key> -      <integer>1</integer> -    </map>      <key>ChatBarCustomWidth</key>      <map>        <key>Comment</key> diff --git a/indra/newview/llsechandler_basic.cpp b/indra/newview/llsechandler_basic.cpp index 737ef30ada..19db020a31 100644 --- a/indra/newview/llsechandler_basic.cpp +++ b/indra/newview/llsechandler_basic.cpp @@ -915,11 +915,19 @@ void _validateCert(int validation_policy,  	}  	if (validation_policy & VALIDATION_POLICY_SSL_KU)  	{ +		// This stanza of code was changed 2021-06-09 as per details in SL-15370. +		// Brief summary: a renewed certificate from Akamai only contains the +		// 'Digital Signature' field and not the 'Key Encipherment' one. This code  +		// used to look for both and throw an exception at startup (ignored) and  +		// (for example) when buying L$ in the Viewer (fails with a UI message +		// and an entry in the Viewer log). This modified code removes the second  +		// check for the 'Key Encipherment' field. If Akamai can provide a  +		// replacement certificate that has both fields, then this modified code  +		// will not be required.  		if (current_cert_info.has(CERT_KEY_USAGE) && current_cert_info[CERT_KEY_USAGE].isArray() && -			(!(_LLSDArrayIncludesValue(current_cert_info[CERT_KEY_USAGE],  -									   LLSD((std::string)CERT_KU_DIGITAL_SIGNATURE))) ||  			!(_LLSDArrayIncludesValue(current_cert_info[CERT_KEY_USAGE],  -									  LLSD((std::string)CERT_KU_KEY_ENCIPHERMENT))))) +									   LLSD((std::string)CERT_KU_DIGITAL_SIGNATURE))) +			)  		{  			LLTHROW(LLCertKeyUsageValidationException(current_cert_info));  		} diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index 73d0a83a0d..d35dbda907 100644 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -1745,14 +1745,14 @@ LLPluginClassMedia* LLViewerMediaImpl::newSourceFromMediaType(std::string media_  			bool cookies_enabled = gSavedSettings.getBOOL( "CookiesEnabled" );  			media_source->cookies_enabled( cookies_enabled || clean_browser); -			// collect 'plugins enabled' setting from prefs and send to embedded browser -			bool plugins_enabled = gSavedSettings.getBOOL( "BrowserPluginsEnabled" ); -			media_source->setPluginsEnabled( plugins_enabled  || clean_browser); -  			// collect 'javascript enabled' setting from prefs and send to embedded browser  			bool javascript_enabled = gSavedSettings.getBOOL( "BrowserJavascriptEnabled" );  			media_source->setJavascriptEnabled( javascript_enabled || clean_browser); +			// As of SL-15559 PDF files do not load in CEF v91 we enable plugins +			// but explicitly disable Flash (PDF support in CEF is now treated as a plugin) +			media_source->setPluginsEnabled(true); +  			bool media_plugin_debugging_enabled = gSavedSettings.getBOOL("MediaPluginDebugging");  			media_source->enableMediaPluginDebugging( media_plugin_debugging_enabled  || clean_browser); diff --git a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml index 6732f4ff1c..dff6f6e600 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml @@ -148,20 +148,6 @@    </radio_group>    <check_box -    top_delta="2" -    enabled="true" -    follows="left|top" -    height="18" -    initial_value="true" -    control_name="BrowserPluginsEnabled" -    label="Enable plugins" -    left_delta="20" -    mouse_opaque="true" -    name="browser_plugins_enabled" -    radio_style="false" -    width="400" -    top_pad="5"/> -  <check_box      top_delta="4"      enabled="true"      follows="left|top" @@ -241,24 +227,23 @@       height="10"       layout="topleft"       left="30" -     name="Proxy Settings:" +     name="Proxy Settings 1" +     mouse_opaque="false" +     top_pad="10" +     width="300"> +    Proxy Settings: +  </text> +  <text +     type="string" +     length="1" +     follows="left|top" +     height="10" +     layout="topleft" +     left="80" +     name="Proxy Settings 2"       mouse_opaque="false"       top_pad="5"       width="300"> -		Proxy Settings: +    Your system's existing proxy settings will be used    </text> -  <button -	label="Adjust proxy settings" -    follows="left|top" -    height="23" -	width="140"  -    label_selected="Browse" -    layout="topleft" -    left_delta="50" -    name="set_proxy" -    top_pad="5" -    > -		<button.commit_callback -		  function="Pref.Proxy" /> -  </button>  </panel> diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 6194328759..41da8fa328 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -616,11 +616,9 @@ class WindowsManifest(ViewerManifest):              # CEF files common to all configurations              with self.prefix(src=os.path.join(pkgdir, 'resources')): -                self.path("cef.pak") -                self.path("cef_100_percent.pak") -                self.path("cef_200_percent.pak") -                self.path("cef_extensions.pak") -                self.path("devtools_resources.pak") +                self.path("chrome_100_percent.pak") +                self.path("chrome_200_percent.pak") +                self.path("resources.pak")                  self.path("icudtl.dat")              with self.prefix(src=os.path.join(pkgdir, 'resources', 'locales'), dst='locales'): | 
