Revision: 200915 PDK_2.0.a
authorKiiskinen Klaus (Nokia-D-MSW/Tampere) <klaus.kiiskinen@nokia.com>
Fri, 08 May 2009 08:18:43 +0300
changeset 10 57d5b8e231c4
parent 0 84ad3b177aa3
child 11 431a7e18c87c
child 12 1d32da277fd4
child 15 e45c3f40ea5f
Revision: 200915 Kit: 200918
brdo.layers.sysdef.xml
browserplugins/group/bld.inf
browserui/browser/BrowserAppInc/BrowserAppUi.h
browserui/browser/BrowserAppInc/BrowserAppViewBase.h
browserui/browser/BrowserAppInc/BrowserGotoPane.h
browserui/browser/BrowserAppInc/BrowserPreferences.h
browserui/browser/BrowserAppInc/BrowserPreferences.inl
browserui/browser/BrowserAppInc/Preferences.h
browserui/browser/BrowserAppSrc/BrowserAppUi.cpp
browserui/browser/BrowserAppSrc/BrowserAppViewBase.cpp
browserui/browser/BrowserAppSrc/BrowserBmOTABinSender.cpp
browserui/browser/BrowserAppSrc/BrowserContentView.cpp
browserui/browser/BrowserAppSrc/BrowserContentViewContainer.cpp
browserui/browser/BrowserAppSrc/BrowserContentViewToolbar.cpp
browserui/browser/BrowserAppSrc/BrowserGotoPane.cpp
browserui/browser/BrowserAppSrc/BrowserLoadObserver.cpp
browserui/browser/BrowserAppSrc/BrowserPreferences.cpp
browserui/browser/BrowserAppSrc/BrowserWindow.cpp
browserui/browser/FavouritesInc/BrowserAdaptiveListPopup.h
browserui/browser/FavouritesInc/BrowserBookmarksContainer.h
browserui/browser/FavouritesInc/BrowserBookmarksContainer.inl
browserui/browser/FavouritesInc/BrowserBookmarksGotoPane.h
browserui/browser/FavouritesSrc/BrowserAdaptiveListPopup.cpp
browserui/browser/FavouritesSrc/BrowserBookmarksContainer.cpp
browserui/browser/FavouritesSrc/BrowserBookmarksGotoPane.cpp
browserui/browser/FavouritesSrc/BrowserBookmarksListboxIconHandler.cpp
browserui/browser/FavouritesSrc/BrowserBookmarksView.cpp
browserui/browser/FavouritesSrc/BrowserFavouritesFolderListboxIconHandler.cpp
browserui/browser/FavouritesSrc/BrowserFavouritesListbox.cpp
browserui/browser/FavouritesSrc/BrowserFavouritesListboxItemDrawer.cpp
browserui/browser/FavouritesSrc/BrowserFavouritesView.cpp
browserui/browser/FeedsSrc/FeedsClientUtilities.cpp
browserui/browser/FeedsSrc/FeedsEditFeedDialog.cpp
browserui/browser/FeedsSrc/FeedsFolderView.cpp
browserui/browser/Group/BrowserNG.mmp
browserui/browser/Group/browsericons.txt
browserui/browser/SettingsInc/SettingsContainer.h
browserui/browser/SettingsInc/SettingsView.h
browserui/browser/SettingsSrc/SettingsContainer.cpp
browserui/browser/SettingsSrc/SettingsView.cpp
browserui/browser/SrcData/Browser.hrh
browserui/browser/SrcData/Browser.rss
browserui/browser/SrcData/BrowserBookmarks.rssi
browserui/browser/SrcData/BrowserSettings.rssi
browserui/browser/SrcData/BrowserToolbar.hrh
browserui/browser/SrcData/bookmark_toolbar.rssi
browserui/browser/SrcData/browser_toolbar.rssi
browserui/browser/conf/browserbookmarks.confml
browserui/browser/conf/browserui.confml
browserui/browser/conf/browserui_10008D39.crml
browserui/browser/loc/WmlBrowser.loc
browserui/group/bld.inf
group/bld.inf
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/brdo.layers.sysdef.xml	Fri May 08 08:18:43 2009 +0300
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!DOCTYPE SystemDefinition SYSTEM "sysdef_1_4_0.dtd"
+	[ <!ENTITY layer_real_source_path "sf/app/webuis" > ]>
+
+<SystemDefinition name="webuis" schema="1.4.0">
+  <systemModel>
+    <layer name="app_layer">
+      <module name="browserui">
+        <unit unitID="browser" name="browser" bldFile="&layer_real_source_path;/browserui/browser/group" mrp=""/>
+        <unit unitID="operatormenu" name="operatormenu" bldFile="&layer_real_source_path;/browserui/operatormenu/group" mrp=""/>
+        <unit unitID="videoservices" name="videoservices" bldFile="&layer_real_source_path;/browserui/videoservices/group" mrp=""/>
+      </module>
+      <module name="browserplugins">
+        <unit unitID="browsersysteminfoplugin" name="browsersysteminfoplugin" bldFile="&layer_real_source_path;/browserplugins/browsersysteminfoplugin/group" mrp=""/>
+        <unit unitID="browsergpsplugin" name="browsergpsplugin" bldFile="&layer_real_source_path;/browserplugins/browsergpsplugin/group" mrp=""/>
+        <unit unitID="browseraudiovideoplugin" name="browseraudiovideoplugin" bldFile="&layer_real_source_path;/browserplugins/browseraudiovideoplugin/group" mrp=""/>
+      </module>
+      <module name="pushmtm">
+        <unit unitID="pushmtm" name="pushmtm" bldFile="&layer_real_source_path;/pushmtm/group" mrp=""/>
+      </module>
+    </layer>
+  </systemModel>
+</SystemDefinition>
--- a/browserplugins/group/bld.inf	Mon Mar 30 12:49:49 2009 +0300
+++ b/browserplugins/group/bld.inf	Fri May 08 08:18:43 2009 +0300
@@ -1,46 +1,20 @@
 /*
-* ==============================================================================
-*  Name        : bld.inf
-*  Part of     : Toplevel BrowserPlugins
-*  Interface   :
-*  Description : Highlevel bld.inf
-*  Version     : 1
-*
-*    Copyright (c) 2006, Nokia Corporation
-*    All rights reserved.
-*
-*  	Redistribution and use in source and binary forms, with or without
-*  	modification, are permitted provided that the following conditions
-*  	are met:
+* 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".
 *
-*      * Redistributions of source code must retain the above copyright
-*        notice, this list of conditions and the following disclaimer.
-*      * Redistributions in binary form must reproduce the above copyright
-*        notice, this list of conditions and the following disclaimer in
-*        the documentation and/or other materials provided with the
-*        distribution.
-*      * Neither the name of the Nokia Corporation nor the names of its
-*        contributors may be used to endorse or promote products derived
-*        from this software without specific prior written permission.
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
 *
-*  	THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-*  	"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-*  	LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-*  	A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-*  	OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-*  	SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-*  	LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-*  	DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-*  	THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-*  	(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
-*  	USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-*  	DAMAGE.
+* Contributors:
 *
+* Description:  Project build file for BrowserPlugins
 *
-* ==============================================================================
 */
 
-
 #ifdef __WEB_WIDGETS
     #include "../browsersysteminfoplugin/group/bld.inf"
     #include "../browsergpsplugin/group/bld.inf"
--- a/browserui/browser/BrowserAppInc/BrowserAppUi.h	Mon Mar 30 12:49:49 2009 +0300
+++ b/browserui/browser/BrowserAppInc/BrowserAppUi.h	Fri May 08 08:18:43 2009 +0300
@@ -105,6 +105,14 @@
     public:
 
         /**
+        * Handling the system Event.
+        * @since Series 60 1.2
+        * @param aEvent The System event passed.
+        */
+                
+        void HandleSystemEventL(const TWsEvent& aEvent);
+        
+        /**
         * Get the active view.
 		* @since Series 60 1.2
         * @return The current view.
@@ -768,6 +776,13 @@
         * @param none
         */
 		void ShowNameAndVersionL();
+		
+		/**
+		* There's a homepage to be launched so start in content view
+		* [Convenience function that gets used in 2 places]
+        * @param none
+        */		
+		void StartFetchHomePageL();		
 
 		
 	protected:
@@ -947,6 +962,7 @@
 		TBool iPgNotFound;
         TBool iSuppressAlwaysAsk;
         TBool iFlashPresent;
+        TBool iSpecialSchemeinAddress;
         
         RFavouritesSession iFavouritesSess;
 
--- a/browserui/browser/BrowserAppInc/BrowserAppViewBase.h	Mon Mar 30 12:49:49 2009 +0300
+++ b/browserui/browser/BrowserAppInc/BrowserAppViewBase.h	Fri May 08 08:18:43 2009 +0300
@@ -184,6 +184,7 @@
 		*/
 		virtual TUid Id() const = 0;
                 
+		virtual void LaunchSearchApplicationL( const TDesC& aSearchString );
     //private:
 	protected:
 
--- a/browserui/browser/BrowserAppInc/BrowserGotoPane.h	Mon Mar 30 12:49:49 2009 +0300
+++ b/browserui/browser/BrowserAppInc/BrowserGotoPane.h	Fri May 08 08:18:43 2009 +0300
@@ -20,8 +20,13 @@
 #define WML_GOTO_PANE_BASE_H
 
 // DEFINES
-#define GOTOPANE_POPUPLIST_DISABLE 0
-#define GOTOPANE_POPUPLIST_ENABLE 1
+#ifndef GOTOPANE_POPUPLIST_DISABLE
+#define GOTOPANE_POPUPLIST_DISABLE EFalse
+#endif
+
+#ifndef GOTOPANE_POPUPLIST_ENABLE
+#define GOTOPANE_POPUPLIST_ENABLE ETrue
+#endif
 
 // INCLUDE FILES
 #include <coecntrl.h>
@@ -206,6 +211,28 @@
         */
         void EnableKeyEventHandlerL( TBool aEnable );
 
+        /**
+        * Activate GoTo Pane.
+        */
+        void SetGotoPaneActiveL();
+
+        /**
+        * Activate Search Pane.
+        */
+        void SetSearchPaneActiveL();
+        
+        /**
+        * Check if we are in Goto Mode
+        * @return ETrue if we are in Goto Mode; EFalse otherwise.
+        */
+        inline TBool GotoPaneActive() const { return iGotoPaneActive; }
+        
+        /**
+        * Check if we are in Search Mode
+        * @return ETrue if we are in Search Mode; EFalse otherwise.
+        */
+        inline TBool SearchPaneActive() const { return iSearchPaneActive; }
+        
     public:	// from MCoeControlObserver
 
         /**
@@ -235,6 +262,13 @@
         *
         */
         void HandlePointerEventL(const TPointerEvent& /*aPointerEvent*/);
+        
+        /**
+        * HandleResourceChange
+        * From CCoeControl
+        */
+        void HandleResourceChange(TInt aType);
+        
 
     public:     // from CCoeControl
 
@@ -262,7 +296,13 @@
     public:     // Text manipulation
 
         /**
-        * Lengt of the text in the editor.
+        * Length of the Search text in the editor.
+        * @return The text length
+        */
+        TInt SearchTextLength() const;
+
+        /**
+        * Length of the text in the editor.
         * @since Series60 1.2
         * @return The text length
         */
@@ -284,6 +324,18 @@
         virtual void SetTextL( const TDesC& aTxt );
 
         /**
+        * Set Editor Font Posture to Italic.
+        */
+        void SetTextModeItalicL( );
+        
+        /**
+        * Set Search text.
+        * @param aTxt Text to set
+        * appended if needed.
+        */
+        void SetSearchTextL( const TDesC& aTxt );
+        
+        /**
         * Selects all text in the editor.
         * See CEikEdwin's SelectAllL();
         * @since Series60 1.2
@@ -323,11 +375,6 @@
         * Gives back a pointer to adaptivepopuplist
         */
         CBrowserAdaptiveListPopup* PopupList();
-
-         /**
-        * Handles resource change
-        */        
-		void HandleResourceChange( TInt aType );
 		
          /**
         * Handles the completion of a FEP transaction
@@ -352,6 +399,11 @@
         */
         void ConstructL( const CCoeControl* aParent, TInt aIconBitmapId, TInt aIconMaskId, TBool aPopupListStatus );
 
+        /**
+        * Constructs Search Pane.
+        */
+        void ConstructSearchPaneL();
+        
     protected:  // from CCoeControl
 
         /**
@@ -396,6 +448,12 @@
         // Input frame. Owned.
         CAknInputFrame* iInputFrame;
         
+        // Search Editor. Owned.
+        CEikEdwin* iSearchEditor;  
+        
+        // Search Input frame. Owned.
+        CAknInputFrame* iSearchInputFrame;
+                
         // Observer (may be NULL). Not owned.
         MGotoPaneObserver* iGPObserver;
 		
@@ -404,6 +462,19 @@
 
         /// adaptive popuplist
         CBrowserAdaptiveListPopup* iBAdaptiveListPopup;
+        
+        // Represents Active Editors 
+        TBool iGotoPaneActive;
+        TBool iSearchPaneActive;
+        
+        // Default text in Search Editor.Owned.
+        HBufC* iDefaultSearchText;
+        
+        // Search Input Frame Icon Id, used for tracking the Search Icon Changes.
+        TInt iSearchIconId;
+        
+        // Stores the Search Icon File Path.
+        TFileName iSearchIconFilePath;
     };
 
 #endif
--- a/browserui/browser/BrowserAppInc/BrowserPreferences.h	Mon Mar 30 12:49:49 2009 +0300
+++ b/browserui/browser/BrowserAppInc/BrowserPreferences.h	Fri May 08 08:18:43 2009 +0300
@@ -135,6 +135,22 @@
         */
         const TPreferencesValues& AllPreferencesL();
         
+        /**
+        * To access an int value key in ini file
+        * @param aKey the ini file key to read
+        * @return the value of the given key
+        * @since Series60 2.0
+        */
+        TInt GetIntValue( TUint32 aKey) const;
+
+        /**
+        * To access an string value key in ini file
+        * @param aKey the ini file key to read
+        * @return the value of the given key
+        * @since Series60 2.0
+        */
+        TInt GetStringValueL ( TUint32 aKey, TInt aMaxBufSize, TDes& aBuf ) const;
+		
     private:    // New functions
         
         /**
@@ -146,14 +162,6 @@
     private:    //Utility functions for accessing shared data
 
         /**
-        * To access an int value key in ini file
-        * @param aKey the ini file key to read
-        * @return the value of the given key
-        * @since Series60 2.0
-        */
-        TInt GetIntValue( TUint32 aKey) const;
-
-        /**
         * To set an int value key in ini file
         * @param aKey the ini file key to write
         * @param aValue new value for the key
@@ -169,15 +177,7 @@
         * @since Series60 2.0
         */
         HBufC* GetStringValueL ( TUint32 aKey ) const;
-        
-        /**
-        * To access an string value key in ini file
-        * @param aKey the ini file key to read
-        * @return the value of the given key
-        * @since Series60 2.0
-        */
-        TInt GetStringValueL ( TUint32 aKey, TInt aMaxBufSize, TDes& aBuf ) const;
-
+		
         /**
         * To set an int value key in ini file
         * @param aKey the ini file key to write
@@ -960,7 +960,16 @@
         */
         inline TInt MaxRecentUrls() const;
 
-        
+        /** 
+        * To get Search Feature Flag.
+        */
+        inline TInt SearchFeature() const;
+
+        /** 
+        * To get Service Feature Flag.
+        */
+        inline TInt ServiceFeature() const;
+
     private:
 
         /**
--- a/browserui/browser/BrowserAppInc/BrowserPreferences.inl	Mon Mar 30 12:49:49 2009 +0300
+++ b/browserui/browser/BrowserAppInc/BrowserPreferences.inl	Fri May 08 08:18:43 2009 +0300
@@ -653,6 +653,24 @@
     return iAllPreferences.iMaxRecentUrlsToShow;    	
     }
 
+// ----------------------------------------------------------------------------
+// CBrowserPreferences::SearchFeature
+// ----------------------------------------------------------------------------
+//
+TInt CBrowserPreferences::SearchFeature() const
+    {
+    return iAllPreferences.iSearch;        
+    }
+
+// ----------------------------------------------------------------------------
+// CBrowserPreferences::ServiceFeature
+// ----------------------------------------------------------------------------
+//
+TInt CBrowserPreferences::ServiceFeature() const
+    {
+    return iAllPreferences.iService;        
+    }
+
 #endif
 
 // End of File
--- a/browserui/browser/BrowserAppInc/Preferences.h	Mon Mar 30 12:49:49 2009 +0300
+++ b/browserui/browser/BrowserAppInc/Preferences.h	Fri May 08 08:18:43 2009 +0300
@@ -134,6 +134,8 @@
 	TUint32							iZoomLevelMax;
 	TUint32							iZoomLevelDefault;
 	TInt							iMaxRecentUrlsToShow;
+    TBool                           iSearch;                // Search Feature
+    TBool                           iService;               // Service Feature
     };
 
 /**
@@ -804,6 +806,31 @@
 		* Maximum Recent URLs to show
         */
         virtual TInt MaxRecentUrls() const = 0;
+
+        /**
+        * Search Feature Enabled or Disabled. 
+        */
+        virtual inline TBool SearchFeature() const = 0;
+        
+        /**
+        * Service Feature Enabled or Disabled. 
+        */
+        virtual inline TBool ServiceFeature() const = 0;
+                
+        /**
+        * To access an int value key in ini file
+        * @param aKey the ini file key to read
+        * @return the value of the given key
+        */
+        virtual TInt GetIntValue( TUint32 aKey) const = 0;
+
+        /**
+        * To access an string value key in ini file
+        * @param aKey the ini file key to read
+        * @return the value of the given key
+        */
+        virtual TInt GetStringValueL ( TUint32 aKey, TInt aMaxBufSize, TDes& aBuf ) const = 0;
+
         
     public:     // observer support
 
--- a/browserui/browser/BrowserAppSrc/BrowserAppUi.cpp	Mon Mar 30 12:49:49 2009 +0300
+++ b/browserui/browser/BrowserAppSrc/BrowserAppUi.cpp	Fri May 08 08:18:43 2009 +0300
@@ -19,6 +19,7 @@
 
 
 // INCLUDES
+#include <platform/mw/Browser_platform_variant.hrh>
 #include <BrowserNG.rsg>
 #include <uri16.h>
 #include <uri8.h>
@@ -39,8 +40,12 @@
 #include <AiwGenericParam.h>
 #include <AknDef.h>
 #include <DocumentHandler.h>
+
+#ifdef BRDO_APP_GALLERY_SUPPORTED_FF
 #include <MGXFileManagerFactory.h>
 #include <CMGXFileManager.h>
+#endif
+
 #include <BrowserPluginInterface.h>
 #include <oommonitorplugin.h>
 
@@ -1268,10 +1273,50 @@
 
 		err = KErrNone;
 		BROWSER_LOG( ( _L( "Load the URL" ) ) );
-        LoadObserver().DoStartLoad( aUrlType );
+		
+		if ( iPreferences->SearchFeature() || iPreferences->ServiceFeature())
+		    {
+    		iSpecialSchemeinAddress = EFalse;
+            
+            HBufC* searchScheme = HBufC::NewLC( KMaxHomePgUrlLength );  // cleanupstack
+            TPtr searchSchemePtr( searchScheme->Des() );
+            ++toPop;
+            
+            HBufC* serviceScheme = HBufC::NewLC( KMaxHomePgUrlLength );  // cleanupstack
+            TPtr serviceSchemePtr( serviceScheme->Des() );
+            ++toPop;
+            
+            iPreferences->GetStringValueL( KBrowserSearchProviderUrl, KMaxHomePgUrlLength, searchSchemePtr );
+            iPreferences->GetStringValueL( KBrowserServiceUrl, KMaxHomePgUrlLength, serviceSchemePtr );
+                    
+            TInt err = uriParser.Parse(searchSchemePtr);
+            if (!err)
+                searchSchemePtr = uriParser.Extract( EUriScheme );
+            
+            err = uriParser.Parse(serviceSchemePtr);
+            if (!err)
+                serviceSchemePtr = uriParser.Extract( EUriScheme );
+            
+            if( scheme.Length() != 0 )
+                {
+                if( !scheme.Compare(serviceSchemePtr) || !scheme.Compare(searchSchemePtr) )
+                	{
+                	iSpecialSchemeinAddress = ETrue;
+                	TRAP( err, BrCtlInterface().LoadUrlL( resultUrlBuf->Des(), IAPid ) );
+                	}
+                else
+                	{
+                	LoadObserver().DoStartLoad( aUrlType );
+                    TRAP( err, BrCtlInterface().LoadUrlL( resultUrlBuf->Des(), IAPid ) );
+                	}            
+                }
+	        }
+	    else
+	        {
+	        LoadObserver().DoStartLoad( aUrlType );
+            TRAP( err, BrCtlInterface().LoadUrlL( resultUrlBuf->Des(), IAPid ) );
+	        }
         
-        TRAP( err, BrCtlInterface().LoadUrlL( resultUrlBuf->Des(), IAPid ) );
-
 		CleanupStack::PopAndDestroy(toPop); //resultUrlBuf and url if needed
 		BROWSER_LOG( ( _L( "No AP 4 %d" ), err  ) );
 		if ( err != KErrNone )
@@ -1778,29 +1823,53 @@
 
    	    if ( LastActiveViewId() == KUidBrowserNullViewId )
 	        {
+	        TBool specialSchemeInHomePageAddress = EFalse;
+	        
 	        if (NoHomePageToBeLaunchedL())
 	            {
 	            // No homepage to be launched so start browser in bookmarks view
     	        SetLastActiveViewId(KUidBrowserBookmarksViewId);
 	            }
-    	    else
+    	    else if ( iPreferences->SearchFeature() || iPreferences->ServiceFeature())
     	        {
-    	        // There's a homepage to be launched so start in content view
-    	        SetLastActiveViewId(KUidBrowserContentViewId);  
-    	          
-               	//wait for contentview to initialize itself
-        	    WaitCVInit();
-
-                TInt error( KErrNone );
-                TRAP( error, FetchHomePageL() );
-                if( error != KErrNone )
-                    {
-                    CloseContentViewL();
-                    }
-                }
-            ActivateLocalViewL( LastActiveViewId() );
-        	}
-
+    	        
+    	        HBufC* buf = HBufC::NewLC( KMaxHomePgUrlLength );  // cleanupstack
+    	        TPtr ptr( buf->Des() );
+    	        TInt pgFound( KErrNotFound );
+    	        pgFound = Preferences().HomePageUrlL( ptr );
+    	        
+    			HBufC* searchScheme = HBufC::NewLC( KMaxHomePgUrlLength );  // cleanupstack
+    			TPtr searchSchemePtr( searchScheme->Des() );
+    			
+    			HBufC* serviceScheme = HBufC::NewLC( KMaxHomePgUrlLength );  // cleanupstack
+    			TPtr serviceSchemePtr( serviceScheme->Des() );
+    			
+    	        iPreferences->GetStringValueL( KBrowserSearchProviderUrl, KMaxHomePgUrlLength, searchSchemePtr );
+    	        iPreferences->GetStringValueL( KBrowserServiceUrl, KMaxHomePgUrlLength, serviceSchemePtr );
+
+    			
+	            if( !ptr.Compare(serviceSchemePtr) || !ptr.Compare(searchSchemePtr) )
+	            	{    
+	            	specialSchemeInHomePageAddress = ETrue;
+	            	SetLastActiveViewId(KUidBrowserBookmarksViewId);
+	            	TRAPD( err, FetchL( ptr, CBrowserLoadObserver::ELoadUrlTypeOther ) );
+	            	}
+	            else
+	                {
+                    StartFetchHomePageL();
+	            	}
+    	        CleanupStack::PopAndDestroy( 3,buf );
+    	        }
+            else
+            	{
+                StartFetchHomePageL();
+            	}
+           
+	        if( !specialSchemeInHomePageAddress )
+	            {
+	        	ActivateLocalViewL( LastActiveViewId() );
+	            }
+        	}        	   	  
         }
     else if ( aCommand == EApaCommandViewActivate )
     // Get when activated from soft notification (Downloads List).
@@ -2155,6 +2224,8 @@
                                 }
                             case KFolderId:
                                 {
+                                SetCalledFromAnotherApp( EFalse );
+                                iIsForeground = IsForeground();
                                 CloseContentViewL();
                                 SetLastActiveViewId( KUidBrowserBookmarksViewId );
                                 break;
@@ -2179,7 +2250,10 @@
                 // Sender Uid was not readable
                 User::Leave( err );
                 }
-            SetViewToBeActivatedIfNeededL( LastActiveViewId() );
+            if( !iSpecialSchemeinAddress )
+            	{              
+            	SetViewToBeActivatedIfNeededL( LastActiveViewId() );
+            	}
             break;
             }
 
@@ -3801,6 +3875,9 @@
 
     TFileName fName;
     User::LeaveIfError(docHandler->GetPath(fName));
+    
+    #ifdef BRDO_APP_GALLERY_SUPPORTED_FF
+    
     CMGXFileManager* mgFileManager = MGXFileManagerFactory::NewFileManagerL(CEikonEnv::Static()->FsSession());
     CleanupStack::PushL(mgFileManager);
     if( fName.Length() > 0 )
