// 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.

syntax = "proto2";

package chrome_cleaner;

option optimize_for = LITE_RUNTIME;

message RegistryFootprint {
  enum RegistryFootprintType {
    REGISTRY_TYPE_UNSPECIFIED = 0;
    REGISTRY_TYPE_BINARY = 1;
    REGISTRY_TYPE_DWORD = 2;
    REGISTRY_TYPE_QWORD = 3;
    REGISTRY_TYPE_DWORD_LITTLE_ENDIAN = 4;
    REGISTRY_TYPE_QWORD_LITTLE_ENDIAN = 5;
    REGISTRY_TYPE_DWORD_BIG_ENDIAN = 6;
    REGISTRY_TYPE_EXPAND_SZ = 7;
    REGISTRY_TYPE_MULTI_SZ = 8;
    REGISTRY_TYPE_NONE = 9;
    REGISTRY_TYPE_SZ = 10;
  }

  enum RegistryRoot {
    REGISTRY_ROOT_UNSPECIFIED = 0;
    REGISTRY_ROOT_LOCAL_MACHINE = 1;
    REGISTRY_ROOT_USERS = 2;
    REGISTRY_ROOT_CLASSES = 3;
    REGISTRY_ROOT_CURRENT_USER = 4;
  }

  enum RegistryAccess {
    REGISTRY_ACCESS_UNSPECIFIED = 0;
    REGISTRY_ACCESS_WOW64_32 = 1;
    REGISTRY_ACCESS_WOW64_64 = 2;
  }

  optional RegistryFootprintType type = 1;
  optional RegistryRoot root = 2;
  optional string path = 3;
  optional string value_name = 4;
  optional bytes content = 5;
  optional RegistryAccess access = 6;
}

message DiskFootprint {
  enum DiskFootprintType {
    DISK_TYPE_UNSPECIFIED = 0;
    DISK_TYPE_FILE = 1;
    DISK_TYPE_DIRECTORY = 2;
  }

  enum DiskRoot {
    DISK_ROOT_UNSPECIFIED = 0;
    DISK_ROOT_ABSOLUTE_PATH = 1;
    DISK_ROOT_APPDATA = 2;
    DISK_ROOT_COMMON_APPDATA = 3;
    DISK_ROOT_LOCAL_APPDATA = 4;
    DISK_ROOT_DESKTOP = 5;
    DISK_ROOT_PROGRAM_FILES = 6;
    DISK_ROOT_PROGRAM_FILESX86 = 7;
    DISK_ROOT_PROGRAM_FILES_COMMON = 8;
    DISK_ROOT_PROGRAM_FILES_COMMONX86 = 9;
    DISK_ROOT_STARTUP = 10;
    DISK_ROOT_STARTMENU = 11;
    DISK_ROOT_SYSTEM = 12;
    DISK_ROOT_WINDOWS = 13;
    DISK_ROOT_PROGRAM_FILES6432 = 14;
    DISK_ROOT_PROGRAM_FILES_COMMON6432 = 15;
    DISK_ROOT_SYSNATIVE = 16;
  }

  enum DiskContentType {
    DISK_CONTENT_TYPE_UNSPECIFIED = 0;
    DISK_CONTENT_TYPE_STRING = 1;
    DISK_CONTENT_TYPE_ARCHIVE = 2;
  }

  optional DiskFootprintType type = 1;
  optional DiskRoot root = 2;
  optional string path = 3;
  optional bytes content = 4;
  optional DiskContentType content_type = 5;
}

message Snapshot {
  optional string name = 1;

  repeated DiskFootprint disk_footprints = 2;
  repeated RegistryFootprint registry_footprints = 3;
  optional bytes archive = 4;
}
