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 "chrome/browser/extensions/api/web_request/web_request_api_helpers.h" | 5 #include "chrome/browser/extensions/api/web_request/web_request_api_helpers.h" |
6 | 6 |
7 #include <cmath> | 7 #include <cmath> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/string_util.h" | 10 #include "base/string_util.h" |
(...skipping 603 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
614 const std::string& value) { | 614 const std::string& value) { |
615 EventResponseDeltas::const_iterator delta; | 615 EventResponseDeltas::const_iterator delta; |
616 for (delta = deltas.begin(); delta != deltas.end(); ++delta) { | 616 for (delta = deltas.begin(); delta != deltas.end(); ++delta) { |
617 net::HttpRequestHeaders::Iterator modification( | 617 net::HttpRequestHeaders::Iterator modification( |
618 (*delta)->modified_request_headers); | 618 (*delta)->modified_request_headers); |
619 while (modification.GetNext()) { | 619 while (modification.GetNext()) { |
620 if (key == modification.name() && value == modification.value()) | 620 if (key == modification.name() && value == modification.value()) |
621 return (*delta)->extension_id; | 621 return (*delta)->extension_id; |
622 } | 622 } |
623 } | 623 } |
624 return ""; | 624 return std::string(); |
625 } | 625 } |
626 | 626 |
627 // Returns the extension ID of the first extension in |deltas| that removes the | 627 // Returns the extension ID of the first extension in |deltas| that removes the |
628 // request header identified by |key|. | 628 // request header identified by |key|. |
629 static std::string FindRemoveRequestHeader( | 629 static std::string FindRemoveRequestHeader( |
630 const EventResponseDeltas& deltas, | 630 const EventResponseDeltas& deltas, |
631 const std::string& key) { | 631 const std::string& key) { |
632 EventResponseDeltas::const_iterator delta; | 632 EventResponseDeltas::const_iterator delta; |
633 for (delta = deltas.begin(); delta != deltas.end(); ++delta) { | 633 for (delta = deltas.begin(); delta != deltas.end(); ++delta) { |
634 std::vector<std::string>::iterator i; | 634 std::vector<std::string>::iterator i; |
635 for (i = (*delta)->deleted_request_headers.begin(); | 635 for (i = (*delta)->deleted_request_headers.begin(); |
636 i != (*delta)->deleted_request_headers.end(); | 636 i != (*delta)->deleted_request_headers.end(); |
637 ++i) { | 637 ++i) { |
638 if (*i == key) | 638 if (*i == key) |
639 return (*delta)->extension_id; | 639 return (*delta)->extension_id; |
640 } | 640 } |
641 } | 641 } |
642 return ""; | 642 return std::string(); |
643 } | 643 } |
644 | 644 |
645 void MergeOnBeforeSendHeadersResponses( | 645 void MergeOnBeforeSendHeadersResponses( |
646 const EventResponseDeltas& deltas, | 646 const EventResponseDeltas& deltas, |
647 net::HttpRequestHeaders* request_headers, | 647 net::HttpRequestHeaders* request_headers, |
648 extensions::ExtensionWarningSet* conflicting_extensions, | 648 extensions::ExtensionWarningSet* conflicting_extensions, |
649 const net::BoundNetLog* net_log) { | 649 const net::BoundNetLog* net_log) { |
650 EventResponseDeltas::const_iterator delta; | 650 EventResponseDeltas::const_iterator delta; |
651 | 651 |
652 // Here we collect which headers we have removed or set to new values | 652 // Here we collect which headers we have removed or set to new values |
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
809 return modified; | 809 return modified; |
810 } | 810 } |
811 | 811 |
812 static bool DoesResponseCookieMatchFilter(net::ParsedCookie* cookie, | 812 static bool DoesResponseCookieMatchFilter(net::ParsedCookie* cookie, |
813 FilterResponseCookie* filter) { | 813 FilterResponseCookie* filter) { |
814 if (!cookie->IsValid()) return false; | 814 if (!cookie->IsValid()) return false; |
815 if (!filter) return true; | 815 if (!filter) return true; |
816 if (filter->name.get() && cookie->Name() != *filter->name) return false; | 816 if (filter->name.get() && cookie->Name() != *filter->name) return false; |
817 if (filter->value.get() && cookie->Value() != *filter->value) return false; | 817 if (filter->value.get() && cookie->Value() != *filter->value) return false; |
818 if (filter->expires.get()) { | 818 if (filter->expires.get()) { |
819 std::string actual_value = cookie->HasExpires() ? cookie->Expires() : ""; | 819 std::string actual_value = |
| 820 cookie->HasExpires() ? cookie->Expires() : std::string(); |
820 if (actual_value != *filter->expires) | 821 if (actual_value != *filter->expires) |
821 return false; | 822 return false; |
822 } | 823 } |
823 if (filter->max_age.get()) { | 824 if (filter->max_age.get()) { |
824 std::string actual_value = cookie->HasMaxAge() ? cookie->MaxAge() : ""; | 825 std::string actual_value = |
| 826 cookie->HasMaxAge() ? cookie->MaxAge() : std::string(); |
825 if (actual_value != base::IntToString(*filter->max_age)) | 827 if (actual_value != base::IntToString(*filter->max_age)) |
826 return false; | 828 return false; |
827 } | 829 } |
828 if (filter->domain.get()) { | 830 if (filter->domain.get()) { |
829 std::string actual_value = cookie->HasDomain() ? cookie->Domain() : ""; | 831 std::string actual_value = |
| 832 cookie->HasDomain() ? cookie->Domain() : std::string(); |
830 if (actual_value != *filter->domain) | 833 if (actual_value != *filter->domain) |
831 return false; | 834 return false; |
832 } | 835 } |
833 if (filter->path.get()) { | 836 if (filter->path.get()) { |
834 std::string actual_value = cookie->HasPath() ? cookie->Path() : ""; | 837 std::string actual_value = |
| 838 cookie->HasPath() ? cookie->Path() : std::string(); |
835 if (actual_value != *filter->path) | 839 if (actual_value != *filter->path) |
836 return false; | 840 return false; |
837 } | 841 } |
838 if (filter->secure.get() && cookie->IsSecure() != *filter->secure) | 842 if (filter->secure.get() && cookie->IsSecure() != *filter->secure) |
839 return false; | 843 return false; |
840 if (filter->http_only.get() && cookie->IsHttpOnly() != *filter->http_only) | 844 if (filter->http_only.get() && cookie->IsHttpOnly() != *filter->http_only) |
841 return false; | 845 return false; |
842 int64 seconds_till_expiry; | 846 int64 seconds_till_expiry; |
843 bool lifetime_parsed = false; | 847 bool lifetime_parsed = false; |
844 if (filter->age_upper_bound.get() || | 848 if (filter->age_upper_bound.get() || |
(...skipping 28 matching lines...) Expand all Loading... |
873 EventResponseDeltas::const_reverse_iterator delta; | 877 EventResponseDeltas::const_reverse_iterator delta; |
874 for (delta = deltas.rbegin(); delta != deltas.rend(); ++delta) { | 878 for (delta = deltas.rbegin(); delta != deltas.rend(); ++delta) { |
875 const ResponseCookieModifications& modifications = | 879 const ResponseCookieModifications& modifications = |
876 (*delta)->response_cookie_modifications; | 880 (*delta)->response_cookie_modifications; |
877 for (ResponseCookieModifications::const_iterator mod = | 881 for (ResponseCookieModifications::const_iterator mod = |
878 modifications.begin(); mod != modifications.end(); ++mod) { | 882 modifications.begin(); mod != modifications.end(); ++mod) { |
879 if ((*mod)->type != ADD || !(*mod)->modification.get()) | 883 if ((*mod)->type != ADD || !(*mod)->modification.get()) |
880 continue; | 884 continue; |
881 // Cookie names are not unique in response cookies so we always append | 885 // Cookie names are not unique in response cookies so we always append |
882 // and never override. | 886 // and never override. |
883 linked_ptr<net::ParsedCookie> cookie(new net::ParsedCookie("")); | 887 linked_ptr<net::ParsedCookie> cookie( |
| 888 new net::ParsedCookie(std::string())); |
884 ApplyResponseCookieModification((*mod)->modification.get(), cookie.get()); | 889 ApplyResponseCookieModification((*mod)->modification.get(), cookie.get()); |
885 cookies->push_back(cookie); | 890 cookies->push_back(cookie); |
886 modified = true; | 891 modified = true; |
887 } | 892 } |
888 } | 893 } |
889 return modified; | 894 return modified; |
890 } | 895 } |
891 | 896 |
892 // Applies all CookieModificationType::EDIT operations for response cookies of | 897 // Applies all CookieModificationType::EDIT operations for response cookies of |
893 // |deltas| to |cookies|. Returns whether any cookie was modified. | 898 // |deltas| to |cookies|. Returns whether any cookie was modified. |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1001 std::string lower_key = StringToLowerASCII(key); | 1006 std::string lower_key = StringToLowerASCII(key); |
1002 EventResponseDeltas::const_iterator delta; | 1007 EventResponseDeltas::const_iterator delta; |
1003 for (delta = deltas.begin(); delta != deltas.end(); ++delta) { | 1008 for (delta = deltas.begin(); delta != deltas.end(); ++delta) { |
1004 ResponseHeaders::const_iterator i; | 1009 ResponseHeaders::const_iterator i; |
1005 for (i = (*delta)->deleted_response_headers.begin(); | 1010 for (i = (*delta)->deleted_response_headers.begin(); |
1006 i != (*delta)->deleted_response_headers.end(); ++i) { | 1011 i != (*delta)->deleted_response_headers.end(); ++i) { |
1007 if (StringToLowerASCII(i->first) == lower_key) | 1012 if (StringToLowerASCII(i->first) == lower_key) |
1008 return (*delta)->extension_id; | 1013 return (*delta)->extension_id; |
1009 } | 1014 } |
1010 } | 1015 } |
1011 return ""; | 1016 return std::string(); |
1012 } | 1017 } |
1013 | 1018 |
1014 void MergeOnHeadersReceivedResponses( | 1019 void MergeOnHeadersReceivedResponses( |
1015 const EventResponseDeltas& deltas, | 1020 const EventResponseDeltas& deltas, |
1016 const net::HttpResponseHeaders* original_response_headers, | 1021 const net::HttpResponseHeaders* original_response_headers, |
1017 scoped_refptr<net::HttpResponseHeaders>* override_response_headers, | 1022 scoped_refptr<net::HttpResponseHeaders>* override_response_headers, |
1018 extensions::ExtensionWarningSet* conflicting_extensions, | 1023 extensions::ExtensionWarningSet* conflicting_extensions, |
1019 const net::BoundNetLog* net_log) { | 1024 const net::BoundNetLog* net_log) { |
1020 EventResponseDeltas::const_iterator delta; | 1025 EventResponseDeltas::const_iterator delta; |
1021 | 1026 |
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1166 void ClearCacheOnNavigation() { | 1171 void ClearCacheOnNavigation() { |
1167 if (content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)) { | 1172 if (content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)) { |
1168 ClearCacheOnNavigationOnUI(); | 1173 ClearCacheOnNavigationOnUI(); |
1169 } else { | 1174 } else { |
1170 content::BrowserThread::PostTask(content::BrowserThread::UI, FROM_HERE, | 1175 content::BrowserThread::PostTask(content::BrowserThread::UI, FROM_HERE, |
1171 base::Bind(&ClearCacheOnNavigationOnUI)); | 1176 base::Bind(&ClearCacheOnNavigationOnUI)); |
1172 } | 1177 } |
1173 } | 1178 } |
1174 | 1179 |
1175 } // namespace extension_web_request_api_helpers | 1180 } // namespace extension_web_request_api_helpers |
OLD | NEW |