mirror of
				https://bitbucket.org/chromiumembedded/cef
				synced 2025-06-05 21:39:12 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			59 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
// Copyright 2018 The Chromium Embedded Framework Authors. All rights reserved.
 | 
						|
// Use of this source code is governed by a BSD-style license that can be
 | 
						|
// found in the LICENSE file.
 | 
						|
 | 
						|
#include "libcef/common/cef_crash_report_utils.h"
 | 
						|
 | 
						|
#include "base/strings/string_split.h"
 | 
						|
 | 
						|
namespace crash_report_utils {
 | 
						|
 | 
						|
ParameterMap FilterParameters(const ParameterMap& parameters) {
 | 
						|
  ParameterMap in_map = parameters;
 | 
						|
 | 
						|
  // Extract the key map, if any. Must match the logic in
 | 
						|
  // CefCrashReporterClient::ReadCrashConfigFile.
 | 
						|
  std::string key_map;
 | 
						|
  for (size_t i = 0; true; ++i) {
 | 
						|
    const std::string& key = "K-" + std::string(1, 'A' + i);
 | 
						|
    ParameterMap::iterator it = in_map.find(key);
 | 
						|
    if (it == in_map.end()) {
 | 
						|
      break;
 | 
						|
    }
 | 
						|
    key_map += it->second;
 | 
						|
    in_map.erase(it);
 | 
						|
  }
 | 
						|
 | 
						|
  if (key_map.empty()) {
 | 
						|
    // Nothing to substitute.
 | 
						|
    return parameters;
 | 
						|
  }
 | 
						|
 | 
						|
  // Parse |key_map|.
 | 
						|
  base::StringPairs kv_pairs;
 | 
						|
  if (!base::SplitStringIntoKeyValuePairs(key_map, '=', ',', &kv_pairs)) {
 | 
						|
    return parameters;
 | 
						|
  }
 | 
						|
 | 
						|
  ParameterMap subs;
 | 
						|
  for (const auto& pairs : kv_pairs) {
 | 
						|
    subs.insert(std::make_pair(pairs.first, pairs.second));
 | 
						|
  }
 | 
						|
 | 
						|
  ParameterMap out_map;
 | 
						|
 | 
						|
  // Perform key substitutions.
 | 
						|
  for (const auto& params : in_map) {
 | 
						|
    std::string key = params.first;
 | 
						|
    ParameterMap::const_iterator subs_it = subs.find(params.first);
 | 
						|
    if (subs_it != subs.end()) {
 | 
						|
      key = subs_it->second;
 | 
						|
    }
 | 
						|
    out_map.insert(std::make_pair(key, params.second));
 | 
						|
  }
 | 
						|
 | 
						|
  return out_map;
 | 
						|
}
 | 
						|
 | 
						|
}  // namespace crash_report_utils
 |