From d5e685306ce100a62db06a36dfef58f3beb22b7a Mon Sep 17 00:00:00 2001
From: Callum Prentice <callum@lindenlab.com>
Date: Fri, 12 Mar 2010 14:34:25 -0800
Subject: [PATCH] (for B5) Fix for EXT-5823 "Include language in user-agent
 string" (implemented via JavaScript - not in ua string) (for B5) Fix for
 EXT-5314 "Inworld Browser blanks out at credit card entry" Note: also
 includes an update to install.xml that points to a new version of LLQtWebKit
 that is required for these fixes

---
 indra/llplugin/llpluginclassmedia.cpp    | 4 ++--
 indra/llplugin/llpluginclassmedia.h      | 6 +++++-
 indra/llplugin/llpluginprocesschild.cpp  | 2 ++
 indra/llplugin/llpluginprocesschild.h    | 1 +
 indra/llplugin/llpluginprocessparent.cpp | 4 +++-
 indra/llplugin/llpluginprocessparent.h   | 8 +++++++-
 indra/newview/llviewermedia.cpp          | 3 ++-
 install.xml                              | 4 ++--
 8 files changed, 24 insertions(+), 8 deletions(-)

diff --git a/indra/llplugin/llpluginclassmedia.cpp b/indra/llplugin/llpluginclassmedia.cpp
index 6a2449cf4b3..d48f4ad0f5e 100644
--- a/indra/llplugin/llpluginclassmedia.cpp
+++ b/indra/llplugin/llpluginclassmedia.cpp
@@ -65,7 +65,7 @@ LLPluginClassMedia::~LLPluginClassMedia()
 	reset();
 }
 
-bool LLPluginClassMedia::init(const std::string &launcher_filename, const std::string &plugin_filename, bool debug, const std::string &user_data_path)
+bool LLPluginClassMedia::init(const std::string &launcher_filename, const std::string &plugin_filename, bool debug, const std::string &user_data_path, const std::string &language_code)
 {	
 	LL_DEBUGS("Plugin") << "launcher: " << launcher_filename << LL_ENDL;
 	LL_DEBUGS("Plugin") << "plugin: " << plugin_filename << LL_ENDL;
@@ -73,7 +73,7 @@ bool LLPluginClassMedia::init(const std::string &launcher_filename, const std::s
 	
 	mPlugin = new LLPluginProcessParent(this);
 	mPlugin->setSleepTime(mSleepTime);
-	mPlugin->init(launcher_filename, plugin_filename, debug, user_data_path);
+	mPlugin->init(launcher_filename, plugin_filename, debug, user_data_path,language_code);
 
 	return true;
 }
diff --git a/indra/llplugin/llpluginclassmedia.h b/indra/llplugin/llpluginclassmedia.h
index 58e91fa0b43..ce49241e84f 100644
--- a/indra/llplugin/llpluginclassmedia.h
+++ b/indra/llplugin/llpluginclassmedia.h
@@ -49,7 +49,11 @@ class LLPluginClassMedia : public LLPluginProcessParentOwner
 	virtual ~LLPluginClassMedia();
 
 	// local initialization, called by the media manager when creating a source
-	virtual bool init(const std::string &launcher_filename, const std::string &plugin_filename, bool debug, const std::string &user_data_path);
+	virtual bool init(const std::string &launcher_filename, 
+					  const std::string &plugin_filename, 
+					  bool debug, 
+					  const std::string &user_data_path,
+					  const std::string &language_code);
 
 	// undoes everything init() didm called by the media manager when destroying a source
 	virtual void reset();
diff --git a/indra/llplugin/llpluginprocesschild.cpp b/indra/llplugin/llpluginprocesschild.cpp
index 52b5a319ecb..9b43ec0e3ee 100644
--- a/indra/llplugin/llpluginprocesschild.cpp
+++ b/indra/llplugin/llpluginprocesschild.cpp
@@ -156,6 +156,7 @@ void LLPluginProcessChild::idle(void)
 					setState(STATE_PLUGIN_INITIALIZING);
 					LLPluginMessage message("base", "init");
 					message.setValue("user_data_path", mUserDataPath);
+					message.setValue("language_code", mLanguageCode);
 					sendMessageToPlugin(message);
 				}
 			break;
