Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 839daf18 authored by Sungsoo Lim's avatar Sungsoo Lim
Browse files

Show the cast button after setting route attrs

Bug: 72527380
Test: manually using VideoViewTest
Change-Id: I985d8aceeb0974f5a296854f889f1fef0c62d432
parent 5dd03a58
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -51,6 +51,7 @@
        <view class="com.android.support.mediarouter.app.MediaRouteButton" android:id="@+id/cast"
            android:layout_alignParentEnd="true"
            android:layout_centerVertical="true"
            android:visibility="gone"
            style="@style/TitleBarButton" />

    </RelativeLayout>
+30 −14
Original line number Diff line number Diff line
@@ -90,6 +90,7 @@ public class MediaRouteButton extends View {
    private final MediaRouterCallback mCallback;

    private MediaRouteSelector mSelector = MediaRouteSelector.EMPTY;
    private int mRouteCallbackFlags;
    private MediaRouteDialogFactory mDialogFactory = MediaRouteDialogFactory.getDefault();

    private boolean mAttachedToWindow;
@@ -174,23 +175,38 @@ public class MediaRouteButton extends View {
     * Sets the media route selector for filtering the routes that the user can
     * select using the media route chooser dialog.
     *
     * @param selector The selector, must not be null.
     * @param selector The selector.
     */
    public void setRouteSelector(MediaRouteSelector selector) {
        if (selector == null) {
            throw new IllegalArgumentException("selector must not be null");
        setRouteSelector(selector, 0);
    }

        if (!mSelector.equals(selector)) {
            if (mAttachedToWindow) {
    /**
     * Sets the media route selector for filtering the routes that the user can
     * select using the media route chooser dialog.
     *
     * @param selector The selector.
     * @param flags Flags to control the behavior of the callback. May be zero or a combination of
     *              {@link #MediaRouter.CALLBACK_FLAG_PERFORM_ACTIVE_SCAN} and
     *              {@link #MediaRouter.CALLBACK_FLAG_UNFILTERED_EVENTS}.
     */
    public void setRouteSelector(MediaRouteSelector selector, int flags) {
        if (mSelector.equals(selector) && mRouteCallbackFlags == flags) {
            return;
        }
        if (!mSelector.isEmpty()) {
            mRouter.removeCallback(mCallback);
        }
                if (!selector.isEmpty()) {
                    mRouter.addCallback(selector, mCallback);
                }
        if (selector == null || selector.isEmpty()) {
            mSelector = MediaRouteSelector.EMPTY;
            return;
        }

        mSelector = selector;
        mRouteCallbackFlags = flags;

        if (mAttachedToWindow) {
            mRouter.addCallback(selector, mCallback, flags);
            refreshRoute();
        }
    }
@@ -411,7 +427,7 @@ public class MediaRouteButton extends View {

        mAttachedToWindow = true;
        if (!mSelector.isEmpty()) {
            mRouter.addCallback(mSelector, mCallback);
            mRouter.addCallback(mSelector, mCallback, mRouteCallbackFlags);
        }
        refreshRoute();
    }
+19 −0
Original line number Diff line number Diff line
@@ -38,6 +38,9 @@ import android.widget.TextView;

import com.android.media.update.ApiHelper;
import com.android.media.update.R;
import com.android.support.mediarouter.app.MediaRouteButton;
import com.android.support.mediarouter.media.MediaRouter;
import com.android.support.mediarouter.media.MediaRouteSelector;

import java.util.Formatter;
import java.util.List;
@@ -107,6 +110,9 @@ public class MediaControlView2Impl implements MediaControlView2Provider {
    private StringBuilder mFormatBuilder;
    private Formatter mFormatter;

    private MediaRouteButton mRouteButton;
    private MediaRouteSelector mRouteSelector;

    public MediaControlView2Impl(
            MediaControlView2 instance, ViewProvider superProvider) {
        mInstance = instance;
@@ -305,6 +311,17 @@ public class MediaControlView2Impl implements MediaControlView2Provider {
        mSuperProvider.setEnabled_impl(enabled);
    }

    public void setRouteSelector(MediaRouteSelector selector) {
        mRouteSelector = selector;
        if (mRouteSelector != null && !mRouteSelector.isEmpty()) {
            mRouteButton.setRouteSelector(selector, MediaRouter.CALLBACK_FLAG_PERFORM_ACTIVE_SCAN);
            mRouteButton.setVisibility(View.VISIBLE);
        } else {
            mRouteButton.setRouteSelector(MediaRouteSelector.EMPTY);
            mRouteButton.setVisibility(View.GONE);
        }
    }

    ///////////////////////////////////////////////////
    // Protected or private methods
    ///////////////////////////////////////////////////
@@ -375,6 +392,8 @@ public class MediaControlView2Impl implements MediaControlView2Provider {
        mPauseDescription = res.getText(R.string.lockscreen_pause_button_content_description);
        mReplayDescription = res.getText(R.string.lockscreen_replay_button_content_description);

        mRouteButton = v.findViewById(R.id.cast);

        mPlayPauseButton = v.findViewById(R.id.pause);
        if (mPlayPauseButton != null) {
            mPlayPauseButton.requestFocus();
+10 −2
Original line number Diff line number Diff line
@@ -104,7 +104,7 @@ public class VideoView2Impl implements VideoView2Provider, VideoViewInterface.Su
    private MediaController mMediaController;
    private MediaSession.Callback mRouteSessionCallback = new RouteSessionCallback();
    private MediaRouter mMediaRouter;
    private MediaRouteSelector mMediaRouteSelector;
    private MediaRouteSelector mRouteSelector;
    private Metadata mMetadata;
    private String mTitle;

@@ -201,6 +201,10 @@ public class VideoView2Impl implements VideoView2Provider, VideoViewInterface.Su
    @Override
    public void setMediaControlView2_impl(MediaControlView2 mediaControlView) {
        mMediaControlView = mediaControlView;
        if (mRouteSelector != null) {
            ((MediaControlView2Impl) mMediaControlView.getProvider())
                    .setRouteSelector(mRouteSelector);
        }

        if (mInstance.isAttachedToWindow()) {
            attachMediaControlView();
@@ -293,7 +297,11 @@ public class VideoView2Impl implements VideoView2Provider, VideoViewInterface.Su
        for (String category : routeCategories) {
            builder.addControlCategory(category);
        }
        mMediaRouteSelector = builder.build();
        mRouteSelector = builder.build();
        if (mMediaControlView != null) {
            ((MediaControlView2Impl) mMediaControlView.getProvider())
                    .setRouteSelector(mRouteSelector);
        }
        mMediaRouter = MediaRouter.getInstance(mInstance.getContext());
        mRouteSessionCallback = sessionPlayer;
        if (mMediaSession != null) {