chromium/chrome/browser/permissions/crowd_deny.proto

// Copyright 2019 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 chrome_browser_crowd_deny;

// Information, about a specific site, relevant for making permission decisions.
message SiteReputation {
  // The domain of the site this records describes.
  optional string domain = 1;

  // The quality of the experience users have with notifications on a site.
  enum NotificationUserExperienceQuality {
    UNKNOWN = 0;
    ACCEPTABLE = 1;
    UNSOLICITED_PROMPTS = 2;
    ABUSIVE_PROMPTS = 3;  // Supported as of M84.
    ABUSIVE_CONTENT = 4;  // Supported as of M85.
    DISRUPTIVE_BEHAVIOR = 5;
  }

  // The quality of the experience users have with notifications on this site.
  optional NotificationUserExperienceQuality notification_ux_quality = 2;

  // Whether the reputation propagates to all subdomains of |domain|. Supported
  // as of M84. Older versions will always perform exact domain matching.
  optional bool include_subdomains = 3;

  // Whether to merely print a console warning and not enforce. Supported as of
  // M84. Older versions will always enforce if |notification_ux_quality| is
  // set to a value recognized by the version, other than `ACCEPTABLE`.
  optional bool warning_only = 4;
}

// Information, about popular sites, relevant for making permission decisions.
//
// The preloaded list contains reputation data for popular sites, and is
// distributed to Chrome clients ahead of time through the component updater as
// part of the `crowd_deny_crx` component extension. The CRX package contains a
// single file with a single instance of this message in the binary wire format.
message PreloadData {
  // Site reputation information for popular sites. Unsorted.
  repeated SiteReputation site_reputations = 1;
}