Bug 1313391 - Move HLS video playback behind a switchboard flag. r?snorp draft
authorSebastian Kaspari <s.kaspari@gmail.com>
Fri, 28 Oct 2016 20:16:56 +0200
changeset 431061 4b048033f65eb8cbca1ecd4efce96ceb7f3d40f8
parent 430042 3f4c3a3cabaf94958834d3a8935adfb4a887942d
child 535359 f5cac8e15e2d0789111d670aea752639d73f13d0
push id33996
push users.kaspari@gmail.com
push dateFri, 28 Oct 2016 18:17:44 +0000
reviewerssnorp
bugs1313391
milestone52.0a1
Bug 1313391 - Move HLS video playback behind a switchboard flag. r?snorp This will allow us to ship the feature to a subset of the users or pull the feature without needing to release a new version of the app. MozReview-Commit-ID: 3rGLT29wuyC
mobile/android/base/java/org/mozilla/gecko/BrowserApp.java
mobile/android/base/java/org/mozilla/gecko/Experiments.java
--- a/mobile/android/base/java/org/mozilla/gecko/BrowserApp.java
+++ b/mobile/android/base/java/org/mozilla/gecko/BrowserApp.java
@@ -2108,25 +2108,27 @@ public class BrowserApp extends GeckoApp
                         @Override
                         public void run() {
                             mDynamicToolbar.setVisible(true, VisibilityTransition.ANIMATE);
                         }
                     });
                     break;
 
                 case "Video:Play":
-                    final String uri = message.getString("uri");
-                    final String uuid = message.getString("uuid");
-                    ThreadUtils.postToUiThread(new Runnable() {
-                        @Override
-                        public void run() {
-                            mVideoPlayer.start(Uri.parse(uri));
-                            Telemetry.sendUIEvent(TelemetryContract.Event.SHOW, TelemetryContract.Method.CONTENT, "playhls");
-                        }
-                    });
+                    if (SwitchBoard.isInExperiment(this, Experiments.HLS_VIDEO_PLAYBACK)) {
+                        final String uri = message.getString("uri");
+                        final String uuid = message.getString("uuid");
+                        ThreadUtils.postToUiThread(new Runnable() {
+                            @Override
+                            public void run() {
+                                mVideoPlayer.start(Uri.parse(uri));
+                                Telemetry.sendUIEvent(TelemetryContract.Event.SHOW, TelemetryContract.Method.CONTENT, "playhls");
+                            }
+                        });
+                    }
                     break;
 
                 case "Prompt:ShowTop":
                     // Bring this activity to front so the prompt is visible..
                     Intent bringToFrontIntent = new Intent();
                     bringToFrontIntent.setClassName(AppConstants.ANDROID_PACKAGE_NAME, AppConstants.MOZ_ANDROID_BROWSER_INTENT_CLASS);
                     bringToFrontIntent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
                     startActivity(bringToFrontIntent);
--- a/mobile/android/base/java/org/mozilla/gecko/Experiments.java
+++ b/mobile/android/base/java/org/mozilla/gecko/Experiments.java
@@ -48,16 +48,19 @@ public class Experiments {
     public static final String TRIPLE_READERVIEW_BOOKMARK_PROMPT = "triple-readerview-bookmark-prompt";
 
     // Only show origin in URL bar instead of full URL (Bug 1236431)
     public static final String URLBAR_SHOW_ORIGIN_ONLY = "urlbar-show-origin-only";
 
     // Show name of organization (EV cert) instead of full URL in URL bar (Bug 1249594).
     public static final String URLBAR_SHOW_EV_CERT_OWNER = "urlbar-show-ev-cert-owner";
 
+    // Play HLS videos in a VideoView (Bug 1313391)
+    public static final String HLS_VIDEO_PLAYBACK = "hls-video-playback";
+
     /**
      * Returns if a user is in certain local experiment.
      * @param experiment Name of experiment to look up
      * @return returns value for experiment or false if experiment does not exist.
      */
     public static boolean isInExperimentLocal(Context context, String experiment) {
         if (SwitchBoard.isInBucket(context, 0, 20)) {
             return Experiments.ONBOARDING3_A.equals(experiment);