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

Unified Diff: extensions/browser/api/cast_channel/cast_channel_api.cc

Issue 2942993003: [cast_channel] Make CastMessageHandler a CastSocket::Observer instead of CastTransport::Delegate (Closed)
Patch Set: resolve code review comments from Derek and Mark Created 3 years, 6 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: extensions/browser/api/cast_channel/cast_channel_api.cc
diff --git a/extensions/browser/api/cast_channel/cast_channel_api.cc b/extensions/browser/api/cast_channel/cast_channel_api.cc
index bdbea3316955c9ad8b0f6ecfab1826e53c05c2f9..e3dccf2f3626afff6e2ffa4a42190f8b78ec1038 100644
--- a/extensions/browser/api/cast_channel/cast_channel_api.cc
+++ b/extensions/browser/api/cast_channel/cast_channel_api.cc
@@ -294,14 +294,19 @@ void CastChannelOpenFunction::AsyncWorkStart() {
}
new_channel_id_ = cast_socket_service_->AddSocket(base::WrapUnique(socket));
+ auto* observer = cast_socket_service_->GetObserver(extension_->id());
+ if (!observer) {
+ observer =
+ new CastMessageHandler(base::Bind(&CastChannelAPI::SendEvent,
+ api_->AsWeakPtr(), extension_->id()),
+ api_->GetLogger());
+ cast_socket_service_->AddObserver(extension_->id(),
+ base::WrapUnique(observer));
mark a. foltz 2017/06/20 01:16:44 Or just pass base::MakeUnique<> here?
zhaobin 2017/06/20 17:50:05 Done.
+ }
+
+ socket->AddObserver(observer);
// Construct read delegates.
- std::unique_ptr<CastTransport::Delegate> delegate(
- base::MakeUnique<CastMessageHandler>(
- base::Bind(&CastChannelAPI::SendEvent, api_->AsWeakPtr(),
- extension_->id()),
- socket, api_->GetLogger()));
- socket->Connect(std::move(delegate),
- base::Bind(&CastChannelOpenFunction::OnOpen, this));
+ socket->Connect(base::Bind(&CastChannelOpenFunction::OnOpen, this));
}
void CastChannelOpenFunction::OnOpen(ChannelError result) {
@@ -432,10 +437,8 @@ void CastChannelCloseFunction::OnClose(int result) {
CastChannelOpenFunction::CastMessageHandler::CastMessageHandler(
const EventDispatchCallback& ui_dispatch_cb,
- CastSocket* socket,
scoped_refptr<Logger> logger)
- : ui_dispatch_cb_(ui_dispatch_cb), socket_(socket), logger_(logger) {
- DCHECK(socket_);
+ : ui_dispatch_cb_(ui_dispatch_cb), logger_(logger) {
DCHECK(logger_);
}
@@ -443,14 +446,15 @@ CastChannelOpenFunction::CastMessageHandler::~CastMessageHandler() {
}
void CastChannelOpenFunction::CastMessageHandler::OnError(
+ const cast_channel::CastSocket& socket,
ChannelError error_state) {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
ChannelInfo channel_info;
- FillChannelInfo(*socket_, &channel_info);
+ FillChannelInfo(socket, &channel_info);
channel_info.error_state = api::cast_channel::ToChannelError(error_state);
ErrorInfo error_info;
- FillErrorInfo(channel_info.error_state, logger_->GetLastError(socket_->id()),
+ FillErrorInfo(channel_info.error_state, logger_->GetLastError(socket.id()),
&error_info);
std::unique_ptr<base::ListValue> results =
@@ -463,13 +467,14 @@ void CastChannelOpenFunction::CastMessageHandler::OnError(
}
void CastChannelOpenFunction::CastMessageHandler::OnMessage(
+ const cast_channel::CastSocket& socket,
const CastMessage& message) {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
MessageInfo message_info;
CastMessageToMessageInfo(message, &message_info);
ChannelInfo channel_info;
- FillChannelInfo(*socket_, &channel_info);
+ FillChannelInfo(socket, &channel_info);
VLOG(1) << "Received message " << ParamToString(message_info)
<< " on channel " << ParamToString(channel_info);
@@ -483,7 +488,4 @@ void CastChannelOpenFunction::CastMessageHandler::OnMessage(
base::Bind(ui_dispatch_cb_, base::Passed(std::move(event))));
}
-void CastChannelOpenFunction::CastMessageHandler::Start() {
-}
-
} // namespace extensions

Powered by Google App Engine
This is Rietveld 408576698