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 |