Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1527)

Unified Diff: chrome/browser/media/router/discovery/mdns/cast_media_sink_service.cc

Issue 2974523002: [cast_channel] Make CastSocketService a global leaky singleton (Closed)
Patch Set: merge with master Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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,

Powered by Google App Engine
This is Rietveld 408576698