@@ -3811,7 +3888,11 @@
         {
         TRAP_IGNORE( mgFileManager->UpdateL() );
         }
-    CleanupStack::PopAndDestroy(2); // imageCarrier, mgFileManager
+    CleanupStack::PopAndDestroy(1); // mgFileManager
+    
+    #endif
+    
+    CleanupStack::PopAndDestroy(1); // imageCarrier
     }
 
 // ---------------------------------------------------------
@@ -3957,17 +4038,7 @@
            {
            case EEventPointerExit:
                {
-               CCoeControl* ctrl = &(BrCtlInterface());
-               CCoeControl* parent = ctrl->Parent();
-
-               if (aDestination == parent) 
-                   {
-                   TPointerEvent  event;
-                   event.iType = TPointerEvent::EButton1Up;
-                   event.iModifiers = 0;
-                   event.iPosition = TPoint(0, 0);
-                   parent->HandlePointerEventL(event);
-                   }
+
                break;
                }
                
@@ -3995,4 +4066,49 @@
        }
    CAknViewAppUi::HandleWsEventL(aEvent, aDestination);
 }
+
+// ---------------------------------------------------------
+// CBrowserAppUi::HandleSystemEventL
+// ---------------------------------------------------------
+
+void CBrowserAppUi::HandleSystemEventL(const TWsEvent& aEvent)
+   {
+   
+   /**
+    * We need a special handling for System events to handle the situation 
+    * like when the shut down is done while download is going on.
+    */
+   
+   switch (*(TApaSystemEvent*)(aEvent.EventData()))
+     {
+     case EApaSystemEventShutdown:    
+       // do things here
+        ExitBrowser ( IsAppShutterActive() );  
+       break;
+     default:
+       break;
+     }
+   // call base class implementation
+   CAknAppUi::HandleSystemEventL(aEvent);
+   }
+
+// ---------------------------------------------------------
+// CBrowserAppUi::StartFetchHomePageL
+// ---------------------------------------------------------
+void CBrowserAppUi::StartFetchHomePageL(void)
+    {
+    
+    // There's a homepage to be launched so start in content view
+    SetLastActiveViewId(KUidBrowserContentViewId);      	    	          
+   	//wait for contentview to initialize itself
+    WaitCVInit();
+    
+    TInt error( KErrNone );
+    TRAP( error, FetchHomePageL() );
+    if( error != KErrNone )
+        {
+        CloseContentViewL();
+        }                
+    }
+
 // End of File
--- a/browserui/browser/BrowserAppSrc/BrowserAppViewBase.cpp	Mon Mar 30 12:49:49 2009 +0300
+++ b/browserui/browser/BrowserAppSrc/BrowserAppViewBase.cpp	Fri May 08 08:18:43 2009 +0300
@@ -30,8 +30,8 @@
 #include <aknenv.h>
 #include <AknSgcc.h>
 #include <StringLoader.h>
-
-
+#include "BrowserUtil.h"
+#include <BrowserUiSDKCRKeys.h>
 // ================= MEMBER FUNCTIONS =======================
 
 // ---------------------------------------------------------
@@ -280,4 +280,40 @@
     Cba()->SetCommandSetL( commandSet );
     Cba()->DrawNow();
     }
+	
+// -----------------------------------------------------------------------------
+// CBrowserContentView::LaunchSearchApplicationL
+// -----------------------------------------------------------------------------
+//
+void CBrowserViewBase::LaunchSearchApplicationL( const TDesC& aSearchString )
+    {
+    TInt id = iApiProvider.Preferences().GetIntValue( KBrowserSearchAppUid );
+    TUid searchAppId( TUid::Uid( id ) );
+    TApaTaskList taskList( CEikonEnv::Static()->WsSession() );
+    TApaTask task = taskList.FindApp( searchAppId );
+    HBufC8* searchParam8 = HBufC8::NewLC( aSearchString.Length() + 1);
+    searchParam8->Des().Append( aSearchString );
+    if ( task.Exists() )
+        {
+        User::LeaveIfError( task.SendMessage( TUid::Uid( 0 ), *searchParam8 ) );
+        }
+    else
+        {
+        RApaLsSession appArcSession;
+        TApaAppInfo appInfo;
+        User::LeaveIfError(appArcSession.Connect());
+        CleanupClosePushL( appArcSession );
+        TInt err  = appArcSession.GetAppInfo( appInfo, searchAppId );
+        if( err == KErrNone )
+            {
+            CApaCommandLine* cmdLine = CApaCommandLine::NewLC();
+            cmdLine->SetExecutableNameL( appInfo.iFullName );
+            cmdLine->SetTailEndL( *searchParam8 );
+            User::LeaveIfError( appArcSession.StartApp( *cmdLine ));
+            CleanupStack::PopAndDestroy( cmdLine ); 
+            }
+        CleanupStack::PopAndDestroy( &appArcSession );
+        }
+    CleanupStack::PopAndDestroy( searchParam8 );
+    } 
 // End of File
--- a/browserui/browser/BrowserAppSrc/BrowserBmOTABinSender.cpp	Mon Mar 30 12:49:49 2009 +0300
+++ b/browserui/browser/BrowserAppSrc/BrowserBmOTABinSender.cpp	Fri May 08 08:18:43 2009 +0300
@@ -292,39 +292,11 @@
     body->Des().Append( lend );
 #endif  // _BOOKMARK_SENT_ASCII
 
-	if ( capa.iFlags & TSendingCapabilities::ESupportsAttachments )
-	  	{
-	    // connect to file session
-	    RFs fsSession;
-	    User::LeaveIfError( fsSession.Connect() );
-	    CleanupClosePushL<RFs>( fsSession );
-	    CFileMan* fman = CFileMan::NewL( fsSession );
-	    CleanupStack::PushL( fman );
-	    // try to avoid inserting any 'leave' code 
-	    // between WriteMessageBodyIntoFile()
-	    // and CreateAndSendMessageL, or
-	    // you have to take care of deleting 
-	    // temporary file
-	    error = WriteMessageBodyIntoFileL( fsSession, *body );
-	        
-	    if( error == KErrNone )
-	        {
-	        // send attachment
-	        // this function has to be trapped
-	        // because I have to be sure that the 
-	        // temproray file is removed!
-	        msgData->AppendAttachmentL( KAttachmentFilename );            
-	        TRAP( error, iSendUi->CreateAndSendMessageL( service, 
-	                                                     msgData ) );
-	        }
-	    // delete temporary file
-	    fman->Delete( KAttachmentFilename );
-	    // close file session        
-	    fsSession.Close();
+	// The issue is because of the deletion of the temp file .
+	// As we are sending address only , we can just create a buffer & send it in message
+	// body.
 
-	    CleanupStack::PopAndDestroy( 2 ); // fsSession, fman
-	  	}
-	else if ( capa.iFlags & TSendingCapabilities::ESupportsBodyText )
+	if ( capa.iFlags & (TSendingCapabilities::ESupportsBodyText || TSendingCapabilities::ESupportsAttachments))
 		{
 		CRichText* text = 
 		        CRichText::NewL(CEikonEnv::Static()->SystemParaFormatLayerL(),
--- a/browserui/browser/BrowserAppSrc/BrowserContentView.cpp	Mon Mar 30 12:49:49 2009 +0300
+++ b/browserui/browser/BrowserAppSrc/BrowserContentView.cpp	Fri May 08 08:18:43 2009 +0300
@@ -305,9 +305,17 @@
             UpdateTitleL( iApiProvider );
             break;
             }
-
+		// Set search pane active and then launch editor.	
+        case EIsCmdSearchWeb:
+            {
+            iContainer->GotoPane()->SetSearchPaneActiveL();
+            LaunchGotoAddressEditorL();
+            break;
+            }
         case EWmlCmdGoToAddress:
+		case EWmlCmdGoToAddressAndSearch:
             {
+			iContainer->GotoPane()->SetGotoPaneActiveL();
             LaunchGotoAddressEditorL();
             break;
             }
@@ -343,7 +351,10 @@
         case EWmlCmdGotoPaneGoTo:
             {
             HBufC* input = iContainer->GotoPane()->GetTextL();
-            if ((input) && (input->CompareF(KWWWString)))
+	    CleanupStack::PushL( input );
+	    if( iContainer->GotoPane()->GotoPaneActive() )
+	        {
+            if ((input) && (input->CompareF(KWWWString)) && input->Length() )
                 {
                 if (iPenEnabled)
                     {
@@ -363,7 +374,31 @@
                     MakeCbaVisible( EFalse );
                     }
                 }
-            if (iPenEnabled)
+	        }
+	    else 
+	        {
+	        // Search Editor was active, So launch Search application with 
+	        // search parameters and cancel editing of search and goto.
+	        if ( (input) && input->Length()  )
+               {
+                if (iPenEnabled)
+                  {
+                  Toolbar()->SetDimmed(EFalse);
+                  Toolbar()->DrawNow();
+                  }
+                      
+                CCoeEnv::Static()->AppUi()->RemoveFromStack( iContainer->GotoPane() );
+                if ( iContainer->GotoPane() )
+                    {
+                    iContainer->ShutDownGotoURLEditorL();
+                    LaunchSearchApplicationL( *input );
+                    }
+                UpdateCbaL();
+                UpdateFullScreenL();
+               }
+	        }
+	        CleanupStack::PopAndDestroy( input );
+			if (iPenEnabled)
               	{
                	StartAutoFullScreenTimer();
                 }
@@ -1146,22 +1181,29 @@
         // when goto pane is up there is no focusable element or active fetching
         // process in place
         {
-        //check wheter there is an active popuplist
-        if( (iContainer->GotoPane()->PopupList() != NULL) &&
-                   ( iContainer->GotoPane()->PopupList()->IsOpenDirToShow() ))
+        if( iContainer->GotoPane()->SearchPaneActive() )
             {
-            result = R_BROWSER_BOOKMARKS_CBA_GOTO_PANE_OPENDIR_CANCEL;
-            }
-        else if(iContainer->GotoPane()->PopupList() &&
-                iContainer->GotoPane()->PopupList()->IsPoppedUp() &&
-                !iPenEnabled)
-            {
-            // LSK Select is only for non-touch devices
-            result =  R_BROWSER_BOOKMARKS_CBA_GOTO_PANE_SELECT_CANCEL;
+            result = R_BROWSER_BOOKMARKS_CBA_SEARCH_PANE_SEARCH_CANCEL;
             }
         else
             {
-            result =  R_BROWSER_BOOKMARKS_CBA_GOTO_PANE_GOTO_CANCEL;
+            //check wheter there is an active popuplist
+            if( (iContainer->GotoPane()->PopupList() != NULL) &&
+                       ( iContainer->GotoPane()->PopupList()->IsOpenDirToShow() ))
+                {
+                result = R_BROWSER_BOOKMARKS_CBA_GOTO_PANE_OPENDIR_CANCEL;
+                }
+            else if(iContainer->GotoPane()->PopupList() &&
+                    iContainer->GotoPane()->PopupList()->IsPoppedUp() &&
+                    !iPenEnabled)
+                {
+                // LSK Select is only for non-touch devices
+                result =  R_BROWSER_BOOKMARKS_CBA_GOTO_PANE_SELECT_CANCEL;
+                }
+            else
+                {
+                result =  R_BROWSER_BOOKMARKS_CBA_GOTO_PANE_GOTO_CANCEL;
+                }
             }
         }
     else if ( iContainer->FindKeywordPane()->IsVisible() )
@@ -1333,6 +1375,11 @@
 
         // home
         aMenuPane->SetItemDimmed( EWmlCmdLaunchHomePage, ApiProvider().IsLaunchHomePageDimmedL() );
+        //search 
+         if ( ! ApiProvider().Preferences().SearchFeature() )
+             {
+             aMenuPane->SetItemDimmed( EIsCmdSearchWeb, ETrue );
+             }
         }
     else if ( aResourceId == R_PAGEACTIONS_SUBMENU )
         {
--- a/browserui/browser/BrowserAppSrc/BrowserContentViewContainer.cpp	Mon Mar 30 12:49:49 2009 +0300
+++ b/browserui/browser/BrowserAppSrc/BrowserContentViewContainer.cpp	Fri May 08 08:18:43 2009 +0300
@@ -638,6 +638,14 @@
             }
 
         SetRect(iView->ClientRect());
+        
+        if( iApiProvider.Preferences().SearchFeature() )
+          {
+          iGotoPane->SetTextModeItalicL();
+          // To Avoid Flickring, only when layout changed. 
+          iGotoPane->DrawNow();
+          }
+        
         DrawDeferred();
 
         // For Touch only-If find pane open, force toolbar to show since avkon disables
--- a/browserui/browser/BrowserAppSrc/BrowserContentViewToolbar.cpp	Mon Mar 30 12:49:49 2009 +0300
+++ b/browserui/browser/BrowserAppSrc/BrowserContentViewToolbar.cpp	Fri May 08 08:18:43 2009 +0300
@@ -67,6 +67,16 @@
     iBrowserContentView->Toolbar()->ToolbarExtension()->HideItemL( EWmlCmdFavourites, (embeddedMode || embeddedOperatorMenu) );
     iBrowserContentView->Toolbar()->ToolbarExtension()->HideItemL( EWmlCmdSaveAsBookmark, embeddedOperatorMenu );
     iBrowserContentView->Toolbar()->ToolbarExtension()->HideItemL( EWmlCmdLaunchHomePage, (embeddedMode || embeddedOperatorMenu) );
+    
+    if ( iBrowserContentView->ApiProvider().Preferences().SearchFeature() )
+        {
+        iBrowserContentView->Toolbar()->HideItem( EWmlCmdGoToAddress, ETrue, EFalse );
+        }
+    else
+        {
+        iBrowserContentView->Toolbar()->HideItem( EWmlCmdGoToAddressAndSearch, ETrue, EFalse );
+        }
+    
 #endif
     }
 
@@ -104,6 +114,7 @@
     TBool contentDisplayed = iBrowserContentView->ApiProvider().ContentDisplayed();
     TBool wmlMode = iBrowserContentView->ApiProvider().WindowMgr().CurrentWindow()->WMLMode();
     TBool DimHomePage = iBrowserContentView->ApiProvider().IsLaunchHomePageDimmedL();
+    TBool searchMode = iBrowserContentView->ApiProvider().Preferences().SearchFeature();
 
     
     // Extended Toolbar
@@ -111,11 +122,24 @@
             (pageOverview), ETrue );
     iBrowserContentView->Toolbar()->HideItem( EWmlCmdToolbarExtensionContentView, 
             (historyView || findKeywordPane), ETrue );
+    
+    // Goto Url & search
+    if ( searchMode )
+        {
+        iBrowserContentView->Toolbar()->SetItemDimmed( EWmlCmdGoToAddressAndSearch, 
+                 (pageOverview), ETrue );
+        iBrowserContentView->Toolbar()->HideItem( EWmlCmdGoToAddressAndSearch, 
+                (historyView || findKeywordPane), ETrue );
+        }
     // Goto Url
