chromium/components/safe_browsing/content/common/proto/download_file_types.proto

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

syntax = "proto2";

option optimize_for = LITE_RUNTIME;

package safe_browsing;

// See //components/safe_browsing/content/resources/README.md for guidelines
// on how to set fields in this file.

// Next id: 7
message DownloadFileType {
  optional string extension = 1;  // required, except in default_file_type.
  optional int64 uma_value = 2;   // required
  optional bool is_archive = 3 [default = false];

  enum PingSetting {
    SAMPLED_PING = 0;
    NO_PING = 1;
    FULL_PING = 2;
  }
  optional PingSetting ping_setting = 4;  // required

  enum DangerLevel {
    NOT_DANGEROUS = 0;
    ALLOW_ON_USER_GESTURE = 1;
    DANGEROUS = 2;
  }

  enum AutoOpenHint {
    DISALLOW_AUTO_OPEN = 0;
    ALLOW_AUTO_OPEN = 1;
  }

  enum PlatformType {
    PLATFORM_TYPE_ANY = 0;
    PLATFORM_TYPE_ANDROID = 1;
    PLATFORM_TYPE_CHROME_OS = 2;
    PLATFORM_TYPE_LINUX = 3;
    PLATFORM_TYPE_MAC = 4;
    PLATFORM_TYPE_WINDOWS = 5;
    // Deprecated: PLATFORM_TYPE_FUCHSIA = 6;
  }

  // Next id: 6
  message PlatformSettings {
    optional PlatformType platform = 1 [default = PLATFORM_TYPE_ANY];
    optional DangerLevel danger_level = 2;     // required
    optional AutoOpenHint auto_open_hint = 3;  // required
    optional uint64 max_file_size_to_analyze = 4
        [default = 18446744073709551615];  // (2^64)-1]

    // `file_weight` determines how likely the given file type is to be included
    // in a ping to Safe Browsing when downloading an archive.
    optional int64 file_weight = 5;
  };

  // Protos parsed by Chrome should have exactly one entry here.
  repeated PlatformSettings platform_settings = 5;

  // The type of file content inspection we should do, if any.
  enum InspectionType {
    NONE = 0;
    ZIP = 1;
    RAR = 2;
    DMG = 3;
    // Deprecated: OFFICE_DOCUMENT = 4;
    SEVEN_ZIP = 5;
  }
  optional InspectionType inspection_type = 6;
};

// Next id: 6
message DownloadFileTypeConfig {
  // All required
  optional uint32 version_id = 1;
  optional float sampled_ping_probability = 2;
  repeated DownloadFileType file_types = 3;
  optional DownloadFileType default_file_type = 4;

  // Limits on repeated fields in the ClientDownloadRequest (i.e. the
  // download ping). Limits are per-ping.
  optional uint64 max_archived_binaries_to_report = 5;
}