Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(811)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/media/remote/FullscreenMediaRouteButton.java

Issue 928643003: Upstream Chrome for Android Cast. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix dependencies (second attempt). Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/android/java/src/org/chromium/chrome/browser/media/remote/FullscreenMediaRouteButton.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/media/remote/FullscreenMediaRouteButton.java b/chrome/android/java/src/org/chromium/chrome/browser/media/remote/FullscreenMediaRouteButton.java
new file mode 100644
index 0000000000000000000000000000000000000000..f9005a4a66ef139775b59e85728cfacae4031dd5
--- /dev/null
+++ b/chrome/android/java/src/org/chromium/chrome/browser/media/remote/FullscreenMediaRouteButton.java
@@ -0,0 +1,77 @@
+// Copyright 2012 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.chrome.browser.media.remote;
+
+import android.content.Context;
+import android.support.v7.app.MediaRouteButton;
+import android.util.AttributeSet;
+import android.view.View;
+
+/**
+ * Cast button that wraps around a MediaRouteButton. We show the button only if there are available
+ * cast devices.
+ */
+public class FullscreenMediaRouteButton extends MediaRouteButton {
+
+ // Are we in the time window when the button should become visible if there're routes?
+ private boolean mVisibilityRequested;
+
+ /**
+ * The constructor invoked when inflating the button.
+ */
+ public FullscreenMediaRouteButton(Context context, AttributeSet attributeSet) {
+ super(context, attributeSet);
+ mVisibilityRequested = false;
+ }
+
+ /**
+ * Set the necessary state for the button to work.
+ */
+ /**
+ * Set the necessary state for the button to work
+ * @param controller the MediaRouteController controlling the route
+ */
+ public void initialize(MediaRouteController controller) {
+ setRouteSelector(controller.buildMediaRouteSelector());
+ setDialogFactory(new ChromeMediaRouteDialogFactory());
+ }
+
+ @Override
+ public void setEnabled(boolean enabled) {
+ if (!RemoteMediaPlayerController.isRemotePlaybackEnabled()) return;
+
+ // TODO(aberent) not sure if this is still used, and in particular if mVisibilityRequest
+ // is still used.
+
+ // We need to check if the button was in the same state before to avoid doing anything,
+ // but we also need to update the current state for {@link #setButtonVisibility} to work.
+ boolean wasEnabled = isEnabled();
+ super.setEnabled(enabled);
+
+ if (wasEnabled == enabled) return;
+
+ if (enabled && mVisibilityRequested) {
+ setButtonVisibility(View.VISIBLE);
+ } else {
+ setVisibility(View.GONE);
+ }
+ }
+
+ private void setButtonVisibility(int visibility) {
+ // If the button is being set to visible, first make sure that it can even cast
+ // to anything before making it actually visible.
+ if (visibility == View.VISIBLE) {
+ if (isEnabled()) {
+ setVisibility(View.VISIBLE);
+ } else {
+ setVisibility(View.GONE);
+ }
+ } else {
+ setVisibility(visibility);
+ }
+ }
+
+}
+

Powered by Google App Engine
This is Rietveld 408576698