#include "chrome/browser/media/router/providers/dial/dial_activity_manager.h"
#include <string_view>
#include "base/containers/contains.h"
#include "base/functional/bind.h"
#include "base/not_fatal_until.h"
#include "base/ranges/algorithm.h"
#include "base/strings/string_split.h"
#include "chrome/browser/media/router/discovery/dial/dial_app_discovery_service.h"
#include "chrome/browser/media/router/providers/dial/dial_internal_message_util.h"
#include "components/media_router/common/media_source.h"
#include "net/base/url_util.h"
#include "services/network/public/mojom/url_response_head.mojom.h"
namespace media_router {
namespace {
GURL GetAppURL(const MediaSinkInternal& sink, const std::string& app_name) { … }
GURL GetApplicationInstanceURL(
const network::mojom::URLResponseHead& response_info) { … }
}
DialLaunchInfo::DialLaunchInfo(const std::string& app_name,
const std::optional<std::string>& post_data,
const std::string& client_id,
const GURL& app_launch_url)
: … { … }
DialLaunchInfo::DialLaunchInfo(const DialLaunchInfo& other) = default;
DialLaunchInfo::~DialLaunchInfo() = default;
std::unique_ptr<DialActivity> DialActivity::From(
const std::string& presentation_id,
const MediaSinkInternal& sink,
const MediaSource::Id& source_id,
const url::Origin& client_origin) { … }
DialActivity::DialActivity(const DialLaunchInfo& launch_info,
const MediaRoute& route,
const MediaSinkInternal& sink,
const url::Origin& client_origin)
: … { … }
DialActivity::~DialActivity() = default;
DialActivity::DialActivity(const DialActivity&) = default;
DialActivityManager::DialActivityManager(
DialAppDiscoveryService* app_discovery_service)
: … { … }
DialActivityManager::~DialActivityManager() = default;
void DialActivityManager::AddActivity(const DialActivity& activity) { … }
const DialActivity* DialActivityManager::GetActivity(
const MediaRoute::Id& route_id) const { … }
const DialActivity* DialActivityManager::GetActivityBySinkId(
const MediaSink::Id& sink_id) const { … }
const DialActivity* DialActivityManager::GetActivityToJoin(
const std::string& presentation_id,
const MediaSource& media_source,
const url::Origin& client_origin) const { … }
void DialActivityManager::LaunchApp(
const MediaRoute::Id& route_id,
const CustomDialLaunchMessageBody& message,
DialActivityManager::LaunchAppCallback callback) { … }
std::pair<std::optional<std::string>, mojom::RouteRequestResultCode>
DialActivityManager::CanStopApp(const MediaRoute::Id& route_id) const { … }
void DialActivityManager::StopApp(
const MediaRoute::Id& route_id,
mojom::MediaRouteProvider::TerminateRouteCallback callback) { … }
std::vector<MediaRoute> DialActivityManager::GetRoutes() const { … }
std::unique_ptr<DialURLFetcher> DialActivityManager::CreateFetcher(
DialURLFetcher::SuccessCallback success_cb,
DialURLFetcher::ErrorCallback error_cb) { … }
void DialActivityManager::OnLaunchSuccess(const MediaRoute::Id& route_id,
const std::string& response) { … }
void DialActivityManager::OnLaunchError(const MediaRoute::Id& route_id,
const std::string& message,
std::optional<int> response_code) { … }
void DialActivityManager::OnStopSuccess(const MediaRoute::Id& route_id,
const std::string& response) { … }
void DialActivityManager::OnStopError(const MediaRoute::Id& route_id,
const std::string& message,
std::optional<int> response_code) { … }
void DialActivityManager::OnInfoFetchedAfterStopError(
const MediaRoute::Id& route_id,
const std::string& message,
const MediaSink::Id& sink_id,
const std::string& app_name,
DialAppInfoResult result) { … }
DialActivityManager::Record::Record(const DialActivity& activity)
: … { … }
DialActivityManager::Record::~Record() = default;
}