-    iBrowserContentView->Toolbar()->SetItemDimmed( EWmlCmdGoToAddress, 
-            (pageOverview), ETrue );
-    iBrowserContentView->Toolbar()->HideItem( EWmlCmdGoToAddress, 
-            (historyView || findKeywordPane), ETrue );
+    else
+        {
+        iBrowserContentView->Toolbar()->SetItemDimmed( EWmlCmdGoToAddress, 
+                    (pageOverview), ETrue );
+        iBrowserContentView->Toolbar()->HideItem( EWmlCmdGoToAddress, 
+                (historyView || findKeywordPane), ETrue );
+        }
+    
 
     // Zoom Slider button
     iBrowserContentView->Toolbar()->SetItemDimmed( EWmlCmdZoomSliderShow, 
--- a/browserui/browser/BrowserAppSrc/BrowserGotoPane.cpp	Mon Mar 30 12:49:49 2009 +0300
+++ b/browserui/browser/BrowserAppSrc/BrowserGotoPane.cpp	Fri May 08 08:18:43 2009 +0300
@@ -11,7 +11,7 @@
 *
 * Contributors:
 *
-* Description: 
+* Description:
 *
 *
 *
@@ -35,10 +35,14 @@
 #include <Featmgr.h>
 #include <fepbase.h>
 #include <aknutils.h>
+#include <BrowserUiSDKCRKeys.h>
 
-#include <centralrepository.h> 
+#include <centralrepository.h>
+#include <AknLayout2ScalableDef.h>
 #include <AknFepInternalCRKeys.h>
+#include <aknlayoutfont.h>
 #include <PtiDefs.h>
+#include <aknlayoutscalable_avkon.cdl.h>
 
 #include "CommonConstants.h"
 #include "BrowserGotoPane.h"
@@ -51,6 +55,8 @@
 
 #include "eikon.hrh"
 
+#include <StringLoader.h>
+
 
 // ---------------------------------------------------------------------------
 // CBrowserGotoPane::NewL
@@ -80,7 +86,11 @@
 void CBrowserGotoPane::MakeVisibleL( TBool aVisible )
     {
     if ( aVisible )
-    {
+        {
+        if ( iSearchEditor )
+            {
+            ConstructSearchPaneL();
+            }
         HandleFindSizeChanged();
         if ( AUTOCOMP ) //ask the feature manager
         {
@@ -91,9 +101,18 @@
         {
         //2.0 does put the http:// there
             SetTextL( KHttpString );
+            }
         }
-    }
-    if (AknLayoutUtils::PenEnabled())
+    else
+        {
+        // Clear the search text if goto is cancelled ( hidden ).
+        if ( iSearchEditor )
+            {
+            SetSearchTextL( KNullDesC );
+            }
+        }
+
+    if (AknLayoutUtils::PenEnabled() &&  ( !iSearchEditor )  )
         {
         SetPointerCapture(aVisible);
         if (aVisible)
@@ -106,6 +125,16 @@
 
     iGotoKeyHandled->Reset();
     iGotoKeyHandled->EnableL( aVisible );
+
+
+    if ( iSearchEditor )
+        {
+        SetTextModeItalicL();
+        }
+    // To avoid Flickring Effect when SearchInputFrame is
+    // re-created with new search provider icon.
+    DrawNow( );
+
     }
 
 // ---------------------------------------------------------------------------
@@ -127,11 +156,15 @@
         {
         iAvkonAppUi->RemoveFromStack( iGotoKeyHandled );
         }
+    delete iSearchEditor;
+    delete iSearchInputFrame;
+
     delete iGotoKeyHandled;
     delete iEditor;
     delete iInputFrame;
     delete iPrevKeyword;
     delete iBAdaptiveListPopup;
+    delete iDefaultSearchText;
     iContentView = NULL;
     CCoeEnv::Static()->RemoveFepObserver(static_cast<MCoeFepObserver &>(*this));
     }
@@ -143,8 +176,11 @@
 CBrowserGotoPane::CBrowserGotoPane( CBrowserContentView* aContentView, TBool aFindKeywordMode )
 :   iContentView( aContentView),
     iFindKeywordMode( aFindKeywordMode ),
-    iHandleFEPFind( ETrue )
-    ,iBAdaptiveListPopup( NULL )
+    iHandleFEPFind( ETrue ),
+    iBAdaptiveListPopup( NULL ),
+    iGotoPaneActive( ETrue ),
+    iSearchPaneActive( EFalse),
+    iSearchIconId( 0 )
     {
     }
 
@@ -197,18 +233,18 @@
         }
     TInt editorFlags =  ((iFindKeywordMode) ? EAknEditorFlagDefault : EAknEditorFlagLatinInputModesOnly) |EAknEditorFlagUseSCTNumericCharmap;
 #ifdef RD_INTELLIGENT_TEXT_INPUT
-    TInt physicalKeyboards = 0; 
+    TInt physicalKeyboards = 0;
     CRepository* aknFepRepository = CRepository::NewL( KCRUidAknFep );
-	User::LeaveIfNull( aknFepRepository );
+    User::LeaveIfNull( aknFepRepository );
 
     aknFepRepository->Get( KAknFepPhysicalKeyboards,  physicalKeyboards );
-    delete aknFepRepository; 
-        
-	if ( physicalKeyboards &&   EPtiKeyboardQwerty3x11 ) {
+    delete aknFepRepository;
+
+    if ( physicalKeyboards &&   EPtiKeyboardQwerty3x11 ) {
         editorFlags = (editorFlags | EAknEditorFlagNoT9);
-	}
-#endif 
-    iEditor->SetAknEditorFlags( editorFlags ); 
+    }
+#endif
+    iEditor->SetAknEditorFlags( editorFlags );
 
     iEditor->SetAknEditorPermittedCaseModes (   EAknEditorUpperCase |
                                                 EAknEditorLowerCase );
@@ -220,11 +256,18 @@
     iEditor->SetEdwinObserver( iGotoKeyHandled );
     iEditor->SetSkinBackgroundControlContextL(NULL);
 
-    //adaptive popuplist
+    TBool searchFeature = iContentView->ApiProvider().Preferences().SearchFeature();
+    if (  searchFeature && !iFindKeywordMode )
+        {
+        iDefaultSearchText = StringLoader::LoadL( R_IS_WEB_SEARCH );
+        ConstructSearchPaneL();
+        }
+
+      //adaptive popuplist
     if ( aPopupListStatus && AUTOCOMP )
         {
         iBAdaptiveListPopup =
-            new (ELeave) CBrowserAdaptiveListPopup( iEditor, this, EGotoPane );
+            new (ELeave) CBrowserAdaptiveListPopup( iEditor, this, EGotoPane, searchFeature );
         iBAdaptiveListPopup->ConstructL();
         iEditor->SetObserver( iBAdaptiveListPopup );
         if (iContentView)
@@ -257,18 +300,32 @@
 //
 void CBrowserGotoPane::HandleFindSizeChanged()
     {
-
     if ( !AknLayoutUtils::PenEnabled() )
         {
-        TRect parentrect = iAvkonAppUi->ApplicationRect();
+        if ( iSearchEditor && !iFindKeywordMode)
+            {
+            TRect clientRect = CBrowserAppUi::Static()->ClientRect();
+            TAknWindowLineLayout findWindow = AknLayout::popup_find_window();
+
+            TRect findWindowRect = AknLayoutUtils::RectFromCoords( clientRect,findWindow.il, findWindow.it,
+                    findWindow.ir, findWindow.ib, findWindow.iW, findWindow.iH);
 
-        TAknLayoutRect lrect;
-        lrect.LayoutRect( parentrect,
+            // Now Increase the height of rect to make room for two editors (Goto + search)//
+            findWindowRect.iTl.iY -= ( findWindow.iH  );
+            SetRect( findWindowRect );
+            }
+        else
+            {
+            TRect parentrect = iAvkonAppUi->ApplicationRect();
+
+            TAknLayoutRect lrect;
+            lrect.LayoutRect( parentrect,
                         AknLayout::main_pane( CBrowserAppUi::Static()->ApplicationRect(), 0, 1, 1 )
                         );
-        AknLayoutUtils::LayoutControl ( this,
+            AknLayoutUtils::LayoutControl ( this,
                                         lrect.Rect(),
                                         AknLayout::popup_find_window() );
+            }
         }
     else
         {
@@ -350,17 +407,16 @@
 TKeyResponse CBrowserGotoPane::OfferKeyEventL
 ( const TKeyEvent& aKeyEvent, TEventCode aType )
     {
-    TKeyResponse resp;
+    TKeyResponse resp = EKeyWasNotConsumed;
 
-    if ( AknLayoutUtils::PenEnabled() &&
-         PopupList() &&
-         PopupList()->DrawableWindow()->OrdinalPosition() > 0)
+    if (    AknLayoutUtils::PenEnabled()
+         && PopupList()
+         && PopupList()->DrawableWindow()->OrdinalPosition() > 0 )
         {
         PopupList()->SetOrdinalPosition(0);
         }
 
-    // Escape key event handling
-    if ( aType == EEventKey && aKeyEvent.iCode == EKeyEscape )
+    if ( aType == EEventKey && aKeyEvent.iCode == EKeyEscape )  // Escape key event handling
         {
         CCoeEnv::Static()->AppUi()->RemoveFromStack( this );
         if ( PopupList() )
@@ -368,12 +424,9 @@
             PopupList()->SetDirectoryModeL( ETrue );
             PopupList()->HidePopupL();
             }
-
-        // Hide Goto pane
-        MakeVisible( EFalse );
+        MakeVisible( EFalse );                                  // Hide Goto pane
         SetFocus( EFalse );
-        // should set the focus of container to ETrue...how?
-        resp = EKeyWasConsumed;
+        resp = EKeyWasConsumed;                                 // should set the focus of container to ETrue...how?
         }
 
     if ( iFindKeywordMode )
@@ -384,43 +437,56 @@
             }
         else
             {
-            // Handle up and down arow keys to search for
-            // next and previous keywords.
-            if ( aType == EEventKey )
-                {
+            if ( aType == EEventKey )                           // Handle up and down arow keys to search for
+                {                                               //   next and previous keywords.
+
                 if (    aKeyEvent.iCode == EKeyLeftUpArrow      // Northwest
                      || aKeyEvent.iCode == EStdKeyDevice10      //   : Extra KeyEvent supports diagonal event simulator wedge
                      || aKeyEvent.iCode == EKeyUpArrow          // North
                      || aKeyEvent.iCode == EKeyRightUpArrow     // Northeast
                      || aKeyEvent.iCode == EStdKeyDevice11 )    //   : Extra KeyEvent supports diagonal event simulator wedge
-                    {
-                    // Find previous keyword
-                    iContentView->FindKeywordL( NULL, EFalse );
-                    iHandleFEPFind = EFalse;
-                    return EKeyWasConsumed;
+                    {                                           // Any of those? If so, then...
+                    iContentView->FindKeywordL( NULL, EFalse ); // Find previous keyword
+                    iHandleFEPFind = EFalse;                    //   :
+                    return EKeyWasConsumed;                     // And that consumes the key
                     }
+
                 if (    aKeyEvent.iCode == EKeyLeftDownArrow    // Southwest
                      || aKeyEvent.iCode == EStdKeyDevice13      //   : Extra KeyEvent supports diagonal event simulator wedge
                      || aKeyEvent.iCode == EKeyDownArrow        // South
                      || aKeyEvent.iCode == EKeyRightDownArrow   // Southeast
                      || aKeyEvent.iCode == EStdKeyDevice12 )    //   : Extra KeyEvent supports diagonal event simulator wedge
-                    {
-                    // Find next keyword
-                    iContentView->FindKeywordL( NULL, ETrue );
-                    iHandleFEPFind = EFalse;
-                    return EKeyWasConsumed;
+                    {                                           // Any of those? If so, then...
+                    iContentView->FindKeywordL( NULL, ETrue );  // Find next keyword
+                    iHandleFEPFind = EFalse;                    //   :
+                    return EKeyWasConsumed;                     // And that consumes the key
                     }
-                if ( aKeyEvent.iCode == EKeyDevice3 )
-                    {
-                    // ignore select key
-                    return EKeyWasConsumed;
+
+                if ( aKeyEvent.iCode == EKeyDevice3 )           // Select key?
+                    {                                           // If so, then...
+                    return EKeyWasConsumed;                     // Ignore select key
                     }
+
                 }
-            return iEditor->OfferKeyEventL( aKeyEvent, aType );
+            return iEditor->OfferKeyEventL( aKeyEvent, aType );  // Otherwise, just pass the key on to the editor
             }
         }
-    else
+
+    else                                                        // *NOT* iFindKeywordMode
         {
+
+        if (    aKeyEvent.iCode == EKeyRightUpArrow             // Northeast
+             || aKeyEvent.iCode == EStdKeyDevice11              //   : Extra KeyEvent supports diagonal event simulator wedge
+             || aKeyEvent.iCode == EKeyRightDownArrow           // Southeast
+             || aKeyEvent.iCode == EStdKeyDevice12              //   : Extra KeyEvent supports diagonal event simulator wedge
+             || aKeyEvent.iCode == EKeyLeftDownArrow            // Southwest
+             || aKeyEvent.iCode == EStdKeyDevice13              //   : Extra KeyEvent supports diagonal event simulator wedge
+             || aKeyEvent.iCode == EKeyLeftUpArrow              // Northwest
+             || aKeyEvent.iCode == EStdKeyDevice10 )            //   : Extra KeyEvent supports diagonal event simulator wedge
+            {                                                   // Any of those? If so, then...
+            return EKeyWasConsumed;                             // Ignore diagonal navigation events here
+            }
+
         if ( (aKeyEvent.iCode == EKeyOK ) && iGPObserver && IsFocused() )
             {
             if ( CBrowserAppUi::Static()->ContentView()->MenuBar()->MenuPane()->IsVisible() )
@@ -429,28 +495,63 @@
                 }
             else
                 {
-                // If there is an observer and we have the focus, enter key is
-                // consumed and observer is notified.
                 iGPObserver->HandleGotoPaneEventL
                                 ( this, MGotoPaneObserver::EEventEnterKeyPressed );
-                return EKeyWasConsumed;
-                }
+                return EKeyWasConsumed;                         // If there is an observer and we have the focus,
+		}                                               //   enter key is consumed and observer is notified.
             }
-        // For touch UI, handle enter key from VKB as a "GOTO"
+
         else if (AknLayoutUtils::PenEnabled() && aKeyEvent.iCode == EKeyEnter)
-            {
+            {                                                   // For touch UI, handle enter key from VKB as a "GOTO"
             CBrowserAppUi::Static()->ActiveView()->HandleCommandL(EWmlCmdGotoPaneGoTo);
             return EKeyWasConsumed;
             }
 
-        resp = iEditor->OfferKeyEventL( aKeyEvent, aType );
+        if ( iSearchEditor && iSearchPaneActive )
+            {
+            resp = iSearchEditor->OfferKeyEventL( aKeyEvent, aType );
+            }
+        else
+            {
+            resp = iEditor->OfferKeyEventL( aKeyEvent, aType );
+            }
 
         if ((iBAdaptiveListPopup ) && (resp != EKeyWasConsumed))
+          {
+          resp = iBAdaptiveListPopup->OfferKeyEventL( aKeyEvent, aType );
+          }
+
+
+        if ( iSearchEditor )
             {
-            resp = iBAdaptiveListPopup->OfferKeyEventL( aKeyEvent, aType );
+            if (    ( iGotoPaneActive || iSearchPaneActive)
+                 && (resp != EKeyWasConsumed) )
+                {
+
+                if (  aKeyEvent.iCode == EKeyUpArrow )
+                    {
+                    resp = EKeyWasConsumed;
+                    if ( iSearchPaneActive )
+                        {
+                        SetGotoPaneActiveL();
+                        iEditor->RemoveFlagFromUserFlags( CEikEdwin::EAvkonDisableVKB );
+                        }
+                    }
+                if ( aKeyEvent.iCode == EKeyDownArrow )
+                    {
+                    resp = EKeyWasConsumed;
+                    if ( iGotoPaneActive )
+                        {
+                        SetSearchPaneActiveL();
+                        iSearchEditor->RemoveFlagFromUserFlags( CEikEdwin::EAvkonDisableVKB );
+                        }
+                    }
+                }
             }
-        return resp;
         }
+
+    return resp;
+
     }
 
 // ----------------------------------------------------------------------------
@@ -468,7 +569,38 @@
     if (Rect().Contains(aPointerEvent.iPosition))
         {
         iGotoKeyHandled->EnableL(ETrue);
-        iEditor->HandlePointerEventL(aPointerEvent);
+        // If search feature exists, check and route to appropriate editor //
+        if ( iSearchEditor  )
+            {
+            if ( iSearchInputFrame->Rect().Contains(aPointerEvent.iPosition))
+                {
+                if ( iSearchPaneActive )
+                    {
+                    iSearchEditor->HandlePointerEventL(aPointerEvent);
+                    }
+                else
+                    {
+                    SetSearchPaneActiveL();
+                    }
+                iSearchEditor->RemoveFlagFromUserFlags( CEikEdwin::EAvkonDisableVKB);
+                }
+            else
+                {
+                if ( iGotoPaneActive )
+                    {
+                    iEditor->HandlePointerEventL(aPointerEvent);
+                    }
+                else
+                    {
+                    SetGotoPaneActiveL();
+                    }
+                iEditor->RemoveFlagFromUserFlags( CEikEdwin::EAvkonDisableVKB);
+                }
+            }
+        else
+            {
+            iEditor->HandlePointerEventL(aPointerEvent);
+            }
         iGotoKeyHandled->SetFirstKeyEvent(EFalse);
         }
     else
@@ -484,6 +616,10 @@
 //
 TInt CBrowserGotoPane::CountComponentControls() const
     {
+    if ( iSearchEditor && !iFindKeywordMode )
+        {
+        return 4; // iEditor, input frame, SearchEditor and Searchinput frame.
+        }
     return 2;   // iEditor and input frame
     }
 
@@ -503,6 +639,15 @@
             {
             return iEditor;
             }
+        case 2:
+            {
+            return iSearchInputFrame;
+            }
+        case 3:
+            {
+            return iSearchEditor;
+            }
+
         default:
             return NULL;
         }
@@ -514,7 +659,25 @@
 //
 void CBrowserGotoPane::SizeChanged()
     {
-    iInputFrame->SetRect( Rect() );
+    if (iSearchEditor && !iFindKeywordMode )
+        {
+        // We need height and width of FindWindow
+        TAknWindowLineLayout findWindow = AknLayout::popup_find_window();
+        TRect findWindowRect = AknLayoutUtils::RectFromCoords( Rect(), findWindow.il,
+                findWindow.it, findWindow.ir, findWindow.ib, findWindow.iW, findWindow.iH);
+
+        TSize gotoSize( findWindowRect.Size() );
+        TRect gotoRect( TPoint( 0,0 ), gotoSize );
+        iInputFrame->SetRect( gotoRect );
+
+        // Now set SearchPane right below GoTo pane //
+        TRect searchRect( TPoint( 0, gotoRect.iBr.iY ), gotoSize );
+        iSearchInputFrame->SetRect( searchRect );
+        }
+    else
+        {
+        iInputFrame->SetRect( Rect() );
+        }
     }
 
 // ----------------------------------------------------------------------------
@@ -526,7 +689,30 @@
     // this is a workaround
     TRAP_IGNORE( iGotoKeyHandled->EnableL( IsFocused() ) );
     CCoeControl::FocusChanged( aDrawNow );
-    iEditor->SetFocus( IsFocused() );
+    if ( iGotoPaneActive )
+        {
+        iEditor->SetFocus( IsFocused() );
+        }
+    else if ( iSearchEditor && !iFindKeywordMode && iSearchPaneActive )
+        {
+        iSearchEditor->SetFocus( IsFocused() );
+        }
+    }
+
+
+
+// ----------------------------------------------------------------------------
+// CBrowserGotoPane::TextLength
+// ----------------------------------------------------------------------------
+//
+TInt CBrowserGotoPane::SearchTextLength() const
+    {
+    TInt len = 0;
+    if ( iSearchEditor )
+        {
+        len = iSearchEditor->TextLength();
+        }
+    return len;
     }
 
 // ----------------------------------------------------------------------------
@@ -546,20 +732,59 @@
     {
     HBufC *retVal = NULL;
 
-    if ( TextLength() || iFindKeywordMode)
+    if ( TextLength()
+            || SearchTextLength()
+            || iFindKeywordMode)
         {
-        retVal = HBufC::NewL( TextLength() + 1 );
+        if ( iSearchEditor && iSearchPaneActive )
+            {
+            retVal = HBufC::NewL( SearchTextLength() + 1 );
+            }
+        else
+            {
+            retVal = HBufC::NewL( TextLength() + 1 );
+            }
         TPtr ptr = retVal->Des();
-        iEditor->GetText( ptr );
+        if ( iSearchEditor && iSearchPaneActive )
+            {
+            iSearchEditor->GetText( ptr );
+            }
+        else
+            {
+            iEditor->GetText( ptr );
+            }
         ptr.ZeroTerminate();
-        if (!iFindKeywordMode)
-           Util::EncodeSpaces(retVal);
-
+        if ( !iFindKeywordMode && !iSearchPaneActive )
+            {
+            Util::EncodeSpaces(retVal);
+            }
         }
 
     return retVal;
     }
 
+
+// ----------------------------------------------------------------------------
+// CBrowserGotoPane::SetSearchTextL
+// ----------------------------------------------------------------------------
+//
+void CBrowserGotoPane::SetSearchTextL( const TDesC& aTxt )
+    {
+    // for search pane, no default text
+    if ( aTxt == KHttpString || aTxt == KWWWString)
+        {
+        iSearchEditor->SetTextL( &KNullDesC );
+        }
+    else
+        {
+        iSearchEditor->SetTextL( &aTxt );
+        }
+    TInt curPos = SearchTextLength();
+    // Cursor to end, no selection.
+    iSearchEditor->SetSelectionL( curPos, curPos );
+    iSearchEditor->DrawNow();
+    }
+
 // ----------------------------------------------------------------------------
 // CBrowserGotoPane::SetTextL
 // ----------------------------------------------------------------------------
@@ -579,7 +804,14 @@
 //
 void CBrowserGotoPane::SelectAllL()
     {
-    iEditor->SelectAllL();
+    if ( iSearchEditor && iSearchPaneActive )
+        {
+        iSearchEditor->SelectAllL();
+        }
+    else
+        {
+        iEditor->SelectAllL();
+        }
     }
 
 // ----------------------------------------------------------------------------
@@ -799,16 +1031,28 @@
 // ----------------------------------------------------------------------------
 void CBrowserGotoPane::ActivateVKB()
     {
-    if (iEditor && iEditor->TextView())
+    if ( ( iEditor && iEditor->TextView() )
+            || ( iSearchEditor && iSearchEditor->TextView()) )
         {
         // make sure observer is set
         iCoeEnv->SyncNotifyFocusObserversOfChangeInFocus();
 
-        // simulate pointer event to force VKB
+           // simulate pointer event to force VKB
 
-        // first get point at cursor location
-        TInt pos = iEditor->CursorPos();
-        CTextView* textView = iEditor->TextView();
+           // first get point at cursor location
+        TInt pos = 0;
+        CTextView* textView = NULL;
+        if ( iSearchEditor && iSearchPaneActive )
+            {
+            pos = iSearchEditor->CursorPos();
+            textView = iSearchEditor->TextView();
+            }
+        else
+            {
+            pos = iEditor->CursorPos();
+            textView = iEditor->TextView();
+            }
+
         TPoint curPos;
         textView->DocPosToXyPosL(pos, curPos);
 
@@ -816,22 +1060,267 @@
         pe.iPosition = curPos;
 
         pe.iType = TPointerEvent::EButton1Down;
+
         TInt err(KErrNone);
-        TRAP(err, iEditor->HandlePointerEventL(pe));
+        if ( iSearchEditor && iSearchPaneActive )
+            {
+            TRAP(err, iSearchEditor->HandlePointerEventL(pe));
+            }
+        else
+            {
+            TRAP(err, iEditor->HandlePointerEventL(pe));
+            }
+
         if (err != KErrNone)
             {
             return;
             }
 
-        // VKB will only activate is nothing selected
-        iEditor->SetSelectionL(pos,pos);
+        pe.iType = TPointerEvent::EButton1Up;
 
-        pe.iType = TPointerEvent::EButton1Up;
-        if (KErrNone == err)
-           {
-           TRAP_IGNORE(iEditor->HandlePointerEventL(pe));
-           }
+        // VKB will only activate is nothing selected
+        if ( iSearchEditor && iSearchPaneActive )
+            {
+            iSearchEditor->SetSelectionL(pos,pos);
+            TRAP_IGNORE(iSearchEditor->HandlePointerEventL(pe));
+            }
+        else
+            {
+            iEditor->SetSelectionL(pos,pos);
+            TRAP_IGNORE(iEditor->HandlePointerEventL(pe));
+            }
         }
     }
 
+// ----------------------------------------------------------------------------
+// CBrowserGotoPane::ConstructSearchPaneL
+// ----------------------------------------------------------------------------
+void CBrowserGotoPane::ConstructSearchPaneL()
+    {
+
+    TFileName iconFile;
+    TInt iconId = iContentView->ApiProvider().Preferences().GetIntValue( KBrowserSearchIconId );
+    iContentView->ApiProvider().Preferences().GetStringValueL( KBrowserSearchIconPath, KMaxFileName, iconFile );
+
+    // If Icon File Path Changed or Icon Id Changed, Refresh the Icon for Search Pane.
+    // Comparing Icon File path as well, because it may be possible that two different
+    // Icon files have same icon id.
+    if ( iconId != iSearchIconId
+            || iSearchIconFilePath.Compare( iconFile ) != 0 )
+        {
+
+        TInt iconMaskId = iContentView->ApiProvider().Preferences().GetIntValue( KBrowserSearchIconMaskId );
+        // Save IconId
+        iSearchIconId = iconId;
+        // Save Icon File
+        iSearchIconFilePath = iconFile;
+
+        // No Icon file or IconId or IconMaskId set , then it means no search provider is still
+        // selected and set by search application, in that case we use the default icon for Search.
+        if ( ! iconFile.Length()
+                || iconId == -1
+                || iconMaskId == -1 )
+            {
+            iconId = EMbmAvkonQgn_indi_find_glass;
+            iconMaskId = EMbmAvkonQgn_indi_find_glass_mask;
+            iconFile = KAvkonBitmapFile;
+            }
+
+
+        if ( iSearchEditor )
+           {
+           delete iSearchEditor;
+           iSearchEditor = NULL;
+           }
+
+        if ( iSearchInputFrame )
+           {
+           delete iSearchInputFrame;
+           iSearchInputFrame = NULL;
+           }
+
+
+        // iSearchEditor != NULL, implies presence of Search Feature, which can be
+        // used to validate search feature exsistence, avoiding unecessary feature
+        // check calls and need of separate variable.
+        iSearchEditor = new (ELeave) CEikGlobalTextEditor;
+        iSearchInputFrame = CAknInputFrame::NewL(
+                iSearchEditor,
+                EFalse,
+                iconFile,
+                iconId,
+                iconMaskId,
+                CAknInputFrame::EPopupLayout );
+
+        iSearchInputFrame->SetContainerWindowL( *this);
+        AknEditUtils::ConstructEditingL (   iSearchEditor,
+                                              KFavouritesMaxUrlGotoPaneDefine,
+                                              1,
+                                              EAknEditorCharactersLowerCase,
+                                              EAknEditorAlignRight,
+                                              EFalse,
+                                              ETrue,
+                                              EFalse );
+
+        iSearchEditor->SetContainerWindowL( *this );
+        iSearchEditor->SetObserver( this );
+        iSearchEditor->SetBorder( TGulBorder::ENone );
+        iSearchEditor->SetAknEditorCase( EAknEditorLowerCase );
+        iSearchEditor->SetAknEditorInputMode( EAknEditorTextInputMode );
+
+        if (AVKONAPAC)
+            {
+            // Disallow chinese input.
+            iSearchEditor->SetAknEditorAllowedInputModes( EAknEditorTextInputMode |
+                    EAknEditorNumericInputMode );
+            }
+
+        //Search should use EAknEditorFlagDefault as search allows all types of input
+        iSearchEditor->SetAknEditorFlags
+            ( EAknEditorFlagDefault | EAknEditorFlagUseSCTNumericCharmap );
+
+        iSearchEditor->SetAknEditorPermittedCaseModes (   EAknEditorUpperCase |
+            EAknEditorLowerCase );
+
+        iSearchEditor->SetEdwinObserver( iGotoKeyHandled );
+        iSearchEditor->SetSkinBackgroundControlContextL(NULL);
+        iSearchEditor->MakeVisible( ETrue );
+        iSearchInputFrame->MakeVisible( ETrue );
+        // Set the default text if not active//
+        if ( ! iSearchPaneActive )
+            {
+            SetSearchTextL( *iDefaultSearchText );
+            }
+        iSearchInputFrame->ActivateL();
+        }
+
+    }
+
+// ----------------------------------------------------------------------------
+// CBrowserGotoPane::SetGotoPaneActive
+// ----------------------------------------------------------------------------
+void CBrowserGotoPane::SetGotoPaneActiveL()
+    {
+
+    iGotoPaneActive = ETrue;
+    iSearchPaneActive = EFalse;
+
+    if ( iSearchEditor )
+        {
+        iEditor->AddFlagToUserFlags( CEikEdwin::EAvkonDisableVKB );
+        // if searchpane is empty add default text
+        if ( !SearchTextLength() )
+            {
+            SetSearchTextL( *iDefaultSearchText );
+            }
+
+        // if gotopane is empty add default text
+        if ( !TextLength() )
+            {
+            SetTextL( KWWWString );
+            }
+
+        iSearchEditor->SetFocus( EFalse);
+        }
+
+    iEditor->SetFocus( ETrue );
+    CBrowserAppUi::Static()->UpdateCbaL();
+    SetTextModeItalicL();
+    iEditor->SetCursorPosL(iEditor->TextLength(), EFalse);
+    DrawDeferred();
+    }
+
+// ----------------------------------------------------------------------------
+// CBrowserGotoPane::SetSearchPaneActive
+// ----------------------------------------------------------------------------
+void CBrowserGotoPane::SetSearchPaneActiveL()
+    {
+
+    if ( iSearchEditor )
+        {
+        iSearchEditor->AddFlagToUserFlags( CEikEdwin::EAvkonDisableVKB );
+        // if gotopane is empty add default text
+        if ( !TextLength() )
+            {
+            SetTextL( KWWWString );
+            }
+
+        // if searchpane has default text remove it
+        HBufC* text = iSearchEditor->GetTextInHBufL();
+        if ( text )
+            {
+            CleanupStack::PushL( text );
+            if ( !text->Compare( iDefaultSearchText->Des() ) )
+                {
+                SetSearchTextL( KNullDesC );
+                }
+
+            CleanupStack::PopAndDestroy( text );
+            }
+
+        iSearchPaneActive = ETrue;
+        iGotoPaneActive = EFalse;
+        iEditor->SetFocus( EFalse );
+        if ( iBAdaptiveListPopup )
+            iBAdaptiveListPopup->HidePopupL();
+        iSearchEditor->SetFocus( ETrue );
+        iSearchEditor->SetCursorPosL(iSearchEditor->TextLength(), EFalse);
+        CBrowserAppUi::Static()->UpdateCbaL();
+
+        SetTextModeItalicL();
+        DrawDeferred();
+        }
+    }
+
+
+// ----------------------------------------------------------------------------
+// CBrowserBookmarksGotoPane::SetTextModeItalic
+// ----------------------------------------------------------------------------
+void CBrowserGotoPane::SetTextModeItalicL()
+    {
+
+    // Editor Control is laid in a scalable way, so we need to get the correct font
+    // specification for setting CharFormatLayer, We could have used GetNearestFontInTwips,
+    // as done above in SetTextL() but it does not provide correct fonts for editor.
+    // We do not need to set the FontPosture back to EPostureUpright ( Normal ), as it
+    // is automatically handled by AknLayoutUtils::LayoutEdwinScalable called by
+    // iInputFrame->SetRect(), which overwrites all the properties for Editor.
+    if ( iSearchEditor )
+        {
+        TAknTextComponentLayout   editorLayout;
+        TBool apac( AknLayoutUtils::Variant() == EApacVariant && ( CAknInputFrame::EShowIndicators ) );
+        editorLayout    = AknLayoutScalable_Avkon::input_popup_find_pane_t1( apac ? 2 : 0 );
+        TAknTextLineLayout lineLayout = editorLayout.LayoutLine();
+        TInt fontid =  lineLayout.FontId();
+        const CAknLayoutFont *font = AknLayoutUtils::LayoutFontFromId( fontid  );
+
+        TCharFormat charFormat;
+        TCharFormatMask charFormatMask;
+        charFormat.iFontSpec = font->FontSpecInTwips();
+        charFormat.iFontSpec.iFontStyle.SetPosture( EPostureItalic );
+        charFormatMask.SetAttrib(EAttFontTypeface);
+        charFormatMask.SetAttrib(EAttFontHeight);
+        charFormatMask.SetAttrib(EAttFontStrokeWeight);
+        charFormatMask.SetAttrib(EAttFontPosture);
+
+        // Owner ship of charFormatLayer is taken by Editor
+        CCharFormatLayer* charFormatLayerItalics = NULL;
+        CCharFormatLayer* charFormatLayerUpright = NULL;
+        charFormatLayerItalics = CCharFormatLayer::NewL(charFormat,charFormatMask);
+        charFormat.iFontSpec.iFontStyle.SetPosture( EPostureUpright );
+        charFormatLayerUpright = CCharFormatLayer::NewL(charFormat,charFormatMask);
+        if ( iSearchPaneActive   )
+            {
+            iSearchEditor->SetCharFormatLayer(charFormatLayerUpright);
+            iEditor->SetCharFormatLayer(charFormatLayerItalics);
+            }
+        else
+            {
+            iSearchEditor->SetCharFormatLayer(charFormatLayerItalics);
+            iEditor->SetCharFormatLayer(charFormatLayerUpright);
+            }
+        }
+   }
+
+
 //  END OF FILE
--- a/browserui/browser/BrowserAppSrc/BrowserLoadObserver.cpp	Mon Mar 30 12:49:49 2009 +0300
+++ b/browserui/browser/BrowserAppSrc/BrowserLoadObserver.cpp	Fri May 08 08:18:43 2009 +0300
@@ -258,9 +258,7 @@
                 !iApiProvider->ExitInProgress() )
                 {
                 // Go back to bookmarks and close the content view
-                iApiProvider->SetViewToReturnOnClose( 
-                                                KUidBrowserBookmarksViewId );
-                iApiProvider->CloseContentViewL();
+				iApiProvider->ExitBrowser( ETrue );
                 }
             // No content to be shown, go back to where we came from
             else if ( !iRestoreContentFlag  )
--- a/browserui/browser/BrowserAppSrc/BrowserPreferences.cpp	Mon Mar 30 12:49:49 2009 +0300
+++ b/browserui/browser/BrowserAppSrc/BrowserPreferences.cpp	Fri May 08 08:18:43 2009 +0300
@@ -225,6 +225,8 @@
     iAllPreferences.iShortCutFuncZoomIn = NULL;
     iAllPreferences.iShortCutFuncZoomOut = NULL;
     iAllPreferences.iShortCutFuncZoomMode = NULL;
+	iAllPreferences.iSearch = EFalse;
+    iAllPreferences.iService = EFalse;
     }
 
 // ----------------------------------------------------------------------------
@@ -716,6 +718,8 @@
             
     iAllPreferences.iMaxRecentUrlsToShow = GetIntValue( KBrowserNGMaxRecentUrls );
 
+    iAllPreferences.iSearch = GetIntValue( KBrowserSearch );
+    iAllPreferences.iService = GetIntValue( KBrowserServices );
     }
 
 
--- a/browserui/browser/BrowserAppSrc/BrowserWindow.cpp	Mon Mar 30 12:49:49 2009 +0300
+++ b/browserui/browser/BrowserAppSrc/BrowserWindow.cpp	Fri May 08 08:18:43 2009 +0300
@@ -949,6 +949,8 @@
     if( aDraw )
         {
         iBrCtlInterface->DrawNow();
+        CBrowserContentView* cv = iWindowManager->ContentView();
+        cv->UpdateFullScreenL();
         TRAP_IGNORE(Display().StopProgressAnimationL());//also updates title
         }       
     WindowMgr().NotifyObserversL( EWindowActivate, WindowId() );
--- a/browserui/browser/FavouritesInc/BrowserAdaptiveListPopup.h	Mon Mar 30 12:49:49 2009 +0300
+++ b/browserui/browser/FavouritesInc/BrowserAdaptiveListPopup.h	Fri May 08 08:18:43 2009 +0300
@@ -77,7 +77,10 @@
         /**
 		*C++ Constructor
 		*/
-		CBrowserAdaptiveListPopup( CEikEdwin* aGotoPaneEdit, CCoeControl* aParent, TParentType aParentType);
+		CBrowserAdaptiveListPopup( CEikEdwin* aGotoPaneEdit, 
+		        CCoeControl* aParent, 
+		        TParentType aParentType,
+		        TBool aSearchFeature  = EFalse );
 			
 		/**
         * default constructor.
@@ -175,6 +178,8 @@
         HBufC* iUrlSuffixBuf;
         TBool iTouchSupported;
         TInt iMaxRecentUrlsToShow;
+        // shows whether search feature is enabled or not.
+        TBool iSearchFeature; 
     };
 
 #endif  // BROWSERADAPTIVELISTPOPUP_H
--- a/browserui/browser/FavouritesInc/BrowserBookmarksContainer.h	Mon Mar 30 12:49:49 2009 +0300
+++ b/browserui/browser/FavouritesInc/BrowserBookmarksContainer.h	Fri May 08 08:18:43 2009 +0300
@@ -63,11 +63,19 @@
         void SetGotoActiveL();
         
         /**
-        * Deactivate Goto Mode
+        * Activate Search Pane
+        */
+        void SetSearchActiveL();
+        /**
+        * Deactivate Goto Pane
         */
 
 		void SetGotoInactiveL();
 
+		/**
+        * Deactivate Search Pane
+        */
+		void SetSearchInactiveL();
     public:     // access to components
 
          /**
@@ -75,13 +83,24 @@
         * @return The Goto Pane.
         */
         inline CBrowserBookmarksGotoPane* GotoPane() const;
-
-
+		
+        /**
+        * Get the Search Pane.
+        * @return The Search Pane.
+        */
+        inline CBrowserBookmarksGotoPane* SearchPane() const;
+		
         /**
         * Check if we are in Goto Mode
         * @return ETrue if we are in Goto Mode; EFalse otherwise.
         */
         inline TBool GotoPaneActive() const;
+		
+        /**
+        * Check if we are in Search Mode
+        * @return ETrue if we are in Search Mode; EFalse otherwise.
+        */
+        inline TBool SearchPaneActive() const;
         
     public:	    // from CBrowserFavouritesContainer
 
@@ -123,6 +142,11 @@
         TBool IsEditing();
 
         /**
+        * Check if some editing is in progress for Search Pane. 
+        */
+        TBool IsEditingSearch();
+		
+        /**
         * Get tab index belonging to this view.
         * @return The tab index.
         */
@@ -154,6 +178,12 @@
         */
         void HandlePointerEventL(const TPointerEvent& /*aPointerEvent*/);
 
+        /**
+        * HandleResourceChange
+        * From CCoeControl
+        */
+        void HandleResourceChange(TInt aType);
+        
     protected:  // Construct / destruct
 
         /**
@@ -172,6 +202,12 @@
             const TRect& aRect,
             CBrowserFavouritesView& aView );
         
+		/**
+        * Called by ConstructComponentControlsL. 
+        * Leaves on failure.
+        */
+		virtual void ConstructSearchPaneL();
+		
 	protected:  // from CBrowserFavouritesContainer
 
         /**
@@ -196,15 +232,42 @@
         * Goto Pane.
         */
         CBrowserBookmarksGotoPane* iGotoPane;
-        
-        
+		
+        /**
+        * Owned. 
+        * Search Pane.
+        */
+        CBrowserBookmarksGotoPane* iSearchPane;
+		
         /**
         * ETrue if Goto pane is active, EFalse by default
         */
         TBool iGotoPaneActive;
+		
+        /**
+        * ETrue if Search pane is active, EFalse by default
+        */
+        TBool iSearchPaneActive;
         
         TBool iSelectionKeyDownPressed;
         TBool iSelectionKeyLongPress;
+		
+        /**
+        * Default text in search editor
+        */
+        HBufC* iDefaultSearchText;
+        
+        /**
+        * Saves Search Provider Icon Id, 
+        * used for tracking changes to Icon.
+        */
+        TInt iSearchIconId;
+        
+        /**
+        * Saves Search Icon File Path 
+        * used for tracking changes to Icon.
+        */
+        TFileName iSearchIconFilePath;
 	};
 
 #include "BrowserBookmarksContainer.inl"
