blob: ff6a0a5bcacdbea2fc3c1c21e6d9470dc6e0bc61 [file] [log] [blame]
// Copyright 2017 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.
// Based on the grammar provided here: https://goo.gl/svLze7
// Most top level definitions here (mostly messages, but also the enum "h", is
// named after a rule or token in the grammar. The messages that aren't were
// implemented to hack around shortcomings in the protobuf format (such as
// "StringCharOrQuote"). These can be identified because they are preceded by
// a comment that says "Not in grammar".
syntax = "proto2";
package css_proto_converter;
// Tokens
// TODO(metzman): Implement CDO, CDC, UNICODERANGE, and range.
// The following tokens are implmented in code and do not have their own
// message: INCLUDES, DASHMATCH, HASH, STRING IMPORT_SYM, PAGE_SYM, MEDIA_SYM,
// FONT_FACE_SYM, CHARSET_SYM, NAMESPACE_SYM, IMPORTANT_SYM, EMS, EXS, NUMBER,
// and PERCENTAGE.
// DIMEN not implemented since it isnt used in any production.
// This is named "h" because it represents the "h" token in the grammar this is
// based off of.
enum H {
ZERO = 48;
ONE = 49;
TWO = 50;
THREE = 51;
FOUR = 52;
FIVE = 53;
SIX = 54;
SEVEN = 55;
EIGHT = 56;
NINE = 57;
A_UPPER = 65;
B_UPPER = 66;
C_UPPER = 67;
D_UPPER = 68;
E_UPPER = 69;
F_UPPER = 70;
A_LOWER = 97;
B_LOWER = 98;
C_LOWER = 99;
D_LOWER = 100;
E_LOWER = 101;
F_LOWER = 102;
}
// TODO(metzman): Add "nonascii" token from grammar.
message Unicode {
required H ascii_value_1 = 1;
optional H ascii_value_2 = 2;
optional H ascii_value_3 = 3;
optional H ascii_value_4 = 4;
optional H ascii_value_5 = 5;
optional H ascii_value_6 = 6;
optional UnrepeatedW unrepeated_w = 7;
}
// unicode | '\' [#x20-#x7E#x80-#xD7FF#xE000-#xFFFD#x10000-#x10FFFF]
message Escape {
// #x20-#x7E
enum AsciiValue {
SPACE = 32;
EXCLAMATION_POINT = 33;
DOUBLE_QUOTE = 34;
HASH = 35;
DOLLAR = 36;
PERCENT = 37;
AMPERSAND = 38;
APOSTROPHE = 39;
OPEN_PAREN = 40;
CLOSE_PAREN = 41;
STAR = 42;
PLUS = 43;
COMMA = 44;
MINUS = 45;
DOT = 46;
SLASH = 47;
ZERO = 48;
ONE = 49;
TWO = 50;
THREE = 51;
FOUR = 52;
FIVE = 53;
SIX = 54;
SEVEN = 55;
EIGHT = 56;
NINE = 57;
COLON = 58;
SEMI_COLON = 59;
LESS_THAN = 60;
EQUAL = 61;
GREATER_THAN = 62;
QUESTION = 63;
AT_SIGN = 64;
A_UPPER = 65;
B_UPPER = 66;
C_UPPER = 67;
D_UPPER = 68;
E_UPPER = 69;
F_UPPER = 70;
G_UPPER = 71;
H_UPPER = 72;
I_UPPER = 73;
J_UPPER = 74;
K_UPPER = 75;
L_UPPER = 76;
M_UPPER = 77;
N_UPPER = 78;
O_UPPER = 79;
P_UPPER = 80;
Q_UPPER = 81;
R_UPPER = 82;
S_UPPER = 83;
T_UPPER = 84;
U_UPPER = 85;
V_UPPER = 86;
W_UPPER = 87;
X_UPPER = 88;
Y_UPPER = 89;
Z_UPPER = 90;
OPEN_BRACKET = 91;
BACKSLASH = 92;
CLOSE_BRACKET = 93;
CARET = 94;
UNDERSCORE = 95;
BACKTICK = 96;
A_LOWER = 97;
B_LOWER = 98;
C_LOWER = 99;
D_LOWER = 100;
E_LOWER = 101;
F_LOWER = 102;
G_LOWER = 103;
H_LOWER = 104;
I_LOWER = 105;
J_LOWER = 106;
K_LOWER = 107;
L_LOWER = 108;
M_LOWER = 109;
N_LOWER = 110;
O_LOWER = 111;
P_LOWER = 112;
Q_LOWER = 113;
R_LOWER = 114;
S_LOWER = 115;
T_LOWER = 116;
U_LOWER = 117;
V_LOWER = 118;
W_LOWER = 119;
X_LOWER = 120;
Y_LOWER = 121;
Z_LOWER = 122;
OPEN_CURLY_BRACE = 123;
PIPE = 124;
CLOSE_CURLY_BRACE_ = 125;
TILDE = 126;
}
oneof rhs {
Unicode unicode = 1;
AsciiValue ascii_value = 2;
}
// TODO(metzman): Determine if we care about unicode points not covered here.
}
message Nmstart {
enum AsciiValue {
A_UPPER = 65;
B_UPPER = 66;
C_UPPER = 67;
D_UPPER = 68;
E_UPPER = 69;
F_UPPER = 70;
G_UPPER = 71;
H_UPPER = 72;
I_UPPER = 73;
J_UPPER = 74;
K_UPPER = 75;
L_UPPER = 76;
M_UPPER = 77;
N_UPPER = 78;
O_UPPER = 79;
P_UPPER = 80;
Q_UPPER = 81;
R_UPPER = 82;
S_UPPER = 83;
T_UPPER = 84;
U_UPPER = 85;
V_UPPER = 86;
W_UPPER = 87;
X_UPPER = 88;
Y_UPPER = 89;
Z_UPPER = 90;
A_LOWER = 97;
B_LOWER = 98;
C_LOWER = 99;
D_LOWER = 100;
E_LOWER = 101;
F_LOWER = 102;
G_LOWER = 103;
H_LOWER = 104;
I_LOWER = 105;
J_LOWER = 106;
K_LOWER = 107;
L_LOWER = 108;
M_LOWER = 109;
N_LOWER = 110;
O_LOWER = 111;
P_LOWER = 112;
Q_LOWER = 113;
R_LOWER = 114;
S_LOWER = 115;
T_LOWER = 116;
U_LOWER = 117;
V_LOWER = 118;
W_LOWER = 119;
X_LOWER = 120;
Y_LOWER = 121;
Z_LOWER = 122;
}
oneof rhs {
AsciiValue ascii_value = 1;
Escape escape = 2;
// TODO(metzman): Add nonascii token once (if) I implement it.
}
}
message Nmchar {
enum AsciiValue {
MINUS = 45;
ZERO = 48;
ONE = 49;
TWO = 50;
THREE = 51;
FOUR = 52;
FIVE = 53;
SIX = 54;
SEVEN = 55;
EIGHT = 56;
NINE = 57;
A_UPPER = 65;
B_UPPER = 66;
C_UPPER = 67;
D_UPPER = 68;
E_UPPER = 69;
F_UPPER = 70;
G_UPPER = 71;
H_UPPER = 72;
I_UPPER = 73;
J_UPPER = 74;
K_UPPER = 75;
L_UPPER = 76;
M_UPPER = 77;
N_UPPER = 78;
O_UPPER = 79;
P_UPPER = 80;
Q_UPPER = 81;
R_UPPER = 82;
S_UPPER = 83;
T_UPPER = 84;
U_UPPER = 85;
V_UPPER = 86;
W_UPPER = 87;
X_UPPER = 88;
Y_UPPER = 89;
Z_UPPER = 90;
A_LOWER = 97;
B_LOWER = 98;
C_LOWER = 99;
D_LOWER = 100;
E_LOWER = 101;
F_LOWER = 102;
G_LOWER = 103;
H_LOWER = 104;
I_LOWER = 105;
J_LOWER = 106;
K_LOWER = 107;
L_LOWER = 108;
M_LOWER = 109;
N_LOWER = 110;
O_LOWER = 111;
P_LOWER = 112;
Q_LOWER = 113;
R_LOWER = 114;
S_LOWER = 115;
T_LOWER = 116;
U_LOWER = 117;
V_LOWER = 118;
W_LOWER = 119;
X_LOWER = 120;
Y_LOWER = 121;
Z_LOWER = 122;
}
oneof rhs {
AsciiValue ascii_value = 1;
Escape escape = 2;
// TODO(metzman): Add nonascii token once (if) I implement it.
}
}
// string1, string2 and string
message String {
// TODO(metzman): determine if these hacks are more efficient than enforcing
// constraints on string types in the actual code.
required bool use_single_quotes = 1;
repeated StringCharOrQuote string_char_quotes = 2;
}
// Not in grammar.
message StringCharOrQuote {
enum QuoteChar {
UNSET = 0;
IS_SET = 1;
}
oneof rhs {
StringChar string_char = 2;
QuoteChar quote_char = 1;
}
}
message StringChar {
enum Space {
UNSET = 0;
IS_SET = 1;
}
oneof rhs {
UrlChar url_char = 1;
Space space = 2;
// '\' nl
Nl nl = 3;
}
}
message Ident {
optional bool starting_minus = 1 [default = false]; // -
required Nmstart nmstart = 2;
repeated Nmchar nmchars = 3;
}
message Num {
required sint64 signed_int_value = 1;
optional float float_value = 2;
}
message UrlChar {
enum AsciiValue {
NUL = 0;
// #x9
HT = 9;
// #x21
EXCLAMATION_POINT = 33;
// #x23-#x26
HASH = 35;
DOLLAR = 36;
PERCENT = 37;
AMPERSAND = 38;
// #x26-#x27
APOSTROPHE = 39;
OPEN_PAREN = 40;
CLOSE_PAREN = 41;
STAR = 42;
PLUS = 43;
COMMA = 44;
MINUS = 45;
DOT = 46;
SLASH = 47;
ZERO = 48;
ONE = 49;
TWO = 50;
THREE = 51;
FOUR = 52;
FIVE = 53;
SIX = 54;
SEVEN = 55;
EIGHT = 56;
NINE = 57;
COLON = 58;
SEMI_COLON = 59;
LESS_THAN = 60;
EQUAL = 61;
GREATER_THAN = 62;
QUESTION = 63;
AT_SIGN = 64;
A_UPPER = 65;
B_UPPER = 66;
C_UPPER = 67;
D_UPPER = 68;
E_UPPER = 69;
F_UPPER = 70;
G_UPPER = 71;
H_UPPER = 72;
I_UPPER = 73;
J_UPPER = 74;
K_UPPER = 75;
L_UPPER = 76;
M_UPPER = 77;
N_UPPER = 78;
O_UPPER = 79;
P_UPPER = 80;
Q_UPPER = 81;
R_UPPER = 82;
S_UPPER = 83;
T_UPPER = 84;
U_UPPER = 85;
V_UPPER = 86;
W_UPPER = 87;
X_UPPER = 88;
Y_UPPER = 89;
Z_UPPER = 90;
OPEN_BRACKET = 91;
BACKSLASH = 92;
CLOSE_BRACKET = 93;
CARET = 94;
UNDERSCORE = 95;
BACKTICK = 96;
A_LOWER = 97;
B_LOWER = 98;
C_LOWER = 99;
D_LOWER = 100;
E_LOWER = 101;
F_LOWER = 102;
G_LOWER = 103;
H_LOWER = 104;
I_LOWER = 105;
J_LOWER = 106;
K_LOWER = 107;
L_LOWER = 108;
M_LOWER = 109;
N_LOWER = 110;
O_LOWER = 111;
P_LOWER = 112;
Q_LOWER = 113;
R_LOWER = 114;
S_LOWER = 115;
T_LOWER = 116;
U_LOWER = 117;
V_LOWER = 118;
W_LOWER = 119;
X_LOWER = 120;
Y_LOWER = 121;
Z_LOWER = 122;
OPEN_CURLY_BRACE = 123;
PIPE = 124;
CLOSE_CURLY_BRACE_ = 125;
TILDE = 126;
}
oneof rhs {
AsciiValue ascii_value = 1;
Escape escape = 2;
// TODO(metzman): Support nonascii tokens.
}
}
message W {
repeated UnrepeatedW unrepeated_w = 1;
}
// Not in grammar
message UnrepeatedW {
enum AsciiValue {
// #x9 ('\t')
HT = 9;
// #xA ('\n')
LF = 10;
// #xC ('\f')
FF = 12;
// #xD ('\r')
CR = 13;
// #x20 (' ')
SPACE = 32;
}
required AsciiValue ascii_value = 1;
}
message Nl {
enum NewlineKind {
// #xA ('\n')
LF = 10;
// #xD #xA ('\r\n') Pseudo value, since we don't need SOH
CR_LF = 1;
// #xD ('\r')
CR = 13;
// #xC ('\f')
FF = 12;
}
required NewlineKind newline_kind = 1;
}
// {num}[px|cm|mm|in|pt|pc]
message Length {
enum Unit {
PX = 1;
CM = 2;
MM = 3;
IN = 4;
PT = 5;
PC = 6;
}
required Num num = 1;
required Unit unit = 2;
}
// {num}[deg|rad|grad]
message Angle {
enum Unit {
DEG = 1;
RAD = 2;
GRAD = 3;
}
required Num num = 1;
required Unit unit = 2;
}
// {num}[ms|s]
message Time {
enum Unit {
MS = 1;
S = 2;
}
required Num num = 1;
required Unit unit = 2;
}
// {num}[Hz|kHz]
message Freq {
enum Unit {
// Hack around build bug since some system header #defines HZ.
_HZ = 1;
KHZ = 2;
}
required Num num = 1;
required Unit unit = 2;
}
message Uri {
// "url(" w (string | url* ) w ")"
// TODO(metzman): Add url token once (if) I implement it.
// optional String value = 1;
}
// FUNCTION. Not named Function to avoid conflict.
message FunctionToken {
required Ident ident = 1;
}
// end tokens
// rules
// TODO(metzman): Add rules for @keyframes (including
// -webkit-keyframes), and @supports.
message StyleSheet {
optional CharsetDeclaration charset_declaration = 1;
repeated Import imports = 2;
repeated Namespace namespaces = 3;
repeated NestedAtRule nested_at_rules = 4;
}
// Not in grammar.
message CharsetDeclaration {
enum EncodingId {
UTF_8 = 1;
UTF_16 = 2;
UTF_32 = 3;
}
required EncodingId encoding_id = 1;
}
// Not in grammar.
message NestedAtRule {
oneof rhs {
Ruleset ruleset = 1;
Media media = 2;
Page page = 3;
FontFace font_face = 4;
Viewport viewport = 5;
SupportsRule supports_rule = 6;
}
}
message SupportsRule {
required SupportsCondition supports_condition = 1;
repeated AtRuleOrRulesets at_rule_or_rulesets = 2;
}
message AtRuleOrRulesets {
required AtRuleOrRuleset first = 1;
repeated AtRuleOrRuleset laters = 2;
}
message AtRuleOrRuleset {
required Ruleset ruleset = 1;
optional NestedAtRule at_rule = 2;
}
message SupportsCondition {
// Using PropertyAndValue rather than declaration means that there
// will always be a declaration. This is syntactically correct but
// means we may miss some error paths.
// TODO(metzman): Figure out what to do about generating invalid output that
// causes more coverage. Maybe doing so infrequently is the correct move.
required PropertyAndValue property_and_value = 1; // Default.
// TODO(metzman): Do functions also need to be supported?
required bool not_condition = 2;
oneof rhs {
BinarySupportsCondition and_supports_condition = 3;
BinarySupportsCondition or_supports_condition = 4;
}
}
message BinarySupportsCondition {
required SupportsCondition condition_1 = 1;
required SupportsCondition condition_2 = 2;
}
message Viewport {
repeated ViewportPropertyAndValue properties_and_values = 1;
}
message ViewportPropertyAndValue {
required ViewportProperty property = 1;
required ViewportValue value = 2;
}
message ViewportProperty {
enum PropertyId {
MIN_WIDTH = 1;
MAX_WIDTH = 2;
WIDTH = 3;
MIN_HEIGHT = 4;
MAX_HEIGHT = 5;
HEIGHT = 6;
ZOOM = 7;
MIN_ZOOM = 8;
USER_ZOOM = 9;
MAX_ZOOM = 10;
ORIENTATION = 11;
}
required PropertyId id = 1;
}
message ViewportValue {
enum ValueId {
LANDSCAPE = 1;
PORTRAIT = 2;
AUTO = 3;
ZOOM = 4;
FIXED = 5;
NONE = 6;
}
required ValueId value_id = 1;
oneof rhs {
Length length = 2;
Num num = 3;
}
}
message Import {
enum SrcId {
RELATIVE_STRING = 1;
FULL_URL = 2;
}
optional SrcId src_id = 1;
optional MediaQueryList media_query_list = 2;
}
// Media based on https://developer.mozilla.org/en-US/docs/Web/CSS/@media
message MediaQueryList {
repeated MediaQuery media_queries = 1;
}
message MediaQuery {
required MediaCondition media_condition = 1;
optional MediaQueryPartTwo media_query_part_two = 2;
}
// Not in spec.
message MediaQueryPartTwo {
enum NotOrOnly {
NOT = 1;
ONLY = 2;
}
optional NotOrOnly not_or_only = 1;
required MediaType media_type = 2;
optional MediaConditionWithoutOr media_condition_without_or = 3;
}
message MediaConditionWithoutOr {
required MediaNot media_not = 1;
oneof rhs {
MediaAnd media_and = 2;
MediaInParens media_in_parens = 3;
}
}
message MediaCondition {
required MediaAnd media_and = 1;
oneof rhs {
MediaNot media_not = 2;
MediaOr media_or = 3;
MediaInParens media_in_parens = 4;
}
}
message MediaType {
enum ValueId {
ALL = 1;
BRAILLE = 2;
EMBOSSED = 3;
HANDHELD = 4;
PRINT = 5;
PROJECTION = 6;
SCREEN = 7;
SPEECH = 8;
TTY = 9;
TV = 10;
INVALID_MEDIA_TYPE = 11;
}
required ValueId value_id = 1;
}
message MediaNot {
required MediaInParens media_in_parens = 1;
}
message MediaAnd {
required MediaInParens first_media_in_parens = 1;
required MediaInParens second_media_in_parens = 2;
repeated MediaInParens media_in_parens_list = 3;
}
message MediaOr {
required MediaInParens first_media_in_parens = 1;
required MediaInParens second_media_in_parens = 2;
repeated MediaInParens media_in_parens_list = 3;
}
message MediaInParens {
required MediaFeature media_feature = 1;
optional MediaCondition media_condition = 2;
}
message MediaFeature {
required MfPlain mf_plain = 1;
optional MfBool mf_bool = 2;
// TODO(metzman): Implement <mf-range>
}
// TODO(metzman): implement <general-enclosed>
message MfPlain {
required MfName property = 1;
required MfValue value = 2;
}
message MfBool {
required MfName mf_name = 1;
}
message MfName {
enum ValueId {
ANY_HOVER = 1;
ANY_POINTER = 2;
COLOR = 3;
COLOR_INDEX = 4;
COLOR_GAMUT = 5;
GRID = 6;
MONOCHROME = 7;
HEIGHT = 8;
HOVER = 9;
WIDTH = 10;
ORIENTATION = 11;
ASPECT_RATIO = 12;
DEVICE_ASPECT_RATIO = 13;
_WEBKIT_DEVICE_PIXEL_RATIO = 14;
DEVICE_HEIGHT = 15;
DEVICE_WIDTH = 16;
DISPLAY_MODE = 17;
MAX_COLOR = 18;
MAX_COLOR_INDEX = 19;
MAX_ASPECT_RATIO = 20;
MAX_DEVICE_ASPECT_RATIO = 21;
_WEBKIT_MAX_DEVICE_PIXEL_RATIO = 22;
MAX_DEVICE_HEIGHT = 23;
MAX_DEVICE_WIDTH = 24;
MAX_HEIGHT = 25;
MAX_MONOCHROME = 26;
MAX_WIDTH = 27;
MAX_RESOLUTION = 28;
MIN_COLOR = 29;
MIN_COLOR_INDEX = 30;
MIN_ASPECT_RATIO = 31;
MIN_DEVICE_ASPECT_RATIO = 32;
_WEBKIT_MIN_DEVICE_PIXEL_RATIO = 33;
MIN_DEVICE_HEIGHT = 34;
MIN_DEVICE_WIDTH = 35;
MIN_HEIGHT = 36;
MIN_MONOCHROME = 37;
MIN_WIDTH = 38;
MIN_RESOLUTION = 39;
POINTER = 40;
RESOLUTION = 41;
_WEBKIT_TRANSFORM_3D = 42;
SCAN = 43;
SHAPE = 44;
IMMERSIVE = 45;
INVALID_NAME = 46;
}
required ValueId id = 1;
}
message MfValue {
required Num num = 1;
oneof rhs {
Length length = 2; // Called <dimension> on developer.mozilla.org
Ident ident = 3;
// TODO(metzman) implement <mf-range>
}
}
message Namespace {
optional NamespacePrefix namespace_prefix = 1;
oneof rhs {
String string = 2;
Uri uri = 3;
}
}
// TODO(metzman): Determine if this is unnecessary.
message NamespacePrefix {
required Ident ident = 1;
}
message Media {
required MediaQueryList media_query_list = 1;
repeated Ruleset rulesets = 2;
}
message Page {
optional Ident ident = 1;
optional PseudoPage pseudo_page = 2;
required DeclarationList declaration_list = 3;
}
// Not in grammar.
message DeclarationList {
required Declaration first_declaration = 1;
repeated Declaration later_declarations = 2;
}
// TODO(metzman): Determine if this is unnecessary.
message PseudoPage {
required Ident ident = 1;
}
message FontFace {
// required DeclarationList declaration_list = 1;
// https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face#Formal_syntax
// repeated FontFaceContents font_face_contents = 1;
}
message Operator {
enum AsciiValue {
COMMA = 44;
SLASH = 47;
}
optional AsciiValue ascii_value = 1;
}
message UnaryOperator {
enum AsciiValue {
PLUS = 43;
MINUS = 45;
}
required AsciiValue ascii_value = 1;
}
// TODO(metzman): Determine if this is unnecessary.
message Property {
enum NameId {
ALL = 1;
_WEBKIT_ANIMATION_ITERATION_COUNT = 2;
FONT_FEATURE_SETTINGS = 3;
_WEBKIT_TEXT_EMPHASIS_POSITION = 4;
_WEBKIT_TEXT_EMPHASIS_STYLE = 5;
GRID_TEMPLATE_ROWS = 6;
TEXT_UNDERLINE_POSITION = 7;
_WEBKIT_FLEX_GROW = 8;
SCROLL_MARGIN_RIGHT = 9;
_WEBKIT_COLUMN_RULE = 10;
_WEBKIT_ORDER = 11;
GRID_ROW_GAP = 12;
BACKDROP_FILTER = 13;
FONT_VARIANT_EAST_ASIAN = 14;
BUFFERED_RENDERING = 15;
_WEBKIT_APPEARANCE = 16;
OUTLINE_WIDTH = 17;
ALIGNMENT_BASELINE = 18;
_WEBKIT_FLEX_FLOW = 19;
COLUMN_RULE = 20;
GRID_COLUMN_GAP = 21;
_WEBKIT_BORDER_AFTER = 22;
_WEBKIT_COLUMN_BREAK_INSIDE = 23;
_WEBKIT_SHAPE_OUTSIDE = 24;
_WEBKIT_PRINT_COLOR_ADJUST = 25;
LIST_STYLE_TYPE = 26;
PAGE_BREAK_BEFORE = 27;
FLOOD_COLOR = 28;
TEXT_ANCHOR = 29;
_WEBKIT_PADDING_START = 30;
_WEBKIT_USER_SELECT = 31;
_WEBKIT_COLUMN_RULE_COLOR = 32;
PADDING_LEFT = 33;
_WEBKIT_BACKFACE_VISIBILITY = 34;
_WEBKIT_MARGIN_BEFORE = 35;
BREAK_INSIDE = 36;
COLUMN_COUNT = 37;
_WEBKIT_LOGICAL_HEIGHT = 38;
PERSPECTIVE = 39;
MAX_BLOCK_SIZE = 40;
_WEBKIT_ANIMATION_PLAY_STATE = 41;
BORDER_IMAGE_REPEAT = 42;
_WEBKIT_FONT_SIZE_DELTA = 43;
SCROLL_PADDING_BOTTOM = 44;
BORDER_RIGHT_STYLE = 45;
BORDER_LEFT_STYLE = 46;
SCROLL_MARGIN_BLOCK = 47;
FLEX_FLOW = 48;
OUTLINE_COLOR = 49;
FLEX_GROW = 50;
MAX_WIDTH = 51;
GRID_COLUMN = 52;
IMAGE_ORIENTATION = 53;
ANIMATION_DURATION = 54;
_WEBKIT_COLUMNS = 55;
_WEBKIT_BOX_FLEX_GROUP = 56;
_WEBKIT_ANIMATION_DELAY = 57;
_EPUB_TEXT_EMPHASIS = 58;
FLEX_SHRINK = 59;
TEXT_RENDERING = 60;
ALIGN_ITEMS = 61;
BORDER_COLLAPSE = 62;
OFFSET = 63;
TEXT_COMBINE_UPRIGHT = 64;
_WEBKIT_MASK_POSITION_X = 65;
_WEBKIT_MASK_POSITION_Y = 66;
OUTLINE_STYLE = 67;
_WEBKIT_MARGIN_BOTTOM_COLLAPSE = 68;
COLOR_INTERPOLATION_FILTERS = 69;
FONT_VARIANT = 70;
_WEBKIT_ANIMATION_FILL_MODE = 71;
BORDER_RIGHT = 72;
VISIBILITY = 73;
TRANSFORM_BOX = 74;
FONT_VARIANT_CAPS = 75;
_EPUB_TEXT_EMPHASIS_COLOR = 76;
_WEBKIT_BORDER_BEFORE_STYLE = 77;
RESIZE = 78;
_WEBKIT_RTL_ORDERING = 79;
_WEBKIT_BOX_ORDINAL_GROUP = 80;
PAINT_ORDER = 81;
STROKE_LINECAP = 82;
ANIMATION_DIRECTION = 83;
_WEBKIT_FONT_FEATURE_SETTINGS = 84;
BORDER_TOP_LEFT_RADIUS = 85;
_WEBKIT_COLUMN_WIDTH = 86;
_WEBKIT_BOX_ALIGN = 87;
_WEBKIT_PADDING_AFTER = 88;
COLUMN_WIDTH = 89;
LIST_STYLE = 90;
_WEBKIT_MASK_REPEAT_Y = 91;
_WEBKIT_MARGIN_BEFORE_COLLAPSE = 92;
STROKE = 93;
TEXT_DECORATION_LINE = 94;
_WEBKIT_BACKGROUND_SIZE = 95;
_WEBKIT_MASK_REPEAT_X = 96;
PADDING_BOTTOM = 97;
FONT_STYLE = 98;
_WEBKIT_TRANSITION_DELAY = 99;
BACKGROUND_REPEAT = 100;
FLEX_BASIS = 101;
BORDER_IMAGE_SLICE = 102;
_WEBKIT_TRANSFORM_ORIGIN = 103;
OVERSCROLL_BEHAVIOR_X = 104;
OVERSCROLL_BEHAVIOR_Y = 105;
VECTOR_EFFECT = 106;
_WEBKIT_ANIMATION_TIMING_FUNCTION = 107;
_WEBKIT_BORDER_AFTER_STYLE = 108;
_WEBKIT_PERSPECTIVE_ORIGIN_X = 109;
_WEBKIT_PERSPECTIVE_ORIGIN_Y = 110;
INLINE_SIZE = 111;
OUTLINE = 112;
FONT_DISPLAY = 113;
_WEBKIT_BORDER_BEFORE = 114;
BORDER_IMAGE_SOURCE = 115;
TRANSITION_DURATION = 116;
SCROLL_PADDING_TOP = 117;
ORDER = 118;
_WEBKIT_BOX_ORIENT = 119;
COUNTER_RESET = 120;
COLOR_RENDERING = 121;
FLEX_DIRECTION = 122;
_WEBKIT_TEXT_STROKE_WIDTH = 123;
FONT_VARIANT_NUMERIC = 124;
SCROLL_MARGIN_BLOCK_END = 125;
MIN_HEIGHT = 126;
SCROLL_PADDING_INLINE_START = 127;
_WEBKIT_MASK_BOX_IMAGE = 128;
LEFT = 129;
_WEBKIT_MASK = 130;
_WEBKIT_BORDER_AFTER_WIDTH = 131;
STROKE_WIDTH = 132;
_WEBKIT_BOX_DECORATION_BREAK = 133;
_WEBKIT_MASK_POSITION = 134;
BACKGROUND_ORIGIN = 135;
_WEBKIT_BORDER_START_COLOR = 136;
FONT_STRETCH = 137;
_WEBKIT_BACKGROUND_CLIP = 138;
SCROLL_MARGIN_TOP = 139;
_WEBKIT_BORDER_HORIZONTAL_SPACING = 140;
BORDER_RADIUS = 141;
FLEX = 142;
TEXT_INDENT = 143;
HYPHENS = 144;
COLUMN_RULE_WIDTH = 145;
_WEBKIT_MARGIN_AFTER = 146;
_EPUB_CAPTION_SIDE = 147;
BREAK_AFTER = 148;
TEXT_TRANSFORM = 149;
TOUCH_ACTION = 150;
FONT_SIZE = 151;
_WEBKIT_ANIMATION_NAME = 152;
SCROLL_PADDING_INLINE = 153;
OFFSET_PATH = 154;
SCROLL_MARGIN = 155;
PADDING_TOP = 156;
SCROLL_SNAP_ALIGN = 157;
_WEBKIT_TEXT_COMBINE = 158;
_WEBKIT_FLEX_SHRINK = 159;
RX = 160;
RY = 161;
CONTENT = 162;
PADDING_RIGHT = 163;
_WEBKIT_TRANSFORM = 164;
MARKER_MID = 165;
_WEBKIT_MIN_LOGICAL_WIDTH = 166;
CLIP_RULE = 167;
FONT_FAMILY = 168;
SCROLL_SNAP_TYPE = 169;
TEXT_DECORATION_SKIP = 170;
TRANSITION = 171;
FILTER = 172;
BORDER_RIGHT_WIDTH = 173;
_WEBKIT_FLEX_DIRECTION = 174;
_WEBKIT_MASK_COMPOSITE = 175;
MIX_BLEND_MODE = 176;
COLOR_INTERPOLATION = 177;
BORDER_TOP_STYLE = 178;
FILL_OPACITY = 179;
MARKER_START = 180;
BORDER_BOTTOM_WIDTH = 181;
_WEBKIT_TEXT_EMPHASIS = 182;
GRID_AREA = 183;
SIZE = 184;
BACKGROUND_CLIP = 185;
_WEBKIT_TEXT_FILL_COLOR = 186;
TOP = 187;
_WEBKIT_BOX_REFLECT = 188;
BORDER_WIDTH = 189;
OFFSET_ANCHOR = 190;
MAX_INLINE_SIZE = 191;
_WEBKIT_COLUMN_RULE_STYLE = 192;
_WEBKIT_COLUMN_COUNT = 193;
ANIMATION_PLAY_STATE = 194;
PADDING = 195;
DOMINANT_BASELINE = 196;
BACKGROUND_ATTACHMENT = 197;
_WEBKIT_BOX_SIZING = 198;
_WEBKIT_BOX_FLEX = 199;
TEXT_ORIENTATION = 200;
BACKGROUND_POSITION = 201;
_WEBKIT_BORDER_START_WIDTH = 202;
_EPUB_TEXT_EMPHASIS_STYLE = 203;
ISOLATION = 204;
_EPUB_TEXT_ORIENTATION = 205;
_WEBKIT_BORDER_BOTTOM_RIGHT_RADIUS = 206;
R = 207;
BORDER_LEFT_WIDTH = 208;
GRID_COLUMN_END = 209;
BACKGROUND_BLEND_MODE = 210;
VERTICAL_ALIGN = 211;
CLIP = 212;
GRID_AUTO_ROWS = 213;
OFFSET_ROTATE = 214;
MARGIN_LEFT = 215;
ANIMATION_NAME = 216;
TEXT_DECORATION = 217;
BORDER = 218;
_WEBKIT_TRANSITION_TIMING_FUNCTION = 219;
MARGIN_BOTTOM = 220;
UNICODE_RANGE = 221;
ANIMATION = 222;
_WEBKIT_SHAPE_MARGIN = 223;
FONT_WEIGHT = 224;
SHAPE_MARGIN = 225;
MASK_TYPE = 226;
SCROLL_PADDING = 227;
MIN_INLINE_SIZE = 228;
OBJECT_POSITION = 229;
PAGE_BREAK_AFTER = 230;
_WEBKIT_MASK_CLIP = 231;
WHITE_SPACE = 232;
_WEBKIT_BORDER_AFTER_COLOR = 233;
_WEBKIT_MAX_LOGICAL_WIDTH = 234;
_WEBKIT_BORDER_BEFORE_COLOR = 235;
FONT_KERNING = 236;
_EPUB_WORD_BREAK = 237;
CLEAR = 238;
ANIMATION_TIMING_FUNCTION = 239;
_WEBKIT_BORDER_RADIUS = 240;
SCROLL_PADDING_RIGHT = 241;
_WEBKIT_TEXT_DECORATIONS_IN_EFFECT = 242;
_WEBKIT_ANIMATION_DIRECTION = 243;
JUSTIFY_SELF = 244;
TRANSITION_TIMING_FUNCTION = 245;
SCROLL_SNAP_STOP = 246;
COUNTER_INCREMENT = 247;
_WEBKIT_TRANSFORM_STYLE = 248;
GRID_AUTO_COLUMNS = 249;
_WEBKIT_ALIGN_CONTENT = 250;
FONT = 251;
FLEX_WRAP = 252;
GRID_ROW_START = 253;
LIST_STYLE_IMAGE = 254;
_WEBKIT_TAP_HIGHLIGHT_COLOR = 255;
_WEBKIT_TEXT_EMPHASIS_COLOR = 256;
BORDER_LEFT = 257;
_WEBKIT_BORDER_END_COLOR = 258;
COLUMNS = 259;
BOX_SHADOW = 260;
_WEBKIT_FLEX_WRAP = 261;
ALIGN_SELF = 262;
BORDER_BOTTOM = 263;
BORDER_SPACING = 264;
_WEBKIT_COLUMN_SPAN = 265;
GRID_ROW_END = 266;
_WEBKIT_BORDER_END = 267;
PERSPECTIVE_ORIGIN = 268;
PAGE_BREAK_INSIDE = 269;
ORPHANS = 270;
_WEBKIT_BORDER_START_STYLE = 271;
SCROLL_BEHAVIOR = 272;
COLUMN_SPAN = 273;
_WEBKIT_HYPHENATE_CHARACTER = 274;
COLUMN_FILL = 275;
TAB_SIZE = 276;
CONTAIN = 277;
X = 278;
GRID_ROW = 279;
BORDER_BOTTOM_RIGHT_RADIUS = 280;
LINE_HEIGHT = 281;
STROKE_LINEJOIN = 282;
TEXT_ALIGN_LAST = 283;
OFFSET_POSITION = 284;
WORD_SPACING = 285;
TRANSFORM_STYLE = 286;
_WEBKIT_APP_REGION = 287;
_WEBKIT_BORDER_END_STYLE = 288;
_WEBKIT_TRANSFORM_ORIGIN_Z = 289;
_WEBKIT_TRANSFORM_ORIGIN_X = 290;
_WEBKIT_TRANSFORM_ORIGIN_Y = 291;
BACKGROUND_REPEAT_X = 292;
BACKGROUND_REPEAT_Y = 293;
BORDER_BOTTOM_COLOR = 294;
_WEBKIT_RUBY_POSITION = 295;
_WEBKIT_LOGICAL_WIDTH = 296;
TEXT_JUSTIFY = 297;
SCROLL_MARGIN_INLINE_START = 298;
CAPTION_SIDE = 299;
MASK_SOURCE_TYPE = 300;
_WEBKIT_MASK_BOX_IMAGE_SLICE = 301;
_WEBKIT_BORDER_IMAGE = 302;
TEXT_SIZE_ADJUST = 303;
_WEBKIT_TEXT_SECURITY = 304;
_EPUB_WRITING_MODE = 305;
GRID_TEMPLATE = 306;
_WEBKIT_MASK_BOX_IMAGE_REPEAT = 307;
_WEBKIT_MASK_REPEAT = 308;
_WEBKIT_JUSTIFY_CONTENT = 309;
BASELINE_SHIFT = 310;
BORDER_IMAGE = 311;
TEXT_DECORATION_COLOR = 312;
COLOR = 313;
SHAPE_IMAGE_THRESHOLD = 314;
SHAPE_RENDERING = 315;
CY = 316;
CX = 317;
_WEBKIT_USER_MODIFY = 318;
OFFSET_DISTANCE = 319;
_WEBKIT_BORDER_BOTTOM_LEFT_RADIUS = 320;
SPEAK = 321;
BORDER_BOTTOM_LEFT_RADIUS = 322;
_WEBKIT_COLUMN_BREAK_AFTER = 323;
_WEBKIT_FONT_SMOOTHING = 324;
_WEBKIT_MAX_LOGICAL_HEIGHT = 325;
_WEBKIT_LINE_BREAK = 326;
FILL_RULE = 327;
_WEBKIT_MARGIN_START = 328;
MIN_WIDTH = 329;
_EPUB_TEXT_COMBINE = 330;
BREAK_BEFORE = 331;
CARET_COLOR = 332;
EMPTY_CELLS = 333;
DIRECTION = 334;
CLIP_PATH = 335;
JUSTIFY_CONTENT = 336;
SCROLL_PADDING_BLOCK_END = 337;
Z_INDEX = 338;
BACKGROUND_POSITION_Y = 339;
TEXT_DECORATION_STYLE = 340;
GRID_TEMPLATE_AREAS = 341;
_WEBKIT_MIN_LOGICAL_HEIGHT = 342;
FONT_SIZE_ADJUST = 343;
SCROLL_PADDING_BLOCK = 344;
OVERFLOW_ANCHOR = 345;
CURSOR = 346;
SCROLL_MARGIN_BLOCK_START = 347;
_WEBKIT_MASK_BOX_IMAGE_SOURCE = 348;
MARGIN = 349;
_WEBKIT_ANIMATION = 350;
LETTER_SPACING = 351;
ORIENTATION = 352;
WILL_CHANGE = 353;
_WEBKIT_HIGHLIGHT = 354;
TRANSFORM_ORIGIN = 355;
FONT_VARIANT_LIGATURES = 356;
_WEBKIT_ANIMATION_DURATION = 357;
_WEBKIT_MASK_ORIGIN = 358;
_WEBKIT_CLIP_PATH = 359;
WORD_BREAK = 360;
TABLE_LAYOUT = 361;
TEXT_OVERFLOW = 362;
_WEBKIT_LOCALE = 363;
_WEBKIT_FLEX = 364;
GRID_AUTO_FLOW = 365;
BORDER_TOP_RIGHT_RADIUS = 366;
BORDER_IMAGE_OUTSET = 367;
PLACE_ITEMS = 368;
BORDER_LEFT_COLOR = 369;
FONT_VARIATION_SETTINGS = 370;
BORDER_RIGHT_COLOR = 371;
MIN_ZOOM = 372;
SCROLL_MARGIN_INLINE = 373;
_WEBKIT_BORDER_BEFORE_WIDTH = 374;
BACKFACE_VISIBILITY = 375;
BACKGROUND_IMAGE = 376;
_WEBKIT_TRANSITION_PROPERTY = 377;
WRITING_MODE = 378;
STROKE_OPACITY = 379;
_WEBKIT_MARGIN_COLLAPSE = 380;
BOX_SIZING = 381;
MARGIN_TOP = 382;
COLUMN_RULE_COLOR = 383;
Y = 384;
POSITION = 385;
SCROLL_MARGIN_BOTTOM = 386;
LIST_STYLE_POSITION = 387;
_WEBKIT_BOX_PACK = 388;
SCROLL_PADDING_INLINE_END = 389;
QUOTES = 390;
BORDER_TOP = 391;
SCROLL_PADDING_LEFT = 392;
_WEBKIT_TRANSITION = 393;
_WEBKIT_COLUMN_BREAK_BEFORE = 394;
LIGHTING_COLOR = 395;
BACKGROUND_SIZE = 396;
_WEBKIT_PADDING_BEFORE = 397;
_WEBKIT_BORDER_TOP_LEFT_RADIUS = 398;
FLOOD_OPACITY = 399;
LINE_HEIGHT_STEP = 400;
_WEBKIT_MASK_SIZE = 401;
TEXT_ALIGN = 402;
_WEBKIT_FILTER = 403;
WORD_WRAP = 404;
MAX_ZOOM = 405;
GRID = 406;
BACKGROUND = 407;
HEIGHT = 408;
GRID_COLUMN_START = 409;
ANIMATION_FILL_MODE = 410;
ROTATE = 411;
MARKER_END = 412;
D = 413;
JUSTIFY_ITEMS = 414;
ZOOM = 415;
SCROLL_PADDING_BLOCK_START = 416;
_WEBKIT_MARGIN_TOP_COLLAPSE = 417;
PAGE = 418;
RIGHT = 419;
USER_SELECT = 420;
MARGIN_RIGHT = 421;
MARKER = 422;
LINE_BREAK = 423;
_WEBKIT_MARGIN_END = 424;
_WEBKIT_TRANSITION_DURATION = 425;
_WEBKIT_WRITING_MODE = 426;
BORDER_TOP_WIDTH = 427;
BOTTOM = 428;
PLACE_CONTENT = 429;
_WEBKIT_SHAPE_IMAGE_THRESHOLD = 430;
_WEBKIT_USER_DRAG = 431;
_WEBKIT_BORDER_VERTICAL_SPACING = 432;
_WEBKIT_COLUMN_GAP = 433;
_WEBKIT_OPACITY = 434;
BACKGROUND_COLOR = 435;
COLUMN_GAP = 436;
SHAPE_OUTSIDE = 437;
_WEBKIT_PADDING_END = 438;
_WEBKIT_BORDER_START = 439;
ANIMATION_DELAY = 440;
UNICODE_BIDI = 441;
TEXT_SHADOW = 442;
_WEBKIT_BOX_DIRECTION = 443;
IMAGE_RENDERING = 444;
SRC = 445;
GRID_GAP = 446;
POINTER_EVENTS = 447;
BORDER_IMAGE_WIDTH = 448;
MIN_BLOCK_SIZE = 449;
TRANSITION_PROPERTY = 450;
_WEBKIT_MASK_IMAGE = 451;
FLOAT = 452;
MAX_HEIGHT = 453;
OUTLINE_OFFSET = 454;
_WEBKIT_BOX_SHADOW = 455;
OVERFLOW_WRAP = 456;
BLOCK_SIZE = 457;
TRANSFORM = 458;
PLACE_SELF = 459;
WIDTH = 460;
STROKE_MITERLIMIT = 461;
STOP_OPACITY = 462;
BORDER_TOP_COLOR = 463;
TRANSLATE = 464;
OBJECT_FIT = 465;
_WEBKIT_MASK_BOX_IMAGE_WIDTH = 466;
_WEBKIT_BACKGROUND_ORIGIN = 467;
_WEBKIT_ALIGN_ITEMS = 468;
TRANSITION_DELAY = 469;
SCROLL_MARGIN_LEFT = 470;
BORDER_STYLE = 471;
ANIMATION_ITERATION_COUNT = 472;
_WEBKIT_MARGIN_AFTER_COLLAPSE = 473;
// Should be named OVERFLOW but can't because a macro uses this.
_OVERFLOW = 474;
USER_ZOOM = 475;
_WEBKIT_BORDER_TOP_RIGHT_RADIUS = 476;
GRID_TEMPLATE_COLUMNS = 477;
_WEBKIT_ALIGN_SELF = 478;
_WEBKIT_PERSPECTIVE_ORIGIN = 479;
COLUMN_RULE_STYLE = 480;
DISPLAY = 481;
_WEBKIT_COLUMN_RULE_WIDTH = 482;
_WEBKIT_BOX_LINES = 483;
BORDER_COLOR = 484;
_WEBKIT_FLEX_BASIS = 485;
STROKE_DASHOFFSET = 486;
_WEBKIT_TEXT_SIZE_ADJUST = 487;
OVERSCROLL_BEHAVIOR = 488;
_WEBKIT_TEXT_STROKE = 489;
WIDOWS = 490;
FILL = 491;
OVERFLOW_Y = 492;
OVERFLOW_X = 493;
OPACITY = 494;
_WEBKIT_PERSPECTIVE = 495;
_WEBKIT_TEXT_STROKE_COLOR = 496;
SCROLL_MARGIN_INLINE_END = 497;
SCALE = 498;
_WEBKIT_TEXT_ORIENTATION = 499;
_WEBKIT_MASK_BOX_IMAGE_OUTSET = 500;
ALIGN_CONTENT = 501;
_WEBKIT_BORDER_END_WIDTH = 502;
BORDER_BOTTOM_STYLE = 503;
MASK = 504;
BACKGROUND_POSITION_X = 505;
_EPUB_TEXT_TRANSFORM = 506;
STOP_COLOR = 507;
STROKE_DASHARRAY = 508;
_WEBKIT_LINE_CLAMP = 509;
INVALID_PROPERTY = 510;
}
required NameId name_id = 1;
}
message Ruleset {
required SelectorList selector_list = 1;
required DeclarationList declaration_list = 2;
}
// Not in grammar.
message SelectorList {
required Selector first_selector = 1;
repeated Selector later_selectors = 2;
}
message Attr {
enum Type {
NONE = 1;
EQUAL = 6;
TILDE = 126;
PIPE = 124;
DOLLAR = 36;
STAR = 42;
}
required Type type = 1;
optional bool attr_i = 2;
// TODO(metzman): Allow values to be set instead of hardcoding.
}
enum PseudoType {
CLASS = 1;
ELEMENT = 2;
}
enum Combinator {
NONE = 1;
DOLLAR = 36;
COMMA = 44;
GREATER_THAN = 62;
PLUS = 43;
TILDE = 126;
}
message Selector {
enum Type {
ELEMENT = 1;
CLASS = 2;
ID = 3;
// TODO(metzman): Support the different variations of universal selectors.
UNIVERSAL = 4;
ATTR = 5;
}
required Type type = 1;
required Attr attr = 2;
// TODO(metzman): Allow the selector value to be set by fuzzer.
required PseudoType pseudo_type = 3;
enum PseudoValueId {
_INTERNAL_AUTOFILL_PREVIEWED = 1;
_INTERNAL_AUTOFILL_SELECTED = 2;
_INTERNAL_LIST_BOX = 3;
_INTERNAL_MEDIA_CONTROLS_OVERLAY_CAST_BUTTON = 4;
_INTERNAL_SHADOW_HOST_HAS_APPEARANCE = 5;
_INTERNAL_SPATIAL_NAVIGATION_FOCUS = 6;
_INTERNAL_VIDEO_PERSISTENT = 7;
_INTERNAL_VIDEO_PERSISTENT_ANCESTOR = 8;
_WEBKIT_ANY_LINK = 9;
_WEBKIT_AUTOFILL = 10;
_WEBKIT_DRAG = 11;
_WEBKIT_FULL_PAGE_MEDIA = 12;
_WEBKIT_FULL_SCREEN = 13;
_WEBKIT_FULL_SCREEN_ANCESTOR = 14;
_WEBKIT_RESIZER = 15;
_WEBKIT_SCROLLBAR = 16;
_WEBKIT_SCROLLBAR_BUTTON = 17;
_WEBKIT_SCROLLBAR_CORNER = 18;
_WEBKIT_SCROLLBAR_THUMB = 19;
_WEBKIT_SCROLLBAR_TRACK = 20;
_WEBKIT_SCROLLBAR_TRACK_PIECE = 21;
ACTIVE = 22;
AFTER = 23;
BACKDROP = 24;
BEFORE = 25;
CHECKED = 26;
CONTENT = 27;
CORNER_PRESENT = 28;
CUE = 29;
DECREMENT = 30;
DEFAULT = 31;
DEFINED = 32;
DISABLED = 33;
DOUBLE_BUTTON = 34;
EMPTY = 35;
ENABLED = 36;
END = 37;
FIRST = 38;
FIRST_CHILD = 39;
FIRST_LETTER = 40;
FIRST_LINE = 41;
FIRST_OF_TYPE = 42;
FOCUS = 43;
FOCUS_WITHIN = 44;
FULLSCREEN = 45;
FUTURE = 46;
HORIZONTAL = 47;
HOST = 48;
HOVER = 49;
IN_RANGE = 50;
INCREMENT = 51;
INDETERMINATE = 52;
INVALID = 53;
LAST_CHILD = 54;
LAST_OF_TYPE = 55;
LEFT = 56;
LINK = 57;
NO_BUTTON = 58;
ONLY_CHILD = 59;
ONLY_OF_TYPE = 60;
OPTIONAL = 61;
OUT_OF_RANGE = 62;
PAST = 63;
PLACEHOLDER = 64;
PLACEHOLDER_SHOWN = 65;
READ_ONLY = 66;
READ_WRITE = 67;
REQUIRED = 68;
RIGHT = 69;
ROOT = 70;
SCOPE = 71;
SELECTION = 72;
SHADOW = 73;
SINGLE_BUTTON = 74;
START = 75;
TARGET = 76;
UNRESOLVED = 77;
VALID = 78;
VERTICAL = 79;
VISITED = 80;
WINDOW_INACTIVE = 81;
_WEBKIT_ANY = 82;
HOST_CONTEXT = 85;
LANG = 86;
NOT = 87;
NTH_CHILD = 88;
NTH_LAST_CHILD = 89;
NTH_LAST_OF_TYPE = 90;
NTH_OF_TYPE = 91;
SLOTTED = 92;
INVALID_PSEUDO_VALUE = 93;
}
optional PseudoValueId pseudo_value_id = 4;
required Combinator combinator = 5;
}
message Pseudo {
oneof rhs {
Ident ident_1 = 1;
FunctionToken function_token = 2;
}
required Ident ident_2 = 3;
}
message Declaration {
// property ':' S* expr prio? | /* empty */
optional PropertyAndValue property_and_value = 1;
}
message PropertyAndValue {
required Property property = 1;
required Expr expr = 2;
enum Prio {
UNSET = 0;
IS_SET = 1;
}
optional Prio prio = 3;
enum ValueId {
ALL = 1;
DYNAMIC = 2;
YELLOW = 3;
GRAYTEXT = 4;
COLOR_DODGE = 5;
DARKSEAGREEN = 6;
DISC = 7;
EXTRA_CONDENSED = 8;
HANGING = 9;
STEP_MIDDLE = 10;
MENULIST = 11;
ROW = 12;
PRE_WRAP = 13;
INLINE_BLOCK = 14;
STEP_START = 15;
ISOLATE_OVERRIDE = 16;
SWAP = 17;
RTL = 18;
CRIMSON = 19;
TB = 20;
COMMON_LIGATURES = 21;
_WEBKIT_MIN_CONTENT = 22;
BROWN = 23;
KHMER = 24;
INFINITE = 25;
TABLE_HEADER_GROUP = 26;
BEFORE_EDGE = 27;
READ_WRITE = 28;
RL = 29;
WAVY = 30;
PROPORTIONAL_WIDTH = 31;
NO_DROP = 32;
CYAN = 33;
DIFFERENCE = 34;
EXACT = 35;
SQUARE_BUTTON = 36;
SKYBLUE = 37;
_WEBKIT_ISOLATE_OVERRIDE = 38;
TABLE_ROW_GROUP = 39;
DARKGRAY = 40;
BUTTON = 41;
ETHIOPIC_HALEHAME_AM = 42;
LARGE = 43;
LIGHTPINK = 44;
CROSSHAIR = 45;
TEAL = 46;
FILL_BOX = 47;
SMALL = 48;
MEDIA_SLIDERTHUMB = 49;
ROUND = 50;
_INTERNAL_MEDIA_SUBTITLES_ICON = 51;
MEDIA_PLAY_BUTTON = 52;
SMALLER = 53;
JIS04 = 54;
LR_TB = 55;
LIGHTGOLDENRODYELLOW = 56;
LAVENDER = 57;
ULTRA_EXPANDED = 58;
DIMGREY = 59;
DIAGONAL_FRACTIONS = 60;
BLUE = 61;
XOR = 62;
SUB = 63;
TELUGU = 64;
CRISPEDGES = 65;
_WEBKIT_MINI_CONTROL = 66;
ZOOM_OUT = 67;
SEARCHFIELD = 68;
CELL = 69;
GUJARATI = 70;
ABOVE = 71;
NO_PUNCTUATION = 72;
NEW = 73;
FILLED = 74;
USE_SCRIPT = 75;
CONDENSED = 76;
LOOSE = 77;
SOURCE_OUT = 78;
OBJECTS = 79;
SLIDER_HORIZONTAL = 80;
ROW_RESIZE = 81;
BREAK_ALL = 82;
WAIT = 83;
MEDIA_EXIT_FULLSCREEN_BUTTON = 84;
KOREAN_HANGUL_FORMAL = 85;
FLORALWHITE = 86;
RESET_SIZE = 87;
ZOOM_IN = 88;
_WEBKIT_GRABBING = 89;
LARGER = 90;
MAX_CONTENT = 91;
SRGB = 92;
LITERAL_PUNCTUATION = 93;
WINDOWFRAME = 94;
SUBPIXEL_ANTIALIASED = 95;
BUTTONHIGHLIGHT = 96;
HUE = 97;
PIXELATED = 98;
STICKY = 99;
GREENYELLOW = 100;
LINEARRGB = 101;
LIGHTSEAGREEN = 102;
LOGICAL = 103;
_WEBKIT_RIGHT = 104;
SIENNA = 105;
FLOW_ROOT = 106;
OPTIMIZESPEED = 107;
KOREAN_HANJA_FORMAL = 108;
NOWRAP = 109;
X_SMALL = 110;
LANDSCAPE = 111;
LIME = 112;
X_LARGE = 113;
NS_RESIZE = 114;
APPWORKSPACE = 115;
PERU = 116;
ALL_PETITE_CAPS = 117;
BLACK = 118;
XX_SMALL = 119;
ALL_SCROLL = 120;
DARKSLATEGRAY = 121;
FLAT = 122;
GEORGIAN = 123;
UNDER = 124;
LEMONCHIFFON = 125;
CHOCOLATE = 126;
PRE_LINE = 127;
CONTEXT_MENU = 128;
DARKGREY = 129;
VIEW_BOX = 130;
OLIVE = 131;
_WEBKIT_PLAINTEXT = 132;
EXTRA_EXPANDED = 133;
ANTIQUEWHITE = 134;
NONE = 135;
MOCCASIN = 136;
LOCAL = 137;
STROKE = 138;
DARKSLATEBLUE = 139;
LIGHTSKYBLUE = 140;
CONTENT_BOX = 141;
THIN = 142;
DEEPPINK = 143;
SPELL_OUT = 144;
NON_SCALING_STROKE = 145;
SLIDER_VERTICAL = 146;
_WEBKIT_BOX = 147;
PLUM = 148;
_INTERNAL_MEDIA_OVERLAY_CAST_OFF_BUTTON = 149;
INACTIVECAPTIONTEXT = 150;
DODGERBLUE = 151;
THREEDSHADOW = 152;
PETITE_CAPS = 153;
PAUSED = 154;
_WEBKIT_LINK = 155;
MESSAGE_BOX = 156;
_INTERNAL_CENTER = 157;
TRIANGLE = 158;
MAGENTA = 159;
TAN = 160;
ABSOLUTE = 161;
PINK = 162;
HIRAGANA_IROHA = 163;
FARTHEST_SIDE = 164;
PALEVIOLETRED = 165;
CLOSE_QUOTE = 166;
THREEDLIGHTSHADOW = 167;
CAPTION = 168;
POWDERBLUE = 169;
TABLE_COLUMN = 170;
SOURCE_ATOP = 171;
HIRAGANA = 172;
UPPER_ARMENIAN = 173;
WINDOWTEXT = 174;
FULL_WIDTH = 175;
PROGRESS_BAR_VALUE = 176;
MIDNIGHTBLUE = 177;
INLINE_FLEX = 178;
ECONOMY = 179;
LAO = 180;
CLONE = 181;
AFTER = 182;
STATUS_BAR = 183;
LOWERCASE = 184;
MIXED = 185;
LINE_THROUGH = 186;
LIGHTSLATEGRAY = 187;
SMALL_CAPTION = 188;
INFOBACKGROUND = 189;
DISCARD = 190;
CAPTIONTEXT = 191;
END = 192;
_INTERNAL_INACTIVE_LIST_BOX_SELECTION_TEXT = 193;
CAPITALIZE = 194;
MEDIUMSEAGREEN = 195;
TOMATO = 196;
CADETBLUE = 197;
DECIMAL_LEADING_ZERO = 198;
SANS_SERIF = 199;
LINEN = 200;
GREEN = 201;
INACTIVEBORDER = 202;
INLINE = 203;
FALLBACK = 204;
PEACHPUFF = 205;
_WEBKIT_MAX_CONTENT = 206;
PLUS_LIGHTER = 207;
CHECKBOX = 208;
HELP = 209;
OBLIQUE = 210;
MOVE = 211;
METER = 212;
LEDGER = 213;
SLATEGREY = 214;
MEDIA_TIME_REMAINING_DISPLAY = 215;
URDU = 216;
POINTER = 217;
BEFORE = 218;
DARKSLATEGREY = 219;
_WEBKIT_CONTROL = 220;
_WEBKIT_INLINE_BOX = 221;
HARD_LIGHT = 222;
MITER = 223;
ORIYA = 224;
UPPER_LATIN = 225;
WINDOW = 226;
MEDIUMBLUE = 227;
LR = 228;
ORANGE = 229;
HIDDEN = 230;
_INTERNAL_ACTIVE_LIST_BOX_SELECTION = 231;
BOLDER = 232;
_WEBKIT_CENTER = 233;
SAFE = 234;
HIGHLIGHTTEXT = 235;
ACCUMULATE = 236;
FLEX_END = 237;
TRANSPARENT = 238;
_INTERNAL_MEDIA_REMOTING_CAST_ICON = 239;
GOLDENROD = 240;
HISTORICAL_LIGATURES = 241;
DARKVIOLET = 242;
ALWAYS = 243;
DECIMAL = 244;
BLOCK_AXIS = 245;
SCROLLBAR = 246;
EW_RESIZE = 247;
DARKMAGENTA = 248;
NOT_ALLOWED = 249;
EASE_IN = 250;
TABLE_COLUMN_GROUP = 251;
SQUARE = 252;
NO_CONTEXTUAL = 253;
_WEBKIT_FILL_AVAILABLE = 254;
FRAMES = 255;
PERSIAN = 256;
STATIC = 257;
NAVY = 258;
VISIBLEPAINTED = 259;
THICK = 260;
SIMP_CHINESE_FORMAL = 261;
GHOSTWHITE = 262;
SPACE = 263;
DARKKHAKI = 264;
KEEP_ALL = 265;
CONTENT = 266;
_INTERNAL_MEDIA_DOWNLOAD_BUTTON = 267;
UPPER_ROMAN = 268;
CORNSILK = 269;
RED = 270;
NO_CHANGE = 271;
LINEAR = 272;
_INTERNAL_MEDIA_CONTROL = 273;
SIDEWAYS = 274;
CONTAIN = 275;
KATAKANA_IROHA = 276;
STEELBLUE = 277;
DOUBLE_CIRCLE = 278;
ANTIALIASED = 279;
ALICEBLUE = 280;
LIGHTSLATEGREY = 281;
GEOMETRICPRECISION = 282;
GAINSBORO = 283;
INLINE_TABLE = 284;
LTR = 285;
BACKWARDS = 286;
S_RESIZE = 287;
LIGHTGREY = 288;
MEDIA_MUTE_BUTTON = 289;
LISTITEM = 290;
MISTYROSE = 291;
DARKSALMON = 292;
SIDEWAYS_RIGHT = 293;
JIS83 = 294;
MEDIUMSPRINGGREEN = 295;
CAPS_LOCK_INDICATOR = 296;
SLIDERTHUMB_HORIZONTAL = 297;
FORWARDS = 298;
UPPER_ALPHA = 299;
BLINK = 300;
FANTASY = 301;
SIMPLIFIED = 302;
ORANGERED = 303;
NAVAJOWHITE = 304;
OPEN = 305;
HORIZONTAL = 306;
SLATEGRAY = 307;
ACTIVECAPTION = 308;
KOREAN_HANJA_INFORMAL = 309;
STRICT = 310;
LIGHTCYAN = 311;
TOP = 312;
_WEBKIT_PICTOGRAPH = 313;
WHITE = 314;
TEXT_AFTER_EDGE = 315;
LIGHTGRAY = 316;
COLLAPSE = 317;
HOVER = 318;
_WEBKIT_OPTIMIZE_CONTRAST = 319;
PADDING = 320;
BUTT = 321;
OFF = 322;
THAI = 323;
COPY = 324;
HOTPINK = 325;
DOUBLE = 326;
LOWER_GREEK = 327;
GREY = 328;
MEDIA_VOLUME_SLIDER_CONTAINER = 329;
_WEBKIT_INLINE_FLEX = 330;
SPACE_EVENLY = 331;
ACTIVEBORDER = 332;
BROWSER = 333;
PRE = 334;
UNICASE = 335;
SIMP_CHINESE_INFORMAL = 336;
CLIP = 337;
CLOSEST_CORNER = 338;
PLAINTEXT = 339;
NO_REPEAT = 340;
TEXT_TOP = 341;
JIS78 = 342;
XX_LARGE = 343;
RL_TB = 344;
TABLE_ROW = 345;
MEDIUM = 346;
MONGOLIAN = 347;
KATAKANA = 348;
ELEMENT = 349;
BORDER = 350;
ROSYBROWN = 351;
PROGRESS_BAR = 352;
WHITESMOKE = 353;
LIGHTBLUE = 354;
_WEBKIT_LEFT = 355;
NO_COMMON_LIGATURES = 356;
LISTBOX = 357;
ISOLATE = 358;
SNOW = 359;
STEP_END = 360;
ETHIOPIC_HALEHAME_TI_ER = 361;
ETHIOPIC_HALEHAME_TI_ET = 362;
MULTIPLE = 363;
_INTERNAL_INACTIVE_LIST_BOX_SELECTION = 364;
NORMAL = 365;
BLUEVIOLET = 366;
SALMON = 367;
LOWER_ALPHA = 368;
OLDLACE = 369;
LETTER = 370;
BORDER_BOX = 371;
ALPHA = 372;
TIBETAN = 373;
ICON = 374;
FLEX_START = 375;
TEXTAREA = 376;
W_RESIZE = 377;
CLEAR = 378;
COVER = 379;
FARTHEST_CORNER = 380;
MENULIST_TEXTFIELD = 381;
TRADITIONAL = 382;
LEFT = 383;
DOT = 384;
LUMINANCE = 385;
GOLD = 386;
SHOW = 387;
TEXT = 388;
_WEBKIT_MATCH_PARENT = 389;
RADIO = 390;
CAMBODIAN = 391;
REPEAT_X = 392;
REPEAT_Y = 393;
FINE = 394;
TEXTFIELD = 395;
FROM_IMAGE = 396;
LINING_NUMS = 397;
MENU = 398;
PROPORTIONAL_NUMS = 399;
SOURCE_OVER = 400;
NE_RESIZE = 401;
PAPAYAWHIP = 402;
SOURCE_IN = 403;
SE_RESIZE = 404;
CIRCLE = 405;
DESTINATION_OUT = 406;
THREEDFACE = 407;
OVER = 408;
DISTRIBUTE = 409;
INACTIVECAPTION = 410;
LIGHTEN = 411;
_WEBKIT_FIT_CONTENT = 412;
LIGHTER = 413;
CONTEXTUAL = 414;
GRAY = 415;
DARKTURQUOISE = 416;
E_RESIZE = 417;
LUMINOSITY = 418;
LIST_ITEM = 419;
LIMEGREEN = 420;
FIXED = 421;
MIN_CONTENT = 422;
MEDIA_SLIDER = 423;
VISIBLESTROKE = 424;
CUBIC_BEZIER = 425;
CLOSEST_SIDE = 426;
RELATIVE = 427;
NO_OPEN_QUOTE = 428;
THISTLE = 429;
VIOLET = 430;
PORTRAIT = 431;
FULLSCREEN = 432;
HONEYDEW = 433;
ON_DEMAND = 434;
CORNFLOWERBLUE = 435;
DARKBLUE = 436;
OUTSIDE = 437;
PROGRESS = 438;
MEDIUMPURPLE = 439;
DARKCYAN = 440;
VERTICAL = 441;
MONOSPACE = 442;
BREAK_WORD = 443;
SCREEN = 444;
REBECCAPURPLE = 445;
DARKRED = 446;
VERTICAL_LR = 447;
OPTIMIZEQUALITY = 448;
ARMENIAN = 449;
NWSE_RESIZE = 450;
TEXT_BEFORE_EDGE = 451;
OPTIONAL = 452;
EXCLUSION = 453;
BOTH = 454;
MEDIUMTURQUOISE = 455;
LOWER_ROMAN = 456;
REVERSE = 457;
HANGUL_CONSONANT = 458;
SOFT_LIGHT = 459;
AQUA = 460;
BUTTON_BEVEL = 461;
GURMUKHI = 462;
LIGHTSTEELBLUE = 463;
SMALL_CAPS = 464;
N_RESIZE = 465;
TABLE_FOOTER_GROUP = 466;
DESTINATION_IN = 467;
OLIVEDRAB = 468;
READ_WRITE_PLAINTEXT_ONLY = 469;
PADDING_BOX = 470;
COL_RESIZE = 471;
_INTERNAL_MEDIA_TRACK_SELECTION_CHECKMARK = 472;
LOWER_LATIN = 473;
_WEBKIT_NOWRAP = 474;
TABLE = 475;
BUTTONSHADOW = 476;
PALEGREEN = 477;
JIS90 = 478;
FIT_CONTENT = 479;
STRETCH = 480;
SEASHELL = 481;
THREEDHIGHLIGHT = 482;
VISIBLEFILL = 483;
SPACE_AROUND = 484;
COARSE = 485;
AQUAMARINE = 486;
DIGITS = 487;
CURRENTCOLOR = 488;
PAINTED = 489;
TB_RL = 490;
BUTTONFACE = 491;
LAWNGREEN = 492;
BURLYWOOD = 493;
_WEBKIT_SMALL_CONTROL = 494;
SLATEBLUE = 495;
MINTCREAM = 496;
RUBY = 497;
SOLID = 498;
ULTRA_CONDENSED = 499;
EXPANDED = 500;
SADDLEBROWN = 501;
VERTICAL_RL = 502;
SESAME = 503;
_WEBKIT_BODY = 504;
DESTINATION_ATOP = 505;
MALAYALAM = 506;
WRAP_REVERSE = 507;
BALANCE = 508;
VERTICAL_RIGHT = 509;
NO_CLOSE_QUOTE = 510;
FLEX = 511;
PUSH_BUTTON = 512;
DARKGOLDENROD = 513;
SATURATION = 514;
MIDDLE = 515;
SANDYBROWN = 516;
HEBREW = 517;
MENUTEXT = 518;
INLINE_AXIS = 519;
BASELINE = 520;
_WEBKIT_GRAB = 521;
DARKORANGE = 522;
_WEBKIT_FLEX = 523;
NW_RESIZE = 524;
CONTENTS = 525;
AUTO = 526;
MARGIN_BOX = 527;
DOCUMENT = 528;
PALEGOLDENROD = 529;
ORDINAL = 530;
HAND = 531;
RUNNING = 532;
CJK_EARTHLY_BRANCH = 533;
TABLE_CAPTION = 534;
MEDIA_TOGGLE_CLOSED_CAPTIONS_BUTTON = 535;
AFTER_EDGE = 536;
SLIDERTHUMB_VERTICAL = 537;
CENTER = 538;
LIGHTYELLOW = 539;
LAVENDERBLUSH = 540;
_INTERNAL_MEDIA_CLOSED_CAPTIONS_ICON = 541;
INHERIT = 542;
MEDIA_CONTROLS_BACKGROUND = 543;
JUSTIFY = 544;
OPTIMIZELEGIBILITY = 545;
_WEBKIT_BASELINE_MIDDLE = 546;
INDIGO = 547;
MINIMAL_UI = 548;
FIREBRICK = 549;
INDIANRED = 550;
DARKOLIVEGREEN = 551;
SEMI_EXPANDED = 552;
UNDERLINE = 553;
MYANMAR = 554;
SPACE_BETWEEN = 555;
EASE = 556;
ALTERNATE = 557;
MEDIUMORCHID = 558;
SILVER = 559;
COLOR = 560;
CHARTREUSE = 561;
EASE_IN_OUT = 562;
SPRINGGREEN = 563;
LIGHTSALMON = 564;
TURQUOISE = 565;
HIDE = 566;
HORIZONTAL_TB = 567;
VERTICAL_TEXT = 568;
ALIAS = 569;
GRID = 570;
NO_DISCRETIONARY_LIGATURES = 571;
BACKGROUND = 572;
DEVANAGARI = 573;
TEXT_BOTTOM = 574;
DARKGREEN = 575;
VISIBLE = 576;
TABULAR_NUMS = 577;
MANUAL = 578;
ZOOM = 579;
CJK_HEAVENLY_STEM = 580;
STEPS = 581;
BOUNDING_BOX = 582;
ALPHABETIC = 583;
AFTER_WHITE_SPACE = 584;
ROW_REVERSE = 585;
MEDIA_CURRENT_TIME_DISPLAY = 586;
MATHEMATICAL = 587;
ETHIOPIC_HALEHAME = 588;
RIGHT = 589;
UPPERCASE = 590;
_WEBKIT_XXX_LARGE = 591;
B4 = 592;
B5 = 593;
YELLOWGREEN = 594;
MEDIA_CONTROLS_FULLSCREEN_BACKGROUND = 595;
LOWER_ARMENIAN = 596;
ORCHID = 597;
NONZERO = 598;
SLICE = 599;
DENSE = 600;
INTER_WORD = 601;
BOTTOM = 602;
PURPLE = 603;
AVOID = 604;
SEPARATE = 605;
HANGUL = 606;
LEGAL = 607;
ALTERNATE_REVERSE = 608;
PRESERVE_3D = 609;
READ_ONLY = 610;
ELLIPSIS = 611;
MEDIA_OVERLAY_PLAY_BUTTON = 612;
BISQUE = 613;
INFOTEXT = 614;
KHAKI = 615;
WHEAT = 616;
BOLD = 617;
NO_HISTORICAL_LIGATURES = 618;
BIDI_OVERRIDE = 619;
DEEPSKYBLUE = 620;
EASE_OUT = 621;
CJK_IDEOGRAPHIC = 622;
OLDSTYLE_NUMS = 623;
MEDIA_ENTER_FULLSCREEN_BUTTON = 624;
SUPER = 625;
CURSIVE = 626;
ON = 627;
CENTRAL = 628;
_INTERNAL_MEDIA_OVERFLOW_BUTTON = 629;
STANDALONE = 630;
COLUMN = 631;
CORAL = 632;
DESTINATION_OVER = 633;
DISCRETIONARY_LIGATURES = 634;
BEIGE = 635;
TABLE_CELL = 636;
AZURE = 637;
TRAD_CHINESE_INFORMAL = 638;
TITLING_CAPS = 639;
_WEBKIT_ZOOM_IN = 640;
BLOCK = 641;
OUTSET = 642;
MEDIUMVIOLETRED = 643;
ROYALBLUE = 644;
MENULIST_TEXT = 645;
SW_RESIZE = 646;
MULTIPLY = 647;
THREEDDARKSHADOW = 648;
WRAP = 649;
LIGHTCORAL = 650;
ELLIPSE = 651;
_INTERNAL_ACTIVE_LIST_BOX_SELECTION_TEXT = 652;
RIDGE = 653;
_WEBKIT_AUTO = 654;
_INTERNAL_QUIRK_INHERIT = 655;
INITIAL = 656;
FUCHSIA = 657;
MENULIST_BUTTON = 658;
BLANCHEDALMOND = 659;
CARET = 660;
START = 661;
_INTERNAL_MEDIA_CAST_OFF_BUTTON = 662;
ITALIC = 663;
IVORY = 664;
BUTTONTEXT = 665;
SEMI_CONDENSED = 666;
INLINE_GRID = 667;
_WEBKIT_ACTIVELINK = 668;
SERIF = 669;
FORESTGREEN = 670;
BENGALI = 671;
UPRIGHT = 672;
RESET = 673;
BEVEL = 674;
IDEOGRAPHIC = 675;
DARKEN = 676;
MEDIA_VOLUME_SLIDERTHUMB = 677;
DEFAULT = 678;
INSIDE = 679;
BELOW = 680;
HIGHLIGHT = 681;
EMBED = 682;
GROOVE = 683;
NESW_RESIZE = 684;
STACKED_FRACTIONS = 685;
UNSAFE = 686;
MAROON = 687;
KANNADA = 688;
SINGLE = 689;
AT = 690;
INK = 691;
ARABIC_INDIC = 692;
MEDIA_VOLUME_SLIDER = 693;
COLUMN_REVERSE = 694;
_WEBKIT_ZOOM_OUT = 695;
FILL = 696;
EVENODD = 697;
DOTTED = 698;
DIMGRAY = 699;
DASHED = 700;
SEAGREEN = 701;
TRAD_CHINESE_FORMAL = 702;
MEDIUMSLATEBLUE = 703;
PALETURQUOISE = 704;
INNER_SPIN_BUTTON = 705;
REPEAT = 706;
DARKORCHID = 707;
_WEBKIT_ISOLATE = 708;
SEARCHFIELD_CANCEL_BUTTON = 709;
ALL_SMALL_CAPS = 710;
A3 = 711;
A5 = 712;
A4 = 713;
OPEN_QUOTE = 714;
LIGHTGREEN = 715;
SLASHED_ZERO = 716;
COLOR_BURN = 717;
AUTO_FLOW = 718;
OVERLAY = 719;
VISUAL = 720;
SCALE_DOWN = 721;
OVERLINE = 722;
INSET = 723;
MEDIUMAQUAMARINE = 724;
SCROLL = 725;
INVALID_VALUE = 726;
};
optional ValueId value_id = 4;
}
message Expr {
required Term term = 1;
repeated OperatorTerm operator_terms = 2;
}
// Not in grammar.
message OperatorTerm {
required Operator _operator = 1;
required Term term = 2;
}
message Term {
optional UnaryOperator unary_operator = 1;
oneof rhs {
// [ NUMBER S* | PERCENTAGE S* | LENGTH S* | EMS S* | EXS S* | ANGLE S* |
// TIME S* | FREQ S* | function ]
TermPart term_part = 2;
// | STRING
String string = 3;
}
// S* | IDENT S* | URI S* | UNICODERANGE S* | hexcolor
optional Ident ident = 4;
optional Uri uri = 5;
// TODO(metzman): Add UNICODERANGE token once (if) I implement it.
optional Hexcolor hexcolor = 6;
}
// Not in grammar.
message TermPart {
// NUMBER
required Num number = 1;
// S* | PERCENTAGE
optional Num percentage = 2; // num "%"
// S* | LENGTH
optional Length length = 3;
optional Num ems = 4; // {num}em
optional Num exs = 5; // {num}ex
optional Angle angle = 6;
optional Time time = 7;
optional Freq freq = 8;
optional Function function = 9;
}
message Function {
required FunctionToken function_token = 1;
required Expr expr = 2;
}
message Hexcolor {
required HexcolorThree first_three = 1;
optional HexcolorThree last_three = 2;
}
// Not in grammar.
message HexcolorThree {
// 0-9A-Za-z
required H ascii_value_1 = 1;
required H ascii_value_2 = 2;
required H ascii_value_3 = 3;
}
message Input {
enum CSSParserMode {
kHTMLStandardMode = 0;
kHTMLQuirksMode = 1;
kSVGAttributeMode = 2;
kCSSViewportRuleMode = 3;
kCSSFontFaceRuleMode = 4;
kUASheetMode = 5;
}
enum SecureContextMode {
kInsecureContext = 0;
kSecureContext = 1;
}
required CSSParserMode css_parser_mode = 1;
required bool defer_property_parsing = 2;
required StyleSheet style_sheet = 3;
required bool is_live_profile = 4;
required SecureContextMode secure_context_mode = 5;
}