diff --git a/src/com/android/browser/NavigationBarBase.java b/src/com/android/browser/NavigationBarBase.java
index fd8869d..d1054b9 100644
--- a/src/com/android/browser/NavigationBarBase.java
+++ b/src/com/android/browser/NavigationBarBase.java
@@ -317,7 +317,8 @@
         Bundle bundle = new Bundle();
         bundle.putCharSequence(SiteSpecificPreferencesFragment.EXTRA_SITE,
                 mUiController.getCurrentTab().getUrl());
-
+        bundle.putCharSequence(SiteSpecificPreferencesFragment.EXTRA_SITE_TITLE,
+                mUiController.getCurrentTab().getTitle());
         bundle.putInt(SiteSpecificPreferencesFragment.EXTRA_WEB_REFINER_ADS_INFO, ads);
         bundle.putInt(SiteSpecificPreferencesFragment.EXTRA_WEB_REFINER_TRACKER_INFO, tracker);
         bundle.putInt(SiteSpecificPreferencesFragment.EXTRA_WEB_REFINER_MALWARE_INFO, malware);
diff --git a/src/com/android/browser/preferences/SiteSpecificPreferencesFragment.java b/src/com/android/browser/preferences/SiteSpecificPreferencesFragment.java
index b5762a5..0b3ec8a 100644
--- a/src/com/android/browser/preferences/SiteSpecificPreferencesFragment.java
+++ b/src/com/android/browser/preferences/SiteSpecificPreferencesFragment.java
@@ -81,6 +81,7 @@
     public static final String EXTRA_SITE = "website";
     public static final String EXTRA_ORIGIN = "website_origin";
     public static final String EXTRA_FAVICON = "website_favicon";
+    public static final String EXTRA_SITE_TITLE = "website_title";
     public static final String EXTRA_WEB_REFINER_ADS_INFO = "website_refiner_ads_info";
     public static final String EXTRA_WEB_REFINER_TRACKER_INFO = "website_refiner_tracker_info";
     public static final String EXTRA_WEB_REFINER_MALWARE_INFO = "website_refiner_malware_info";
@@ -193,6 +194,7 @@
     private SiteSecurityViewFactory mSecurityViews;
 
     private String mOriginText;
+    private String mSiteTitle;
 
     @Override
     public void onCreate(Bundle savedInstanceState) {
@@ -209,6 +211,7 @@
         Bundle args = getArguments();
         if (args != null) {
             mOriginText = args.getString(EXTRA_ORIGIN, null);
+            mSiteTitle = args.getString(EXTRA_SITE_TITLE, null);
 
             if (mOriginText == null) {
                 mOriginText = args.getString(EXTRA_SITE);
@@ -224,10 +227,15 @@
                     mPermServ = value;
                     Preference pref = findPreference("site_name");
 
-                    pref.setTitle(mOriginText);
+                    pref.setTitle((mSiteTitle != null) ?
+                            mSiteTitle :
+                            mOriginText);
+
                     try {
                         URL url = new URL(mOriginText);
-                        pref.setSummary("(" + url.getHost() + ")");
+                        pref.setSummary((mSiteTitle != null) ?
+                                mOriginText :
+                                "(" + url.getHost() + ")");
                     } catch (MalformedURLException e) {
                     }
                     mOriginInfo = mPermServ.getOriginInfo(mOriginText);
