browserutilities/webutils/src/CUserAgent.cpp
changeset 13 10e98eab6f85
parent 8 7c90e6132015
child 36 0ed94ceaa377
--- a/browserutilities/webutils/src/CUserAgent.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/browserutilities/webutils/src/CUserAgent.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -30,9 +30,8 @@
 
 
 #define KPlaceHolderMozillaVer		_L("Mozilla/5.0")
-#define KPlaceHolderSecurity		_L("U;")
-#define KPlaceHolderComponent		_L("AppleWebKit/525 (KHTML, like Gecko) Version/3.0 Safari/525")
-#define KPlaceHolderBrowserName		_L("WicKed")
+#define KPlaceHolderComponent		_L("AppleWebKit/525 (KHTML, like Gecko) Version/3.0")
+#define KPlaceHolderBrowserName		_L("BrowserNG")
 
 #define KPlaceHolderSlash           _L("/")
 #define KPlaceHolderSymbianOS       _L("SymbianOS")
@@ -199,6 +198,7 @@
 	{
 	LOG_ENTERFN("CUserAgent::ReadUserAgentStringL()");
 	TInt retCode (KErrNotReady);
+	TBuf<64> ignoreConfig(0);
 
 	// If the string queried already, dont read again
 	if(iUAStrQueried)
@@ -215,33 +215,35 @@
 		User::Leave(KErrNotReady);
 		}
 	
-	/* ---------------- Read default UA string ---------------- */
-	LOG_WRITE("Reading default UA string from cenrep.");
 	if(!iBrowserCenrepStr)
 		{
 		iBrowserCenrepStr = HBufC::NewL(KMaxUserAgentStringLength);	
 		}
 
 	TPtr tempPtr = iBrowserCenrepStr->Des();
-
-	retCode = iRepository->Get(EDefaultUserAgentString, tempPtr);
-	if(retCode != KErrNone)
-		{
-		LOG_WRITE_FORMAT("Error: Reading default UA string from cenrep failed! (%d)",retCode);
-		LOG_LEAVEFN("CUserAgent::ReadUserAgentDataL()");
-		User::Leave(retCode);
+	retCode = iRepository->Get(KWebUtilsIgnoreConfig, ignoreConfig);
+	if(retCode != KErrNone || ignoreConfig == _L("0"))
+		{/* ---------------- Read default UA string ---------------- */
+			LOG_WRITE("Reading default UA string from cenrep.");
+			
+			retCode = iRepository->Get(EDefaultUserAgentString, tempPtr);
+			if(retCode != KErrNone)
+				{
+				LOG_WRITE_FORMAT("Error: Reading default UA string from cenrep failed! (%d)",retCode);
+				LOG_LEAVEFN("CUserAgent::ReadUserAgentDataL()");
+				User::Leave(retCode);
+				}
+		
+			if(!IsUAStringEmpty(tempPtr))
+				{
+				LOG_WRITE("Successfully read default UA string from cenrep, can use this as UA string");
+		
+				iUAStrQueried = TRUE;
+		
+				LOG_LEAVEFN("CUserAgent::ReadUserAgentDataL()");
+				return;
+				}
 		}
-
-	if(!IsUAStringEmpty(tempPtr))
-		{
-		LOG_WRITE("Successfully read default UA string from cenrep, can use this as UA string");
-
-		iUAStrQueried = TRUE;
-
-		LOG_LEAVEFN("CUserAgent::ReadUserAgentDataL()");
-		return;
-		}
-
 	ReadAndCreateUAStringL(tempPtr);	
 	LOG_WRITE("Successfully created a new UA string.");
 
@@ -269,6 +271,9 @@
 
 void CUserAgent::ReadMMSUserAgentStringL()
 	{
+	
+	//  MMS UA Format: <HardwareType>; <Series60Version> <MIDP_CLDC Version>
+	
 	LOG_ENTERFN("CUserAgent::ReadMMSUserAgentStringL()");
 	TInt retCode (KErrNotReady);
 
@@ -315,13 +320,27 @@
 		}
 
 	/* ---------------- Read all variant fragments and build a UA string ---------------- */
-	ReadAndCreateUAStringL(tempPtr);
+	GetMMSFragmentsL();
+			tempPtr.Append(iMMSHardwareType);
+			tempPtr.Append(KSpaceChar);
+			tempPtr.Append(iMMSS60Version);
+			tempPtr.Append(KSpaceChar);
+			tempPtr.Append(iMMSMIDPVersion);
+			tempPtr.Append(KSpaceChar);
+			tempPtr.Append(iMMSCLDCVersion);
+				
+	if(!IsUAStringEmpty(tempPtr))
+		{	
+			LOG_WRITE("Successfully created a new MMS UA string.");
+		}
+		else
+		{
+			LOG_WRITE("Failed to create a new MMS UA string...Exiting anyway");
+		}
 	
-	LOG_WRITE("Successfully created a new MMS UA string.");
-
 	iMMSUAStrQueried = TRUE;
-    LOG_LEAVEFN("CUserAgent::ReadMMSUserAgentStringL()");
-    return;
+  LOG_LEAVEFN("CUserAgent::ReadMMSUserAgentStringL()");
+  return;
 }
 
 // ---------------------------------------------------------
