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

#ifndef CRASH_REPORTER_VM_SUPPORT_H_
#define CRASH_REPORTER_VM_SUPPORT_H_

#include <base/files/file_util.h>
#include <string>

class UserCollector;
class UserCollectorBase;

// Various methods and utilities for working with crashes that occur in a VM (as
// opposed to the host).
class VmSupport {
 public:
  // If we are running in a VM, returns a handle to the VM-support wrapper,
  // otherwise returns nullptr.
  static VmSupport* Get();

  virtual ~VmSupport();

  // Add vm-specific info, such as the container OS and vm board, to
  // |collector|'s crash metadata.
  virtual void AddMetadata(UserCollector* collector) = 0;

  // Perform the extra steps needed when reporting a crash in the VM, such as
  // informing cicerone. |crash_meta_path| is a path to the .meta file, which we
  // use to identify the necessary crash files.
  virtual void FinishCrash(const base::FilePath& crash_meta_path) = 0;

  // Query the host for metrics consent state.
  virtual bool GetMetricsConsent() = 0;

  // Perform extra checks to exclude |collector|'s crash for software CrOS
  // doesn't care about (i.e. non first-party apps e.g. gedit). Returns |true|
  // if we care about this crash, and if we don't explains why in |out_reason|.
  virtual bool ShouldDump(pid_t pid, std::string* out_reason) = 0;
};

#endif  // CRASH_REPORTER_VM_SUPPORT_H_
