Added Symbian3 smoketests Symbian3
authorMaciej Seroka <maciejs@symbian.org>
Thu, 21 Jan 2010 14:54:07 +0000
branchSymbian3
changeset 3 235c00e46fb7
parent 2 e904b452aa85
child 4 8227b407dabe
Added Symbian3 smoketests
Group/bld.inf
Group/smoketest.pl
Group/smoketest.xml
apploader/testdata/smoketest_apploader.ini
browser/bwins/BrCtlApiTestu.def
browser/data/img8.jpg
browser/data/loadtest2.html
browser/data/ui_browser_control_smoke.cfg
browser/eabi/BrCtlApiTestu.def
browser/group/Bld.inf
browser/group/BrCtlApiTest.mmp
browser/inc/BrCtlApiTest.h
browser/inc/BrCtlApiTestContainer.h
browser/inc/BrCtlApiTestDialogsProvider.h
browser/inc/BrCtlApiTestObserver.h
browser/inc/BrCtlApiTestStateChangeObserver.h
browser/init/testframework.ini
browser/src/BrCtlApiTest.cpp
browser/src/BrCtlApiTestBlocks.cpp
browser/src/BrCtlApiTestContainer.cpp
browser/src/BrCtlApiTestDialogsProvider.cpp
browser/src/BrCtlApiTestObserver.cpp
browser/src/BrCtlApiTestStateChangeObserver.cpp
email/testutils/src/T_UtilsEnumConverter.cpp
graphics/fbserv/src/T_DataFbsSession.cpp
lbs/lbstestutils/group/lbstestutils.mmp
--- a/Group/bld.inf	Thu Jan 21 12:55:15 2010 +0000
+++ b/Group/bld.inf	Thu Jan 21 14:54:07 2010 +0000
@@ -21,17 +21,18 @@
 #include "../contacts/group/bld.inf"
 #include "../messaging/Group/bld.inf"
 #include "../System/Group/bld.inf"
-#include "../Timew/Group/bld.inf"
+//#include "../Timew/Group/bld.inf"
 #include "../email/group/bld.inf"
 #include "../profiles/group/Bld.inf"
 #include "../notepad/group/bld.inf"
 #include "../appinstall/group/Bld.inf"
-#include "../lbs/group/bld.inf"
+//#include "../lbs/group/bld.inf"
 #include "../uiresources/group/bld.inf"
 #include "../inputmethods/group/Bld.inf"
-#include "../IM/group/bld.inf"
-#include "../localisation/uiftestfw/group/BLD.INF"
-#include "../localisation/apparchitecture/group/BLD.INF"
+//#include "../IM/group/bld.inf"
+//#include "../localisation/uiftestfw/group/BLD.INF"
+//#include "../localisation/apparchitecture/group/BLD.INF"
 #include "../graphics/wserv/group/bld.inf"
 #include "../http/group/bld.inf"
-#include "../mediamgmt/group/Bld.inf"
\ No newline at end of file
+#include "../mediamgmt/group/Bld.inf"
+#include "../browser/group/Bld.inf"
--- a/Group/smoketest.pl	Thu Jan 21 12:55:15 2010 +0000
+++ b/Group/smoketest.pl	Thu Jan 21 14:54:07 2010 +0000
@@ -18,6 +18,7 @@
 mkpath "temp/smoketest/localisation/general";
 mkpath "temp/smoketest/bitmap/general";
 mkpath "temp/smoketest/ethernet/general";
+mkpath "temp/smoketest/web/general";
 
 my $epoc=$ENV{'EPOCROOT'} . "epoc32/";
 copy("smoketest.xml",												"temp/test.xml");
@@ -139,5 +140,9 @@
 copy($epoc . "release/winscw/udeb/MediaMgmtSmokeTestModule.dll",	"temp/smoketest/winscw_udeb/MediaMgmtSmokeTestModule.dll");
 copy($epoc . "winscw/c/smoketest/UI_MediaMgmtSmokeTestModule.cfg",  "temp/smoketest/general/UI_MediaMgmtSmokeTestModule.cfg");
 copy($epoc . "winscw/c/smoketest/MediaMgmtSmokeTestModule.cfg",   	"temp/smoketest/general/MediaMgmtSmokeTestModule.cfg");
+copy($epoc . "data/c/smoketest/web/loadtest2.html",					"temp/smoketest/web/general/loadtest2.html");
+copy($epoc . "data/c/smoketest/web/img8.jpg",						"temp/smoketest/web/general/img8.jpg");
+copy($epoc . "winscw/c/smoketest/ui_browser_control_smoke.cfg",   	"temp/smoketest/general/ui_browser_control_smoke.cfg");
+copy($epoc . "release/winscw/udeb/BrCtlApiTest.dll",				"temp/smoketest/winscw_udeb/BrCtlApiTest.dll");
 
 system("7z a -tzip smoketest.zip ./temp/*");
--- a/Group/smoketest.xml	Thu Jan 21 12:55:15 2010 +0000
+++ b/Group/smoketest.xml	Thu Jan 21 14:54:07 2010 +0000
@@ -65,7 +65,7 @@
 							<param component-path="smoketest\emailsettings" />
 						</params>
 					</step>
-					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="true" passrate="100" significant="false">
+					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="false" passrate="100" significant="false">
 						<command>install</command>
 						<params>
 							<param type="data"/>
@@ -74,7 +74,7 @@
 							<param component-path="smoketest\10003a3f" />
 						</params>
 					</step>
-					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="true" passrate="100" significant="false">
+					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="false" passrate="100" significant="false">
 						<command>install</command>
 						<params>
 							<param type="data"/>
@@ -83,7 +83,7 @@
 							<param component-path="smoketest\10003a3f" />
 						</params>
 					</step>
-					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="true" passrate="100" significant="false">
+					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="false" passrate="100" significant="false">
 						<command>install</command>
 						<params>
 							<param type="data"/>
@@ -92,7 +92,7 @@
 							<param component-path="smoketest\10003a3f" />
 						</params>
 					</step>
-					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="true" passrate="100" significant="false">
+					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="false" passrate="100" significant="false">
 						<command>install</command>
 						<params>
 							<param type="data"/>
@@ -101,7 +101,7 @@
 							<param component-path="smoketest\10003a3f" />
 						</params>
 					</step>
-					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="true" passrate="100" significant="false">
+					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="false" passrate="100" significant="false">
 						<command>install</command>
 						<params>
 							<param type="data"/>
@@ -110,7 +110,7 @@
 							<param component-path="smoketest\10003a3f" />
 						</params>
 					</step>
-					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="true" passrate="100" significant="false">
+					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="false" passrate="100" significant="false">
 						<command>install</command>
 						<params>
 							<param type="data"/>
@@ -119,7 +119,7 @@
 							<param component-path="smoketest\10003a3f" />
 						</params>
 					</step>
-					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="true" passrate="100" significant="false">
+					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="false" passrate="100" significant="false">
 						<command>install</command>
 						<params>
 							<param type="data"/>
@@ -128,7 +128,7 @@
 							<param component-path="smoketest\10003a3f" />
 						</params>
 					</step>
-					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="true" passrate="100" significant="false">
+					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="false" passrate="100" significant="false">
 						<command>install</command>
 						<params>
 							<param type="data"/>
@@ -137,7 +137,7 @@
 							<param component-path="smoketest\10003a3f" />
 						</params>
 					</step>
-					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="true" passrate="100" significant="false">
+					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="false" passrate="100" significant="false">
 						<command>install</command>
 						<params>
 							<param type="data"/>
@@ -146,7 +146,7 @@
 							<param component-path="smoketest\10003a3f" />
 						</params>
 					</step>
-					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="true" passrate="100" significant="false">
+					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="false" passrate="100" significant="false">
 						<command>install</command>
 						<params>
 							<param type="data"/>
@@ -155,7 +155,7 @@
 							<param component-path="smoketest\10003a3f" />
 						</params>
 					</step>
-					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="true" passrate="100" significant="false">
+					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="false" passrate="100" significant="false">
 						<command>install</command>
 						<params>
 							<param type="data"/>
@@ -164,7 +164,7 @@
 							<param component-path="smoketest\10003a3f" />
 						</params>
 					</step>
-					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="true" passrate="100" significant="false">
+					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="false" passrate="100" significant="false">
 						<command>install</command>
 						<params>
 							<param type="data"/>
@@ -173,7 +173,7 @@
 							<param component-path="smoketest\10003a3f" />
 						</params>
 					</step>
-					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="true" passrate="100" significant="false">
+					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="false" passrate="100" significant="false">
 						<command>install</command>
 						<params>
 							<param type="data"/>
@@ -182,7 +182,7 @@
 							<param component-path="smoketest\10003a3f" />
 						</params>
 					</step>
-					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="true" passrate="100" significant="false">
+					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="false" passrate="100" significant="false">
 						<command>install</command>
 						<params>
 							<param type="data"/>
@@ -191,7 +191,7 @@
 							<param component-path="smoketest\10003a3f" />
 						</params>
 					</step>
-					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="true" passrate="100" significant="false">
+					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="false" passrate="100" significant="false">
 						<command>install</command>
 						<params>
 							<param type="data"/>
@@ -200,7 +200,7 @@
 							<param component-path="smoketest\10003a3f" />
 						</params>
 					</step>					
-					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="true" passrate="100" significant="false">
+					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="false" passrate="100" significant="false">
 						<command>install</command>
 						<params>
 							<param type="data"/>
@@ -209,7 +209,7 @@
 							<param component-path="smoketest\resource" />
 						</params>
 					</step>
-					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="true" passrate="100" significant="false">
+					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="false" passrate="100" significant="false">
 						<command>install</command>
 						<params>
 							<param type="data"/>
@@ -218,7 +218,7 @@
 							<param component-path="smoketest\resource" />
 						</params>
 					</step>
-					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="true" passrate="100" significant="false">
+					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="false" passrate="100" significant="false">
 						<command>install</command>
 						<params>
 							<param type="data"/>
@@ -227,7 +227,7 @@
 							<param component-path="smoketest\resource" />
 						</params>
 					</step>
-					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="true" passrate="100" significant="false">
+					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="false" passrate="100" significant="false">
 						<command>install</command>
 						<params>
 							<param type="data"/>
@@ -236,7 +236,7 @@
 							<param component-path="smoketest\resource" />
 						</params>
 					</step>
-					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="true" passrate="100" significant="false">
+					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="false" passrate="100" significant="false">
 						<command>install</command>
 						<params>
 							<param type="data"/>
@@ -245,7 +245,7 @@
 							<param component-path="smoketest\resource" />
 						</params>
 					</step>
-					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="true" passrate="100" significant="false">
+					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="false" passrate="100" significant="false">
 						<command>install</command>
 						<params>
 							<param type="data"/>
@@ -254,7 +254,7 @@
 							<param component-path="smoketest\resource" />
 						</params>
 					</step>
-					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="true" passrate="100" significant="false">
+					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="false" passrate="100" significant="false">
 						<command>install</command>
 						<params>
 							<param type="data"/>
@@ -263,7 +263,7 @@
 							<param component-path="smoketest\resource" />
 						</params>
 					</step>
-					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="true" passrate="100" significant="false">
+					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="false" passrate="100" significant="false">
 						<command>install</command>
 						<params>
 							<param type="data"/>
@@ -272,7 +272,7 @@
 							<param component-path="smoketest\resource" />
 						</params>
 					</step>
-					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="true" passrate="100" significant="false">
+					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="false" passrate="100" significant="false">
 						<command>install</command>
 						<params>
 							<param type="data"/>
@@ -281,7 +281,7 @@
 							<param component-path="smoketest\resource" />
 						</params>
 					</step>
-					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="true" passrate="100" significant="false">
+					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="false" passrate="100" significant="false">
 						<command>install</command>
 						<params>
 							<param type="data"/>
@@ -290,7 +290,7 @@
 							<param component-path="smoketest\resource" />
 						</params>
 					</step>
-					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="true" passrate="100" significant="false">
+					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="false" passrate="100" significant="false">
 						<command>install</command>
 						<params>
 							<param type="data"/>
@@ -299,7 +299,7 @@
 							<param component-path="smoketest\resource" />
 						</params>
 					</step>
-					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="true" passrate="100" significant="false">
+					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="false" passrate="100" significant="false">
 						<command>install</command>
 						<params>
 							<param type="data"/>
@@ -308,7 +308,7 @@
 							<param component-path="smoketest\resource" />
 						</params>
 					</step>
-					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="true" passrate="100" significant="false">
+					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="false" passrate="100" significant="false">
 						<command>install</command>
 						<params>
 							<param type="data"/>
@@ -317,7 +317,7 @@
 							<param component-path="smoketest\resource" />
 						</params>
 					</step>
-					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="true" passrate="100" significant="false">
+					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="false" passrate="100" significant="false">
 						<command>install</command>
 						<params>
 							<param type="data"/>
@@ -326,7 +326,7 @@
 							<param component-path="smoketest\resource" />
 						</params>
 					</step>
-					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="true" passrate="100" significant="false">
+					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="false" passrate="100" significant="false">
 						<command>install</command>
 						<params>
 							<param type="data"/>
@@ -335,7 +335,7 @@
 							<param component-path="smoketest\resource" />
 						</params>
 					</step>
-					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="true" passrate="100" significant="false">
+					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="false" passrate="100" significant="false">
 						<command>install</command>
 						<params>
 							<param type="data"/>
@@ -344,7 +344,7 @@
 							<param component-path="smoketest\resource" />
 						</params>
 					</step>
-					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="true" passrate="100" significant="false">
+					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="false" passrate="100" significant="false">
 						<command>install</command>
 						<params>
 							<param type="data"/>
@@ -353,7 +353,7 @@
 							<param component-path="smoketest\resource" />
 						</params>
 					</step>
-					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="true" passrate="100" significant="false">
+					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="false" passrate="100" significant="false">
 						<command>install</command>
 						<params>
 							<param type="data"/>
@@ -362,7 +362,7 @@
 							<param component-path="smoketest\resource" />
 						</params>
 					</step>
-					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="true" passrate="100" significant="false">
+					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="false" passrate="100" significant="false">
 						<command>install</command>
 						<params>
 							<param type="data"/>
@@ -371,7 +371,7 @@
 							<param component-path="smoketest\resource" />
 						</params>
 					</step>
-					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="true" passrate="100" significant="false">
+					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="false" passrate="100" significant="false">
 						<command>install</command>
 						<params>
 							<param type="data"/>
@@ -380,7 +380,7 @@
 							<param component-path="smoketest\localisation" />
 						</params>
 					</step>
-					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="true" passrate="100" significant="false">
+					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="false" passrate="100" significant="false">
 						<command>install</command>
 						<params>
 							<param type="data"/>
@@ -389,7 +389,7 @@
 							<param component-path="smoketest\localisation" />
 						</params>
 					</step>
-					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="true" passrate="100" significant="false">
+					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="false" passrate="100" significant="false">
 						<command>install</command>
 						<params>
 							<param type="data"/>
@@ -398,7 +398,7 @@
 							<param component-path="smoketest\localisation" />
 						</params>
 					</step>
-					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="true" passrate="100" significant="false">
+					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="false" passrate="100" significant="false">
 						<command>install</command>
 						<params>
 							<param type="data"/>
@@ -407,7 +407,7 @@
 							<param component-path="smoketest\localisation" />
 						</params>
 					</step>
-					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="true" passrate="100" significant="false">
+					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="false" passrate="100" significant="false">
 						<command>install</command>
 						<params>
 							<param type="data"/>
@@ -479,7 +479,7 @@
 							<param component-path="smoketest" />
 						</params>
 					</step>
-					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="true" passrate="100" significant="false">
+					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="false" passrate="100" significant="false">
 						<command>install</command>
 						<params>
 							<param type="binary"/>
@@ -542,7 +542,7 @@
 							<param component-path="smoketest" />
 						</params>
 					</step>						
-					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="true" passrate="100" significant="false">
+					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="false" passrate="100" significant="false">
 						<command>install</command>
 						<params>
 							<param type="binary"/>
@@ -551,7 +551,7 @@
 							<param component-path="smoketest" />
 						</params>
 					</step>	
-					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="true" passrate="100" significant="false">
+					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="false" passrate="100" significant="false">
 						<command>install</command>
 						<params>
 							<param type="binary"/>
@@ -560,7 +560,7 @@
 							<param component-path="smoketest" />
 						</params>
 					</step>	
-					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="true" passrate="100" significant="false">
+					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="false" passrate="100" significant="false">
 						<command>install</command>
 						<params>
 							<param type="binary"/>
@@ -569,7 +569,7 @@
 							<param component-path="smoketest" />
 						</params>
 					</step>
-					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="true" passrate="100" significant="false">
+					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="false" passrate="100" significant="false">
 						<command>install</command>
 						<params>
 							<param type="binary"/>
@@ -578,7 +578,7 @@
 							<param component-path="smoketest" />
 						</params>
 					</step>
-					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="true" passrate="100" significant="false">
+					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="false" passrate="100" significant="false">
 						<command>install</command>
 						<params>
 							<param type="binary"/>
@@ -587,7 +587,7 @@
 							<param component-path="smoketest" />
 						</params>
 					</step>
-					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="true" passrate="100" significant="false">
+					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="false" passrate="100" significant="false">
 						<command>install</command>
 						<params>
 							<param type="binary"/>
@@ -596,7 +596,7 @@
 							<param component-path="smoketest" />
 						</params>
 					</step>
-					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="true" passrate="100" significant="false">
+					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="false" passrate="100" significant="false">
 						<command>install</command>
 						<params>
 							<param type="binary"/>
@@ -605,7 +605,7 @@
 							<param component-path="smoketest" />
 						</params>
 					</step>
-					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="true" passrate="100" significant="false">
+					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="false" passrate="100" significant="false">
 						<command>install</command>
 						<params>
 							<param type="binary"/>
@@ -614,7 +614,7 @@
 							<param component-path="smoketest" />
 						</params>
 					</step>
-					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="true" passrate="100" significant="false">
+					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="false" passrate="100" significant="false">
 						<command>install</command>
 						<params>
 							<param type="binary"/>
@@ -623,7 +623,7 @@
 							<param component-path="smoketest" />
 						</params>
 					</step>
-					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="true" passrate="100" significant="false">
+					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="false" passrate="100" significant="false">
 						<command>install</command>
 						<params>
 							<param type="binary"/>
@@ -632,7 +632,7 @@
 							<param component-path="smoketest" />
 						</params>
 					</step>					
-					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="true" passrate="100" significant="false">
+					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="false" passrate="100" significant="false">
 						<command>install</command>
 						<params>
 							<param type="binary"/>
@@ -641,7 +641,7 @@
 							<param component-path="smoketest" />
 						</params>
 					</step>
-					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="true" passrate="100" significant="false">
+					<step id="" name="Test Step 1 (install)" harness="GENERIC" enabled="false" passrate="100" significant="false">
 						<command>install</command>
 						<params>
 							<param type="binary"/>
@@ -701,7 +701,7 @@
 							<param file="testexecute.exe"/>
 							<param parameters="c:\smoketest\smoketest_apploader.script"/>
 							<param result-file="c:\logs\testexecute\smoketest_apploader.htm"/>
-							<param timeout="600"/>
+							<param timeout="1200"/>
 							<param parser="TEFTestResultParser"/>
 							<param leave-old-result="true"/>
 						</params>
@@ -712,7 +712,7 @@
 							<param file="testexecute.exe"/>
 							<param parameters="c:\smoketest\smoketest_agenda.script"/>
 							<param result-file="c:\logs\testexecute\smoketest_agenda.htm"/>
-							<param timeout="600"/>
+							<param timeout="1200"/>
 							<param parser="TEFTestResultParser"/>
 							<param leave-old-result="true"/>
 						</params>
@@ -723,7 +723,7 @@
 							<param file="testexecute.exe"/>
 							<param parameters="c:\smoketest\smoketest_contacts.script"/>
 							<param result-file="c:\logs\testexecute\smoketest_contacts.htm"/>
-							<param timeout="600"/>
+							<param timeout="1200"/>
 							<param parser="TEFTestResultParser"/>
 							<param leave-old-result="true"/>
 						</params>
@@ -734,18 +734,18 @@
 							<param file="testexecute.exe"/>
 							<param parameters="c:\smoketest\smoketest_mess.script"/>
 							<param result-file="c:\logs\testexecute\smoketest_mess.htm"/>
-							<param timeout="600"/>
+							<param timeout="1200"/>
 							<param parser="TEFTestResultParser"/>
 							<param leave-old-result="true"/>
 						</params>
 					</step>
-					<step id="" name="Test Step 2 (execute)" harness="GENERIC" enabled="true" passrate="100" significant="true">
+					<step id="" name="Test Step 2 (execute)" harness="GENERIC" enabled="false" passrate="100" significant="true">
 						<command>execute</command>
 						<params>
 							<param file="testexecute.exe"/>
 							<param parameters="c:\smoketest\smoketest_timew.script"/>
 							<param result-file="c:\logs\testexecute\smoketest_timew.htm"/>
-							<param timeout="600"/>
+							<param timeout="1200"/>
 							<param parser="TEFTestResultParser"/>
 							<param leave-old-result="true"/>
 						</params>
@@ -756,23 +756,23 @@
 							<param file="testexecute.exe"/>
 							<param parameters="c:\smoketest\smoketest_email.script"/>
 							<param result-file="c:\logs\testexecute\smoketest_email.htm"/>
-							<param timeout="600"/>
+							<param timeout="1200"/>
 							<param parser="TEFTestResultParser"/>
 							<param leave-old-result="true"/>
 						</params>
 					</step>
-					<step id="" name="Test Step 2 (execute)" harness="GENERIC" enabled="true" passrate="100" significant="true">
+					<step id="" name="Test Step 2 (execute)" harness="GENERIC" enabled="false" passrate="100" significant="true">
 						<command>execute</command>
 						<params>
 							<param file="testexecute.exe"/>
 							<param parameters="c:\smoketest\smoketest_lbs.script"/>
 							<param result-file="c:\logs\testexecute\smoketest_lbs.htm"/>
-							<param timeout="600"/>
+							<param timeout="1200"/>
 							<param parser="TEFTestResultParser"/>
 							<param leave-old-result="true"/>
 						</params>
 					</step>
-					<step id="" name="Test Step 2 (execute)" harness="GENERIC" enabled="true" passrate="100" significant="true">
+					<step id="" name="Test Step 2 (execute)" harness="GENERIC" enabled="false" passrate="100" significant="true">
 						<command>execute</command>
 						<params>
 							<param file="testexecute.exe"/>
@@ -801,7 +801,7 @@
 							<param file="perl"/>
 							<param dir="D:\ATS\winscw_smoketest\epoc32\winscw\c"/>
 							<param parameters="delproxy.pl ethernetced.xml"/>
-							<param timeout="600"/>
+							<param timeout="1200"/>
 							<param async="false"/>
 						</params>
 					</step>
@@ -821,7 +821,7 @@
 						<params>
 							<param file="dbcreator.exe"/>
 							<param parameters="-dtextshell -- f:c:\S60_32_default_snaps.xml"/>
-							<param timeout="600"/>
+							<param timeout="1200"/>
 						</params>
 					</step>
 					<step id="" name="Test Step 2 (execute)" harness="GENERIC" enabled="true" passrate="100" significant="true">
@@ -830,7 +830,7 @@
 							<param file="testexecute.exe"/>
 							<param parameters="c:\smoketest\smoketest_http.script"/>
 							<param result-file="c:\logs\testexecute\smoketest_http.htm"/>
-							<param timeout="600"/>
+							<param timeout="1200"/>
 							<param parser="TEFTestResultParser"/>
 							<param leave-old-result="true"/>
 						</params>
@@ -995,7 +995,7 @@
 							<param component-path="smoketest" />
 						</params>
 					</step>
-					<step id="" name="IMApiTest.dll (install)" harness="ATSINTERFACE" enabled="true" passrate="100" significant="false">
+					<step id="" name="IMApiTest.dll (install)" harness="ATSINTERFACE" enabled="false" passrate="100" significant="false">
 						<command>install</command>
 						<params>
 							<param type="binary"/>
@@ -1004,7 +1004,7 @@
 							<param component-path="smoketest" />
 						</params>
 					</step>
-                    <step id="" name="imapitest.ini (install)" harness="ATSINTERFACE" enabled="true" passrate="100" significant="false">
+                    <step id="" name="imapitest.ini (install)" harness="ATSINTERFACE" enabled="false" passrate="100" significant="false">
 						<command>install</command>
 						<params>
 							<param type="data"/>
@@ -1040,13 +1040,49 @@
 							<param component-path="smoketest" />
 						</params>
 					</step>