@@ -346,35 +365,37 @@
 // ---------------------------------------------------------
 void CUserAgent::GetFragmentsL()
 	{
-
-#ifdef BRDO_BROWSER_50_FF
-	TInt osExtFailed(0);
-	TRAP(osExtFailed, GetFragmentsFromOSExtL());
-#endif
-
 	if(iSymbianVersion.Length() <= 0)
 		{
-		LOG_WRITE("Reading SymbianVersion from osext extended api or cenrep.");
-		User::LeaveIfError(GetCenRepFragment(ESymbianOSVersion, iSymbianVersion));
+		LOG_WRITE("Reading SymbianVersion from cenrep.");
+		GetCenRepFragment(ESymbianOSVersion, iSymbianVersion);
 		}
-
 	if(iS60Version.Length() <= 0)
 		{
-		LOG_WRITE("Reading S60Version from osext extended api or cenrep.");
-		User::LeaveIfError(GetCenRepFragment(ES60Version, iS60Version));
+		LOG_WRITE("Reading S60Version from cenrep.");
+		GetCenRepFragment(ES60Version, iS60Version);
 		}
-
 	if(iHardwareType.Length() <= 0)
 		{
-		LOG_WRITE("Reading HardwareVersion from osext extended api or cenrep.");
-		User::LeaveIfError(GetCenRepFragment(EHardwareType, iHardwareType));
+		LOG_WRITE("Reading HardwareVersion from cenrep.");
+		GetCenRepFragment(EHardwareType, iHardwareType);
+		if(iHardwareType.Length() > 0)
+			{ 		iHardwareType.Append(KPlaceHolderSemiColon); 
+			}
 		}
-		
 	if(iMIDPCLDCVersion.Length() <= 0)
 		{
-    	LOG_WRITE("Reading MIDPCLDCVersion from osext extended api or cenrep.");
-    	User::LeaveIfError(GetCenRepFragment(EMIDP_CLDCVersion, iMIDPCLDCVersion));
+    	LOG_WRITE("Reading MIDPCLDCVersion from cenrep.");
+    	GetCenRepFragment(EMIDP_CLDCVersion, iMIDPCLDCVersion);
 		}
+	//Only for 5.0 and above as 3.2 does not support OSExt APIs.
+	#ifdef BRDO_BROWSER_50_FF
+		if(iSymbianVersion.Length() <= 0 || iS60Version.Length() <= 0 || iHardwareType.Length() <= 0)
+		{
+			LOG_WRITE("Read from CenRep Failed... trying osext extended api");
+			GetFragmentsFromOSExtL();
+		}
+	#endif
 	}
 
 // ---------------------------------------------------------