--- a/browserui/browser/FavouritesInc/BrowserBookmarksContainer.inl	Mon Mar 30 12:49:49 2009 +0300
+++ b/browserui/browser/FavouritesInc/BrowserBookmarksContainer.inl	Fri May 08 08:18:43 2009 +0300
@@ -42,6 +42,23 @@
     return iGotoPaneActive;
     }
 
+// ---------------------------------------------------------
+// CBrowserBookmarksContainer::SearchPane
+// ---------------------------------------------------------
+//
+CBrowserBookmarksGotoPane* CBrowserBookmarksContainer::SearchPane() const
+    {
+    return iSearchPane;
+    }
+
+// ---------------------------------------------------------
+// CBrowserBookmarksContainer::SearchPaneActive
+// ---------------------------------------------------------
+//
+TBool CBrowserBookmarksContainer::SearchPaneActive() const
+    {
+    return iSearchPaneActive;
+    }
 
 #endif
 
--- a/browserui/browser/FavouritesInc/BrowserBookmarksGotoPane.h	Mon Mar 30 12:49:49 2009 +0300
+++ b/browserui/browser/FavouritesInc/BrowserBookmarksGotoPane.h	Fri May 08 08:18:43 2009 +0300
@@ -34,6 +34,17 @@
 class CAknsFrameBackgroundControlContext;
 class CBrowserFavouritesView;
 
+
+// DEFINES
+#ifndef GOTOPANE_POPUPLIST_DISABLE
+#define GOTOPANE_POPUPLIST_DISABLE EFalse
+#endif
+
+#ifndef GOTOPANE_POPUPLIST_ENABLE
+#define GOTOPANE_POPUPLIST_ENABLE ETrue
+#endif
+
+
 // class CBrowserAdaptiveListPopup;
 // CLASS DECLARATION
 
@@ -77,14 +88,28 @@
 
         /**
         * Two-phased constructor. Leaves on failure.
+        * @param aView Pointer to Favourites View 
         * @param aParent Parent control.
-        * @param aIcon Icon to display. If NULL, a default is used.
-        * @param aTextLimit Maximum length of text.
-        * @return The constructed Goto Pane control.
+        * @param aBitmapfile Icon File Path
+        * @param aIconBitmapId Icon to display. 
+        * @param aIconMaskId Icon Mask
+        * @param aPopupListStatus True if the pane uses popuplist,
+        *                         otherwise false.
+        * @param aSearchPaneMode Set true if the pane is a Search pane.
+        * @return The constructed Goto Pane control
         */
         static CBrowserBookmarksGotoPane* NewL
-            ( const CCoeControl& aParent, CBrowserFavouritesView* aView );
+                   ( 
+                   const CCoeControl& aParent,
+                   CBrowserFavouritesView* aView,
+                   const TDesC& aBitmapfile,
+                   TInt aIconBitmapId , 
+                   TInt aIconMaskId , 
+                   TBool aPopupListStatus = GOTOPANE_POPUPLIST_ENABLE,
+                   TBool aSearchPaneMode = EFalse
+                   );
 
+        
         /**
         * Destructor.
         */
@@ -127,6 +152,11 @@
         void SetTextL( const TDesC& aText, TBool aClipToFit = ETrue, TBool aCancelEditing = ETrue );
 
         /**
+        * Set Editor Font Posture to Italic.
+        */
+        void SetTextModeItalicL( );
+        
+        /**
         * Get text; ownership passed. The returned buffer is zero-terminated.
 		* @since 1.2
         * @return Text in a buffer or NULL. Owner is the caller.
@@ -217,20 +247,26 @@
         *
         */
         void HandlePointerEventL(const TPointerEvent& /*aPointerEvent*/);
+		
+        /**
+        * Sets/Unsets Virtual Keyboard Flag.
+        * @param aVKBFlag - ETrue sets the flag, Unsets the flag if EFalse. 
+        */
+        void SetVKBFlag( TBool aVKBFlag );
        
     protected:  // Construct / destruct
 
         /**
         * Constructor.
         */
-        CBrowserBookmarksGotoPane(CBrowserFavouritesView* aView);
+        CBrowserBookmarksGotoPane(CBrowserFavouritesView* aView, TBool aSearchPaneMode );
 
         /**
         * Second-phase constructor. Leaves on failure.
         * @param aParent Parent control.
         */
-        void ConstructL
-            ( const CCoeControl& aParent );
+        void ConstructL( const CCoeControl& aParent, const TDesC& aBitmapfile, TInt aIconBitmapId, 
+                TInt aIconMaskId, TBool aPopupListStatus );
 
     protected:  // from CCoeControl
 
@@ -247,7 +283,10 @@
         */
         inline void SetEditingL( TBool aEditing );
 
-        void ActivateVKB();
+        /**
+        * Activates Virtual Keyboard.
+        */
+        void ActivateVkbL();
 
     private:    // data
 		CBrowserFavouritesView* iView; //Not owned.
@@ -268,6 +307,10 @@
         CBrowserAdaptiveListPopup* iBAdaptiveListPopup;
         CAknsListBoxBackgroundControlContext* iSkinContext;
         CAknsFrameBackgroundControlContext* iInputContext;
+        // If the control is in Search Pane Mode.
+        TBool iSearchPaneMode;
+        // Default text in search editor. Owned
+        HBufC* iDefaultSearchText;
     };
 
 #include "BrowserBookmarksGotoPane.inl"
--- a/browserui/browser/FavouritesSrc/BrowserAdaptiveListPopup.cpp	Mon Mar 30 12:49:49 2009 +0300
+++ b/browserui/browser/FavouritesSrc/BrowserAdaptiveListPopup.cpp	Fri May 08 08:18:43 2009 +0300
@@ -206,8 +206,10 @@
 // CBrowserAdaptiveListPopup::CBrowserAdaptiveListPopup()
 // ---------------------------------------------------------
 //
-CBrowserAdaptiveListPopup::CBrowserAdaptiveListPopup( CEikEdwin* aGotoPaneEdit, CCoeControl* aParent, TParentType aParentType):
-    iEditor( aGotoPaneEdit ), iParent( aParent ), iParentType( aParentType )
+CBrowserAdaptiveListPopup::CBrowserAdaptiveListPopup( CEikEdwin* aGotoPaneEdit, 
+        CCoeControl* aParent, TParentType aParentType, TBool aSearchFeature): 
+        iEditor( aGotoPaneEdit ), iParent( aParent ),
+        iParentType( aParentType ), iSearchFeature( aSearchFeature )
     {
     iTouchSupported = AknLayoutUtils::PenEnabled();
     }
@@ -767,6 +769,14 @@
                 }
             else
                 {
+                if(  iSearchFeature )
+                    {
+                    if( iList->CurrentItemIndex() == 0 )
+                        {
+                        resp = EKeyWasConsumed;
+                        return resp;
+                        }
+                    }
                 resp=iList->OfferKeyEventL( aKeyEvent, aType );
                 }
             if ( currIndex > -1 )
@@ -839,6 +849,17 @@
                   || aKeyEvent.iCode == EStdKeyDevice12 )    //   : Extra KeyEvent supports diagonal event simulator wedge
             {
             resp = EKeyWasConsumed;
+            if(  iSearchFeature )
+                {
+                if ( iPrevItem <= 0 )
+                    {
+                    if(! iList->HighLightEnabled() )
+                        {
+                        resp = EKeyWasNotConsumed;
+                        return resp;
+                        }
+                    }
+                }
             //it was the last item
             if ( iPrevItem == 0 )
                 {
@@ -1139,7 +1160,7 @@
     CleanupStack::PopAndDestroy(fp);
 
     MAknsSkinInstance* skinInstance = AknsUtils::SkinInstance();
-    AknsUtils::CreateIconL( skinInstance,
+    AknsUtils::CreateIconLC( skinInstance,
                                            KAknsIIDQgnPropWmlFolderAdap,
                                            newIconBmp,
                                            newIconMaskBmp,
@@ -1147,10 +1168,11 @@
                                            EMbmBrowserQgn_prop_wml_folder_adap,
                                            EMbmBrowserQgn_prop_wml_folder_adap_mask);
     newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp);
+    CleanupStack::Pop(2);
     CleanupStack::PushL(newIcon);
     icons->AppendL( newIcon );
     CleanupStack::Pop(newIcon);
-    AknsUtils::CreateIconL( skinInstance,
+    AknsUtils::CreateIconLC( skinInstance,
                                            KAknsIIDQgnPropWmlBmAdap,
                                            newIconBmp,
                                            newIconMaskBmp,
@@ -1158,6 +1180,7 @@
                                            EMbmBrowserQgn_prop_wml_bm_adap,
                                            EMbmBrowserQgn_prop_wml_bm_adap_mask);
     newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp);
+    CleanupStack::Pop(2);
     CleanupStack::PushL(newIcon);
     icons->AppendL( newIcon );
     CleanupStack::Pop(newIcon);
--- a/browserui/browser/FavouritesSrc/BrowserBookmarksContainer.cpp	Mon Mar 30 12:49:49 2009 +0300
+++ b/browserui/browser/FavouritesSrc/BrowserBookmarksContainer.cpp	Fri May 08 08:18:43 2009 +0300
@@ -22,9 +22,11 @@
 
 #include <AknViewAppUi.h>
 #include <aknsfld.h>
+#include <avkon.mbg>
 #include <BrowserNG.rsg>
 #include <FavouritesItem.h>
 #include <FeatMgr.h>
+#include "BrowserBookmarksView.h"
 
 #include "CommonConstants.h"
 #include "BrowserFavouritesView.h"
@@ -41,6 +43,8 @@
 #endif // __SERIES60_HELP
 #include "Logger.h"
 #include "e32event.h"
+#include "BrowserUiSDKCRKeys.h"
+#include <StringLoader.h>
 
 // CONSTANTS
 
@@ -72,6 +76,8 @@
 CBrowserBookmarksContainer::~CBrowserBookmarksContainer()
     {
     delete iGotoPane;
+    delete iSearchPane;
+    delete iDefaultSearchText;
     }
 
 // ---------------------------------------------------------
@@ -85,15 +91,93 @@
        	iGotoPaneActive = ETrue;
 
     	Listbox()->UpdateFilterL();	
-    	
+    	if( iSearchPane )
+    	    {
+    	    iGotoPane->SetVKBFlag( EFalse );
+    	    // Check for Search Configuration Changes //
+    	    if( View().ApiProvider().Preferences().GetIntValue( KBrowserSearchIconId )
+    	            != iSearchIconId )
+                {   
+    	        ConstructSearchPaneL();
+                }
+    	    
+            iSearchPane->SetFocus( EFalse );
+        	// only one editor can be active at a time //
+        	iSearchPaneActive = EFalse;
+        	// we still need to display search, when showing for first time //
+        	iSearchPane->MakeVisible(ETrue);
+            iSearchPane->CancelEditingL();
+    	    }
+            
     	// redraw
     	SizeChanged();
     	
-    	iGotoPane->BeginEditingL();
-    	
+        // It is important to set the Text and Italic property after SizeChanged, because
+        // iInputFrame->SetRect() event on GoTo/Search Pane calls the scalable version 
+        // ( AknLayoutUtils::LayoutEdwinScalable ) which overwrites all the properties for
+        // Char and Para Formats.
+        if( iSearchPane )
+            {
+            iSearchPane->SetTextModeItalicL();
+            HBufC* text = iSearchPane->GetTextL();
+            CleanupStack::PushL( text );
+            if ( !text->Length() )
+                {
+                iSearchPane->SetTextL( *iDefaultSearchText );
+                }
+            CleanupStack::PopAndDestroy( text );
+            }
+        
+        iGotoPane->BeginEditingL();
        	DrawDeferred();      	
     	}
     }
+    	
+// ---------------------------------------------------------
+// CBrowserBookmarksContainer::SetSearchActiveL
+// ---------------------------------------------------------
+//
+void CBrowserBookmarksContainer::SetSearchActiveL()
+    {    
+    if( ! iSearchPaneActive )
+        {
+        // Check for Search Configuration Changes //
+        if( View().ApiProvider().Preferences().GetIntValue( KBrowserSearchIconId ) 
+                != iSearchIconId )
+            {
+            ConstructSearchPaneL();
+            }
+            
+        iSearchPane->SetVKBFlag( EFalse );
+        iSearchPane->SetFocus( ETrue );
+        iSearchPaneActive = ETrue;
+        
+        Listbox()->UpdateFilterL();
+        // only one editor can be active at a time
+        iGotoPaneActive = EFalse;
+        iGotoPane->MakeVisible(ETrue);
+        iGotoPane->SetFocus( EFalse );        
+        iGotoPane->CancelEditingL();
+        
+        // redraw
+        SizeChanged();
+        
+        // Not Focused, so set the current Text Mode to italics.
+        iGotoPane->SetTextModeItalicL();
+        // if gotopane is empty add default text
+        HBufC* text = iGotoPane->GetTextL();
+        CleanupStack::PushL( text );
+        if ( !text->Length() )
+            {
+            iGotoPane->SetTextL( KWWWString );
+            }
+        CleanupStack::PopAndDestroy( text );
+        
+        iSearchPane->BeginEditingL();
+        DrawDeferred();
+        }
+       
+    }
 
 
 // ---------------------------------------------------------
@@ -103,8 +187,18 @@
 
 void CBrowserBookmarksContainer::SetGotoInactiveL()
 	{
-	if(iGotoPaneActive)
+	if( iGotoPaneActive || iSearchPaneActive )
 		{
+		
+		  if( iSearchPane )
+            {
+            /* In Search Feature we have to move between the editors preserving the 
+             * text added, clear the text when cancel is pressed.
+             */
+            iGotoPane->SetTextL( KNullDesC , ETrue );
+            SetSearchInactiveL();
+            }
+		// Deactivate GoTo Pane
 		iGotoPaneActive = EFalse;
 			
 		// Deactivate GoTo Pane
@@ -119,13 +213,21 @@
 		}
 	}
 	
+void CBrowserBookmarksContainer::SetSearchInactiveL()
+    {
+    iSearchPaneActive = EFalse; 
+    iSearchPane->SetTextL( KNullDesC , ETrue);
+    iSearchPane->MakeVisible( EFalse );
+    iSearchPane->CancelEditingL();
+    }
+
 // ---------------------------------------------------------
 // CBrowserBookmarksContainer::CountComponentControls
 // ---------------------------------------------------------
 //
 TInt CBrowserBookmarksContainer::CountComponentControls() const
     {
-    return (Listbox() ? 1 : 0) + (iGotoPane ? 1 : 0);
+    return (Listbox() ? 1 : 0) + (iGotoPane ? 1 : 0) + (iSearchPane? 1 : 0) ;
     }
 
 // ---------------------------------------------------------
@@ -146,7 +248,10 @@
             {
             return iGotoPane;
             }