+                    <step id="" name="BrCtlApiTest.dll (install)" harness="ATSINTERFACE" enabled="true" passrate="100" significant="false">
+						<command>install</command>
+						<params>
+							<param type="binary"/>
+							<param src="BrCtlApiTest.dll"/>
+							<param dst="c:\sys\bin\BrCtlApiTest.dll"/>
+							<param component-path="smoketest" />
+						</params>
+					</step>
+					<step id="" name="loadtest2.html (install)" harness="ATSINTERFACE" enabled="true" passrate="100" significant="false">
+						<command>install</command>
+						<params>
+							<param type="data"/>
+							<param src="loadtest2.html"/>
+							<param dst="c:/smoketest/web/loadtest2.html"/>
+							<param component-path="smoketest\web" />
+						</params>
+					</step>
+					<step id="" name="img8.jpg (install)" harness="ATSINTERFACE" enabled="true" passrate="100" significant="false">
+						<command>install</command>
+						<params>
+							<param type="data"/>
+							<param src="img8.jpg"/>
+							<param dst="c:/smoketest/web/img8.jpg"/>
+							<param component-path="smoketest\web" />
+						</params>
+					</step>
+					<step id="" name="ui_browser_control_smoke.cfg (install)" harness="ATSINTERFACE" enabled="true" passrate="100" significant="false">
+						<command>install</command>
+						<params>
+							<param type="data"/>
+							<param src="ui_browser_control_smoke.cfg"/>
+							<param dst="c:\smoketest\ui_browser_control_smoke.cfg"/>
+							<param component-path="smoketest" />
+						</params>
+					</step>
 					<step id="" name="ProfileSmokeTestModule (execute)" harness="ATSINTERFACE" enabled="true" passrate="100" significant="true">
 						<command>execute</command>
 						<params>
 							<param file="atsinterface.exe"/>
 							<param parameters="-testmodule testscripter -config c:\smoketest\ProfileSmokeTestModule.cfg"/>
 							<param result-file="c:\spd_logs\xml\testscripter.xml"/>
-							<param timeout="600"/>
+							<param timeout="1200"/>
 						</params>
 					</step>
 					<step id="" name="smoketest_notepad (execute)" harness="ATSINTERFACE" enabled="true" passrate="100" significant="true">
@@ -1055,7 +1091,7 @@
 							<param file="atsinterface.exe"/>
 							<param parameters="-testmodule testcombiner -config c:\smoketest\smoketest_notepad.cfg"/>
 							<param result-file="c:\spd_logs\xml\testcombiner.xml"/>
-							<param timeout="600"/>
+							<param timeout="1200"/>
 						</params>
 					</step>
 					<step id="" name="AppInstallSmokeTestModule (execute)" harness="ATSINTERFACE" enabled="true" passrate="100" significant="true">
@@ -1073,7 +1109,7 @@
 							<param file="atsinterface.exe"/>
 							<param parameters="-testmodule testcombiner -config c:\smoketest\smoketest_uiresources.cfg"/>
 							<param result-file="c:\spd_logs\xml\testcombiner.xml"/>
-							<param timeout="600"/>
+							<param timeout="1200"/>
 						</params>
 					</step>
 					<step id="" name="InputMethodSmokeTestModule (execute)" harness="ATSINTERFACE" enabled="true" passrate="100" significant="true">
@@ -1082,16 +1118,16 @@
 							<param file="atsinterface.exe"/>
 							<param parameters="-testmodule testscripter -config c:\smoketest\InputMethodSmokeTestModule.cfg"/>
 							<param result-file="c:\spd_logs\xml\testscripter.xml"/>
-							<param timeout="600"/>
+							<param timeout="1200"/>
 						</params>
 					</step>					
-					<step id="" name="IMApiTest (execute)" harness="ATSINTERFACE" enabled="true" passrate="100" significant="true">
+					<step id="" name="IMApiTest (execute)" harness="ATSINTERFACE" enabled="false" passrate="100" significant="true">
 						<command>execute</command>
 						<params>
 							<param file="atsinterface.exe"/>
 							<param parameters="-testmodule IMApiTest"/>
 							<param result-file="c:\spd_logs\xml\imapitest.xml"/>
-							<param timeout="600"/>
+							<param timeout="1200"/>
 						</params>
 					</step>
 					<step id="" name="MediaMgmtSmokeTestModule (execute)" harness="ATSINTERFACE" enabled="true" passrate="100" significant="true">
@@ -1103,6 +1139,15 @@
 							<param timeout="600"/>
 						</params>
 					</step>
+					<step id="" name="ui_browser_control_smoke (execute)" harness="ATSINTERFACE" enabled="true" passrate="100" significant="true">
+						<command>execute</command>
+						<params>
+							<param file="atsinterface.exe"/>
+							<param parameters="-testmodule testscripter -config c:\smoketest\ui_browser_control_smoke.cfg"/>
+							<param result-file="c:\spd_logs\xml\testscripter.xml"/>
+							<param timeout="1200"/>
+						</params>
+					</step>
 				</case>
             </set>
 		</session>
@@ -1117,13 +1162,11 @@
 		<file>smoketest/general/smoketest_createsmsaccount.script</file>
 		<file>smoketest/general/smoketest_mess.ini</file>
 		<file>smoketest/general/smoketest_mess.script</file>
-		<file>smoketest/general/smoketest_timew.ini</file>
-		<file>smoketest/general/smoketest_timew.script</file>
+
 		<file>smoketest/general/smoketest_email.ini</file>
 		<file>smoketest/general/smoketest_email.script</file>
-		<file>smoketest/general/smoketest_lbs.ini</file>
-		<file>smoketest/general/smoketest_lbs.script</file>
-		<file>smoketest/general/smoketest_language.script</file>
+
+
 		<file>smoketest/general/smoketest_bitmap.ini</file>
 		<file>smoketest/general/smoketest_bitmap.script</file>
 		<file>smoketest/general/smoketest_http.ini</file>
@@ -1132,45 +1175,7 @@
 		<file>smoketest/general/MachineName.txt</file>
 		<file>smoketest/emailmessage/general/20KBody.txt</file>
 		<file>smoketest/emailsettings/general/popsettings_test908.txt</file>
-		<file>smoketest/10003a3f/general/openservice1a.rsc</file>
-		<file>smoketest/10003a3f/general/openservice1b.rsc</file>
-		<file>smoketest/10003a3f/general/serverapp2_reg.rsc</file>
-		<file>smoketest/10003a3f/general/serverapp3_reg.rsc</file>
-		<file>smoketest/10003a3f/general/serverapp4_reg.rsc</file>
-		<file>smoketest/10003a3f/general/serverapp6_reg.rsc</file>
-		<file>smoketest/10003a3f/general/serverapp7_reg.rsc</file>
-		<file>smoketest/10003a3f/general/serverapp_reg.rsc</file>
-		<file>smoketest/10003a3f/general/t_dataprioritysystem3_reg.rsc</file>
-		<file>smoketest/10003a3f/general/t_groupname_reg.rsc</file>
-		<file>smoketest/10003a3f/general/t_groupnamever1_reg.rsc</file>
-		<file>smoketest/10003a3f/general/t_groupnamever2_reg.rsc</file>
-		<file>smoketest/10003a3f/general/tctrlpnlapp_reg.rsc</file>
-		<file>smoketest/10003a3f/general/testtrustedpriorityapp1_reg.rsc</file>
-		<file>smoketest/10003a3f/general/testtrustedpriorityapp2_reg.rsc</file>
-		<file>smoketest/resource/general/customisedefaulticonapp_loc.rsc</file>
-		<file>smoketest/resource/general/default_app_icon.m02</file>
-		<file>smoketest/resource/general/serverapp_loc.rsc</file>
-		<file>smoketest/resource/general/t_groupname_loc.rsc</file>
-		<file>smoketest/resource/general/t_groupnamever1_loc.rsc</file>
-		<file>smoketest/resource/general/t_groupnamever2_loc.rsc</file>
-		<file>smoketest/resource/general/tstapp02.m02</file>
-		<file>smoketest/resource/general/tstapp.mbm</file>
-		<file>smoketest/resource/general/tstapp.rsc</file>
-		<file>smoketest/resource/general/tstapp_loc.r01</file>
-		<file>smoketest/resource/general/tstapp_loc.r02</file>
-		<file>smoketest/resource/general/tstapp_loc.r03</file>
-		<file>smoketest/resource/general/tstapp_loc.r04</file>
-		<file>smoketest/resource/general/tstapp_loc.r05</file>
-		<file>smoketest/resource/general/tstapp_loc.rsc</file>
-		<file>smoketest/resource/general/tstappview</file>
-		<file>smoketest/resource/general/tstappview01.m01</file>
-		<file>smoketest/resource/general/tstappview01.m02</file>
-		<file>smoketest/resource/general/tstappview02.k</file>
-		<file>smoketest/localisation/general/customisedefaulticonapp_reg.rsc</file>
-		<file>smoketest/localisation/general/testuntrustedpriorityapp1_reg.rsc</file>
-		<file>smoketest/localisation/general/testuntrustedpriorityapp2_reg.rsc</file>
-		<file>smoketest/localisation/general/tstapp_reg.rsc</file>
-		<file>smoketest/localisation/general/tstapp_embedded.rsc</file>
+
 		<file>smoketest/bitmap/general/uibench_16bit.mbm</file>
 		<file>smoketest/ethernet/general/delproxy.pl</file>
 		<file>smoketest/winscw_udeb/SmokeTestSecureFSclient.dll</file>
@@ -1180,23 +1185,13 @@
 		<file>smoketest/winscw_udeb/Smoketest_Contacts_Server.exe</file>
 		<file>smoketest/winscw_udeb/Smoketest_Mess_Server.exe</file>
 		<file>smoketest/winscw_udeb/Smoketest_System.exe</file>
-		<file>smoketest/winscw_udeb/Smoketest_Timew_Server.exe</file>
+
 		<file>smoketest/winscw_udeb/SmokeTest_Utils.dll</file>
 		<file>smoketest/winscw_udeb/t_msgutilityserver.dll</file>
 		<file>smoketest/winscw_udeb/t_msgpopserver.exe</file>
 		<file>smoketest/winscw_udeb/t_msgsmtpserver.exe</file>
-		<file>smoketest/winscw_udeb/lbstestutils.dll</file>
-		<file>smoketest/winscw_udeb/lbstestclient.dll</file>
-		<file>smoketest/winscw_udeb/lbstestchannel.dll</file>
-		<file>smoketest/winscw_udeb/lbstestserver.exe</file>
-		<file>smoketest/winscw_udeb/ctlbsexeclient.exe</file>
-		<file>smoketest/winscw_udeb/lbsclienttestserver.exe</file>
-		<file>smoketest/winscw_udeb/appfwk_test_AppUi.dll</file>
-		<file>smoketest/winscw_udeb/appfwk_test_utils.dll</file>
-		<file>smoketest/winscw_udeb/TIconLoaderAndIconArrayForLeaks.dll</file>
-		<file>smoketest/winscw_udeb/TSTAPP_embedded.dll</file>
-		<file>smoketest/winscw_udeb/apparctestserver.exe</file>
-		<file>smoketest/winscw_udeb/tstapp.exe</file>
+
+		
 		<file>smoketest/winscw_udeb/t_animplugin.dll</file>
 		<file>smoketest/winscw_udeb/t_graphicswservapi.exe</file>
 		<file>smoketest/winscw_udeb/twsgraphicshare.exe</file>
@@ -1217,10 +1212,13 @@
 		<file>smoketest/wallpaper/general/symbian_01_320x480.jpg</file>
         <file>smoketest/winscw_udeb/InputMethodSmokeTestModule.dll</file>
         <file>smoketest/general/InputMethodSmokeTestModule.cfg</file>
-		<file>smoketest/winscw_udeb/IMApiTest.dll</file>	
-		<file>smoketest/general/imapitest.ini</file>
+
 		<file>smoketest/winscw_udeb/MediaMgmtSmokeTestModule.dll</file>
 		<file>smoketest/general/UI_MediaMgmtSmokeTestModule.cfg</file>
 		<file>smoketest/general/MediaMgmtSmokeTestModule.cfg</file>
+		<file>smoketest/web/general/loadtest2.html</file>
+		<file>smoketest/web/general/img8.jpg</file>
+		<file>smoketest/general/ui_browser_control_smoke.cfg</file>
+		<file>smoketest/winscw_udeb/BrCtlApiTest.dll</file>
 	</files>
 </test>
--- a/apploader/testdata/smoketest_apploader.ini	Thu Jan 21 12:55:15 2010 +0000
+++ b/apploader/testdata/smoketest_apploader.ini	Thu Jan 21 14:54:07 2010 +0000
@@ -11,7 +11,7 @@
 program	=Clock
 
 [SMOKE_APP_RUNNING_0004]
-program	=Messaging
+program	=Messages
 
 [SMOKE_APP_LAUNCH_0005]
 program	=NSmlDSSync.exe
@@ -23,7 +23,7 @@
 program	=Calendar
 
 [SMOKE_APP_RUNNING_0007]
-program	=Contacts
+program	=Phonebook 2
 
 [SMOKE_APP_KEYEVENTS_0008]
 delay1	=2000
@@ -51,4 +51,4 @@
 program	=Notepad.exe
 
 [SMOKE_APP_END_0011]
