Cast ATV: default resolution back to 720, but with command-line switch.

R=halliwell@chromium.org,lcwu@chromium.org
BUG=internal b/19963256

Review URL: https://codereview.chromium.org/1051083003

Cr-Commit-Position: refs/heads/master@{#323874}
diff --git a/chromecast/browser/android/apk/src/org/chromium/chromecast/shell/CastShellActivity.java b/chromecast/browser/android/apk/src/org/chromium/chromecast/shell/CastShellActivity.java
index 318de79..2d70a754 100644
--- a/chromecast/browser/android/apk/src/org/chromium/chromecast/shell/CastShellActivity.java
+++ b/chromecast/browser/android/apk/src/org/chromium/chromecast/shell/CastShellActivity.java
@@ -24,6 +24,7 @@
 import org.chromium.content.browser.ContentVideoViewClient;
 import org.chromium.content.browser.ContentViewClient;
 import org.chromium.content.browser.ContentViewCore;
+import org.chromium.content.common.ContentSwitches;
 import org.chromium.ui.base.WindowAndroid;
 
 /**
@@ -34,7 +35,7 @@
     private static final boolean DEBUG = false;
 
     private static final String ACTIVE_SHELL_URL_KEY = "activeUrl";
-    private static final int DEFAULT_HEIGHT_PIXELS = 1080;
+    private static final int DEFAULT_HEIGHT_PIXELS = 720;
     public static final String ACTION_EXTRA_RESOLUTION_HEIGHT =
             "org.chromium.chromecast.shell.intent.extra.RESOLUTION_HEIGHT";
 
@@ -245,16 +246,26 @@
     }
 
     private void setResolution() {
-        int requestedHeight = getIntent().getIntExtra(
-                ACTION_EXTRA_RESOLUTION_HEIGHT, DEFAULT_HEIGHT_PIXELS);
+        CommandLine commandLine = CommandLine.getInstance();
+        int defaultHeight = DEFAULT_HEIGHT_PIXELS;
+        if (commandLine.hasSwitch(CastSwitches.DEFAULT_RESOLUTION_HEIGHT)) {
+            String commandLineHeightString =
+                    commandLine.getSwitchValue(CastSwitches.DEFAULT_RESOLUTION_HEIGHT);
+            try {
+                defaultHeight = Integer.parseInt(commandLineHeightString);
+            } catch (NumberFormatException e) {
+                Log.w(TAG, "Ignored invalid height: " + commandLineHeightString);
+            }
+        }
+        int requestedHeight =
+                getIntent().getIntExtra(ACTION_EXTRA_RESOLUTION_HEIGHT, defaultHeight);
         int displayHeight = getResources().getDisplayMetrics().heightPixels;
-        // Clamp within [DEFAULT_HEIGHT_PIXELS, displayHeight]
-        int desiredHeight =
-                Math.min(displayHeight, Math.max(DEFAULT_HEIGHT_PIXELS, requestedHeight));
+        // Clamp within [defaultHeight, displayHeight]
+        int desiredHeight = Math.min(displayHeight, Math.max(defaultHeight, requestedHeight));
         double deviceScaleFactor = ((double) displayHeight) / desiredHeight;
         Log.d(TAG, "Using scale factor " + deviceScaleFactor + " to set height " + desiredHeight);
-        CommandLine.getInstance().appendSwitchWithValue("force-device-scale-factor",
-                String.valueOf(deviceScaleFactor));
+        commandLine.appendSwitchWithValue(
+                ContentSwitches.FORCE_DEVICE_SCALE_FACTOR, String.valueOf(deviceScaleFactor));
     }
 
     private void exitIfUrlMissing() {
diff --git a/chromecast/browser/android/apk/src/org/chromium/chromecast/shell/CastSwitches.java b/chromecast/browser/android/apk/src/org/chromium/chromecast/shell/CastSwitches.java
new file mode 100644
index 0000000..a61e28a0
--- /dev/null
+++ b/chromecast/browser/android/apk/src/org/chromium/chromecast/shell/CastSwitches.java
@@ -0,0 +1,14 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chromecast.shell;
+
+/**
+ * Contains command line switches specific to Cast on Android.
+ */
+public final class CastSwitches {
+    // Default height to start an application at, unless the application explicitly requests
+    // a different height. If unspecified, this defaults to 720px.
+    public static final String DEFAULT_RESOLUTION_HEIGHT = "default-resolution-height";
+}