diff options
Diffstat (limited to 'chromium/components/media_router')
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 |