Commit f59155eb authored by Takumi Fujimoto's avatar Takumi Fujimoto Committed by Commit Bot

[Harmony Cast Dialog] Record toolbar icon and cast source metrics

Record MediaRouter.Icon.Click.Location whenever the Cast trusted area
icon is clicked.

When a media route is created, call the callback to record
MediaRouter.Source.CastingSource before calling other callbacks, so that
the MediaRouterUIBase doesn't get destroyed before we get to record.

Bug: 880624
Change-Id: Ic242cb7621886035f07f8edd96ca55b0d7b7a0a8
Reviewed-on: https://chromium-review.googlesource.com/1205992
Commit-Queue: Takumi Fujimoto <takumif@chromium.org>
Reviewed-by: default avatarDerek Cheng <imcheng@chromium.org>
Cr-Commit-Position: refs/heads/master@{#588945}
parent 050fc9e9
...@@ -543,6 +543,13 @@ base::Optional<RouteParameters> MediaRouterUIBase::GetRouteParameters( ...@@ -543,6 +543,13 @@ base::Optional<RouteParameters> MediaRouterUIBase::GetRouteParameters(
: url::Origin::Create(GURL()); : url::Origin::Create(GURL());
DVLOG(1) << "DoCreateRoute: origin: " << params.origin; DVLOG(1) << "DoCreateRoute: origin: " << params.origin;
// This callback must be invoked before
// HandleCreateSessionRequestRouteResponse(), which closes the dialog and
// destroys |this|.
params.route_result_callbacks.push_back(
base::BindOnce(&MediaRouterUIBase::MaybeReportCastingSource,
weak_factory_.GetWeakPtr(), cast_mode));
// There are 3 cases. In cases (1) and (3) the MediaRouterUIBase will need to // There are 3 cases. In cases (1) and (3) the MediaRouterUIBase will need to
// be notified via OnRouteResponseReceived(). In case (2) the dialog will be // be notified via OnRouteResponseReceived(). In case (2) the dialog will be
// closed via HandleCreateSessionRequestRouteResponse(). // closed via HandleCreateSessionRequestRouteResponse().
...@@ -576,10 +583,6 @@ base::Optional<RouteParameters> MediaRouterUIBase::GetRouteParameters( ...@@ -576,10 +583,6 @@ base::Optional<RouteParameters> MediaRouterUIBase::GetRouteParameters(
} }
} }
params.route_result_callbacks.push_back(
base::BindOnce(&MediaRouterUIBase::MaybeReportCastingSource,
weak_factory_.GetWeakPtr(), cast_mode));
params.timeout = GetRouteRequestTimeout(cast_mode); params.timeout = GetRouteRequestTimeout(cast_mode);
CHECK(initiator_); CHECK(initiator_);
params.incognito = initiator_->GetBrowserContext()->IsOffTheRecord(); params.incognito = initiator_->GetBrowserContext()->IsOffTheRecord();
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#include "chrome/browser/media/router/media_router.h" #include "chrome/browser/media/router/media_router.h"
#include "chrome/browser/media/router/media_router_dialog_controller.h" #include "chrome/browser/media/router/media_router_dialog_controller.h"
#include "chrome/browser/media/router/media_router_factory.h" #include "chrome/browser/media/router/media_router_factory.h"
#include "chrome/browser/media/router/media_router_metrics.h"
#include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/media_router/media_router_ui_service.h" #include "chrome/browser/ui/media_router/media_router_ui_service.h"
#include "chrome/grit/generated_resources.h" #include "chrome/grit/generated_resources.h"
...@@ -167,6 +168,8 @@ void CastToolbarButton::ButtonPressed(views::Button* sender, ...@@ -167,6 +168,8 @@ void CastToolbarButton::ButtonPressed(views::Button* sender,
dialog_controller->HideMediaRouterDialog(); dialog_controller->HideMediaRouterDialog();
} else { } else {
dialog_controller->ShowMediaRouterDialog(); dialog_controller->ShowMediaRouterDialog();
MediaRouterMetrics::RecordMediaRouterDialogOrigin(
MediaRouterDialogOpenOrigin::TOOLBAR);
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment