Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(118)

Side by Side Diff: extensions/browser/api/web_request/web_request_api_helpers.cc

Issue 2708923005: Extensions: Add metrics for Web Request API actions. (Closed)
Patch Set: Rename enum WebRequestAction -> RequestAction in histograms.xml to be in line with the implementation. Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <algorithm> 10 #include <algorithm>
(...skipping 669 matching lines...) Expand 10 before | Expand all | Expand 10 after
680 return (*delta)->extension_id; 680 return (*delta)->extension_id;
681 } 681 }
682 } 682 }
683 return std::string(); 683 return std::string();
684 } 684 }
685 685
686 void MergeOnBeforeSendHeadersResponses( 686 void MergeOnBeforeSendHeadersResponses(
687 const EventResponseDeltas& deltas, 687 const EventResponseDeltas& deltas,
688 net::HttpRequestHeaders* request_headers, 688 net::HttpRequestHeaders* request_headers,
689 extensions::WarningSet* conflicting_extensions, 689 extensions::WarningSet* conflicting_extensions,
690 const net::NetLogWithSource* net_log) { 690 const net::NetLogWithSource* net_log,
691 bool* request_headers_modified) {
692 DCHECK(request_headers_modified);
693 *request_headers_modified = false;
694
691 EventResponseDeltas::const_iterator delta; 695 EventResponseDeltas::const_iterator delta;
692 696
693 // Here we collect which headers we have removed or set to new values 697 // Here we collect which headers we have removed or set to new values
694 // so far due to extensions of higher precedence. 698 // so far due to extensions of higher precedence.
695 std::set<std::string> removed_headers; 699 std::set<std::string> removed_headers;
696 std::set<std::string> set_headers; 700 std::set<std::string> set_headers;
697 701
698 // We assume here that the deltas are sorted in decreasing extension 702 // We assume here that the deltas are sorted in decreasing extension
699 // precedence (i.e. decreasing extension installation time). 703 // precedence (i.e. decreasing extension installation time).
700 for (delta = deltas.begin(); delta != deltas.end(); ++delta) { 704 for (delta = deltas.begin(); delta != deltas.end(); ++delta) {
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
777 std::vector<std::string>::iterator key; 781 std::vector<std::string>::iterator key;
778 for (key = (*delta)->deleted_request_headers.begin(); 782 for (key = (*delta)->deleted_request_headers.begin();
779 key != (*delta)->deleted_request_headers.end(); 783 key != (*delta)->deleted_request_headers.end();
780 ++key) { 784 ++key) {
781 request_headers->RemoveHeader(*key); 785 request_headers->RemoveHeader(*key);
782 removed_headers.insert(*key); 786 removed_headers.insert(*key);
783 } 787 }
784 } 788 }
785 net_log->AddEvent(net::NetLogEventType::CHROME_EXTENSION_MODIFIED_HEADERS, 789 net_log->AddEvent(net::NetLogEventType::CHROME_EXTENSION_MODIFIED_HEADERS,
786 base::Bind(&NetLogModificationCallback, delta->get())); 790 base::Bind(&NetLogModificationCallback, delta->get()));
791 *request_headers_modified = true;
787 } else { 792 } else {
788 conflicting_extensions->insert( 793 conflicting_extensions->insert(
789 extensions::Warning::CreateRequestHeaderConflictWarning( 794 extensions::Warning::CreateRequestHeaderConflictWarning(
790 (*delta)->extension_id, winning_extension_id, 795 (*delta)->extension_id, winning_extension_id,
791 conflicting_header)); 796 conflicting_header));
792 net_log->AddEvent( 797 net_log->AddEvent(
793 net::NetLogEventType::CHROME_EXTENSION_IGNORED_DUE_TO_CONFLICT, 798 net::NetLogEventType::CHROME_EXTENSION_IGNORED_DUE_TO_CONFLICT,
794 CreateNetLogExtensionIdCallback(delta->get())); 799 CreateNetLogExtensionIdCallback(delta->get()));
795 } 800 }
796 } 801 }
(...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after
1044 return std::string(); 1049 return std::string();
1045 } 1050 }
1046 1051
1047 void MergeOnHeadersReceivedResponses( 1052 void MergeOnHeadersReceivedResponses(
1048 const GURL& url, 1053 const GURL& url,
1049 const EventResponseDeltas& deltas, 1054 const EventResponseDeltas& deltas,
1050 const net::HttpResponseHeaders* original_response_headers, 1055 const net::HttpResponseHeaders* original_response_headers,
1051 scoped_refptr<net::HttpResponseHeaders>* override_response_headers, 1056 scoped_refptr<net::HttpResponseHeaders>* override_response_headers,
1052 GURL* allowed_unsafe_redirect_url, 1057 GURL* allowed_unsafe_redirect_url,
1053 extensions::WarningSet* conflicting_extensions, 1058 extensions::WarningSet* conflicting_extensions,
1054 const net::NetLogWithSource* net_log) { 1059 const net::NetLogWithSource* net_log,
1060 bool* response_headers_modified) {
1061 DCHECK(response_headers_modified);
1062 *response_headers_modified = false;
1063
1055 EventResponseDeltas::const_iterator delta; 1064 EventResponseDeltas::const_iterator delta;
1056 1065
1057 // Here we collect which headers we have removed or added so far due to 1066 // Here we collect which headers we have removed or added so far due to
1058 // extensions of higher precedence. Header keys are always stored as 1067 // extensions of higher precedence. Header keys are always stored as
1059 // lower case. 1068 // lower case.
1060 std::set<ResponseHeader> removed_headers; 1069 std::set<ResponseHeader> removed_headers;
1061 std::set<ResponseHeader> added_headers; 1070 std::set<ResponseHeader> added_headers;
1062 1071
1063 // We assume here that the deltas are sorted in decreasing extension 1072 // We assume here that the deltas are sorted in decreasing extension
1064 // precedence (i.e. decreasing extension installation time). 1073 // precedence (i.e. decreasing extension installation time).
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
1110 i != (*delta)->added_response_headers.end(); ++i) { 1119 i != (*delta)->added_response_headers.end(); ++i) {
1111 ResponseHeader lowercase_header(ToLowerCase(*i)); 1120 ResponseHeader lowercase_header(ToLowerCase(*i));
1112 if (added_headers.find(lowercase_header) != added_headers.end()) 1121 if (added_headers.find(lowercase_header) != added_headers.end())
1113 continue; 1122 continue;
1114 added_headers.insert(lowercase_header); 1123 added_headers.insert(lowercase_header);
1115 (*override_response_headers)->AddHeader(i->first + ": " + i->second); 1124 (*override_response_headers)->AddHeader(i->first + ": " + i->second);
1116 } 1125 }
1117 } 1126 }
1118 net_log->AddEvent(net::NetLogEventType::CHROME_EXTENSION_MODIFIED_HEADERS, 1127 net_log->AddEvent(net::NetLogEventType::CHROME_EXTENSION_MODIFIED_HEADERS,
1119 CreateNetLogExtensionIdCallback(delta->get())); 1128 CreateNetLogExtensionIdCallback(delta->get()));
1129 *response_headers_modified = true;
1120 } else { 1130 } else {
1121 conflicting_extensions->insert( 1131 conflicting_extensions->insert(
1122 extensions::Warning::CreateResponseHeaderConflictWarning( 1132 extensions::Warning::CreateResponseHeaderConflictWarning(
1123 (*delta)->extension_id, winning_extension_id, 1133 (*delta)->extension_id, winning_extension_id,
1124 conflicting_header)); 1134 conflicting_header));
1125 net_log->AddEvent( 1135 net_log->AddEvent(
1126 net::NetLogEventType::CHROME_EXTENSION_IGNORED_DUE_TO_CONFLICT, 1136 net::NetLogEventType::CHROME_EXTENSION_IGNORED_DUE_TO_CONFLICT,
1127 CreateNetLogExtensionIdCallback(delta->get())); 1137 CreateNetLogExtensionIdCallback(delta->get()));
1128 } 1138 }
1129 } 1139 }
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
1205 if (base::IsStringUTF8(value)) { 1215 if (base::IsStringUTF8(value)) {
1206 header->SetString(keys::kHeaderValueKey, value); 1216 header->SetString(keys::kHeaderValueKey, value);
1207 } else { 1217 } else {
1208 header->Set(keys::kHeaderBinaryValueKey, 1218 header->Set(keys::kHeaderBinaryValueKey,
1209 StringToCharList(value)); 1219 StringToCharList(value));
1210 } 1220 }
1211 return header; 1221 return header;
1212 } 1222 }
1213 1223
1214 } // namespace extension_web_request_api_helpers 1224 } // namespace extension_web_request_api_helpers
OLDNEW
« no previous file with comments | « extensions/browser/api/web_request/web_request_api_helpers.h ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698