| Index: chrome/browser/media/router/media_router_mojo_impl.cc
|
| diff --git a/chrome/browser/media/router/media_router_mojo_impl.cc b/chrome/browser/media/router/media_router_mojo_impl.cc
|
| index fe72fef5c6642d4be279e5033da8da5ec3c86f11..4644404bdde8c3dd5203df84f2b92f99c8a541b8 100644
|
| --- a/chrome/browser/media/router/media_router_mojo_impl.cc
|
| +++ b/chrome/browser/media/router/media_router_mojo_impl.cc
|
| @@ -80,6 +80,7 @@ MediaRouterMojoImpl::MediaRouterMojoImpl(
|
| availability_(interfaces::MediaRouter::SinkAvailability::UNAVAILABLE),
|
| wakeup_attempt_count_(0),
|
| current_wake_reason_(MediaRouteProviderWakeReason::TOTAL_COUNT),
|
| + provider_version_recorded_(false),
|
| weak_factory_(this) {
|
| DCHECK(event_page_tracker_);
|
| }
|
| @@ -90,19 +91,19 @@ MediaRouterMojoImpl::~MediaRouterMojoImpl() {
|
|
|
| // static
|
| void MediaRouterMojoImpl::BindToRequest(
|
| - const std::string& extension_id,
|
| + const extensions::Extension* extension,
|
| content::BrowserContext* context,
|
| mojo::InterfaceRequest<interfaces::MediaRouter> request) {
|
| MediaRouterMojoImpl* impl = static_cast<MediaRouterMojoImpl*>(
|
| MediaRouterFactory::GetApiForBrowserContext(context));
|
| DCHECK(impl);
|
|
|
| - impl->BindToMojoRequest(std::move(request), extension_id);
|
| + impl->BindToMojoRequest(std::move(request), *extension);
|
| }
|
|
|
| void MediaRouterMojoImpl::BindToMojoRequest(
|
| mojo::InterfaceRequest<interfaces::MediaRouter> request,
|
| - const std::string& extension_id) {
|
| + const extensions::Extension& extension) {
|
| DCHECK(thread_checker_.CalledOnValidThread());
|
|
|
| binding_.reset(
|
| @@ -110,7 +111,11 @@ void MediaRouterMojoImpl::BindToMojoRequest(
|
| binding_->set_connection_error_handler(base::Bind(
|
| &MediaRouterMojoImpl::OnConnectionError, base::Unretained(this)));
|
|
|
| - media_route_provider_extension_id_ = extension_id;
|
| + media_route_provider_extension_id_ = extension.id();
|
| + if (!provider_version_recorded_) {
|
| + MediaRouterMetrics::RecordMediaRouteProviderVersion(extension);
|
| + provider_version_recorded_ = true;
|
| + }
|
| }
|
|
|
| void MediaRouterMojoImpl::OnConnectionError() {
|
| @@ -847,6 +852,8 @@ void MediaRouterMojoImpl::AttemptWakeEventPage() {
|
| << "page.";
|
| DrainPendingRequests();
|
| wakeup_attempt_count_ = 0;
|
| + MediaRouterMetrics::RecordMediaRouteProviderWakeup(
|
| + MediaRouteProviderWakeup::ERROR_TOO_MANY_RETRIES);
|
| return;
|
| }
|
|
|
| @@ -881,6 +888,8 @@ void MediaRouterMojoImpl::EventPageWakeComplete(bool success) {
|
| MediaRouterMetrics::RecordMediaRouteProviderWakeReason(
|
| current_wake_reason_);
|
| ClearWakeReason();
|
| + MediaRouterMetrics::RecordMediaRouteProviderWakeup(
|
| + MediaRouteProviderWakeup::SUCCESS);
|
| return;
|
| }
|
|
|
| @@ -889,6 +898,8 @@ void MediaRouterMojoImpl::EventPageWakeComplete(bool success) {
|
| << "An error encountered while waking the event page.";
|
| ClearWakeReason();
|
| DrainPendingRequests();
|
| + MediaRouterMetrics::RecordMediaRouteProviderWakeup(
|
| + MediaRouteProviderWakeup::ERROR_UNKNOWN);
|
| }
|
|
|
| void MediaRouterMojoImpl::DrainPendingRequests() {
|
|
|