chromium/components/crash/core/common/crash_keys.h

// Copyright 2015 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef COMPONENTS_CRASH_CORE_COMMON_CRASH_KEYS_H_
#define COMPONENTS_CRASH_CORE_COMMON_CRASH_KEYS_H_

#include <string>
#include <vector>

#include "components/crash/core/common/crash_export.h"

namespace base {
class CommandLine;
}  // namespace base

namespace crash_keys {

// Sets the ID (which may either be a full GUID or a GUID that was already
// stripped from its dashes -- in either case this method will strip remaining
// dashes before setting the crash key).
void SetMetricsClientIdFromGUID(const std::string& metrics_client_guid);
void ClearMetricsClientId();

// A function returning true if |flag| is a switch that should be filtered out
// of crash keys.
SwitchFilterFunction;

// Sets the "num-switches" key and a set of keys named using kSwitchFormat based
// on the given |command_line|. If |skip_filter| is not null, ignore any switch
// for which it returns true.
void CRASH_KEY_EXPORT
SetSwitchesFromCommandLine(const base::CommandLine& command_line,
                           SwitchFilterFunction skip_filter);

// Clears all the CommandLine-related crash keys.
void ResetCommandLineForTesting();

// Sets the printer info. `data` should contain no more than 4 strings.
// Each string might get truncated if necessary.
// If `data` is empty then the `printer_name` will be used.  This provides some
// minimal information when there are issues getting the printer's info.
class ScopedPrinterInfo {};

}  // namespace crash_keys

#endif  // COMPONENTS_CRASH_CORE_COMMON_CRASH_KEYS_H_