| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/renderer/security_filter_peer.h" | 5 #include "chrome/renderer/security_filter_peer.h" |
| 6 | 6 |
| 7 #include "base/stringprintf.h" | 7 #include "base/stringprintf.h" |
| 8 #include "grit/generated_resources.h" | 8 #include "grit/generated_resources.h" |
| 9 #include "net/base/net_errors.h" | 9 #include "net/base/net_errors.h" |
| 10 #include "net/http/http_response_headers.h" | 10 #include "net/http/http_response_headers.h" |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 63 return new ReplaceContentPeer(NULL, peer, "text/html", html); | 63 return new ReplaceContentPeer(NULL, peer, "text/html", html); |
| 64 } | 64 } |
| 65 | 65 |
| 66 void SecurityFilterPeer::OnUploadProgress(uint64 position, uint64 size) { | 66 void SecurityFilterPeer::OnUploadProgress(uint64 position, uint64 size) { |
| 67 original_peer_->OnUploadProgress(position, size); | 67 original_peer_->OnUploadProgress(position, size); |
| 68 } | 68 } |
| 69 | 69 |
| 70 bool SecurityFilterPeer::OnReceivedRedirect( | 70 bool SecurityFilterPeer::OnReceivedRedirect( |
| 71 const GURL& new_url, | 71 const GURL& new_url, |
| 72 const webkit_glue::ResourceResponseInfo& info, | 72 const webkit_glue::ResourceResponseInfo& info, |
| 73 const base::TimeTicks& start_time, |
| 74 const base::TimeTicks& end_time, |
| 73 bool* has_new_first_party_for_cookies, | 75 bool* has_new_first_party_for_cookies, |
| 74 GURL* new_first_party_for_cookies) { | 76 GURL* new_first_party_for_cookies) { |
| 75 NOTREACHED(); | 77 NOTREACHED(); |
| 76 return false; | 78 return false; |
| 77 } | 79 } |
| 78 | 80 |
| 79 void SecurityFilterPeer::OnReceivedResponse( | 81 void SecurityFilterPeer::OnReceivedResponse( |
| 80 const webkit_glue::ResourceResponseInfo& info) { | 82 const webkit_glue::ResourceResponseInfo& info, |
| 83 const base::TimeTicks& start_time, |
| 84 const base::TimeTicks& end_time) { |
| 81 NOTREACHED(); | 85 NOTREACHED(); |
| 82 } | 86 } |
| 83 | 87 |
| 84 void SecurityFilterPeer::OnReceivedData(const char* data, | 88 void SecurityFilterPeer::OnReceivedData(const char* data, |
| 85 int data_length, | 89 int data_length, |
| 86 int encoded_data_length) { | 90 int encoded_data_length) { |
| 87 NOTREACHED(); | 91 NOTREACHED(); |
| 88 } | 92 } |
| 89 | 93 |
| 90 void SecurityFilterPeer::OnCompletedRequest(const net::URLRequestStatus& status, | 94 void SecurityFilterPeer::OnCompletedRequest( |
| 91 const std::string& security_info, | 95 const net::URLRequestStatus& status, |
| 92 const base::Time& completion_time) { | 96 const std::string& security_info, |
| 97 const base::TimeTicks& completion_time) { |
| 93 NOTREACHED(); | 98 NOTREACHED(); |
| 94 } | 99 } |
| 95 | 100 |
| 96 // static | 101 // static |
| 97 void ProcessResponseInfo( | 102 void ProcessResponseInfo( |
| 98 const webkit_glue::ResourceResponseInfo& info_in, | 103 const webkit_glue::ResourceResponseInfo& info_in, |
| 99 webkit_glue::ResourceResponseInfo* info_out, | 104 webkit_glue::ResourceResponseInfo* info_out, |
| 100 const std::string& mime_type) { | 105 const std::string& mime_type) { |
| 101 DCHECK(info_out); | 106 DCHECK(info_out); |
| 102 *info_out = info_in; | 107 *info_out = info_in; |
| (...skipping 27 matching lines...) Expand all Loading... |
| 130 webkit_glue::ResourceLoaderBridge::Peer* peer, | 135 webkit_glue::ResourceLoaderBridge::Peer* peer, |
| 131 const std::string& mime_type) | 136 const std::string& mime_type) |
| 132 : SecurityFilterPeer(resource_loader_bridge, peer), | 137 : SecurityFilterPeer(resource_loader_bridge, peer), |
| 133 mime_type_(mime_type) { | 138 mime_type_(mime_type) { |
| 134 } | 139 } |
| 135 | 140 |
| 136 BufferedPeer::~BufferedPeer() { | 141 BufferedPeer::~BufferedPeer() { |
| 137 } | 142 } |
| 138 | 143 |
| 139 void BufferedPeer::OnReceivedResponse( | 144 void BufferedPeer::OnReceivedResponse( |
| 140 const webkit_glue::ResourceResponseInfo& info) { | 145 const webkit_glue::ResourceResponseInfo& info, |
| 146 const base::TimeTicks& start_time, |
| 147 const base::TimeTicks& end_time) { |
| 141 ProcessResponseInfo(info, &response_info_, mime_type_); | 148 ProcessResponseInfo(info, &response_info_, mime_type_); |
| 149 start_time_ = start_time; |
| 150 end_time_ = end_time; |
| 142 } | 151 } |
| 143 | 152 |
| 144 void BufferedPeer::OnReceivedData(const char* data, | 153 void BufferedPeer::OnReceivedData(const char* data, |
| 145 int data_length, | 154 int data_length, |
| 146 int encoded_data_length) { | 155 int encoded_data_length) { |
| 147 data_.append(data, data_length); | 156 data_.append(data, data_length); |
| 148 } | 157 } |
| 149 | 158 |
| 150 void BufferedPeer::OnCompletedRequest(const net::URLRequestStatus& status, | 159 void BufferedPeer::OnCompletedRequest( |
| 151 const std::string& security_info, | 160 const net::URLRequestStatus& status, |
| 152 const base::Time& completion_time) { | 161 const std::string& security_info, |
| 162 const base::TimeTicks& completion_time) { |
| 153 // Make sure we delete ourselves at the end of this call. | 163 // Make sure we delete ourselves at the end of this call. |
| 154 scoped_ptr<BufferedPeer> this_deleter(this); | 164 scoped_ptr<BufferedPeer> this_deleter(this); |
| 155 | 165 |
| 156 // Give sub-classes a chance at altering the data. | 166 // Give sub-classes a chance at altering the data. |
| 157 if (status.status() != net::URLRequestStatus::SUCCESS || !DataReady()) { | 167 if (status.status() != net::URLRequestStatus::SUCCESS || !DataReady()) { |
| 158 // Pretend we failed to load the resource. | 168 // Pretend we failed to load the resource. |
| 159 original_peer_->OnReceivedResponse(response_info_); | 169 original_peer_->OnReceivedResponse(response_info_, start_time_, end_time_); |
| 160 net::URLRequestStatus status(net::URLRequestStatus::CANCELED, | 170 net::URLRequestStatus status(net::URLRequestStatus::CANCELED, |
| 161 net::ERR_ABORTED); | 171 net::ERR_ABORTED); |
| 162 original_peer_->OnCompletedRequest(status, security_info, completion_time); | 172 original_peer_->OnCompletedRequest(status, security_info, completion_time); |
| 163 return; | 173 return; |
| 164 } | 174 } |
| 165 | 175 |
| 166 original_peer_->OnReceivedResponse(response_info_); | 176 original_peer_->OnReceivedResponse(response_info_, start_time_, end_time_); |
| 167 if (!data_.empty()) | 177 if (!data_.empty()) |
| 168 original_peer_->OnReceivedData(data_.data(), | 178 original_peer_->OnReceivedData(data_.data(), |
| 169 static_cast<int>(data_.size()), | 179 static_cast<int>(data_.size()), |
| 170 -1); | 180 -1); |
| 171 original_peer_->OnCompletedRequest(status, security_info, completion_time); | 181 original_peer_->OnCompletedRequest(status, security_info, completion_time); |
| 172 } | 182 } |
| 173 | 183 |
| 174 //////////////////////////////////////////////////////////////////////////////// | 184 //////////////////////////////////////////////////////////////////////////////// |
| 175 // ReplaceContentPeer | 185 // ReplaceContentPeer |
| 176 | 186 |
| 177 ReplaceContentPeer::ReplaceContentPeer( | 187 ReplaceContentPeer::ReplaceContentPeer( |
| 178 webkit_glue::ResourceLoaderBridge* resource_loader_bridge, | 188 webkit_glue::ResourceLoaderBridge* resource_loader_bridge, |
| 179 webkit_glue::ResourceLoaderBridge::Peer* peer, | 189 webkit_glue::ResourceLoaderBridge::Peer* peer, |
| 180 const std::string& mime_type, | 190 const std::string& mime_type, |
| 181 const std::string& data) | 191 const std::string& data) |
| 182 : SecurityFilterPeer(resource_loader_bridge, peer), | 192 : SecurityFilterPeer(resource_loader_bridge, peer), |
| 183 mime_type_(mime_type), | 193 mime_type_(mime_type), |
| 184 data_(data) { | 194 data_(data) { |
| 185 } | 195 } |
| 186 | 196 |
| 187 ReplaceContentPeer::~ReplaceContentPeer() { | 197 ReplaceContentPeer::~ReplaceContentPeer() { |
| 188 } | 198 } |
| 189 | 199 |
| 190 void ReplaceContentPeer::OnReceivedResponse( | 200 void ReplaceContentPeer::OnReceivedResponse( |
| 191 const webkit_glue::ResourceResponseInfo& info) { | 201 const webkit_glue::ResourceResponseInfo& info, |
| 202 const base::TimeTicks& start_time, |
| 203 const base::TimeTicks& end_time) { |
| 204 start_time_ = start_time; |
| 205 end_time_ = end_time; |
| 192 // Ignore this, we'll serve some alternate content in OnCompletedRequest. | 206 // Ignore this, we'll serve some alternate content in OnCompletedRequest. |
| 193 } | 207 } |
| 194 | 208 |
| 195 void ReplaceContentPeer::OnReceivedData(const char* data, | 209 void ReplaceContentPeer::OnReceivedData(const char* data, |
| 196 int data_length, | 210 int data_length, |
| 197 int encoded_data_length) { | 211 int encoded_data_length) { |
| 198 // Ignore this, we'll serve some alternate content in OnCompletedRequest. | 212 // Ignore this, we'll serve some alternate content in OnCompletedRequest. |
| 199 } | 213 } |
| 200 | 214 |
| 201 void ReplaceContentPeer::OnCompletedRequest( | 215 void ReplaceContentPeer::OnCompletedRequest( |
| 202 const net::URLRequestStatus& status, | 216 const net::URLRequestStatus& status, |
| 203 const std::string& security_info, | 217 const std::string& security_info, |
| 204 const base::Time& completion_time) { | 218 const base::TimeTicks& completion_time) { |
| 205 webkit_glue::ResourceResponseInfo info; | 219 webkit_glue::ResourceResponseInfo info; |
| 206 ProcessResponseInfo(info, &info, mime_type_); | 220 ProcessResponseInfo(info, &info, mime_type_); |
| 207 info.security_info = security_info; | 221 info.security_info = security_info; |
| 208 info.content_length = static_cast<int>(data_.size()); | 222 info.content_length = static_cast<int>(data_.size()); |
| 209 original_peer_->OnReceivedResponse(info); | 223 original_peer_->OnReceivedResponse(info, start_time_, end_time_); |
| 210 if (!data_.empty()) | 224 if (!data_.empty()) |
| 211 original_peer_->OnReceivedData(data_.data(), | 225 original_peer_->OnReceivedData(data_.data(), |
| 212 static_cast<int>(data_.size()), | 226 static_cast<int>(data_.size()), |
| 213 -1); | 227 -1); |
| 214 original_peer_->OnCompletedRequest(net::URLRequestStatus(), | 228 original_peer_->OnCompletedRequest(net::URLRequestStatus(), |
| 215 security_info, | 229 security_info, |
| 216 completion_time); | 230 completion_time); |
| 217 | 231 |
| 218 // The request processing is complete, we must delete ourselves. | 232 // The request processing is complete, we must delete ourselves. |
| 219 delete this; | 233 delete this; |
| 220 } | 234 } |
| OLD | NEW |