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

# This file includes the violations of IDL files which are ignored
# when Web IDL validator runs.
# validator: third_party/blink/renderer/bindings/scripts/validator
#
# The line starting with "#" is regarded as a comment.
#
# Line format is:
#     RULE_NAME DOTTED_IDL_NAME
# where
#     RULE_NAME is the name of a rule class which inherits
#         validator.framework.RuleBase. Each rule class is defined in
#         third_party/blink/renderer/bindings/scripts/validator/rules.
#     DOTTED_IDL_NAME is a string made by connecting identifiers of
#         IDL fragments with a period.
#
# Example:
#     When an argument 'name' of operation 'get' in an interface 'MyInterface'
#     violates a rule 'MyRule':
#     MyRule MyInterface.get.name
