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

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

Issue 2930983002: Revert of chrome.webRequest support for ExtensionSettings (Closed)
Patch Set: Created 3 years, 6 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_permissions.h" 5 #include "extensions/browser/api/web_request/web_request_permissions.h"
6 6
7 #include "base/strings/string_piece.h" 7 #include "base/strings/string_piece.h"
8 #include "base/strings/string_util.h" 8 #include "base/strings/string_util.h"
9 #include "base/strings/stringprintf.h" 9 #include "base/strings/stringprintf.h"
10 #include "chromeos/login/login_state.h" 10 #include "chromeos/login/login_state.h"
11 #include "content/public/browser/child_process_security_policy.h" 11 #include "content/public/browser/child_process_security_policy.h"
12 #include "content/public/browser/resource_request_info.h" 12 #include "content/public/browser/resource_request_info.h"
13 #include "extensions/browser/extension_navigation_ui_data.h" 13 #include "extensions/browser/extension_navigation_ui_data.h"
14 #include "extensions/browser/guest_view/web_view/web_view_renderer_state.h" 14 #include "extensions/browser/guest_view/web_view/web_view_renderer_state.h"
15 #include "extensions/browser/info_map.h" 15 #include "extensions/browser/info_map.h"
16 #include "extensions/common/constants.h" 16 #include "extensions/common/constants.h"
17 #include "extensions/common/extension.h" 17 #include "extensions/common/extension.h"
18 #include "extensions/common/extension_urls.h" 18 #include "extensions/common/extension_urls.h"
19 #include "extensions/common/permissions/permissions_data.h" 19 #include "extensions/common/permissions/permissions_data.h"
20 #include "net/url_request/url_request.h" 20 #include "net/url_request/url_request.h"
21 #include "url/gurl.h" 21 #include "url/gurl.h"
22 #include "url/origin.h"
22 23
23 #if defined(OS_CHROMEOS) 24 #if defined(OS_CHROMEOS)
24 #include "chromeos/login/login_state.h" 25 #include "chromeos/login/login_state.h"
25 #endif // defined(OS_CHROMEOS) 26 #endif // defined(OS_CHROMEOS)
26 27
27 using content::ResourceRequestInfo; 28 using content::ResourceRequestInfo;
28 using extensions::PermissionsData; 29 using extensions::PermissionsData;
29 30
30 namespace { 31 namespace {
31 32
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
143 g_allow_all_extension_locations_in_public_session = value; 144 g_allow_all_extension_locations_in_public_session = value;
144 } 145 }
145 146
146 // static 147 // static
147 PermissionsData::AccessType WebRequestPermissions::CanExtensionAccessURL( 148 PermissionsData::AccessType WebRequestPermissions::CanExtensionAccessURL(
148 const extensions::InfoMap* extension_info_map, 149 const extensions::InfoMap* extension_info_map,
149 const std::string& extension_id, 150 const std::string& extension_id,
150 const GURL& url, 151 const GURL& url,
151 int tab_id, 152 int tab_id,
152 bool crosses_incognito, 153 bool crosses_incognito,
153 HostPermissionsCheck host_permissions_check, 154 HostPermissionsCheck host_permissions_check) {
154 const base::Optional<url::Origin>& initiator) {
155 // extension_info_map can be NULL in testing. 155 // extension_info_map can be NULL in testing.
156 if (!extension_info_map) 156 if (!extension_info_map)
157 return PermissionsData::ACCESS_ALLOWED; 157 return PermissionsData::ACCESS_ALLOWED;
158 158
159 const extensions::Extension* extension = 159 const extensions::Extension* extension =
160 extension_info_map->extensions().GetByID(extension_id); 160 extension_info_map->extensions().GetByID(extension_id);
161 if (!extension) 161 if (!extension)
162 return PermissionsData::ACCESS_DENIED; 162 return PermissionsData::ACCESS_DENIED;
163 163
164 // Prevent viewing / modifying requests initiated by a host protected by
165 // policy.
166 if (initiator && extension->permissions_data()->IsRuntimeBlockedHost(
167 initiator->GetPhysicalOrigin().GetURL()))
168 return PermissionsData::ACCESS_DENIED;
169
170 // When we are in a Public Session, allow all URLs for webRequests initiated 164 // When we are in a Public Session, allow all URLs for webRequests initiated
171 // by a regular extension (but don't allow chrome:// URLs). 165 // by a regular extension (but don't allow chrome:// URLs).
172 #if defined(OS_CHROMEOS) 166 #if defined(OS_CHROMEOS)
173 if (chromeos::LoginState::IsInitialized() && 167 if (chromeos::LoginState::IsInitialized() &&
174 chromeos::LoginState::Get()->IsPublicSessionUser() && 168 chromeos::LoginState::Get()->IsPublicSessionUser() &&
175 extension->is_extension() && 169 extension->is_extension() &&
176 !url.SchemeIs("chrome")) { 170 !url.SchemeIs("chrome")) {
177 // Make sure that the extension is truly installed by policy (the assumption 171 // Make sure that the extension is truly installed by policy (the assumption
178 // in Public Session is that all extensions are installed by policy). 172 // in Public Session is that all extensions are installed by policy).
179 CHECK(g_allow_all_extension_locations_in_public_session || 173 CHECK(g_allow_all_extension_locations_in_public_session ||
(...skipping 24 matching lines...) Expand all
204 break; 198 break;
205 case REQUIRE_ALL_URLS: 199 case REQUIRE_ALL_URLS:
206 if (extension->permissions_data()->HasEffectiveAccessToAllHosts()) 200 if (extension->permissions_data()->HasEffectiveAccessToAllHosts())
207 access = PermissionsData::ACCESS_ALLOWED; 201 access = PermissionsData::ACCESS_ALLOWED;
208 // else ACCESS_DENIED 202 // else ACCESS_DENIED
209 break; 203 break;
210 } 204 }
211 205
212 return access; 206 return access;
213 } 207 }
OLDNEW
« no previous file with comments | « extensions/browser/api/web_request/web_request_permissions.h ('k') | extensions/common/permissions/permissions_data.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698