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/browser/extensions/extension_webrequest_api.h" | 5 #include "chrome/browser/extensions/extension_webrequest_api.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/json/json_writer.h" | 10 #include "base/json/json_writer.h" |
(...skipping 1178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1189 case ExtensionWebRequestEventRouter::kOnBeforeSendHeaders: { | 1189 case ExtensionWebRequestEventRouter::kOnBeforeSendHeaders: { |
1190 net::HttpRequestHeaders* old_headers = blocked_request->request_headers; | 1190 net::HttpRequestHeaders* old_headers = blocked_request->request_headers; |
1191 net::HttpRequestHeaders* new_headers = response->request_headers.get(); | 1191 net::HttpRequestHeaders* new_headers = response->request_headers.get(); |
1192 return helpers::CalculateOnBeforeSendHeadersDelta( | 1192 return helpers::CalculateOnBeforeSendHeadersDelta( |
1193 response->extension_id, response->extension_install_time, | 1193 response->extension_id, response->extension_install_time, |
1194 response->cancel, old_headers, new_headers); | 1194 response->cancel, old_headers, new_headers); |
1195 } | 1195 } |
1196 case ExtensionWebRequestEventRouter::kOnHeadersReceived: { | 1196 case ExtensionWebRequestEventRouter::kOnHeadersReceived: { |
1197 net::HttpResponseHeaders* old_headers = | 1197 net::HttpResponseHeaders* old_headers = |
1198 blocked_request->original_response_headers.get(); | 1198 blocked_request->original_response_headers.get(); |
| 1199 helpers::ResponseHeaders* new_headers = |
| 1200 response->response_headers.get(); |
1199 return helpers::CalculateOnHeadersReceivedDelta( | 1201 return helpers::CalculateOnHeadersReceivedDelta( |
1200 response->extension_id, response->extension_install_time, | 1202 response->extension_id, response->extension_install_time, |
1201 response->cancel, old_headers->GetStatusLine(), | 1203 response->cancel, old_headers, new_headers); |
1202 response->response_headers_string); | |
1203 } | 1204 } |
1204 case ExtensionWebRequestEventRouter::kOnAuthRequired: | 1205 case ExtensionWebRequestEventRouter::kOnAuthRequired: |
1205 return helpers::CalculateOnAuthRequiredDelta( | 1206 return helpers::CalculateOnAuthRequiredDelta( |
1206 response->extension_id, response->extension_install_time, | 1207 response->extension_id, response->extension_install_time, |
1207 response->cancel, &response->auth_credentials); | 1208 response->cancel, &response->auth_credentials); |
1208 default: | 1209 default: |
1209 NOTREACHED(); | 1210 NOTREACHED(); |
1210 break; | 1211 break; |
1211 } | 1212 } |
1212 return NULL; | 1213 return NULL; |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1269 CHECK(blocked_request.callback); | 1270 CHECK(blocked_request.callback); |
1270 helpers::MergeOnBeforeSendHeadersResponses( | 1271 helpers::MergeOnBeforeSendHeadersResponses( |
1271 blocked_request.response_deltas, | 1272 blocked_request.response_deltas, |
1272 blocked_request.request_headers, | 1273 blocked_request.request_headers, |
1273 &conflicting_extensions, | 1274 &conflicting_extensions, |
1274 &event_log_entries); | 1275 &event_log_entries); |
1275 } else if (blocked_request.event == kOnHeadersReceived) { | 1276 } else if (blocked_request.event == kOnHeadersReceived) { |
1276 CHECK(blocked_request.callback); | 1277 CHECK(blocked_request.callback); |
1277 helpers::MergeOnHeadersReceivedResponses( | 1278 helpers::MergeOnHeadersReceivedResponses( |
1278 blocked_request.response_deltas, | 1279 blocked_request.response_deltas, |
| 1280 blocked_request.original_response_headers.get(), |
1279 blocked_request.override_response_headers, | 1281 blocked_request.override_response_headers, |
1280 &conflicting_extensions, | 1282 &conflicting_extensions, |
1281 &event_log_entries); | 1283 &event_log_entries); |
1282 } else if (blocked_request.event == kOnAuthRequired) { | 1284 } else if (blocked_request.event == kOnAuthRequired) { |
1283 CHECK(!blocked_request.callback); | 1285 CHECK(!blocked_request.callback); |
1284 CHECK(!blocked_request.auth_callback.is_null()); | 1286 CHECK(!blocked_request.auth_callback.is_null()); |
1285 credentials_set = helpers::MergeOnAuthRequiredResponses( | 1287 credentials_set = helpers::MergeOnAuthRequiredResponses( |
1286 blocked_request.response_deltas, | 1288 blocked_request.response_deltas, |
1287 blocked_request.auth_credentials, | 1289 blocked_request.auth_credentials, |
1288 &conflicting_extensions, | 1290 &conflicting_extensions, |
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1546 std::string value; | 1548 std::string value; |
1547 EXTENSION_FUNCTION_VALIDATE( | 1549 EXTENSION_FUNCTION_VALIDATE( |
1548 request_headers_value->GetDictionary(i, &header_value)); | 1550 request_headers_value->GetDictionary(i, &header_value)); |
1549 EXTENSION_FUNCTION_VALIDATE( | 1551 EXTENSION_FUNCTION_VALIDATE( |
1550 FromHeaderDictionary(header_value, &name, &value)); | 1552 FromHeaderDictionary(header_value, &name, &value)); |
1551 response->request_headers->SetHeader(name, value); | 1553 response->request_headers->SetHeader(name, value); |
1552 } | 1554 } |
1553 } | 1555 } |
1554 | 1556 |
1555 if (value->HasKey("responseHeaders")) { | 1557 if (value->HasKey("responseHeaders")) { |
1556 std::string response_headers_string; | 1558 helpers::ResponseHeaders* response_headers = |
| 1559 new helpers::ResponseHeaders(); |
1557 ListValue* response_headers_value = NULL; | 1560 ListValue* response_headers_value = NULL; |
1558 EXTENSION_FUNCTION_VALIDATE(value->GetList(keys::kResponseHeadersKey, | 1561 EXTENSION_FUNCTION_VALIDATE(value->GetList(keys::kResponseHeadersKey, |
1559 &response_headers_value)); | 1562 &response_headers_value)); |
1560 for (size_t i = 0; i < response_headers_value->GetSize(); ++i) { | 1563 for (size_t i = 0; i < response_headers_value->GetSize(); ++i) { |
1561 DictionaryValue* header_value = NULL; | 1564 DictionaryValue* header_value = NULL; |
1562 std::string name; | 1565 std::string name; |
1563 std::string value; | 1566 std::string value; |
1564 EXTENSION_FUNCTION_VALIDATE( | 1567 EXTENSION_FUNCTION_VALIDATE( |
1565 response_headers_value->GetDictionary(i, &header_value)); | 1568 response_headers_value->GetDictionary(i, &header_value)); |
1566 EXTENSION_FUNCTION_VALIDATE( | 1569 EXTENSION_FUNCTION_VALIDATE( |
1567 FromHeaderDictionary(header_value, &name, &value)); | 1570 FromHeaderDictionary(header_value, &name, &value)); |
1568 response_headers_string += name + ": " + value + '\n'; | 1571 response_headers->push_back(helpers::ResponseHeader(name, value)); |
1569 } | 1572 } |
1570 response_headers_string += '\n'; | 1573 response->response_headers.reset(response_headers); |
1571 response->response_headers_string.swap(response_headers_string); | |
1572 } | 1574 } |
1573 | 1575 |
1574 if (value->HasKey(keys::kAuthCredentialsKey)) { | 1576 if (value->HasKey(keys::kAuthCredentialsKey)) { |
1575 DictionaryValue* credentials_value = NULL; | 1577 DictionaryValue* credentials_value = NULL; |
1576 EXTENSION_FUNCTION_VALIDATE(value->GetDictionary( | 1578 EXTENSION_FUNCTION_VALIDATE(value->GetDictionary( |
1577 keys::kAuthCredentialsKey, | 1579 keys::kAuthCredentialsKey, |
1578 &credentials_value)); | 1580 &credentials_value)); |
1579 string16 username; | 1581 string16 username; |
1580 string16 password; | 1582 string16 password; |
1581 EXTENSION_FUNCTION_VALIDATE( | 1583 EXTENSION_FUNCTION_VALIDATE( |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1647 } else if ((*it)->name().find("AdBlock") != std::string::npos) { | 1649 } else if ((*it)->name().find("AdBlock") != std::string::npos) { |
1648 adblock = true; | 1650 adblock = true; |
1649 } else { | 1651 } else { |
1650 other = true; | 1652 other = true; |
1651 } | 1653 } |
1652 } | 1654 } |
1653 } | 1655 } |
1654 | 1656 |
1655 host->Send(new ExtensionMsg_UsingWebRequestAPI(adblock, adblock_plus, other)); | 1657 host->Send(new ExtensionMsg_UsingWebRequestAPI(adblock, adblock_plus, other)); |
1656 } | 1658 } |
OLD | NEW |