@@ -385,36 +406,33 @@
 	{
 	GetFragmentsL();
 
-	//
-	// Mozilla/5.0 (<Symbian Version> U; [en]; <Series60Version> <HardwareType> <MIDP_CLDC Version> ) AppleWebKit/413 (KHTML, like Gecko) Safari/413
-	//
-	
+	// Mozilla/5.0 (<Symbian Version> <Series60Version> <HardwareType> <MIDP_CLDC Version> ) AppleWebKit/413 (KHTML, like Gecko) BrowserName/Version
+		
 	aUAStringPtr.Copy(KPlaceHolderMozillaVer);
 	aUAStringPtr.Append(KSpaceChar);
-	
-	aUAStringPtr.Append(KPlaceHolderOpen);
-	
-	aUAStringPtr.Append(iSymbianVersion);
-	aUAStringPtr.Append(KSpaceChar);
-	
-	aUAStringPtr.Append(KPlaceHolderSecurity);
+	if(iSymbianVersion.Length() > 0 || iS60Version.Length() > 0 || iHardwareType.Length() > 0 || iMIDPCLDCVersion.Length() > 0)
+		{
+			aUAStringPtr.Append(KPlaceHolderOpen);
+			
+			aUAStringPtr.Append(iSymbianVersion);
+			aUAStringPtr.Append(KSpaceChar);
+			
+			aUAStringPtr.Append(iS60Version);
+			aUAStringPtr.Append(KSpaceChar);
+			
+			aUAStringPtr.Append(iHardwareType);
+			aUAStringPtr.Append(KSpaceChar);
+			
+			aUAStringPtr.Append(iMIDPCLDCVersion);
+			aUAStringPtr.Append(KSpaceChar);
+			
+			aUAStringPtr.Append(KPlaceHolderClose);
+		}
 	aUAStringPtr.Append(KSpaceChar);
-	
-	aUAStringPtr.Append(iS60Version);
-	aUAStringPtr.Append(KSpaceChar);
-	
-	aUAStringPtr.Append(iHardwareType);
-	
-	aUAStringPtr.Append(KSpaceChar);
-	aUAStringPtr.Append(iMIDPCLDCVersion);
-	aUAStringPtr.Append(KSpaceChar);
-	aUAStringPtr.Append(KPlaceHolderClose);
+	aUAStringPtr.Append(KPlaceHolderComponent);	
 	
 	aUAStringPtr.Append(KSpaceChar);
 	aUAStringPtr.Append(iBrowserNameAndVersionStr->Des());
-
-	aUAStringPtr.Append(KSpaceChar);
-	aUAStringPtr.Append(KPlaceHolderComponent);
 	}
 
 // ---------------------------------------------------------
@@ -712,11 +730,63 @@
 // -------------------------------------------------------------------------------
 void CUserAgent::GetBrowserNameAndVersionL()
 {
+  TInt ret(0);
+  TBuf<64> BrowserName(0);
 	TInt length = KMaxBrowserVersionStringLength  + KMaxBrowserNameLength;
 	iBrowserNameAndVersionStr = HBufC::NewL( length);
-
-	iBrowserNameAndVersionStr->Des().Append(KPlaceHolderBrowserName);			
+	
+	ret = iRepository->Get(KWebUtilsBrowserName, BrowserName);
+	if(ret != KErrNone)
+	{		
+		LOG_WRITE("Error: Reading default Browser Name from cenrep failed!");
+		iBrowserNameAndVersionStr->Des().Append(KPlaceHolderBrowserName);	
+	}
+	else
+	{
+		iBrowserNameAndVersionStr->Des().Append(BrowserName);		
+	}
 	iBrowserNameAndVersionStr->Des().Append(KPlaceHolderSlash);
 	iBrowserNameAndVersionStr->Des().Append( *iBrowserVersionStr );
 }
+
+// ---------------------------------------------------------
+// CUserAgent::GetFragmentsL()
+// Gets all required fragments from OSExt APIs/CenRep
+// ---------------------------------------------------------
+void CUserAgent::GetMMSFragmentsL()
+    {
+    if(iMMSHardwareType.Length() <= 0)
+        {
+        LOG_WRITE("Reading HardwareVersion from cenrep.");
+        iRepository->Get(KWebUtilsMMSUsrAg2, iMMSHardwareType);
+        if(iMMSHardwareType.Length() > 0)
+            {       iMMSHardwareType.Append(KPlaceHolderSemiColon); 
+            }
+        }
+    if(iMMSS60Version.Length() <= 0)
+        {
+        LOG_WRITE("Reading S60Version from cenrep.");
+        iRepository->Get(KWebUtilsMMSUsrAg3, iMMSS60Version);
+        }
+    if(iMMSMIDPVersion.Length() <= 0)
+        {
+        LOG_WRITE("Reading MIDPCLDCVersion from cenrep.");
+        iRepository->Get(KWebUtilsMMSUsrAg4, iMMSMIDPVersion);
+        }
+    if(iMMSCLDCVersion.Length() <= 0)
+        {
+        LOG_WRITE("Reading MIDPCLDCVersion from cenrep.");
+        iRepository->Get(KWebUtilsMMSUsrAg5, iMMSCLDCVersion);
+        }
+    //Only for 5.0 and above as 3.2 does not support OSExt APIs.
+    #ifdef BRDO_BROWSER_50_FF
+        if(iMMSS60Version.Length() <= 0 || iMMSHardwareType.Length() <= 0)
+        {
+            LOG_WRITE("Read from CenRep Failed... trying osext extended api");
+            GetFragmentsFromOSExtL();
+            iMMSHardwareType = iHardwareType;
+            iMMSS60Version = iS60Version;
+        }
+    #endif
+    }
 // End of file