Merge "Faster all the things!"
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index e21c539..ae84d79 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -66,7 +66,6 @@
                   android:alwaysRetainTaskState="true"
                   android:configChanges="orientation|keyboardHidden|keyboard|screenSize"
                   android:theme="@style/BrowserTheme"
-                  android:hardwareAccelerated="false"
                   android:windowSoftInputMode="adjustResize" >
             <intent-filter>
                 <action android:name="android.speech.action.VOICE_SEARCH_RESULTS" />
diff --git a/src/com/android/browser/BrowserActivity.java b/src/com/android/browser/BrowserActivity.java
index 084ace0..690e29f 100644
--- a/src/com/android/browser/BrowserActivity.java
+++ b/src/com/android/browser/BrowserActivity.java
@@ -65,24 +65,6 @@
             return;
         }
 
-        BrowserSettings settings = BrowserSettings.getInstance();
-
-        // render the browser in OpenGL
-        if (settings.isHardwareAccelerated()) {
-            // Set the flag in the activity's window
-            this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
-                    WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
-        } else {
-            // Clear the flag in the activity's window
-            this.getWindow().setFlags(0, WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
-        }
-
-        AccessibilityManager accessibilityManager = (AccessibilityManager)
-                getSystemService(ACCESSIBILITY_SERVICE);
-        if (accessibilityManager != null && accessibilityManager.isEnabled()) {
-            setDefaultKeyMode(DEFAULT_KEYS_DISABLE);
-        }
-
         mController = new Controller(this, icicle == null);
         boolean xlarge = isTablet(this);
         if (xlarge) {
diff --git a/src/com/android/browser/BrowserSettings.java b/src/com/android/browser/BrowserSettings.java
index ad42146..d4f1ba3 100644
--- a/src/com/android/browser/BrowserSettings.java
+++ b/src/com/android/browser/BrowserSettings.java
@@ -405,7 +405,6 @@
     }
 
     public boolean isDebugEnabled() {
-        requireInitialization();
         return mPrefs.getBoolean(PREF_DEBUG_MENU, false);
     }
 
diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java
index cb0d348..551be38 100644
--- a/src/com/android/browser/Controller.java
+++ b/src/com/android/browser/Controller.java
@@ -87,7 +87,6 @@
 import com.android.common.Search;
 
 import java.io.ByteArrayOutputStream;
-import java.io.File;
 import java.net.URLEncoder;
 import java.util.ArrayList;
 import java.util.Calendar;
@@ -215,20 +214,6 @@
 
     private boolean mBlockEvents;
 
-    private static class ClearThumbnails extends AsyncTask<File, Void, Void> {
-        @Override
-        public Void doInBackground(File... files) {
-            if (files != null) {
-                for (File f : files) {
-                    if (!f.delete()) {
-                        Log.e(LOGTAG, f.getPath() + " was not deleted");
-                    }
-                }
-            }
-            return null;
-        }
-    }
-
     public Controller(Activity browser, boolean preloadCrashState) {
         mActivity = browser;
         mSettings = BrowserSettings.getInstance();
@@ -354,11 +339,6 @@
             // Handle the intent
             mIntentHandler.onNewIntent(intent);
         }
-        // clear up the thumbnail directory, which is no longer used;
-        // ideally this should only be run once after an upgrade from
-        // a previous version of the browser
-        new ClearThumbnails().execute(mTabControl.getThumbnailDir()
-                .listFiles());
         // Read JavaScript flags if it exists.
         String jsFlags = getSettings().getJsEngineFlags();
         if (jsFlags.trim().length() != 0) {
diff --git a/src/com/android/browser/Tab.java b/src/com/android/browser/Tab.java
index abc2467..d7ce29b 100644
--- a/src/com/android/browser/Tab.java
+++ b/src/com/android/browser/Tab.java
@@ -1664,6 +1664,7 @@
 
     void resume() {
         if (mMainView != null) {
+            setupHwAcceleration(mMainView);
             mMainView.onResume();
             if (mSubView != null) {
                 mSubView.onResume();
@@ -1671,6 +1672,16 @@
         }
     }
 
+    private void setupHwAcceleration(View web) {
+        if (web == null) return;
+        BrowserSettings settings = BrowserSettings.getInstance();
+        if (settings.isHardwareAccelerated()) {
+            web.setLayerType(View.LAYER_TYPE_NONE, null);
+        } else {
+            web.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
+        }
+    }
+
     void pause() {
         if (mMainView != null) {
             mMainView.onPause();
diff --git a/src/com/android/browser/TabControl.java b/src/com/android/browser/TabControl.java
index 38a46a8..e99071a 100644
--- a/src/com/android/browser/TabControl.java
+++ b/src/com/android/browser/TabControl.java
@@ -20,7 +20,6 @@
 import android.util.Log;
 import android.webkit.WebView;
 
-import java.io.File;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -51,7 +50,6 @@
     // the main browser controller
     private final Controller mController;
 
-    private final File mThumbnailDir;
     private OnThumbnailUpdatedListener mOnThumbnailUpdatedListener;
 
     /**
@@ -59,8 +57,6 @@
      */
     TabControl(Controller controller) {
         mController = controller;
-        mThumbnailDir = mController.getActivity()
-                .getDir("thumbnails", 0);
         mMaxTabs = mController.getMaxTabs();
         mTabs = new ArrayList<Tab>(mMaxTabs);
         mTabQueue = new ArrayList<Tab>(mMaxTabs);
@@ -70,10 +66,6 @@
         return sNextId++;
     }
 
-    File getThumbnailDir() {
-        return mThumbnailDir;
-    }
-
     /**
      * Return the current tab's main WebView. This will always return the main
      * WebView for a given tab and not a subwindow.
diff --git a/src/com/android/browser/preferences/DebugPreferencesFragment.java b/src/com/android/browser/preferences/DebugPreferencesFragment.java
index 566eee2..24821d1 100644
--- a/src/com/android/browser/preferences/DebugPreferencesFragment.java
+++ b/src/com/android/browser/preferences/DebugPreferencesFragment.java
@@ -16,21 +16,18 @@
 
 package com.android.browser.preferences;
 
-import com.android.browser.BrowserActivity;
+import android.os.Bundle;
+import android.preference.Preference;
+import android.preference.Preference.OnPreferenceClickListener;
+import android.preference.PreferenceFragment;
+
 import com.android.browser.BrowserSettings;
 import com.android.browser.GoogleAccountLogin;
 import com.android.browser.PreferenceKeys;
 import com.android.browser.R;
 
-import android.content.Intent;
-import android.os.Bundle;
-import android.preference.Preference;
-import android.preference.Preference.OnPreferenceChangeListener;
-import android.preference.Preference.OnPreferenceClickListener;
-import android.preference.PreferenceFragment;
-
 public class DebugPreferencesFragment extends PreferenceFragment
-        implements OnPreferenceChangeListener, OnPreferenceClickListener {
+        implements OnPreferenceClickListener {
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -38,21 +35,11 @@
         // Load the XML preferences file
         addPreferencesFromResource(R.xml.debug_preferences);
 
-        Preference e = findPreference(PreferenceKeys.PREF_ENABLE_HARDWARE_ACCEL);
-        e.setOnPreferenceChangeListener(this);
-        e = findPreference(PreferenceKeys.PREF_RESET_PRELOGIN);
+        Preference e = findPreference(PreferenceKeys.PREF_RESET_PRELOGIN);
         e.setOnPreferenceClickListener(this);
     }
 
     @Override
-    public boolean onPreferenceChange(Preference preference, Object newValue) {
-        // Attempt to restart
-        startActivity(new Intent(BrowserActivity.ACTION_RESTART, null,
-                getActivity(), BrowserActivity.class));
-        return true;
-    }
-
-    @Override
     public boolean onPreferenceClick(Preference preference) {
         if (PreferenceKeys.PREF_RESET_PRELOGIN.equals(preference.getKey())) {
             BrowserSettings.getInstance().getPreferences().edit()