// 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";

import "shared_pup_enums.proto";

option optimize_for = LITE_RUNTIME;

package chrome_cleaner;

// A single file footprint used to identify UwS.
//
// Next tag: 4.
message StaticDiskFootprint {
  optional int32 csidl = 1;
  optional string path = 2;
  // The expanded path includes the string form of the csidl.
  optional string expanded_path = 3;
}

// A single registry footprint used to identify UwS.
//
// Next tag: 7.
message StaticRegistryFootprint {
  optional RegistryRoot registry_root = 1;
  optional string key_path = 2;
  // The expanded key path includes the string form of the registry root.
  optional string expanded_key_path = 5;
  optional string value_name = 3;
  optional string value_substring = 4;
  optional RegistryMatchRule rule = 6;
}

// Data for each UwS reported or removed by the given cleaner version.
//
// FoilUwSData is a legacy name that must be kept because existing analysis
// tools use it.
//
// Next tag: 7.
message FoilUwSData {
  // Deprecated observed_behaviors, removed after 29.157.
  reserved 6;

  // Attributes applied to UwS.
  enum Attribute {
    FLAGS_NONE = 0;
    // Used when an UwS should be removed, otherwise it is only reported.
    FLAGS_ACTION_REMOVE = 1;
    // Used when an UwS should always be removed post-reboot, even when the
    // Restart Manager doesn't think a reboot is needed.
    FLAGS_REMOVAL_FORCE_REBOOT = 2;
    // When the UwS is detected activate the detailed system report.
    FLAGS_DETAILED_REPORT = 4;
    // Used for UwS that interfere with the prompt, so we don't want to report
    // that a cleanup can be done when they are present. This only affects the
    // reporter, not the removal tool.
    FLAGS_INHIBIT_REPORTING = 8;
    // Used for UwS that interfere with the cleaner, so we don't want to offer
    // a removal to the user when they are present. This affects both the
    // reporter and the removal tool.
    FLAGS_INHIBIT_REMOVAL = 16;
    // The UwS behavior has been confirmed/observed and the UwS is
    // breaking our UwS policies.
    FLAGS_STATE_CONFIRMED_UWS = 32;
    // The following values have been deprecated.
    DEPRECATED_FLAGS_CATEGORY_MALWARE = 64;
    DEPRECATED_FLAGS_CATEGORY_BROWSER_HIJACKER = 128;
    DEPRECATED_FLAGS_CATEGORY_EXTENSIONS_INJECTOR = 256;
    DEPRECATED_FLAGS_CATEGORY_ADS_INJECTOR = 512;
    DEPRECATED_FLAGS_CATEGORY_SCAREWARE = 1024;
  }

  optional int32 id = 1;
  optional string name = 2;
  repeated Attribute attributes = 3;
  repeated StaticDiskFootprint disk_footprints = 4;
  repeated StaticRegistryFootprint registry_footprints = 5;
}

// Specifies all UwS recognized by a given version of the reporter or cleaner.
//
// FoilVersionSpec is a legacy name that must be kept because existing analysis
// tools use it.
//
// Next tag: 3.
message FoilVersionSpec {
  optional string version = 1;
  repeated FoilUwSData uws = 2;
}

// Format for version-UwS association config file.
//
// UwSSpecByFoilVersion is a legacy name that must be kept because existing
// analysis tools use it.
//
// Next tag: 2.
message UwSSpecByFoilVersion {
  repeated FoilVersionSpec foil_versions = 1;
}