@@ -329,6 +330,7 @@ void LLPluginProcessChild::receiveMessageRaw(const std::string &message)
 			{
 				mPluginFile = parsed.getValue("file");
 				mUserDataPath = parsed.getValue("user_data_path");
+				mLanguageCode = parsed.getValue("language_code");
 			}
 			else if(message_name == "shm_add")
 			{
diff --git a/indra/llplugin/llpluginprocesschild.h b/indra/llplugin/llpluginprocesschild.h
index 58f8935ed1a..af76ec1fa53 100644
--- a/indra/llplugin/llpluginprocesschild.h
+++ b/indra/llplugin/llpluginprocesschild.h
@@ -99,6 +99,7 @@ class LLPluginProcessChild: public LLPluginMessagePipeOwner, public LLPluginInst
 	std::string mPluginFile;
 
 	std::string mUserDataPath;
+	std::string mLanguageCode;
 	
 	LLPluginInstance *mInstance;
 
diff --git a/indra/llplugin/llpluginprocessparent.cpp b/indra/llplugin/llpluginprocessparent.cpp
index efd5df687e5..0ce2c759bac 100644
--- a/indra/llplugin/llpluginprocessparent.cpp
+++ b/indra/llplugin/llpluginprocessparent.cpp
@@ -98,13 +98,14 @@ void LLPluginProcessParent::errorState(void)
 		setState(STATE_ERROR);
 }
 
-void LLPluginProcessParent::init(const std::string &launcher_filename, const std::string &plugin_filename, bool debug, const std::string &user_data_path)
+void LLPluginProcessParent::init(const std::string &launcher_filename, const std::string &plugin_filename, bool debug, const std::string &user_data_path, const std::string &language_code)
 {	
 	mProcess.setExecutable(launcher_filename);
 	mPluginFile = plugin_filename;
 	mCPUUsage = 0.0f;
 	mDebug = debug;
 	mUserDataPath = user_data_path;
+	mLanguageCode = language_code;
 	
 	setState(STATE_INITIALIZED);
 }
@@ -363,6 +364,7 @@ void LLPluginProcessParent::idle(void)
 					LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_INTERNAL, "load_plugin");
 					message.setValue("file", mPluginFile);
 					message.setValue("user_data_path", mUserDataPath);
+					message.setValue("language_code", mLanguageCode);
 					sendMessage(message);
 				}
 
diff --git a/indra/llplugin/llpluginprocessparent.h b/indra/llplugin/llpluginprocessparent.h
index 524cd9923fb..23702814c8b 100644
--- a/indra/llplugin/llpluginprocessparent.h
+++ b/indra/llplugin/llpluginprocessparent.h
@@ -59,7 +59,12 @@ class LLPluginProcessParent : public LLPluginMessagePipeOwner
 	LLPluginProcessParent(LLPluginProcessParentOwner *owner);
 	~LLPluginProcessParent();
 		
-	void init(const std::string &launcher_filename, const std::string &plugin_filename, bool debug, const std::string &user_data_path);
+	void init(const std::string &launcher_filename, 
+			  const std::string &plugin_filename, 
+			  bool debug, 
+			  const std::string &user_data_path,
+			  const std::string &language_code);
+
 	void idle(void);
 	
 	// returns true if the plugin is on its way to steady state
@@ -144,6 +149,7 @@ class LLPluginProcessParent : public LLPluginMessagePipeOwner
 	std::string mPluginFile;
 
 	std::string mUserDataPath;
+	std::string mLanguageCode;
 
 	LLPluginProcessParentOwner *mOwner;
 	
diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp
index 85efe2724e4..64dcd62a6a0 100644
--- a/indra/newview/llviewermedia.cpp
+++ b/indra/newview/llviewermedia.cpp
@@ -1258,7 +1258,8 @@ LLPluginClassMedia* LLViewerMediaImpl::newSourceFromMediaType(std::string media_
 		{
 			LLPluginClassMedia* media_source = new LLPluginClassMedia(owner);
 			media_source->setSize(default_width, default_height);
-			if (media_source->init(launcher_name, plugin_name, gSavedSettings.getBOOL("PluginAttachDebuggerToPlugins"), user_data_path))
+			std::string language_code = LLUI::getLanguage();
+			if (media_source->init(launcher_name, plugin_name, gSavedSettings.getBOOL("PluginAttachDebuggerToPlugins"), user_data_path, language_code))
 			{
 				return media_source;
 			}
diff --git a/install.xml b/install.xml
index 2a6083a5c00..7337241cf8e 100644
--- a/install.xml
+++ b/install.xml
@@ -962,9 +962,9 @@ anguage Infrstructure (CLI) international standard</string>
           <key>windows</key>
           <map>
             <key>md5sum</key>
-            <string>1e9798dc424a6f6c2bea50649bbcc7ae</string>
+            <string>ee5d242ea468ba9a82d2bf8581aa308d</string>
             <key>url</key>
-            <uri>http://viewer-source-downloads.s3.amazonaws.com/install_pkgs/llqtwebkit-windows-qt4.6-20100210.tar.bz2</uri>
+            <uri>http://viewer-source-downloads.s3.amazonaws.com/install_pkgs/llqtwebkit-windows-qt4.6-20100312.tar.bz2</uri>
           </map>
         </map>
       </map>
-- 
GitLab