-
+        case 2:
+            {
+            return iSearchPane;
+            }
         default:
             {
             return NULL;
@@ -164,16 +269,53 @@
     TInt unfilteredNumberOfItems = Listbox()->UnfilteredNumberOfItems();
     
     // if goto pane is active
-    if( iGotoPaneActive )
+    if( iGotoPaneActive || iSearchPaneActive )
     	{
-        	// Enable / disable line in Goto Pane (hide if listbox is empty).
+    	if( iSearchPane )
+    	    {
+    	    TAknWindowLineLayout findPane = AknLayout::find_pane();
+        	
+    	    // Enable / disable line in Goto Pane (hide if listbox is empty).
         	iGotoPane->SetLineState( unfilteredNumberOfItems > 0 );
         	
+        	TAknWindowLineLayout listLayout = AknLayout::list_gen_pane( 1 );
+        	
+        	TRect listBoxRect = AknLayoutUtils::RectFromCoords( rect,listLayout.il, 
+        	        listLayout.it, listLayout.ir, listLayout.ib, listLayout.iW, listLayout.iH);
+        	
+        	/* Now we need to make room for both Goto and Search Pane.
+        	 * No layout specification was suitable for this case, so 
+        	 * substracting the height of pane.
+        	 */ 
+        	listBoxRect.iBr.iY -= findPane.iH;
+        	
         	// In Goto Mode, the listbox is laid out leaving space for Goto Pane.
-        	AknLayoutUtils::LayoutControl( Listbox(), rect, AknLayout::list_gen_pane( 1 ));
+        	Listbox()->SetRect( listBoxRect );
+        	
+        
+        	// Now Lay out Search Pane as if it was the old Find Pane.
+            AknLayoutUtils::LayoutControl( iSearchPane, rect, findPane );
         	
-        	// Lay out Goto Pane as if it was the old Find Pane.
-        	AknLayoutUtils::LayoutControl( iGotoPane, rect, AknLayout::find_pane() );
+        	TRect gotoRect = AknLayoutUtils::RectFromCoords( rect,findPane.il, findPane.it, 
+        	        findPane.ir, findPane.ib, findPane.iW, findPane.iH);
+        	
+        	// Calculate the new position for GoToPane.
+        	gotoRect.iTl.iY -= ( findPane.iH );
+        	gotoRect.iBr.iY -= ( findPane.iH );
+        	iGotoPane->SetRect( gotoRect );
+        	
+    	    }
+    	else
+    	    {
+    	    // Enable / disable line in Goto Pane (hide if listbox is empty).
+            iGotoPane->SetLineState( unfilteredNumberOfItems > 0 );
+             
+            // In Goto Mode, the listbox is laid out leaving space for Goto Pane.
+            AknLayoutUtils::LayoutControl( Listbox(), rect, AknLayout::list_gen_pane( 1 ));
+             
+            // Lay out Goto Pane as if it was the old Find Pane.
+            AknLayoutUtils::LayoutControl( iGotoPane, rect, AknLayout::find_pane() );
+    	    }
     	}
 	else
     	{
@@ -257,11 +399,11 @@
 	    }
 		// If the Goto Pane exists and we're not fetching, then decide
 		// if we should pass keystroke to it
-	if(iGotoPane)
+	if(iGotoPane && !CBrowserAppUi::Static()->Fetching())
 		{
 		// If the key so far hadn't been consumed or if the pane is already active,
 		// pass the keystroke on
-		if( (result == EKeyWasNotConsumed) || (iGotoPaneActive) )
+		if( (result == EKeyWasNotConsumed) || iGotoPaneActive || iSearchPaneActive )
 			{			
         	// Goto pane has highest priority; if it's active, arrow keys go there.
         	// If fetching is in progress, no key events are offered, to prevent it
@@ -269,7 +411,7 @@
         	
         	// Enter Key  now handled through HandleCommand in BrowserBookmarksView like MSK
 			// This change affects the enter key on the QWERTY keyboard when we run emulator
-        	if(EStdKeyEnter == aKeyEvent.iScanCode && EEventKeyUp == aType && AknLayoutUtils::MSKEnabled() && iGotoPaneActive )
+        	if(EStdKeyEnter == aKeyEvent.iScanCode && EEventKeyUp == aType && AknLayoutUtils::MSKEnabled() && (iGotoPaneActive || iSearchPaneActive ))
 				{
 				CEikButtonGroupContainer* myCba = CEikButtonGroupContainer::Current();
 				if(myCba != NULL)
@@ -280,13 +422,51 @@
 					}
 				}
 			else
-				{
-				result = iGotoPane->OfferKeyEventL( keyEvent, aType );	
+			    {
+			    if( iSearchPane )
+			        {
+			        // Process separately for Search Feature //
+			        if( iGotoPaneActive )
+			            {
+                        result = iGotoPane->OfferKeyEventL( keyEvent, aType );
+			            }
+                    else 
+                        {
+                        result = iSearchPane->OfferKeyEventL( keyEvent, aType );
+                        }
+ 			        }
+			    else
+			        result = iGotoPane->OfferKeyEventL( keyEvent, aType );
 				}
-        
+        	
+        	if( iSearchPane )
+        	    {
+            	if( ( iGotoPaneActive || iSearchPaneActive) && result == EKeyWasNotConsumed ) 
+                    {
+                    
+                    if(  aKeyEvent.iCode == EKeyUpArrow )
+                        {
+                        result = EKeyWasConsumed;
+                        if( iSearchPaneActive )
+                            {
+                            SetGotoActiveL();
+                            iGotoPane->SetVKBFlag( ETrue );
+                            }
+                        }
+                    if( aKeyEvent.iCode == EKeyDownArrow )
+                        {
+                        result = EKeyWasConsumed;
+                        if( iGotoPaneActive )
+                            {
+                            SetSearchActiveL();
+                            iSearchPane->SetVKBFlag( ETrue );
+                            }
+                        }
+                    }
+        	    }
+            
 			// if key is consumed, goto pane was not active, make it active now.
-        	if(result == EKeyWasConsumed &&
-        		!iGotoPaneActive)
+        	if(result == EKeyWasConsumed && (!iGotoPaneActive && !iSearchPaneActive))
         		{
         		SetGotoActiveL();	
         		}
@@ -373,6 +553,20 @@
     }
 
 // ---------------------------------------------------------
+// CBrowserBookmarksContainer::IsEditingSearch
+// ---------------------------------------------------------
+//
+TBool CBrowserBookmarksContainer::IsEditingSearch()
+    {
+    TBool editing = EFalse;
+    if( iSearchPane )
+        {
+        editing = iSearchPane->IsEditing();
+        }
+    return editing;
+    }
+
+// ---------------------------------------------------------
 // CBrowserBookmarksContainer::TabIndex
 // ---------------------------------------------------------
 //
@@ -404,7 +598,7 @@
 // ---------------------------------------------------------
 //
 CBrowserBookmarksContainer::CBrowserBookmarksContainer()
-: iGotoPaneActive( EFalse )
+: iGotoPaneActive( EFalse ),iSearchPaneActive(EFalse)
     {
     }
 
@@ -423,8 +617,17 @@
     // Construct Goto Pane.
     
     //pass view to bookmarks goto pane
-    iGotoPane = CBrowserBookmarksGotoPane::NewL( *this, &aView );
+    iGotoPane = CBrowserBookmarksGotoPane::NewL( *this, &aView, KAvkonBitmapFile,
+            EMbmAvkonQgn_indi_find_goto,
+            EMbmAvkonQgn_indi_find_goto_mask);
     iGotoPane->SetFocus( EFalse );
+    
+    if( View().ApiProvider().Preferences().SearchFeature() )
+        {
+        ConstructSearchPaneL();
+        iSearchPane->SetFocus( EFalse );
+        iDefaultSearchText = StringLoader::LoadL( R_IS_WEB_SEARCH );
+        }
     }
 
 // ---------------------------------------------------------
@@ -459,6 +662,10 @@
         {
         iGotoPane->SetFocus( IsFocused(), aDrawNow );
         }
+    else if( IsEditingSearch() )
+        {
+        iSearchPane->SetFocus( IsFocused(), aDrawNow );
+        }
     else if ( Listbox() && Listbox()->IsVisible() )
         {
         Listbox()->SetFocus( IsFocused(), aDrawNow );
@@ -478,10 +685,48 @@
 		//
 		// otherwise, if it falls within the listbox's rect
 		//
-        if (iGotoPaneActive && iGotoPane)
-			{		
-    		iGotoPane->HandlePointerEventL(aPointerEvent);
-			}
+        
+        // Now we have two different panes so we have to check explicitly before passing controls
+        // to any panes.
+        if( iGotoPane && ( iGotoPaneActive || iSearchPaneActive) )
+            {
+            if( iSearchPane )//implies presence of search feature.
+                {
+                 if( iGotoPane->Rect().Contains( aPointerEvent.iPosition) )
+                     {
+                     if( iGotoPaneActive )
+                         {
+                         iGotoPane->HandlePointerEventL(aPointerEvent);
+                         }
+                     else
+                         {
+                         SetGotoActiveL();                         
+                         }
+                     iGotoPane->SetVKBFlag( ETrue );                        
+                     }
+                 else if( iSearchPane->Rect().Contains( aPointerEvent.iPosition) )
+                     {
+                     if( iSearchPaneActive )
+                         {
+                         iSearchPane->HandlePointerEventL(aPointerEvent);
+                         }
+                     else
+                         {
+                         SetSearchActiveL();                         
+                         }
+                     iSearchPane->SetVKBFlag( ETrue );                     
+                     }
+                 else
+                     {
+                     CBrowserAppUi::Static()->ActiveView()->HandleCommandL(EWmlCmdGotoPaneCancel);
+                     SetGotoInactiveL();
+                     }
+                }
+             else
+                 {
+                 iGotoPane->HandlePointerEventL(aPointerEvent);
+                 }
+            }
         else
         	{
     		// normally, pass all pointer events down to the listbox
@@ -490,4 +735,92 @@
         }
     }
 
+// ----------------------------------------------------------------------------
+// CBrowserBookmarksContainer::ConstructSearchPaneL
+// ----------------------------------------------------------------------------
+//
+
+void CBrowserBookmarksContainer::ConstructSearchPaneL()
+    {
+    TFileName iconFile;
+    MPreferences& preferences = View().ApiProvider().Preferences();
+    
+    TInt iconId = preferences.GetIntValue( KBrowserSearchIconId );
+    // Get the Search Icon File Path.
+    preferences.GetStringValueL( KBrowserSearchIconPath, KMaxFileName, iconFile );
+      
+    // If Icon File Path Changed or Icon Id Changed, Refresh the Icon for Search Pane.
+    // Comparing Icon File path as well, because it may be possible that two different 
+    // Icon files have same icon id.
+    if( iconId != iSearchIconId  
+            || iSearchIconFilePath.Compare( iconFile ) != 0 )
+        {
+          
+        TInt iconMaskId = preferences.GetIntValue( KBrowserSearchIconMaskId );
+
+        // Save IconId 
+        iSearchIconId = iconId;
+        // Save Icon File
+        iSearchIconFilePath = iconFile;
+
+        
+        // No Icon file or IconId or IconMaskId set , then it means no search provider is still 
+        // selected and set by search application, in that case we use the default icon for Search.
+        if( ! iconFile.Length() 
+                || iconId == -1
+                || iconMaskId == -1 )
+            {
+            iconId = EMbmAvkonQgn_indi_find_glass;
+            iconMaskId = EMbmAvkonQgn_indi_find_glass_mask;
+            iconFile = KAvkonBitmapFile;
+            }
+                 
+        if( iSearchPane )
+            {
+            delete iSearchPane;
+            iSearchPane = NULL;
+            }
+       
+        
+        // iSearchPane != NULL, implies presence of search feature, hence it can be
+        // used to validate search feature avoiding repetative calls to utils and
+        // avoiding need of separate variable.
+        iSearchPane = CBrowserBookmarksGotoPane::NewL( *this, 
+                            &(View()), 
+                            iconFile, 
+                            iconId,
+                            iconMaskId,
+                            GOTOPANE_POPUPLIST_DISABLE,
+                            ETrue
+                            );
+       
+        CBrowserBookmarksView* bookmarkView = REINTERPRET_CAST( CBrowserBookmarksView* ,  &( View() ));
+        // Set Pane observer
+        iSearchPane->SetGPObserver( bookmarkView );
+        }
+    }
+
+// ----------------------------------------------------------------------------
+// CBrowserBookmarksContainer::HandleResourceChange
+// ----------------------------------------------------------------------------
+//
+void CBrowserBookmarksContainer::HandleResourceChange(TInt aType)
+    {
+    CBrowserFavouritesContainer::HandleResourceChange( aType);
+    if( aType == KEikDynamicLayoutVariantSwitch)
+        {
+        // If search feature exsist
+        if( iSearchPane  ) 
+            {
+            if( iSearchPaneActive )
+                {
+                iGotoPane->SetTextModeItalicL( );
+                }
+            else
+                {
+                iSearchPane->SetTextModeItalicL( );
+                }
+            }
+        }
+    }
 // End of File
--- a/browserui/browser/FavouritesSrc/BrowserBookmarksGotoPane.cpp	Mon Mar 30 12:49:49 2009 +0300
+++ b/browserui/browser/FavouritesSrc/BrowserBookmarksGotoPane.cpp	Fri May 08 08:18:43 2009 +0300
@@ -11,9 +11,9 @@
 *
 * Contributors:
 *
-* Description: 
+* Description:
 *      Implementation of CBrowserBookmarksGotoPane.
-*      
+*
 *
 */
 
@@ -30,13 +30,13 @@
 #include <AknsFrameBackgroundControlContext.h>
 
 #include <BrowserNG.rsg>
-#include <Avkon.mbg>
+
 #include <AknsUtils.h>
 #include <AppApacLayout.cdl.h>
 #include <AppLayout.cdl.h>
 #include <AknLayout.cdl.h>
 
-#include <centralrepository.h> 
+#include <centralrepository.h>
 #include <AknFepInternalCRKeys.h>
 #include <PtiDefs.h>
 
@@ -54,9 +54,15 @@
 #include <eikpriv.rsg>
 #include <BARSREAD.H>
 
+#include <AknLayout2ScalableDef.h>
+#include <aknlayoutfont.h>
+#include <aknlayoutscalable_avkon.cdl.h>
+
+#include <StringLoader.h>
 #include <skinlayout.cdl.h>
 using namespace SkinLayout;
 
+// CONSTANTS
 const TInt EUseSkinContext = 0x01;
 const TInt EParentAbsolute = 0x02;
 const TInt KRightSpace = 10; //space in pixels left at the end of text editor.
@@ -71,12 +77,20 @@
 // ---------------------------------------------------------
 //
 CBrowserBookmarksGotoPane* CBrowserBookmarksGotoPane::NewL
-( const CCoeControl& aParent, CBrowserFavouritesView* aView )
-    { 
+        (
+        const CCoeControl& aParent,
+        CBrowserFavouritesView* aContentView,
+        const TDesC& aBitmapfile,
+        TInt aIconBitmapId,
+        TInt aIconMaskId,
+        TBool aPopupListStatus,
+        TBool aSearchPaneMode
+        )
+    {
     CBrowserBookmarksGotoPane* gotoPane =
-        new(ELeave) CBrowserBookmarksGotoPane(aView);
+        new(ELeave) CBrowserBookmarksGotoPane(aContentView, aSearchPaneMode);
     CleanupStack::PushL( gotoPane );
-    gotoPane->ConstructL( aParent );
+    gotoPane->ConstructL( aParent, aBitmapfile, aIconBitmapId, aIconMaskId, aPopupListStatus );
     CleanupStack::Pop();    // gotoPane
     return gotoPane;
     }
@@ -86,12 +100,13 @@
 // ---------------------------------------------------------
 //
 CBrowserBookmarksGotoPane::~CBrowserBookmarksGotoPane()
-    {   
+    {
     delete iEditor;
     delete iInputFrame;
     delete iSkinContext;
     delete iInputContext;
     delete iBAdaptiveListPopup;
+    delete iDefaultSearchText;
     }
 
 // ---------------------------------------------------------
@@ -102,17 +117,56 @@
     {
     if ( !iFrozen )
         {
-       	// set the default string, make visible, start editing
-       	SetTextL( KWWWString );                   
-       	MakeVisible( ETrue );
-       	SetEditingL( ETrue );
-        if (AknLayoutUtils::PenEnabled())
+        // If its a GoTo Pane Mode.
+        if( !iSearchPaneMode )
+            {
+            if( iView->ApiProvider().Preferences().SearchFeature() )
+                {
+                // If there is no text, then we need to place back
+                // the default text, else preserve the previously
+                // typed text.
+                HBufC* text = iEditor->GetTextInHBufL();
+                if( !text )
+                    {
+                    SetTextL( KWWWString );
+                    }
+                else
+                    {
+                    delete text;
+                    }
+                }
+            else
+                SetTextL( KWWWString );
+            }
+        else
             {
-            ActivateVKB();
+            if( iView->ApiProvider().Preferences().SearchFeature()  )
+                {
+                //Clear searchpane on focus if default text is there
+                HBufC* text = iEditor->GetTextInHBufL();
+                if ( text )
+                    {
+                    CleanupStack::PushL( text );
+                    if ( !text->Compare( iDefaultSearchText->Des() ) )
+                        {
+                        iEditor->SetTextL( &KNullDesC );
+                        }
+                    CleanupStack::PopAndDestroy( text );
+                    }
+                }
+            }
+
+        MakeVisible( ETrue );
+        SetEditingL( ETrue );
+        iEditor->SetCursorPosL( iEditor->TextLength(), EFalse );
+        if (AknLayoutUtils::PenEnabled()
+                &&  ( !iView->ApiProvider().Preferences().SearchFeature())  )
+            {
+            ActivateVkbL();
             }
         }
     }
-    
+
 // ---------------------------------------------------------
 // CBrowserBookmarksGotoPane::CancelEditingL()
 // ---------------------------------------------------------
@@ -121,16 +175,21 @@
     {
     if ( !iFrozen )
         {
+        // Clear selection when focus moved, only
+        // affects when both the editors are visible.
+        // no need for condition.
+        TInt pos = iEditor->CursorPos();
+        iEditor->SetSelectionL(pos,pos);
         SetEditingL( EFalse );
 
-		// Cancel Adaptive List popup if its active
-		if( NULL != iBAdaptiveListPopup)
-			{
-		 	iBAdaptiveListPopup->SetDirectoryModeL( ETrue );
-		 	iBAdaptiveListPopup->HidePopupL();
-		 	}
+        // Cancel Adaptive List popup if its active
+        if ( NULL != iBAdaptiveListPopup)
+            {
+            iBAdaptiveListPopup->SetDirectoryModeL( ETrue );
+            iBAdaptiveListPopup->HidePopupL();
+            }
         }
-    
+
     }
 
 // ---------------------------------------------------------
@@ -140,9 +199,9 @@
 void CBrowserBookmarksGotoPane::SetTextL
 ( const TDesC& aText, TBool aClipToFit /*=ETrue*/, TBool aCancelEditing )
     {
-    
+
     CFbsFont * font = NULL;
-    	
+
     if ( !iFrozen )
         {
         if ( aClipToFit && aText.Length() )
@@ -156,14 +215,14 @@
                 {
                 //The Textview does not use the iConEnv->NormalFont() for drawing so we can not use it for measurement.
                 //Textview uses the default char format font for drawing. See bug: EHCN-6U59SN
-	            TBuf<KMaxTypefaceNameLength> typeface;
-	            CEikonEnv::Static()->ReadResource(typeface,R_EIK_DEFAULT_CHAR_FORMAT_TYPEFACE);
-	            TResourceReader reader;
-	            CEikonEnv::Static()->CreateResourceReaderLC(reader,R_EIK_DEFAULT_CHAR_FORMAT_HEIGHT);
+                TBuf<KMaxTypefaceNameLength> typeface;
+                CEikonEnv::Static()->ReadResource(typeface,R_EIK_DEFAULT_CHAR_FORMAT_TYPEFACE);
+                TResourceReader reader;
+                CEikonEnv::Static()->CreateResourceReaderLC(reader,R_EIK_DEFAULT_CHAR_FORMAT_HEIGHT);
                 TInt height =  reader.ReadInt16();
-	            CleanupStack::PopAndDestroy(); // reader
-                
-	            TFontSpec fontSpec(typeface, height);
+                CleanupStack::PopAndDestroy(); // reader
+
+                TFontSpec fontSpec(typeface, height);
                 CEikonEnv::Static()->ScreenDevice()->GetNearestFontInTwips((CFont*&)font, fontSpec);
 
                 AknTextUtils::ClipToFit
@@ -178,41 +237,48 @@
             }
         else
             {
-			if ( aText.Length() )
-				{
-				iEditor->SetTextL( &aText );
-				}
-			else
-				{   
-    			TBufC<16> buf(KAddressText);
-    			HBufC* tmpBuf = NULL;
-    			tmpBuf = buf.AllocLC();
-    			iEditor->SetTextL( tmpBuf );
-    			CleanupStack::PopAndDestroy(); // tmpBuf
-				}
+            if( iSearchPaneMode )
+                {
+                iEditor->SetTextL( &aText );
+                }
+            else
+                {
+                if ( aText.Length() )
+                    {
+                    iEditor->SetTextL( &aText );
+                    }
+                else
+                    {
+                    TBufC<16> buf(KAddressText);
+                    HBufC* tmpBuf = NULL;
+                    tmpBuf = buf.AllocLC();
+                    iEditor->SetTextL( tmpBuf );
+                    CleanupStack::PopAndDestroy(); // tmpBuf
+                    }
+                }
             }
-	
+
         iEditor->SetCursorPosL( iEditor->TextLength(), EFalse );
         if ( !iEverFocused )
-			{
-			iEditor->SetFocus( ETrue );
-			}
+            {
+            iEditor->SetFocus( ETrue );
+            }
 
-		if ( !iEverFocused )
-			{
-			iEditor->SetFocus( IsFocused() );
-			iEverFocused = ETrue;
-			}
-			SetEditingL( !aCancelEditing );
-			DrawDeferred();
+        if ( !iEverFocused )
+            {
+            iEditor->SetFocus( IsFocused() );
+            iEverFocused = ETrue;
+            }
+            SetEditingL( !aCancelEditing );
+            DrawDeferred();
         }
-        
+
       // release font if it was used
-      if(font != NULL) 
-      	{
-       	CEikonEnv::Static()->ScreenDevice()->ReleaseFont(font);
-      	}
-        
+      if (font != NULL)
+          {
+          CEikonEnv::Static()->ScreenDevice()->ReleaseFont(font);
+          }
+
     }
 
 // ---------------------------------------------------------
@@ -225,8 +291,10 @@
     TPtr ptr = text->Des();
     iEditor->GetText( ptr );
     ptr.ZeroTerminate();
-    
-    Util::EncodeSpaces(text);
+    if( !iSearchPaneMode )
+        {
+        Util::EncodeSpaces(text);
+        }
 
     return text;
     }
@@ -238,8 +306,8 @@
 void CBrowserBookmarksGotoPane::SetGPObserver
 ( MBookmarksGotoPaneObserver* aObserver )
     {
-    __ASSERT_DEBUG( !iGPObserver, \
-        Util::Panic( Util::EGotoPaneObserverAlreadySet ) );
+    /*__ASSERT_DEBUG( !iGPObserver, \
+        Util::Panic( Util::EGotoPaneObserverAlreadySet ) );*/
     iGPObserver = aObserver;
     }
 
@@ -256,59 +324,102 @@
 // CBrowserBookmarksGotoPane::OfferKeyEventL
 // ---------------------------------------------------------
 //
+// Note:
+//
+//   Below, there are several keys in the ISO-Latin-1 range that we
+//   exclude from use in a URL:
+//
+//     - EStdKeyDevice10 0xC9  E-accent acute         Northwest
+//     - EStdKeyDevice11 0xCA  E-accent circumflex    Northeast
+//     - EStdKeyDevice12 0xCB  E-umlaut               Southeast
+//     - EStdKeyDevice13 0xCC  I-accent grave         Southwest
+//
+//   While these ought to be vaguely acceptable in certain parts of a URL,
+//   they are also used by some navigation drivers as our "diagonal event"
+//   codes so turn up as the user navigates the cursor. Because of this,
+//   today, we prevent them from being inserted as characters. There's
+//   a second set of code ranges (in the 0x8XXX range) that's also defined
+//   for these events; if the driver writers ever manage to get all of
+//   the navigation drivers using this "out-of-band" range, we can
+//   eliminate filtering the ISO-Latin-1 range of characters that we
+//   do here.
+//
+//
+
 TKeyResponse CBrowserBookmarksGotoPane::OfferKeyEventL
 ( const TKeyEvent& aKeyEvent, TEventCode aType )
     {
     TKeyResponse response = EKeyWasNotConsumed;
-	TChar iInputChar = TChar( aKeyEvent.iScanCode );
+    TChar iInputChar = TChar( aKeyEvent.iScanCode );
 
 
     if ( iBAdaptiveListPopup )
-        {  
-         response = iBAdaptiveListPopup->OfferKeyEventL( aKeyEvent, aType ); 
+        {
+        response = iBAdaptiveListPopup->OfferKeyEventL( aKeyEvent, aType );
         }
 
     if ( iEditing && response != EKeyWasConsumed)
         {
-        // Editing; most keys simply forwarded to the editor.
-        switch ( aKeyEvent.iCode )
+
+        switch ( aKeyEvent.iCode )              // Already editing; most keys simply forwarded to the editor.
             {
-            case EKeyOK:           
+
+            case EKeyOK:
                 {
-                // MSK is now handled through HandleCommand in BrowserBookmarksView
-                response = EKeyWasConsumed;
-               	break;
+                response = EKeyWasConsumed;     // MSK is now handled through HandleCommand in BrowserBookmarksView
+                break;
                 }
-            case EKeyEnter:
-            	// Handle EnterKey as "GOTO" for Touch, VKB's enter key
-                if( AknLayoutUtils::PenEnabled() )
-                	{
-                	CBrowserAppUi::Static()->ActiveView()->HandleCommandL(EWmlCmdGotoPaneGoTo);
-                	break;
-                	}
-                // FALL through to default in case Pen is not enabled.
+
+            case EKeyRightUpArrow:              // Northeast
+            case EStdKeyDevice11:               //   : Extra KeyEvent supports diagonal event simulator wedge
+            case EKeyRightDownArrow:            // Southeast
+            case EStdKeyDevice12:               //   : Extra KeyEvent supports diagonal event simulator wedge
+            case EKeyLeftDownArrow:             // Southwest
+            case EStdKeyDevice13:               //   : Extra KeyEvent supports diagonal event simulator wedge
+            case EKeyLeftUpArrow:               // Northwest
+            case EStdKeyDevice10:               //   : Extra KeyEvent supports diagonal event simulator wedge
+                {                               // Here, "eat" all of the diagonals so they have no effect...
+                response = EKeyWasConsumed;
+                break;
+                }
+
+            case EKeyEnter:                     // Handle EnterKey as "GOTO" for Touch, VKB's enter key
+                if ( AknLayoutUtils::PenEnabled() )
+                        {
+                        CBrowserAppUi::Static()->ActiveView()->HandleCommandL(EWmlCmdGotoPaneGoTo);
+                        // In case of search feature, we need to pass EKeyWasConsumed for EKeyEnter
+                        if ( iView->ApiProvider().Preferences().SearchFeature() )
+                            {
+                            response = EKeyWasConsumed;
+                            }
+                        break;
+                        }                       // Else *FALL THROUGH* to default in case Pen is not enabled.
             default:
                 {
                 response = iEditor->OfferKeyEventL(aKeyEvent, aType );
                 break;
                 }
             }
-            
+
+         // In the absence of search feature
          // Force key event to be consumed if you're editing
          // regardless of what's happened to it.
          //
          // This forces user to press cancel to continue other tasks
-         response = EKeyWasConsumed;
+         if ( !iView->ApiProvider().Preferences().SearchFeature() )
+             {
+             response = EKeyWasConsumed;
+             }
         }
-    else if ( response != EKeyWasConsumed )
+    else if ( response != EKeyWasConsumed )     // Key consumed yet? If not, process onwards...
         {
-            
+
         if ( (aKeyEvent.iScanCode == EStdKeyHash)  ||
                 ( aKeyEvent.iModifiers &
                 ( EModifierShift | EModifierLeftShift | EModifierRightShift |
                 EModifierCtrl | EModifierLeftCtrl | EModifierRightCtrl ) ) )
             {
-            
+
             // Hash key press will be used for Mark/UnMark functionality
             // Let Platform Listbox handle this.
             response = EKeyWasNotConsumed;
@@ -316,42 +427,47 @@
 
         //
         // Not currently editing the GoTo pane.
-        // Catch alpha and numeric to pop
-        // up goto pane
+        // Catch alpha and numeric to pop up the GoTo pane
         //
         // Only popup the GoTo Pane with a KeyDown event.
-        // Otherwise, if browser is pushed to the backround (but still active) 
-        // in favor of the App Shell, A long "0" press will reactivate the browser and 
-        // leave a KeyUp to (wrongly) pop the pane up 
+        // Otherwise, if browser is pushed to the backround (but still active)
+        // in favor of the App Shell, A long "0" press will reactivate the browser and
+        // leave a KeyUp to (wrongly) pop the pane up
         //
         // Note that we exclude Unicode 0xC4 and 0xC5 which
-        // are defined by EStdkeyYes and EStdkeyNo. These
+        // are defined as EStdkeyYes and EStdkeyNo. These
         // map to the Send and End keys respectively. Normally,
-        // 0xC4 and 0xC5 can be considered alpha digits, but we exclude them so that
-        // they will not pop the goto pane
+        // 0xC4 and 0xC5 can be considered alpha digits, but we
+        // exclude them so that they will not pop the GoTo pane
+        //
+        // We do the same thing for all of the diagonal motion events
+        //   so they have no effect either.
+        //
+        // Otherwise, key event is generated again (to channel through FEP)
         //
-        // key event is generated again (to channel through FEP)
-        //        
-        else if ( !iFrozen &&
-    		aType == EEventKeyDown &&        
-        	iInputChar.IsAlphaDigit() &&
-    		iInputChar != EStdKeyYes &&
-    		iInputChar != EStdKeyNo)
-    		{
-            // These keys activate the Goto Pane.
-            response = EKeyWasConsumed;
-            
+        else if (    !iFrozen
+                  && aType == EEventKeyDown
+                  && iInputChar.IsAlphaDigit()
+                  && iInputChar != EStdKeyYes
+                  && iInputChar != EStdKeyNo
+                  && iInputChar != EKeyRightUpArrow     // Northeast
+                  && iInputChar != EStdKeyDevice11      //   : Extra KeyEvent supports diagonal event simulator wedge
+                  && iInputChar != EKeyRightDownArrow   // Southeast
+                  && iInputChar != EStdKeyDevice12      //   : Extra KeyEvent supports diagonal event simulator wedge
+                  && iInputChar != EKeyLeftDownArrow    // Southwest
+                  && iInputChar != EStdKeyDevice13      //   : Extra KeyEvent supports diagonal event simulator wedge
+                  && iInputChar != EKeyLeftUpArrow      // Northwest
+                  && iInputChar != EStdKeyDevice10 )    //   : Extra KeyEvent supports diagonal event simulator wedge
+            {                                           // Most other alphanumeric keys activate the Goto Pane...
+            response = EKeyWasConsumed;                 // We'll consume the key event so it ends here
             BeginEditingL();
-
             iEditor->SetCursorPosL( iEditor->TextLength(), EFalse );
             iCoeEnv->SyncNotifyFocusObserversOfChangeInFocus();
             iCoeEnv->SimulateKeyEventL( aKeyEvent, aType );
-            
             }
         else
-            {
-            // Other keys do not activate the Goto Pane.
-            response = EKeyWasNotConsumed;
+            {                                           // Other keys do not activate the Goto Pane.
+            response = EKeyWasNotConsumed;              // Let someone else take the key event
             }
         }
     return response;
@@ -405,8 +521,12 @@
 // CBrowserBookmarksGotoPane::CBrowserBookmarksGotoPane
 // ---------------------------------------------------------
 //
-CBrowserBookmarksGotoPane::CBrowserBookmarksGotoPane(CBrowserFavouritesView* aView)
-: iView(aView), iEditing( EFalse ), iFrozen( EFalse ) 
+CBrowserBookmarksGotoPane::CBrowserBookmarksGotoPane(CBrowserFavouritesView* aView, TBool aSearchPaneMode)
+:   iView( aView ),
+    iEditing( EFalse ),
+    iFrozen( EFalse ),
+    iBAdaptiveListPopup( NULL ),
+    iSearchPaneMode( aSearchPaneMode )
     {
     }
 
@@ -414,20 +534,19 @@
 // CBrowserBookmarksGotoPane::ConstructL
 // ---------------------------------------------------------
 //
-void CBrowserBookmarksGotoPane::ConstructL
-( const CCoeControl& aParent )
-	{	
+void CBrowserBookmarksGotoPane::ConstructL ( const CCoeControl& aParent, const TDesC& aBitmapfile,
+        TInt aIconBitmapId, TInt aIconMaskId, TBool aPopupListStatus )
+
+    {
     SetContainerWindowL( aParent ); // This is now non-window owning control
     SetMopParent(const_cast<CCoeControl*>(&aParent));
     iEditor = new (ELeave) CEikEdwin;
-    iInputFrame = CAknInputFrame::NewL( iEditor, EFalse, KAvkonBitmapFile,
-                                    EMbmAvkonQgn_indi_find_goto, 
-                                    EMbmAvkonQgn_indi_find_goto_mask, 
-                                    0 );
+    iInputFrame = CAknInputFrame::NewL( iEditor, EFalse, aBitmapfile,
+                                    aIconBitmapId, aIconMaskId, 0 );
     iInputFrame->SetContainerWindowL( *this );
     iEditor->SetContainerWindowL( *this );
     AknEditUtils::ConstructEditingL(iEditor, KFavouritesMaxUrlGotoPaneDefine, 1, EAknEditorCharactersLowerCase, EAknEditorAlignRight, EFalse, ETrue, EFalse);
-	iEditor->AddFlagToUserFlags( CEikEdwin::EAlwaysShowSelection );
+    iEditor->AddFlagToUserFlags( CEikEdwin::EAlwaysShowSelection );
     iEditor->SetBorder( TGulBorder::ENone );
     iEditor->SetAknEditorCase( EAknEditorLowerCase );
     iEditor->SetAknEditorInputMode( EAknEditorTextInputMode );
@@ -438,44 +557,51 @@
         iEditor->SetAknEditorAllowedInputModes( EAknEditorTextInputMode | EAknEditorNumericInputMode );
         }
 
-    TInt editorFlags( EAknEditorFlagLatinInputModesOnly | EAknEditorFlagUseSCTNumericCharmap );
+    // In Search Mode we allow all types of inputs
+    TInt editorFlags( (iSearchPaneMode ? EAknEditorFlagDefault : EAknEditorFlagLatinInputModesOnly) | EAknEditorFlagUseSCTNumericCharmap );
 #ifdef RD_INTELLIGENT_TEXT_INPUT
-    TInt physicalKeyboards = 0; 
+    TInt physicalKeyboards = 0;
     CRepository* aknFepRepository = CRepository::NewL( KCRUidAknFep );
-	User::LeaveIfNull( aknFepRepository );
+    User::LeaveIfNull( aknFepRepository );
 
     aknFepRepository->Get( KAknFepPhysicalKeyboards,  physicalKeyboards );
-    delete aknFepRepository; 
-        
-	if ( physicalKeyboards &&   EPtiKeyboardQwerty3x11 ) {
+    delete aknFepRepository;
+
+    if ( physicalKeyboards &&   EPtiKeyboardQwerty3x11 ) {
         editorFlags = (editorFlags | EAknEditorFlagNoT9);
-	}
-#endif 
-    iEditor->SetAknEditorFlags( editorFlags ); 
+        }
+#endif
+    iEditor->SetAknEditorFlags( editorFlags );
 
 
     iEditor->SetAknEditorPermittedCaseModes( EAknEditorUpperCase | EAknEditorLowerCase );
 
-    iEditor->CreateTextViewL(); 
-    SetupSkinContextL();  
-	iEditing = EFalse;
+    iEditor->CreateTextViewL();
+    SetupSkinContextL();
+    iEditing = EFalse;
+    TBool searchFeature = iView->ApiProvider().Preferences().SearchFeature();
+    if ( searchFeature )
+        {
+        iDefaultSearchText = StringLoader::LoadL( R_IS_WEB_SEARCH );
+        }
+
     //adaptive popuplist
     iBAdaptiveListPopup = NULL;
-    if( AUTOCOMP ) //ask the feature manager
+    if( aPopupListStatus && AUTOCOMP ) //ask the feature manager
         {
         iBAdaptiveListPopup= new (ELeave) CBrowserAdaptiveListPopup(
-            iEditor, this, EBookmarksGotoPane);
+            iEditor, this, EBookmarksGotoPane, searchFeature);
         iBAdaptiveListPopup->ConstructL();
         iEditor->SetObserver( iBAdaptiveListPopup );
         if (iView)
-	    	{
-			iBAdaptiveListPopup->SetUrlSuffixList(iView->ApiProvider().Preferences().URLSuffixList());
-			iBAdaptiveListPopup->SetMaxRecentUrls(iView->ApiProvider().Preferences().MaxRecentUrls());			
-	    	}
+            {
+            iBAdaptiveListPopup->SetUrlSuffixList(iView->ApiProvider().Preferences().URLSuffixList());
+            iBAdaptiveListPopup->SetMaxRecentUrls(iView->ApiProvider().Preferences().MaxRecentUrls());
+            }
         }
 
     ActivateL();
-    MakeVisible( EFalse ); 
+    MakeVisible( EFalse );
     }
 
 // ---------------------------------------------------------
@@ -486,12 +612,12 @@
     {
     TAknLayoutRect layoutRectTemp;
     TAknWindowLineLayout windowLayoutTmp, windowLayoutTmp2;
-    
+
     windowLayoutTmp = AknLayout::Find_pane_elements_Line_4();
     windowLayoutTmp2 = windowLayoutTmp;
     layoutRectTemp.LayoutRect( Rect(), windowLayoutTmp2 );
-   	iEditor->SetRect( layoutRectTemp.Rect() );
-   	iInputFrame->SetRect( Rect() );
+    iEditor->SetRect( layoutRectTemp.Rect() );
+    iInputFrame->SetRect( Rect() );
     TRAP_IGNORE(SetupSkinContextL());
     }
 
@@ -521,25 +647,23 @@
 // ---------------------------------------------------------
 //
 CBrowserAdaptiveListPopup* CBrowserBookmarksGotoPane::PopupList()
-	{
-	return iBAdaptiveListPopup;
-	}
+    {
+    return iBAdaptiveListPopup;
+    }
 
 // ---------------------------------------------------------
 // CBrowserBookmarksGotoPane::HandleResourceChange
 // ---------------------------------------------------------
 //
-void CBrowserBookmarksGotoPane::HandleResourceChange( 
-			TInt aType 
-			)
-	{
-	CCoeControl::HandleResourceChange( aType );
+void CBrowserBookmarksGotoPane::HandleResourceChange( TInt aType )
+    {
+    CCoeControl::HandleResourceChange( aType );
 
-	if( iBAdaptiveListPopup )
-    	{
+    if ( iBAdaptiveListPopup )
+        {
         iBAdaptiveListPopup->HandleResourceChange( aType );
         }
-	}
+    }
 
 // ---------------------------------------------------------
 // CBrowserBookmarksGotoPane::MopSupplyObject
@@ -589,10 +713,10 @@
 void CBrowserBookmarksGotoPane::SetupSkinContextL()
     {
     TAknsItemID tileIID = KAknsIIDQsnBgColumnA;
-    
+
     TAknWindowLineLayout tile =
         Column_background_and_list_slice_skin_placing_Line_2();
-    
+
     TAknLayoutRect mainPane;
     mainPane.LayoutRect(
         iAvkonAppUi->ApplicationRect(),
@@ -602,13 +726,13 @@
     listRect.LayoutRect( mainPane.Rect(), AknLayout::list_gen_pane(0) );
 
     TAknLayoutRect tileRect;
-    tileRect.LayoutRect(mainPane.Rect(), tile);  
+    tileRect.LayoutRect(mainPane.Rect(), tile);
 
     if ( !iSkinContext )
         {
         iSkinContext = CAknsListBoxBackgroundControlContext::NewL(
-            KAknsIIDQsnBgAreaMainListGene, 
-            listRect.Rect(), 
+            KAknsIIDQsnBgAreaMainListGene,
+            listRect.Rect(),
             EUseSkinContext & EParentAbsolute,
             tileIID,
             tileRect.Rect() );
@@ -629,37 +753,89 @@
     iEditor->SetSkinBackgroundControlContextL(iInputContext);
 
     }
-    
+
 // ----------------------------------------------------------------------------
-// CBrowserBookmarksGotoPane::ActivateVKB
+// CBrowserBookmarksGotoPane::ActivateVkbL
 // ----------------------------------------------------------------------------
-void CBrowserBookmarksGotoPane::ActivateVKB()
+void CBrowserBookmarksGotoPane::ActivateVkbL()
     {
     if (iEditor && iEditor->TextView())
         {
         // make sure observer is set
         iCoeEnv->SyncNotifyFocusObserversOfChangeInFocus();
-       	
-       	// simulate pointer event to force VKB
-       	
-       	// first get point at cursor location
+
+        // simulate pointer event to force VKB
+
+        // first get point at cursor location
         TInt pos = iEditor->CursorPos();
-       	CTextView* textView = iEditor->TextView();
-       	TPoint curPos;
-       	textView->DocPosToXyPosL(pos, curPos);
-       	
-       	TPointerEvent pe;
-       	pe.iPosition = curPos;
-       	
-       	pe.iType = TPointerEvent::EButton1Down;
-       	iEditor->HandlePointerEventL(pe);
-       	
-        // VKB will only activate is nothing selected
-        iEditor->SetSelectionL(pos,pos); 
-       	
-       	pe.iType = TPointerEvent::EButton1Up;
-       	iEditor->HandlePointerEventL(pe);
+        CTextView* textView = iEditor->TextView();
+        TPoint curPos;
+        textView->DocPosToXyPosL(pos, curPos);
+
+        TPointerEvent pe;
+        pe.iPosition = curPos;
+
+        pe.iType = TPointerEvent::EButton1Down;
+        iEditor->HandlePointerEventL(pe);
+
+        // VKB will only activate if nothing selected
+        iEditor->SetSelectionL(pos, pos);
+
+        pe.iType = TPointerEvent::EButton1Up;
+        iEditor->HandlePointerEventL(pe);
+        iEditor->SetCursorPosL( iEditor->TextLength(), EFalse );
+
         }
     }
 
+
+// ----------------------------------------------------------------------------
+// CBrowserBookmarksGotoPane::SetTextModeItalic
+// ----------------------------------------------------------------------------
+void CBrowserBookmarksGotoPane::SetTextModeItalicL( )
+    {
+
+    // Editor Control is laid in a scalable way, so we need to get the correct font
+    // specification for setting CharFormatLayer, We could have used GetNearestFontInTwips,
+    // as done above in SetTextL() but it does not provide correct fonts for editor.
+    // We do not need to set the FontPosture back to EPostureUpright ( Normal ), as it
+    // is automatically handled by AknLayoutUtils::LayoutEdwinScalable called by
+    // iInputFrame->SetRect(), which overwrites all the properties for Editor.
+
+    TAknTextComponentLayout   editorLayout;
+    TBool apac( AknLayoutUtils::Variant() == EApacVariant && ( CAknInputFrame::EShowIndicators ) );
+    editorLayout = AknLayoutScalable_Avkon::input_find_pane_t1( apac ? 1: 0 );
+    TAknTextLineLayout lineLayout = editorLayout.LayoutLine();
+    TInt fontid =  lineLayout.FontId();
+    const CAknLayoutFont *font = AknLayoutUtils::LayoutFontFromId( fontid  );
+
+    TCharFormat charFormat;
+    TCharFormatMask charFormatMask;
+    charFormat.iFontSpec = font->FontSpecInTwips();
+    charFormat.iFontSpec.iFontStyle.SetPosture( EPostureItalic );
+    charFormatMask.SetAttrib(EAttFontTypeface);
+    charFormatMask.SetAttrib(EAttFontHeight);
+    charFormatMask.SetAttrib(EAttFontStrokeWeight);
+    charFormatMask.SetAttrib(EAttFontPosture);
+
+    // Owner ship of charFormatLayer is taken by Editor
+    CCharFormatLayer* charFormatLayer = NULL;
+    charFormatLayer = CCharFormatLayer::NewL(charFormat,charFormatMask);
+    iEditor->SetCharFormatLayer(charFormatLayer);
+   }
+
+// ----------------------------------------------------------------------------
+// CBrowserBookmarksGotoPane::SetVKBFlag
+// ----------------------------------------------------------------------------
+void CBrowserBookmarksGotoPane::SetVKBFlag( TBool aVKBFlag )
+    {
+    if( aVKBFlag )
+        {
+        iEditor->RemoveFlagFromUserFlags( CEikEdwin::EAvkonDisableVKB );
+        }
+    else
+        {
+        iEditor->AddFlagToUserFlags( CEikEdwin::EAvkonDisableVKB );
+        }
+    }
 // End of File
--- a/browserui/browser/FavouritesSrc/BrowserBookmarksListboxIconHandler.cpp	Mon Mar 30 12:49:49 2009 +0300
+++ b/browserui/browser/FavouritesSrc/BrowserBookmarksListboxIconHandler.cpp	Fri May 08 08:18:43 2009 +0300
@@ -58,7 +58,8 @@
 	EIconIndexAdaptiveFolder = 9,      ///< Adaptive Bookmarks domain folder icon index
 	EIconIndexAdaptiveBookmark = 10,      ///< Adaptive Bookmarks bookmark icon index
 	EIconIndexDefaultBookmark = 11,      ///< Adaptive Bookmarks bookmark icon index
-	EIconIndexRSSFolder = 12	///< RSS Folder  icon index
+	EIconIndexRSSFolder = 12,	     ///< RSS Folder  icon index
+	EIconIndexService = 13             ///< service icon
     };
 
 // ================= MEMBER FUNCTIONS =======================
@@ -82,7 +83,12 @@
         {
         return EIconIndexLastVisitedPage;
         }
-
+    //service icon
+    if( aItem.ContextId() == KFavouritesServiceContextId  )
+        {
+        return EIconIndexService;
+        }
+  
    	//seamless links folders have a different icon
    	if( CBrowserFavouritesView::IsSeamlessFolder( aItem.ContextId() ) )
    		{
@@ -193,7 +199,7 @@
 
 	MAknsSkinInstance* skinInstance = AknsUtils::SkinInstance();
 	//EMbmAvkonQgn_indi_marked_add
-	AknsUtils::CreateIconL( skinInstance,
+	AknsUtils::CreateIconLC( skinInstance,
                                            KAknsIIDQgnIndiMarkedAdd,
                                            newIconBmp,
 										   newIconMaskBmp,
@@ -201,11 +207,12 @@
                                            EMbmAvkonQgn_indi_marked_add,
 										   EMbmAvkonQgn_indi_marked_add_mask);    
 	newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp);
+    CleanupStack::Pop(2);
 	CleanupStack::PushL(newIcon);
 	icons->AppendL( newIcon );
 	CleanupStack::Pop(newIcon);
     //EMbmAvkonQgn_prop_folder_small
-	AknsUtils::CreateIconL( skinInstance,
+	AknsUtils::CreateIconLC( skinInstance,
                                            KAknsIIDQgnPropFolderSmall,
                                            newIconBmp,
 										   newIconMaskBmp,
@@ -213,12 +220,13 @@
                                            EMbmAvkonQgn_prop_folder_small,
 										   EMbmAvkonQgn_prop_folder_small_mask);    
 	newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp);
+    CleanupStack::Pop(2);
 	CleanupStack::PushL(newIcon);
 	icons->AppendL( newIcon );
 	CleanupStack::Pop(newIcon);
 	//"z:\\system\\apps\\browser\\Browser.mbm";
 	//EMbmBrowserQgn_prop_wml_home
-	AknsUtils::CreateIconL( skinInstance,
+	AknsUtils::CreateIconLC( skinInstance,
                                            KAknsIIDQgnPropWmlHome,
                                            newIconBmp,
 										   newIconMaskBmp,
@@ -226,11 +234,12 @@
                                            EMbmBrowserQgn_prop_wml_home,
 										   EMbmBrowserQgn_prop_wml_home_mask);    
 	newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp);
+    CleanupStack::Pop(2);
 	CleanupStack::PushL(newIcon);
 	icons->AppendL( newIcon );
 	CleanupStack::Pop(newIcon);
 	//EMbmBrowserQgn_prop_wml_bm_last
-	AknsUtils::CreateIconL( skinInstance,
+	AknsUtils::CreateIconLC( skinInstance,
                                            KAknsIIDQgnPropWmlBmLast,
                                            newIconBmp,
 										   newIconMaskBmp,
@@ -238,11 +247,12 @@
                                            EMbmBrowserQgn_prop_wml_bm_last,
 										   EMbmBrowserQgn_prop_wml_bm_last_mask);    
 	newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp);
+    CleanupStack::Pop(2);
 	CleanupStack::PushL(newIcon);
 	icons->AppendL( newIcon );
 	CleanupStack::Pop(newIcon);
 	//EMbmBrowserQgn_prop_wml_bm
-	AknsUtils::CreateIconL( skinInstance,
+	AknsUtils::CreateIconLC( skinInstance,
                                            KAknsIIDQgnPropWmlBm,
                                            newIconBmp,
 										   newIconMaskBmp,
@@ -250,11 +260,12 @@
                                            EMbmBrowserQgn_prop_wml_bm,
 										   EMbmBrowserQgn_prop_wml_bm_mask);    
 	newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp);
+    CleanupStack::Pop(2);
 	CleanupStack::PushL(newIcon);
 	icons->AppendL( newIcon );
 	CleanupStack::Pop(newIcon);
 	//EMbmBrowserQgn_indi_wml_csd_add
-	AknsUtils::CreateIconL( skinInstance,
+	AknsUtils::CreateIconLC( skinInstance,
                                            KAknsIIDQgnIndiWmlCsdAdd,
                                            newIconBmp,
 										   newIconMaskBmp,
@@ -262,11 +273,12 @@
                                            EMbmBrowserQgn_indi_wml_csd_add,
 										   EMbmBrowserQgn_indi_wml_csd_add_mask);    
 	newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp);
+    CleanupStack::Pop(2);
 	CleanupStack::PushL(newIcon);
 	icons->AppendL( newIcon );
 	CleanupStack::Pop(newIcon);
 	//EMbmBrowserQgn_indi_wml_hscsd_add
-	AknsUtils::CreateIconL( skinInstance,
+	AknsUtils::CreateIconLC( skinInstance,
                                            KAknsIIDQgnIndiWmlHscsdAdd,
                                            newIconBmp,
 										   newIconMaskBmp,
@@ -274,11 +286,12 @@
                                            EMbmBrowserQgn_indi_wml_hscsd_add,
 										   EMbmBrowserQgn_indi_wml_hscsd_add_mask);    
 	newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp);
+    CleanupStack::Pop(2);
 	CleanupStack::PushL(newIcon);
 	icons->AppendL( newIcon );
 	CleanupStack::Pop(newIcon);
 	//EMbmBrowserQgn_indi_wml_gprs_add
-	AknsUtils::CreateIconL( skinInstance,
+	AknsUtils::CreateIconLC( skinInstance,
                                            KAknsIIDQgnIndiWmlGprsAdd,
                                            newIconBmp,
 										   newIconMaskBmp,
@@ -286,11 +299,12 @@
                                            EMbmBrowserQgn_indi_wml_gprs_add,
 										   EMbmBrowserQgn_indi_wml_gprs_add_mask);    
 	newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp);
+    CleanupStack::Pop(2);
 	CleanupStack::PushL(newIcon);
 	icons->AppendL( newIcon );
 	CleanupStack::Pop(newIcon);
 	//EMbmBrowserQgn_prop_wml_folder_link_seamless
-	AknsUtils::CreateIconL( skinInstance,
+	AknsUtils::CreateIconLC( skinInstance,
                                            KAknsIIDQgnPropWmlFolderLinkSeamless,
                                            newIconBmp,
 										   newIconMaskBmp,
@@ -298,11 +312,12 @@
                                            EMbmBrowserQgn_prop_wml_folder_link_seamless,
 										   EMbmBrowserQgn_prop_wml_folder_link_seamless_mask);    
 	newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp);
+    CleanupStack::Pop(2);
 	CleanupStack::PushL(newIcon);
 	icons->AppendL( newIcon );
 	CleanupStack::Pop(newIcon);
 	//EMbmBrowserQgn_prop_wml_folder_adap
-	AknsUtils::CreateIconL( skinInstance,
+	AknsUtils::CreateIconLC( skinInstance,
                                            KAknsIIDQgnPropWmlFolderAdap,
                                            newIconBmp,
 										   newIconMaskBmp,
@@ -310,12 +325,13 @@
                                            EMbmBrowserQgn_prop_wml_folder_adap,
 										   EMbmBrowserQgn_prop_wml_folder_adap_mask);    
 	newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp);
+    CleanupStack::Pop(2);
 	CleanupStack::PushL(newIcon);
 	icons->AppendL( newIcon );
 	CleanupStack::Pop(newIcon);
 
 	//EMbmBrowserQgn_prop_wml_bm_adap
-	AknsUtils::CreateIconL( skinInstance,
+	AknsUtils::CreateIconLC( skinInstance,
                                            KAknsIIDQgnPropWmlBmAdap,
                                            newIconBmp,
 										   newIconMaskBmp,
@@ -323,13 +339,14 @@
                                            EMbmBrowserQgn_prop_wml_bm_adap,
 										   EMbmBrowserQgn_prop_wml_bm_adap_mask);    
 	newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp);
+    CleanupStack::Pop(2);
 	CleanupStack::PushL(newIcon);
 	icons->AppendL( newIcon );
 	CleanupStack::Pop(newIcon);
 
 	//EMbmBrowserQgn_prop_psln_active
 
-	AknsUtils::CreateIconL( skinInstance,
+	AknsUtils::CreateIconLC( skinInstance,
                                            KAknsIIDQgnPropPslnActive,
                                            newIconBmp,
 										   newIconMaskBmp,
@@ -337,13 +354,14 @@
                                            EMbmBrowserQgn_prop_psln_active,
 										   EMbmBrowserQgn_prop_psln_active_mask);    
 	newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp);
+    CleanupStack::Pop(2); // newIconBmp, newIconMaskBmp (see CreateIconLC)
 	CleanupStack::PushL(newIcon);
 	icons->AppendL( newIcon );
 	CleanupStack::Pop(newIcon);
 
 	//EMbmBrowserQgn_prop_folder_rss
 	
-	AknsUtils::CreateIconL( skinInstance,
+	AknsUtils::CreateIconLC( skinInstance,
                                            KAknsIIDQgnPropFolderRss,
                                            newIconBmp,
 										   newIconMaskBmp,
@@ -351,11 +369,26 @@
                                            EMbmBrowserQgn_prop_folder_rss,
 										   EMbmBrowserQgn_prop_folder_rss_mask);    
 	newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp);
+    CleanupStack::Pop(2); // newIconBmp, newIconMaskBmp (see CreateIconLC)
 	CleanupStack::PushL(newIcon);
 	icons->AppendL( newIcon );
 	CleanupStack::Pop(newIcon);
 
+    //Browser service
 
+    AknsUtils::CreateIconLC( skinInstance,
+                                       KAknsIIDQgnPropBrowserInfoSmall,
+                                       newIconBmp,
+                                       newIconMaskBmp,
+                                       iconFileBrowser,
+                                       EMbmBrowserQgn_prop_browser_info_small,
+                                       EMbmBrowserQgn_prop_browser_info_small_mask );
+    newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp );
+    CleanupStack::Pop(2);
+    CleanupStack::PushL(newIcon);
+    icons->AppendL( newIcon );
+    CleanupStack::Pop(newIcon);
+    
     CleanupStack::Pop();    // POP Icon
 	return icons;
 }
--- a/browserui/browser/FavouritesSrc/BrowserBookmarksView.cpp	Mon Mar 30 12:49:49 2009 +0300
+++ b/browserui/browser/FavouritesSrc/BrowserBookmarksView.cpp	Fri May 08 08:18:43 2009 +0300
@@ -119,6 +119,8 @@
     if ( container )
         {
         container->GotoPane()->SetGPObserver( NULL );
+        if( ApiProvider().Preferences().SearchFeature() )
+            container->SearchPane()->SetGPObserver( NULL );
         }
     delete iDomainFolderName;
     delete iItemsToMove;
@@ -248,7 +250,9 @@
                 {
                 ProcessCommandL(EWmlCmdMoveCancel);
                 }
-            else if ( TheContainer() && TheContainer()->GotoPane()->IsEditing() )
+			else if( TheContainer() 
+			        && ( TheContainer()->GotoPane()->IsEditing() 
+			        || TheContainer()->SearchPane()->IsEditing()))
                 {
                 ProcessCommandL(EWmlCmdGotoPaneCancel);
                 }
@@ -314,19 +318,43 @@
         // CBA commands.
         case EWmlCmdGotoPaneGoTo:
             {
-            if (TheContainer()->GotoPane()->Editor()->TextLength()!= 0)
+            if( TheContainer()->GotoPaneActive() )
                 {
-                // Cancel editing and sets Goto Pane text back.
-                if (TheContainer()->GotoPane()->PopupList() != NULL)
+                if (TheContainer()->GotoPane()->Editor()->TextLength()!= 0)
+                    {
+                    // Cancel editing and sets Goto Pane text back.
+                    if (TheContainer()->GotoPane()->PopupList() != NULL)
+                        {
+                        TheContainer()->GotoPane()->PopupList()->SetDirectoryModeL( ETrue );
+                        TheContainer()->GotoPane()->PopupList()->HidePopupL();
+                        }
+                    GotoUrlInGotoPaneL();
+                    }
+                }
+            else // it was from searchpane 
+                {
+                if (TheContainer()->SearchPane()->Editor()->TextLength()!= 0)
                     {
-                    TheContainer()->GotoPane()->PopupList()->SetDirectoryModeL( ETrue );
-                    TheContainer()->GotoPane()->PopupList()->HidePopupL();
+                    // Launch Search application with search parameters
+                    // and cancel editing of search and goto.
+                    // Dim Toolbar buttons
+                    DimToolbarButtons(EFalse);
+                    HBufC* searchString = TheContainer()->SearchPane()->GetTextL();
+                    CleanupStack::PushL( searchString );
+                    if( searchString )
+                        {
+                        UpdateCbaL();
+                        // Set GoTo/Search Inactive
+                        TheContainer()->SetGotoInactiveL();
+                        LaunchSearchApplicationL( *searchString );
+                        }
+                    CleanupStack::PopAndDestroy( searchString );
                     }
-                GotoUrlInGotoPaneL();
+                // set LSK to GOTO now
+                UpdateCbaL();
                 }
             break;
             }
-
         case EWmlCmdGotoPaneSelect:
             {
             if (TheContainer()->GotoPane()->Editor()->TextLength()!= 0)
@@ -461,6 +489,7 @@
             break;
             }
 
+        case EWmlCmdGoToAddressAndSearch:    
         case EWmlCmdGoToAddress: // MSK for Recent Url page
         case EWmlCmdSwitchToGotoActive:
             {
@@ -469,6 +498,12 @@
             break;
             }
 
+        case EIsCmdSearchWeb:
+        	{
+        	DimToolbarButtons(ETrue);
+        	TheContainer()->SetSearchActiveL();
+        	break;
+        	}
 
         case EWmlCmdEditBookmark:
             {
@@ -813,6 +848,12 @@
 void CBrowserBookmarksView::SetLSKDynL(TSKPair& aLsk,
     CBrowserBookmarksGotoPane* aGotoPane)
 {
+    CBrowserBookmarksContainer* theContainer = TheContainer();
+    CBrowserBookmarksGotoPane* searchPane = NULL;
+    if( theContainer )
+        {
+        searchPane = theContainer->SearchPane();
+        }
     // Default lsk is option
     aLsk.setPair(EAknSoftkeyOptions, R_BROWSER_BOOKMARKS_DYN_SK_TEXT_SOFTKEY_OPTION);
 
@@ -843,7 +884,11 @@
             // LSK Select is only for non-touch devices
             aLsk.setPair(EWmlCmdGotoPaneSelect, R_BROWSER_BOOKMARKS_DYN_SK_TEXT_SOFTKEY_SELECT);
             }
-        }
+		}
+	else if(  searchPane && searchPane->IsEditing()  )
+		{
+        aLsk.setPair(EWmlCmdGotoPaneGoTo, R_BROWSER_BOOKMARKS_DYN_SK_QTN_IS_SOFTK_SEARCH);
+	    }
 }
 
 // ----------------------------------------------------------------------------
@@ -854,11 +899,17 @@
 void CBrowserBookmarksView::SetRSKDynL(TSKPair& aRsk,
     CBrowserBookmarksGotoPane* aGotoPane)
 {
+    CBrowserBookmarksContainer* theContainer = TheContainer();
+    CBrowserBookmarksGotoPane* searchPane = NULL;
+    if( theContainer )
+        {
+        searchPane = theContainer->SearchPane();
+        }
     if ( iManualItemMovingGoingOn )
         {
         aRsk.setPair(EBrowserBookmarksCmdCancel, R_BROWSER_BOOKMARKS_DYN_SK_TEXT_SOFTKEY_CANCEL);
         }
-    else if ( aGotoPane && aGotoPane->IsEditing() )
+	else if( (aGotoPane && aGotoPane->IsEditing()) || (searchPane && searchPane->IsEditing()) )
         {
         // default for goto is cancel
         aRsk.setPair(EBrowserBookmarksCmdCancel, R_BROWSER_BOOKMARKS_DYN_SK_TEXT_SOFTKEY_CANCEL);
@@ -921,10 +972,21 @@
         aMsk.setPair(EBrowserBookmarksCmdOpen, R_BROWSER_BOOKMARKS_DYN_SK_TEXT_SOFTKEY_OPEN);
         }
 
+	CBrowserBookmarksContainer* theContainer = TheContainer();
+    CBrowserBookmarksGotoPane* searchPane = NULL;
+	if( theContainer )
+	    {
+	    searchPane = theContainer->SearchPane();
+	    }
     //
     // UNDER these special conditions, the msk is set differently:
     //
     if ( aGotoPane && aGotoPane->IsEditing() )
+	    {
+		// follow whatever the lsk is set to
+		aMsk = aLsk;
+	    }
+	else if(  searchPane && searchPane->IsEditing() )
         {
         // follow whatever the lsk is set to
         aMsk = aLsk;
@@ -974,7 +1036,8 @@
         )
     {
 #ifdef _DEBUG
-    __ASSERT_DEBUG( aGotoPane == TheContainer()->GotoPane(), \
+    __ASSERT_DEBUG( aGotoPane == TheContainer()->GotoPane() ||
+            aGotoPane == TheContainer()->SearchPane(), \
         Util::Panic( Util::EFavouritesInternal ) );
 #endif
 
@@ -1072,7 +1135,14 @@
         {
         Toolbar()->SetToolbarObserver(this);
         }
-
+    if ( ApiProvider().Preferences().SearchFeature() )
+        {
+        Toolbar()->HideItem( EWmlCmdGoToAddress, ETrue, ETrue );
+        }
+    else
+        {
+        Toolbar()->HideItem( EWmlCmdGoToAddressAndSearch, ETrue, EFalse );
+        }
     }
 
 // ----------------------------------------------------------------------------
@@ -1208,7 +1278,11 @@
 
             // home
             aMenuPane->SetItemDimmed( EWmlCmdLaunchHomePage, ETrue );
-
+            //search 
+            if ( ! ApiProvider().Preferences().SearchFeature() )
+                {
+                aMenuPane->SetItemDimmed( EIsCmdSearchWeb, ETrue );
+                }
             break;
             }
         case R_BMACTIONS_SUBMENU:
@@ -1472,6 +1546,8 @@
     CBrowserBookmarksContainer* container =
         CBrowserBookmarksContainer::NewL( ClientRect(), *this );
     container->GotoPane()->SetGPObserver( this );
+    if(  ApiProvider().Preferences().SearchFeature() )
+        container->SearchPane()->SetGPObserver( this );
     return container;
     }
 
--- a/browserui/browser/FavouritesSrc/BrowserFavouritesFolderListboxIconHandler.cpp	Mon Mar 30 12:49:49 2009 +0300
+++ b/browserui/browser/FavouritesSrc/BrowserFavouritesFolderListboxIconHandler.cpp	Fri May 08 08:18:43 2009 +0300
@@ -151,7 +151,7 @@
 	
 	MAknsSkinInstance* skinInstance = AknsUtils::SkinInstance();
 
-	AknsUtils::CreateIconL( skinInstance,
+	AknsUtils::CreateIconLC( skinInstance,
                                            KAknsIIDQgnIndiMarkedAdd,
                                            newIconBmp,
 										   newIconMaskBmp,
@@ -159,11 +159,12 @@
                                            EMbmAvkonQgn_indi_marked_add,
 										   EMbmAvkonQgn_indi_marked_add_mask);    
 	newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp);
+    CleanupStack::Pop(2); // newIconBmp, newIconMaskBmp (see CreateIconLC)
 	CleanupStack::PushL(newIcon);
 	icons->AppendL( newIcon );
 	CleanupStack::Pop(newIcon);
 	//EMbmAvkonQgn_prop_folder_small; maskId = EMbmAvkonQgn_prop_folder_small_mask; },
-	AknsUtils::CreateIconL( skinInstance,
+	AknsUtils::CreateIconLC( skinInstance,
                                            KAknsIIDQgnPropFolderSmall,
                                            newIconBmp,
 										   newIconMaskBmp,
@@ -171,11 +172,12 @@
                                            EMbmAvkonQgn_prop_folder_small,
 										   EMbmAvkonQgn_prop_folder_small_mask);    
 	newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp);
+    CleanupStack::Pop(2); // newIconBmp, newIconMaskBmp (see CreateIconLC)
 	CleanupStack::PushL(newIcon);
 	icons->AppendL( newIcon );
 	CleanupStack::Pop(newIcon);
 	//EMbmAvkonQgn_indi_level_back; maskId = EMbmAvkonQgn_indi_level_back_mask; }
-	AknsUtils::CreateIconL( skinInstance,
+	AknsUtils::CreateIconLC( skinInstance,
                                            KAknsIIDQgnIndiLevelBack,
                                            newIconBmp,
 										   newIconMaskBmp,
@@ -183,12 +185,13 @@
                                            EMbmAvkonQgn_indi_level_back,
 										   EMbmAvkonQgn_indi_level_back_mask);    
 	newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp);
+    CleanupStack::Pop(2); // newIconBmp, newIconMaskBmp (see CreateIconLC)
 	CleanupStack::PushL(newIcon);
 	icons->AppendL( newIcon );
 	CleanupStack::Pop(newIcon);
     //"z:\\system\\apps\\browser\\Browser.mbm";
 	//EMbmBrowserQgn_prop_wml_home; maskId = EMbmBrowserQgn_prop_wml_home_mask; },
-	AknsUtils::CreateIconL( skinInstance,
+	AknsUtils::CreateIconLC( skinInstance,
                                            KAknsIIDQgnPropWmlHome,
                                            newIconBmp,
 										   newIconMaskBmp,
@@ -196,11 +199,12 @@
                                            EMbmBrowserQgn_prop_wml_home,
 										   EMbmBrowserQgn_prop_wml_home_mask);    
 	newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp);
+    CleanupStack::Pop(2); // newIconBmp, newIconMaskBmp (see CreateIconLC)
 	CleanupStack::PushL(newIcon);
 	icons->AppendL( newIcon );
 	CleanupStack::Pop(newIcon);
 	//EMbmBrowserQgn_prop_wml_bm_last; maskId = EMbmBrowserQgn_prop_wml_bm_last_mask; },
-	AknsUtils::CreateIconL( skinInstance,
+	AknsUtils::CreateIconLC( skinInstance,
                                            KAknsIIDQgnPropWmlBmLast,
                                            newIconBmp,
 										   newIconMaskBmp,
@@ -208,11 +212,12 @@
                                            EMbmBrowserQgn_prop_wml_bm_last,
 										   EMbmBrowserQgn_prop_wml_bm_last_mask);    
 	newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp);
+    CleanupStack::Pop(2); // newIconBmp, newIconMaskBmp (see CreateIconLC)
 	CleanupStack::PushL(newIcon);
 	icons->AppendL( newIcon );
 	CleanupStack::Pop(newIcon);
 	//EMbmBrowserQgn_prop_wml_bm; maskId = EMbmBrowserQgn_prop_wml_bm_mask; },
-	AknsUtils::CreateIconL( skinInstance,
+	AknsUtils::CreateIconLC( skinInstance,
                                            KAknsIIDQgnPropWmlBm,
                                            newIconBmp,
 										   newIconMaskBmp,
@@ -220,11 +225,12 @@
                                            EMbmBrowserQgn_prop_wml_bm,
 										   EMbmBrowserQgn_prop_wml_bm_mask);    
 	newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp);
+    CleanupStack::Pop(2); // newIconBmp, newIconMaskBmp (see CreateIconLC)
 	CleanupStack::PushL(newIcon);
 	icons->AppendL( newIcon );
 	CleanupStack::Pop(newIcon);
 	//EMbmBrowserQgn_indi_wml_csd_add; maskId = EMbmBrowserQgn_indi_wml_csd_add_mask; },
-	AknsUtils::CreateIconL( skinInstance,
+	AknsUtils::CreateIconLC( skinInstance,
                                            KAknsIIDQgnIndiWmlCsdAdd,
                                            newIconBmp,
 										   newIconMaskBmp,
@@ -232,11 +238,12 @@
                                            EMbmBrowserQgn_indi_wml_csd_add,
 										   EMbmBrowserQgn_indi_wml_csd_add_mask);    
 	newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp);
+    CleanupStack::Pop(2); // newIconBmp, newIconMaskBmp (see CreateIconLC)
 	CleanupStack::PushL(newIcon);
 	icons->AppendL( newIcon );
 	CleanupStack::Pop(newIcon);
 	//EMbmBrowserQgn_indi_wml_hscsd_add; maskId = EMbmBrowserQgn_indi_wml_hscsd_add_mask; },
-	AknsUtils::CreateIconL( skinInstance,
+	AknsUtils::CreateIconLC( skinInstance,
                                            KAknsIIDQgnIndiWmlHscsdAdd,
                                            newIconBmp,
 										   newIconMaskBmp,
@@ -244,11 +251,12 @@
                                            EMbmBrowserQgn_indi_wml_hscsd_add,
 										   EMbmBrowserQgn_indi_wml_hscsd_add_mask);    
 	newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp);
+    CleanupStack::Pop(2); // newIconBmp, newIconMaskBmp (see CreateIconLC)
 	CleanupStack::PushL(newIcon);
 	icons->AppendL( newIcon );
 	CleanupStack::Pop(newIcon);
 	//EMbmBrowserQgn_indi_wml_gprs_add; maskId = EMbmBrowserQgn_indi_wml_gprs_add_mask; },
-	AknsUtils::CreateIconL( skinInstance,
+	AknsUtils::CreateIconLC( skinInstance,
                                            KAknsIIDQgnIndiWmlGprsAdd,
                                            newIconBmp,
 										   newIconMaskBmp,
@@ -256,11 +264,12 @@
                                            EMbmBrowserQgn_indi_wml_gprs_add,
 										   EMbmBrowserQgn_indi_wml_gprs_add_mask);    
 	newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp);
+    CleanupStack::Pop(2); // newIconBmp, newIconMaskBmp (see CreateIconLC)
 	CleanupStack::PushL(newIcon);
 	icons->AppendL( newIcon );
 	CleanupStack::Pop(newIcon);
 	//EMbmBrowserQgn_prop_wml_folder_link_seamless; maskId = EMbmBrowserQgn_prop_wml_folder_link_seamless_mask; }
-	AknsUtils::CreateIconL( skinInstance,
+	AknsUtils::CreateIconLC( skinInstance,
                                            KAknsIIDQgnPropWmlFolderLinkSeamless,
                                            newIconBmp,
 										   newIconMaskBmp,
@@ -268,6 +277,7 @@
                                            EMbmBrowserQgn_prop_wml_folder_link_seamless,
 										   EMbmBrowserQgn_prop_wml_folder_link_seamless_mask);    
 	newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp);
+    CleanupStack::Pop(2); // newIconBmp, newIconMaskBmp (see CreateIconLC)
 	CleanupStack::PushL(newIcon);
 	icons->AppendL( newIcon );
 	CleanupStack::Pop(newIcon);
--- a/browserui/browser/FavouritesSrc/BrowserFavouritesListbox.cpp	Mon Mar 30 12:49:49 2009 +0300
+++ b/browserui/browser/FavouritesSrc/BrowserFavouritesListbox.cpp	Fri May 08 08:18:43 2009 +0300
@@ -661,7 +661,8 @@
 //
 TInt CBrowserFavouritesListbox::ListboxFlags()
     {
-    return EAknListBoxMarkableList;
+    return AknLayoutUtils::PenEnabled() ?  
+         EAknListBoxStylusMarkableList :  EAknListBoxMarkableList;
     }
 
 // ---------------------------------------------------------
--- a/browserui/browser/FavouritesSrc/BrowserFavouritesListboxItemDrawer.cpp	Mon Mar 30 12:49:49 2009 +0300
+++ b/browserui/browser/FavouritesSrc/BrowserFavouritesListboxItemDrawer.cpp	Fri May 08 08:18:43 2009 +0300
@@ -55,12 +55,24 @@
         }
     TListItemProperties properties =
         CColumnListBoxItemDrawer::Properties( aItemIndex );
-    if ( STATIC_CAST( CBrowserFavouritesListboxModel*, iModel ) ->
-        Items()->At( aItemIndex )->IsFolder() )
-        {
-        // If this is a folder, set "hidden selection" true.
-        properties.SetHiddenSelection( ETrue );
-        }
+
+    // SEARCH CUSTOM:  Updated below for Italics in bookmarks view    
+    // Selection of Folders is allowed, so no need to set it as Hidden.
+    // if ( STATIC_CAST( CBrowserFavouritesListboxModel*, iModel ) ->
+    //    Items()->At( aItemIndex )->IsFolder() )
+    //    {
+    //    // If this is a folder, set "hidden selection" true.
+    //    properties.SetHiddenSelection( ETrue );
+    //    }
+
+        
+     //Better solution would be adding italics properties to CFavouritesItem, but it requires changes in FavouritesEngine API
+     CFavouritesItem* fi = STATIC_CAST( CBrowserFavouritesListboxModel*, iModel ) ->
+        Items()->At( aItemIndex );
+    if ( fi->ContextId() == KFavouritesServiceContextId )
+    	{
+    	properties.SetItalics(ETrue);
+    	}
     return properties;
     }
 
--- a/browserui/browser/FavouritesSrc/BrowserFavouritesView.cpp	Mon Mar 30 12:49:49 2009 +0300
+++ b/browserui/browser/FavouritesSrc/BrowserFavouritesView.cpp	Fri May 08 08:18:43 2009 +0300
@@ -310,6 +310,11 @@
             resId = R_BROWSERBM_FOLDER_DOWNLOAD_MUSIC;
             break;
             }
+        case KFavouritesServiceContextId:
+            {
+            resId = R_IS_RECOMMENDATIONS;
+            break;
+            }
         default:
             {
             break; // not a seamless link folder.
@@ -1168,15 +1173,30 @@
     TInt contextId;
     TInt resId = 0;
     HBufC* name;
-    for (int i=0; i<items->Count(); i++)
+ 
+    TBool browserService = ApiProvider().Preferences().ServiceFeature();
+    TBool firstBoot = ApiProvider().Preferences().GetIntValue( KBrowserFirstBoot );
+    TInt serviceUid = KErrNotFound;
+    
+    for(int i=0; i<items->Count(); i++)
         {
-        if (!items->At(i)->IsHidden())
+	    if (!items->At(i)->IsHidden())
             {
             contextId = items->At(i)->ContextId();
-            resId = CBrowserFavouritesView::GetSeamlessFolderResourceID(
-                        contextId );
-
-            if (resId)
+        
+            if ( firstBoot && browserService )
+                {
+                //This is the first boot and we need to move Service top of the bookmarks.
+                //Here we save uid for Service item.
+                if ( contextId == KFavouritesServiceContextId )
+                    {
+                    serviceUid = items->IndexToUid( i );
+                    }
+                }
+        
+            resId = CBrowserFavouritesView::GetSeamlessFolderResourceID( 
+        			contextId );
+            if(resId)
                 {
                 name = iCoeEnv->AllocReadResourceLC( resId );
                 items->At(i)->SetNameL(name->Des());
@@ -1189,6 +1209,47 @@
             i--;
             }
         }
+    
+    if ( firstBoot && browserService && serviceUid != KErrNotFound )
+        {
+        //get current order array
+        CBrowserBookmarksOrder* currentOrder = CBrowserBookmarksOrder::NewLC();
+        CArrayFixFlat<TInt>* orderArray = new (ELeave) CArrayFixFlat<TInt>( KGranularityHigh );
+        CleanupStack::PushL( orderArray );
+
+        iModel->Database().GetData( KFavouritesRootUid, *currentOrder );
+        orderArray->AppendL( &( currentOrder->GetBookMarksOrder()[0] ), currentOrder->GetBookMarksOrder().Count());
+        
+        //First sort UI. Move Service
+        CFavouritesItem* serviceCopy = CFavouritesItem::NewLC();
+        const CFavouritesItem* serviceItem = items->ItemByUid( serviceUid );
+        if ( serviceItem )
+            {
+            *serviceCopy = *serviceItem;
+            items->Delete( serviceUid );
+            items->InsertL( 0, serviceCopy ); //ownership transfered
+            CleanupStack::Pop( serviceCopy );
+            }
+        else
+            {
+            User::Leave( KErrNotFound );
+            }
+
+        //Next change order in db. Move Service
+        orderArray->InsertL( 0, orderArray->At( serviceUid ) );
+        orderArray->Delete( serviceUid+1 );
+        
+        //save changes to db
+        currentOrder->SetBookMarksOrderL( *orderArray );
+        iModel->Database().SetData( KFavouritesRootUid, *currentOrder );
+        
+        CleanupStack::PopAndDestroy( 2 ); //orderArray, currentOrder
+        //service moved to top of the bookmark list. We can set firstboot value to false
+        // so now we can set firstboot value to false.
+        CRepository* repository = CRepository::NewLC( KCRUidBrowser );
+        User::LeaveIfError( repository->Set(KBrowserFirstBoot, EFalse) );
+        CleanupStack::PopAndDestroy( repository );
+        }
 
     CleanupStack::Pop();    // items: passing ownership to listbox.
     iContainer->Listbox()->SetDataL
--- a/browserui/browser/FeedsSrc/FeedsClientUtilities.cpp	Mon Mar 30 12:49:49 2009 +0300
+++ b/browserui/browser/FeedsSrc/FeedsClientUtilities.cpp	Fri May 08 08:18:43 2009 +0300
@@ -116,6 +116,8 @@
     TPtr ptr( iMimeTypes->Des() );
     ptr.Append( KSupportedMimeTypes() );
     ptr.ZeroTerminate();
+	      
+    iWaitDialog = CFeedsWaitDialog::NewL(*this);
     }
 
 // -----------------------------------------------------------------------------
@@ -622,11 +624,9 @@
         iCanceledRequest = CTransaction::ENone;
         return;
         }
-    // Close the wait dialog.
-    if (iWaitDialog)
-        {
-        iWaitDialog->Close();
-        }
+
+    iWaitDialog->Close();
+ 
     iIsWaitDialogDisplayed = EFalse;
     	
     // Show the view if everything went ok.
@@ -1517,11 +1517,7 @@
 	    iAppUI.AddViewL( iFolderView ); // transfer ownership to CAknViewAppUi
 		}
 		
-    // Create the WaitDialog
-    if (iWaitDialog == NULL)
-        {        
-        iWaitDialog = CFeedsWaitDialog::NewL(*this);
-        }
+
     
     // Connect to the server.
     ConnectToServerL(aGetRootFolder);
--- a/browserui/browser/FeedsSrc/FeedsEditFeedDialog.cpp	Mon Mar 30 12:49:49 2009 +0300
+++ b/browserui/browser/FeedsSrc/FeedsEditFeedDialog.cpp	Fri May 08 08:18:43 2009 +0300
@@ -166,7 +166,6 @@
 //
 void CFeedsEditFeedDialog::HandleFreqCmdL()
     {
-    TBuf<32> title(_L("Auto update"));
     TInt currentlySelected = KAutoUpdatingOff;
 
     // options array
@@ -219,7 +218,10 @@
             break;
         }
 
-    currentlySelected = ShowRadioButtonSettingPageL(title,values,currentlySelected);
+    HBufC* title;
+    title=iCoeEnv->AllocReadResourceLC(R_FEEDS_AUTOUPDATING_FEED);
+    currentlySelected = ShowRadioButtonSettingPageL(*title,values,currentlySelected);
+    CleanupStack::PopAndDestroy();  // title
 
     if(!iActionCancelled)
         {
@@ -428,8 +430,7 @@
                     HBufC* note = StringLoader::LoadLC( R_FEEDS_DATAQUERY_AUTOUPDATEWARN );
                     if(iPreviousFreq == 0)
                         {
-                      //  ShowInfoDialogwithOkSoftKeyL( note->Des() );    
-                        ShowInfoDialogwithOkSoftKeyL( _L("Enabling automatic updating may increase your monthly phone bill") );    
+                        ShowInfoDialogwithOkSoftKeyL(note->Des());
                         }
                     CleanupStack::PopAndDestroy(); // note
                     iPreviousFreq = iFreq;
--- a/browserui/browser/FeedsSrc/FeedsFolderView.cpp	Mon Mar 30 12:49:49 2009 +0300
+++ b/browserui/browser/FeedsSrc/FeedsFolderView.cpp	Fri May 08 08:18:43 2009 +0300
@@ -292,6 +292,7 @@
 
 	iApiProvider.SetLastActiveViewId(Id());
     iContainer->UpdateTitleL();
+    iContainer->UpdateNavigationPaneL();
     iContainer->UpdateListBoxL(iInitialItem);
 
 	iContainer->UpdateCbaL();	
--- a/browserui/browser/Group/BrowserNG.mmp	Mon Mar 30 12:49:49 2009 +0300
+++ b/browserui/browser/Group/BrowserNG.mmp	Fri May 08 08:18:43 2009 +0300
@@ -65,6 +65,17 @@
 LIBRARY cmmanager.lib
 LIBRARY browserengine.lib
 LIBRARY       edbms.lib
+
+#ifdef BRDO_APP_GALLERY_SUPPORTED_FF
 LIBRARY   MGXMediaFileAPI.lib
+#endif
 
 LIBRARY   oommonitor.lib
+#ifdef RD_UI_TRANSITION_EFFECTS_LIST
+LIBRARY	 aknlistloadertfx.lib
+#endif //RD_UI_TRANSITION_EFFECTS_LIST
+LIBRARY aknpictograph.lib
+#ifdef RD_TACTILE_FEEDBACK
+LIBRARY         touchfeedback.lib
+#endif // RD_TACTILE_FEEDBACK
+LIBRARY         AknLayout2Scalable.lib
--- a/browserui/browser/Group/browsericons.txt	Mon Mar 30 12:49:49 2009 +0300
+++ b/browserui/browser/Group/browsericons.txt	Fri May 08 08:18:43 2009 +0300
@@ -95,4 +95,6 @@
 -c8,8 qgn_prop_folder_rss_error
 -c8,8 qgn_prop_file_rss_error
 -c8,8 qgn_indi_browser_tb_send_url
+-c8,8 qgn_indi_browser_tb_goto_and_search.svg
+-c8,8 qgn_prop_browser_info_small.svg
 
--- a/browserui/browser/SettingsInc/SettingsContainer.h	Mon Mar 30 12:49:49 2009 +0300
+++ b/browserui/browser/SettingsInc/SettingsContainer.h	Fri May 08 08:18:43 2009 +0300
@@ -151,6 +151,12 @@
         *
         */
         void HandleListBoxEventL(CEikListBox* aListBox,TListBoxEvent aEventType);
+        
+        /**
+        * HandleGainingForegroundL
+        * Handles Foreground Event.
+        */
+        void HandleGainingForegroundL();
 
     /**
     * New functions
@@ -258,6 +264,9 @@
 
         void AppendDownloadsOpenL( CDesCArray*& aItemArray,
                                 TBuf<KWmlSettingsItemMaxLength>& aItemText );
+                                
+        void AppendSearchProviderL( CDesCArray*& aItemArray,
+                                TBuf<KWmlSettingsItemMaxLength>& aItemText );
         //---------------------------------------------------------------------
         // Page Settings
         void AppendAutoLoadContentL( CDesCArray*& aItemArray,
@@ -378,6 +387,11 @@
 		*  Query user to select fromm user defined AP
 		*/
         void SelectUserDefinedAPL( TUint32& id );
+        
+        /**
+        *  Launch Search Application Settings View.
+        */
+        void RunSearchSettingsL();
 
 #ifdef __SERIES60_HELP
         /**
--- a/browserui/browser/SettingsInc/SettingsView.h	Mon Mar 30 12:49:49 2009 +0300
+++ b/browserui/browser/SettingsInc/SettingsView.h	Fri May 08 08:18:43 2009 +0300
@@ -122,6 +122,11 @@
         * @see CAknView
         */
 		void HandleClientRectChange();
+		
+		/**
+		* @see CAknView
+		*/
+		void  HandleForegroundEventL (TBool aForeground);
 
 	private: // MEikMenuObserver
 
--- a/browserui/browser/SettingsSrc/SettingsContainer.cpp	Mon Mar 30 12:49:49 2009 +0300
+++ b/browserui/browser/SettingsSrc/SettingsContainer.cpp	Fri May 08 08:18:43 2009 +0300
@@ -81,6 +81,7 @@
 _LIT( KSettingsCategoryListBoxItemNoIcon, " " );
 const TInt KDoesntExist = -1;
 const TInt KGranularity = 1;
+const TInt KMaxTitleLength = 512;
 
 
 _LIT( KWmlSettingsListBoxItemPrefix, " \t" );
@@ -418,6 +419,11 @@
     	{
     	AppendDownloadsOpenL( itemArray, itemText );
     	}
+    
+    if( ApiProvider().Preferences().SearchFeature() )
+    	{
+    	AppendSearchProviderL( itemArray, itemText );
+    	}
 
     RestoreListBoxIndexL();
     iSettingListBox->DrawNow();
@@ -686,7 +692,7 @@
         	{
 		    CreateItemFromTwoStringsL( 
 		    R_WMLBROWSER_SETTINGS_DEFAULT_AP, 
-		    R_WML_SETTINGS_ACCESS_POINT_ALWAYS_ASK, 
+		    R_WML_SETTINGS_ACCESS_POINT_ASK_WHEN_NEEDED, 
 		    aItemText );
 		        
 		    break;	
@@ -722,7 +728,7 @@
                     }   
                 }
             
-            HBufC* name = iCoeEnv->AllocReadResourceLC( R_WML_SETTINGS_ACCESS_POINT_ALWAYS_ASK );
+            HBufC* name = iCoeEnv->AllocReadResourceLC( R_WML_SETTINGS_ACCESS_POINT_ASK_WHEN_NEEDED );
             aItemText.Append( *name );
             CleanupStack::PopAndDestroy(); // name
                 
@@ -754,7 +760,7 @@
                 }
             else
                 {
-                HBufC* name = iCoeEnv->AllocReadResourceLC( R_WML_SETTINGS_ACCESS_POINT_ALWAYS_ASK );
+                HBufC* name = iCoeEnv->AllocReadResourceLC( R_WML_SETTINGS_ACCESS_POINT_ASK_WHEN_NEEDED );
                 aItemText.Append( *name );
                 CleanupStack::PopAndDestroy(); // name
                 
@@ -1088,6 +1094,40 @@
     }
 
 
