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

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: 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..a984a8c82d7807cd6a0001e47ab3ddfbc0c08262 100644
--- a/extensions/browser/api/cast_channel/cast_channel_api.cc
+++ b/extensions/browser/api/cast_channel/cast_channel_api.cc
@@ -294,14 +294,15 @@ void CastChannelOpenFunction::AsyncWorkStart() {
}
new_channel_id_ = cast_socket_service_->AddSocket(base::WrapUnique(socket));
+ if (!socket->HasObserver(extension_->id())) {
imcheng 2017/06/16 23:39:25 Since we are thinking about sharing CastSocket acr
zhaobin 2017/06/20 00:54:36 Doing it a little differently. 1. Create one obse
+ socket->AddObserver(extension_->id(),
mark a. foltz 2017/06/16 23:26:14 I think this code should only run once per extensi
zhaobin 2017/06/20 00:54:36 Yes. Done.
+ base::MakeUnique<CastMessageHandler>(
+ base::Bind(&CastChannelAPI::SendEvent,
+ api_->AsWeakPtr(), extension_->id()),
+ api_->GetLogger()));
+ }
// 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 +433,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 +442,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 +463,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 +484,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