diff --git a/src/com/android/browser/AddBookmarkFolder.java b/src/com/android/browser/AddBookmarkFolder.java
index 521508e..3ed55fc 100644
--- a/src/com/android/browser/AddBookmarkFolder.java
+++ b/src/com/android/browser/AddBookmarkFolder.java
@@ -31,6 +31,7 @@
 import android.graphics.drawable.Drawable;
 import android.net.Uri;
 import android.os.Bundle;
+import android.util.Log;
 import android.text.TextUtils;
 import android.view.KeyEvent;
 import android.view.LayoutInflater;
@@ -73,6 +74,8 @@
 
     /* package */static final String EXTRA_IS_FOLDER = "is_folder";
 
+    private final static String LOGTAG = "AddBookmarkFolder";
+
     private static final int MAX_CRUMBS_SHOWN = 1;
 
     private long mOriginalFolder = -1;
@@ -586,6 +589,11 @@
 
     @Override
     protected void onCreate(Bundle icicle) {
+        if (!EngineInitializer.isInitialized()) {
+            Log.e(LOGTAG, "Engine not Initialized");
+            EngineInitializer.initializeSync((Context) getApplicationContext());
+        }
+
         super.onCreate(icicle);
         requestWindowFeature(Window.FEATURE_NO_TITLE);
 
diff --git a/src/com/android/browser/AddBookmarkPage.java b/src/com/android/browser/AddBookmarkPage.java
index 25cde08..2c99b6e 100644
--- a/src/com/android/browser/AddBookmarkPage.java
+++ b/src/com/android/browser/AddBookmarkPage.java
@@ -58,6 +58,7 @@
 import android.widget.Spinner;
 import android.widget.TextView;
 import android.widget.Toast;
+import android.util.Log;
 
 import com.android.browser.BrowserUtils;
 import com.android.browser.R;
@@ -645,6 +646,10 @@
 
     @Override
     protected void onCreate(Bundle icicle) {
+        if (!EngineInitializer.isInitialized()) {
+            Log.e(LOGTAG, "Engine not Initialized");
+            EngineInitializer.initializeSync((Context) getApplicationContext());
+        }
         super.onCreate(icicle);
         requestWindowFeature(Window.FEATURE_NO_TITLE);
 
diff --git a/src/com/android/browser/BookmarkSearch.java b/src/com/android/browser/BookmarkSearch.java
index 4d3ca0f..6313015 100644
--- a/src/com/android/browser/BookmarkSearch.java
+++ b/src/com/android/browser/BookmarkSearch.java
@@ -17,18 +17,24 @@
 package com.android.browser;
 
 import android.app.Activity;
+import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
-
+import android.util.Log;
 /**
  * This activity is never started from the browser. Its purpose is to provide bookmark suggestions
  * to global search (through its searchable meta-data), and to handle the intents produced
  * by clicking such suggestions.
  */
 public class BookmarkSearch extends Activity {
+    private final String LOGTAG = "BookmarkSearch";
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
+        if (!EngineInitializer.isInitialized()) {
+            Log.e(LOGTAG, "Engine not Initialized");
+            EngineInitializer.initializeSync((Context) getApplicationContext());
+        }
         super.onCreate(savedInstanceState);
         Intent intent = getIntent();
         if (intent != null) {
diff --git a/src/com/android/browser/ComboViewActivity.java b/src/com/android/browser/ComboViewActivity.java
index 4731451..5c6df08 100644
--- a/src/com/android/browser/ComboViewActivity.java
+++ b/src/com/android/browser/ComboViewActivity.java
@@ -17,17 +17,20 @@
 
 import android.app.ActionBar;
 import android.app.Activity;
+import android.content.Context;
 import android.content.Intent;
 import android.net.Uri;
 import android.os.Bundle;
 import android.support.v4.view.ViewPager;
 import android.view.Menu;
 import android.view.MenuItem;
+import android.util.Log;
 
 import com.android.browser.UI.ComboViews;
 
 public class ComboViewActivity extends Activity implements CombinedBookmarksCallbacks {
 
+    private static final String LOGTAG = "ComboViewActivity";
     private static final String STATE_SELECTED_TAB = "tab";
     public static final String EXTRA_COMBO_ARGS = "combo_args";
     public static final String EXTRA_INITIAL_VIEW = "initial_view";
@@ -40,6 +43,10 @@
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
+        if (!EngineInitializer.isInitialized()) {
+            Log.e(LOGTAG, "Engine not Initialized");
+            EngineInitializer.initializeSync((Context) getApplicationContext());
+        }
         super.onCreate(savedInstanceState);
         setResult(RESULT_CANCELED);
         Bundle extras = getIntent().getExtras();
diff --git a/src/com/android/browser/DownloadSettings.java b/src/com/android/browser/DownloadSettings.java
index 05e7fe6..aa528d2 100644
--- a/src/com/android/browser/DownloadSettings.java
+++ b/src/com/android/browser/DownloadSettings.java
@@ -54,6 +54,7 @@
 import android.text.TextUtils;
 import android.content.pm.PackageManager;
 import android.Manifest.permission;
+import android.content.Context;
 
 import com.android.browser.reflect.ReflectHelper;
 
@@ -91,6 +92,10 @@
     private int nextRequestCode = 2000;
 
     protected void onCreate(Bundle savedInstanceState) {
+        if (!EngineInitializer.isInitialized()) {
+            Log.e(LOGTAG, "Engine not Initialized");
+            EngineInitializer.initializeSync((Context) getApplicationContext());
+        }
         super.onCreate(savedInstanceState);
         // initial the DownloadSettings view
         requestWindowFeature(Window.FEATURE_NO_TITLE);
diff --git a/src/com/android/browser/ShortcutActivity.java b/src/com/android/browser/ShortcutActivity.java
index dcc176f..f947fe9 100644
--- a/src/com/android/browser/ShortcutActivity.java
+++ b/src/com/android/browser/ShortcutActivity.java
@@ -24,14 +24,21 @@
 import android.os.Bundle;
 import android.view.View;
 import android.view.View.OnClickListener;
+import android.util.Log;
+import android.content.Context;
 
 public class ShortcutActivity extends Activity
     implements BookmarksPageCallbacks, OnClickListener {
 
+    private static final String LOGTAG = "ShortcutActivity";
     private BrowserBookmarksPage mBookmarks;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
+        if (!EngineInitializer.isInitialized()) {
+            Log.e(LOGTAG, "Engine not Initialized");
+            EngineInitializer.initializeSync((Context) getApplicationContext());
+        }
         super.onCreate(savedInstanceState);
         setTitle(R.string.shortcut_bookmark_title);
         setContentView(R.layout.pick_bookmark);
diff --git a/src/com/android/browser/mynavigation/AddMyNavigationPage.java b/src/com/android/browser/mynavigation/AddMyNavigationPage.java
index cc42d96..430b5dd 100755
--- a/src/com/android/browser/mynavigation/AddMyNavigationPage.java
+++ b/src/com/android/browser/mynavigation/AddMyNavigationPage.java
@@ -55,6 +55,7 @@
 import com.android.browser.R;
 import com.android.browser.UrlUtils;
 import com.android.browser.platformsupport.WebAddress;
+import com.android.browser.EngineInitializer;
 
 import java.io.ByteArrayOutputStream;
 import java.net.URI;
@@ -88,6 +89,10 @@
     };
 
     protected void onCreate(Bundle icicle) {
+        if (!EngineInitializer.isInitialized()) {
+            Log.e(LOGTAG, "Engine not Initialized");
+            EngineInitializer.initializeSync((Context) getApplicationContext());
+        }
         super.onCreate(icicle);
         requestWindowFeature(Window.FEATURE_NO_TITLE);
         setContentView(R.layout.my_navigation_add_page);
diff --git a/src/com/android/browser/preferences/LegalPreviewActivity.java b/src/com/android/browser/preferences/LegalPreviewActivity.java
index 4ca9d63..94ffea4 100644
--- a/src/com/android/browser/preferences/LegalPreviewActivity.java
+++ b/src/com/android/browser/preferences/LegalPreviewActivity.java
@@ -37,15 +37,23 @@
 import android.support.v4.app.FragmentActivity;
 import android.view.KeyEvent;
 import android.view.MenuItem;
+import android.util.Log;
+import android.content.Context;
+import com.android.browser.EngineInitializer;
 
 import com.android.browser.R;
 
 public class LegalPreviewActivity extends FragmentActivity {
     LegalPreviewFragment mLegalPreviewFragment;
     protected static final String URL_INTENT_EXTRA = "url";
+    private final static String LOGTAG = "LegalPreviewActivity";
 
     @Override
     public void onCreate(Bundle savedInstanceState) {
+        if (!EngineInitializer.isInitialized()) {
+            Log.e(LOGTAG, "Engine not Initialized");
+            EngineInitializer.initializeSync((Context) getApplicationContext());
+        }
         super.onCreate(savedInstanceState);
         setContentView(R.layout.credits_tab);
         ActionBar bar = getActionBar();
diff --git a/src/com/android/browser/widget/BookmarkWidgetConfigure.java b/src/com/android/browser/widget/BookmarkWidgetConfigure.java
index 2dee989..f0309aa 100644
--- a/src/com/android/browser/widget/BookmarkWidgetConfigure.java
+++ b/src/com/android/browser/widget/BookmarkWidgetConfigure.java
@@ -29,22 +29,29 @@
 import android.view.View.OnClickListener;
 import android.widget.ArrayAdapter;
 import android.widget.ListView;
+import android.util.Log;
 
 import com.android.browser.R;
 import com.android.browser.AddBookmarkPage.BookmarkAccount;
 import com.android.browser.platformsupport.BrowserContract.Accounts;
 import com.android.browser.provider.BrowserProvider2;
+import com.android.browser.EngineInitializer;
 
 public class BookmarkWidgetConfigure extends ListActivity
         implements OnClickListener, LoaderCallbacks<Cursor> {
 
     static final int LOADER_ACCOUNTS = 1;
+    private static final String LOGTAG = "BookmarkWidgetConfigure";
 
     private ArrayAdapter<BookmarkAccount> mAccountAdapter;
     private int mAppWidgetId = AppWidgetManager.INVALID_APPWIDGET_ID;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
+        if (!EngineInitializer.isInitialized()) {
+            Log.e(LOGTAG, "Engine not Initialized");
+            EngineInitializer.initializeSync((Context) getApplicationContext());
+        }
         super.onCreate(savedInstanceState);
         setResult(RESULT_CANCELED);
         setVisible(false);