+
+// -----------------------------------------------------------------------------
+// CSettingsContainer::AppendSearchProviderL
+// -----------------------------------------------------------------------------
+void CSettingsContainer::AppendSearchProviderL(
+                                                      CDesCArray*& aItemArray,
+                                                      TBuf<KWmlSettingsItemMaxLength>& aItemText)
+	{
+	aItemText.Zero();
+    aItemText.Append( KWmlSettingsListBoxItemPrefix );
+    HBufC* settingTitle = iCoeEnv->AllocReadResourceLC( R_BROWSERS_SETT_WEB_SEARCH_PROVIDER );
+    aItemText.Append( *settingTitle );
+    CleanupStack::PopAndDestroy(); // settingTitle
+    aItemText.Append( KWmlSettingsListBoxItemPostfix );
+    
+    HBufC* searchProvider = HBufC::NewLC( KMaxTitleLength );
+    TPtr searchProviderPtr = searchProvider->Des();
+    
+    ApiProvider().Preferences().GetStringValueL( KBrowserSearchProviderTitle,
+            KMaxTitleLength , searchProviderPtr);
+    
+    if(searchProvider->Compare(KNullDesC()) == 0)
+    	{
+    	CleanupStack::PopAndDestroy(searchProvider);
+    	searchProvider = iCoeEnv->AllocReadResourceLC( R_IS_LABEL_NOT_SELECTED );
+    	}
+    
+    aItemText.Append( *searchProvider );
+    CleanupStack::PopAndDestroy( searchProvider );
+    
+    aItemArray->AppendL( aItemText );
+    iSettingIndex->AppendL( EWmlSettingsSearchProvider );
+	}
+
 // -----------------------------------------------------------------------------
 // CSettingsContainer::AppendAutoLoadContentL
 // -----------------------------------------------------------------------------
