Commit 8cb84fbd authored by mark a. foltz's avatar mark a. foltz Committed by Commit Bot

[Cast Harmony] Update handling of PresentationRequest origins.

This replaces custom origin formatting code with the standard formatting routine for permissions dialogs (geolocation, usb, etc.)

Bug: 830177

Change-Id: I9bee4636a3095b561a1041d0228f9dc87e4504da
Reviewed-on: https://chromium-review.googlesource.com/c/1321049Reviewed-by: default avatarTakumi Fujimoto <takumif@chromium.org>
Commit-Queue: mark a. foltz <mfoltz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#605948}
parent cc98887a
...@@ -1233,6 +1233,7 @@ jumbo_split_static_library("ui") { ...@@ -1233,6 +1233,7 @@ jumbo_split_static_library("ui") {
"//components/keep_alive_registry", "//components/keep_alive_registry",
"//components/network_session_configurator/common", "//components/network_session_configurator/common",
"//components/ui_metrics", "//components/ui_metrics",
"//components/url_formatter",
"//components/vector_icons", "//components/vector_icons",
"//components/web_modal", "//components/web_modal",
"//components/zoom", "//components/zoom",
......
...@@ -33,6 +33,7 @@ ...@@ -33,6 +33,7 @@
#include "chrome/common/media_router/route_request_result.h" #include "chrome/common/media_router/route_request_result.h"
#include "chrome/common/webui_url_constants.h" #include "chrome/common/webui_url_constants.h"
#include "chrome/grit/generated_resources.h" #include "chrome/grit/generated_resources.h"
#include "components/url_formatter/elide_url.h"
#include "content/public/browser/navigation_handle.h" #include "content/public/browser/navigation_handle.h"
#include "content/public/common/fullscreen_video_element.mojom.h" #include "content/public/common/fullscreen_video_element.mojom.h"
#include "extensions/browser/extension_registry.h" #include "extensions/browser/extension_registry.h"
...@@ -46,15 +47,6 @@ ...@@ -46,15 +47,6 @@
namespace media_router { namespace media_router {
namespace { namespace {
std::string TruncateHost(const std::string& host) {
const std::string truncated =
net::registry_controlled_domains::GetDomainAndRegistry(
host, net::registry_controlled_domains::EXCLUDE_PRIVATE_REGISTRIES);
// The truncation will be empty in some scenarios (e.g. host is
// simply an IP address). Fail gracefully.
return truncated.empty() ? host : truncated;
}
// Returns the first source in |sources| that can be connected to, or an empty // Returns the first source in |sources| that can be connected to, or an empty
// source if there is none. This is used by the Media Router to find such a // source if there is none. This is used by the Media Router to find such a
// matching route if it exists. // matching route if it exists.
...@@ -306,14 +298,17 @@ std::vector<MediaSinkWithCastModes> MediaRouterUIBase::GetEnabledSinks() const { ...@@ -306,14 +298,17 @@ std::vector<MediaSinkWithCastModes> MediaRouterUIBase::GetEnabledSinks() const {
return enabled_sinks; return enabled_sinks;
} }
std::string MediaRouterUIBase::GetTruncatedPresentationRequestSourceName() base::string16 MediaRouterUIBase::GetPresentationRequestSourceName() const {
const {
GURL gurl = GetFrameURL(); GURL gurl = GetFrameURL();
CHECK(initiator_); CHECK(initiator_);
// Presentation URLs are only possible on https: and other secure contexts,
// so we can omit http/https schemes here.
return gurl.SchemeIs(extensions::kExtensionScheme) return gurl.SchemeIs(extensions::kExtensionScheme)
? GetExtensionName(gurl, extensions::ExtensionRegistry::Get( ? base::UTF8ToUTF16(
initiator_->GetBrowserContext())) GetExtensionName(gurl, extensions::ExtensionRegistry::Get(
: TruncateHost(GetHostFromURL(gurl)); initiator_->GetBrowserContext())))
: url_formatter::FormatUrlForSecurityDisplay(
gurl, url_formatter::SchemeDisplay::OMIT_HTTP_AND_HTTPS);
} }
void MediaRouterUIBase::AddIssue(const IssueInfo& issue) { void MediaRouterUIBase::AddIssue(const IssueInfo& issue) {
...@@ -552,10 +547,10 @@ base::Optional<RouteParameters> MediaRouterUIBase::GetRouteParameters( ...@@ -552,10 +547,10 @@ base::Optional<RouteParameters> MediaRouterUIBase::GetRouteParameters(
// treat subsequent route requests from a Presentation API-initiated // treat subsequent route requests from a Presentation API-initiated
// dialogs as browser-initiated. // dialogs as browser-initiated.
// TODO(https://crbug.com/868186): Close the Views dialog in case (2). // TODO(https://crbug.com/868186): Close the Views dialog in case (2).
params.route_result_callbacks.push_back(base::BindOnce( params.route_result_callbacks.push_back(
&MediaRouterUIBase::OnRouteResponseReceived, weak_factory_.GetWeakPtr(), base::BindOnce(&MediaRouterUIBase::OnRouteResponseReceived,
current_route_request_->id, sink_id, cast_mode, weak_factory_.GetWeakPtr(), current_route_request_->id,
base::UTF8ToUTF16(GetTruncatedPresentationRequestSourceName()))); sink_id, cast_mode, GetPresentationRequestSourceName()));
if (for_presentation_source) { if (for_presentation_source) {
if (start_presentation_context_) { if (start_presentation_context_) {
// |start_presentation_context_| will be nullptr after this call, as the // |start_presentation_context_| will be nullptr after this call, as the
...@@ -691,7 +686,7 @@ base::Optional<RouteParameters> MediaRouterUIBase::GetLocalFileRouteParameters( ...@@ -691,7 +686,7 @@ base::Optional<RouteParameters> MediaRouterUIBase::GetLocalFileRouteParameters(
params.route_result_callbacks.push_back(base::BindOnce( params.route_result_callbacks.push_back(base::BindOnce(
&MediaRouterUIBase::OnRouteResponseReceived, weak_factory_.GetWeakPtr(), &MediaRouterUIBase::OnRouteResponseReceived, weak_factory_.GetWeakPtr(),
request_id, sink_id, MediaCastMode::LOCAL_FILE, request_id, sink_id, MediaCastMode::LOCAL_FILE,
base::UTF8ToUTF16(GetTruncatedPresentationRequestSourceName()))); GetPresentationRequestSourceName()));
params.route_result_callbacks.push_back( params.route_result_callbacks.push_back(
base::BindOnce(&MediaRouterUIBase::MaybeReportCastingSource, base::BindOnce(&MediaRouterUIBase::MaybeReportCastingSource,
......
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
#include "base/macros.h" #include "base/macros.h"
#include "base/memory/weak_ptr.h" #include "base/memory/weak_ptr.h"
#include "base/strings/string16.h"
#include "build/build_config.h" #include "build/build_config.h"
#include "chrome/browser/media/router/issues_observer.h" #include "chrome/browser/media/router/issues_observer.h"
#include "chrome/browser/media/router/media_router_dialog_controller.h" #include "chrome/browser/media/router/media_router_dialog_controller.h"
...@@ -110,8 +111,8 @@ class MediaRouterUIBase ...@@ -110,8 +111,8 @@ class MediaRouterUIBase
// excludes the wired display that the initiator WebContents is on. // excludes the wired display that the initiator WebContents is on.
virtual std::vector<MediaSinkWithCastModes> GetEnabledSinks() const; virtual std::vector<MediaSinkWithCastModes> GetEnabledSinks() const;
// Returns a source name that can be shown in the dialog. // Returns a PresentationRequest source name that can be shown in the dialog.
std::string GetTruncatedPresentationRequestSourceName() const; base::string16 GetPresentationRequestSourceName() const;
// Calls MediaRouter to add the given issue. // Calls MediaRouter to add the given issue.
void AddIssue(const IssueInfo& issue); void AddIssue(const IssueInfo& issue);
......
...@@ -4,6 +4,10 @@ ...@@ -4,6 +4,10 @@
#include "chrome/browser/ui/views/media_router/media_router_views_ui.h" #include "chrome/browser/ui/views/media_router/media_router_views_ui.h"
#include <string>
#include <utility>
#include <vector>
#include "base/stl_util.h" #include "base/stl_util.h"
#include "base/strings/string_util.h" #include "base/strings/string_util.h"
#include "base/strings/utf_string_conversions.h" #include "base/strings/utf_string_conversions.h"
...@@ -179,12 +183,12 @@ void MediaRouterViewsUI::OnDefaultPresentationRemoved() { ...@@ -179,12 +183,12 @@ void MediaRouterViewsUI::OnDefaultPresentationRemoved() {
} }
void MediaRouterViewsUI::UpdateModelHeader() { void MediaRouterViewsUI::UpdateModelHeader() {
const std::string source_name = GetTruncatedPresentationRequestSourceName(); const base::string16 source_name = GetPresentationRequestSourceName();
const base::string16 header_text = const base::string16 header_text =
source_name.empty() source_name.empty()
? l10n_util::GetStringUTF16(IDS_MEDIA_ROUTER_CAST_DIALOG_TITLE) ? l10n_util::GetStringUTF16(IDS_MEDIA_ROUTER_CAST_DIALOG_TITLE)
: l10n_util::GetStringFUTF16(IDS_MEDIA_ROUTER_PRESENTATION_CAST_MODE, : l10n_util::GetStringFUTF16(IDS_MEDIA_ROUTER_PRESENTATION_CAST_MODE,
base::UTF8ToUTF16(source_name)); source_name);
model_.set_dialog_header(header_text); model_.set_dialog_header(header_text);
for (CastDialogController::Observer& observer : observers_) for (CastDialogController::Observer& observer : observers_)
observer.OnModelUpdated(model_); observer.OnModelUpdated(model_);
......
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