Add a UI for setting JS flags.

The UI only shows up when 'about:debug' is typed in the address bar.
JS flags are a string '--heap-stats --log-gc' in V8 etc.

Currently this is only used by V8 build for debugging purpose.
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 68742e1..8d31462 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -431,6 +431,8 @@
     <!-- Do not tranlsate.  Development option -->
     <string name="pref_development_search_url" translatable="false">Set search URL</string>
     <!-- Do not tranlsate.  Development option -->
+    <string name="js_engine_flags" translatable="false">Set JS flags</string>
+    <!-- Do not tranlsate.  Development option -->
     <string name="pref_development_uastring" translatable="false">UAString</string>
     <!-- Do not tranlsate.  Development option -->
     <string-array name="pref_development_ua_choices" translatable="false">
diff --git a/res/xml/debug_preferences.xml b/res/xml/debug_preferences.xml
index 4f55f6b..c39ae5b 100644
--- a/res/xml/debug_preferences.xml
+++ b/res/xml/debug_preferences.xml
@@ -51,9 +51,14 @@
             android:title="@string/pref_development_nav_dump" />
 
         <com.android.browser.BrowserSearchpagePreference
-                android:key="search_url" 
-                android:title="@string/pref_development_search_url"
-                android:singleLine="true" />
+            android:key="search_url"
+            android:title="@string/pref_development_search_url"
+            android:singleLine="true" />
+
+        <EditTextPreference
+            android:key="js_engine_flags"
+            android:title="@string/js_engine_flags"
+            android:singleLine="true" />
 
         <ListPreference
             android:key="user_agent"
diff --git a/src/com/android/browser/BrowserActivity.java b/src/com/android/browser/BrowserActivity.java
index 8336837..1c2c6af 100644
--- a/src/com/android/browser/BrowserActivity.java
+++ b/src/com/android/browser/BrowserActivity.java
@@ -783,6 +783,11 @@
             // are not animating from the tab picker.
             attachTabToContentView(mTabControl.getCurrentTab());
         }
+        // Read JavaScript flags if it exists.
+        String jsFlags = mSettings.getJsFlags();
+        if (jsFlags.trim().length() != 0) {
+            mTabControl.getCurrentWebView().setJsFlags(jsFlags);
+        }
 
         /* enables registration for changes in network status from
            http stack */
diff --git a/src/com/android/browser/BrowserSettings.java b/src/com/android/browser/BrowserSettings.java
index 4f4d440..762149b 100644
--- a/src/com/android/browser/BrowserSettings.java
+++ b/src/com/android/browser/BrowserSettings.java
@@ -83,6 +83,7 @@
     private boolean appCacheEnabled = true;
     private String appCachePath;  // default value set in loadFromDb().
     private boolean domStorageEnabled = true;
+    private String jsFlags = "";
 
     private final static String TAG = "BrowserSettings";
 
@@ -94,6 +95,7 @@
     private boolean tracing = false;
     private boolean lightTouch = false;
     private boolean navDump = false;
+
     // Browser only settings
     private boolean doFlick = false;
 
@@ -327,7 +329,9 @@
             mTabControl.getBrowserActivity().setBaseSearchUrl(
                     p.getString("search_url", ""));
         }
-        update();
+        // JS flags is loaded from DB even if showDebugSettings is false,
+        // so that it can be set once and be effective all the time.
+        jsFlags = p.getString("js_engine_flags", "");
     }
 
     public String getPluginsPath() {
@@ -338,6 +342,10 @@
         return homeUrl;
     }
 
+    public String getJsFlags() {
+        return jsFlags;
+    }
+
     public void setHomePage(Context context, String url) {
         Editor ed = PreferenceManager.
                 getDefaultSharedPreferences(context).edit();