diff --git a/src/com/android/browser/BrowserActivity.java b/src/com/android/browser/BrowserActivity.java
index 1ace9fd..dd17141 100644
--- a/src/com/android/browser/BrowserActivity.java
+++ b/src/com/android/browser/BrowserActivity.java
@@ -19,10 +19,8 @@
 import android.app.Activity;
 import android.app.AlertDialog;
 import android.app.KeyguardManager;
-import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
-import android.content.IntentFilter;
 import android.content.res.Configuration;
 import android.os.Bundle;
 import android.os.Handler;
@@ -46,19 +44,15 @@
 import com.android.browser.search.SearchEngine;
 import com.android.browser.stub.NullController;
 
-import org.chromium.content.browser.TracingIntentHandler;
 import org.codeaurora.swe.WebSettings;
 import org.codeaurora.swe.WebView;
+import org.chromium.content.browser.TracingControllerAndroid;
 
 public class BrowserActivity extends Activity {
 
     public static final String ACTION_SHOW_BOOKMARKS = "show_bookmarks";
     public static final String ACTION_SHOW_BROWSER = "show_browser";
     public static final String ACTION_RESTART = "--restart--";
-    private static final String ACTION_START_TRACE =
-            "org.chromium.content_shell.action.PROFILE_START";
-    private static final String ACTION_STOP_TRACE =
-            "org.chromium.content_shell.action.PROFILE_STOP";
     private static final String EXTRA_STATE = "state";
     public static final String EXTRA_DISABLE_URL_OVERRIDE = "disable_url_override";
 
@@ -67,6 +61,7 @@
     private final static boolean LOGV_ENABLED = Browser.LOGV_ENABLED;
 
     private ActivityController mController = NullController.INSTANCE;
+    private TracingControllerAndroid mTracingController;
 
 
     private Handler mHandler = new Handler();
@@ -85,8 +80,12 @@
         }
     };
 
-    private BroadcastReceiver mReceiver;
-
+    private TracingControllerAndroid getTracingController() {
+        if (mTracingController == null) {
+            mTracingController = new TracingControllerAndroid(this);
+        }
+        return mTracingController;
+    }
 
     @Override
     public void onCreate(Bundle icicle) {
@@ -185,27 +184,8 @@
             Log.v(LOGTAG, "BrowserActivity.onResume: this=" + this);
         }
         mController.onResume();
-        IntentFilter intentFilter = new IntentFilter(ACTION_START_TRACE);
-        intentFilter.addAction(ACTION_STOP_TRACE);
-        mReceiver = new BroadcastReceiver() {
-            @Override
-            public void onReceive(Context context, Intent intent) {
-                String action = intent.getAction();
-                String extra = intent.getStringExtra("file");
-                if (ACTION_START_TRACE.equals(action)) {
-                    if (extra.isEmpty()) {
-                        Log.e(LOGTAG, "Can not start tracing without specifing saving location");
-                    } else {
-                        TracingIntentHandler.beginTracing(extra);
-                        Log.i(LOGTAG, "start tracing");
-                    }
-                } else if (ACTION_STOP_TRACE.equals(action)) {
-                    Log.i(LOGTAG, "stop tracing");
-                    TracingIntentHandler.endTracing();
-                }
-            }
-        };
-        registerReceiver(mReceiver, intentFilter);
+
+        getTracingController().registerReceiver(this);
     }
 
     @Override
@@ -244,6 +224,7 @@
     protected void onPause() {
         mController.onPause();
         super.onPause();
+        getTracingController().unregisterReceiver(this);
     }
 
     @Override
diff --git a/src/com/android/browser/BrowserSettings.java b/src/com/android/browser/BrowserSettings.java
index 0281167..26f14bb 100644
--- a/src/com/android/browser/BrowserSettings.java
+++ b/src/com/android/browser/BrowserSettings.java
@@ -541,13 +541,8 @@
             }
         }
         if (settings != null) {
-            settings.clearPasswords();
+            //settings.clearPasswords();
         }
-
-        // Clear passwords in WebView database
-        WebViewDatabase db = WebViewDatabase.getInstance(mContext);
-        db.clearUsernamePassword();
-        db.clearHttpAuthUsernamePassword();
     }
 
     public void clearDatabases() {
diff --git a/src/com/android/browser/homepages/HomeProvider.java b/src/com/android/browser/homepages/HomeProvider.java
index 045cdb8..291348d 100644
--- a/src/com/android/browser/homepages/HomeProvider.java
+++ b/src/com/android/browser/homepages/HomeProvider.java
@@ -26,8 +26,10 @@
 import android.util.Log;
 import android.webkit.WebResourceResponse;
 
+import com.android.browser.BrowserConfig;
 import com.android.browser.BrowserSettings;
 
+
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
@@ -37,7 +39,7 @@
 public class HomeProvider extends ContentProvider {
 
     private static final String TAG = "HomeProvider";
-    public static final String AUTHORITY = "com.android.browser.home";
+    public static final String AUTHORITY = BrowserConfig.AUTHORITY + ".home";
     public static final String MOST_VISITED = "content://" + AUTHORITY + "/index";
 
     @Override
@@ -121,4 +123,4 @@
         return true;
     }
 
-}
\ No newline at end of file
+}
diff --git a/src/com/android/browser/mynavigation/MyNavigationUtil.java b/src/com/android/browser/mynavigation/MyNavigationUtil.java
index 3b1836d..1874c3f 100755
--- a/src/com/android/browser/mynavigation/MyNavigationUtil.java
+++ b/src/com/android/browser/mynavigation/MyNavigationUtil.java
@@ -37,6 +37,8 @@
 import android.net.Uri;
 import android.util.Log;
 
