OLD | NEW |
---|---|
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 "chrome/browser/renderer_host/socket_stream_host.h" | 5 #include "chrome/browser/renderer_host/socket_stream_host.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "chrome/browser/profile.h" | 8 #include "chrome/browser/profile.h" |
9 #include "chrome/browser/net/chrome_url_request_context.h" | |
9 #include "chrome/common/net/socket_stream.h" | 10 #include "chrome/common/net/socket_stream.h" |
10 #include "chrome/common/net/url_request_context_getter.h" | 11 #include "chrome/common/net/url_request_context_getter.h" |
11 #include "chrome/common/render_messages.h" | 12 #include "chrome/common/render_messages.h" |
13 #include "chrome/common/render_messages_params.h" | |
12 #include "net/socket_stream/socket_stream_job.h" | 14 #include "net/socket_stream/socket_stream_job.h" |
13 | 15 |
16 | |
14 static const char* kSocketHostKey = "socketHost"; | 17 static const char* kSocketHostKey = "socketHost"; |
15 | 18 |
16 class SocketStreamInfo : public net::SocketStream::UserData { | 19 class SocketStreamInfo : public net::SocketStream::UserData { |
17 public: | 20 public: |
18 explicit SocketStreamInfo(SocketStreamHost* host) : host_(host) {} | 21 explicit SocketStreamInfo(SocketStreamHost* host) : host_(host) {} |
19 virtual ~SocketStreamInfo() {} | 22 virtual ~SocketStreamInfo() {} |
20 SocketStreamHost* host() const { return host_; } | 23 SocketStreamHost* host() const { return host_; } |
21 | 24 |
22 private: | 25 private: |
23 SocketStreamHost* host_; | 26 SocketStreamHost* host_; |
(...skipping 24 matching lines...) Expand all Loading... | |
48 SocketStreamHost::~SocketStreamHost() { | 51 SocketStreamHost::~SocketStreamHost() { |
49 VLOG(1) << "SocketStreamHost destructed socket_id=" << socket_id_; | 52 VLOG(1) << "SocketStreamHost destructed socket_id=" << socket_id_; |
50 if (!receiver_->Send(new ViewMsg_SocketStream_Closed(socket_id_))) | 53 if (!receiver_->Send(new ViewMsg_SocketStream_Closed(socket_id_))) |
51 LOG(ERROR) << "ViewMsg_SocketStream_Closed failed."; | 54 LOG(ERROR) << "ViewMsg_SocketStream_Closed failed."; |
52 socket_->DetachDelegate(); | 55 socket_->DetachDelegate(); |
53 } | 56 } |
54 | 57 |
55 void SocketStreamHost::Connect(const GURL& url) { | 58 void SocketStreamHost::Connect(const GURL& url) { |
56 VLOG(1) << "SocketStreamHost::Connect url=" << url; | 59 VLOG(1) << "SocketStreamHost::Connect url=" << url; |
57 socket_ = net::SocketStreamJob::CreateSocketStreamJob(url, delegate_); | 60 socket_ = net::SocketStreamJob::CreateSocketStreamJob(url, delegate_); |
58 URLRequestContextGetter* context_getter = Profile::GetDefaultRequestContext(); | 61 |
59 if (context_getter) | 62 // We use request_id==0 and request_data.resource_type=ResourceType::LAST_TYPE |
60 socket_->set_context(context_getter->GetURLRequestContext()); | 63 // here. |
64 // ResourceMessageFilter::GetReuqestContext() doesn't check request_id | |
eroman
2010/12/03 06:16:39
typo: RequestContext
ukai
2010/12/07 02:21:04
Done.
| |
65 // and only checks request_data.resource_type is ResourceType::MEDIA or not. | |
66 // TODO(ukai): merge WebSocketStreamHandleBridge into ResourceLoaderBridge, | |
67 // so that we can use the same request_id. | |
Randy Smith (Not in Mondays)
2010/11/30 18:17:47
So the problem I have with this approach is that,
| |
68 ViewHostMsg_Resource_Request request_data; | |
69 request_data.resource_type = ResourceType::LAST_TYPE; | |
70 ChromeURLRequestContext* context = static_cast<ChromeURLRequestContext*>( | |
Randy Smith (Not in Mondays)
2010/11/30 18:17:47
Why make context of type ChromeURLRequestContext r
ukai
2010/12/07 02:21:04
Done.
| |
71 receiver_->GetRequestContext(0, request_data)); | |
72 if (!context) { | |
73 URLRequestContextGetter* context_getter = | |
74 Profile::GetDefaultRequestContext(); | |
75 if (context_getter) | |
76 context = static_cast<ChromeURLRequestContext*>( | |
77 context_getter->GetURLRequestContext()); | |
78 } | |
79 socket_->set_context(context); | |
61 socket_->SetUserData(kSocketHostKey, new SocketStreamInfo(this)); | 80 socket_->SetUserData(kSocketHostKey, new SocketStreamInfo(this)); |
62 socket_->Connect(); | 81 socket_->Connect(); |
63 } | 82 } |
64 | 83 |
65 bool SocketStreamHost::SendData(const std::vector<char>& data) { | 84 bool SocketStreamHost::SendData(const std::vector<char>& data) { |
66 VLOG(1) << "SocketStreamHost::SendData"; | 85 VLOG(1) << "SocketStreamHost::SendData"; |
67 return socket_ && socket_->SendData(&data[0], data.size()); | 86 return socket_ && socket_->SendData(&data[0], data.size()); |
68 } | 87 } |
69 | 88 |
70 void SocketStreamHost::Close() { | 89 void SocketStreamHost::Close() { |
(...skipping 10 matching lines...) Expand all Loading... | |
81 | 100 |
82 bool SocketStreamHost::SentData(int amount_sent) { | 101 bool SocketStreamHost::SentData(int amount_sent) { |
83 return receiver_->Send(new ViewMsg_SocketStream_SentData( | 102 return receiver_->Send(new ViewMsg_SocketStream_SentData( |
84 socket_id_, amount_sent)); | 103 socket_id_, amount_sent)); |
85 } | 104 } |
86 | 105 |
87 bool SocketStreamHost::ReceivedData(const char* data, int len) { | 106 bool SocketStreamHost::ReceivedData(const char* data, int len) { |
88 return receiver_->Send(new ViewMsg_SocketStream_ReceivedData( | 107 return receiver_->Send(new ViewMsg_SocketStream_ReceivedData( |
89 socket_id_, std::vector<char>(data, data + len))); | 108 socket_id_, std::vector<char>(data, data + len))); |
90 } | 109 } |
OLD | NEW |