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 "extensions/browser/api/web_request/web_request_api_helpers.h" | 5 #include "extensions/browser/api/web_request/web_request_api_helpers.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <cmath> | 8 #include <cmath> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
337 | 337 |
338 if (!new_response_headers) | 338 if (!new_response_headers) |
339 return result; | 339 return result; |
340 | 340 |
341 // Find deleted headers (header keys are treated case insensitively). | 341 // Find deleted headers (header keys are treated case insensitively). |
342 { | 342 { |
343 void* iter = NULL; | 343 void* iter = NULL; |
344 std::string name; | 344 std::string name; |
345 std::string value; | 345 std::string value; |
346 while (old_response_headers->EnumerateHeaderLines(&iter, &name, &value)) { | 346 while (old_response_headers->EnumerateHeaderLines(&iter, &name, &value)) { |
347 std::string name_lowercase(name); | 347 std::string name_lowercase = base::ToLowerASCII(name); |
348 base::StringToLowerASCII(&name_lowercase); | |
349 | 348 |
350 bool header_found = false; | 349 bool header_found = false; |
351 for (ResponseHeaders::const_iterator i = new_response_headers->begin(); | 350 for (const auto& i : *new_response_headers) { |
352 i != new_response_headers->end(); ++i) { | 351 if (base::LowerCaseEqualsASCII(i.first, name_lowercase) && |
353 if (base::LowerCaseEqualsASCII(i->first, name_lowercase.c_str()) && | 352 value == i.second) { |
354 value == i->second) { | |
355 header_found = true; | 353 header_found = true; |
356 break; | 354 break; |
357 } | 355 } |
358 } | 356 } |
359 if (!header_found) | 357 if (!header_found) |
360 result->deleted_response_headers.push_back(ResponseHeader(name, value)); | 358 result->deleted_response_headers.push_back(ResponseHeader(name, value)); |
361 } | 359 } |
362 } | 360 } |
363 | 361 |
364 // Find added headers (header keys are treated case insensitively). | 362 // Find added headers (header keys are treated case insensitively). |
(...skipping 647 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1012 modified |= MergeEditResponseCookieModifications(deltas, &cookies); | 1010 modified |= MergeEditResponseCookieModifications(deltas, &cookies); |
1013 modified |= MergeRemoveResponseCookieModifications(deltas, &cookies); | 1011 modified |= MergeRemoveResponseCookieModifications(deltas, &cookies); |
1014 | 1012 |
1015 // Store new value. | 1013 // Store new value. |
1016 if (modified) | 1014 if (modified) |
1017 StoreResponseCookies(cookies, *override_response_headers); | 1015 StoreResponseCookies(cookies, *override_response_headers); |
1018 } | 1016 } |
1019 | 1017 |
1020 // Converts the key of the (key, value) pair to lower case. | 1018 // Converts the key of the (key, value) pair to lower case. |
1021 static ResponseHeader ToLowerCase(const ResponseHeader& header) { | 1019 static ResponseHeader ToLowerCase(const ResponseHeader& header) { |
1022 std::string lower_key(header.first); | 1020 return ResponseHeader(base::ToLowerASCII(header.first), header.second); |
1023 base::StringToLowerASCII(&lower_key); | |
1024 return ResponseHeader(lower_key, header.second); | |
1025 } | 1021 } |
1026 | 1022 |
1027 // Returns the extension ID of the first extension in |deltas| that removes the | 1023 // Returns the extension ID of the first extension in |deltas| that removes the |
1028 // request header identified by |key|. | 1024 // request header identified by |key|. |
1029 static std::string FindRemoveResponseHeader( | 1025 static std::string FindRemoveResponseHeader( |
1030 const EventResponseDeltas& deltas, | 1026 const EventResponseDeltas& deltas, |
1031 const std::string& key) { | 1027 const std::string& key) { |
1032 std::string lower_key = base::StringToLowerASCII(key); | 1028 std::string lower_key = base::ToLowerASCII(key); |
1033 EventResponseDeltas::const_iterator delta; | 1029 for (const auto& delta : deltas) { |
1034 for (delta = deltas.begin(); delta != deltas.end(); ++delta) { | 1030 for (const auto& deleted_hdr : delta->deleted_response_headers) { |
1035 ResponseHeaders::const_iterator i; | 1031 if (base::ToLowerASCII(deleted_hdr.first) == lower_key) |
1036 for (i = (*delta)->deleted_response_headers.begin(); | 1032 return delta->extension_id; |
1037 i != (*delta)->deleted_response_headers.end(); ++i) { | |
1038 if (base::StringToLowerASCII(i->first) == lower_key) | |
1039 return (*delta)->extension_id; | |
1040 } | 1033 } |
1041 } | 1034 } |
1042 return std::string(); | 1035 return std::string(); |
1043 } | 1036 } |
1044 | 1037 |
1045 void MergeOnHeadersReceivedResponses( | 1038 void MergeOnHeadersReceivedResponses( |
1046 const EventResponseDeltas& deltas, | 1039 const EventResponseDeltas& deltas, |
1047 const net::HttpResponseHeaders* original_response_headers, | 1040 const net::HttpResponseHeaders* original_response_headers, |
1048 scoped_refptr<net::HttpResponseHeaders>* override_response_headers, | 1041 scoped_refptr<net::HttpResponseHeaders>* override_response_headers, |
1049 GURL* allowed_unsafe_redirect_url, | 1042 GURL* allowed_unsafe_redirect_url, |
(...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1279 std::find(kResourceTypeStrings, | 1272 std::find(kResourceTypeStrings, |
1280 kResourceTypeStrings + kResourceTypeStringsLength, | 1273 kResourceTypeStrings + kResourceTypeStringsLength, |
1281 type_str); | 1274 type_str); |
1282 if (iter == (kResourceTypeStrings + kResourceTypeStringsLength)) | 1275 if (iter == (kResourceTypeStrings + kResourceTypeStringsLength)) |
1283 return false; | 1276 return false; |
1284 *type = kResourceTypeValues[iter - kResourceTypeStrings]; | 1277 *type = kResourceTypeValues[iter - kResourceTypeStrings]; |
1285 return true; | 1278 return true; |
1286 } | 1279 } |
1287 | 1280 |
1288 } // namespace extension_web_request_api_helpers | 1281 } // namespace extension_web_request_api_helpers |
OLD | NEW |