+import com.android.browser.BrowserConfig;
+
 public class MyNavigationUtil {
 
     public static final String ID = "_id";
@@ -48,10 +50,9 @@
     public static final String THUMBNAIL = "thumbnail";
     public static final int WEBSITE_NUMBER = 12;
 
-    public static final String AUTHORITY = "com.android.browser.mynavigation";
+    public static final String AUTHORITY = BrowserConfig.AUTHORITY + ".mynavigation";
     public static final String MY_NAVIGATION = "content://" + AUTHORITY + "/" + "websites";
-    public static final Uri MY_NAVIGATION_URI = Uri
-            .parse("content://com.android.browser.mynavigation/websites");
+    public static final Uri MY_NAVIGATION_URI = Uri.parse(MY_NAVIGATION);
     public static final String DEFAULT_THUMB = "default_thumb";
     public static final String LOGTAG = "MyNavigationUtil";
 
diff --git a/src/com/android/browser/platformsupport/BrowserContract.java b/src/com/android/browser/platformsupport/BrowserContract.java
index 755e6a3..79bdfb8 100644
--- a/src/com/android/browser/platformsupport/BrowserContract.java
+++ b/src/com/android/browser/platformsupport/BrowserContract.java
@@ -30,6 +30,8 @@
 import android.os.RemoteException;
 import android.util.Pair;
 import android.provider.SyncStateContract;
+
+import com.android.browser.BrowserConfig;
 /**
  * <p>
  * The contract between the browser provider and applications. Contains the definition
@@ -44,7 +46,7 @@
  */
 public class BrowserContract {
     /** The authority for the browser provider */
-    public static final String AUTHORITY = "com.android.browser";
+    public static final String AUTHORITY = BrowserConfig.AUTHORITY;
 
     /** A content:// style uri to the authority for the browser provider */
     public static final Uri AUTHORITY_URI = Uri.parse("content://" + AUTHORITY);
diff --git a/src/com/android/browser/provider/SnapshotProvider.java b/src/com/android/browser/provider/SnapshotProvider.java
index 3226c11..923613c 100644
--- a/src/com/android/browser/provider/SnapshotProvider.java
+++ b/src/com/android/browser/provider/SnapshotProvider.java
@@ -27,6 +27,7 @@
 import android.database.sqlite.SQLiteQueryBuilder;
 import android.net.Uri;
 
+import com.android.browser.BrowserConfig;
 import com.android.browser.platformsupport.BrowserContract;
 
 import android.text.TextUtils;
@@ -55,7 +56,7 @@
         public static final String VIEWSTATE_SIZE = "viewstate_size";
     }
 
-    public static final String AUTHORITY = "com.android.browser.snapshots";
+    public static final String AUTHORITY = BrowserConfig.AUTHORITY + ".snapshots";
     public static final Uri AUTHORITY_URI = Uri.parse("content://" + AUTHORITY);
 
     static final String TABLE_SNAPSHOTS = "snapshots";
diff --git a/src/com/android/browser/widget/BookmarkThumbnailWidgetProvider.java b/src/com/android/browser/widget/BookmarkThumbnailWidgetProvider.java
index f3d2675..4b3ae96 100644
--- a/src/com/android/browser/widget/BookmarkThumbnailWidgetProvider.java
+++ b/src/com/android/browser/widget/BookmarkThumbnailWidgetProvider.java
@@ -26,6 +26,7 @@
 import android.widget.RemoteViews;
 
 import com.android.browser.BrowserActivity;
+import com.android.browser.BrowserConfig;
 import com.android.browser.R;
 
 /**
@@ -33,7 +34,7 @@
  */
 public class BookmarkThumbnailWidgetProvider extends AppWidgetProvider {
     public static final String ACTION_BOOKMARK_APPWIDGET_UPDATE =
-        "com.android.browser.BOOKMARK_APPWIDGET_UPDATE";
+        BrowserConfig.AUTHORITY +".BOOKMARK_APPWIDGET_UPDATE";
 
     @Override
     public void onReceive(Context context, Intent intent) {
diff --git a/src/com/android/browser/widget/BookmarkThumbnailWidgetService.java b/src/com/android/browser/widget/BookmarkThumbnailWidgetService.java
index 6f5e3b2..6c80695 100644
--- a/src/com/android/browser/widget/BookmarkThumbnailWidgetService.java
+++ b/src/com/android/browser/widget/BookmarkThumbnailWidgetService.java
@@ -35,6 +35,7 @@
 import android.widget.RemoteViewsService;
 
 import com.android.browser.BrowserActivity;
+import com.android.browser.BrowserConfig;
 import com.android.browser.R;
 import com.android.browser.platformsupport.BrowserContract;
 import com.android.browser.platformsupport.BrowserContract.Bookmarks;
@@ -49,7 +50,7 @@
 public class BookmarkThumbnailWidgetService extends RemoteViewsService {
 
     static final String TAG = "BookmarkThumbnailWidgetService";
-    static final String ACTION_CHANGE_FOLDER = "com.android.browser.widget.CHANGE_FOLDER";
+    static final String ACTION_CHANGE_FOLDER = BrowserConfig.AUTHORITY+ ".widget.CHANGE_FOLDER";
     static final String STATE_CURRENT_FOLDER = "current_folder";
     static final String STATE_ROOT_FOLDER = "root_folder";
 
