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/declarative_webrequest/webrequest_action
.h" | 5 #include "chrome/browser/extensions/api/declarative_webrequest/webrequest_action
.h" |
6 | 6 |
7 #include <limits> | 7 #include <limits> |
8 | 8 |
9 #include "base/lazy_instance.h" | 9 #include "base/lazy_instance.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
11 #include "base/strings/string_util.h" | 11 #include "base/strings/string_util.h" |
12 #include "base/strings/stringprintf.h" | 12 #include "base/strings/stringprintf.h" |
13 #include "base/values.h" | 13 #include "base/values.h" |
14 #include "chrome/browser/extensions/api/declarative/deduping_factory.h" | 14 #include "chrome/browser/extensions/api/declarative/deduping_factory.h" |
15 #include "chrome/browser/extensions/api/declarative_webrequest/request_stage.h" | 15 #include "chrome/browser/extensions/api/declarative_webrequest/request_stage.h" |
16 #include "chrome/browser/extensions/api/declarative_webrequest/webrequest_condit
ion.h" | 16 #include "chrome/browser/extensions/api/declarative_webrequest/webrequest_condit
ion.h" |
17 #include "chrome/browser/extensions/api/declarative_webrequest/webrequest_consta
nts.h" | 17 #include "chrome/browser/extensions/api/declarative_webrequest/webrequest_consta
nts.h" |
18 #include "chrome/browser/extensions/api/web_request/web_request_api_constants.h" | 18 #include "chrome/browser/extensions/api/web_request/web_request_api_constants.h" |
19 #include "chrome/browser/extensions/api/web_request/web_request_api_helpers.h" | 19 #include "chrome/browser/extensions/api/web_request/web_request_api_helpers.h" |
20 #include "chrome/browser/extensions/api/web_request/web_request_permissions.h" | 20 #include "chrome/browser/extensions/api/web_request/web_request_permissions.h" |
| 21 #include "chrome/browser/extensions/extension_renderer_state.h" |
| 22 #include "content/public/browser/resource_request_info.h" |
21 #include "content/public/common/url_constants.h" | 23 #include "content/public/common/url_constants.h" |
22 #include "extensions/browser/info_map.h" | 24 #include "extensions/browser/info_map.h" |
23 #include "extensions/common/error_utils.h" | 25 #include "extensions/common/error_utils.h" |
24 #include "extensions/common/extension.h" | 26 #include "extensions/common/extension.h" |
25 #include "net/base/registry_controlled_domains/registry_controlled_domain.h" | 27 #include "net/base/registry_controlled_domains/registry_controlled_domain.h" |
26 #include "net/url_request/url_request.h" | 28 #include "net/url_request/url_request.h" |
27 #include "third_party/re2/re2/re2.h" | 29 #include "third_party/re2/re2/re2.h" |
28 | 30 |
| 31 using content::ResourceRequestInfo; |
| 32 |
29 namespace extensions { | 33 namespace extensions { |
30 | 34 |
31 namespace helpers = extension_web_request_api_helpers; | 35 namespace helpers = extension_web_request_api_helpers; |
32 namespace keys = declarative_webrequest_constants; | 36 namespace keys = declarative_webrequest_constants; |
33 | 37 |
34 namespace { | 38 namespace { |
35 // Error messages. | 39 // Error messages. |
36 const char kIgnoreRulesRequiresParameterError[] = | 40 const char kIgnoreRulesRequiresParameterError[] = |
37 "IgnoreRules requires at least one parameter."; | 41 "IgnoreRules requires at least one parameter."; |
38 | 42 |
(...skipping 435 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
474 const net::URLRequest* request, | 478 const net::URLRequest* request, |
475 bool crosses_incognito) const { | 479 bool crosses_incognito) const { |
476 if (WebRequestPermissions::HideRequest(extension_info_map, request)) | 480 if (WebRequestPermissions::HideRequest(extension_info_map, request)) |
477 return false; | 481 return false; |
478 | 482 |
479 // In unit tests we don't have an extension_info_map object here and skip host | 483 // In unit tests we don't have an extension_info_map object here and skip host |
480 // permission checks. | 484 // permission checks. |
481 if (!extension_info_map) | 485 if (!extension_info_map) |
482 return true; | 486 return true; |
483 | 487 |
| 488 const ResourceRequestInfo* info = ResourceRequestInfo::ForRequest(request); |
| 489 int process_id = info ? info->GetChildID() : 0; |
| 490 int route_id = info ? info->GetRouteID() : 0; |
| 491 ExtensionRendererState::WebViewInfo webview_info; |
| 492 // The embedder can always access all hosts from within a <webview>. |
| 493 // The same is not true of extensions. |
| 494 if (ExtensionRendererState::GetInstance()->GetWebViewInfo( |
| 495 process_id, route_id, &webview_info)) { |
| 496 return true; |
| 497 } |
484 WebRequestPermissions::HostPermissionsCheck permission_check = | 498 WebRequestPermissions::HostPermissionsCheck permission_check = |
485 WebRequestPermissions::REQUIRE_ALL_URLS; | 499 WebRequestPermissions::REQUIRE_ALL_URLS; |
486 switch (host_permissions_strategy()) { | 500 switch (host_permissions_strategy()) { |
487 case STRATEGY_DEFAULT: // Default value is already set. | 501 case STRATEGY_DEFAULT: // Default value is already set. |
488 break; | 502 break; |
489 case STRATEGY_NONE: | 503 case STRATEGY_NONE: |
490 permission_check = WebRequestPermissions::DO_NOT_CHECK_HOST; | 504 permission_check = WebRequestPermissions::DO_NOT_CHECK_HOST; |
491 break; | 505 break; |
492 case STRATEGY_HOST: | 506 case STRATEGY_HOST: |
493 permission_check = WebRequestPermissions::REQUIRE_HOST_PERMISSION; | 507 permission_check = WebRequestPermissions::REQUIRE_HOST_PERMISSION; |
(...skipping 652 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1146 const base::Time& extension_install_time) const { | 1160 const base::Time& extension_install_time) const { |
1147 CHECK(request_data.stage & stages()); | 1161 CHECK(request_data.stage & stages()); |
1148 LinkedPtrEventResponseDelta result( | 1162 LinkedPtrEventResponseDelta result( |
1149 new extension_web_request_api_helpers::EventResponseDelta( | 1163 new extension_web_request_api_helpers::EventResponseDelta( |
1150 extension_id, extension_install_time)); | 1164 extension_id, extension_install_time)); |
1151 result->messages_to_extension.insert(message_); | 1165 result->messages_to_extension.insert(message_); |
1152 return result; | 1166 return result; |
1153 } | 1167 } |
1154 | 1168 |
1155 } // namespace extensions | 1169 } // namespace extensions |
OLD | NEW |