Command line flag to disable edge navigation

Added ui-low-power-mode command line flag. If present, it
disables the edge navigation feature in SWE browser. In
future this flag can be used to disable other features
that need high CPU utilization.

Change-Id: I2e987be7edc4afa87ea138c9b602c3208fa88515
diff --git a/src/com/android/browser/BaseUi.java b/src/com/android/browser/BaseUi.java
index c12b581..cd1388f 100644
--- a/src/com/android/browser/BaseUi.java
+++ b/src/com/android/browser/BaseUi.java
@@ -51,6 +51,7 @@
 
 import com.android.browser.Tab.SecurityState;
 
+import org.codeaurora.swe.BrowserCommandLine;
 import org.codeaurora.swe.WebView;
 
 import java.util.List;
@@ -460,6 +461,10 @@
     }
 
     public void refreshEdgeSwipeController(View container) {
+        if (BrowserCommandLine.hasSwitch("ui-low-power-mode")) {
+            return;
+        }
+
         if (mEdgeSwipeController != null) {
             mEdgeSwipeController.cleanup();
         }
diff --git a/src/com/android/browser/Tab.java b/src/com/android/browser/Tab.java
index a7157d0..64be289 100644
--- a/src/com/android/browser/Tab.java
+++ b/src/com/android/browser/Tab.java
@@ -64,6 +64,7 @@
 import com.android.browser.provider.MyNavigationProvider;
 import com.android.browser.provider.SnapshotProvider.Snapshots;
 
+import org.codeaurora.swe.BrowserCommandLine;
 import org.codeaurora.swe.BrowserDownloadListener;
 import org.codeaurora.swe.ClientCertRequestHandler;
 import org.codeaurora.swe.HttpAuthHandler;
@@ -633,6 +634,10 @@
 
         @Override
         public void beforeNavigation(WebView view, String url) {
+            if (BrowserCommandLine.hasSwitch("ui-low-power-mode")) {
+                return;
+            }
+
             if (isPrivateBrowsingEnabled()) {
                 return;
             }
@@ -663,6 +668,10 @@
 
         @Override
         public void onHistoryItemCommit(WebView view, int index) {
+            if (BrowserCommandLine.hasSwitch("ui-low-power-mode")) {
+                return;
+            }
+
             mTabHistoryUpdateObservable.set(index);
             final int maxIdx = view.copyBackForwardList().getSize();
             final WebView wv = view;
@@ -1382,7 +1391,8 @@
             dismissSubWindow();
             // save the WebView to call destroy() after detach it from the tab
             final WebView webView = mMainView;
-            if (!mWebViewDestroyedByMemoryMonitor) {
+            if (!mWebViewDestroyedByMemoryMonitor &&
+                    !BrowserCommandLine.hasSwitch("ui-low-power-mode")) {
                 webView.getSnapshotIds(new ValueCallback<List<Integer>>() {
                     @Override
                     public void onReceiveValue(List<Integer> ids) {
diff --git a/src/com/android/browser/preferences/AdvancedPreferencesFragment.java b/src/com/android/browser/preferences/AdvancedPreferencesFragment.java
index 3641380..40e0106 100644
--- a/src/com/android/browser/preferences/AdvancedPreferencesFragment.java
+++ b/src/com/android/browser/preferences/AdvancedPreferencesFragment.java
@@ -36,6 +36,8 @@
 import com.android.browser.PreferenceKeys;
 import com.android.browser.R;
 
+import org.codeaurora.swe.BrowserCommandLine;
+
 public class AdvancedPreferencesFragment
         implements Preference.OnPreferenceChangeListener, Preference.OnPreferenceClickListener {
 
@@ -73,15 +75,19 @@
         ListPreference edgeSwipePref =
                 (ListPreference) mFragment.findPreference("edge_swiping_action");
 
-        String[] options = mFragment.getResources().getStringArray(
-                R.array.pref_edge_swiping_values);
+        if (BrowserCommandLine.hasSwitch("ui-low-power-mode")) {
+            edgeSwipePref.setEnabled(false);
+        } else {
+            String[] options = mFragment.getResources().getStringArray(
+                    R.array.pref_edge_swiping_values);
 
-        String value = BrowserSettings.getInstance().getEdgeSwipeAction();
+            String value = BrowserSettings.getInstance().getEdgeSwipeAction();
 
-        for (int i = 0; i < options.length; i++) {
-            if (value.equals(options[i])) {
-                edgeSwipePref.setValueIndex(i);
-                break;
+            for (int i = 0; i < options.length; i++) {
+                if (value.equals(options[i])) {
+                    edgeSwipePref.setValueIndex(i);
+                    break;
+                }
             }
         }
     }