@@ -2515,6 +2555,12 @@
             DisplayGeneralSettingsL();
             break;
     		}
+    		
+        case EWmlSettingsSearchProvider:
+        	{
+ 			RunSearchSettingsL();
+        	break;
+        	}
 
 
 
@@ -3252,6 +3298,7 @@
             	case EWmlSettingsShortCutKey0Cmd:
             	case EWmlSettingsShortCutKeyStarCmd:
             	case EWmlSettingsShortCutKeyHashCmd:
+            	case EWmlSettingsSearchProvider:
                 {
                 	ChangeItemL( ETrue );
                     ret = EKeyWasConsumed;
@@ -3281,6 +3328,11 @@
     return ret;
     }
 
+
+// -----------------------------------------------------------------------------
+// CSettingsContainer::HandleListBoxEventL
+// -----------------------------------------------------------------------------
+//
 void CSettingsContainer::HandleListBoxEventL(CEikListBox* aListBox,TListBoxEvent aEventType)
     {
     if (iPenEnabled)
@@ -3311,6 +3363,22 @@
 
 
 // -----------------------------------------------------------------------------
+// CSettingsContainer::HandleGainingForegroundL
+// -----------------------------------------------------------------------------
+//
+void CSettingsContainer::HandleGainingForegroundL()
+	{
+	switch(iCurrentSettingCategory)
+		{
+		case EGeneral:
+			DisplayGeneralSettingsL();
+			break;
+		default: // do nothing
+			break;
+		}
+	}
+
+// -----------------------------------------------------------------------------
 // CSettingsContainer::CreateItemFromTwoStringsL
 // -----------------------------------------------------------------------------
 //
@@ -3644,4 +3712,19 @@
         }
     }
 
