| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "content/browser/renderer_host/socket_stream_host.h" | 5 #include "content/browser/renderer_host/socket_stream_host.h" |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "content/common/socket_stream.h" | 8 #include "content/common/socket_stream.h" |
| 9 #include "content/public/browser/content_browser_client.h" |
| 9 #include "net/socket_stream/socket_stream_job.h" | 10 #include "net/socket_stream/socket_stream_job.h" |
| 10 #include "net/url_request/url_request_context.h" | 11 #include "net/url_request/url_request_context.h" |
| 11 | 12 |
| 12 namespace content { | 13 namespace content { |
| 13 namespace { | 14 namespace { |
| 14 | 15 |
| 15 const char* kSocketIdKey = "socketId"; | 16 const char* kSocketIdKey = "socketId"; |
| 16 | 17 |
| 17 class SocketStreamId : public net::SocketStream::UserData { | 18 class SocketStreamId : public net::SocketStream::UserData { |
| 18 public: | 19 public: |
| 19 explicit SocketStreamId(int socket_id) : socket_id_(socket_id) {} | 20 explicit SocketStreamId(int socket_id) : socket_id_(socket_id) {} |
| 20 virtual ~SocketStreamId() {} | 21 virtual ~SocketStreamId() {} |
| 21 int socket_id() const { return socket_id_; } | 22 int socket_id() const { return socket_id_; } |
| 22 | 23 |
| 23 private: | 24 private: |
| 24 int socket_id_; | 25 int socket_id_; |
| 25 }; | 26 }; |
| 26 | 27 |
| 27 } // namespace | 28 } // namespace |
| 28 | 29 |
| 29 SocketStreamHost::SocketStreamHost( | 30 SocketStreamHost::SocketStreamHost( |
| 30 net::SocketStream::Delegate* delegate, | 31 net::SocketStream::Delegate* delegate, |
| 32 int child_id, |
| 31 int render_frame_id, | 33 int render_frame_id, |
| 32 int socket_id) | 34 int socket_id) |
| 33 : delegate_(delegate), | 35 : delegate_(delegate), |
| 36 child_id_(child_id), |
| 34 render_frame_id_(render_frame_id), | 37 render_frame_id_(render_frame_id), |
| 35 socket_id_(socket_id) { | 38 socket_id_(socket_id) { |
| 36 DCHECK_NE(socket_id_, kNoSocketId); | 39 DCHECK_NE(socket_id_, kNoSocketId); |
| 37 VLOG(1) << "SocketStreamHost: render_frame_id=" << render_frame_id | 40 VLOG(1) << "SocketStreamHost: render_frame_id=" << render_frame_id |
| 38 << " socket_id=" << socket_id_; | 41 << " socket_id=" << socket_id_; |
| 39 } | 42 } |
| 40 | 43 |
| 41 /* static */ | 44 /* static */ |
| 42 int SocketStreamHost::SocketIdFromSocketStream( | 45 int SocketStreamHost::SocketIdFromSocketStream( |
| 43 const net::SocketStream* socket) { | 46 const net::SocketStream* socket) { |
| 44 net::SocketStream::UserData* d = socket->GetUserData(kSocketIdKey); | 47 net::SocketStream::UserData* d = socket->GetUserData(kSocketIdKey); |
| 45 if (d) { | 48 if (d) { |
| 46 SocketStreamId* socket_stream_id = static_cast<SocketStreamId*>(d); | 49 SocketStreamId* socket_stream_id = static_cast<SocketStreamId*>(d); |
| 47 return socket_stream_id->socket_id(); | 50 return socket_stream_id->socket_id(); |
| 48 } | 51 } |
| 49 return kNoSocketId; | 52 return kNoSocketId; |
| 50 } | 53 } |
| 51 | 54 |
| 52 SocketStreamHost::~SocketStreamHost() { | 55 SocketStreamHost::~SocketStreamHost() { |
| 53 VLOG(1) << "SocketStreamHost destructed socket_id=" << socket_id_; | 56 VLOG(1) << "SocketStreamHost destructed socket_id=" << socket_id_; |
| 54 job_->set_context(NULL); | 57 job_->DetachContext(); |
| 55 job_->DetachDelegate(); | 58 job_->DetachDelegate(); |
| 56 } | 59 } |
| 57 | 60 |
| 58 void SocketStreamHost::Connect(const GURL& url, | 61 void SocketStreamHost::Connect(const GURL& url, |
| 59 net::URLRequestContext* request_context) { | 62 net::URLRequestContext* request_context) { |
| 60 VLOG(1) << "SocketStreamHost::Connect url=" << url; | 63 VLOG(1) << "SocketStreamHost::Connect url=" << url; |
| 61 job_ = net::SocketStreamJob::CreateSocketStreamJob( | 64 job_ = net::SocketStreamJob::CreateSocketStreamJob( |
| 62 url, delegate_, request_context->transport_security_state(), | 65 url, delegate_, request_context->transport_security_state(), |
| 63 request_context->ssl_config_service()); | 66 request_context->ssl_config_service(), |
| 64 job_->set_context(request_context); | 67 request_context, |
| 68 GetContentClient()->browser()->OverrideCookieStoreForRenderProcess( |
| 69 child_id_)); |
| 65 job_->SetUserData(kSocketIdKey, new SocketStreamId(socket_id_)); | 70 job_->SetUserData(kSocketIdKey, new SocketStreamId(socket_id_)); |
| 66 job_->Connect(); | 71 job_->Connect(); |
| 67 } | 72 } |
| 68 | 73 |
| 69 bool SocketStreamHost::SendData(const std::vector<char>& data) { | 74 bool SocketStreamHost::SendData(const std::vector<char>& data) { |
| 70 VLOG(1) << "SocketStreamHost::SendData"; | 75 VLOG(1) << "SocketStreamHost::SendData"; |
| 71 return job_.get() && job_->SendData(&data[0], data.size()); | 76 return job_.get() && job_->SendData(&data[0], data.size()); |
| 72 } | 77 } |
| 73 | 78 |
| 74 void SocketStreamHost::Close() { | 79 void SocketStreamHost::Close() { |
| (...skipping 18 matching lines...) Expand all Loading... |
| 93 } | 98 } |
| 94 | 99 |
| 95 void SocketStreamHost::ContinueDespiteError() { | 100 void SocketStreamHost::ContinueDespiteError() { |
| 96 VLOG(1) << "SocketStreamHost::ContinueDespiteError"; | 101 VLOG(1) << "SocketStreamHost::ContinueDespiteError"; |
| 97 if (!job_.get()) | 102 if (!job_.get()) |
| 98 return; | 103 return; |
| 99 job_->ContinueDespiteError(); | 104 job_->ContinueDespiteError(); |
| 100 } | 105 } |
| 101 | 106 |
| 102 } // namespace content | 107 } // namespace content |
| OLD | NEW |