summaryrefslogtreecommitdiff
path: root/chromium/components/media_router
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/components/media_router')
-rw-r--r--chromium/components/media_router/browser/BUILD.gn16
-rw-r--r--chromium/components/media_router/browser/android/BUILD.gn6
-rw-r--r--chromium/components/media_router/browser/android/junit/src/org/chromium/components/media_router/caf/CafMessageHandlerTest.java6
-rw-r--r--chromium/components/media_router/browser/android/media_router_android.cc7
-rw-r--r--chromium/components/media_router/browser/android/media_router_android.h2
-rw-r--r--chromium/components/media_router/browser/android/media_router_dialog_controller_android.cc2
-rw-r--r--chromium/components/media_router/browser/android/media_router_dialog_controller_android.h2
-rw-r--r--chromium/components/media_router/browser/logger_impl.cc2
-rw-r--r--chromium/components/media_router/browser/media_router_dialog_controller.cc6
-rw-r--r--chromium/components/media_router/browser/media_router_dialog_controller.h8
-rw-r--r--chromium/components/media_router/browser/media_router_dialog_controller_unittest.cc8
-rw-r--r--chromium/components/media_router/browser/media_router_metrics.cc50
-rw-r--r--chromium/components/media_router/browser/media_router_metrics.h37
-rw-r--r--chromium/components/media_router/browser/media_router_metrics_unittest.cc49
-rw-r--r--chromium/components/media_router/browser/presentation/presentation_service_delegate_impl.cc7
-rw-r--r--chromium/components/media_router/browser/presentation/presentation_service_delegate_impl.h8
-rw-r--r--chromium/components/media_router/browser/presentation/web_contents_presentation_manager.h20
-rw-r--r--chromium/components/media_router/common/BUILD.gn5
-rw-r--r--chromium/components/media_router/common/media_source.cc19
-rw-r--r--chromium/components/media_router/common/media_source.h4
-rw-r--r--chromium/components/media_router/common/media_source_unittest.cc15
-rw-r--r--chromium/components/media_router/common/mojom/BUILD.gn4
-rw-r--r--chromium/components/media_router/common/mojom/media_router.mojom22
-rw-r--r--chromium/components/media_router/common/mojom/media_router_mojom_traits.h91
-rw-r--r--chromium/components/media_router/common/mojom/route_request_result_code.mojom9
-rw-r--r--chromium/components/media_router/common/providers/cast/cast_media_source.cc2
-rw-r--r--chromium/components/media_router/common/route_request_result.cc13
-rw-r--r--chromium/components/media_router/common/route_request_result.h39
28 files changed, 151 insertions, 308 deletions
diff --git a/chromium/components/media_router/browser/BUILD.gn b/chromium/components/media_router/browser/BUILD.gn
index 7890fffebfd..5b8464e0173 100644
--- a/chromium/components/media_router/browser/BUILD.gn
+++ b/chromium/components/media_router/browser/BUILD.gn
@@ -2,14 +2,8 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
-# TODO(crbug.com/1299869): IssueManager and IssuesObserver are not used on
-# Android; exclude them from Android builds.
source_set("browser") {
sources = [
- "issue_manager.cc",
- "issue_manager.h",
- "issues_observer.cc",
- "issues_observer.h",
"media_router.h",
"media_router_base.cc",
"media_router_base.h",
@@ -85,6 +79,10 @@ source_set("browser") {
deps += [ "android:jni_headers" ]
} else {
sources += [
+ "issue_manager.cc",
+ "issue_manager.h",
+ "issues_observer.cc",
+ "issues_observer.h",
"logger_impl.cc",
"logger_impl.h",
"presentation/presentation_navigation_policy.cc",
@@ -115,7 +113,6 @@ source_set("unit_tests") {
testonly = true
sources = [
- "issue_manager_unittest.cc",
"media_router_base_unittest.cc",
"media_router_dialog_controller_unittest.cc",
"media_router_metrics_unittest.cc",
@@ -140,6 +137,9 @@ source_set("unit_tests") {
sources += [ "android/media_router_android_unittest.cc" ]
deps += [ "android:test_jni_headers" ]
} else {
- sources += [ "logger_impl_unittest.cc" ]
+ sources += [
+ "issue_manager_unittest.cc",
+ "logger_impl_unittest.cc",
+ ]
}
}
diff --git a/chromium/components/media_router/browser/android/BUILD.gn b/chromium/components/media_router/browser/android/BUILD.gn
index 55593264b6e..a6ef4814e6e 100644
--- a/chromium/components/media_router/browser/android/BUILD.gn
+++ b/chromium/components/media_router/browser/android/BUILD.gn
@@ -119,10 +119,7 @@ generate_jni("test_jni_headers") {
]
}
-java_library("junit") {
- # Skip platform checks since Robolectric depends on requires_android targets.
- bypass_platform_checks = true
- testonly = true
+robolectric_library("junit") {
sources = [
"junit/src/org/chromium/components/media_router/BrowserMediaRouterRouteTest.java",
"junit/src/org/chromium/components/media_router/BrowserMediaRouterSinkObservationTest.java",
@@ -151,7 +148,6 @@ java_library("junit") {
"//base:base_java_test_support",
"//base:base_junit_test_support",
"//content/public/android:content_java",
- "//third_party/android_deps:robolectric_all_java",
"//third_party/androidx:androidx_annotation_annotation_java",
"//third_party/androidx:androidx_mediarouter_mediarouter_java",
"//third_party/junit",
diff --git a/chromium/components/media_router/browser/android/junit/src/org/chromium/components/media_router/caf/CafMessageHandlerTest.java b/chromium/components/media_router/browser/android/junit/src/org/chromium/components/media_router/caf/CafMessageHandlerTest.java
index d31929efc7d..9313c3a479d 100644
--- a/chromium/components/media_router/browser/android/junit/src/org/chromium/components/media_router/caf/CafMessageHandlerTest.java
+++ b/chromium/components/media_router/browser/android/junit/src/org/chromium/components/media_router/caf/CafMessageHandlerTest.java
@@ -26,6 +26,7 @@ import static org.mockito.Mockito.verify;
import com.google.android.gms.cast.ApplicationMetadata;
import com.google.android.gms.cast.CastDevice;
import com.google.android.gms.cast.framework.CastSession;
+import com.google.android.gms.common.api.CommonStatusCodes;
import com.google.android.gms.common.api.Status;
import org.json.JSONArray;
@@ -929,12 +930,11 @@ public class CafMessageHandlerTest {
@Test
public void testOnAppMessageSent() {
- Status mockResult = mock(Status.class);
- doReturn(true).when(mockResult).isSuccess();
+ Status fakeResult = new Status(CommonStatusCodes.SUCCESS);
doNothing()
.when(mMessageHandler)
.sendEnclosedMessageToClient(anyString(), anyString(), anyString(), anyInt());
- mMessageHandler.onSendAppMessageResult(mockResult, CLIENT_ID1, SEQUENCE_NUMBER1);
+ mMessageHandler.onSendAppMessageResult(fakeResult, CLIENT_ID1, SEQUENCE_NUMBER1);
verify(mMessageHandler)
.sendEnclosedMessageToClient(
eq(CLIENT_ID1), eq("app_message"), (String) isNull(), eq(SEQUENCE_NUMBER1));
diff --git a/chromium/components/media_router/browser/android/media_router_android.cc b/chromium/components/media_router/browser/android/media_router_android.cc
index 531e58aad26..538ad9a312b 100644
--- a/chromium/components/media_router/browser/android/media_router_android.cc
+++ b/chromium/components/media_router/browser/android/media_router_android.cc
@@ -296,7 +296,8 @@ void MediaRouterAndroid::OnRouteTerminated(const MediaRoute::Id& route_id) {
}
}
MediaRouterMetrics::RecordMediaRouteProviderTerminateRoute(
- RouteRequestResult::OK, mojom::MediaRouteProviderId::ANDROID_CAF);
+ mojom::RouteRequestResultCode::OK,
+ mojom::MediaRouteProviderId::ANDROID_CAF);
RemoveRoute(route_id);
}
@@ -360,7 +361,7 @@ void MediaRouterAndroid::OnPresentationConnectionError(
void MediaRouterAndroid::OnRouteRequestError(
const std::string& error_text,
int route_request_id,
- base::OnceCallback<void(RouteRequestResult::ResultCode,
+ base::OnceCallback<void(mojom::RouteRequestResultCode,
absl::optional<mojom::MediaRouteProviderId>)>
callback) {
MediaRouteRequest* request = route_requests_.Lookup(route_request_id);
@@ -369,7 +370,7 @@ void MediaRouterAndroid::OnRouteRequestError(
// TODO: Provide a more specific result code.
std::unique_ptr<RouteRequestResult> result = RouteRequestResult::FromError(
- error_text, RouteRequestResult::UNKNOWN_ERROR);
+ error_text, mojom::RouteRequestResultCode::UNKNOWN_ERROR);
std::move(request->callback).Run(nullptr, *result);
route_requests_.Remove(route_request_id);
diff --git a/chromium/components/media_router/browser/android/media_router_android.h b/chromium/components/media_router/browser/android/media_router_android.h
index 06545e659dc..831e98ac134 100644
--- a/chromium/components/media_router/browser/android/media_router_android.h
+++ b/chromium/components/media_router/browser/android/media_router_android.h
@@ -149,7 +149,7 @@ class MediaRouterAndroid : public MediaRouterBase {
void OnRouteRequestError(
const std::string& error_text,
int route_request_id,
- base::OnceCallback<void(RouteRequestResult::ResultCode,
+ base::OnceCallback<void(mojom::RouteRequestResultCode,
absl::optional<mojom::MediaRouteProviderId>)>
callback);
diff --git a/chromium/components/media_router/browser/android/media_router_dialog_controller_android.cc b/chromium/components/media_router/browser/android/media_router_dialog_controller_android.cc
index 4f863af91cd..0d84b5c1549 100644
--- a/chromium/components/media_router/browser/android/media_router_dialog_controller_android.cc
+++ b/chromium/components/media_router/browser/android/media_router_dialog_controller_android.cc
@@ -133,7 +133,7 @@ MediaRouterDialogControllerAndroid::MediaRouterDialogControllerAndroid(
MediaRouterDialogControllerAndroid::~MediaRouterDialogControllerAndroid() {}
void MediaRouterDialogControllerAndroid::CreateMediaRouterDialog(
- MediaRouterDialogOpenOrigin activation_location) {
+ MediaRouterDialogActivationLocation activation_location) {
JNIEnv* env = base::android::AttachCurrentThread();
std::vector<MediaSource> sources;
diff --git a/chromium/components/media_router/browser/android/media_router_dialog_controller_android.h b/chromium/components/media_router/browser/android/media_router_dialog_controller_android.h
index 74f370196f4..4bc94784572 100644
--- a/chromium/components/media_router/browser/android/media_router_dialog_controller_android.h
+++ b/chromium/components/media_router/browser/android/media_router_dialog_controller_android.h
@@ -56,7 +56,7 @@ class MediaRouterDialogControllerAndroid
// MediaRouterDialogController:
void CreateMediaRouterDialog(
- MediaRouterDialogOpenOrigin activation_location) override;
+ MediaRouterDialogActivationLocation activation_location) override;
void CloseMediaRouterDialog() override;
bool IsShowingMediaRouterDialog() const override;
diff --git a/chromium/components/media_router/browser/logger_impl.cc b/chromium/components/media_router/browser/logger_impl.cc
index a5a62281ea3..3454f42148d 100644
--- a/chromium/components/media_router/browser/logger_impl.cc
+++ b/chromium/components/media_router/browser/logger_impl.cc
@@ -19,7 +19,7 @@ namespace {
constexpr size_t kEntriesCapacity = 1000;
constexpr size_t kComponentMaxLength = 64;
-constexpr size_t kMessageMaxLength = 256;
+constexpr size_t kMessageMaxLength = 1024;
constexpr size_t kSourceMaxLength = 64;
const char* AsString(LoggerImpl::Severity severity) {
diff --git a/chromium/components/media_router/browser/media_router_dialog_controller.cc b/chromium/components/media_router/browser/media_router_dialog_controller.cc
index c17675b8b1a..e7c03c3fe22 100644
--- a/chromium/components/media_router/browser/media_router_dialog_controller.cc
+++ b/chromium/components/media_router/browser/media_router_dialog_controller.cc
@@ -92,12 +92,12 @@ bool MediaRouterDialogController::ShowMediaRouterDialogForPresentation(
}
start_presentation_context_ = std::move(context);
- FocusOnMediaRouterDialog(true, MediaRouterDialogOpenOrigin::PAGE);
+ FocusOnMediaRouterDialog(true, MediaRouterDialogActivationLocation::PAGE);
return true;
}
bool MediaRouterDialogController::ShowMediaRouterDialog(
- MediaRouterDialogOpenOrigin activation_location) {
+ MediaRouterDialogActivationLocation activation_location) {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
bool dialog_needs_creation = !IsShowingMediaRouterDialog();
@@ -113,7 +113,7 @@ void MediaRouterDialogController::HideMediaRouterDialog() {
void MediaRouterDialogController::FocusOnMediaRouterDialog(
bool dialog_needs_creation,
- MediaRouterDialogOpenOrigin activation_location) {
+ MediaRouterDialogActivationLocation activation_location) {
// Show the WebContents requesting a dialog.
// TODO(takumif): In the case of Views dialog, if the dialog is already shown,
// activating the WebContents makes the dialog lose focus and disappear. The
diff --git a/chromium/components/media_router/browser/media_router_dialog_controller.h b/chromium/components/media_router/browser/media_router_dialog_controller.h
index 4d217801ece..d5501e7c6c5 100644
--- a/chromium/components/media_router/browser/media_router_dialog_controller.h
+++ b/chromium/components/media_router/browser/media_router_dialog_controller.h
@@ -20,7 +20,7 @@ class WebContents;
namespace media_router {
class StartPresentationContext;
-enum class MediaRouterDialogOpenOrigin;
+enum class MediaRouterDialogActivationLocation;
// An abstract base class for Media Router dialog controllers. Tied to a
// WebContents known as the |initiator|, and is lazily created when a Media
@@ -62,7 +62,7 @@ class MediaRouterDialogController {
// Creates the dialog if it did not exist prior to this call, returns true.
// If the dialog already exists, brings it to the front, returns false.
virtual bool ShowMediaRouterDialog(
- MediaRouterDialogOpenOrigin activation_location);
+ MediaRouterDialogActivationLocation activation_location);
// Hides the media router dialog.
// It is a no-op to call this function if there is currently no dialog.
@@ -80,7 +80,7 @@ class MediaRouterDialogController {
// that initiated the dialog, e.g. focuses the tab.
void FocusOnMediaRouterDialog(
bool dialog_needs_creation,
- MediaRouterDialogOpenOrigin activation_location);
+ MediaRouterDialogActivationLocation activation_location);
// Returns the WebContents that initiated showing the dialog.
content::WebContents* initiator() const { return initiator_; }
@@ -89,7 +89,7 @@ class MediaRouterDialogController {
virtual void Reset();
// Creates a new media router dialog modal to |initiator_|.
virtual void CreateMediaRouterDialog(
- MediaRouterDialogOpenOrigin activation_location) = 0;
+ MediaRouterDialogActivationLocation activation_location) = 0;
// Closes the media router dialog if it exists.
virtual void CloseMediaRouterDialog() = 0;
diff --git a/chromium/components/media_router/browser/media_router_dialog_controller_unittest.cc b/chromium/components/media_router/browser/media_router_dialog_controller_unittest.cc
index 8fe7657ecf4..ba8e996d488 100644
--- a/chromium/components/media_router/browser/media_router_dialog_controller_unittest.cc
+++ b/chromium/components/media_router/browser/media_router_dialog_controller_unittest.cc
@@ -38,7 +38,7 @@ class TestMediaRouterDialogController : public MediaRouterDialogController {
bool IsShowingMediaRouterDialog() const override { return has_dialog_; }
void CreateMediaRouterDialog(
- MediaRouterDialogOpenOrigin activation_location) override {
+ MediaRouterDialogActivationLocation activation_location) override {
has_dialog_ = true;
}
void CloseMediaRouterDialog() override { has_dialog_ = false; }
@@ -127,13 +127,13 @@ TEST_F(MediaRouterDialogControllerTest, CreateForWebContents) {
TEST_F(MediaRouterDialogControllerTest, ShowAndHideDialog) {
EXPECT_CALL(*web_contents_delegate_, ActivateContents(web_contents()));
EXPECT_TRUE(dialog_controller_->ShowMediaRouterDialog(
- MediaRouterDialogOpenOrigin::TOOLBAR));
+ MediaRouterDialogActivationLocation::TOOLBAR));
EXPECT_TRUE(dialog_controller_->IsShowingMediaRouterDialog());
// If a dialog is already shown, ShowMediaRouterDialog() should return false.
EXPECT_CALL(*web_contents_delegate_, ActivateContents(web_contents()));
EXPECT_FALSE(dialog_controller_->ShowMediaRouterDialog(
- MediaRouterDialogOpenOrigin::TOOLBAR));
+ MediaRouterDialogActivationLocation::TOOLBAR));
dialog_controller_->HideMediaRouterDialog();
EXPECT_FALSE(dialog_controller_->IsShowingMediaRouterDialog());
@@ -142,7 +142,7 @@ TEST_F(MediaRouterDialogControllerTest, ShowAndHideDialog) {
// again.
EXPECT_CALL(*web_contents_delegate_, ActivateContents(web_contents()));
EXPECT_TRUE(dialog_controller_->ShowMediaRouterDialog(
- MediaRouterDialogOpenOrigin::TOOLBAR));
+ MediaRouterDialogActivationLocation::TOOLBAR));
}
TEST_F(MediaRouterDialogControllerTest, ShowDialogForPresentation) {
diff --git a/chromium/components/media_router/browser/media_router_metrics.cc b/chromium/components/media_router/browser/media_router_metrics.cc
index e85016790e2..ea9c218afff 100644
--- a/chromium/components/media_router/browser/media_router_metrics.cc
+++ b/chromium/components/media_router/browser/media_router_metrics.cc
@@ -59,13 +59,14 @@ std::string GetUiName(UiType ui) {
}
}
-std::string GetDeviceCountHistogramName(const std::string& ui,
- MediaRouterDialogOpenOrigin origin,
- mojom::MediaRouteProviderId provider,
- bool is_available) {
+std::string GetDeviceCountHistogramName(
+ const std::string& ui,
+ MediaRouterDialogActivationLocation activation_location,
+ mojom::MediaRouteProviderId provider,
+ bool is_available) {
std::string trigger;
- switch (origin) {
- case MediaRouterDialogOpenOrigin::PAGE:
+ switch (activation_location) {
+ case MediaRouterDialogActivationLocation::PAGE:
trigger = "PresentationApi";
break;
default:
@@ -146,13 +147,13 @@ const base::TimeDelta MediaRouterMetrics::kDeviceCountMetricDelay =
base::Seconds(3);
// static
-void MediaRouterMetrics::RecordMediaRouterDialogOrigin(
- MediaRouterDialogOpenOrigin origin) {
- DCHECK_LT(static_cast<int>(origin),
- static_cast<int>(MediaRouterDialogOpenOrigin::TOTAL_COUNT));
+void MediaRouterMetrics::RecordMediaRouterDialogActivationLocation(
+ MediaRouterDialogActivationLocation activation_location) {
+ DCHECK_LT(static_cast<int>(activation_location),
+ static_cast<int>(MediaRouterDialogActivationLocation::TOTAL_COUNT));
UMA_HISTOGRAM_ENUMERATION(
- kHistogramIconClickLocation, static_cast<int>(origin),
- static_cast<int>(MediaRouterDialogOpenOrigin::TOTAL_COUNT));
+ kHistogramIconClickLocation, static_cast<int>(activation_location),
+ static_cast<int>(MediaRouterDialogActivationLocation::TOTAL_COUNT));
}
// static
@@ -251,24 +252,24 @@ void MediaRouterMetrics::RecordDeviceCount(int device_count) {
// static
void MediaRouterMetrics::RecordGmcDeviceCount(
- MediaRouterDialogOpenOrigin origin,
+ MediaRouterDialogActivationLocation activation_location,
mojom::MediaRouteProviderId provider,
bool is_available,
int count) {
base::UmaHistogramCounts100(
- GetDeviceCountHistogramName("GlobalMediaControls", origin, provider,
- is_available),
+ GetDeviceCountHistogramName("GlobalMediaControls", activation_location,
+ provider, is_available),
count);
}
// static
void MediaRouterMetrics::RecordCastDialogDeviceCount(
- MediaRouterDialogOpenOrigin origin,
+ MediaRouterDialogActivationLocation activation_location,
mojom::MediaRouteProviderId provider,
bool is_available,
int count) {
base::UmaHistogramCounts100(
- GetDeviceCountHistogramName("CastHarmony", origin, provider,
+ GetDeviceCountHistogramName("CastHarmony", activation_location, provider,
is_available),
count);
}
@@ -315,35 +316,32 @@ void MediaRouterMetrics::RecordIconStateAtInit(bool is_pinned) {
// static
void MediaRouterMetrics::RecordCreateRouteResultCode(
- RouteRequestResult::ResultCode result_code,
+ mojom::RouteRequestResultCode result_code,
absl::optional<mojom::MediaRouteProviderId> provider_id) {
- DCHECK_LT(result_code, RouteRequestResult::TOTAL_COUNT);
base::UmaHistogramEnumeration(
GetHistogramNameForProvider(kHistogramProviderCreateRouteResult,
provider_id),
- result_code, RouteRequestResult::TOTAL_COUNT);
+ result_code);
}
// static
void MediaRouterMetrics::RecordJoinRouteResultCode(
- RouteRequestResult::ResultCode result_code,
+ mojom::RouteRequestResultCode result_code,
absl::optional<mojom::MediaRouteProviderId> provider_id) {
- DCHECK_LT(result_code, RouteRequestResult::ResultCode::TOTAL_COUNT);
base::UmaHistogramEnumeration(
GetHistogramNameForProvider(kHistogramProviderJoinRouteResult,
provider_id),
- result_code, RouteRequestResult::TOTAL_COUNT);
+ result_code);
}
// static
void MediaRouterMetrics::RecordMediaRouteProviderTerminateRoute(
- RouteRequestResult::ResultCode result_code,
+ mojom::RouteRequestResultCode result_code,
absl::optional<mojom::MediaRouteProviderId> provider_id) {
- DCHECK_LT(result_code, RouteRequestResult::ResultCode::TOTAL_COUNT);
base::UmaHistogramEnumeration(
GetHistogramNameForProvider(kHistogramProviderTerminateRouteResult,
provider_id),
- result_code, RouteRequestResult::TOTAL_COUNT);
+ result_code);
}
// static
diff --git a/chromium/components/media_router/browser/media_router_metrics.h b/chromium/components/media_router/browser/media_router_metrics.h
index 75f493b9fa2..3c95d6f4374 100644
--- a/chromium/components/media_router/browser/media_router_metrics.h
+++ b/chromium/components/media_router/browser/media_router_metrics.h
@@ -63,10 +63,10 @@ enum class DialogActivationLocationAndCastMode {
kMaxValue = kSharingHubAndDesktopMirror
};
+// These values are persisted to logs. Entries should not be renumbered and
+// numeric values should never be reused.
// Where the user clicked to open the Media Router dialog.
-// TODO(takumif): Rename this to DialogActivationLocation to avoid confusing
-// "origin" with URL origins.
-enum class MediaRouterDialogOpenOrigin {
+enum class MediaRouterDialogActivationLocation {
TOOLBAR = 0,
OVERFLOW_MENU = 1,
CONTEXTUAL_MENU = 2,
@@ -170,7 +170,8 @@ class MediaRouterMetrics {
static const base::TimeDelta kDeviceCountMetricDelay;
// Records where the user clicked to open the Media Router dialog.
- static void RecordMediaRouterDialogOrigin(MediaRouterDialogOpenOrigin origin);
+ static void RecordMediaRouterDialogActivationLocation(
+ MediaRouterDialogActivationLocation activation_location);
// Records the duration it takes for the Media Router dialog to open and
// finish painting after a user clicks to open the dialog.
@@ -217,16 +218,18 @@ class MediaRouterMetrics {
static void RecordDeviceCount(int device_count);
// Records the number of sinks in |is_available| state, provided by |provider|
- // that was opened via |origin|. Recorded for the global media controls and
- // the Cast dialog, respectively.
- static void RecordGmcDeviceCount(MediaRouterDialogOpenOrigin origin,
- mojom::MediaRouteProviderId provider,
- bool is_available,
- int count);
- static void RecordCastDialogDeviceCount(MediaRouterDialogOpenOrigin origin,
- mojom::MediaRouteProviderId provider,
- bool is_available,
- int count);
+ // that was opened via |activation_location|. Recorded for the global media
+ // controls and the Cast dialog, respectively.
+ static void RecordGmcDeviceCount(
+ MediaRouterDialogActivationLocation activation_location,
+ mojom::MediaRouteProviderId provider,
+ bool is_available,
+ int count);
+ static void RecordCastDialogDeviceCount(
+ MediaRouterDialogActivationLocation activation_location,
+ mojom::MediaRouteProviderId provider,
+ bool is_available,
+ int count);
// Records the index of the device the user has started casting to on the
// devices list. The index starts at 0.
@@ -256,18 +259,18 @@ class MediaRouterMetrics {
// This and the following methods that record ResultCode use per-provider
// histograms.
static void RecordCreateRouteResultCode(
- RouteRequestResult::ResultCode result_code,
+ mojom::RouteRequestResultCode result_code,
absl::optional<mojom::MediaRouteProviderId> provider_id = absl::nullopt);
// Records the outcome of a join route request to a Media Route Provider.
static void RecordJoinRouteResultCode(
- RouteRequestResult::ResultCode result_code,
+ mojom::RouteRequestResultCode result_code,
absl::optional<mojom::MediaRouteProviderId> provider_id = absl::nullopt);
// Records the outcome of a call to terminateRoute() on a Media Route
// Provider.
static void RecordMediaRouteProviderTerminateRoute(
- RouteRequestResult::ResultCode result_code,
+ mojom::RouteRequestResultCode result_code,
absl::optional<mojom::MediaRouteProviderId> provider_id = absl::nullopt);
// Records the type of the MediaRouter dialog opened. Android only.
diff --git a/chromium/components/media_router/browser/media_router_metrics_unittest.cc b/chromium/components/media_router/browser/media_router_metrics_unittest.cc
index 74e6b665805..87559fd1ac9 100644
--- a/chromium/components/media_router/browser/media_router_metrics_unittest.cc
+++ b/chromium/components/media_router/browser/media_router_metrics_unittest.cc
@@ -57,7 +57,7 @@ void TestRecordBooleanMetric(base::RepeatingCallback<void(bool)> recording_cb,
// Tests that |record_cb| records metrics for each MediaRouteProvider in a
// histogram specific to the provider.
void TestRouteResultCodeHistogramsWithProviders(
- base::RepeatingCallback<void(RouteRequestResult::ResultCode,
+ base::RepeatingCallback<void(mojom::RouteRequestResultCode,
absl::optional<mojom::MediaRouteProviderId>)>
record_cb,
mojom::MediaRouteProviderId provider1,
@@ -68,29 +68,33 @@ void TestRouteResultCodeHistogramsWithProviders(
tester.ExpectTotalCount(histogram_provider1, 0);
tester.ExpectTotalCount(histogram_provider2, 0);
- record_cb.Run(RouteRequestResult::SINK_NOT_FOUND, provider1);
- record_cb.Run(RouteRequestResult::OK, provider2);
- record_cb.Run(RouteRequestResult::SINK_NOT_FOUND, provider1);
- record_cb.Run(RouteRequestResult::ROUTE_NOT_FOUND, provider2);
- record_cb.Run(RouteRequestResult::OK, provider1);
+ record_cb.Run(mojom::RouteRequestResultCode::SINK_NOT_FOUND, provider1);
+ record_cb.Run(mojom::RouteRequestResultCode::OK, provider2);
+ record_cb.Run(mojom::RouteRequestResultCode::SINK_NOT_FOUND, provider1);
+ record_cb.Run(mojom::RouteRequestResultCode::ROUTE_NOT_FOUND, provider2);
+ record_cb.Run(mojom::RouteRequestResultCode::OK, provider1);
tester.ExpectTotalCount(histogram_provider1, 3);
EXPECT_THAT(
tester.GetAllSamples(histogram_provider1),
ElementsAre(
- Bucket(static_cast<int>(RouteRequestResult::OK), 1),
- Bucket(static_cast<int>(RouteRequestResult::SINK_NOT_FOUND), 2)));
+ Bucket(static_cast<int>(mojom::RouteRequestResultCode::OK), 1),
+ Bucket(
+ static_cast<int>(mojom::RouteRequestResultCode::SINK_NOT_FOUND),
+ 2)));
tester.ExpectTotalCount(histogram_provider2, 2);
EXPECT_THAT(
tester.GetAllSamples(histogram_provider2),
ElementsAre(
- Bucket(static_cast<int>(RouteRequestResult::OK), 1),
- Bucket(static_cast<int>(RouteRequestResult::ROUTE_NOT_FOUND), 1)));
+ Bucket(static_cast<int>(mojom::RouteRequestResultCode::OK), 1),
+ Bucket(
+ static_cast<int>(mojom::RouteRequestResultCode::ROUTE_NOT_FOUND),
+ 1)));
}
void TestRouteResultCodeHistograms(
- base::RepeatingCallback<void(RouteRequestResult::ResultCode,
+ base::RepeatingCallback<void(mojom::RouteRequestResultCode,
absl::optional<mojom::MediaRouteProviderId>)>
record_cb,
const std::string& base_histogram_name) {
@@ -107,22 +111,25 @@ void TestRouteResultCodeHistograms(
} // namespace
-TEST(MediaRouterMetricsTest, RecordMediaRouterDialogOrigin) {
+TEST(MediaRouterMetricsTest, RecordMediaRouterDialogActivationLocation) {
base::HistogramTester tester;
- const MediaRouterDialogOpenOrigin origin1 =
- MediaRouterDialogOpenOrigin::TOOLBAR;
- const MediaRouterDialogOpenOrigin origin2 =
- MediaRouterDialogOpenOrigin::CONTEXTUAL_MENU;
+ const MediaRouterDialogActivationLocation activation_location1 =
+ MediaRouterDialogActivationLocation::TOOLBAR;
+ const MediaRouterDialogActivationLocation activation_location2 =
+ MediaRouterDialogActivationLocation::CONTEXTUAL_MENU;
tester.ExpectTotalCount(MediaRouterMetrics::kHistogramIconClickLocation, 0);
- MediaRouterMetrics::RecordMediaRouterDialogOrigin(origin1);
- MediaRouterMetrics::RecordMediaRouterDialogOrigin(origin2);
- MediaRouterMetrics::RecordMediaRouterDialogOrigin(origin1);
+ MediaRouterMetrics::RecordMediaRouterDialogActivationLocation(
+ activation_location1);
+ MediaRouterMetrics::RecordMediaRouterDialogActivationLocation(
+ activation_location2);
+ MediaRouterMetrics::RecordMediaRouterDialogActivationLocation(
+ activation_location1);
tester.ExpectTotalCount(MediaRouterMetrics::kHistogramIconClickLocation, 3);
EXPECT_THAT(
tester.GetAllSamples(MediaRouterMetrics::kHistogramIconClickLocation),
- ElementsAre(Bucket(static_cast<int>(origin1), 2),
- Bucket(static_cast<int>(origin2), 1)));
+ ElementsAre(Bucket(static_cast<int>(activation_location1), 2),
+ Bucket(static_cast<int>(activation_location2), 1)));
}
TEST(MediaRouterMetricsTest, RecordMediaRouterDialogPaint) {
diff --git a/chromium/components/media_router/browser/presentation/presentation_service_delegate_impl.cc b/chromium/components/media_router/browser/presentation/presentation_service_delegate_impl.cc
index d3510dfa183..a19652f904c 100644
--- a/chromium/components/media_router/browser/presentation/presentation_service_delegate_impl.cc
+++ b/chromium/components/media_router/browser/presentation/presentation_service_delegate_impl.cc
@@ -32,6 +32,7 @@
#include "components/media_router/common/media_sink.h"
#include "components/media_router/common/media_source.h"
#include "content/public/browser/browser_context.h"
+#include "content/public/browser/presentation_observer.h"
#include "content/public/browser/presentation_request.h"
#include "content/public/browser/presentation_screen_availability_listener.h"
#include "content/public/browser/render_frame_host.h"
@@ -605,12 +606,12 @@ void PresentationServiceDelegateImpl::ListenForConnectionStateChange(
}
void PresentationServiceDelegateImpl::AddObserver(
- WebContentsPresentationManager::Observer* observer) {
+ content::PresentationObserver* observer) {
presentation_observers_.AddObserver(observer);
}
void PresentationServiceDelegateImpl::RemoveObserver(
- WebContentsPresentationManager::Observer* observer) {
+ content::PresentationObserver* observer) {
presentation_observers_.RemoveObserver(observer);
}
@@ -751,7 +752,7 @@ void PresentationServiceDelegateImpl::NotifyDefaultPresentationChanged(
void PresentationServiceDelegateImpl::NotifyMediaRoutesChanged() {
auto routes = GetMediaRoutes();
for (auto& presentation_observer : presentation_observers_)
- presentation_observer.OnMediaRoutesChanged(routes);
+ presentation_observer.OnPresentationsChanged(!routes.empty());
}
void PresentationServiceDelegateImpl::OnConnectionStateChanged(
diff --git a/chromium/components/media_router/browser/presentation/presentation_service_delegate_impl.h b/chromium/components/media_router/browser/presentation/presentation_service_delegate_impl.h
index bebfa22e732..84e8d861820 100644
--- a/chromium/components/media_router/browser/presentation/presentation_service_delegate_impl.h
+++ b/chromium/components/media_router/browser/presentation/presentation_service_delegate_impl.h
@@ -115,9 +115,8 @@ class PresentationServiceDelegateImpl
state_changed_cb) override;
// WebContentsPresentationManager implementation.
- void AddObserver(WebContentsPresentationManager::Observer* observer) override;
- void RemoveObserver(
- WebContentsPresentationManager::Observer* observer) override;
+ void AddObserver(content::PresentationObserver* observer) override;
+ void RemoveObserver(content::PresentationObserver* observer) override;
bool HasDefaultPresentationRequest() const override;
const content::PresentationRequest& GetDefaultPresentationRequest()
const override;
@@ -237,8 +236,7 @@ class PresentationServiceDelegateImpl
// References to the observers listening for changes to the default
// presentation and presentation MediaRoutes associated with the
// WebContents.
- base::ObserverList<WebContentsPresentationManager::Observer>
- presentation_observers_;
+ base::ObserverList<content::PresentationObserver> presentation_observers_;
// Default presentation request for the owning WebContents.
absl::optional<content::PresentationRequest> default_presentation_request_;
diff --git a/chromium/components/media_router/browser/presentation/web_contents_presentation_manager.h b/chromium/components/media_router/browser/presentation/web_contents_presentation_manager.h
index 143b5281a00..1c3452691f5 100644
--- a/chromium/components/media_router/browser/presentation/web_contents_presentation_manager.h
+++ b/chromium/components/media_router/browser/presentation/web_contents_presentation_manager.h
@@ -14,6 +14,7 @@
namespace content {
struct PresentationRequest;
+class PresentationObserver;
class WebContents;
} // namespace content
@@ -27,21 +28,6 @@ class RouteRequestResult;
// WebContents.
class WebContentsPresentationManager {
public:
- class Observer : public base::CheckedObserver {
- public:
- // Called whenever presentation MediaRoutes associated with the WebContents
- // are added, removed, or have their attributes changed.
- virtual void OnMediaRoutesChanged(const std::vector<MediaRoute>& routes) {}
-
- // |presentation_request| is a nullptr if the default PresentationRequest
- // has been removed.
- virtual void OnDefaultPresentationChanged(
- const content::PresentationRequest* presentation_request) {}
-
- protected:
- Observer() = default;
- };
-
static base::WeakPtr<WebContentsPresentationManager> Get(
content::WebContents* web_contents);
@@ -51,8 +37,8 @@ class WebContentsPresentationManager {
virtual ~WebContentsPresentationManager() = 0;
- virtual void AddObserver(Observer* observer) = 0;
- virtual void RemoveObserver(Observer* observer) = 0;
+ virtual void AddObserver(content::PresentationObserver* observer) = 0;
+ virtual void RemoveObserver(content::PresentationObserver* observer) = 0;
// Returns true if there is a default presentation request for the
// WebContents.
diff --git a/chromium/components/media_router/common/BUILD.gn b/chromium/components/media_router/common/BUILD.gn
index 4ae63270b3a..5a57c318fe7 100644
--- a/chromium/components/media_router/common/BUILD.gn
+++ b/chromium/components/media_router/common/BUILD.gn
@@ -31,7 +31,10 @@ static_library("common") {
"route_request_result.h",
]
- deps = [ "mojom:media_route_provider_id" ]
+ deps = [
+ "mojom:media_route_provider_id",
+ "mojom:route_request_result_code",
+ ]
if (!is_android) {
sources += [
diff --git a/chromium/components/media_router/common/media_source.cc b/chromium/components/media_router/common/media_source.cc
index 65ccf991610..285388a615c 100644
--- a/chromium/components/media_router/common/media_source.cc
+++ b/chromium/components/media_router/common/media_source.cc
@@ -78,20 +78,6 @@ MediaSource::MediaSource(const GURL& presentation_url)
MediaSource::~MediaSource() = default;
// static
-MediaSource MediaSource::ForLocalFile() {
- // TODO(crbug.com/1090878): Use something more sane here. Fixing this
- // requires tracking down other places where tab ID 0 is used to indicate
- // local file casting.
- //
- // This probably isn't a source of bugs in practice, because tab IDs are
- // generated by SessionIdGenerator, which appears to only produce positive
- // values, but that fact isn't clearly documentated, and other parts of
- // Chromium don't seem to rely on it, using -1 as the canonical invalid tab
- // ID.
- return MediaSource(base::StringPrintf(kTabMediaUrnFormat, 0));
-}
-
-// static
MediaSource MediaSource::ForAnyTab() {
return MediaSource(std::string(kAnyTabMediaUrn));
}
@@ -139,11 +125,6 @@ bool MediaSource::IsDesktopMirroringSource() const {
base::CompareCase::SENSITIVE);
}
-bool MediaSource::IsLocalFileSource() const {
- // TODO(crbug.com/1090878): Keep this method is sync with ForLocalFile().
- return TabId() == 0;
-}
-
bool MediaSource::IsCastPresentationUrl() const {
return url_.SchemeIs(kCastPresentationUrlScheme) ||
IsLegacyCastPresentationUrl(url_);
diff --git a/chromium/components/media_router/common/media_source.h b/chromium/components/media_router/common/media_source.h
index ec1ad735b8b..ea28353f172 100644
--- a/chromium/components/media_router/common/media_source.h
+++ b/chromium/components/media_router/common/media_source.h
@@ -89,7 +89,6 @@ class MediaSource {
// Protocol-specific media source object creation.
// Returns MediaSource URI depending on the type of source.
- static MediaSource ForLocalFile();
static MediaSource ForAnyTab();
static MediaSource ForTab(int tab_id);
static MediaSource ForPresentationUrl(const GURL& presentation_url);
@@ -114,9 +113,6 @@ class MediaSource {
// Returns true if source outputs its content via desktop mirroring.
bool IsDesktopMirroringSource() const;
- // Returns true if the source is a local file.
- bool IsLocalFileSource() const;
-
// Returns true if this is represents a Cast Presentation URL.
bool IsCastPresentationUrl() const;
diff --git a/chromium/components/media_router/common/media_source_unittest.cc b/chromium/components/media_router/common/media_source_unittest.cc
index f2b8cd48f53..37a74f57a70 100644
--- a/chromium/components/media_router/common/media_source_unittest.cc
+++ b/chromium/components/media_router/common/media_source_unittest.cc
@@ -60,7 +60,6 @@ TEST(MediaSourceTest, ForAnyTab) {
EXPECT_EQ(-1, source.TabId());
EXPECT_FALSE(source.IsDesktopMirroringSource());
EXPECT_TRUE(source.IsTabMirroringSource());
- EXPECT_FALSE(source.IsLocalFileSource());
EXPECT_FALSE(source.IsCastPresentationUrl());
EXPECT_FALSE(source.IsDialSource());
}
@@ -71,17 +70,6 @@ TEST(MediaSourceTest, ForTab) {
EXPECT_EQ(123, source.TabId());
EXPECT_FALSE(source.IsDesktopMirroringSource());
EXPECT_TRUE(source.IsTabMirroringSource());
- EXPECT_FALSE(source.IsLocalFileSource());
- EXPECT_FALSE(source.IsCastPresentationUrl());
- EXPECT_FALSE(source.IsDialSource());
-}
-
-TEST(MediaSourceTest, ForLocalFile) {
- auto source = MediaSource::ForLocalFile();
- EXPECT_EQ("urn:x-org.chromium.media:source:tab:0", source.id());
- EXPECT_FALSE(source.IsDesktopMirroringSource());
- EXPECT_FALSE(source.IsTabMirroringSource());
- EXPECT_TRUE(source.IsLocalFileSource());
EXPECT_FALSE(source.IsCastPresentationUrl());
EXPECT_FALSE(source.IsDialSource());
}
@@ -94,7 +82,6 @@ TEST(MediaSourceTest, ForDesktopWithoutAudio) {
EXPECT_EQ(media_id, source.DesktopStreamId());
EXPECT_FALSE(source.IsDesktopSourceWithAudio());
EXPECT_FALSE(source.IsTabMirroringSource());
- EXPECT_FALSE(source.IsLocalFileSource());
EXPECT_FALSE(source.IsCastPresentationUrl());
EXPECT_FALSE(source.IsDialSource());
}
@@ -109,7 +96,6 @@ TEST(MediaSourceTest, ForDesktopWithAudio) {
EXPECT_EQ(media_id, source.DesktopStreamId());
EXPECT_TRUE(source.IsDesktopSourceWithAudio());
EXPECT_FALSE(source.IsTabMirroringSource());
- EXPECT_FALSE(source.IsLocalFileSource());
EXPECT_FALSE(source.IsCastPresentationUrl());
EXPECT_FALSE(source.IsDialSource());
}
@@ -121,7 +107,6 @@ TEST(MediaSourceTest, ForPresentationUrl) {
EXPECT_EQ(kPresentationUrl, source.id());
EXPECT_FALSE(source.IsDesktopMirroringSource());
EXPECT_FALSE(source.IsTabMirroringSource());
- EXPECT_FALSE(source.IsLocalFileSource());
EXPECT_FALSE(source.IsCastPresentationUrl());
EXPECT_FALSE(source.IsDialSource());
}
diff --git a/chromium/components/media_router/common/mojom/BUILD.gn b/chromium/components/media_router/common/mojom/BUILD.gn
index 17f42f7a994..6f5e108cb7b 100644
--- a/chromium/components/media_router/common/mojom/BUILD.gn
+++ b/chromium/components/media_router/common/mojom/BUILD.gn
@@ -77,10 +77,6 @@ mojom("media_router") {
mojom = "media_router.mojom.MediaSink"
cpp = "::media_router::MediaSinkInternal"
},
- {
- mojom = "media_router.mojom.RouteRequestResultCode"
- cpp = "::media_router::RouteRequestResult::ResultCode"
- },
]
traits_headers = [ "media_router_mojom_traits.h" ]
traits_sources = [ "media_router_mojom_traits.cc" ]
diff --git a/chromium/components/media_router/common/mojom/media_router.mojom b/chromium/components/media_router/common/mojom/media_router.mojom
index 6eabc090542..38fe5beb263 100644
--- a/chromium/components/media_router/common/mojom/media_router.mojom
+++ b/chromium/components/media_router/common/mojom/media_router.mojom
@@ -253,9 +253,9 @@ interface MediaRouteProvider {
// may be overridden by a provider implementation. The presentation ID will
// be used by the presentation API to refer to the created route.
//
- // |origin| and |tab_id| may be passed in for enforcing same-origin and/or
- // same-tab scopes. Use -1 as |tab_id| in cases where the request is not
- // made on behalf of a tab.
+ // |origin| and |frame_tree_node_id| may be passed in for enforcing
+ // same-origin and/or same-tab scopes. Use -1 as |frame_tree_node_id| in
+ // cases where the request is not made on behalf of a tab.
//
// If |timeout| is positive, it will be used in place of the default timeout
// defined by Media Route Provider Manager.
@@ -270,12 +270,13 @@ interface MediaRouteProvider {
//
// |result_code| will be set to OK if successful, or an error code if an error
// occurred.
- // TODO(btolsch): Consolidate result params into struct.
+ // TODO(crbug.com/1346066): Consolidate parameters into a struct.
+ // TODO(crbug.com/1351184): Make |frame_tree_node_id| optional.
CreateRoute(string media_source,
string sink_id,
string original_presentation_id,
url.mojom.Origin origin,
- int32 tab_id,
+ int32 frame_tree_node_id,
mojo_base.mojom.TimeDelta timeout,
bool off_the_record) =>
(MediaRoute? route,
@@ -286,8 +287,8 @@ interface MediaRouteProvider {
// Requests a connection to an established route for |media_source| given
// by |presentation_id|.
//
- // |origin| and |tab_id| are used for validating same-origin/tab scopes;
- // see CreateRoute for additional documentation.
+ // |origin| and |frame_tree_node_id| are used for validating same-origin/tab
+ // scopes; see CreateRoute for additional documentation.
//
// If |timeout| is positive, it will be used in place of the default timeout
// defined by Media Route Provider Manager.
@@ -302,10 +303,12 @@ interface MediaRouteProvider {
//
// |result_code| will be set to OK if successful, or an error code if an error
// occurred.
+ // TODO(crbug.com/1346066): Consolidate parameters into a struct.
+ // TODO(crbug.com/1351184): Make |frame_tree_node_id| optional.
JoinRoute(string media_source,
string presentation_id,
url.mojom.Origin origin,
- int32 tab_id,
+ int32 frame_tree_node_id,
mojo_base.mojom.TimeDelta timeout,
bool off_the_record) =>
(MediaRoute? route,
@@ -447,10 +450,9 @@ interface MediaRouter {
GetLogsAsString() => (string logs);
// Called to get a mirroring.mojom.MirroringServiceHost.
- GetMirroringServiceHostForTab(int32 target_tab_id,
+ GetMirroringServiceHostForTab(int32 frame_tree_node_id,
pending_receiver<mirroring.mojom.MirroringServiceHost> receiver);
GetMirroringServiceHostForDesktop(
- int32 initiator_tab_id, // The tab used to register the stream.
string desktop_stream_id,
pending_receiver<mirroring.mojom.MirroringServiceHost> receiver);
GetMirroringServiceHostForOffscreenTab(
diff --git a/chromium/components/media_router/common/mojom/media_router_mojom_traits.h b/chromium/components/media_router/common/mojom/media_router_mojom_traits.h
index 22b7e7c7a01..b94f3a1555f 100644
--- a/chromium/components/media_router/common/mojom/media_router_mojom_traits.h
+++ b/chromium/components/media_router/common/mojom/media_router_mojom_traits.h
@@ -393,97 +393,6 @@ struct StructTraits<media_router::mojom::MediaRouteDataView,
}
};
-// RouteRequestResultCode
-
-template <>
-struct EnumTraits<media_router::mojom::RouteRequestResultCode,
- media_router::RouteRequestResult::ResultCode> {
- static media_router::mojom::RouteRequestResultCode ToMojom(
- media_router::RouteRequestResult::ResultCode code) {
- switch (code) {
- case media_router::RouteRequestResult::UNKNOWN_ERROR:
- return media_router::mojom::RouteRequestResultCode::UNKNOWN_ERROR;
- case media_router::RouteRequestResult::OK:
- return media_router::mojom::RouteRequestResultCode::OK;
- case media_router::RouteRequestResult::TIMED_OUT:
- return media_router::mojom::RouteRequestResultCode::TIMED_OUT;
- case media_router::RouteRequestResult::ROUTE_NOT_FOUND:
- return media_router::mojom::RouteRequestResultCode::ROUTE_NOT_FOUND;
- case media_router::RouteRequestResult::SINK_NOT_FOUND:
- return media_router::mojom::RouteRequestResultCode::SINK_NOT_FOUND;
- case media_router::RouteRequestResult::INVALID_ORIGIN:
- return media_router::mojom::RouteRequestResultCode::INVALID_ORIGIN;
- case media_router::RouteRequestResult::DEPRECATED_OFF_THE_RECORD_MISMATCH:
- return media_router::mojom::RouteRequestResultCode::
- DEPRECATED_OFF_THE_RECORD_MISMATCH;
- case media_router::RouteRequestResult::NO_SUPPORTED_PROVIDER:
- return media_router::mojom::RouteRequestResultCode::
- NO_SUPPORTED_PROVIDER;
- case media_router::RouteRequestResult::CANCELLED:
- return media_router::mojom::RouteRequestResultCode::CANCELLED;
- case media_router::RouteRequestResult::ROUTE_ALREADY_EXISTS:
- return media_router::mojom::RouteRequestResultCode::
- ROUTE_ALREADY_EXISTS;
- case media_router::RouteRequestResult::DESKTOP_PICKER_FAILED:
- return media_router::mojom::RouteRequestResultCode::
- DESKTOP_PICKER_FAILED;
- case media_router::RouteRequestResult::ROUTE_ALREADY_TERMINATED:
- return media_router::mojom::RouteRequestResultCode::
- ROUTE_ALREADY_TERMINATED;
- default:
- NOTREACHED() << "Unknown RouteRequestResultCode "
- << static_cast<int>(code);
- return media_router::mojom::RouteRequestResultCode::UNKNOWN_ERROR;
- }
- }
-
- static bool FromMojom(media_router::mojom::RouteRequestResultCode input,
- media_router::RouteRequestResult::ResultCode* output) {
- switch (input) {
- case media_router::mojom::RouteRequestResultCode::UNKNOWN_ERROR:
- *output = media_router::RouteRequestResult::UNKNOWN_ERROR;
- return true;
- case media_router::mojom::RouteRequestResultCode::OK:
- *output = media_router::RouteRequestResult::OK;
- return true;
- case media_router::mojom::RouteRequestResultCode::TIMED_OUT:
- *output = media_router::RouteRequestResult::TIMED_OUT;
- return true;
- case media_router::mojom::RouteRequestResultCode::ROUTE_NOT_FOUND:
- *output = media_router::RouteRequestResult::ROUTE_NOT_FOUND;
- return true;
- case media_router::mojom::RouteRequestResultCode::SINK_NOT_FOUND:
- *output = media_router::RouteRequestResult::SINK_NOT_FOUND;
- return true;
- case media_router::mojom::RouteRequestResultCode::INVALID_ORIGIN:
- *output = media_router::RouteRequestResult::INVALID_ORIGIN;
- return true;
- case media_router::mojom::RouteRequestResultCode::
- DEPRECATED_OFF_THE_RECORD_MISMATCH:
- *output = media_router::RouteRequestResult::
- DEPRECATED_OFF_THE_RECORD_MISMATCH;
- return true;
- case media_router::mojom::RouteRequestResultCode::NO_SUPPORTED_PROVIDER:
- *output = media_router::RouteRequestResult::NO_SUPPORTED_PROVIDER;
- return true;
- case media_router::mojom::RouteRequestResultCode::CANCELLED:
- *output = media_router::RouteRequestResult::CANCELLED;
- return true;
- case media_router::mojom::RouteRequestResultCode::ROUTE_ALREADY_EXISTS:
- *output = media_router::RouteRequestResult::ROUTE_ALREADY_EXISTS;
- return true;
- case media_router::mojom::RouteRequestResultCode::DESKTOP_PICKER_FAILED:
- *output = media_router::RouteRequestResult::DESKTOP_PICKER_FAILED;
- return true;
- case media_router::mojom::RouteRequestResultCode::
- ROUTE_ALREADY_TERMINATED:
- *output = media_router::RouteRequestResult::ROUTE_ALREADY_TERMINATED;
- return true;
- }
- return false;
- }
-};
-
} // namespace mojo
#endif // COMPONENTS_MEDIA_ROUTER_COMMON_MOJOM_MEDIA_ROUTER_MOJOM_TRAITS_H_
diff --git a/chromium/components/media_router/common/mojom/route_request_result_code.mojom b/chromium/components/media_router/common/mojom/route_request_result_code.mojom
index 88a0099d45d..33ac1b228bb 100644
--- a/chromium/components/media_router/common/mojom/route_request_result_code.mojom
+++ b/chromium/components/media_router/common/mojom/route_request_result_code.mojom
@@ -4,10 +4,8 @@
module media_router.mojom;
-// Keep in sync with:
-// - RouteRequestResult::ResultCode in route_request_result.h
-// - MediaRouteProviderResult enum in tools/metrics/histograms.xml.
-// - media_router_mojom_traits.h
+// Keep in sync with MediaRouteProviderResult enum in
+// tools/metrics/histograms.xml.
enum RouteRequestResultCode {
UNKNOWN_ERROR,
OK,
@@ -20,6 +18,7 @@ enum RouteRequestResultCode {
CANCELLED,
ROUTE_ALREADY_EXISTS,
DESKTOP_PICKER_FAILED,
- ROUTE_ALREADY_TERMINATED
+ ROUTE_ALREADY_TERMINATED,
+ REDUNDANT_REQUEST,
// New values must be added here.
};
diff --git a/chromium/components/media_router/common/providers/cast/cast_media_source.cc b/chromium/components/media_router/common/providers/cast/cast_media_source.cc
index b862ee25400..76338a34dc6 100644
--- a/chromium/components/media_router/common/providers/cast/cast_media_source.cc
+++ b/chromium/components/media_router/common/providers/cast/cast_media_source.cc
@@ -423,7 +423,7 @@ CastAppInfo CastAppInfo::ForCastStreamingAudio() {
// static
std::unique_ptr<CastMediaSource> CastMediaSource::FromMediaSource(
const MediaSource& source) {
- if (source.IsTabMirroringSource() || source.IsLocalFileSource())
+ if (source.IsTabMirroringSource())
return CastMediaSourceForTabMirroring(source.id());
if (source.IsDesktopMirroringSource())
diff --git a/chromium/components/media_router/common/route_request_result.cc b/chromium/components/media_router/common/route_request_result.cc
index 194d08f5495..438b7a4e5a2 100644
--- a/chromium/components/media_router/common/route_request_result.cc
+++ b/chromium/components/media_router/common/route_request_result.cc
@@ -14,21 +14,22 @@ std::unique_ptr<RouteRequestResult> RouteRequestResult::FromSuccess(
const std::string& presentation_id) {
return std::make_unique<RouteRequestResult>(
std::make_unique<MediaRoute>(route), presentation_id, std::string(),
- RouteRequestResult::OK);
+ mojom::RouteRequestResultCode::OK);
}
// static
std::unique_ptr<RouteRequestResult> RouteRequestResult::FromError(
const std::string& error,
- ResultCode result_code) {
+ mojom::RouteRequestResultCode result_code) {
return std::make_unique<RouteRequestResult>(nullptr, std::string(), error,
result_code);
}
-RouteRequestResult::RouteRequestResult(std::unique_ptr<MediaRoute> route,
- const std::string& presentation_id,
- const std::string& error,
- ResultCode result_code)
+RouteRequestResult::RouteRequestResult(
+ std::unique_ptr<MediaRoute> route,
+ const std::string& presentation_id,
+ const std::string& error,
+ mojom::RouteRequestResultCode result_code)
: route_(std::move(route)),
presentation_id_(presentation_id),
error_(error),
diff --git a/chromium/components/media_router/common/route_request_result.h b/chromium/components/media_router/common/route_request_result.h
index f4423951408..64e970d46a0 100644
--- a/chromium/components/media_router/common/route_request_result.h
+++ b/chromium/components/media_router/common/route_request_result.h
@@ -8,6 +8,7 @@
#include <memory>
#include <string>
+#include "components/media_router/common/mojom/route_request_result_code.mojom.h"
#include "url/gurl.h"
namespace media_router {
@@ -22,45 +23,25 @@ class MediaRoute;
// |CreateRoute()|, the ID is generated by MediaRouter and is guaranteed to
// be unique.
// |error|: Empty string.
-// |result_code|: RouteRequestResult::OK
+// |result_code|: mojom::RouteRequestResultCode::OK
// On failure:
// |route|: nullptr
// |presentation_id|: Empty string.
// |error|: Non-empty string describing the error.
-// |result_code|: A value from RouteRequestResult describing the error.
+// |result_code|: A value from mojom::RouteRequestResultCode describing the
+// error.
class RouteRequestResult {
public:
- // Keep in sync with:
- // - RouteRequestResultCode in route_request_result_code.mojom
- // - MediaRouteProviderResult enum in tools/metrics/histograms/enums.xml
- // - media_router_mojom_traits.h
- enum ResultCode {
- UNKNOWN_ERROR = 0,
- OK = 1,
- TIMED_OUT = 2,
- ROUTE_NOT_FOUND = 3,
- SINK_NOT_FOUND = 4,
- INVALID_ORIGIN = 5,
- DEPRECATED_OFF_THE_RECORD_MISMATCH = 6, // DEPRECATED.
- NO_SUPPORTED_PROVIDER = 7,
- CANCELLED = 8,
- ROUTE_ALREADY_EXISTS = 9,
- DESKTOP_PICKER_FAILED = 10,
- ROUTE_ALREADY_TERMINATED = 11,
- // New values must be added here.
-
- TOTAL_COUNT = 12 // The total number of values.
- };
-
static std::unique_ptr<RouteRequestResult> FromSuccess(
const MediaRoute& route,
const std::string& presentation_id);
- static std::unique_ptr<RouteRequestResult> FromError(const std::string& error,
- ResultCode result_code);
+ static std::unique_ptr<RouteRequestResult> FromError(
+ const std::string& error,
+ mojom::RouteRequestResultCode result_code);
RouteRequestResult(std::unique_ptr<MediaRoute> route,
const std::string& presentation_id,
const std::string& error,
- ResultCode result_code);
+ mojom::RouteRequestResultCode result_code);
RouteRequestResult(const RouteRequestResult&) = delete;
RouteRequestResult& operator=(const RouteRequestResult&) = delete;
@@ -73,14 +54,14 @@ class RouteRequestResult {
std::string presentation_id() const { return presentation_id_; }
GURL presentation_url() const { return presentation_url_; }
std::string error() const { return error_; }
- ResultCode result_code() const { return result_code_; }
+ mojom::RouteRequestResultCode result_code() const { return result_code_; }
private:
std::unique_ptr<MediaRoute> route_;
std::string presentation_id_;
GURL presentation_url_;
std::string error_;
- ResultCode result_code_;
+ mojom::RouteRequestResultCode result_code_;
};
} // namespace media_router