+// -----------------------------------------------------------------------------
+// CSettingsContainer::RunSearchSettingsL
+// -----------------------------------------------------------------------------
+//
+void CSettingsContainer::RunSearchSettingsL()
+    {
+    // Get Search application UID from CenRep 
+    TInt id = ApiProvider().Preferences().GetIntValue( KBrowserSearchAppUid );
+    TUid searchAppId( TUid::Uid( id ) );
+    id = ApiProvider().Preferences().GetIntValue( KBrowserSearchProviderSettingViewId );
+    TUid settingViewId( TUid::Uid( id ) );
+    TVwsViewId viewToOpen(searchAppId, settingViewId);
+    CBrowserAppUi::Static()->ActivateViewL(viewToOpen);
+    } 
+
 // End of File
--- a/browserui/browser/SettingsSrc/SettingsView.cpp	Mon Mar 30 12:49:49 2009 +0300
+++ b/browserui/browser/SettingsSrc/SettingsView.cpp	Fri May 08 08:18:43 2009 +0300
@@ -268,6 +268,18 @@
         }
 	}
 
+// ---------------------------------------------------------
+// CBrowserSettingsView::HandleForegroundEventL
+// ---------------------------------------------------------
+//
+void CBrowserSettingsView::HandleForegroundEventL (TBool aForeground)
+	{
+	if(aForeground)
+		{
+		iContainer->HandleGainingForegroundL();
+		}
+	}
+
 // ---------------------------------------------------------------------------
 // CBrowserSettingsView::DynInitMenuPaneL
 // ---------------------------------------------------------------------------
--- a/browserui/browser/SrcData/Browser.hrh	Mon Mar 30 12:49:49 2009 +0300
+++ b/browserui/browser/SrcData/Browser.hrh	Fri May 08 08:18:43 2009 +0300
@@ -87,6 +87,8 @@
     EWmlCmdServiceOptions,
     EWmlCmdFavourites,
     EWmlCmdGoToAddress,
+    EWmlCmdGoToAddressAndSearch,
+    EIsCmdSearchWeb,	// launch search pane  
     EWmlCmdSaveAsBookmark,
     EWmlCmdReload,
     EWmlCmdBack,
@@ -470,6 +472,8 @@
     EWmlSettingsPopupBlocking,
     // Download Open Support
     EWmlSettingsDownloadsOpen, 
+    // Search provider support
+    EWmlSettingsSearchProvider,
     
     // toolbar buttons
     EWmlSettingsToolbarOnOff,
--- a/browserui/browser/SrcData/Browser.rss	Mon Mar 30 12:49:49 2009 +0300
+++ b/browserui/browser/SrcData/Browser.rss	Fri May 08 08:18:43 2009 +0300
@@ -485,6 +485,7 @@
     items =
         {
         MENU_ITEM { command = EWmlCmdGoToAddress; txt = qtn_browser_list_new_web_page; },
+        MENU_ITEM { command = EIsCmdSearchWeb; txt = qtn_is_list_search; },
         MENU_ITEM { command = EWmlCmdBackToPage; txt = qtn_wml_list_ret_page; },
         MENU_ITEM { command = EWmlCmdFavourites;  txt = qtn_wml_faves; },
         MENU_ITEM { command = EWmlCmdOpenFeedsFolder; txt = qtn_browser_list_web_feeds;},
@@ -915,4 +916,20 @@
 //RESOURCE TBUF r_update_tim                          { buf = "update infonote!"; }
 //RESOURCE TBUF r_about_tim                           { buf = "version infonote!"; }
 
+//=============================================================================
+//
+//  Service
+//
+//=============================================================================
+RESOURCE TBUF r_is_recommendations { buf = qtn_is_recommendations; }
+RESOURCE TBUF r_is_recommendations_title { buf = qtn_is_recommendations_title; }
 
+//=============================================================================
+//
+//  Search
+//
+//=============================================================================
+RESOURCE TBUF r_browsers_sett_web_search_provider { buf = qtn_browsers_sett_web_search_provider; }
+RESOURCE TBUF r_is_web_search { buf = qtn_is_web_search; }
+RESOURCE TBUF r_is_label_not_selected { buf = qtn_is_label_not_selected; } 
+
--- a/browserui/browser/SrcData/BrowserBookmarks.rssi	Mon Mar 30 12:49:49 2009 +0300
+++ b/browserui/browser/SrcData/BrowserBookmarks.rssi	Fri May 08 08:18:43 2009 +0300
@@ -227,6 +227,17 @@
   	    CBA_BUTTON { id = EWmlCmdGotoPaneGoTo; txt = qtn_wml_softk_go; }
 	    };
     }
+// No need for separate search command, active search editor is checked.
+RESOURCE CBA r_browser_bookmarks_cba_search_pane_search_cancel   
+    {
+    flags = EAknCBAFlagRespondWhenInvisible;
+    buttons =
+        {
+        CBA_BUTTON { id = EWmlCmdGotoPaneGoTo; txt = qtn_is_softkey_search; },
+        CBA_BUTTON { id = EWmlCmdGotoPaneCancel; txt = text_softkey_cancel; },
+        CBA_BUTTON { id = EWmlCmdGotoPaneGoTo; txt = qtn_is_softkey_search; }
+        };
+    }
 
 //adaptive popuplist needs it
 RESOURCE CBA r_browser_bookmarks_cba_goto_pane_opendir_cancel   // TEMP
@@ -516,6 +527,9 @@
 RESOURCE TBUF r_browser_bookmarks_dyn_sk_qtn_wml_softk_go
         { buf = qtn_wml_softk_go; }
 
+RESOURCE TBUF r_browser_bookmarks_dyn_sk_qtn_is_softk_search
+        { buf = qtn_is_softkey_search; }
+	
 RESOURCE TBUF r_browser_bookmarks_dyn_sk_text_softkey_back
         { buf = text_softkey_back; }
 
--- a/browserui/browser/SrcData/BrowserSettings.rssi	Mon Mar 30 12:49:49 2009 +0300
+++ b/browserui/browser/SrcData/BrowserSettings.rssi	Fri May 08 08:18:43 2009 +0300
@@ -794,7 +794,7 @@
 //
 
 RESOURCE TBUF r_wml_settings_access_point_user_defined	{ buf = qtn_wml_settings_access_point_user_defined; }
-RESOURCE TBUF r_wml_settings_access_point_always_ask	{ buf = qtn_wml_settings_access_point_always_ask; }
+RESOURCE TBUF r_wml_settings_access_point_ask_when_needed	{ buf = qtn_wml_settings_access_point_ask_when_needed; }
 
 #endif
 
--- a/browserui/browser/SrcData/BrowserToolbar.hrh	Mon Mar 30 12:49:49 2009 +0300
+++ b/browserui/browser/SrcData/BrowserToolbar.hrh	Fri May 08 08:18:43 2009 +0300
@@ -357,4 +357,10 @@
     //skin KAknsIIDQgnIndiBrowserTbSwitchWin
     }
 
+RESOURCE AVKON_BUTTON_STATE_EXTENSION r_browser_ext_qgn_indi_browser_tb_goto_and_search
+    {
+    bmbSkinIdMajor = EAknsMajorGeneric;
+    bmbSkinIdMinor = EAknsMinorGenericQgnIndiBrowserTbGotoAndSearch;
+    //skin KAknsIIDQgnIndiBrowserTbGotoAndSearch
+    }
 #endif // BROWSERTOOLBAR_HRH
--- a/browserui/browser/SrcData/bookmark_toolbar.rssi	Mon Mar 30 12:49:49 2009 +0300
+++ b/browserui/browser/SrcData/bookmark_toolbar.rssi	Fri May 08 08:18:43 2009 +0300
@@ -83,6 +83,27 @@
                 };
             }, 
            
+        TBAR_CTRL //Search Goto
+            {
+            type = EAknCtButton;
+            id = EWmlCmdGoToAddressAndSearch;     
+            control = AVKON_BUTTON
+                {
+                flags = 0;
+                states =
+                    {
+                    AVKON_BUTTON_STATE
+                        {
+                        txt     = "";  //Icon should always be visible instead of this
+                        helptxt = qtn_is_tooltip_goto_search;
+                        bmpfile = "\\Resource\\apps\\browser.mif";
+                        bmpid   = EMbmBrowserQgn_indi_browser_tb_goto_and_search;         
+                        bmpmask = EMbmBrowserQgn_indi_browser_tb_goto_and_search_mask;
+                        extension = r_browser_ext_qgn_indi_browser_tb_goto_and_search;
+                        }
+                    };
+                };
+            }, 
         TBAR_CTRL
             {
             type = EAknCtButton;
--- a/browserui/browser/SrcData/browser_toolbar.rssi	Mon Mar 30 12:49:49 2009 +0300
+++ b/browserui/browser/SrcData/browser_toolbar.rssi	Fri May 08 08:18:43 2009 +0300
@@ -337,6 +337,27 @@
          TBAR_CTRL
             {
             type = EAknCtButton;
+            id = EWmlCmdGoToAddressAndSearch;     
+            control = AVKON_BUTTON
+                {
+                flags = 0;
+                states =
+                    {
+                    AVKON_BUTTON_STATE
+                        {
+                        txt     = "";  //Icon should always be visible instead of this
+                        helptxt = qtn_is_tooltip_goto_search;
+                        bmpfile = "\\Resource\\apps\\browser.mif";
+                        bmpid   = EMbmBrowserQgn_indi_browser_tb_goto_and_search;         
+                        bmpmask = EMbmBrowserQgn_indi_browser_tb_goto_and_search_mask;
+                        extension = r_browser_ext_qgn_indi_browser_tb_goto_and_search;
+                        }
+                    };
+                };
+            },  
+         TBAR_CTRL
+            {
+            type = EAknCtButton;
             id = EWmlCmdHistoryBack;     
             
             control = AVKON_BUTTON
Binary file browserui/browser/conf/browserbookmarks.confml has changed
Binary file browserui/browser/conf/browserui.confml has changed
Binary file browserui/browser/conf/browserui_10008D39.crml has changed
--- a/browserui/browser/loc/WmlBrowser.loc	Mon Mar 30 12:49:49 2009 +0300
+++ b/browserui/browser/loc/WmlBrowser.loc	Fri May 08 08:18:43 2009 +0300
@@ -1510,6 +1510,10 @@
 //l:list_set_graphic_pane_t1
 #define qtn_wml_settings_access_point_always_ask "Always ask"
 
+//d:Browser settings selectable item texts
+//l:list_set_graphic_pane_t1
+#define qtn_wml_settings_access_point_ask_when_needed "Ask when needed"
+
 //d:Browser gotopane default text
 //l:query_popup_data_pane_t1/opt4
 #define qtn_browser_goto_text_enter_address  "Enter address"
--- a/browserui/group/bld.inf	Mon Mar 30 12:49:49 2009 +0300
+++ b/browserui/group/bld.inf	Fri May 08 08:18:43 2009 +0300
@@ -1,49 +1,21 @@
 /*
-* ==============================================================================
-*  Name        : bld.inf
-*  Part of     : Toplevel
-*  Interface   : 
-*  Description : Highlevel bld.inf
-*  Version     : 0.1
-*  Author			 : brmorris
+* Copyright (c) 2006-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".
 *
-*    Copyright (c) 2006-2008, Nokia Corporation
-*    All rights reserved.
-*  
-*  	Redistribution and use in source and binary forms, with or without
-*  	modification, are permitted provided that the following conditions
-*  	are met:
-*  
-*      * Redistributions of source code must retain the above copyright
-*        notice, this list of conditions and the following disclaimer.
-*      * Redistributions in binary form must reproduce the above copyright
-*        notice, this list of conditions and the following disclaimer in
-*        the documentation and/or other materials provided with the
-*        distribution.
-*      * Neither the name of the Nokia Corporation nor the names of its
-*        contributors may be used to endorse or promote products derived
-*        from this software without specific prior written permission.
-*  
-*  	THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-*  	"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-*  	LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-*  	A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-*  	OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-*  	SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-*  	LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-*  	DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-*  	THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-*  	(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
-*  	USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-*  	DAMAGE.
-*  
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
 *
-* ==============================================================================
+* Contributors:
+*
+* Description:  Project build file for Browser UI
+*
 */
 
 
-
-
 /*
 *   Order is important
 */
--- a/group/bld.inf	Mon Mar 30 12:49:49 2009 +0300
+++ b/group/bld.inf	Fri May 08 08:18:43 2009 +0300
@@ -1,49 +1,20 @@
 /*
-* ==============================================================================
-*  Name        : bld.inf
-*  Part of     : Toplevel
-*  Interface   : 
-*  Description : Highlevel bld.inf
-*  Version     : 0.1
-*  Author			 : brmorris
+* 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".
 *
-*    Copyright (c) 2006, Nokia Corporation
-*    All rights reserved.
-*  
-*  	Redistribution and use in source and binary forms, with or without
-*  	modification, are permitted provided that the following conditions
-*  	are met:
-*  
-*      * Redistributions of source code must retain the above copyright
-*        notice, this list of conditions and the following disclaimer.
-*      * Redistributions in binary form must reproduce the above copyright
-*        notice, this list of conditions and the following disclaimer in
-*        the documentation and/or other materials provided with the
-*        distribution.
-*      * Neither the name of the Nokia Corporation nor the names of its
-*        contributors may be used to endorse or promote products derived
-*        from this software without specific prior written permission.
-*  
-*  	THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-*  	"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-*  	LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-*  	A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-*  	OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-*  	SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-*  	LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-*  	DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-*  	THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-*  	(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
-*  	USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-*  	DAMAGE.
-*  
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
 *
-* ==============================================================================
+* Contributors:
+*
+* Description:  Project build file for webuis
+*
 */
 
-
-
-
 /*
 *   Order is important
 */