-program	=Notes
+program	=Notepad
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/browser/bwins/BrCtlApiTestu.def	Thu Jan 21 14:54:07 2010 +0000
@@ -0,0 +1,3 @@
+EXPORTS
+	?LibEntryL@@YAPAVCScriptBase@@AAVCTestModuleIf@@@Z @ 1 NONAME ; class CScriptBase * LibEntryL(class CTestModuleIf &)
+
Binary file browser/data/img8.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/browser/data/loadtest2.html	Thu Jan 21 14:54:07 2010 +0000
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML><HEAD>
+<TITLE>Demo </TITLE>
+
+<script type="text/javascript">
+function SetFocus()
+{
+document.getElementById('button1').focus();
+}
+</script>
+</HEAD>
+
+<BODY onload='SetFocus()' bgColor=#ffffff leftMargin=0 topMargin=0 marginheight="0" marginwidth="0">
+
+	<p>
+	This test tests that LoadData actually works.
+	If you see this page the test passed.
+	<form>
+	<input type='text' id='box1' />
+	<input type='submit' id='button1' value='button1' />
+	<br/>
+	<input type='submit' id='button2' value='#2' />
+	<input type='text' id='box2' />
+	</form>
+
+	<img src="img8.jpg" id='image' />
+</BODY>
+</HTML>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/browser/data/ui_browser_control_smoke.cfg	Thu Jan 21 14:54:07 2010 +0000
@@ -0,0 +1,9 @@
+[Test]
+title BrCtl Smoke Test
+create BrCtlApiTest container
+container CreateBrowserControl
+container BrCtlSubscribeToMenuItems
+pause 3000
+container DestroyBrowserControl
+delete container
+[Endtest]
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/browser/eabi/BrCtlApiTestu.def	Thu Jan 21 14:54:07 2010 +0000
@@ -0,0 +1,11 @@
+EXPORTS
+	_Z9LibEntryLR13CTestModuleIf @ 1 NONAME
+	_ZTI21CBrCtlApiTestObserver @ 2 NONAME ; #<TI>#
+	_ZTI22CBrCtlApiTestContainer @ 3 NONAME ; #<TI>#
+	_ZTI28CBrowserDialogsProviderProxy @ 4 NONAME ; #<TI>#
+	_ZTI32CBrCtlApiTestStateChangeObserver @ 5 NONAME ; #<TI>#
+	_ZTV21CBrCtlApiTestObserver @ 6 NONAME ; #<VT>#
+	_ZTV22CBrCtlApiTestContainer @ 7 NONAME ; #<VT>#
+	_ZTV28CBrowserDialogsProviderProxy @ 8 NONAME ; #<VT>#
+	_ZTV32CBrCtlApiTestStateChangeObserver @ 9 NONAME ; #<VT>#
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/browser/group/Bld.inf	Thu Jan 21 14:54:07 2010 +0000
@@ -0,0 +1,41 @@
+/*
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  ?Description
+*
+*/
+
+
+
+PRJ_PLATFORMS
+DEFAULT
+
+PRJ_TESTEXPORTS
+//../init/testframework.ini           /epoc32/winscw/c/TestFramework/testframework.ini
+
+../data/ui_browser_control_smoke.cfg	c:/smoketest/ui_browser_control_smoke.cfg
+
+../data/loadtest2.html 					c:/smoketest/web/loadtest2.html
+
+../data/img8.jpg						c:/smoketest/web/img8.jpg
+
+PRJ_EXPORTS
+// Nothing to do 
+
+PRJ_TESTMMPFILES
+BrCtlApiTest.mmp
+
+PRJ_MMPFILES
+// Nothing to do 
+
+//  End of File
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/browser/group/BrCtlApiTest.mmp	Thu Jan 21 14:54:07 2010 +0000
@@ -0,0 +1,63 @@
+/*
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  ?Description
+*
+*/
+
+#include <platform_paths.hrh>
+#include <platform/mw/Browser_platform_variant.hrh>
+
+TARGET          BrCtlApiTest.dll
+TARGETTYPE      dll
+UID             0x1000008D 0x101FB3E3
+
+CAPABILITY      ALL -TCB
+/* Remove comments and replace 0x00000000 with correct vendor id */
+// VENDORID     0x00000000
+/* Remove comments and replace 0x00000000 with correct secure id */
+// SECUREID     0x00000000
+
+DEFFILE         BrCtlApiTest.def
+
+USERINCLUDE .
+USERINCLUDE ../inc
+USERINCLUDE ../../inc
+
+MW_LAYER_SYSTEMINCLUDE
+
+SYSTEMINCLUDE   . 
+MW_LAYER_ECOM_SYSTEMINCLUDE
+
+SOURCEPATH      ../src
+SOURCE          BrCtlApiTest.cpp BrCtlApiTestBlocks.cpp
+SOURCE          BrCtlApiTestContainer.cpp BrCtlApiTestObserver.cpp 
+SOURCE          BrCtlApiTestStateChangeObserver.cpp BrCtlApiTestDialogsProvider.cpp
+
+LIBRARY         euser.lib cone.lib eikcore.lib apparc.lib avkon.lib 
+LIBRARY         flogger.lib apmime.lib apgrfx.lib efsrv.lib eikcoctl.lib 
+LIBRARY         commonui.lib ecom.lib eikdlg.lib aknnotify.lib
+
+// stif framework
+LIBRARY         stiftestinterface.lib stiftestengine.lib
+
+// component under test
+LIBRARY     browserengine.lib
+
+#ifdef __S60_32__
+LANG sc 
+#else
+LANGUAGE_IDS 
+#endif
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/browser/inc/BrCtlApiTest.h	Thu Jan 21 14:54:07 2010 +0000
@@ -0,0 +1,176 @@
+/*
+* Copyright (c) 2002 - 2007 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  ?Description
+*
+*/
+
+
+
+#ifndef BRCTLAPITEST_H
+#define BRCTLAPITEST_H
+
+//  INCLUDES
+#include <StifLogger.h>
+#include <TestScripterInternal.h>
+#include <StifTestModule.h>
+
+#include <coecntrl.h>
+#include "BrCtlApiTestContainer.h"
+
+// CONSTANTS
+//const ?type ?constant_var = ?constant;
+
+// MACROS
+//#define ?macro ?macro_def
+#define TEST_CLASS_VERSION_MAJOR 0
+#define TEST_CLASS_VERSION_MINOR 0
+#define TEST_CLASS_VERSION_BUILD 0
+
+// Logging path
+_LIT( KBrCtlApiTestLogPath, "\\logs\\testframework\\BrCtlApiTest\\" ); 
+// Log file
+_LIT( KBrCtlApiTestLogFile, "BrCtlApiTest.txt" ); 
+_LIT( KBrCtlApiTestLogFileWithTitle, "BrCtlApiTest_[%S].txt" );
+
+// FUNCTION PROTOTYPES
+//?type ?function_name(?arg_list);
+
+// FORWARD DECLARATIONS
+//class ?FORWARD_CLASSNAME;
+class CBrowserControlApiTest;
+
+// DATA TYPES
+//enum ?declaration
+//typedef ?declaration
+//extern ?data_type;
+
+// CLASS DECLARATION
+
+/**
+*  CBrowserControlApiTest test class for STIF Test Framework TestScripter.
+*  ?other_description_lines
+*
+*  @lib ?library
+*  @since ?Series60_version
+*/
+NONSHARABLE_CLASS(CBrowserControlApiTest) : public CScriptBase
+    {
+    public:  // Constructors and destructor
+
+        /**
+        * Two-phased constructor.
+        */
+        static CBrowserControlApiTest* NewL( CTestModuleIf& aTestModuleIf );
+
+        /**
+        * Destructor.
+        */
+        virtual ~CBrowserControlApiTest();
+
+    public: // New functions
+
+        /**
+        * ?member_description.
+        * @since ?Series60_version
+        * @param ?arg1 ?description
+        * @return ?description
+        */
+        //?type ?member_function( ?type ?arg1 );
+
+    public: // Functions from base classes
+
+        /**
+        * From CScriptBase Runs a script line.
+        * @since ?Series60_version
+        * @param aItem Script line containing method name and parameters
+        * @return Symbian OS error code
+        */
+        virtual TInt RunMethodL( CStifItemParser& aItem );
+
+    private:
+
+        /**
+        * C++ default constructor.
+        */
+        CBrowserControlApiTest( CTestModuleIf& aTestModuleIf );
+
+        /**
+        * By default Symbian 2nd phase constructor is private.
+        */
+        void ConstructL();
+
+        /**
+        * Frees all resources allocated from test methods.
+        * @since ?Series60_version
+        */
+        void Delete();
+
+        /**
+        * Test methods are listed below. 
+        */
+
+        /**
+        * Example test method.
+        * @since ?Series60_version
+        * @param aItem Script line containing parameters.
+        * @return Symbian OS error code.
+        */
+        virtual TInt ExampleL( CStifItemParser& aItem );
+        virtual TInt CreateBrCtlL( CStifItemParser& aItem );
+        virtual TInt DestroyBrowserControlL( CStifItemParser& aItem );
+        virtual TInt ZoomLevels( CStifItemParser& aItem );
+        virtual TInt HandleCommandL( CStifItemParser& aItem );
+        virtual TInt LoadData( CStifItemParser& aItem );
+        virtual TInt SavedPageL( CStifItemParser& aItem );
+        virtual TInt CertInfo( CStifItemParser& aItem );
+        virtual TInt SetSelfDownloadContentTypes( CStifItemParser& aItem );
+        virtual TInt NavigationAvailable( CStifItemParser& aItem );
+        virtual TInt PageInfo( CStifItemParser& aItem );
+        virtual TInt EmptyCache( CStifItemParser& aItem );
+        virtual TInt GetBitmapData( CStifItemParser& aResult );
+        virtual TInt SaveToFile( CStifItemParser& aResult );
+        virtual TInt OkToExit( CStifItemParser& aResult );
+        virtual TInt OfferKeyEvent( CStifItemParser& aResult );
+        virtual TInt MinimumSize( CStifItemParser& aResult );
+        virtual TInt FocusedElementType( CStifItemParser& aResult );
+        virtual TInt ContentSize( CStifItemParser& aResult );
+        virtual TInt BrCtlSetParam( CStifItemParser& aResult );
+        virtual TInt BrCtlSubscribeToMenuItemsL( CStifItemParser& aResult );
+        virtual TInt FocusedImage( CStifItemParser& aResult );
+        virtual TInt BrCtlSettings( CStifItemParser& aResult );
+        virtual TInt FindKeyword( CStifItemParser& aResult );
+        virtual TInt CommandObserver( CStifItemParser& aResult );
+        virtual TInt AddOptionMenuItems( CStifItemParser& aResult );
+        virtual TInt BrCtlInitLoadData( CStifItemParser& aResult );        
+        virtual TInt HandleDownloadCommand( CStifItemParser& aResult );
+        virtual TInt VersionInfo( CStifItemParser& aResult );
+        virtual TInt WmlOptionMenuItems( CStifItemParser& aResult );
+        virtual TInt ImageCount( CStifItemParser& aResult);
+        virtual TInt PostUrlL( CStifItemParser& aResult);
+        virtual TInt CreateBrCtlWithWidgetExtensionL( CStifItemParser& aItem ); // Added for Widget Extension Test
+	virtual TInt TestHistoryHandlerL( CStifItemParser& aItem );
+	virtual TInt TestWMLLoadL( CStifItemParser& aItem );		
+		
+        /**
+         * Method used to log version of test class
+         */
+        void SendTestClassVersion();
+
+    private:    // Data
+        CBrCtlApiTestContainer* iBrCtlTestContainer;
+    };
+
+#endif      // BRCTLAPITEST_H
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/browser/inc/BrCtlApiTestContainer.h	Thu Jan 21 14:54:07 2010 +0000
@@ -0,0 +1,184 @@
+/*
+* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  CBrCtlApiTestContainer from BrCtlBCTestContainer.h
+*
+*/
+
+#ifndef BRCTLBCTESTCONTAINER_H
+#define BRCTLBCTESTCONTAINER_H
+
+// INCLUDES
+#include <coecntrl.h>
+#include <BrCtlInterface.h> // interface under test
+
+#include "BrCtlApiTestObserver.h"
+#include "BrCtlApiTestStateChangeObserver.h"
+#include "BrCtlApiTestDialogsProvider.h"
+   
+// CONSTATNS
+const TInt KThisAppUid = 0xA0000181;
+
+_LIT( KUrlLoadTestHtml, "c:\\BrCtlTest\\loadtest.html" );
+_LIT( KUrlLoadTestHtml2, "file:///c:\\smoketest\\web\\loadtest2.html" );
+_LIT( KUrlHistoryHandlerHtml1, "file:///c:\\BrCtlTest\\historytest1.html" );
+_LIT( KUrlHistoryHandlerHtml2, "file:///c:\\BrCtlTest\\historytest2.html" );
+_LIT( KUrlHistoryHandlerHtml3, "file:///c:\\BrCtlTest\\historytest3.html" );
+_LIT( KUrlLoadTestWml1, "file:///c:\\BrCtlTest\\loadtest1.wml" );
+_LIT( KUrlLoadTestWml2, "file:///c:\\BrCtlTest\\loadtest2.wml" );
+_LIT( KUrlLoadTestWml3, "file:///c:\\BrCtlTest\\loadtest3.wml" );
+
+enum TBrCtlFindResponseExpected
+  {
+  EFindNoMatchesExpected = 0, ///< Reserved for future use
+  EFindMatchExpected,    ///< Reserved for future use
+  EFindMoreMatchesExpected    ///< Reserved for future use
+  };
+
+
+
+// FORWARD DECLARATIONS
+//class CBrCtlInterface;
+
+// CLASS DECLARATION
+
+/**
+*  CBrCtlApiTestContainer  container control class.
+*  
+*/
+class CBrCtlApiTestContainer : public CCoeControl,
+                                     MCoeControlObserver,
+                                     MBrCtlDataLoadSupplier,
+                                     MBrCtlCommandObserver,
+                                     MWidgetCallback // Added for WidgetExtension Test
+    {
+    public: // Constructors and destructor
+        void ConstructL (const TRect& aRect );
+        ~CBrCtlApiTestContainer();
+
+    private: // Functions from base classes 
+        void HandleCommandL( TBrCtlDefs::TBrCtlClientCommands aCommand, const CArrayFix<TPtrC>& aAttributesNames,
+                                     const CArrayFix<TPtrC>& aAttributeValues ); 
+        void SizeChanged();
+        TInt CountComponentControls() const;
+        CCoeControl* ComponentControl( TInt aIndex ) const;
+        void Draw( const TRect& aRect ) const;
+        TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType );
+        
+        /**
+        * From MBrCtlDataLoadSupplier, Cancel an on-going load
+        */
+        void CancelLoad();
+        
+    // Functions from MWidgetCallback class
+        TBool DialogMimeFileSelectLC(HBufC*& aSelectedFileName,
+                                 const TDesC& aMimeType);
+
+       /**
+        * Called to show or hide softkeys
+        * @since 3.1
+        * @param aVisible ETrue to show softkeys, EFalse when full screen is needed
+        */
+        void SetSoftkeysVisible(TBool aVisible);
+
+        /**
+        * Called to change the display orientation to landscape
+        * @since 3.1
+        */
+        void SetDisplayMode(TBrCtlDefs::TBrCtlOrientation aOrientation);
+
+        //Reserved for future use
+        TInt Reserved_1(TAny*& a0, TAny* a1, TAny* a2);
+        TInt Reserved_2(TAny*& a0, TAny* a1, TAny* a2);
+        TInt Reserved_3(TAny*& a0, TAny* a1, TAny* a2);
+        TInt Reserved_4(TAny*& a0, TAny* a1, TAny* a2);
+        TInt Reserved_5(TAny*& a0, TAny* a1, TAny* a2);
+        TInt Reserved_6(TAny*& a0, TAny* a1, TAny* a2);
+        TInt Reserved_7(TAny*& a0, TAny* a1, TAny* a2);
+        TInt Reserved_8(TAny*& a0, TAny* a1, TAny* a2);
+        TInt Reserved_9(TAny*& a0, TAny* a1, TAny* a2);
+        TInt Reserved_10(TAny*& a0, TAny* a1, TAny* a2);
+
+
+
+    public: // New functions
+        void DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane );
+        TKeyResponse HandleKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType );
+
+    public: // Functions utility
+        HBufC8* ReadFileLC( const TDesC& aFileName );
+        void HandleControlEventL( CCoeControl* aControl,TCoeEvent aEventType );
+        void RunAllTestsL();
+
+    public: // Functions to test CBrCtlInterface
+        void CreateBrowserControlInterfaceL(TInt aBrCtlConfig); //Change done to take a parameter
+        TInt LoadPageL();
+        TInt HandleCommandL(TInt aCommand );
+        TInt LoadDataL();
+        TInt ClearCacheTest();
+        TBool IsUrlInCacheTest( TDesC16& aUrl );
+        TInt ClearItemInCacheTest();
+        TInt PageInfoLC( TBrCtlDefs::TBrCtlPageInfo aType );
+        TInt CertInfo();
+        TInt NavigationAvailableTest();
+        TInt GetBitmapData();
+        TInt SaveToFileL();
+        TInt OkToExit();
+        TInt FindKeyword( TPtrC aHtml , TPtrC aKeyword , TInt aMatch );
+        TInt FindKeywordAgain( TInt aMatch );
+        TInt SetFocus();
+        TInt OfferKeyEvent();
+        TInt BrCtlMinimumSize();
+        TInt BrCtlSubscribeToMenuItemsL();
+        TInt BrCtlContentSize();
+        TInt BrowserSettingL( TUint& aSetting );
+        TInt SetBrowserSettingL();
+        TInt FocusedImageL();
+        TInt AddCommandObserverL();
+        TInt RemoveCommandObserver();
+        TInt ImageCountL();
+        TInt BrCtlFocusedElementTypeL();
+        TInt BrCtlSetParam();
+        TInt LoadSavedPageL();
+        TInt SetSelfDownloadContentTypes();
+        TInt ZoomLevels();
+        TInt AddOptionMenuItems();
+        TInt BrCtlInitLoadDataL();
+        TInt HandleDownloadCommand();
+        TInt VersionInfoL();
+        TInt WmlOptionMenuItemsL();
+        TInt BrCtlPostL();
+        TInt CreateBrCtlInterfaceAndWidgetExtensionL(); // Added for WidgetExtension Test
+        TInt HistoryLoad1L();
+        TInt HistoryLoad2L();
+        TInt HistoryLoad3L();
+        TInt WMLLoad1L();
+        TInt WMLLoad2L();
+        TInt WMLLoad3L();
+        
+    private: //data
+        CBrCtlInterface* iBrCtlInterface;
+        TInt iCommandBase;
+        CBrCtlApiTestObserver* iBrCtlApiTestObserver;
+        CBrCtlApiTestStateChangeObserver* iBrCtlApiTestStateChangeObserver;
+        CBrowserDialogsProviderProxy* iBrCtlDialogs;
+        CEikMenuPane* iMenuPane;
+        TBool iCancelInitDataLoad;
+        
+        // Added for Widget Extension Test
+        MWidgetExtension* iWidgetExtension;  
+    };
+
+#endif // BRCTLBCTESTCONTAINER_H
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/browser/inc/BrCtlApiTestDialogsProvider.h	Thu Jan 21 14:54:07 2010 +0000
@@ -0,0 +1,268 @@
+/*
+* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Forwards Dialog requests to the BrowserDialogsProvider
+*
+*/
+
+
+
+#ifndef BROWSERDIALOGSPROVIDERPROXY_H
+#define BROWSERDIALOGSPROVIDERPROXY_H
+
+//  INCLUDES
+
+// User includes
+
+// System Includes
+#include <BrCtlDialogsProvider.h>
+//#include <BrowserDialogsProviderProxy.h>
+#include <e32std.h>
+
+// CONSTANTS
+
+// FORWARD DECLARATIONS
+class CBrCtlDialogsProvider;
+class CBrowserDialogsProviderBlocker;
+class CBrowserWindowFocusNotifier;
+class CBrowserWindow;
+class MBrowserDialogsProviderObserver;
+
+// CLASS DECLARATION
+
+/**
+*  Provide dialogs needed for browser operation
+*
+*  @since 3.0
+*/
+class CBrowserDialogsProviderProxy :    public  CBase,
+                                        public  MBrCtlDialogsProvider
+    {
+    // Construction/Destruction
+    public:
+                       
+        // Two stage constructor
+        static CBrowserDialogsProviderProxy* NewL( );
+
+        // Destructor
+        virtual ~CBrowserDialogsProviderProxy();
+
+    protected:
+
+        // 1st stage Constructor
+        CBrowserDialogsProviderProxy( );
+        
+
+        // 2nd stage constructor
+        void ConstructL();
+
+    public: // From  MBrCtlDialogsProvider
+        
+        /**
+        * Notify the user of an error
+        * @since 3.0
+        * @param aErrCode The error that occured
+        * @return void
+        */
+        virtual void DialogNotifyErrorL( TInt aErrCode );
+
+        /**
+        * Notify the user of an http error
+        * @since 3.0
+        * @param aErrCode The error that occured
+        * @param aUri The uri of the request that failed
+        * @return void
+        */
+        virtual void DialogNotifyHttpErrorL( TInt aErrCode,
+                                                        const TDesC& aUri );
+
+        /**
+        * File selection dialog
+        * @since 3.0
+        * @param aStartPath The initial displayed directory
+        * @param aRootPath The top most directory that the user can go up to
+        * @param aSelectedFileName The selected file name. 
+        * Returned on cleanup stack. Browser control will free the buffer
+        * @return EFalse if the user canceled, ETrue otherwise
+        */
+        virtual TBool DialogFileSelectLC( const TDesC& aStartPath,
+                                            const TDesC& aRootPath,
+                                            HBufC*& aSelectedFileName);
+
+        /**
+        * List selection dialog
+        * @since 3.0
+        * @param aTitle The title, could be empty
+        * @param aBrowserSelectOptionType The type of the list box 
+        * @param aOptions A list of options to display
+        * @return EFalse if the user canceled, ETrue otherwise
+        */
+        virtual TBool DialogSelectOptionL(
+                            const TDesC& aTitle, 
+                            TBrCtlSelectOptionType aBrowserSelectOptionType, 
+                            CArrayFix<TBrCtlSelectOptionData>& aOptions );
+
+        /**
+        * User Authentication dialog. 
+        * User name and password are returned on cleanup stack
+        * @since 3.0
+        * @param aUrl The url requiring authentication
+        * @param aRealm The realm requiring authentication
+        * @param aDefaultUser/Name The user name that was used before for this
+        * realm and path, if any
+        * @param aReturnedUserName The user name entered by the user
+        * @param aReturnedPasswd The password entered by the user
+        * @param aBasicAuthentication A flag if basic authentication was used
+        * @return EFalse if the user canceled, ETrue otherwise
+        */
+        virtual TBool DialogUserAuthenticationLC(
+                                        const TDesC& aUrl, 
+                                        const TDesC& aRealm, 
+                                        const TDesC& aDefaultUserName, 
+                                        HBufC*& aReturnedUserName, 
+                                        HBufC*& aReturnedPasswd,
+                                        TBool aBasicAuthentication = EFalse);
+
+        /**
+        * Display a note to the user. No softkeys
+        * @since 3.0
+        * @param aMessage The message to display
+        * @return void
+        */
+        virtual void DialogNoteL( const TDesC& aMessage ); 
+ 
+        /**
+        * Display a note to the user with ok softkey only
+        * @since 3.0
+        * @param aTitle The title, could be empty
+        * @param aMessage The message to display
+        * @return void
+        */
+        virtual void DialogAlertL( const TDesC& aTitle,
+                                    const TDesC& aMessage );
+
+        /**
+        * Display confirmation message to the user
+        * @since 3.0
+        * @param aTitle The title, could be empty
+        * @param aMessage The message to display
+        * @param aYesMessage The text to display on left softkey
+        * @param aNoMessage The text to display on right softkey
+        * @return EFalse if the user canceled, ETrue otherwise
+        */
+        virtual TBool DialogConfirmL(  const TDesC& aTitle,
+                                        const TDesC& aMessage,
+                                        const TDesC& aYesMessage,
+                                        const TDesC& aNoMessage);
+
+        /**
+        * Display input dialog to the user
+        * @since 3.0
+        * @param aTitle The title, could be empty
+        * @param aMessage The message to display
+        * @param aDefaultInput The default input if available
+        * @param aReturnedInput The input entered by the user
+        * Returned on the cleanup stack, owned by the calling application
+        * @return EFalse if the user canceled, ETrue otherwise
+        */
+        virtual TBool DialogPromptLC(const TDesC& aTitle,
+                                     const TDesC& aMessage,
+                                     const TDesC& aDefaultInput,
+                                     HBufC*& aReturnedInput);
+
+        /**
+        * Display object info and ask confirmation before download
+        * @since 3.0
+        * @param aBrCtlObjectInfo The object info
+        * @return EFalse if the user canceled, ETrue otherwise
+        */
+        virtual TBool DialogDownloadObjectL( 
+                                        CBrCtlObjectInfo* aBrCtlObjectInfo );
+
+        /**
+        * DIsplay the images that appear in the current page
+        * @since 3.0
+        * @param aPageImages The images that appear in this page
+        * @return vois
+        */
+        virtual void DialogDisplayPageImagesL( 
+                            CArrayFixFlat<TBrCtlImageCarrier>& aPageImages);
+
+        /**
+        * Cancel any dialog that is being displayed due to 
+        * e.g. Browser exit or page was destroyed
+        * @since 3.0
+        * @return void
+        */
+        virtual void CancelAll();
+        
+        /**
+        * Display search on page dialog
+        * @since 3.0
+        * @return void
+        */
+        virtual void DialogFindL() { /* TODO: implement this body!!! */ } ;
+        
+        /**
+        * Mime File selection dialog for specific mime type files
+        * @since 3.2
+        * @param aSelectedFileName The selected file name. 
+        * @param aMimeType The accepted mime type
+        * Returned on cleanup stack. Browser control will free the buffer
+        * @return EFalse if the user canceled, ETrue otherwise
+        */
+        virtual TBool DialogMimeFileSelectLC( HBufC*& aSelectedFileName,
+									  const TDesC& aMimeType );
+        
+    
+    public:     // New functions
+    
+        /**
+        * Display a tooltip (info popup note)
+        * @since 3.0
+        * @return void
+        */                                   
+        void ShowTooltipL( const TDesC& aText, TInt aDuration, TInt aDelay );
+        
+        /**
+        * Display a dialog which tracks upload progress
+        * @since 3.0    
+        * @param aTotalSize     the total size of a file being uploaded
+        * @param aChunkSize     the size of the current chunk being uploaded
+        * @param aIsLastChunk   boolean value indicating whether the current 
+        * @param aObserver      an observer for the upload progress dialog
+        * chunk is the last one in the entire download
+        * @return void
+        */
+        void UploadProgressNoteL( 
+                            TInt32 aTotalSize, 
+                            TInt32 aChunkSize,
+                            TBool aIsLastChunk,
+                            MBrowserDialogsProviderObserver* aObserver );
+    
+        /**
+        * Callback from Window, indicating that the window is now active
+        * @since 3.0
+        */
+        void WindowActivated();
+
+    // DATA MEMBERS
+    private:
+
+        TBool iCancelWaitingDialogs;    // ETrue means that waiting dialogs should not be displayed when flushed
+        
+    };
+
+#endif      // BROWSERDIALOGSPROVIDERPROXY_H   
+            
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/browser/inc/BrCtlApiTestObserver.h	Thu Jan 21 14:54:07 2010 +0000
@@ -0,0 +1,296 @@
+/*
+* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Handle scrollbar and tab events
+*
+*/
+
+
+
+#ifndef BRCTLBCTESTOBSERVER_H
+#define BRCTLBCTESTOBSERVER_H
+
+//  INCLUDES
+#include <BrCtlLayoutObserver.h>
+#include <BrCtlSoftkeysObserver.h>
+#include <BrCtlSpecialLoadObserver.h>
+#include <BrCtlDownloadObserver.h>
+#include <BrCtlInterface.h>
+#include <DocumentHandler.h>    
+#include <flogger.h>
+
+class CBrCtlApiTestObserver : 
+    public CBase, 
+    public MBrCtlLayoutObserver,
+    public MBrCtlSoftkeysObserver, 
+    public MBrCtlSpecialLoadObserver,
+    public MBrCtlLoadEventObserver, 
+    public MBrCtlLinkResolver,
+    public MBrCtlDownloadObserver,
+    public MBrCtlWindowObserver // Added for Widget Extension Test
+    {
+    public:  // Constructors and destructor
+
+        /**
+        * Two-phased constructor.
+        */
+        static CBrCtlApiTestObserver* NewL();
+
+        /**
+        * Destructor.
+        */
+        ~CBrCtlApiTestObserver();
+
+      
+        /**
+        * Update the position of vertical scrollbar.
+        * @since 2.8
+        * @param aDocumentHeight The total height of the markup page
+        * @param aDisplayHeight The height of the display
+        * @param aDisplayPosY The current Y position
+        * @return void
+        */
+        void UpdateBrowserVScrollBarL(TInt /*aDocumentHeight*/, 
+                                              TInt /*aDisplayHeight*/,
+                                              TInt /*aDisplayPosY*/ ) ;
+
+        /**
+        * Update the position of horizontal scrollbar.
+        * @since 2.8
+        * @param aDocumentWidth The total width of the markup page
+        * @param aDisplayWidth The width of the display
+        * @param aDisplayPosX The current X position
+        * @return void
+        */
+        void UpdateBrowserHScrollBarL(TInt /*aDocumentWidth*/, 
+                                              TInt /*aDisplayWidth*/,
+                                              TInt /*aDisplayPosX*/ ) ;
+
+        /**
+        * Inform the layout of the page: right to left or left to right. Useful when the application draws the scrollbar itself.
+        * @since 2.8
+        * @param aNewLayout RTL or LTR
+        * @return void
+        */
+        void NotifyLayoutChange( TBrCtlLayout /*aNewLayout*/ ) ;
+       
+        /**
+        * Update the title of the page in history view
+        * @since 3.0
+        * @param aTitle Title of the page
+        * @return void
+        */
+        void UpdateTitleL( const TDesC& aTitle );
+
+        /**
+        * Browser Control requests to update a softkey
+        * @since 2.8
+        * @param aKeySoftkey Update the left softkey or the right softkey
+        * @param aLabel The label associated with the softkey update
+        * @param aCommandId The command to use if the softkey is selected by the user
+        * @param aBrCtlSoftkeyChangeReason The reason for the softkey change
+        * @return void
+        */
+        void UpdateSoftkeyL(TBrCtlKeySoftkey /*aKeySoftkey*/,
+                                    const TDesC& /*aLabel*/,
+                                    TUint32 /*aCommandId*/,
+                                    TBrCtlSoftkeyChangeReason /*aBrCtlSoftkeyChangeReason*/) ;
+
+        /**
+        * Request to create a network connection.
+        * @since 2.8
+        * @param aConnectionPtr A pointer to the new connection. If NULL, the proxy filter will automatically create a network connection
+        * @param aSockSvrHandle A handle to the socket server.
+        * @param aNewConn A flag if a new connection was created. If the connection is not new, proxy filter optimization will not read the proxy again from CommsBd
+        * @param aBearerType The bearer type of the new connection
+        * @return void
+        */
+        void NetworkConnectionNeededL(TInt* /*aConnectionPtr*/,
+                                              TInt* /*aSockSvrHandle*/,
+                                              TBool* /*aNewConn*/,
+                                              TApBearerType* /*aBearerType*/) ;
+
+        /**
+        * Request the host applicaion to handle non-http request.
+        * @since 2.8
+        * @param aUrl The non-http(s) or file URL
+        * @param aParamList Parameters to pass to the host application. Contain referer header. It could be NULL
+        * @return ETrue is handled by the host application. EFlase if not
+        */
+        TBool HandleRequestL(RArray<TUint>* aTypeArray, CDesCArrayFlat* aDesArray);
+
+        /**
+        * Request the host applicaion to handle downloads
+        * @since 2.8
+        * @param aTypeArray array of download parameter types
+        * @param aDesArray array of values associated with the types in the type array
+        * @return ETrue is handled by the host application. EFlase if not
+        */
+        TBool HandleDownloadL(RArray<TUint>* aTypeArray, CDesCArrayFlat* aDesArray);
+
+        /**
+        * A load events notification
+        * @since 2.8
+        * @param aLoadEvent The load event   
+        * @param aSize Size depends on the event
+        * @param aTransactionId The transaction id of the transaction that had this event
+        * @return void
+        */
+        void HandleBrowserLoadEventL(TBrCtlDefs::TBrCtlLoadEvent aLoadEvent, TUint aSize, TUint16 aTransactionId) ;
+
+    	/**
+    	* Browser plug-in calls this method when embedded link is found. Used with ECapabilityClientResolveEmbeddedURL
+        * @since 2.8
+    	* @param aEmbeddedUrl The url of the embedded content
+    	* @param aCurrentUrl The url of the current page
+    	* @param aLoadContentType The expected type of the embedded content
+    	* @param aEmbeddedLinkContent a callback interface to return the embedded content
+    	* @return EFalse, browser will resolve the link
+    	*/
+        TBool ResolveEmbeddedLinkL(const TDesC& aEmbeddedUrl,
+    		                               const TDesC& aCurrentUrl,
+        	                               TBrCtlLoadContentType aLoadContentType, 
+        	                               MBrCtlLinkContent& aEmbeddedLinkContent) ; 
+		
+    	/**
+    	* Browser plug-in calls this method when the user requests to load content via selecting a link, or any other way. Used with ECapabilityClientNotifyURL 
+        * @since 2.8
+    	* @param aUrl The requested url
+    	* @param aCurrentUrl The url of the current page
+    	* @param aBrCtlLinkContent a callback interface to return the embedded content
+    	* @return EFalse, browser will resolve the link
+    	*/
+        TBool ResolveLinkL(const TDesC& aUrl, const TDesC& aCurrentUrl,
+                                   MBrCtlLinkContent& aBrCtlLinkContent) ;
+
+		/**
+		* Cancel all outstanding resolving operations
+        * @since 2.8
+    	* @return void
+    	*/
+        void CancelAll() ;
+
+        /**
+        * Inform the host application that a new download has started using the Download Manager
+        * @since 3.0
+        * @param aTransactionID The ID of the transaction, it is unique as long as the transaction is on-going
+        * @param aFileName The name of file in which the content is stored/
+        * @param aContentType The content type of the downloaded content
+        * @param aUrl The Url of the request to be done in the new window
+        * @return Return ETrue if the file is handled progressively, EFalse otherwise
+        */
+        TBool NewDownloadL(TUint aTransactionID,
+                           const TDesC& aFileName,
+                           const TDesC& aContentType,
+                           const TDesC& aUrl);
+
+
+        /**
+        * Inform the host application that a new download has started using the Download Manager
+        * @since 3.0
+        * @param aTransactionID The ID of the transaction, it is unique as long as the transaction is on-going
+        * @param aFileName The name of file in which the content is stored/
+        * @param aContentType The content type of the downloaded content
+        * @param aUrl The Url of the request to be done in the new window
+        * @return Return ETrue if the file is handled progressively, EFalse otherwise
+        */
+        void ResumeDownloadL(TUint aTransactionID,
+                                   TUint aLength,
+                                   const TDesC& aFileName,
+                                   const TDesC& aContentType,
+                                   const TDesC& aUrl);
+
+        /**
+        * Inform the host application of a progress event related to a download
+        * @since 3.0
+        * @param aTransactionID The ID of the transaction, it is unique as long as the transaction is on-going
+        * @param aDownloadEvent The event to be reported
+        * @param aValue The value depends on the event
+        * @return void
+        */
+        void HandleDownloadEventL(TUint aTransactionID, 
+                                  TBrCtlDownloadEvent aDownloadEvent,
+                                  TUint aValue);  
+                                  
+    // Functions from CBrCtlWindowObserver class - Added for Widget Extension Test
+                                  
+        /**
+        * Request the host applicaion to open the URL in a new window
+        * @since 3.0
+        * @param aUrl The Url of the request to be done in the new window
+        * @param aTargetName The name of the new window
+        * @param aUserInitiated ETrue if the new window is initiated by a user event (click)
+        * @param aMethod The method to be used for fetching the supplied url
+        * @param aContentType If the method is POST, this is the content type of the data to be posted 
+        * @param aPostData If the method is POST, this is the data to be posted 
+        * @param aBoundary The boundary used if the content is multipart/form-data
+        * @param aReserved For future use
+        * @return Return Value is the new browser control associated with the new window
+        */
+        CBrCtlInterface* OpenWindowL(TDesC& aUrl, TDesC* aTargetName, TBool aUserInitiated, 
+             TAny* aReserved);
+
+        /**
+        * Find a window by target name
+        * @since 3.0
+        * @param aTargetName name of the window to find
+        * @return Return Value is the browser control associated with the window name
+        */
+        CBrCtlInterface* FindWindowL( const TDesC& aTargetName ) const;             
+
+        /**
+        * Handle window events such as close/focus etc
+        * @since 3.0
+        * @param aTargetName name of the window to send the event to
+        * @param aCommand Command to pass to the window
+        * @return void
+        */
+        void HandleWindowCommandL( const TDesC& aTargetName, TBrCtlWindowCommand aCommand );           
+
+    private:
+	    /**
+        * By default Symbian 2nd phase constructor is private.
+        */
+        void ConstructL();
+
+	    /**
+        * Find if the scheme if file://
+        */
+        TBool IsFileScheme(const TDesC& aFileName);
+
+	    /**
+        * Read the file.
+        */
+        HBufC8* ReadFileLC(const TDesC& aFileName);
+
+	    /**
+        * Rcognize the mime type.
+        */
+        HBufC* RecognizeLC(const TDesC& aFileName, const TDesC8& aData);
+
+	    /**
+        * Translate the file name from a URL to a valid file name in the system..
+        */
+        TBool GetFileNameL(const TDesC& aFileName);
+
+    private:   // data
+
+        // The loaded file's name. This is different from the URL. It does not contain the scheme.
+        HBufC* iFileName;
+        CDocumentHandler* iHandler;
+    };
+
+#endif      // BRCTLBCTESTOBSERVER_H
+            
+// End of File
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/browser/inc/BrCtlApiTestStateChangeObserver.h	Thu Jan 21 14:54:07 2010 +0000
@@ -0,0 +1,74 @@
+/*
+* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Handle state changed events
+*
+*/
+
+
+
+#ifndef BRCTLBCTESTSTATECHANGEOBSERVER_H
+#define BRCTLBCTESTSTATECHANGEOBSERVER_H
+
+// INCLUDES
+#include <BrCtlInterface.h>
+
+// FORWARD DECLARATIONS
+class CBrCtlApiTestContainer;
+
+// CLASS DECLARATION
+
+/** 
+* CBrCtlApiTestStateChangeObserver class.
+* This class inherits from the MBrCtlStateChangeObserver interface which is used to 
+* receive state-changed events.
+*/
+class CBrCtlApiTestStateChangeObserver : public CBase, public MBrCtlStateChangeObserver
+    {
+    public:  // Constructors and destructor
+
+        /**
+        * Two-phased constructor.
+        */
+        static CBrCtlApiTestStateChangeObserver* NewL(CBrCtlApiTestContainer* aContainer);
+
+        /**
+        * Destructor.
+        */
+        ~CBrCtlApiTestStateChangeObserver();
+
+        /**
+        * A state change events notification
+        * @since 2.8
+        * @param aState The state, currently the only state is EStateImageMapView  
+        * @param aValue This value will be true if we going to image map view and
+        *               it will be false if we are returning from image map view
+        * @return void
+        */
+        void StateChanged(TBrCtlDefs::TBrCtlState aState, TInt aValue);
+
+    private:
+	    /**
+        * By default Symbian 2nd phase constructor is private.
+        */
+        void ConstructL(CBrCtlApiTestContainer* aContainer);
+
+    private:   // data
+        // Pointer to the container class associated with this observer
+        CBrCtlApiTestContainer* iContainer;
+    };
+
+#endif      // BRCTLBCTESTSTATECHANGEOBSERVER_H
+            
+// End of File
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/browser/init/testframework.ini	Thu Jan 21 14:54:07 2010 +0000
@@ -0,0 +1,166 @@
+#
+# This is STIFTestFramework initialization file
+# Comment lines start with '#'-character.
+# See STIF TestFramework users guide.doc for instructions
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Set following test engine settings:
+#	- Set Test Reporting mode. TestReportMode's possible values are:
+#		+ 'Summary': Summary of the tested test cases.
+#		+ 'Environment': Hardware and software info.
+#		+ 'TestCases': Test case report.
+#		+ 'FullReport': Set of all above ones.
+#		+ Example 'TestReportMode= Summary TestCases'
+#
+# 	- CreateTestReport setting controls report creation mode
+#		+ YES, Test report will created.
+#		+ NO, No Test report.
+#
+# 	- File path indicates the base path of the test report.
+# 	- File name indicates the name of the test report.
+#
+# 	- File format indicates the type of the test report.
+#		+ TXT, Test report file will be txt type, for example 'TestReport.txt'.
+#		+ HTML, Test report will be html type, for example 'TestReport.html'.
+#
+# 	- File output indicates output source of the test report.
+#		+ FILE, Test report logging to file.
+#		+ RDEBUG, Test report logging to using rdebug.
+#
+# 	- File Creation Mode indicates test report overwriting if file exist.
+#		+ OVERWRITE, Overwrites if the Test report file exist.
+#		+ APPEND, Continue logging after the old Test report information if 
+#                 report exist.
+# 	- Sets a device reset module's dll name(Reboot).
+#		+ If Nokia specific reset module is not available or it is not correct one
+#		  StifHWResetStub module may use as a template for user specific reset
+#		  module. 
+
+[Engine_Defaults]
+
+TestReportMode= FullReport		# Possible values are: 'Empty', 'Summary', 'Environment',
+                                                               'TestCases' or 'FullReport'
+
+CreateTestReport= YES			# Possible values: YES or NO
+
+TestReportFilePath= C:\LOGS\TestFramework\
+TestReportFileName= TestReport
+
+TestReportFormat= TXT			# Possible values: TXT or HTML
+TestReportOutput= FILE			# Possible values: FILE or RDEBUG
+TestReportFileCreationMode= OVERWRITE	# Possible values: OVERWRITE or APPEND
+
+DeviceResetDllName= StifResetForNokia.dll # e.g. 'StifHWResetStub.dll' for user specific reseting
+
+UITestingSupport= Yes
+[End_Defaults]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Module configurations start
+# Modules are added between module tags
+# tags. Module name is specified after ModuleName= tag, like
+# ModuleName= MyExampleMyExampleMyExample
+# Modules might have initialisation file, specified as
+# IniFile= c:\testframework\YYYYYY
+# Modules might have several configuration files, like
+# TestCaseFile= c:\testframework\NormalCases.txt
+# TestCaseFile= c:\testframework\SmokeCases.txt
+# TestCaseFile= c:\testframework\ManualCases.txt
+
+# (TestCaseFile is synonym for old term ConfigFile)
+
+# Following case specifies demo module settings. Demo module
+# does not read any settings from file, so tags 
+# IniFile and TestCaseFile are not used.
+# In the simplest case it is enough to specify only the
+# name of the test module when adding new test module
+
+[New_Module]
+ModuleName= testscripter
+TestCaseFile= c:\testframework\ui_browser_control_api.cfg
+[End_Module]
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Set STIFTestFramework logging overwrite parameters for Logger.
+# 	Hardware and emulator environment logging path and styles can
+# 	be configured from here to overwrite the Logger's implemented values.
+#	
+#	Settings description:
+#	- Indicates option for creation log directory/directories. If log directory/directories
+#         is/are not created by user they will make by software.
+#		+ YES, Create log directory/directories if not allready exist.
+#		+ NO, Log directory/directories not created. Only created one is used.
+#
+#	- Overwrite emulator path setting.
+#		+ Example: If 'EmulatorBasePath= C:\LOGS\TestFramework\' and in code is defined 
+#		           Logger's path 'D:\\LOGS\\Module\\' with those definition the path
+#		           will be 'C:\LOGS\TestFramework\LOGS\Module\'
+#
+#	- Overwrite emulator's logging format.
+#		+ TXT, Log file(s) will be txt type(s), for example 'Module.txt'.
+#		+ HTML, Log file(s) will be html type(s), for example 'Module.html'.
+#
+#	- Overwrited emulator logging output source.
+#		+ FILE, Logging to file(s).
+#		+ RDEBUG, Logging to using rdebug(s).
+#
+#	- Overwrite hardware path setting (Same description as above in emulator path).
+#	- Overwrite hardware's logging format(Same description as above in emulator format).
+#	- Overwrite hardware's logging output source(Same description as above in emulator output).
+#
+#	- File Creation Mode indicates file overwriting if file exist.
+#		+ OVERWRITE, Overwrites if file(s) exist.
+#		+ APPEND, Continue logging after the old logging information if file(s) exist.
+#
+#	- Will thread id include to the log filename.
+#		+ YES, Thread id to log file(s) name, Example filename 'Module_b9.txt'.
+#		+ NO, No thread id to log file(s), Example filename 'Module.txt'.
+#
+#	- Will time stamps include the to log file.
+#		+ YES, Time stamp added to each line in log file(s). Time stamp is 
+#                 for example'12.Nov.2003 115958    LOGGING INFO'
+#		+ NO, No time stamp(s).
+#
+#	- Will line breaks include to the log file.
+#		+ YES, Each logging event includes line break and next log event is in own line.
+#		+ NO, No line break(s).
+#
+#	- Will event ranking include to the log file.
+#		+ YES, Event ranking number added to each line in log file(s). Ranking number 
+#                 depends on environment's tics, for example(includes time stamp also)
+#                 '012   12.Nov.2003 115958    LOGGING INFO'
+#		+ NO, No event ranking.
+#
+
+[Logger_Defaults]
+
+#NOTE: If you want to set Logger using next setting(s) remove comment(s)'#' 
+
+CreateLogDirectories= YES		# Possible values: YES or NO
+
+EmulatorBasePath= C:\LOGS\TestFramework\
+EmulatorFormat= TXT			# Possible values: TXT or HTML
+EmulatorOutput= FILE			# Possible values: FILE or RDEBUG
+
+#HardwareBasePath= D:\LOGS\TestFramework\
+#HardwareFormat= HTML			# Possible values: TXT or HTML
+#HardwareOutput= FILE			# Possible values: FILE or RDEBUG
+
+#FileCreationMode= OVERWRITE		# Possible values: OVERWRITE or APPEND
+
+#ThreadIdToLogFile= YES			# Possible values: YES or NO
+#WithTimeStamp= YES			# Possible values: YES or NO
+#WithLineBreak= YES			# Possible values: YES or NO
+#WithEventRanking= YES			# Possible values: YES or NO
+
+[End_Logger_Defaults]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+# End of file
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/browser/src/BrCtlApiTest.cpp	Thu Jan 21 14:54:07 2010 +0000
@@ -0,0 +1,153 @@
+/*
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  ?Description
+*
+*/
+
+
+// INCLUDE FILES
+#include <Stiftestinterface.h>
+#include "BrCtlApiTest.h"
+#include <SettingServerClient.h>
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CBrowserControlApiTest::CBrowserControlApiTest
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CBrowserControlApiTest::CBrowserControlApiTest( 
+    CTestModuleIf& aTestModuleIf ):
+        CScriptBase( aTestModuleIf )
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CBrowserControlApiTest::ConstructL
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CBrowserControlApiTest::ConstructL()
+    {
+    //Read logger settings to check whether test case name is to be
+    //appended to log file name.
+    RSettingServer settingServer;
+    TInt ret = settingServer.Connect();
+    if(ret != KErrNone)
+        {
+        User::Leave(ret);
+        }
+    // Struct to StifLogger settigs.
+    TLoggerSettings loggerSettings; 
+    // Parse StifLogger defaults from STIF initialization file.
+    ret = settingServer.GetLoggerSettings(loggerSettings);
+    if(ret != KErrNone)
+        {
+        User::Leave(ret);
+        } 
+    // Close Setting server session
+    settingServer.Close();
+
+    TFileName logFileName;
+    
+    if(loggerSettings.iAddTestCaseTitle)
+        {
+        TName title;
+        TestModuleIf().GetTestCaseTitleL(title);
+        logFileName.Format(KBrCtlApiTestLogFileWithTitle, &title);
+        }
+    else
+        {
+        logFileName.Copy(KBrCtlApiTestLogFile);
+        }
+
+    iLog = CStifLogger::NewL( KBrCtlApiTestLogPath, 
+                          logFileName,
+                          CStifLogger::ETxt,
+                          CStifLogger::EFile,
+                          EFalse );
+    
+    SendTestClassVersion();
+    }
+
+// -----------------------------------------------------------------------------
+// CBrowserControlApiTest::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CBrowserControlApiTest* CBrowserControlApiTest::NewL( 
+    CTestModuleIf& aTestModuleIf )
+    {
+    CBrowserControlApiTest* self = new (ELeave) CBrowserControlApiTest( aTestModuleIf );
+
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop();
+
+    return self;
+
+    }
+
+// Destructor
+CBrowserControlApiTest::~CBrowserControlApiTest()
+    { 
+
+    // Delete resources allocated from test methods
+    Delete();
+
+    // Delete logger
+    delete iLog; 
+
+    }
+
+//-----------------------------------------------------------------------------
+// CBrowserControlApiTest::SendTestClassVersion
+// Method used to send version of test class
+//-----------------------------------------------------------------------------
+//
+void CBrowserControlApiTest::SendTestClassVersion()
+	{
+	TVersion moduleVersion;
+	moduleVersion.iMajor = TEST_CLASS_VERSION_MAJOR;
+	moduleVersion.iMinor = TEST_CLASS_VERSION_MINOR;
+	moduleVersion.iBuild = TEST_CLASS_VERSION_BUILD;
+	
+	TFileName moduleName;
+	moduleName = _L("BrCtlApiTest.dll");
+
+	TBool newVersionOfMethod = ETrue;
+	TestModuleIf().SendTestModuleVersion(moduleVersion, moduleName, newVersionOfMethod);
+	}
+
+// ========================== OTHER EXPORTED FUNCTIONS =========================
+
+// -----------------------------------------------------------------------------
+// LibEntryL is a polymorphic Dll entry point.
+// Returns: CScriptBase: New CScriptBase derived object
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CScriptBase* LibEntryL( 
+    CTestModuleIf& aTestModuleIf ) // Backpointer to STIF Test Framework
+    {
+
+    return ( CScriptBase* ) CBrowserControlApiTest::NewL( aTestModuleIf );
+
+    }
+
+
+//  End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/browser/src/BrCtlApiTestBlocks.cpp	Thu Jan 21 14:54:07 2010 +0000
@@ -0,0 +1,1209 @@
+/*
+* Copyright (c) 2002 - 2007 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  ?Description
+*
+*/
+
+
+
+// [INCLUDE FILES] - do not remove
+#include <e32svr.h>
+#include <StifParser.h>
+#include <Stiftestinterface.h>
+#include "BrCtlApiTest.h"
+
+#define RETURN_FAILURE_ON_ERROR     \
+    if ( err )                      \
+        {                           \
+        return KErrNone;            \
+        }
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CBrowserControlApiTest::Delete
+// Delete here all resources allocated and opened from test methods. 
+// Called from destructor. 
+// -----------------------------------------------------------------------------
+//
+void CBrowserControlApiTest::Delete() 
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CBrowserControlApiTest::RunMethodL
+// Run specified method. Contains also table of test mothods and their names.
+// -----------------------------------------------------------------------------
+//
+TInt CBrowserControlApiTest::RunMethodL(CStifItemParser& aItem ) 
+    {
+
+    static TStifFunctionInfo const KFunctions[] =
+        {  
+        // Copy this line for every implemented function.
+        // First string is the function name used in TestScripter script file.
+        // Second is the actual implementation member function. 
+        ENTRY( "Example", CBrowserControlApiTest::ExampleL ),
+        ENTRY( "CreateBrowserControl", CBrowserControlApiTest::CreateBrCtlL ),
+        ENTRY( "DestroyBrowserControl", CBrowserControlApiTest::DestroyBrowserControlL ),
+        ENTRY( "ZoomLevels", CBrowserControlApiTest::ZoomLevels ),
+        ENTRY( "HandleCommand", CBrowserControlApiTest::HandleCommandL ),
+        ENTRY( "SavedPage", CBrowserControlApiTest::SavedPageL ),
+        ENTRY( "LoadData", CBrowserControlApiTest::LoadData ),
+        ENTRY( "CertInfo", CBrowserControlApiTest::CertInfo ),
+        ENTRY( "NavigationAvailable", CBrowserControlApiTest::NavigationAvailable ),
+     	ENTRY( "PageInfo", CBrowserControlApiTest::PageInfo ),
+        ENTRY( "EmptyCache", CBrowserControlApiTest::EmptyCache ),
+        ENTRY( "GetBitmapData", CBrowserControlApiTest::GetBitmapData ),
+        ENTRY( "SaveToFile", CBrowserControlApiTest::SaveToFile ),
+        ENTRY( "OkToExit", CBrowserControlApiTest::OkToExit ),
+        ENTRY( "FindKeyword", CBrowserControlApiTest::FindKeyword ),
+        ENTRY( "MinimumSize", CBrowserControlApiTest::MinimumSize ),
+        ENTRY( "OfferKeyEvent", CBrowserControlApiTest::OfferKeyEvent ),
+        ENTRY( "BrCtlSubscribeToMenuItems", CBrowserControlApiTest::BrCtlSubscribeToMenuItemsL ),
+        ENTRY( "ContentSize", CBrowserControlApiTest::ContentSize ),
+        ENTRY( "BrCtlSettings", CBrowserControlApiTest::BrCtlSettings ),
+        ENTRY( "FocusedImage", CBrowserControlApiTest::FocusedImage ),
+        ENTRY( "CommandObserver", CBrowserControlApiTest::CommandObserver ),
+        ENTRY( "FocusedElementType", CBrowserControlApiTest::FocusedElementType ),
+        ENTRY( "BrCtlSetParam", CBrowserControlApiTest::BrCtlSetParam ),
+        ENTRY( "SetSelfDownloadContentTypes", CBrowserControlApiTest::SetSelfDownloadContentTypes ),
+        ENTRY( "AddOptionMenuItems", CBrowserControlApiTest::AddOptionMenuItems ),
+        ENTRY( "BrCtlInitLoadData", CBrowserControlApiTest::BrCtlInitLoadData ),
+        ENTRY( "HandleDownloadCommand", CBrowserControlApiTest::HandleDownloadCommand ),
+        ENTRY( "VersionInfo", CBrowserControlApiTest::VersionInfo ),
+        ENTRY( "WmlOptionMenuItems", CBrowserControlApiTest::WmlOptionMenuItems ), 
+        ENTRY( "ImageCount", CBrowserControlApiTest::ImageCount),
+        ENTRY( "PostUrl", CBrowserControlApiTest::PostUrlL),
+        // Added for Widget Extension Test
+        ENTRY( "CreateBrCtlWithWidgetExtension", CBrowserControlApiTest::CreateBrCtlWithWidgetExtensionL),
+        ENTRY( "HistoryHandler", CBrowserControlApiTest::TestHistoryHandlerL ),
+        ENTRY( "WMLLoad", CBrowserControlApiTest::TestWMLLoadL )
+        };
+
+    const TInt count = sizeof( KFunctions ) / 
+    sizeof( TStifFunctionInfo );
+
+//	TestModuleIf().SetBehavior( CTestModuleIf::ETestLeaksMem );
+//	TestModuleIf().SetBehavior( CTestModuleIf::ETestLeaksRequests );
+//	TestModuleIf().SetBehavior( CTestModuleIf::ETestLeaksHandles );
+	
+    return RunInternalL( KFunctions, count, aItem );
+    }
+    
+// -----------------------------------------------------------------------------
+// CBrowserControlApiTest::ExampleL
+// Example test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CBrowserControlApiTest::ExampleL( CStifItemParser& aItem )
+    {
+
+    // Print to UI
+    _LIT( KMyExample, "MyExample" );
+    _LIT( KExample, "In ExampleL" );
+    TestModuleIf().Printf( 0, KMyExample, KExample );
+    // Print to log file
+    iLog->Log( KExample );
+
+    TInt i = 0;
+    TPtrC string;
+    _LIT( KParam, "Param[%i]: %S" );
+    while ( aItem.GetNextString ( string ) == KErrNone )
+        {
+        TestModuleIf().Printf( i, KMyExample, 
+                                KParam, i, &string );
+        i++;
+        }
+
+    // test block
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CBrowserControlApiTest::CreateBrCtlL
+// Creates a browser control contained within iBrCtlTestContainer
+// -----------------------------------------------------------------------------
+//
+TInt CBrowserControlApiTest::CreateBrCtlL( 
+   CStifItemParser&  aItem  )
+    {
+    TInt err( KErrNone );
+    TInt aBrCtlConfig = 0x0000; 
+
+	TPtrC string;
+	
+    TPoint base( 0, 0 );
+    TPoint extent( 252, 195 );
+    TRect rect( base, extent );
+
+
+	// To test for different configurations of the Browser control
+	
+	while ( aItem.GetNextString ( string ) == KErrNone ) 
+		{
+		if ( string.Compare(_L("DisplayScrollBar"))==0)
+			{
+			aBrCtlConfig = aBrCtlConfig | TBrCtlDefs::ECapabilityDisplayScrollBar;
+			}
+		if ( string.Compare(_L("ClientResolveEmbeddedURL"))==0)
+			{
+			aBrCtlConfig = aBrCtlConfig | TBrCtlDefs::ECapabilityClientResolveEmbeddedURL;
+			}
+		if ( string.Compare(_L("ClientNotifyURL"))==0)
+			{
+			aBrCtlConfig = aBrCtlConfig | TBrCtlDefs::ECapabilityClientNotifyURL ;
+			}
+		if ( string.Compare(_L("DisableInputAndPlugins"))==0)
+			{
+			aBrCtlConfig = aBrCtlConfig | TBrCtlDefs::ECapabilityDisableInputAndPlugins;
+			}
+		if ( string.Compare(_L("FindItem"))==0)
+			{
+			aBrCtlConfig = aBrCtlConfig | TBrCtlDefs::ECapabilityFindItem;
+			}
+		if ( string.Compare(_L("LoadHttpFw"))==0)
+			{
+			aBrCtlConfig = aBrCtlConfig | TBrCtlDefs::ECapabilityLoadHttpFw;
+			}
+		if ( string.Compare(_L("SavedPage"))==0)
+			{
+			aBrCtlConfig = aBrCtlConfig | TBrCtlDefs::ECapabilitySavedPage;
+			}
+		if ( string.Compare(_L("GraphicalHistory"))==0)
+			{
+			aBrCtlConfig = aBrCtlConfig | TBrCtlDefs::ECapabilityGraphicalHistory;
+			}
+			
+		}
+	
+	if ( aBrCtlConfig == 0x0000 )
+			aBrCtlConfig = TBrCtlDefs::ECapabilityDisplayScrollBar | 
+						TBrCtlDefs::ECapabilityClientResolveEmbeddedURL |
+						TBrCtlDefs::ECapabilityLoadHttpFw |
+						TBrCtlDefs::ECapabilitySavedPage |
+						TBrCtlDefs::ECapabilityDisplayScrollBar ;
+		
+    TRAP( err, 
+        iBrCtlTestContainer = new (ELeave) CBrCtlApiTestContainer;
+        iBrCtlTestContainer->ConstructL( rect );
+	    iBrCtlTestContainer->CreateBrowserControlInterfaceL(aBrCtlConfig);
+        );
+
+    if ( err )
+        {
+        delete iBrCtlTestContainer; 
+        iBrCtlTestContainer = 0;
+        return KErrNone;
+        }
+
+    // Great, now set the focus of the browser control
+    iBrCtlTestContainer->SetFocus(); 
+    iBrCtlTestContainer->DrawNow();
+
+    // test block executed
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CBrowserControlApiTest::DestroyBrowserControlL
+// Deletes iBrCtlTestContainer which causes the browser control to be deleted.
+// -----------------------------------------------------------------------------
+//
+TInt CBrowserControlApiTest::DestroyBrowserControlL(
+   CStifItemParser& /* aItem */ )
+    {
+    delete iBrCtlTestContainer; 
+    iBrCtlTestContainer = 0;
+
+    // test block executed
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CBrowserControlApiTest::ZoomLevels
+// BC Test that ZoomLevels() works.
+// -----------------------------------------------------------------------------
+//
+TInt CBrowserControlApiTest::ZoomLevels( CStifItemParser& /* aItem */ )
+    {
+    if ( iBrCtlTestContainer )
+        {
+        iBrCtlTestContainer->ZoomLevels();
+        }
+
+    // test executed
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CBrowserControlApiTest::HandleCommandL
+// BC Test that all browser commands work.
+// -----------------------------------------------------------------------------
+//
+TInt CBrowserControlApiTest::HandleCommandL( CStifItemParser&  aItem )
+    {
+    TPtrC string;
+	if ( iBrCtlTestContainer )
+	    if ( aItem.GetNextString ( string ) == KErrNone )
+	    {
+		    if (string.Compare(_L("Disconnect1"))==0)
+		    	{
+		        TRAPD( err, iBrCtlTestContainer->HandleCommandL( TBrCtlDefs::ECommandDisconnect ) );
+		        RETURN_FAILURE_ON_ERROR 
+		    	}
+		    if (string.Compare(_L("CancelFetch"))==0)
+				{
+			 	TRAPD( err, iBrCtlTestContainer->HandleCommandL( TBrCtlDefs::ECommandCancelFetch ) );
+    			RETURN_FAILURE_ON_ERROR
+				}
+		   	if (string.Compare(_L("Open"))==0)
+				{
+	            TRAPD( err, iBrCtlTestContainer->HandleCommandL( TBrCtlDefs::ECommandOpen ) );
+    			RETURN_FAILURE_ON_ERROR
+				}
+			if (string.Compare(_L("Reload"))==0)
+				{
+		        TRAPD( err, iBrCtlTestContainer->HandleCommandL( TBrCtlDefs::ECommandReload ) );
+		        RETURN_FAILURE_ON_ERROR
+				}
+			if (string.Compare(_L("Back"))==0)
+				{
+			 	TRAPD( err, iBrCtlTestContainer->HandleCommandL( TBrCtlDefs::ECommandBack ) );
+   			 	RETURN_FAILURE_ON_ERROR
+				}
+			if (string.Compare(_L("Forward"))==0)
+		    	{
+				TRAPD( err, iBrCtlTestContainer->HandleCommandL( TBrCtlDefs::ECommandForward ) );
+        		RETURN_FAILURE_ON_ERROR 
+		    	}
+		    if (string.Compare(_L("ClearHistory"))==0)
+				{
+		        TRAPD( err, iBrCtlTestContainer->HandleCommandL( TBrCtlDefs::ECommandClearHistory ) );
+		        RETURN_FAILURE_ON_ERROR
+				}
+		   	if (string.Compare(_L("ShowHistory"))==0)
+				{
+		        TRAPD( err, iBrCtlTestContainer->HandleCommandL( TBrCtlDefs::ECommandShowHistory ) );
+		        RETURN_FAILURE_ON_ERROR
+				}
+			if (string.Compare(_L("Disconnect2"))==0)
+				{
+		        TRAPD( err, iBrCtlTestContainer->HandleCommandL( TBrCtlDefs::ECommandDisconnect ) );
+		        RETURN_FAILURE_ON_ERROR
+				}
+			if (string.Compare(_L("Accept"))==0)
+				{
+        		TRAPD( err, iBrCtlTestContainer->HandleCommandL( TBrCtlDefs::ECommandAccept ) );
+        		RETURN_FAILURE_ON_ERROR
+				}
+			if (string.Compare(_L("Cancel"))==0)
+		    	{
+				TRAPD( err, iBrCtlTestContainer->HandleCommandL( TBrCtlDefs::ECommandCancel ) );
+        		RETURN_FAILURE_ON_ERROR 
+		    	}
+		    if (string.Compare(_L("OpenToViewer1"))==0)
+				{
+		        TRAPD( err, iBrCtlTestContainer->HandleCommandL( TBrCtlDefs::ECommandOpenToViewer ) );
+		        RETURN_FAILURE_ON_ERROR
+				}
+		   	if (string.Compare(_L("AddToPhoneBook"))==0)
+				{
+		        TRAPD( err, iBrCtlTestContainer->HandleCommandL( TBrCtlDefs::ECommandAddToPhoneBook ) );
+		        RETURN_FAILURE_ON_ERROR
+				}
+			if (string.Compare(_L("MakeCall"))==0)
+				{
+		        TRAPD( err, iBrCtlTestContainer->HandleCommandL( TBrCtlDefs::ECommandMakeCall ) );
+		        RETURN_FAILURE_ON_ERROR
+				}
+			if (string.Compare(_L("RemoveFileName"))==0)
+				{
+		        TRAPD( err, iBrCtlTestContainer->HandleCommandL( TBrCtlDefs::ECommandRemoveFileName ) );
+		        RETURN_FAILURE_ON_ERROR
+				}
+			if (string.Compare(_L("ShowImages"))==0)
+		    	{
+		        TRAPD( err, iBrCtlTestContainer->HandleCommandL( TBrCtlDefs::ECommandShowImages ) );
+		        RETURN_FAILURE_ON_ERROR
+		    	}
+		    if (string.Compare(_L("LoadImages"))==0)
+				{
+		        TRAPD( err, iBrCtlTestContainer->HandleCommandL( TBrCtlDefs::ECommandLoadImages ) );
+		        RETURN_FAILURE_ON_ERROR
+				}
+		   	if (string.Compare(_L("GainFocus"))==0)
+				{
+			   	TRAPD( err, iBrCtlTestContainer->HandleCommandL( TBrCtlDefs::ECommandGainFocus ) );
+        		RETURN_FAILURE_ON_ERROR
+				}
+			if (string.Compare(_L("LoseFocus"))==0)
+				{
+		        TRAPD( err, iBrCtlTestContainer->HandleCommandL( TBrCtlDefs::ECommandLoseFocus ) );
+		        RETURN_FAILURE_ON_ERROR
+				}
+			if (string.Compare(_L("FindItem"))==0)
+				{
+				TRAPD( err, iBrCtlTestContainer->HandleCommandL( TBrCtlDefs::ECommandFindItem ) );
+        		RETURN_FAILURE_ON_ERROR
+				}
+			if (string.Compare(_L("FindItemPhoneNumber"))==0)
+		    	{
+		        TRAPD( err, iBrCtlTestContainer->HandleCommandL( TBrCtlDefs::ECommandFindItemPhoneNumber ) );
+		        RETURN_FAILURE_ON_ERROR
+		    	}
+		    if (string.Compare(_L("FindItemEMail"))==0)
+				{
+		        TRAPD( err, iBrCtlTestContainer->HandleCommandL( TBrCtlDefs::ECommandFindItemEMail ) );
+		        RETURN_FAILURE_ON_ERROR
+				}
+		   	if (string.Compare(_L("FindItemAddress"))==0)
+				{
+		        TRAPD( err, iBrCtlTestContainer->HandleCommandL( TBrCtlDefs::ECommandFindItemAddress ) );
+		        RETURN_FAILURE_ON_ERROR
+				}
+			if (string.Compare(_L("FindKeyword"))==0)
+				{
+		        TRAPD( err, iBrCtlTestContainer->HandleCommandL( TBrCtlDefs::ECommandFindKeyword ) );
+        		RETURN_FAILURE_ON_ERROR
+				}
+			if (string.Compare(_L("ClearFind"))==0)
+				{
+		        TRAPD( err, iBrCtlTestContainer->HandleCommandL( TBrCtlDefs::ECommandClearFind ) );
+		        RETURN_FAILURE_ON_ERROR
+				}
+			if (string.Compare(_L("ShowThumbnailView"))==0)
+		    	{
+		        TRAPD( err, iBrCtlTestContainer->HandleCommandL( TBrCtlDefs::ECommandShowThumbnailView ) );
+		        RETURN_FAILURE_ON_ERROR
+		    	}
+		    if (string.Compare(_L("OneStepBack"))==0)
+				{
+		        TRAPD( err, iBrCtlTestContainer->HandleCommandL( TBrCtlDefs::ECommandOneStepBack ) );
+		        RETURN_FAILURE_ON_ERROR
+				}
+		   	if (string.Compare(_L("ShowHistory"))==0)
+				{
+		        TRAPD( err, iBrCtlTestContainer->HandleCommandL( TBrCtlDefs::ECommandShowHistory ) );
+        		RETURN_FAILURE_ON_ERROR
+				}
+			if (string.Compare(_L("AppForeground"))==0)
+				{
+		        TRAPD( err, iBrCtlTestContainer->HandleCommandL( TBrCtlDefs::ECommandAppForeground ) );
+		        RETURN_FAILURE_ON_ERROR
+				}
+			if (string.Compare(_L("AppBackground"))==0)
+				{
+		        TRAPD( err, iBrCtlTestContainer->HandleCommandL( TBrCtlDefs::ECommandAppBackground ) );
+		        RETURN_FAILURE_ON_ERROR
+				}
+			if (string.Compare(_L("OpenNewWindow"))==0)
+		    	{
+     			TRAPD( err, iBrCtlTestContainer->HandleCommandL( TBrCtlDefs::ECommandOpenNewWindow ) );
+        		RETURN_FAILURE_ON_ERROR
+		    	}
+		    if (string.Compare(_L("OpenToViewer2"))==0)
+				{
+				TRAPD( err, iBrCtlTestContainer->HandleCommandL( TBrCtlDefs::ECommandOpenToViewer ) );
+        		RETURN_FAILURE_ON_ERROR
+				}
+		   	if (string.Compare(_L("ClearAutoFormFillData"))==0)
+				{
+		     	TRAPD( err, iBrCtlTestContainer->HandleCommandL( TBrCtlDefs::ECommandClearAutoFormFillData ) );
+        		RETURN_FAILURE_ON_ERROR
+				}
+			if (string.Compare(_L("ClearAutoFormFillPasswordData"))==0)
+				{
+				TRAPD( err, iBrCtlTestContainer->HandleCommandL( TBrCtlDefs::ECommandClearAutoFormFillPasswordData ) );
+        		RETURN_FAILURE_ON_ERROR
+				}
+			if (string.Compare(_L("RemoveFileName"))==0)
+				{
+			   	TRAPD( err, iBrCtlTestContainer->HandleCommandL( TBrCtlDefs::ECommandRemoveFileName ) );
+       		 	RETURN_FAILURE_ON_ERROR
+				}
+			if (string.Compare(_L("FreeMemory"))==0)
+		    	{
+		        TRAPD( err, iBrCtlTestContainer->HandleCommandL( TBrCtlDefs::ECommandFreeMemory ) );
+		        RETURN_FAILURE_ON_ERROR 
+		    	}
+		    if (string.Compare(_L("MemoryGood"))==0)
+				{
+		        TRAPD( err, iBrCtlTestContainer->HandleCommandL( TBrCtlDefs::ECommandMemoryGood ) );
+		        RETURN_FAILURE_ON_ERROR
+				}
+		   	if (string.Compare(_L("DumpRenderTree"))==0)
+				{
+		        TRAPD( err, iBrCtlTestContainer->HandleCommandL( TBrCtlDefs::ECommandDumpRenderTree ) );
+        		RETURN_FAILURE_ON_ERROR
+				}
+			if (string.Compare(_L("UnloadWMLEngine"))==0)
+				{
+		        TRAPD( err, iBrCtlTestContainer->HandleCommandL( TBrCtlDefs::ECommandUnloadWMLEngine ) );
+		        RETURN_FAILURE_ON_ERROR
+				}
+			if (string.Compare(_L("SmartLinkMakeCall"))==0)
+				{
+		        TRAPD( err, iBrCtlTestContainer->HandleCommandL( TBrCtlDefs::ECommandSmartLinkMakeCall ) );
+		        RETURN_FAILURE_ON_ERROR
+				}
+			if (string.Compare(_L("SmartLinkSendMessage"))==0)
+		    	{
+		        TRAPD( err, iBrCtlTestContainer->HandleCommandL( TBrCtlDefs::ECommandSmartLinkSendMessage ) );
+		        RETURN_FAILURE_ON_ERROR
+		    	}
+		    if (string.Compare(_L("SmartLinkAddToPhoneBook"))==0)
+				{
+		        TRAPD( err, iBrCtlTestContainer->HandleCommandL( TBrCtlDefs::ECommandSmartLinkAddToPhoneBook ) );
+		        RETURN_FAILURE_ON_ERROR
+				}
+		   	if (string.Compare(_L("ShowToolBar"))==0)
+				{
+		        TRAPD( err, iBrCtlTestContainer->HandleCommandL( TBrCtlDefs::ECommandShowToolBar ) );
+		        RETURN_FAILURE_ON_ERROR
+				}
+			if (string.Compare(_L("SmartLinkSendEmail"))==0)
+				{
+		        TRAPD( err, iBrCtlTestContainer->HandleCommandL( TBrCtlDefs::ECommandSmartLinkSendEmail ) );
+        		RETURN_FAILURE_ON_ERROR
+				}
+			if (string.Compare(_L("UnLoadPluginWindows"))==0)
+				{
+		       	TRAPD( err, iBrCtlTestContainer->HandleCommandL( TBrCtlDefs::ECommandUnLoadPluginWindows ) );
+        		RETURN_FAILURE_ON_ERROR
+				}
+			if (string.Compare(_L("FindItemVoIPAddress"))==0)
+		    	{
+		        TRAPD( err, iBrCtlTestContainer->HandleCommandL( TBrCtlDefs::ECommandFindItemVoIPAddress ) );
+        		RETURN_FAILURE_ON_ERROR
+		    	}
+		    if (string.Compare(_L("SmartLinkMakeVoipCall"))==0)
+				{
+			  	TRAPD( err, iBrCtlTestContainer->HandleCommandL( TBrCtlDefs::ECommandSmartLinkMakeVoipCall ) );
+        		RETURN_FAILURE_ON_ERROR
+				}
+		   	if (string.Compare(_L("ZoomSliderHide"))==0)
+				{
+		        TRAPD( err, iBrCtlTestContainer->HandleCommandL( TBrCtlDefs::ECommandZoomSliderHide ) );
+		        RETURN_FAILURE_ON_ERROR
+				}
+			if (string.Compare(_L("EnterFullscreenBrowsing"))==0)
+				{
+		        TRAPD( err, iBrCtlTestContainer->HandleCommandL( TBrCtlDefs::ECommandEnterFullscreenBrowsing ) );
+		        RETURN_FAILURE_ON_ERROR
+				}
+			if (string.Compare(_L("LeaveFullscreenBrowsing"))==0)
+				{
+				TRAPD( err, iBrCtlTestContainer->HandleCommandL( TBrCtlDefs::ECommandLeaveFullscreenBrowsing ) );
+        		RETURN_FAILURE_ON_ERROR
+				}
+			if (string.Compare(_L("ShowDownloads"))==0)
+		    	{
+		        TRAPD( err, iBrCtlTestContainer->HandleCommandL( TBrCtlDefs::ECommandShowDownloads ) );
+        		RETURN_FAILURE_ON_ERROR
+		    	}
+		    if (string.Compare(_L("SaveLaunchParams"))==0)
+				{
+				TRAPD( err, iBrCtlTestContainer->HandleCommandL( TBrCtlDefs::ECommandSaveLaunchParams ) );
+        		RETURN_FAILURE_ON_ERROR
+				}
+		   	if (string.Compare(_L("ShowAnchorHref"))==0)
+				{
+				TRAPD( err, iBrCtlTestContainer->HandleCommandL( TBrCtlDefs::ECommandShowAnchorHref ) );
+        		RETURN_FAILURE_ON_ERROR
+				}
+			if (string.Compare(_L("LoadFocusedImage"))==0)
+				{
+				TRAPD( err, iBrCtlTestContainer->HandleCommandL( TBrCtlDefs::ECommandLoadFocusedImage ) );
+        		RETURN_FAILURE_ON_ERROR
+				}
+			if (string.Compare(_L("ZoomSliderShow"))==0)
+				{
+		        TRAPD( err, iBrCtlTestContainer->HandleCommandL( TBrCtlDefs::ECommandZoomSliderShow ) );
+		        RETURN_FAILURE_ON_ERROR
+				}
+			if (string.Compare(_L("HistoryNavigateForward"))==0)
+		    	{
+		        TRAPD( err, iBrCtlTestContainer->HandleCommandL( TBrCtlDefs::ECommandHistoryNavigateForward ) );
+		        RETURN_FAILURE_ON_ERROR 
+		    	}
+		    if (string.Compare(_L("HistoryNavigateBack"))==0)
+				{
+		        TRAPD( err, iBrCtlTestContainer->HandleCommandL( TBrCtlDefs::ECommandHistoryNavigateBack ) );
+		        RETURN_FAILURE_ON_ERROR
+				}
+		   	if (string.Compare(_L(""))==0)
+				{
+				TRAPD( err, iBrCtlTestContainer->HandleCommandL(NULL) );
+        		RETURN_FAILURE_ON_ERROR
+				} 
+		}
+
+    // test block
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CBrowserControlApiTest::LoadData
+// BC Test that all browser commands work.
+// -----------------------------------------------------------------------------
+//
+TInt CBrowserControlApiTest::LoadData( CStifItemParser& /* aItem */ )
+    {
+    TInt err( KErrNone );
+    if ( iBrCtlTestContainer )
+        {
+        TRAP( err, iBrCtlTestContainer->LoadDataL() );
+        }
+        
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// CBrowserControlApiTest::SavedPageL
+// BC Test that LoadSavedPageL works.
+// -----------------------------------------------------------------------------
+//
+TInt CBrowserControlApiTest::SavedPageL( CStifItemParser& /* aItem */)
+    {
+    iBrCtlTestContainer->LoadSavedPageL();
+
+    // test executed
+    return KErrNone;
+    }    
+
+// -----------------------------------------------------------------------------
+// CBrowserControlApiTest::CertInfo
+// BC Test that CertInfo works.
+// -----------------------------------------------------------------------------
+//
+TInt CBrowserControlApiTest::CertInfo( CStifItemParser& /* aItem */)
+    {
+    if ( iBrCtlTestContainer )
+        {
+        iBrCtlTestContainer->CertInfo();
+        }
+    // test executed
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CBrowserControlApiTest::SetSelfDownloadContentTypes
+// BC Test that all browser commands work.
+// -----------------------------------------------------------------------------
+//
+TInt CBrowserControlApiTest::SetSelfDownloadContentTypes( CStifItemParser& /* aItem */ )
+    {
+    if ( iBrCtlTestContainer )
+        {
+        iBrCtlTestContainer->SetSelfDownloadContentTypes();
+        }
+
+    // test executed
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CBrowserControlApiTest::NavigationAvailable
+// BC Test that all browser commands work.
+// -----------------------------------------------------------------------------
+//
+TInt CBrowserControlApiTest::NavigationAvailable( CStifItemParser& /* aItem */)
+    {
+    TInt err = iBrCtlTestContainer->NavigationAvailableTest();
+    RETURN_FAILURE_ON_ERROR
+
+    // Now load first page - still should not be able to go back...
+    TRAP(err,  iBrCtlTestContainer->LoadSavedPageL() );
+    RETURN_FAILURE_ON_ERROR
+    err = iBrCtlTestContainer->NavigationAvailableTest();
+
+    // test executed
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CBrowserControlApiTest::PageInfo
+// BC Test that all browser commands work.
+// -----------------------------------------------------------------------------
+//
+TInt CBrowserControlApiTest::PageInfo( CStifItemParser&  aItem  )
+    {
+	TPtrC string;
+	if ( iBrCtlTestContainer )
+	    if ( aItem.GetNextString ( string ) == KErrNone )
+	    {
+		    if (string.Compare(_L("Title"))==0)
+		    	{
+		    	TRAPD( err, iBrCtlTestContainer->PageInfoLC( TBrCtlDefs::EPageInfoTitle ) );
+			    RETURN_FAILURE_ON_ERROR  
+		    	}
+		    if (string.Compare(_L("Url"))==0)
+				{
+				TRAPD( err, iBrCtlTestContainer->PageInfoLC( TBrCtlDefs::EPageInfoUrl ) );
+		        RETURN_FAILURE_ON_ERROR
+				}
+		   	if (string.Compare(_L("FocusedNodeUrl"))==0)
+				{
+		        TRAPD( err, iBrCtlTestContainer->PageInfoLC( TBrCtlDefs::EPageInfoFocusedNodeUrl ) );
+		        RETURN_FAILURE_ON_ERROR
+				}
+			if (string.Compare(_L("Content"))==0)
+				{
+		        TRAPD( err, iBrCtlTestContainer->PageInfoLC( TBrCtlDefs::EPageInfoContent ) );
+		        RETURN_FAILURE_ON_ERROR
+				}
+			if (string.Compare(_L("SavedPage"))==0)
+				{
+		        TRAPD( err, iBrCtlTestContainer->PageInfoLC( TBrCtlDefs::EPageInfoSavedPage ) );
+		        RETURN_FAILURE_ON_ERROR
+				}
+		}
+
+    // test executed
+    return KErrNone;
+    }
+        
+// -----------------------------------------------------------------------------
+// CBrowserControlApiTest::EmptyCache
+// BC Test that all browser commands work.
+// -----------------------------------------------------------------------------
+//
+TInt CBrowserControlApiTest::EmptyCache( CStifItemParser& /* aItem */ )
+    {
+    if ( iBrCtlTestContainer )
+        {
+        TInt err = iBrCtlTestContainer->ClearCacheTest();
+        RETURN_FAILURE_ON_ERROR
+        TBool inCache = iBrCtlTestContainer->IsUrlInCacheTest( ( TDesC16 & )KUrlLoadTestHtml() );
+        if ( inCache )
+            {
+            return KErrNone;
+            }
+        err = iBrCtlTestContainer->ClearItemInCacheTest();
+        RETURN_FAILURE_ON_ERROR
+        
+        // Now try loading a page
+        TRAP( err, iBrCtlTestContainer->LoadDataL() );
+        RETURN_FAILURE_ON_ERROR
+        // Now the url should be in the cache
+        inCache = iBrCtlTestContainer->IsUrlInCacheTest( ( TDesC16 & )KUrlLoadTestHtml() );
+        if ( !inCache )
+            {
+            return KErrNone;
+            }
+        err = iBrCtlTestContainer->ClearItemInCacheTest();
+        RETURN_FAILURE_ON_ERROR
+        // Now the url should expunged from the cache
+        inCache = iBrCtlTestContainer->IsUrlInCacheTest( ( TDesC16 & )KUrlLoadTestHtml() );
+        if ( inCache )                      
+            {                           
+            return KErrNone;            
+            }
+        }
+    // test executed
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CBrowserControlApiTest::GetBitmapData
+// BC Test that all browser commands work.
+// -----------------------------------------------------------------------------
+//
+TInt CBrowserControlApiTest::GetBitmapData( CStifItemParser& /* aItem */ )
+    {
+    TRAPD( err, iBrCtlTestContainer->LoadDataL() );
+    RETURN_FAILURE_ON_ERROR
+    
+    TRAP( err, 
+        if ( iBrCtlTestContainer )
+            {
+            err = iBrCtlTestContainer->GetBitmapData();
+            }
+        )
+    // test executed
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// CBrowserControlApiTest::SaveToFile
+// BC Test that all browser commands work.
+// -----------------------------------------------------------------------------
+//
+TInt CBrowserControlApiTest::SaveToFile( CStifItemParser& /* aItem */ )
+    {
+    TInt err( KErrNone );
+    if ( iBrCtlTestContainer )
+        {
+        TRAP( err,  iBrCtlTestContainer->SaveToFileL() );
+        }
+
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// CBrowserControlApiTest::OkToExit
+// BC Test that all browser commands work.
+// -----------------------------------------------------------------------------
+//
+TInt CBrowserControlApiTest::OkToExit( CStifItemParser& /* aItem */ )
+    {
+    if ( iBrCtlTestContainer )
+        {
+        iBrCtlTestContainer->OkToExit();
+        }
+
+    // test executed
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CBrowserControlApiTest::OfferKeyEvent
+// BC Test that all browser commands work.
+// -----------------------------------------------------------------------------
+//
+TInt CBrowserControlApiTest::OfferKeyEvent( CStifItemParser& /* aItem */ )
+    {
+    if ( iBrCtlTestContainer )
+        {
+        iBrCtlTestContainer->OfferKeyEvent();
+        }
+
+    // test executed
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CBrowserControlApiTest::MinimumSize
+// BC Test that all browser commands work.
+// -----------------------------------------------------------------------------
+//
+TInt CBrowserControlApiTest::MinimumSize( CStifItemParser& /* aItem */ )
+    {
+    if ( iBrCtlTestContainer )
+        {
+        iBrCtlTestContainer->BrCtlMinimumSize();
+        }
+    // test executed
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CBrowserControlApiTest::FocusedElementType
+// BC Test that all browser commands work.
+// -----------------------------------------------------------------------------
+//
+TInt CBrowserControlApiTest::FocusedElementType( CStifItemParser& /* aItem */ )
+    {
+    TInt err( KErrNone );
+    if ( iBrCtlTestContainer )
+        {
+        TRAP( err, err = iBrCtlTestContainer->BrCtlFocusedElementTypeL() );
+        }
+
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// CBrowserControlApiTest::ContentSize
+// BC Test that all browser commands work.
+// -----------------------------------------------------------------------------
+//
+TInt CBrowserControlApiTest::ContentSize( CStifItemParser& /* aItem */ )
+    {
+    if ( iBrCtlTestContainer )
+        {
+        iBrCtlTestContainer->BrCtlContentSize();
+        }
+
+    // test executed
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CBrowserControlApiTest::BrCtlSetParam
+// BC Test that all browser commands work.
+// -----------------------------------------------------------------------------
+//
+TInt CBrowserControlApiTest::BrCtlSetParam( CStifItemParser& /* aItem */ )
+    {
+    if ( iBrCtlTestContainer )
+        {
+        iBrCtlTestContainer->BrCtlSetParam();
+        }
+    // test executed
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CBrowserControlApiTest::BrCtlSubscribeToMenuItemsL
+// BC Test that all browser commands work.
+// -----------------------------------------------------------------------------
+//
+TInt CBrowserControlApiTest::BrCtlSubscribeToMenuItemsL( CStifItemParser& /* aItem */ )
+    {
+    TInt err( KErrNone );
+    if ( iBrCtlTestContainer )
+        {
+        TRAP(err,  err = iBrCtlTestContainer->BrCtlSubscribeToMenuItemsL() );
+        }
+
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// CBrowserControlApiTest::FocusedImage
+// BC Test that all browser commands work.
+// -----------------------------------------------------------------------------
+//
+TInt CBrowserControlApiTest::FocusedImage( CStifItemParser& /* aItem */ )
+    {
+    TRAPD( err,  err = iBrCtlTestContainer->FocusedImageL() );
+    RETURN_FAILURE_ON_ERROR
+
+    const TInt KExpectedImageCount( 1 );
+
+    TInt actualCount( KErrNotFound );
+    
+    TRAP( err, actualCount = iBrCtlTestContainer->ImageCountL() );
+    if ( err || ( actualCount != KExpectedImageCount ) )
+        {
+        return KErrNone;
+        }
+
+    // test executed
+    return KErrNone;
+    }    
+
+// -----------------------------------------------------------------------------
+// CBrowserControlApiTest::BrCtlSettings
+// BC Test that all browser commands work.
+// -----------------------------------------------------------------------------
+//
+TInt CBrowserControlApiTest::BrCtlSettings( CStifItemParser& /* aItem */ )
+    {
+    if ( iBrCtlTestContainer )
+        {
+        TRAPD(err,  
+            err = iBrCtlTestContainer->SetBrowserSettingL();
+            RETURN_FAILURE_ON_ERROR
+            TUint result = 0;
+            err = iBrCtlTestContainer->BrowserSettingL( result );
+            if ( err || result )
+                {
+                return KErrNone;
+                }
+            ) // TRAP
+    }
+    // test executed
+    return KErrNone;
+    }
+    
+// -----------------------------------------------------------------------------
+// CBrowserControlApiTest::FindKeyword
+// BC Test that all browser commands work.
+// -----------------------------------------------------------------------------
+//
+TInt CBrowserControlApiTest::FindKeyword( CStifItemParser&  aItem  )
+    {
+   
+    TPtrC html;
+    TPtrC keyword;
+    TInt match;
+    
+    TInt err ( KErrNone );
+        
+    if ( iBrCtlTestContainer )
+    {
+
+		//if ( aItem.GetNextString ( html ) == KErrNone )
+			if ( (err = aItem.GetNextString ( keyword )) == KErrNone )
+				if ( (err = aItem.GetNextInt ( match )) == KErrNone )
+				{
+					
+				}
+
+        err = iBrCtlTestContainer->FindKeyword( html, keyword, match );
+        RETURN_FAILURE_ON_ERROR
+        err = iBrCtlTestContainer->FindKeywordAgain( match );
+        RETURN_FAILURE_ON_ERROR
+        }
+    // test executed
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CBrowserControlApiTest::CommandObserver
+// BC Test that all browser commands work.
+// -----------------------------------------------------------------------------
+//
+TInt CBrowserControlApiTest::CommandObserver( CStifItemParser& /* aItem */ )
+    {
+    TInt ret(KErrGeneral);
+
+    if ( iBrCtlTestContainer )
+        {
+        TRAPD(err, ret = iBrCtlTestContainer->AddCommandObserverL() );
+        if ( err || !ret )
+            {
+            err = iBrCtlTestContainer->RemoveCommandObserver(); 
+            return KErrNone;
+            }
+        err = iBrCtlTestContainer->RemoveCommandObserver();
+        RETURN_FAILURE_ON_ERROR
+        }
+    // test executed
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CBrowserControlApiTest::AddOptionMenuItems
+// BC Test that all browser commands work.
+// -----------------------------------------------------------------------------
+//
+TInt CBrowserControlApiTest::AddOptionMenuItems( CStifItemParser& /* aItem */ )
+    {
+    if ( iBrCtlTestContainer )
+        {
+        TRAPD(err,  iBrCtlTestContainer->LoadDataL() );
+        RETURN_FAILURE_ON_ERROR
+
+        err = iBrCtlTestContainer->AddOptionMenuItems();
+        RETURN_FAILURE_ON_ERROR
+        }
+    // test executed
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CBrowserControlApiTest::BrCtlInitLoadData
+// BC Test that all browser commands work.
+// -----------------------------------------------------------------------------
+//
+TInt CBrowserControlApiTest::BrCtlInitLoadData( CStifItemParser& /* aItem */ )
+    {
+    if ( iBrCtlTestContainer )
+        {
+        TRAPD(err,  iBrCtlTestContainer->BrCtlInitLoadDataL() );
+        RETURN_FAILURE_ON_ERROR
+        }
+
+    // test executed
+    return KErrNone;
+    }
+    
+// -----------------------------------------------------------------------------
+// CBrowserControlApiTest::HandleDownloadCommand
+// BC Test that all browser commands work.
+// -----------------------------------------------------------------------------
+//
+TInt CBrowserControlApiTest::HandleDownloadCommand( CStifItemParser& /* aItem */)
+    {
+    if ( iBrCtlTestContainer )
+        {
+        TInt err = iBrCtlTestContainer->HandleDownloadCommand();
+        RETURN_FAILURE_ON_ERROR
+        }
+
+    // test executed
+    return KErrNone;
+    }    
+
+// -----------------------------------------------------------------------------
+// CBrowserControlApiTest::VersionInfo
+// This BrCtl API function does nothing!
+// BC Test that this function still works.
+// -----------------------------------------------------------------------------
+//
+TInt CBrowserControlApiTest::VersionInfo( CStifItemParser& /* aItem */ )
+    {
+    if ( iBrCtlTestContainer )
+        {
+        TRAPD( err, err = iBrCtlTestContainer->VersionInfoL() );
+        RETURN_FAILURE_ON_ERROR
+        }
+
+    // test executed
+    return KErrNone;
+    }
+    
+    
+// -----------------------------------------------------------------------------
+// CBrowserControlApiTest::WmlOptionMenuItem
+// 
+// -----------------------------------------------------------------------------
+//
+TInt CBrowserControlApiTest::WmlOptionMenuItems( CStifItemParser& /* aItem */ )
+    {
+    if ( iBrCtlTestContainer )
+        {
+        TRAPD( err, err = iBrCtlTestContainer->WmlOptionMenuItemsL() );
+        RETURN_FAILURE_ON_ERROR
+        }
+
+    // test executed
+    return KErrNone;
+    }
+    
+// -----------------------------------------------------------------------------
+// CBrowserControlApiTest::ImageCount
+// 
+// -----------------------------------------------------------------------------
+//
+TInt CBrowserControlApiTest::ImageCount( CStifItemParser& /* aItem */ )
+    {
+    if ( iBrCtlTestContainer )
+        {
+        TRAPD( err, err = iBrCtlTestContainer->ImageCountL() );
+        RETURN_FAILURE_ON_ERROR
+        }
+
+    // test executed
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CBrowserControlApiTest::PostUrlL
+// 
+// -----------------------------------------------------------------------------
+//
+TInt CBrowserControlApiTest::PostUrlL( CStifItemParser& /* aItem */ )
+    {
+    if ( iBrCtlTestContainer )
+        {
+        TRAPD( err, err = iBrCtlTestContainer->BrCtlPostL() );
+        RETURN_FAILURE_ON_ERROR
+        }
+
+    // test executed
+    return KErrNone;
+    }
+    
+// -----------------------------------------------------------------------------
+// CBrowserControlApiTest::CreateBrCtlWithWidgetExtensionL
+// Creates a browser control with widget extension contained within iBrCtlTestContainer
+// -----------------------------------------------------------------------------
+//
+TInt CBrowserControlApiTest::CreateBrCtlWithWidgetExtensionL( 
+   CStifItemParser&  aItem  )
+    {
+    TInt err( KErrNone );
+
+    TInt aBrCtlConfig = 0x0000;
+
+	TPtrC string;
+	
+    TPoint base( 0, 0 );
+    TPoint extent( 252, 195 );
+    TRect rect( base, extent );
+		
+    TRAP( err, 
+        iBrCtlTestContainer = new (ELeave) CBrCtlApiTestContainer;
+        iBrCtlTestContainer->ConstructL( rect );
+	    err = iBrCtlTestContainer->CreateBrCtlInterfaceAndWidgetExtensionL();
+        );
+
+    if ( err )
+        {
+        delete iBrCtlTestContainer; 
+        iBrCtlTestContainer = 0;
+        return KErrNone;
+        }
+
+    // Great, now set the focus of the browser control
+    iBrCtlTestContainer->SetFocus(); 
+    iBrCtlTestContainer->DrawNow();
+    		
+    // test block executed
+    return KErrNone;
+    }
+
+    
+// -----------------------------------------------------------------------------
+// CBrowserControlApiTest::TestHistoryHandlerL
+// Load several pages in an attempt to indirectly exercise History Handler
+// -----------------------------------------------------------------------------
+//
+TInt CBrowserControlApiTest::TestHistoryHandlerL( CStifItemParser&  aItem )
+    {
+    TPtrC string;
+	if ( iBrCtlTestContainer )
+	{
+	    if ( aItem.GetNextString ( string ) == KErrNone )
+	    {
+		    if (string.Compare(_L("Page1"))==0)
+		    	{
+		        TRAPD( err, iBrCtlTestContainer->HistoryLoad1L() );
+		        RETURN_FAILURE_ON_ERROR 
+		    	}
+
+		    if (string.Compare(_L("Page2"))==0)
+		    	{
+		        TRAPD( err, iBrCtlTestContainer->HistoryLoad2L() );
+		        RETURN_FAILURE_ON_ERROR 
+		    	}
+
+		    if (string.Compare(_L("Page3"))==0)
+		    	{
+		        TRAPD( err, iBrCtlTestContainer->HistoryLoad3L() );
+		        RETURN_FAILURE_ON_ERROR 
+		    	}
+		}
+	}
+	
+    // test executed
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CBrowserControlApiTest::TestWMLLoadL
+// Load a WML page in an attempt to indirectly exercise WML functionality
+// -----------------------------------------------------------------------------
+//
+TInt CBrowserControlApiTest::TestWMLLoadL( CStifItemParser&  aItem )
+    {
+    TPtrC string;
+	if ( iBrCtlTestContainer )
+	{
+	    if ( aItem.GetNextString ( string ) == KErrNone )
+	    {
+		    if (string.Compare(_L("Page1"))==0)
+		    	{
+		        TRAPD( err, iBrCtlTestContainer->WMLLoad1L() );
+		        RETURN_FAILURE_ON_ERROR 
+		    	}
+		    if (string.Compare(_L("Page2"))==0)
+		    	{
+		        TRAPD( err, iBrCtlTestContainer->WMLLoad2L() );
+		        RETURN_FAILURE_ON_ERROR 
+		    	}
+		    if (string.Compare(_L("Page3"))==0)
+		    	{
+		        TRAPD( err, iBrCtlTestContainer->WMLLoad3L() );
+		        RETURN_FAILURE_ON_ERROR 
+		    	}
+		}
+	}
+	
+    // test executed
+    return KErrNone;
+    }
+    
+// ========================== OTHER EXPORTED FUNCTIONS =========================
+// None
+
+//  [End of File] - Do not remove
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/browser/src/BrCtlApiTestContainer.cpp	Thu Jan 21 14:54:07 2010 +0000
@@ -0,0 +1,941 @@
+/*
+* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  CBrCtlApiTestContainer from BrCtlBCTestContainer.h
+*
+*/
+
+// INCLUDE FILES
+#include "BrCtlApiTestContainer.h"
+
+#include <eiklabel.h>  // for example label control
+#include <aknview.h>
+#include <AknGlobalConfirmationQuery.h>
+#include <BrCtlInterface.h>
+#include <CHARCONV.H>
+#include "BrCtlApiTestObserver.h"
+#include <e32std.h>
+
+_LIT8( KContentDataType, "text/html" );
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// CBrCtlApiTestContainer::ConstructL(const TRect& aRect)
+// EPOC two phased constructor
+// ---------------------------------------------------------
+//
+void CBrCtlApiTestContainer::ConstructL(const TRect& aRect)
+    {
+    iBrCtlApiTestObserver = CBrCtlApiTestObserver::NewL();
+    iBrCtlApiTestStateChangeObserver = CBrCtlApiTestStateChangeObserver::NewL( this );
+    iBrCtlDialogs = CBrowserDialogsProviderProxy::NewL();
+    iCommandBase = TBrCtlDefs::ECommandIdBase;
+    CreateWindowL();
+    SetRect(aRect);
+    ActivateL();
+    }
+
+// Destructor
+CBrCtlApiTestContainer::~CBrCtlApiTestContainer()
+    {
+
+    if (iBrCtlInterface)
+        {
+        iBrCtlInterface->RemoveLoadEventObserver(iBrCtlApiTestObserver);
+        iBrCtlInterface->RemoveStateChangeObserver(iBrCtlApiTestStateChangeObserver);
+        delete iBrCtlInterface;
+        }
+
+    delete iBrCtlApiTestStateChangeObserver;
+    delete iBrCtlApiTestObserver;
+    delete iBrCtlDialogs;
+    }
+
+void CBrCtlApiTestContainer::CancelLoad()
+    {
+    iCancelInitDataLoad = ETrue;
+    }
+    
+TInt CBrCtlApiTestContainer::LoadPageL()
+    {
+    if(iBrCtlInterface)
+        {
+        iBrCtlInterface->LoadUrlL(KUrlLoadTestHtml2);
+        }
+
+     return KErrNone;
+     }
+
+// ---------------------------------------------------------
+// CBrCtlApiTestContainer::SizeChanged()
+// Called by framework when the view size is changed
+// ---------------------------------------------------------
+//
+void CBrCtlApiTestContainer::SizeChanged()
+    {
+    if (iBrCtlInterface)
+        {
+        iBrCtlInterface->SetRect(Rect());
+        }
+    }
+
+// ---------------------------------------------------------
+// CBrCtlApiTestContainer::CountComponentControls() const
+// ---------------------------------------------------------
+//
+TInt CBrCtlApiTestContainer::CountComponentControls() const
+    {
+    if (iBrCtlInterface)
+        return 1;
+    return 0;
+    }
+
+// ---------------------------------------------------------
+// CBrCtlApiTestContainer::ComponentControl(TInt aIndex) const
+// ---------------------------------------------------------
+//
+CCoeControl* CBrCtlApiTestContainer::ComponentControl(TInt aIndex) const
+    {
+    switch ( aIndex )
+        {
+        case 0:
+            return iBrCtlInterface; // Could be NULL
+        default:
+            return NULL;
+        }
+    }
+
+// ---------------------------------------------------------
+// CBrCtlApiTestContainer::Draw(const TRect& aRect) const
+// ---------------------------------------------------------
+//
+void CBrCtlApiTestContainer::Draw(const TRect& aRect) const
+    {
+    CWindowGc& gc = SystemGc();
+    // TODO: Add your drawing code here
+    // example code...
+    gc.SetPenStyle(CGraphicsContext::ENullPen);
+    gc.SetBrushColor(KRgbGray);
+    gc.SetBrushStyle(CGraphicsContext::ESolidBrush);
+    gc.DrawRect(aRect);
+    
+    }
+
+// ---------------------------------------------------------
+// CBrCtlApiTestContainer::HandleControlEventL(
+//     CCoeControl* aControl,TCoeEvent aEventType)
+// ---------------------------------------------------------
+//
+void CBrCtlApiTestContainer::HandleControlEventL(
+    CCoeControl* /*aControl*/,TCoeEvent /*aEventType*/)
+    {
+    // TODO: Add your control event handler code here
+    }
+
+
+
+// ----------------------------------------------------
+// CBrCtlApiTestContainer::HandleKeyEventL(
+//     const TKeyEvent& aKeyEvent,TEventCode /*aType*/)
+// ?implementation_description
+// ----------------------------------------------------
+//
+TKeyResponse CBrCtlApiTestContainer::HandleKeyEventL(
+    const TKeyEvent& /*aKeyEvent*/,TEventCode /*aType*/)
+    {
+    return EKeyWasNotConsumed;
+    }
+
+// ----------------------------------------------------
+// CBrCtlApiTestContainer::HandleCommandL(TInt aCommand)
+// ?implementation_description
+// ----------------------------------------------------
+//
+TInt CBrCtlApiTestContainer::HandleCommandL( TInt aCommand )
+    {
+    const TInt KCommandIdBase( 15000 );
+    iBrCtlInterface->HandleCommandL( aCommand + KCommandIdBase );
+    return KErrNone;
+    }
+
+TKeyResponse CBrCtlApiTestContainer::OfferKeyEventL(const TKeyEvent& /* aKeyEvent */,
+                        TEventCode /* aType */ )
+    {
+    return EKeyWasConsumed;
+    }
+
+void CBrCtlApiTestContainer::HandleCommandL( 
+    TBrCtlDefs::TBrCtlClientCommands /* aCommand */, 
+    const CArrayFix<TPtrC>& /* aAttributesNames */,
+    const CArrayFix<TPtrC>& /* aAttributeValues */ )
+    {
+    }
+
+
+void CBrCtlApiTestContainer::CreateBrowserControlInterfaceL(TInt aBrCtlConfig)
+    {
+    TPoint base( 0, 0 );
+    TPoint extent( 352, 295 );
+    TRect rect( base, extent );
+    
+    iBrCtlInterface = CreateBrowserControlL( this, rect, 
+        aBrCtlConfig,
+        iCommandBase, iBrCtlApiTestObserver, iBrCtlApiTestObserver,
+        iBrCtlApiTestObserver, iBrCtlApiTestObserver, iBrCtlDialogs, NULL, iBrCtlApiTestObserver );
+
+    iBrCtlInterface->MakeVisible( ETrue );
+    
+    }
+
+HBufC8* CBrCtlApiTestContainer::ReadFileLC( const TDesC& aFileName )
+    {
+    RFs rfs;
+    RFile file;
+    User::LeaveIfError( rfs.Connect() );
+    CleanupClosePushL( rfs );
+    User::LeaveIfError( file.Open( rfs, aFileName, EFileRead ) );
+    CleanupClosePushL( file );
+    TInt size;
+    User::LeaveIfError( file.Size( size ) );
+    HBufC8* buf = HBufC8::NewLC( size );
+    TPtr8 bufPtr( buf->Des() );
+    User::LeaveIfError( file.Read( bufPtr ) );
+    CleanupStack::Pop(); // buf
+    CleanupStack::PopAndDestroy( 2 ); // file, rfs
+    CleanupStack::PushL( buf );
+    return buf;
+    }
+
+TInt CBrCtlApiTestContainer::LoadDataL()
+    {
+    HBufC8* data = ReadFileLC( KUrlLoadTestHtml );
+    TDataType dataType( KContentDataType() );
+    TUid uid;
+    uid.iUid = KCharacterSetIdentifierIso88591;
+    TRAPD( err, iBrCtlInterface->LoadDataL( KUrlLoadTestHtml, *data, dataType, uid ) );
+	
+    CleanupStack::PopAndDestroy( data );
+
+    return err;
+    }
+
+TInt CBrCtlApiTestContainer::ClearCacheTest()
+    {
+    const TUint result = iBrCtlInterface->ClearCache();
+    
+    return KErrNone;
+    }
+
+TBool CBrCtlApiTestContainer::IsUrlInCacheTest( TDesC16& aUrl )
+    {
+    const TBool result = iBrCtlInterface->IsUrlInCache( aUrl ); // ( TDesC16 & )KUrlLoadTestHtml() );
+
+    return result;
+    }
+
+TInt CBrCtlApiTestContainer::ClearItemInCacheTest()
+    {
+    TInt result = iBrCtlInterface->ClearItemInCache( (TDesC16 &) KUrlLoadTestHtml() );
+
+    if ( ( result == KErrNotFound ) || ( result == KErrNone ) )
+        {
+        return KErrNone;
+        }
+    else
+        {
+        return KErrGeneral;
+        }
+    }
+
+TInt CBrCtlApiTestContainer::PageInfoLC( TBrCtlDefs::TBrCtlPageInfo aType )
+    {
+    iBrCtlInterface->LoadFileL( KUrlLoadTestHtml );
+
+    TRAPD( err, 
+        HBufC* url = iBrCtlInterface->PageInfoLC( aType ); 
+        CleanupStack::PopAndDestroy( url ); 
+        )
+
+    return err;
+    }
+
+TInt CBrCtlApiTestContainer::CertInfo()
+    {
+    const TCertInfo* certInfo = iBrCtlInterface->CertInfo();
+
+    if ( !certInfo )
+        {
+        return KErrNone;
+        }
+    else
+        {
+        return KErrGeneral;
+        }
+    }
+
+TInt CBrCtlApiTestContainer::NavigationAvailableTest()
+    {
+    const TBool nav = iBrCtlInterface->NavigationAvailable( 
+        TBrCtlDefs::ENavigationBack );
+
+    if ( nav == 0 || nav == 1 )
+        {
+        return KErrNone;
+        }
+    else
+        {
+        return KErrGeneral;
+        }
+    }
+
+TInt CBrCtlApiTestContainer::GetBitmapData()
+    {
+    
+    TRAPD( err, iBrCtlInterface->LoadUrlL(KUrlLoadTestHtml2) );
+    
+    //waits for browser control to load the page
+    User::After(4000000);
+
+    CGulIcon* icon = iBrCtlInterface->GetBitmapData( KUrlLoadTestHtml, TBrCtlDefs::EBitmapFavicon );
+    icon = iBrCtlInterface->GetBitmapData( KUrlLoadTestHtml, TBrCtlDefs::EBitmapThumbnail );	
+    return err;
+    }
+
+TInt CBrCtlApiTestContainer::SaveToFileL()
+    {
+    HBufC8* data = ReadFileLC( KUrlLoadTestHtml );
+    TDataType dataType( KContentDataType() );
+    TUid uid;
+    uid.iUid = KCharacterSetIdentifierIso88591;
+    TRAPD( err, iBrCtlInterface->LoadDataL( KUrlLoadTestHtml, *data, dataType, uid ) );
+
+    TUint16 NoOfBytesSaved =  iBrCtlInterface->SaveToFileL( KUrlLoadTestHtml );
+
+    CleanupStack::PopAndDestroy( data ); 
+    return err;
+    }
+
+TInt CBrCtlApiTestContainer::OkToExit()
+    {
+    const TBool res = iBrCtlInterface->OkToExit();
+
+    if ( res )
+        {
+        return KErrNone;
+        }
+    else
+        {
+        return KErrGeneral;
+        }
+    }
+    
+TInt CBrCtlApiTestContainer::FindKeyword( TPtrC aHtml, TPtrC aKeyword, TInt aMatch)
+    {
+    TRAP_IGNORE( iBrCtlInterface->LoadFileL( KUrlLoadTestHtml2 ) );
+
+    TInt result = iBrCtlInterface->FindKeyword( aKeyword );
+
+    if ( result == TBrCtlDefs::EFindNoMatches && aMatch == EFindNoMatchesExpected )
+        {
+        return KErrNone;
+        }
+    else if ( result == TBrCtlDefs::EFindMatch && ( aMatch == EFindMatchExpected || aMatch == EFindMoreMatchesExpected ) )
+        {
+        return KErrNone;
+        }
+    else
+        {
+        return KErrNotFound;
+        }
+    }
+
+TInt CBrCtlApiTestContainer::FindKeywordAgain( TInt aMatch )
+    {
+    TBrCtlDefs::TBrCtlFindResponse result = iBrCtlInterface->FindKeywordAgain( ETrue );
+
+    if ( result == TBrCtlDefs::EFindNoMatches && ( aMatch == EFindNoMatchesExpected || aMatch == EFindMatchExpected ) )
+        {
+        return KErrNone;
+        }
+    else if ( result == TBrCtlDefs::EFindMatch && aMatch == EFindMoreMatchesExpected )
+        {
+        return KErrNone;
+        }
+    else
+        {
+        return KErrNotFound;
+        }
+    }
+
+TInt CBrCtlApiTestContainer::SetFocus()
+    {
+    iBrCtlInterface->SetFocus( ETrue, EDrawNow );
+    
+    return KErrNone;
+    }
+
+TInt CBrCtlApiTestContainer::OfferKeyEvent()
+    {
+    TKeyEvent key;
+    key.iCode = 0;
+    key.iScanCode = 0;
+    key.iModifiers = 0;
+    key.iRepeats = 0;
+    
+    TRAPD( err, iBrCtlInterface->OfferKeyEventL( key, EEventNull ) );
+    
+    return err;
+    }
+
+TInt CBrCtlApiTestContainer::BrCtlMinimumSize()
+    {
+    const TSize testSize = iBrCtlInterface->MinimumSize();
+    
+    if ( testSize.iWidth > 0 && testSize.iHeight > 0 )
+        {
+        return KErrNone;
+        }
+    else
+        {
+        return KErrGeneral;
+        }
+    }
+
+TInt CBrCtlApiTestContainer::BrCtlSubscribeToMenuItemsL()
+    {
+    TRAPD( err, iBrCtlInterface->LoadUrlL( KUrlLoadTestHtml2 ) );
+
+	const RPointerArray<TBrCtlSubscribeTo> &ptr = iBrCtlInterface->SubscribeToMenuItemsL();
+
+    return err;
+    }    
+    
+TInt CBrCtlApiTestContainer::BrCtlContentSize()
+    {
+    TBool testPassed = EFalse;
+    TSize testSize;
+    
+    if ( iBrCtlInterface )
+        {
+        testSize = iBrCtlInterface->ContentSize();
+
+        if ( testSize.iWidth == 0 && testSize.iHeight == 0 )
+            {
+            testPassed = ETrue;
+            }
+        }
+    
+    return testPassed;
+    }
+    
+TInt CBrCtlApiTestContainer::SetBrowserSettingL()
+    {
+    iBrCtlInterface->SetBrowserSettingL( TBrCtlDefs::ESettingsAutoLoadImages, 0 );
+        
+    return KErrNone;
+    }
+
+TInt CBrCtlApiTestContainer::BrowserSettingL( TUint& aSetting )
+    {
+    // value returned
+    aSetting = iBrCtlInterface->BrowserSettingL( TBrCtlDefs::ESettingsAutoLoadImages );
+    
+    return KErrNone;
+    }
+
+TInt CBrCtlApiTestContainer::FocusedImageL()
+    {
+    iBrCtlInterface->LoadFileL( KUrlLoadTestHtml );
+
+    iBrCtlInterface->SetFocus( ETrue, EDrawNow );
+
+    TBrCtlImageCarrier* res = iBrCtlInterface->FocusedImageLC();
+    CleanupStack::PopAndDestroy( res );
+
+    if ( res )
+        {
+        return KErrNone; 
+        }
+    else 
+        {
+        return KErrGeneral;
+        }        
+    }
+
+TInt CBrCtlApiTestContainer::AddCommandObserverL()
+    {
+    iBrCtlInterface->AddCommandObserverL( this );
+    return KErrNone;
+    }
+
+TInt CBrCtlApiTestContainer::RemoveCommandObserver()
+    {
+    iBrCtlInterface->RemoveCommandObserver( this );
+    return KErrNone;
+    }
+
+TInt CBrCtlApiTestContainer::ImageCountL()
+    {
+    return iBrCtlInterface->ImageCountL();
+    }
+
+TInt CBrCtlApiTestContainer::BrCtlFocusedElementTypeL()
+    {
+    
+    iBrCtlInterface->LoadUrlL( KUrlLoadTestHtml2 );
+    
+    iBrCtlInterface->SetFocus( ETrue, EDrawNow );
+
+    iBrCtlInterface->FocusedElementType();
+
+    return KErrNone;
+    }
+    
+TInt CBrCtlApiTestContainer::BrCtlSetParam()
+    {
+    _LIT( KContentType, "text/html");
+    TRAPD( err, iBrCtlInterface->SetParamL( TBrCtlDefs::EParamsSelfDownoadableTypes, KContentType ) )
+
+    return err;
+    }
+
+TInt CBrCtlApiTestContainer::LoadSavedPageL()
+    {
+    _LIT( KUid, "savedpage://4" );
+    _LIT( KSavedUrl, "c:\\BrCtlTest\\loadtest.saved" );
+
+    HBufC8* databuf = ReadFileLC( KSavedUrl );
+    HBufC16* bigbuf = HBufC::NewL( databuf->Des().Length() );
+
+    bigbuf->Des().Copy( databuf->Des() );
+    
+    iBrCtlInterface->LoadSavedPageL( KUid, *bigbuf );
+
+    delete bigbuf;
+    CleanupStack::PopAndDestroy( databuf ); 
+
+    return KErrNone;    
+    }
+
+TInt CBrCtlApiTestContainer::SetSelfDownloadContentTypes()
+    {
+    TRAPD( err, iBrCtlInterface->SetSelfDownloadContentTypesL( (TDesC16&)KContentDataType() ) );
+
+    return err;
+    }
+
+TInt CBrCtlApiTestContainer::ZoomLevels()
+    {
+    RArray<TUint>* zoom = iBrCtlInterface->ZoomLevels();
+
+    if ( zoom->Count() > 0 )
+        {
+        return KErrNone;
+        }
+    else
+        {
+        return KErrGeneral;
+        }
+    }
+
+TInt CBrCtlApiTestContainer::AddOptionMenuItems()
+    {
+    TRAPD( err, iBrCtlInterface->AddOptionMenuItemsL( *iMenuPane, 0, 0 ) );
+
+    return err;
+    }
+
+TInt CBrCtlApiTestContainer::BrCtlInitLoadDataL()
+    {
+    HBufC8* data = ReadFileLC( KUrlLoadTestHtml );
+    TDataType dataType( KContentDataType() );
+    MBrCtlDataLoadConsumer* brCtlDataLoadConsumer = NULL;
+    TUid uid;
+    uid.iUid = KCharacterSetIdentifierIso88591;
+    TRAPD( err, iBrCtlInterface->InitLoadDataL( KUrlLoadTestHtml, dataType, uid, data->Length(),
+        this, &brCtlDataLoadConsumer ) );
+
+    if ( brCtlDataLoadConsumer )
+        {
+        brCtlDataLoadConsumer->HandleNextDataChunk( *data );
+        if ( !iCancelInitDataLoad )
+            {
+            brCtlDataLoadConsumer->HandleLoadComplete();
+            }
+        }
+        
+    iCancelInitDataLoad = EFalse;
+
+    CleanupStack::PopAndDestroy( data );
+    
+    return err;
+    }
+
+TInt CBrCtlApiTestContainer::HandleDownloadCommand()
+    {
+    TBool testPassed = EFalse;
+
+    if ( iBrCtlInterface )
+        {
+        TRAPD( err, iBrCtlInterface->HandleDownloadCommandL( 0, TBrCtlDefs::EDownloadCmdMarkAsProgressive ) );
+
+            if ( err == KErrNone )
+            {
+            testPassed = ETrue;
+            }
+        }
+
+    if ( testPassed )
+        {
+        return KErrNone;
+        }
+    else
+        {
+        return KErrGeneral;
+        }
+    }   
+
+TInt CBrCtlApiTestContainer::VersionInfoL()
+  {
+
+  _LIT(KName, "S60 browser");
+  _LIT(KVersion, "5.0");
+  _LIT(KBuild, "0516");
+
+  HBufC* verinfo = iBrCtlInterface->VersionInfoLC( TBrCtlDefs::EVersionInfoName );
+
+  if(!verinfo)
+    {
+    return KErrGeneral;
+    }
+  if (verinfo->Compare(KName()) != 0)
+    {
+    CleanupStack::PopAndDestroy( verinfo ); 
+    return KErrGeneral;
+    }
+  CleanupStack::PopAndDestroy( verinfo ); 
+  verinfo = 0;
+  verinfo = iBrCtlInterface->VersionInfoLC( TBrCtlDefs::EVersionInfoVersion );	
+  if(!verinfo)
+    {
+  	return KErrGeneral;
+    }
+  if(verinfo->Compare(KVersion()) != 0)
+    {
+    CleanupStack::PopAndDestroy( verinfo ); 
+    return KErrGeneral;
+    }
+  CleanupStack::PopAndDestroy( verinfo ); 
+  verinfo = 0;
+  verinfo = iBrCtlInterface->VersionInfoLC( TBrCtlDefs::EVersionInfoBuild );
+  if(!verinfo)
+    {
+   	return KErrGeneral;
+    }
+  if(verinfo->Compare(KBuild()) != 0)
+    {
+    CleanupStack::PopAndDestroy( verinfo ); 
+    return KErrGeneral;
+    }
+  CleanupStack::PopAndDestroy( verinfo ); 
+  return KErrNone;
+  }
+TInt CBrCtlApiTestContainer::WmlOptionMenuItemsL()
+    {
+
+    iBrCtlInterface->WMLOptionMenuItemsL();
+    return KErrNone;
+
+    }
+
+TInt CBrCtlApiTestContainer::BrCtlPostL()
+    {
+    
+    RFs rfs;
+    RFile file;
+    User::LeaveIfError( rfs.Connect() );
+    CleanupClosePushL( rfs );
+    User::LeaveIfError( file.Open( rfs, KUrlLoadTestHtml(), EFileShareReadersOnly ) );
+    CleanupClosePushL( file );    
+    
+    int size;
+    User::LeaveIfError( file.Size( size ) );
+    HBufC8* data = NULL;
+    data = HBufC8::NewLC( size );
+    TPtr8 dataPtr( data->Des() );
+    User::LeaveIfError( file.Read( dataPtr ) );
+
+    //parse url
+    HBufC* url16 = NULL;
+    int pos = dataPtr.Find( _L8("\r\n") );                   
+    if ( pos != KErrNotFound )
+        {
+        url16 = HBufC::NewLC( pos );                
+        url16->Des().Copy( dataPtr.Mid( 0, pos ) ); 
+        }
+    else 
+        {
+        CleanupStack::PushL( url16 );        
+        }
+    
+    //parse content type
+    HBufC8* contenttype = NULL;
+    int pos2 = dataPtr.Mid( pos+2 ).Find( _L8("\r\n") );                   
+    if ( pos2 != KErrNotFound )
+        {
+        contenttype = HBufC8::NewLC( pos2 );                
+        contenttype->Des().Copy( dataPtr.Mid( pos+2, pos2 ) );             
+        }
+    else 
+        {
+        CleanupStack::PushL( contenttype );        
+        }
+
+    //parse post data
+    HBufC8* postdata = NULL;
+    int pos3 = dataPtr.Mid( pos+2+pos2+2 ).Find( _L8("\r\n") );                   
+    if ( pos3 != KErrNotFound )
+        {
+        postdata = HBufC8::NewLC( pos3 );                
+        postdata->Des().Copy( dataPtr.Mid( pos+2+pos2+2, pos3 ) );             
+        }
+    else 
+        {
+        CleanupStack::PushL( postdata );        
+        }
+
+    //parse boundry
+    HBufC8* boundry = NULL;
+    int pos4 = dataPtr.Mid( pos+2+pos2+2+pos3+2 ).Find( _L8("\r\n") );                   
+    if ( pos4 != KErrNotFound )
+        {
+        boundry = HBufC8::NewLC( pos4 );                
+        boundry->Des().Copy( dataPtr.Mid(pos+2+pos2+2+pos3+2 , pos4) );             
+        }
+    else 
+        {
+        CleanupStack::PushL( boundry );        
+        }
+    
+    TAny* any = NULL;
+    
+    TRAPD( error, iBrCtlInterface->PostUrlL ( *url16, 
+                                *contenttype, 
+                                *postdata, 
+                                boundry, 
+                                any ) );
+	
+/*	HBufC* urlTest = NULL;
+
+    TRAP( error, iBrCtlInterface->PostUrlL ( *urlTest, 
+                                *contenttype, 
+                                *postdata, 
+                                boundry, 
+                                any ) );
+                                
+     HBufC8* contenttypeTest = NULL;                          
+                                
+     TRAP( error, iBrCtlInterface->PostUrlL ( *url16, 
+                                *contenttypeTest, 
+                                *postdata, 
+                                boundry, 
+                                any ) );                           
+*/
+
+    CleanupStack::PopAndDestroy( boundry );
+    CleanupStack::PopAndDestroy( postdata );
+    CleanupStack::PopAndDestroy( contenttype );
+    CleanupStack::PopAndDestroy( url16 );    
+    CleanupStack::PopAndDestroy( data );                        
+    CleanupStack::PopAndDestroy( 2 ); // file, rfs        
+
+    return error;
+    }
+     
+// Added for Widget Extension Test
+TInt CBrCtlApiTestContainer::CreateBrCtlInterfaceAndWidgetExtensionL()
+    {
+    TPoint base( 0, 0 );
+    TPoint extent( 352, 295 );
+    TRect rect( base, extent );
+    
+	iBrCtlInterface = CreateBrowserControlL(
+        this,
+        rect,
+        TBrCtlDefs::ECapabilityLoadHttpFw |
+        TBrCtlDefs::ECapabilityCursorNavigation|
+        TBrCtlDefs::ECapabilityWebKitLite |
+        TBrCtlDefs::ECapabilityClientResolveEmbeddedURL,
+        TBrCtlDefs::ECommandIdBase,
+        iBrCtlApiTestObserver, /* softkeys */
+        iBrCtlApiTestObserver, /* link resolver */
+        iBrCtlApiTestObserver, /* special load observer */
+        iBrCtlApiTestObserver, /* layout observer */
+        iBrCtlDialogs,  //iWidgetUiDialogsProviderProxy,
+        iBrCtlApiTestObserver, /* window observer */
+        iBrCtlApiTestObserver /* download observer */
+        ); 
+        
+    iBrCtlInterface->AddLoadEventObserverL( iBrCtlApiTestObserver );
+    iBrCtlInterface->AddStateChangeObserverL( iBrCtlApiTestStateChangeObserver );
+    iBrCtlInterface->SetComponentsToInheritVisibility();
+    
+    iWidgetExtension = iBrCtlInterface->CreateWidgetExtensionL( *this );
+    
+    if ( iWidgetExtension )
+        {
+        return KErrNone;
+        }
+    else
+        {
+        return KErrGeneral;
+        }
+
+    }
+
+TInt CBrCtlApiTestContainer::HistoryLoad1L()
+    {
+    TInt err( KErrNone );
+    if(iBrCtlInterface)
+        {
+        TRAP(err, iBrCtlInterface->LoadUrlL(KUrlHistoryHandlerHtml1));
+        }
+
+    return err;
+    }
+
+TInt CBrCtlApiTestContainer::HistoryLoad2L()
+    {
+    TInt err( KErrNone );
+    if(iBrCtlInterface)
+        {
+        TRAP(err, iBrCtlInterface->LoadUrlL(KUrlHistoryHandlerHtml2));
+        }
+
+    return err;
+    }
+
+TInt CBrCtlApiTestContainer::HistoryLoad3L()
+    {
+    TInt err( KErrNone );
+    if(iBrCtlInterface)
+        {
+        TRAP(err, iBrCtlInterface->LoadUrlL(KUrlHistoryHandlerHtml3));
+        }
+
+    return err;
+    }
+
+TInt CBrCtlApiTestContainer::WMLLoad1L()
+    {
+    TInt err( KErrNone );
+    if(iBrCtlInterface)
+        {
+        TRAP(err, iBrCtlInterface->LoadUrlL(KUrlLoadTestWml1));
+        }
+
+    return err;
+    }
+
+TInt CBrCtlApiTestContainer::WMLLoad2L()
+    {
+    TInt err( KErrNone );
+    if(iBrCtlInterface)
+        {
+        TRAP(err, iBrCtlInterface->LoadUrlL(KUrlLoadTestWml2));
+        }
+
+    return err;
+    }
+
+TInt CBrCtlApiTestContainer::WMLLoad3L()
+    {
+    TInt err( KErrNone );
+    if(iBrCtlInterface)
+        {
+        TRAP(err, iBrCtlInterface->LoadUrlL(KUrlLoadTestWml3));
+        }
+
+    return err;
+    }
+
+// Dummy function definitions for the MWidgetCallback functions
+TBool CBrCtlApiTestContainer::DialogMimeFileSelectLC(HBufC*& /* aSelectedFileName */,
+                         const TDesC& /* aMimeType */) 
+	{
+		
+	}
+
+/**
+* Called to show or hide softkeys
+* @since 3.1
+* @param aVisible ETrue to show softkeys, EFalse when full screen is needed
+*/
+void CBrCtlApiTestContainer::SetSoftkeysVisible(TBool /* aVisible */) 
+	{
+		
+	}
+
+/**
+* Called to change the display orientation to landscape
+* @since 3.1
+*/
+void CBrCtlApiTestContainer::SetDisplayMode(TBrCtlDefs::TBrCtlOrientation /* aOrientation */) 
+	{
+		
+	}
+
+//Reserved for future use
+TInt CBrCtlApiTestContainer::Reserved_1(TAny*& a0, TAny* a1, TAny* a2) 
+	{
+		
+	}
+TInt CBrCtlApiTestContainer::Reserved_2(TAny*& a0, TAny* a1, TAny* a2) 
+	{
+		
+	}
+TInt CBrCtlApiTestContainer::Reserved_3(TAny*& a0, TAny* a1, TAny* a2) 
+	{
+		
+	}
+TInt CBrCtlApiTestContainer::Reserved_4(TAny*& a0, TAny* a1, TAny* a2) 
+	{
+		
+	}
+TInt CBrCtlApiTestContainer::Reserved_5(TAny*& a0, TAny* a1, TAny* a2) 
+	{
+		
+	}
+TInt CBrCtlApiTestContainer::Reserved_6(TAny*& a0, TAny* a1, TAny* a2) 
+	{
+		
+	}
+TInt CBrCtlApiTestContainer::Reserved_7(TAny*& a0, TAny* a1, TAny* a2) 
+	{
+		
+	}
+TInt CBrCtlApiTestContainer::Reserved_8(TAny*& a0, TAny* a1, TAny* a2) 
+	{
+		
+	}
+TInt CBrCtlApiTestContainer::Reserved_9(TAny*& a0, TAny* a1, TAny* a2) 
+	{
+		
+	}
+TInt CBrCtlApiTestContainer::Reserved_10(TAny*& a0, TAny* a1, TAny* a2) 
+	{
+		
+	}
+    
+// End of File  
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/browser/src/BrCtlApiTestDialogsProvider.cpp	Thu Jan 21 14:54:07 2010 +0000
@@ -0,0 +1,240 @@
+/*
+* Copyright (c) 2005-2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Implementation of the CBrowserDialogsProviderProxy class.
+*
+*/
+
+
+// INCLUDE Files
+
+// System includes
+#include <BrowserDialogsProviderObserver.h>
+#include <BrowserDialogsProvider.h>
+
+// User includes
+#include "BrCtlApiTestDialogsProvider.h"
+
+
+// CONSTANTS
+
+//-----------------------------------------------------------------------------
+// CBrowserDialogsProviderProxy::CBrowserDialogsProviderProxy
+//-----------------------------------------------------------------------------
+CBrowserDialogsProviderProxy::CBrowserDialogsProviderProxy()
+	{
+	}
+
+
+//-----------------------------------------------------------------------------
+// CBrowserDialogsProviderProxy::~CBrowserDialogsProviderProxy
+//-----------------------------------------------------------------------------
+CBrowserDialogsProviderProxy::~CBrowserDialogsProviderProxy()
+	{
+	}
+
+
+//-----------------------------------------------------------------------------
+//	CBrowserDialogsProviderProxy* CBrowserDialogsProviderProxy::NewL
+//-----------------------------------------------------------------------------
+CBrowserDialogsProviderProxy* CBrowserDialogsProviderProxy::NewL()
+	{
+	CBrowserDialogsProviderProxy* self = new (ELeave)
+	        CBrowserDialogsProviderProxy( );
+
+	CleanupStack::PushL( self );
+	self->ConstructL( );
+	CleanupStack::Pop( self );   // self
+	return self;
+	}
+
+//-----------------------------------------------------------------------------
+//  CBrowserDialogsProviderProxy::ConstructL
+//
+//-----------------------------------------------------------------------------
+void CBrowserDialogsProviderProxy::ConstructL()
+	{
+	}
+
+
+//-----------------------------------------------------------------------------
+//  CBrowserDialogsProviderProxy::DialogNotifyErrorL
+//
+//-----------------------------------------------------------------------------
+void CBrowserDialogsProviderProxy::DialogNotifyErrorL( TInt /* aErrCode */ )
+	{
+	}
+
+
+//-----------------------------------------------------------------------------
+//  CBrowserDialogsProviderProxy::DialogNotifyHttpErrorL
+//-----------------------------------------------------------------------------
+void CBrowserDialogsProviderProxy::DialogNotifyHttpErrorL(
+								            TInt /* aErrCode */ , const TDesC& /* aUri */ )
+	{
+	}
+
+
+//-----------------------------------------------------------------------------
+//  CBrowserDialogsProviderProxy::DialogFileSelectLC
+//-----------------------------------------------------------------------------
+TBool CBrowserDialogsProviderProxy::DialogFileSelectLC(
+                                                    const TDesC& /* aStartPath */,
+													const TDesC& /* aRootPath */,
+													HBufC*& /* aSelectedFileName */ )
+	{
+	TBool retVal( EFalse );
+	return retVal;
+	}
+
+//-----------------------------------------------------------------------------
+//  CBrowserDialogsProviderProxy::DialogSelectOptionL
+//-----------------------------------------------------------------------------
+TBool CBrowserDialogsProviderProxy::DialogSelectOptionL(
+								const TDesC& /* aTitle */,
+								TBrCtlSelectOptionType /* aBrCtlSelectOptionType */,
+								CArrayFix<TBrCtlSelectOptionData>& /* aOptions */ )
+	{
+	TBool retVal( EFalse );
+
+	return retVal;
+	}
+
+
+//-----------------------------------------------------------------------------
+// CBrowserDialogsProviderProxy::DialogUserAuthenticationLC
+//-----------------------------------------------------------------------------
+TBool CBrowserDialogsProviderProxy::DialogUserAuthenticationLC(
+												const TDesC& /* aUrl */,
+												const TDesC& /* aRealm */,
+												const TDesC& /* aDefaultUserName */,
+												HBufC*& /* aReturnedUserName */,
+												HBufC*& /* aReturnedPasswd */,
+												TBool /* aBasicAuthentication */ )
+	{
+	TBool retVal( EFalse );
+	return retVal;
+	}
+
+
+//-----------------------------------------------------------------------------
+//  CBrowserDialogsProviderProxy::DialogNoteL
+//-----------------------------------------------------------------------------
+void CBrowserDialogsProviderProxy::DialogNoteL( const TDesC& /* aMessage */)
+	{
+	}
+
+
+//-----------------------------------------------------------------------------
+//  CBrowserDialogsProviderProxy::DialogAlertL
+//-----------------------------------------------------------------------------
+void CBrowserDialogsProviderProxy::DialogAlertL( const TDesC& /* aTitle */,
+											        const TDesC& /* aMessage */ )
+	{
+	}
+
+
+//-----------------------------------------------------------------------------
+//  CBrowserDialogsProviderProxy::DialogConfirmL
+//-----------------------------------------------------------------------------
+TBool CBrowserDialogsProviderProxy::DialogConfirmL( const TDesC& /* aTitle */,
+												    const TDesC& /* aMessage */,
+												    const TDesC& /* aYesMessage */,
+												    const TDesC& /* aNoMessage */ )
+	{
+	TBool retVal( EFalse );
+    return retVal;
+	}
+
+//-----------------------------------------------------------------------------
+// CBrowserDialogsProviderProxy::DialogPromptLC
+//-----------------------------------------------------------------------------
+TBool CBrowserDialogsProviderProxy::DialogPromptLC( const TDesC& /* aTitle */,
+												const TDesC& /* aMessage */,
+												const TDesC& /* aDefaultInput */,
+												HBufC*& /* aReturnedInput */ )
+	{
+	TBool retVal( EFalse );
+    return retVal;
+	}
+
+//-----------------------------------------------------------------------------
+//  CBrowserDialogsProviderProxy::DialogDownloadObjectL
+//-----------------------------------------------------------------------------
+TBool CBrowserDialogsProviderProxy::DialogDownloadObjectL(
+										CBrCtlObjectInfo* /* aBrCtlObjectInfo */ )
+	{
+	TBool retVal( EFalse );
+
+	return retVal;
+	}
+
+//-----------------------------------------------------------------------------
+// CBrowserDialogsProviderProxy::DialogDisplayPageImagesL
+//-----------------------------------------------------------------------------
+void CBrowserDialogsProviderProxy::DialogDisplayPageImagesL(
+							CArrayFixFlat<TBrCtlImageCarrier>& /* aPageImages */ )
+	{
+	}
+
+
+//-----------------------------------------------------------------------------
+//  CBrowserDialogsProviderProxy::CancelAll
+//-----------------------------------------------------------------------------
+//
+void CBrowserDialogsProviderProxy::CancelAll()
+	{
+	}
+	
+//-----------------------------------------------------------------------------
+//  CBrowserDialogsProviderProxy::DialogMimeFileSelectLC
+//-----------------------------------------------------------------------------
+TBool CBrowserDialogsProviderProxy::DialogMimeFileSelectLC(
+													HBufC*& /* aSelectedFileName */,
+													const TDesC& /* aMimeType */ )
+	{
+	TBool retVal( EFalse );
+	return retVal;
+	}
+
+//-----------------------------------------------------------------------------
+//  CBrowserDialogsProviderProxy::ShowTooltipL
+//-----------------------------------------------------------------------------
+//
+void CBrowserDialogsProviderProxy::ShowTooltipL(    const TDesC& /* aText */,
+                                                    TInt /* aDuration */,
+                                                    TInt /* aDelay */ )
+    {
+    }
+
+//-----------------------------------------------------------------------------
+//  CBrowserDialogsProviderProxy::UploadProgressNoteL
+//-----------------------------------------------------------------------------
+//
+void CBrowserDialogsProviderProxy::UploadProgressNoteL(
+                                TInt32 /* aTotalSize */,
+                                TInt32 /* aChunkSize */,
+                                TBool /* aIsLastChunk */,
+                                MBrowserDialogsProviderObserver* /* aObserver */ )
+    {
+    }
+
+//-----------------------------------------------------------------------------
+//  CBrowserDialogsProviderProxy::WindowActivated()
+//-----------------------------------------------------------------------------
+//
+void CBrowserDialogsProviderProxy::WindowActivated()
+    {
+    }
+
+//  End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/browser/src/BrCtlApiTestObserver.cpp	Thu Jan 21 14:54:07 2010 +0000
@@ -0,0 +1,530 @@
+/*
+* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  BrCtlApiTest
+*
+*/
+
+// INCLUDE FILES
+#include <apmrec.h>
+#include <apgcli.h>
+#include <eikappui.h>
+#include <eikenv.h>
+#include <eikbtgpc.h>
+#include "BrCtlApiTestObserver.h"
+#include <avkon.hrh>
+#include <aknmessagequerydialog.h>
+
+#ifndef RD_PF_SEC_APPARC
+//#include <genericparam.h>  
+#else
+#include "AiwGenericParam.h"
+#endif
+
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// CBrCtlApiTestObserver::UpdateBrowserVScrollBarL
+// ---------------------------------------------------------
+//
+void CBrCtlApiTestObserver::UpdateBrowserVScrollBarL(TInt /* aDocumentHeight */, 
+                                      TInt /* aDisplayHeight */,
+                                      TInt /* aDisplayPosY */ ) 
+    {
+    }
+
+// ---------------------------------------------------------
+// CBrCtlApiTestObserver::UpdateBrowserHScrollBarL
+// ---------------------------------------------------------
+//
+void CBrCtlApiTestObserver::UpdateBrowserHScrollBarL(TInt /* aDocumentWidth */, 
+                                      TInt /* aDisplayWidth */,
+                                      TInt /* aDisplayPosX */ ) 
+    {
+    }
+
+// ---------------------------------------------------------
+// CBrCtlApiTestObserver::NotifyLayoutChange
+// ---------------------------------------------------------
+//
+void CBrCtlApiTestObserver::NotifyLayoutChange( TBrCtlLayout /* aNewLayout */) 
+    {
+    }
+
+// ---------------------------------------------------------
+// CBrCtlSampleAppLayoutObserver::UpdateTitle
+// ---------------------------------------------------------
+//
+void CBrCtlApiTestObserver::UpdateTitleL( const TDesC& /*aTitle*/ )
+    {
+    }
+
+// ---------------------------------------------------------
+// CBrCtlApiTestObserver::UpdateSoftkeyL
+// ---------------------------------------------------------
+//
+void CBrCtlApiTestObserver::UpdateSoftkeyL(TBrCtlKeySoftkey /* aKeySoftkey */,
+                            const TDesC& /* aLabel */,
+                            TUint32 /* aCommandId */,
+                            TBrCtlSoftkeyChangeReason /* aBrCtlSoftkeyChangeReason */) 
+    {
+    return; 
+    }
+
+// ---------------------------------------------------------
+// CBrCtlApiTestObserver::NetworkConnectionNeededL
+// ---------------------------------------------------------
+//
+void CBrCtlApiTestObserver::NetworkConnectionNeededL(TInt* /*aConnectionPtr*/,
+                                      TInt* /*aSockSvrHandle*/,
+                                      TBool* /*aNewConn*/,
+                                      TApBearerType* /*aBearerType*/) 
+    {
+    }
+
+// ---------------------------------------------------------
+// CBrCtlApiTestObserver::HandleRequestL
+// ---------------------------------------------------------
+//
+TBool CBrCtlApiTestObserver::HandleRequestL(RArray<TUint>* aTypeArray, CDesCArrayFlat* aDesArray) 
+    {
+
+    TInt i;
+	
+    // The 2 arrays must be in sync. Each element in iTypeArray 
+    // identifies the type of the corresponding element in iDesArray.
+    if( aTypeArray->Count() != aDesArray->Count() )
+        {
+        User::Leave( KErrArgument );
+        }
+
+	// get url
+    HBufC* url = NULL;
+    // Serach url in the param list
+    for(i = 0; i < aTypeArray->Count(); i++)
+        {
+        if( (*aTypeArray)[i] == EParamRequestUrl )
+            {
+            // the url is found
+            url = HBufC::NewLC( (*aDesArray)[i].Length() );
+            url->Des().Copy( (*aDesArray)[i] );
+            break;
+            }
+        }
+    if( !url )
+        {
+        // The url wasn't found. 
+        User::Leave( KErrArgument );
+        }
+
+	// get referrer header
+    HBufC* refererHeader = NULL;
+    // Serach url in the param list
+    for( i = 0; i < aTypeArray->Count(); i++ )
+        {
+        if( (*aTypeArray)[i] == EParamRefererHeader )
+            {
+            // the referer Header is found
+            refererHeader = HBufC::NewLC( (*aDesArray)[i].Length() );
+            refererHeader->Des().Copy( (*aDesArray)[i] );
+            break;
+            }
+        }
+
+    if( refererHeader )
+		{
+			CleanupStack::PopAndDestroy( 1 ); // refererHeader
+		}
+
+    CleanupStack::PopAndDestroy( 1 ); // url
+
+    return ETrue;
+    }
+
+// ---------------------------------------------------------
+// CBrCtlApiTestObserver::HandleDownloadL
+// ---------------------------------------------------------
+//
+TBool CBrCtlApiTestObserver::HandleDownloadL(RArray<TUint>* aTypeArray, CDesCArrayFlat* aDesArray)
+    {
+    TInt i = 0;
+    TInt count = aTypeArray->Count();
+    for (i = 0; i < count; i++)
+        {
+        if ((*aTypeArray)[i] == EParamLocalFileName && aDesArray[i].Length() > 0)
+            {
+            TInt j = 0;
+            for (j = 0; j < count; j++)
+                {
+                if ((*aTypeArray)[j] == EParamReceivedContentType)
+                    {
+                    HBufC8* dataType8 = HBufC8::NewLC((*aDesArray)[j].Length());
+                    dataType8->Des().Copy((*aDesArray)[j]);
+                    TDataType dataType(*dataType8);
+                    iHandler->OpenFileEmbeddedL((*aDesArray)[i], dataType);
+                    CleanupStack::PopAndDestroy();
+                    break;
+                    }
+                }
+            break;
+            }
+        }
+    return EFalse;
+    }
+
+// ---------------------------------------------------------
+// CBrCtlApiTestObserver::HandleBrowserLoadEventL
+// ---------------------------------------------------------
+//
+void CBrCtlApiTestObserver::HandleBrowserLoadEventL( TBrCtlDefs::TBrCtlLoadEvent /* aLoadEvent */,
+                                                 TUint /* aSize */, TUint16 /* aTransactionId */ ) 
+    {
+    }
+
+// ---------------------------------------------------------
+// CBrCtlApiTestObserver::ResolveEmbeddedLinkL
+// ---------------------------------------------------------
+//
+TBool CBrCtlApiTestObserver::ResolveEmbeddedLinkL(const TDesC& aEmbeddedUrl,
+    		                       const TDesC& /* aCurrentUrl */,
+        	                       TBrCtlLoadContentType /* aLoadContentType */, 
+                                   MBrCtlLinkContent& aEmbeddedLinkContent) 
+    {
+    if (IsFileScheme(aEmbeddedUrl))
+        {
+        GetFileNameL(aEmbeddedUrl);
+        HBufC8* buf = ReadFileLC(*iFileName);
+        HBufC* contentType = NULL;
+        TPtrC p(NULL, 0);
+        contentType = RecognizeLC(*iFileName, *buf);
+        aEmbeddedLinkContent.HandleResolveComplete(*contentType, p, buf);        
+        CleanupStack::PopAndDestroy(2); // contentType, buf
+        return ETrue;
+        }
+    return EFalse;
+    }
+
+// ---------------------------------------------------------
+// CBrCtlApiTestObserver::ResolveLinkL
+// ---------------------------------------------------------
+//
+TBool CBrCtlApiTestObserver::ResolveLinkL(const TDesC& aUrl, const TDesC& /* aCurrentUrl */,
+                   MBrCtlLinkContent& aBrCtlLinkContent) 
+    {
+    if (IsFileScheme(aUrl))
+        {
+        GetFileNameL(aUrl);
+        HBufC8* buf = ReadFileLC(*iFileName);
+        HBufC* contentType = NULL;
+        TPtrC p(NULL, 0);
+        contentType = RecognizeLC(*iFileName, *buf);
+        aBrCtlLinkContent.HandleResolveComplete(*contentType, p, buf);        
+        CleanupStack::PopAndDestroy(2); // contentType, buf
+        return ETrue;
+        }
+    return EFalse;
+    }
+
+
+// ---------------------------------------------------------
+// CBrCtlApiTestObserver::CancelAll
+// ---------------------------------------------------------
+//
+void CBrCtlApiTestObserver::CancelAll() 
+    {
+    }
+
+
+// ---------------------------------------------------------
+// CBrCtlApiTestObserver::ConstructL
+// ---------------------------------------------------------
+//
+void CBrCtlApiTestObserver::ConstructL()
+    {
+    iHandler = CDocumentHandler::NewL(CEikonEnv::Static()->Process()) ;
+    }
+
+// ---------------------------------------------------------
+// CBrCtlApiTestObserver::~CBrCtlApiTestObserver
+// ---------------------------------------------------------
+//
+CBrCtlApiTestObserver::~CBrCtlApiTestObserver()
+    {
+    delete iFileName;
+    delete iHandler;
+    }
+
+
+// ---------------------------------------------------------
+// CBrCtlApiTestObserver::NewL
+// ---------------------------------------------------------
+//
+CBrCtlApiTestObserver* CBrCtlApiTestObserver::NewL()
+{
+  CBrCtlApiTestObserver* self = new(ELeave)CBrCtlApiTestObserver;
+  CleanupStack::PushL(self);
+  self->ConstructL();
+  CleanupStack::Pop();
+  return self;
+}
+
+// ---------------------------------------------------------
+// CBrCtlApiTestObserver::IsFileScheme
+// ---------------------------------------------------------
+//
+
+TBool CBrCtlApiTestObserver::IsFileScheme(const TDesC& aFileName)
+    {
+    _LIT(KFileScheme, "file://");
+    if (aFileName.Length() > 0 && aFileName.Ptr() != NULL)
+        {
+        if (aFileName.FindF(KFileScheme) == 0)
+            {
+            return ETrue;
+            }
+        }
+    return EFalse;
+    }
+
+// ---------------------------------------------------------
+// CBrCtlApiTestObserver::ReadFile
+// ---------------------------------------------------------
+//
+HBufC8* CBrCtlApiTestObserver::ReadFileLC(const TDesC& aFileName)
+    {
+    RFs rfs;
+    RFile file;
+    User::LeaveIfError(rfs.Connect());
+    CleanupClosePushL(rfs);
+    User::LeaveIfError(file.Open(rfs, aFileName, EFileRead));
+    CleanupClosePushL(file);
+    TInt size;
+    User::LeaveIfError(file.Size(size));
+    HBufC8* buf = HBufC8::NewLC(size);
+    TPtr8 bufPtr(buf->Des());
+    User::LeaveIfError(file.Read(bufPtr));
+    CleanupStack::Pop(); // buf
+    CleanupStack::PopAndDestroy(2); // file, rfs
+    CleanupStack::PushL(buf);
+    return buf;
+    }
+
+// ---------------------------------------------------------
+// CBrCtlApiTestObserver::RecognizeL
+// ---------------------------------------------------------
+//
+HBufC* CBrCtlApiTestObserver::RecognizeLC(const TDesC& aFileName, const TDesC8& aData)
+    {
+    TDataRecognitionResult dataType;
+    RApaLsSession apaSession;
+    TInt ret;
+    HBufC* contentTypeString = NULL;
+
+    User::LeaveIfError(apaSession.Connect());
+    // Ask the application architecture to find the file type
+    ret = apaSession.RecognizeData(aFileName, aData, dataType);
+    apaSession.Close();
+
+    if (ret == KErrNone &&
+        (dataType.iConfidence == CApaDataRecognizerType::ECertain) ||
+        (dataType.iConfidence == CApaDataRecognizerType::EProbable))
+        {
+        // If the file type was found, try to match it to a known file type
+        TPtrC8 mimeTypePtr = dataType.iDataType.Des8();
+        TInt len = mimeTypePtr.Length() + 1;
+        contentTypeString = HBufC::NewL(len); 
+        contentTypeString->Des().Copy(mimeTypePtr);
+        contentTypeString->Des().ZeroTerminate();
+        }
+    CleanupStack::PushL(contentTypeString);
+    return contentTypeString;
+    }
+
+// -----------------------------------------------------------------------------
+// CBrCtlApiTestObserver::GetFileNameL
+// Translate the file name from a URL to a valid file name in the system.
+// -----------------------------------------------------------------------------
+//
+TBool CBrCtlApiTestObserver::GetFileNameL(const TDesC& aFileName)
+    {
+    // This function accepts URLs in the following format:
+    // file://filename.xxx
+    // file:///filename.xxx
+    // file://c:/filename.xxx
+    // file:///c:/filename.xxx
+    //
+    _LIT(KFileScheme, "file://");
+    _LIT(KDefaultDrivePath, "C:\\");
+    _LIT(KPathChar, "\\");
+    
+    TInt count;
+    TInt index = 0;
+    TBool drvLetter = EFalse;
+    TUint16 c;
+    
+    // Verify the file scheme
+    TPtrC urlPtr(aFileName);
+    if (urlPtr.FindF(KFileScheme) != 0)
+        {
+        return EFalse;
+        }
+    urlPtr.Set(urlPtr.Mid(KFileScheme().Length()));
+    
+    // make sure there are enough characters in the filename before
+    // trying to check them
+    count = urlPtr.Length();
+    if(count == 0)
+        {
+        return EFalse;            // no filename, so can't look at urlPtr[0]
+        }
+    
+    // Skip the first '/' if there is one
+    if (urlPtr[0] == '/')
+        {
+        urlPtr.Set(urlPtr.Mid(1));
+        }
+    count = urlPtr.Length();
+    
+    // Is there a drive letter?
+    if(count > 1)
+        {
+        // can check for drive letter
+        if (urlPtr[1 + index] == ':')
+            {
+            drvLetter = ETrue;
+            }
+        }
+    if(drvLetter == EFalse)
+        {
+        // 3 additional characters for the string "c:\"
+        count = urlPtr.Length() + 3;
+        }
+    iFileName = HBufC::NewL(count);
+    if (!drvLetter)
+        {
+        iFileName->Des().Append(KDefaultDrivePath);
+        }
+    
+    TBool fragment(EFalse);
+    // Convert relative path containing /./ and /../ to absolute path
+    for (; index < urlPtr.Length() && !fragment; index ++)
+        {
+        switch(urlPtr[index])
+            {
+            case '#':    //Check if there is a fragment '#'
+                {
+                fragment = ETrue;
+                continue; // Just stop there
+                }
+                
+            case '/':
+                {
+                iFileName->Des().Append(KPathChar);
+                break;
+                }
+            case '.':
+                {
+                if (index > 1 && urlPtr[index - 1] == '/')
+                    {
+                    if (index < count - 1 && urlPtr[index + 1] == '/')
+                        {
+                        index ++; // skip  ./
+                        break;
+                        }
+                    if (index > 2 && index < count - 3 &&
+                        urlPtr[index + 1] == '.' && urlPtr[index + 2] == '/')
+                        {
+                        TInt i = index - 2;
+                        
+                        for (; i > 0 && urlPtr[i] != '/'; i--) {} // skip  /../
+                        
+                        iFileName->Des().SetLength(iFileName->Des().Length() - (index - i));
+                        index += 2;
+                        break;
+                        }
+                    }
+                }
+                // no break
+                //lint -fallthrough
+                
+            default:
+                {
+                c = urlPtr[index];
+                iFileName->Des().Append(&c, 1);
+                break;
+                }
+            }	// end of switch
+        }
+    return ETrue;
+}
+
+// ---------------------------------------------------------
+// CBrCtlApiTestObserver::NewDownloadL
+// ---------------------------------------------------------
+//
+TBool CBrCtlApiTestObserver::NewDownloadL(TUint /* aTransactionID */,
+									   const TDesC& /* aFileName */,
+									   const TDesC& /* aContentType */,
+									   const TDesC& /* aUrl */)
+{
+	return ETrue;
+}
+
+void CBrCtlApiTestObserver::ResumeDownloadL(TUint /* aTransactionID */,
+                                         TUint /* aLength */,
+									   const TDesC& /* aFileName */,
+									   const TDesC& /* aContentType */,
+									   const TDesC& /* aUrl */)
+{
+}
+
+void CBrCtlApiTestObserver::HandleDownloadEventL( TUint /* aTransactionID */, 
+											  TBrCtlDownloadEvent /* aDownloadEvent */,
+											  TUint /* aValue*/ )
+{
+}
+
+// Dummy function definitions for the functions from CBrCtlWindowObserver class - Added for Widget Extension Test
+
+// ---------------------------------------------------------
+// CBrCtlApiTestObserver::OpenWindowL
+// ---------------------------------------------------------
+//
+CBrCtlInterface* CBrCtlApiTestObserver::OpenWindowL(TDesC& aUrl, TDesC* aTargetName, TBool aUserInitiated, 
+     TAny* aReserved)
+{
+	
+}
+
+// ---------------------------------------------------------
+// CBrCtlApiTestObserver::FindWindowL
+// ---------------------------------------------------------
+//
+CBrCtlInterface* CBrCtlApiTestObserver::FindWindowL( const TDesC& aTargetName ) const
+{
+	
+}            
+
+// ---------------------------------------------------------
+// CBrCtlApiTestObserver::HandleWindowCommandL
+// ---------------------------------------------------------
+//
+void CBrCtlApiTestObserver::HandleWindowCommandL( const TDesC& aTargetName, TBrCtlWindowCommand aCommand )
+{
+	
+}
+
+
+
+// End of File  
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/browser/src/BrCtlApiTestStateChangeObserver.cpp	Thu Jan 21 14:54:07 2010 +0000
@@ -0,0 +1,83 @@
+/*
+* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Handle state changed events
+*
+*/
+
+
+// INCLUDE FILES
+#include "BrCtlApiTestContainer.h"
+#include "BrCtlApiTestStateChangeObserver.h"
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// CBrCtlApiTestStateChangeObserver::StateChanged
+// ---------------------------------------------------------
+//
+void 
+CBrCtlApiTestStateChangeObserver::StateChanged(TBrCtlDefs::TBrCtlState /* aState */, 
+                                                 TInt /* aValue */)
+    {
+    // Here we are creating a string to be displayed on the screen, but you would
+    // implement this method to have code that would be executed when the observer
+    // receives state changed events.
+    TBuf16<256> tgt; 
+    TPoint point(0, 120);
+
+//    _LIT(KHandleBrowserStateChange, "State Change event = %d, value = %d");
+     
+//    tgt.AppendFormat(KHandleBrowserStateChange, aState, aValue);
+
+//    iContainer->SetPoint(point);
+//    iContainer->SetText(tgt);
+
+    iContainer->DrawNow();
+    }
+
+// ---------------------------------------------------------
+// CBrCtlApiTestStateChangeObserver::ConstructL
+// ---------------------------------------------------------
+//
+void 
+CBrCtlApiTestStateChangeObserver::ConstructL(CBrCtlApiTestContainer* aContainer)
+    {
+    iContainer = aContainer;
+    }
+
+// ---------------------------------------------------------
+// CBrCtlApiTestStateChangeObserver::~CBrCtlApiTestStateChangeObserver
+// ---------------------------------------------------------
+//
+CBrCtlApiTestStateChangeObserver::~CBrCtlApiTestStateChangeObserver()
+    {
+    }
+
+
+// ---------------------------------------------------------
+// CBrCtlApiTestStateChangeObserver::NewL
+// ---------------------------------------------------------
+//
+CBrCtlApiTestStateChangeObserver* 
+CBrCtlApiTestStateChangeObserver::NewL(CBrCtlApiTestContainer* aContainer)
+{
+  CBrCtlApiTestStateChangeObserver* self = new(ELeave)CBrCtlApiTestStateChangeObserver;
+  CleanupStack::PushL(self);
+  self->ConstructL(aContainer);
+  CleanupStack::Pop();
+  return self;
+}
+
+// End of File  
+  
--- a/email/testutils/src/T_UtilsEnumConverter.cpp	Thu Jan 21 12:55:15 2010 +0000
+++ b/email/testutils/src/T_UtilsEnumConverter.cpp	Thu Jan 21 14:54:07 2010 +0000
@@ -1417,7 +1417,7 @@
 
 	STR_CASE(KStrBearerTypeCdma2000)
 		{
-		bearerTypes = KCommDbBearerCdma2000;
+//		bearerTypes = KCommDbBearerCdma2000;
 		break;
 		}
 
--- a/graphics/fbserv/src/T_DataFbsSession.cpp	Thu Jan 21 12:55:15 2010 +0000
+++ b/graphics/fbserv/src/T_DataFbsSession.cpp	Thu Jan 21 14:54:07 2010 +0000
@@ -104,13 +104,13 @@
 _LIT(KFbsMessBitmapBgCompress,						"EFbsMessBitmapBgCompress");
 _LIT(KFbsSetSystemDefaultTypefaceName,				"EFbsSetSystemDefaultTypefaceName");
 _LIT(KFbsGetAllBitmapHandles,						"EFbsGetAllBitmapHandles");
-_LIT(KFbsMessCreateLinkedTypeface,					"EFbsMessCreateLinkedTypeface");
+//_LIT(KFbsMessCreateLinkedTypeface,					"EFbsMessCreateLinkedTypeface");
 _LIT(KFbsMessSetHeapFail,							"EFbsMessSetHeapFail");
 _LIT(KFbsMessHeapCount,								"EFbsMessHeapCount");
 _LIT(KFbsMessSetHeapReset,							"EFbsMessSetHeapReset");
 _LIT(KFbsMessSetHeapCheck,							"EFbsMessSetHeapCheck");
 _LIT(KFbsMessHeap,									"EFbsMessHeap");
-_LIT(KFbsMessLinkedCache,							"EFbsMessLinkedCache");
+//_LIT(KFbsMessLinkedCache,							"EFbsMessLinkedCache");
 _LIT(KFbsMessBitmapClean,							"EFbsMessBitmapClean");
 /*@}*/
 
@@ -707,10 +707,10 @@
 			{
 			aMessage = EFbsGetAllBitmapHandles;
 			}
-		else if ( fbsMessage==KFbsMessCreateLinkedTypeface )
+/*		else if ( fbsMessage==KFbsMessCreateLinkedTypeface )
 			{
 			aMessage = EFbsMessCreateLinkedTypeface;
-			}
+			} */
 		else if ( fbsMessage==KFbsMessSetHeapFail )
 			{
 			aMessage = EFbsMessSetHeapFail;
@@ -731,10 +731,10 @@
 			{
 			aMessage = EFbsMessHeap;
 			}
-		else if ( fbsMessage==KFbsMessLinkedCache )
+/*		else if ( fbsMessage==KFbsMessLinkedCache )
 			{
 			aMessage = EFbsMessLinkedCache;
-			}
+			} */
 		else if ( fbsMessage==KFbsMessBitmapClean )
 			{
 			aMessage = EFbsMessBitmapClean;
--- a/lbs/lbstestutils/group/lbstestutils.mmp	Thu Jan 21 12:55:15 2010 +0000
+++ b/lbs/lbstestutils/group/lbstestutils.mmp	Thu Jan 21 14:54:07 2010 +0000
@@ -48,7 +48,8 @@
 LIBRARY efsrv.lib
 
 // LBS libraries.
-LIBRARY	lbsselflocate.lib
+//LIBRARY	lbsselflocate.lib
+LIBRARY lbs.lib
 LIBRARY	lbsloccommon.lib
 LIBRARY lbsassistancedata.lib
 LIBRARY lbsloggerapi.lib