| 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/renderer/extensions/dispatcher.h" | 5 #include "chrome/renderer/extensions/dispatcher.h" |
| 6 | 6 |
| 7 #include "base/callback.h" | 7 #include "base/callback.h" |
| 8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
| 9 #include "base/debug/alias.h" | 9 #include "base/debug/alias.h" |
| 10 #include "base/json/json_reader.h" | 10 #include "base/json/json_reader.h" |
| (...skipping 1337 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1348 } | 1348 } |
| 1349 } | 1349 } |
| 1350 | 1350 |
| 1351 void Dispatcher::InitOriginPermissions(const Extension* extension) { | 1351 void Dispatcher::InitOriginPermissions(const Extension* extension) { |
| 1352 // TODO(jstritar): We should try to remove this special case. Also, these | 1352 // TODO(jstritar): We should try to remove this special case. Also, these |
| 1353 // whitelist entries need to be updated when the kManagement permission | 1353 // whitelist entries need to be updated when the kManagement permission |
| 1354 // changes. | 1354 // changes. |
| 1355 if (extension->HasAPIPermission(APIPermission::kManagement)) { | 1355 if (extension->HasAPIPermission(APIPermission::kManagement)) { |
| 1356 WebSecurityPolicy::addOriginAccessWhitelistEntry( | 1356 WebSecurityPolicy::addOriginAccessWhitelistEntry( |
| 1357 extension->url(), | 1357 extension->url(), |
| 1358 WebString::fromUTF8(chrome::kChromeUIScheme), | 1358 WebString::fromUTF8(content::kChromeUIScheme), |
| 1359 WebString::fromUTF8(chrome::kChromeUIExtensionIconHost), | 1359 WebString::fromUTF8(chrome::kChromeUIExtensionIconHost), |
| 1360 false); | 1360 false); |
| 1361 } | 1361 } |
| 1362 | 1362 |
| 1363 AddOrRemoveOriginPermissions( | 1363 AddOrRemoveOriginPermissions( |
| 1364 UpdatedExtensionPermissionsInfo::ADDED, | 1364 UpdatedExtensionPermissionsInfo::ADDED, |
| 1365 extension, | 1365 extension, |
| 1366 extension->GetActivePermissions()->explicit_hosts()); | 1366 extension->GetActivePermissions()->explicit_hosts()); |
| 1367 } | 1367 } |
| 1368 | 1368 |
| 1369 void Dispatcher::AddOrRemoveOriginPermissions( | 1369 void Dispatcher::AddOrRemoveOriginPermissions( |
| 1370 UpdatedExtensionPermissionsInfo::Reason reason, | 1370 UpdatedExtensionPermissionsInfo::Reason reason, |
| 1371 const Extension* extension, | 1371 const Extension* extension, |
| 1372 const URLPatternSet& origins) { | 1372 const URLPatternSet& origins) { |
| 1373 for (URLPatternSet::const_iterator i = origins.begin(); | 1373 for (URLPatternSet::const_iterator i = origins.begin(); |
| 1374 i != origins.end(); ++i) { | 1374 i != origins.end(); ++i) { |
| 1375 const char* schemes[] = { | 1375 const char* schemes[] = { |
| 1376 content::kHttpScheme, | 1376 content::kHttpScheme, |
| 1377 content::kHttpsScheme, | 1377 content::kHttpsScheme, |
| 1378 content::kFileScheme, | 1378 content::kFileScheme, |
| 1379 chrome::kChromeUIScheme, | 1379 content::kChromeUIScheme, |
| 1380 }; | 1380 }; |
| 1381 for (size_t j = 0; j < arraysize(schemes); ++j) { | 1381 for (size_t j = 0; j < arraysize(schemes); ++j) { |
| 1382 if (i->MatchesScheme(schemes[j])) { | 1382 if (i->MatchesScheme(schemes[j])) { |
| 1383 ((reason == UpdatedExtensionPermissionsInfo::REMOVED) ? | 1383 ((reason == UpdatedExtensionPermissionsInfo::REMOVED) ? |
| 1384 WebSecurityPolicy::removeOriginAccessWhitelistEntry : | 1384 WebSecurityPolicy::removeOriginAccessWhitelistEntry : |
| 1385 WebSecurityPolicy::addOriginAccessWhitelistEntry)( | 1385 WebSecurityPolicy::addOriginAccessWhitelistEntry)( |
| 1386 extension->url(), | 1386 extension->url(), |
| 1387 WebString::fromUTF8(schemes[j]), | 1387 WebString::fromUTF8(schemes[j]), |
| 1388 WebString::fromUTF8(i->host()), | 1388 WebString::fromUTF8(i->host()), |
| 1389 i->match_subdomains()); | 1389 i->match_subdomains()); |
| (...skipping 296 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1686 } | 1686 } |
| 1687 | 1687 |
| 1688 void Dispatcher::ClearPortData(int port_id) { | 1688 void Dispatcher::ClearPortData(int port_id) { |
| 1689 // Only the target port side has entries in |port_to_tab_id_map_|. If | 1689 // Only the target port side has entries in |port_to_tab_id_map_|. If |
| 1690 // |port_id| is a source port, std::map::erase() will just silently fail | 1690 // |port_id| is a source port, std::map::erase() will just silently fail |
| 1691 // here as a no-op. | 1691 // here as a no-op. |
| 1692 port_to_tab_id_map_.erase(port_id); | 1692 port_to_tab_id_map_.erase(port_id); |
| 1693 } | 1693 } |
| 1694 | 1694 |
| 1695 } // namespace extensions | 1695 } // namespace extensions |
| OLD | NEW |