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

Side by Side Diff: content/browser/child_process_security_policy_impl.cc

Issue 2249473002: Remove use of stl_util's STLDeleteContainerPairSecondPointers from content/. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 years, 4 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 "content/browser/child_process_security_policy_impl.h" 5 #include "content/browser/child_process_security_policy_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/command_line.h" 10 #include "base/command_line.h"
11 #include "base/files/file_path.h" 11 #include "base/files/file_path.h"
12 #include "base/logging.h" 12 #include "base/logging.h"
13 #include "base/macros.h" 13 #include "base/macros.h"
14 #include "base/memory/ptr_util.h"
14 #include "base/metrics/histogram.h" 15 #include "base/metrics/histogram.h"
15 #include "base/stl_util.h"
16 #include "base/strings/string_util.h" 16 #include "base/strings/string_util.h"
17 #include "build/build_config.h" 17 #include "build/build_config.h"
18 #include "content/browser/site_instance_impl.h" 18 #include "content/browser/site_instance_impl.h"
19 #include "content/common/site_isolation_policy.h" 19 #include "content/common/site_isolation_policy.h"
20 #include "content/public/browser/child_process_data.h" 20 #include "content/public/browser/child_process_data.h"
21 #include "content/public/browser/content_browser_client.h" 21 #include "content/public/browser/content_browser_client.h"
22 #include "content/public/browser/render_process_host.h" 22 #include "content/public/browser/render_process_host.h"
23 #include "content/public/common/bindings_policy.h" 23 #include "content/public/common/bindings_policy.h"
24 #include "content/public/common/url_constants.h" 24 #include "content/public/common/url_constants.h"
25 #include "net/base/filename_util.h" 25 #include "net/base/filename_util.h"
(...skipping 280 matching lines...) Expand 10 before | Expand all | Expand 10 after
306 306
307 // We know about the following pseudo schemes and treat them specially. 307 // We know about the following pseudo schemes and treat them specially.
308 RegisterPseudoScheme(url::kAboutScheme); 308 RegisterPseudoScheme(url::kAboutScheme);
309 RegisterPseudoScheme(url::kJavaScriptScheme); 309 RegisterPseudoScheme(url::kJavaScriptScheme);
310 RegisterPseudoScheme(kViewSourceScheme); 310 RegisterPseudoScheme(kViewSourceScheme);
311 } 311 }
312 312
313 ChildProcessSecurityPolicyImpl::~ChildProcessSecurityPolicyImpl() { 313 ChildProcessSecurityPolicyImpl::~ChildProcessSecurityPolicyImpl() {
314 web_safe_schemes_.clear(); 314 web_safe_schemes_.clear();
315 pseudo_schemes_.clear(); 315 pseudo_schemes_.clear();
316 base::STLDeleteContainerPairSecondPointers(security_state_.begin(),
317 security_state_.end());
318 security_state_.clear(); 316 security_state_.clear();
319 } 317 }
320 318
321 // static 319 // static
322 ChildProcessSecurityPolicy* ChildProcessSecurityPolicy::GetInstance() { 320 ChildProcessSecurityPolicy* ChildProcessSecurityPolicy::GetInstance() {
323 return ChildProcessSecurityPolicyImpl::GetInstance(); 321 return ChildProcessSecurityPolicyImpl::GetInstance();
324 } 322 }
325 323
326 ChildProcessSecurityPolicyImpl* ChildProcessSecurityPolicyImpl::GetInstance() { 324 ChildProcessSecurityPolicyImpl* ChildProcessSecurityPolicyImpl::GetInstance() {
327 return base::Singleton<ChildProcessSecurityPolicyImpl>::get(); 325 return base::Singleton<ChildProcessSecurityPolicyImpl>::get();
328 } 326 }
329 327
330 void ChildProcessSecurityPolicyImpl::Add(int child_id) { 328 void ChildProcessSecurityPolicyImpl::Add(int child_id) {
331 base::AutoLock lock(lock_); 329 base::AutoLock lock(lock_);
332 AddChild(child_id); 330 AddChild(child_id);
333 } 331 }
334 332
335 void ChildProcessSecurityPolicyImpl::AddWorker(int child_id, 333 void ChildProcessSecurityPolicyImpl::AddWorker(int child_id,
336 int main_render_process_id) { 334 int main_render_process_id) {
337 base::AutoLock lock(lock_); 335 base::AutoLock lock(lock_);
338 AddChild(child_id); 336 AddChild(child_id);
339 worker_map_[child_id] = main_render_process_id; 337 worker_map_[child_id] = main_render_process_id;
340 } 338 }
341 339
342 void ChildProcessSecurityPolicyImpl::Remove(int child_id) { 340 void ChildProcessSecurityPolicyImpl::Remove(int child_id) {
343 base::AutoLock lock(lock_); 341 base::AutoLock lock(lock_);
344 SecurityStateMap::iterator it = security_state_.find(child_id); 342 security_state_.erase(child_id);
345 if (it == security_state_.end())
346 return; // May be called multiple times.
347
348 delete it->second;
349 security_state_.erase(it);
350 worker_map_.erase(child_id); 343 worker_map_.erase(child_id);
351 } 344 }
352 345
353 void ChildProcessSecurityPolicyImpl::RegisterWebSafeScheme( 346 void ChildProcessSecurityPolicyImpl::RegisterWebSafeScheme(
354 const std::string& scheme) { 347 const std::string& scheme) {
355 base::AutoLock lock(lock_); 348 base::AutoLock lock(lock_);
356 DCHECK_EQ(0U, web_safe_schemes_.count(scheme)) << "Add schemes at most once."; 349 DCHECK_EQ(0U, web_safe_schemes_.count(scheme)) << "Add schemes at most once.";
357 DCHECK_EQ(0U, pseudo_schemes_.count(scheme)) 350 DCHECK_EQ(0U, pseudo_schemes_.count(scheme))
358 << "Web-safe implies not pseudo."; 351 << "Web-safe implies not pseudo.";
359 352
(...skipping 423 matching lines...) Expand 10 before | Expand all | Expand 10 after
783 776
784 return state->second->can_read_raw_cookies(); 777 return state->second->can_read_raw_cookies();
785 } 778 }
786 779
787 void ChildProcessSecurityPolicyImpl::AddChild(int child_id) { 780 void ChildProcessSecurityPolicyImpl::AddChild(int child_id) {
788 if (security_state_.count(child_id) != 0) { 781 if (security_state_.count(child_id) != 0) {
789 NOTREACHED() << "Add child process at most once."; 782 NOTREACHED() << "Add child process at most once.";
790 return; 783 return;
791 } 784 }
792 785
793 security_state_[child_id] = new SecurityState(); 786 security_state_[child_id] = base::MakeUnique<SecurityState>();
794 } 787 }
795 788
796 bool ChildProcessSecurityPolicyImpl::ChildProcessHasPermissionsForFile( 789 bool ChildProcessSecurityPolicyImpl::ChildProcessHasPermissionsForFile(
797 int child_id, const base::FilePath& file, int permissions) { 790 int child_id, const base::FilePath& file, int permissions) {
798 SecurityStateMap::iterator state = security_state_.find(child_id); 791 SecurityStateMap::iterator state = security_state_.find(child_id);
799 if (state == security_state_.end()) 792 if (state == security_state_.end())
800 return false; 793 return false;
801 return state->second->HasPermissionsForFile(file, permissions); 794 return state->second->HasPermissionsForFile(file, permissions);
802 } 795 }
803 796
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
858 base::AutoLock lock(lock_); 851 base::AutoLock lock(lock_);
859 852
860 SecurityStateMap::iterator state = security_state_.find(child_id); 853 SecurityStateMap::iterator state = security_state_.find(child_id);
861 if (state == security_state_.end()) 854 if (state == security_state_.end())
862 return false; 855 return false;
863 856
864 return state->second->can_send_midi_sysex(); 857 return state->second->can_send_midi_sysex();
865 } 858 }
866 859
867 } // namespace content 860 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/child_process_security_policy_impl.h ('k') | content/browser/renderer_host/p2p/socket_dispatcher_host.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698