Commit fb7c65c3 authored by Zhiqiang Zhang's avatar Zhiqiang Zhang Committed by Commit Bot

[Android MR] Initial directory layout for CAF migration

This CL lies out the directory layout for CAF migration. The
migrated code will reside in caf/, in parallel of cast/. The
migrated code is guarded behind a feature flag.

Bug: 711860
Change-Id: Iddfe9e3ce3103fae876c9c151c96aba2ef99354f
Reviewed-on: https://chromium-review.googlesource.com/977232Reviewed-by: default avatarMounir Lamouri <mlamouri@chromium.org>
Reviewed-by: default avatarThomas Guilbert <tguilbert@chromium.org>
Commit-Queue: Zhiqiang Zhang <zqzhang@chromium.org>
Cr-Commit-Position: refs/heads/master@{#546175}
parent 384abc65
......@@ -153,6 +153,7 @@ public abstract class ChromeFeatureList {
public static final String ANDROID_PAY_INTEGRATION_V2 = "AndroidPayIntegrationV2";
public static final String ANDROID_PAYMENT_APPS = "AndroidPaymentApps";
public static final String AUTOFILL_SCAN_CARDHOLDER_NAME = "AutofillScanCardholderName";
public static final String CAF_MEDIA_ROUTER_IMPL = "CafMediaRouterImpl";
public static final String CAPTIVE_PORTAL_CERTIFICATE_LIST = "CaptivePortalCertificateList";
public static final String CCT_BACKGROUND_TAB = "CCTBackgroundTab";
public static final String CCT_EXTERNAL_LINK_HANDLING = "CCTExternalLinkHandling";
......
......@@ -13,6 +13,8 @@ import org.chromium.base.SysUtils;
import org.chromium.base.VisibleForTesting;
import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.JNINamespace;
import org.chromium.chrome.browser.ChromeFeatureList;
import org.chromium.chrome.browser.media.router.caf.CafMediaRouteProvider;
import org.chromium.chrome.browser.media.router.cast.CastMediaRouteProvider;
import org.chromium.chrome.browser.media.router.cast.MediaSink;
import org.chromium.chrome.browser.media.router.cast.MediaSource;
......@@ -38,6 +40,14 @@ public class ChromeMediaRouter implements MediaRouteManager {
new MediaRouteProvider.Factory() {
@Override
public void addProviders(MediaRouteManager manager) {
// Bypass feature check in tests as ChromeFeatureList might not be initialized
// yet.
if (ChromeFeatureList.isInitialized()
&& ChromeFeatureList.isEnabled(
ChromeFeatureList.CAF_MEDIA_ROUTER_IMPL)) {
MediaRouteProvider cafProvider = CafMediaRouteProvider.create(manager);
manager.addMediaRouteProvider(cafProvider);
} else {
MediaRouteProvider castProvider = CastMediaRouteProvider.create(manager);
manager.addMediaRouteProvider(castProvider);
......@@ -45,6 +55,7 @@ public class ChromeMediaRouter implements MediaRouteManager {
RemotingMediaRouteProvider.create(manager);
manager.addMediaRouteProvider(remotingProvider);
}
}
};
// The pointer to the native object. Can be null during tests, or when the
......
// Copyright 2018 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.router.caf;
import org.chromium.chrome.browser.media.router.MediaController;
import org.chromium.chrome.browser.media.router.MediaRouteManager;
import org.chromium.chrome.browser.media.router.MediaRouteProvider;
import javax.annotation.Nullable;
/**
* A {@link MediaRouteProvider} implementation for Cast devices and applications, using Cast v3 API.
*/
public class CafMediaRouteProvider implements MediaRouteProvider {
MediaRouteManager mManager;
private CafMediaRouteProvider(MediaRouteManager manager) {
mManager = manager;
}
public static CafMediaRouteProvider create(MediaRouteManager manager) {
return new CafMediaRouteProvider(manager);
}
@Override
public boolean supportsSource(String sourceId) {
// Not implemented.
return true;
}
@Override
public void startObservingMediaSinks(String sourceId) {
// Not implemented.
}
@Override
public void stopObservingMediaSinks(String sourceId) {
// Not implemented.
}
@Override
public void createRoute(String sourceId, String sinkId, String presentationId, String origin,
int tabId, boolean isIncognito, int nativeRequestId) {
// Not implemented.
}
@Override
public void joinRoute(
String sourceId, String presentationId, String origin, int tabId, int nativeRequestId) {
// Not implemented.
}
@Override
public void closeRoute(String routeId) {
// Not implemented.
}
@Override
public void detachRoute(String routeId) {
// Not implemented.
}
@Override
public void sendStringMessage(String routeId, String message, int nativeCallbackId) {
// Not implemented.
}
@Override
@Nullable
public MediaController getMediaController(String routeId) {
// Not implemented.
return null;
}
}
......@@ -621,6 +621,7 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/media/router/MediaRouteDialogManager.java",
"java/src/org/chromium/chrome/browser/media/router/MediaRouteManager.java",
"java/src/org/chromium/chrome/browser/media/router/MediaRouteProvider.java",
"java/src/org/chromium/chrome/browser/media/router/caf/CafMediaRouteProvider.java",
"java/src/org/chromium/chrome/browser/media/router/cast/BaseMediaRouteProvider.java",
"java/src/org/chromium/chrome/browser/media/router/cast/CastMediaRouteProvider.java",
"java/src/org/chromium/chrome/browser/media/router/cast/CastMediaSource.java",
......
......@@ -26,6 +26,7 @@
#include "components/subresource_filter/core/browser/subresource_filter_features.h"
#include "content/public/common/content_features.h"
#include "jni/ChromeFeatureList_jni.h"
#include "media/base/media_switches.h"
using base::android::ConvertJavaStringToUTF8;
using base::android::ConvertUTF8ToJavaString;
......@@ -132,6 +133,7 @@ const base::Feature* kFeaturesExposedToJava[] = {
&payments::features::kWebPaymentsSingleAppUiSkip,
&kWebVrAutopresentFromIntent,
&kWebVrCardboardSupport,
&media::kCafMediaRouterImpl,
&ntp_snippets::kArticleSuggestionsExpandableHeader,
&ntp_snippets::kIncreasedVisibility,
&ntp_snippets::kForeignSessionsSuggestionsFeature,
......
......@@ -315,6 +315,10 @@ const base::Feature kVideoRotateToFullscreen{"VideoRotateToFullscreen",
const base::Feature kMediaDrmPersistentLicense{
"MediaDrmPersistentLicense", base::FEATURE_ENABLED_BY_DEFAULT};
// Enables the Android MediaRouter implementation using CAF (Cast v3).
const base::Feature kCafMediaRouterImpl{"CafMediaRouterImpl",
base::FEATURE_DISABLED_BY_DEFAULT};
#endif
#if defined(OS_WIN)
......
......@@ -137,6 +137,7 @@ MEDIA_EXPORT extern const base::Feature kUseModernMediaControls;
MEDIA_EXPORT extern const base::Feature kVideoFullscreenOrientationLock;
MEDIA_EXPORT extern const base::Feature kVideoRotateToFullscreen;
MEDIA_EXPORT extern const base::Feature kMediaDrmPersistentLicense;
MEDIA_EXPORT extern const base::Feature kCafMediaRouterImpl;
#endif // defined(OS_ANDROID)
#if defined(OS_WIN)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment