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

module chrome_cleaner.mojom;

import "chrome/chrome_cleaner/interfaces/string16_embedded_nulls.mojom";
import "chrome/chrome_cleaner/interfaces/windows_handle.mojom";
import "components/chrome_cleaner/public/interfaces/chrome_prompt.mojom";
import "mojo/public/mojom/base/string16.mojom";

// Source:
//   https://msdn.microsoft.com/en-us/library/windows/desktop/aa384129.aspx
enum Wow64Access {
  kNone = 0,
  // KEY_WOW64_64KEY
  k64Key = 0x0100,
  // KEY_WOW64_32KEY
  k32Key = 0x0200,
};

// Typemapped to chrome_cleaner::RegKeyPath.
struct RegKeyPath {
  PredefinedHandle rootkey;
  // This is only sent by URZA, which currently doesn't support registry paths
  // with embedded nulls.
  mojo_base.mojom.String16 subkey;
  Wow64Access wow64access;
};

// Used for reporting detected registry footprints.
// Typemapped to chrome_cleaner::PUPData::RegistryFootprint.
struct RegistryFootprint {
  RegKeyPath key_path;
  String16EmbeddedNulls value_name;
  String16EmbeddedNulls value_substring;
  // An enumerator of chrome_cleaner::RegistryMatchRule.
  uint32 rule;
};

// Typemapped to chrome_cleaner::UwS::TraceLocation enumeration from
// chrome_cleaner/logging/proto/shared_data.proto.
// The struct is used here as a work-around to make Mojo check passed values
// without having to duplicate the enum definition.
struct TraceLocation {
  int32 value;
};

// Typemapped to chrome_cleaner::PUPData::FileInfo.
struct FileInfo {
  array<TraceLocation> found_in;
};

// Partially typemapped to chrome_cleaner::PUPData::PUP.
// UwS signatures are not included.
struct PUP {
  array<FilePath> expanded_disk_footprints;
  array<RegistryFootprint> expanded_registry_footprints;
  array<mojo_base.mojom.String16> expanded_scheduled_tasks;
  map<FilePath, FileInfo> disk_footprints_info;
};
