Index: chrome/browser/media/router/discovery/mdns/cast_media_sink_service.cc |
diff --git a/chrome/browser/media/router/discovery/mdns/cast_media_sink_service.cc b/chrome/browser/media/router/discovery/mdns/cast_media_sink_service.cc |
index 1ad648bc2b645d98e5b9983a68b5b54c95ebff3f..022649b755f90a3e89e83184fc8367257c9af1b5 100644 |
--- a/chrome/browser/media/router/discovery/mdns/cast_media_sink_service.cc |
+++ b/chrome/browser/media/router/discovery/mdns/cast_media_sink_service.cc |
@@ -8,7 +8,6 @@ |
#include "chrome/browser/browser_process.h" |
#include "chrome/common/media_router/discovery/media_sink_internal.h" |
#include "components/cast_channel/cast_socket_service.h" |
-#include "components/cast_channel/cast_socket_service_factory.h" |
#include "components/net_log/chrome_net_log.h" |
#include "content/public/common/content_client.h" |
#include "net/base/host_port_pair.h" |
@@ -16,8 +15,6 @@ |
namespace { |
-constexpr char kObserverId[] = "browser_observer_id"; |
- |
enum ErrorType { |
NONE, |
NOT_CAST_DEVICE, |
@@ -90,10 +87,9 @@ const char CastMediaSinkService::kCastServiceType[] = "_googlecast._tcp.local"; |
CastMediaSinkService::CastMediaSinkService( |
const OnSinksDiscoveredCallback& callback, |
content::BrowserContext* browser_context) |
- : MediaSinkServiceBase(callback) { |
+ : MediaSinkServiceBase(callback), |
+ cast_socket_service_(cast_channel::CastSocketService::GetInstance()) { |
DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); |
- cast_socket_service_ = cast_channel::CastSocketServiceFactory::GetInstance() |
- ->GetForBrowserContext(browser_context); |
DCHECK(cast_socket_service_); |
} |
@@ -169,17 +165,14 @@ void CastMediaSinkService::OnDnsSdEvent( |
void CastMediaSinkService::OpenChannelOnIOThread( |
const DnsSdService& service, |
const net::IPEndPoint& ip_endpoint) { |
- auto* observer = cast_socket_service_->GetObserver(kObserverId); |
- if (!observer) { |
- observer = new CastSocketObserver(); |
- cast_socket_service_->AddObserver(kObserverId, base::WrapUnique(observer)); |
- } |
+ if (!observer_) |
+ observer_.reset(new CastSocketObserver()); |
cast_socket_service_->OpenSocket( |
ip_endpoint, g_browser_process->net_log(), |
base::Bind(&CastMediaSinkService::OnChannelOpenedOnIOThread, this, |
service), |
- observer); |
+ observer_.get()); |
} |
void CastMediaSinkService::OnChannelOpenedOnIOThread( |
@@ -228,7 +221,9 @@ void CastMediaSinkService::OnChannelOpenedOnUIThread( |
} |
CastMediaSinkService::CastSocketObserver::CastSocketObserver() {} |
-CastMediaSinkService::CastSocketObserver::~CastSocketObserver() {} |
+CastMediaSinkService::CastSocketObserver::~CastSocketObserver() { |
+ cast_channel::CastSocketService::GetInstance()->RemoveObserver(this); |
+} |
void CastMediaSinkService::CastSocketObserver::OnError( |
const cast_channel::CastSocket& socket, |