Grit: Generate resource_ids as part of the build
Eliminates the need to manually run "grit update_resource_ids" Bug: 979886 Change-Id: Ifa89368bfe6f8ba36750536a42d2a308c2555604 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1980793 Commit-Queue: Andrew Grieve <agrieve@chromium.org> Reviewed-by: Samuel Huang <huangs@chromium.org> Cr-Commit-Position: refs/heads/master@{#728095}
This commit is contained in:

committed by
Commit Bot

parent
423c6e6c1b
commit
11c825d76a
1
.gn
1
.gn
@ -662,4 +662,5 @@ exec_script_whitelist =
|
||||
"//remoting/host/installer/win/generate_clsids.gni",
|
||||
|
||||
"//tools/grit/grit_rule.gni",
|
||||
"//tools/gritsettings/BUILD.gn",
|
||||
]
|
||||
|
@ -106,8 +106,7 @@ def _MultiReplace(data, repl):
|
||||
return ''.join(res)
|
||||
|
||||
|
||||
def _CreateAndOutputResult(data, repl, output):
|
||||
new_data = _MultiReplace(data, repl)
|
||||
def _WriteFile(output, new_data):
|
||||
if output:
|
||||
with open(output, 'wt') as fh:
|
||||
fh.write(new_data)
|
||||
@ -118,18 +117,24 @@ def _CreateAndOutputResult(data, repl, output):
|
||||
class _Args:
|
||||
"""Encapsulated arguments for this module."""
|
||||
def __init__(self):
|
||||
self.input = None
|
||||
self.output = None
|
||||
self.add_header = False
|
||||
self.analyze_inputs = False
|
||||
self.count = False
|
||||
self.depfile = None
|
||||
self.fake = False
|
||||
self.input = None
|
||||
self.naive = False
|
||||
self.output = None
|
||||
self.parse = False
|
||||
self.tokenize = False
|
||||
|
||||
@staticmethod
|
||||
def Parse(raw_args):
|
||||
own_opts, raw_args = getopt.getopt(raw_args, 'o:cpt', [
|
||||
'add-header',
|
||||
'analyze-inputs',
|
||||
'count',
|
||||
'depfile=',
|
||||
'fake',
|
||||
'naive',
|
||||
'parse',
|
||||
@ -144,8 +149,14 @@ class _Args:
|
||||
for (key, val) in own_opts:
|
||||
if key == '-o':
|
||||
args.output = val
|
||||
elif key == '--add-header':
|
||||
args.add_header = True
|
||||
elif key == '--analyze-inputs':
|
||||
args.analyze_inputs = True
|
||||
elif key in ('--count', '-c'):
|
||||
args.count = True
|
||||
elif key == '--depfile':
|
||||
args.depfile = val
|
||||
elif key == '--fake':
|
||||
args.fake = True
|
||||
elif key == '--naive':
|
||||
@ -164,7 +175,8 @@ start IDs while preserving structure.
|
||||
|
||||
Usage: grit update_resource_ids [--parse|-p] [--read-grd|-r] [--tokenize|-t]
|
||||
[--naive] [--fake] [-o OUTPUT_FILE]
|
||||
RESOURCE_IDS_FILE
|
||||
[--analyze-inputs] [--depfile DEPFILE]
|
||||
[--add-header] RESOURCE_IDS_FILE
|
||||
|
||||
RESOURCE_IDS_FILE is the path of the input resource_ids file.
|
||||
|
||||
@ -188,6 +200,9 @@ Other options:
|
||||
--tokenize|-t Tokenizes RESOURCE_IDS_FILE and reprints it as syntax-
|
||||
highlighted output.
|
||||
|
||||
--depfile=DEPFILE Write out a depfile for ninja to know about dependencies.
|
||||
--analyze-inputs Writes dependencies to stdout.
|
||||
--add-header Adds a "THIS FILE IS GENERATED" header to the output.
|
||||
"""
|
||||
|
||||
def __init(self):
|
||||
@ -242,13 +257,32 @@ Other options:
|
||||
item_list = common.BuildItemList(root_obj)
|
||||
|
||||
src_dir = os.path.abspath(os.sep.join([file_dir, root_obj['SRCDIR'].val]))
|
||||
usage_gen = reader.GenerateResourceUsages(item_list, src_dir, args.fake)
|
||||
seen_files = set()
|
||||
usage_gen = reader.GenerateResourceUsages(item_list, src_dir, args.fake,
|
||||
seen_files)
|
||||
if args.count:
|
||||
return self._DumpResourceCounts(usage_gen)
|
||||
for item, tag_name_to_usage in usage_gen:
|
||||
item.SetUsages(tag_name_to_usage)
|
||||
|
||||
if args.analyze_inputs:
|
||||
print('\n'.join(sorted(seen_files)))
|
||||
return 0
|
||||
|
||||
new_ids_gen = assigner.GenerateNewIds(item_list, args.naive)
|
||||
# Create replacement specs usable by _MultiReplace().
|
||||
repl = [(tag.lo, tag.hi, str(new_id)) for tag, new_id in new_ids_gen]
|
||||
_CreateAndOutputResult(data, repl, args.output)
|
||||
# Update "SRCDIR" entry.
|
||||
new_srcdir = os.path.relpath(src_dir, os.path.dirname(args.output))
|
||||
repl.append(
|
||||
(root_obj['SRCDIR'].lo, root_obj['SRCDIR'].hi, repr(new_srcdir)))
|
||||
new_data = _MultiReplace(data, repl)
|
||||
if args.add_header:
|
||||
new_data = ('# GENERATED FILE.\n' +
|
||||
'# Edit {} instead.\n'.format(args.input) +
|
||||
'#################\n') + new_data
|
||||
_WriteFile(args.output, new_data)
|
||||
|
||||
if args.depfile:
|
||||
deps_data = '{}: {}'.format(args.output, ' '.join(sorted(seen_files)))
|
||||
_WriteFile(args.depfile, deps_data)
|
||||
|
@ -15,29 +15,34 @@ import collections
|
||||
import os
|
||||
|
||||
from grit import grd_reader
|
||||
from grit import util
|
||||
from grit.tool.update_resource_ids import common
|
||||
|
||||
TAGS_OF_INTEREST = set(['include', 'message', 'structure'])
|
||||
|
||||
|
||||
def _CountResourceUsage(grd):
|
||||
def _CountResourceUsage(grd, seen_files):
|
||||
tag_name_to_count = {tag: set() for tag in TAGS_OF_INTEREST}
|
||||
# Pass '_chromium', but '_google_chrome' would produce the same result.
|
||||
root = grd_reader.Parse(grd, defines={'_chromium': True})
|
||||
seen_files.add(grd)
|
||||
# Count all descendant tags, regardless of whether they're active.
|
||||
for node in root.Preorder():
|
||||
if node.name in TAGS_OF_INTEREST:
|
||||
tag_name_to_count[node.name].add(node.attrs['name'])
|
||||
elif node.name == 'part':
|
||||
part_path = os.path.join(os.path.dirname(grd), node.GetInputPath())
|
||||
seen_files.add(util.normpath(part_path))
|
||||
return {k: len(v) for k, v in tag_name_to_count.iteritems() if v}
|
||||
|
||||
|
||||
def GenerateResourceUsages(item_list, src_dir, fake):
|
||||
def GenerateResourceUsages(item_list, src_dir, fake, seen_files):
|
||||
"""Visits a list of ItemInfo to generate maps from tag name to usage.
|
||||
|
||||
Args:
|
||||
root_obj: Root dict of a resource_ids file.
|
||||
src_dir: Absolute directory of Chrome's src/ directory.
|
||||
fake: For testing: Sets 10 as usages for all tags, to avoid reading GRD.
|
||||
seen_files: A set to collect paths of files read.
|
||||
Yields:
|
||||
Tuple (item, tag_name_to_usage), where |item| is from |item_list| and
|
||||
|tag_name_to_usage| is a dict() mapping tag name to (int) usage.
|
||||
@ -64,9 +69,12 @@ def GenerateResourceUsages(item_list, src_dir, fake):
|
||||
raise ValueError('%s: Generated GRD must use META with "sizes" field '
|
||||
'to specify size bounds.' % item.grd)
|
||||
grd_file = os.sep.join([src_dir, item.grd])
|
||||
if not os.path.isfile(grd_file):
|
||||
raise ValueError('Nonexistent GRD provided: %s' % item.grd)
|
||||
tag_name_to_usage = _CountResourceUsage(grd_file)
|
||||
if not os.path.exists(grd_file):
|
||||
# Silently skip missing files so that src-internal files do not break
|
||||
# public checkouts.
|
||||
yield item, {}
|
||||
continue
|
||||
tag_name_to_usage = _CountResourceUsage(grd_file, seen_files)
|
||||
tag_names = set(tag_name_to_usage.keys())
|
||||
if not tag_names.issubset(supported_tag_names):
|
||||
missing = [t + 's' for t in tag_names - supported_tag_names]
|
||||
|
@ -223,7 +223,10 @@ _strip_resource_files = is_android && is_official_build
|
||||
_js_minifier = "//tools/grit/minify_with_uglify.py"
|
||||
_css_minifier = "//tools/grit/minimize_css.py"
|
||||
|
||||
grit_resource_id_file = "//tools/gritsettings/resource_ids"
|
||||
grit_resource_id_target = "//tools/gritsettings:default_resource_ids"
|
||||
grit_resource_id_file =
|
||||
get_label_info(grit_resource_id_target, "target_gen_dir") +
|
||||
"/default_resource_ids"
|
||||
grit_info_script = "//tools/grit/grit_info.py"
|
||||
|
||||
# TODO(asvitkine): Add predetermined ids files for other platforms.
|
||||
@ -238,171 +241,167 @@ if (is_win) {
|
||||
}
|
||||
|
||||
template("grit") {
|
||||
assert(defined(invoker.source),
|
||||
"\"source\" must be defined for the grit template $target_name")
|
||||
|
||||
if (defined(invoker.resource_ids)) {
|
||||
resource_ids = invoker.resource_ids
|
||||
if (defined(invoker.output_dir)) {
|
||||
_output_dir = invoker.output_dir
|
||||
} else {
|
||||
resource_ids = grit_resource_id_file
|
||||
_output_dir = target_gen_dir
|
||||
}
|
||||
|
||||
if (defined(invoker.output_dir)) {
|
||||
output_dir = invoker.output_dir
|
||||
} else {
|
||||
output_dir = target_gen_dir
|
||||
_grit_outputs =
|
||||
get_path_info(rebase_path(invoker.outputs, ".", _output_dir), "abspath")
|
||||
|
||||
# Add .info output for all pak files
|
||||
_pak_info_outputs = []
|
||||
foreach(output, _grit_outputs) {
|
||||
if (get_path_info(output, "extension") == "pak") {
|
||||
_pak_info_outputs += [ output + ".info" ]
|
||||
}
|
||||
}
|
||||
|
||||
if (defined(invoker.output_name)) {
|
||||
grit_output_name = invoker.output_name
|
||||
_grit_output_name = invoker.output_name
|
||||
} else {
|
||||
grit_output_name = target_name
|
||||
_grit_output_name = target_name
|
||||
}
|
||||
|
||||
# These are all passed as arguments to the script so have to be relative to
|
||||
# the build directory.
|
||||
rebased_output_dir = rebase_path(output_dir, root_build_dir)
|
||||
source_path = rebase_path(invoker.source, root_build_dir)
|
||||
|
||||
# Compute flags.
|
||||
grit_flags = []
|
||||
if (defined(invoker.grit_flags)) {
|
||||
grit_flags += invoker.grit_flags
|
||||
}
|
||||
if (resource_ids != "") {
|
||||
grit_flags += [
|
||||
"-f",
|
||||
rebase_path(resource_ids, root_build_dir),
|
||||
]
|
||||
}
|
||||
if (grit_predetermined_resource_ids_file != "") {
|
||||
grit_flags += [
|
||||
"-p",
|
||||
rebase_path(grit_predetermined_resource_ids_file, root_build_dir),
|
||||
]
|
||||
}
|
||||
|
||||
if (defined(invoker.source_is_generated)) {
|
||||
source_is_generated = invoker.source_is_generated
|
||||
} else {
|
||||
source_is_generated = false
|
||||
}
|
||||
|
||||
assert_files_flags = []
|
||||
|
||||
# We want to make sure the declared outputs actually match what Grit is
|
||||
# writing. We write the list to a file (some of the output lists are long
|
||||
# enough to not fit on a Windows command line) and ask Grit to verify those
|
||||
# are the actual outputs at runtime.
|
||||
asserted_list_file =
|
||||
"$target_out_dir/${grit_output_name}_expected_outputs.txt"
|
||||
write_file(asserted_list_file,
|
||||
rebase_path(invoker.outputs, root_build_dir, output_dir))
|
||||
assert_files_flags += [ "--assert-file-list=" +
|
||||
rebase_path(asserted_list_file, root_build_dir) ]
|
||||
grit_outputs =
|
||||
get_path_info(rebase_path(invoker.outputs, ".", output_dir), "abspath")
|
||||
|
||||
# Add .info output for all pak files
|
||||
pak_info_outputs = []
|
||||
foreach(output, grit_outputs) {
|
||||
if (get_path_info(output, "extension") == "pak") {
|
||||
pak_info_outputs += [ output + ".info" ]
|
||||
}
|
||||
}
|
||||
|
||||
grit_custom_target = target_name + "_grit"
|
||||
action(grit_custom_target) {
|
||||
_grit_custom_target = target_name + "_grit"
|
||||
action(_grit_custom_target) {
|
||||
testonly = defined(invoker.testonly) && invoker.testonly
|
||||
|
||||
script = "//tools/grit/grit.py"
|
||||
depfile = "$target_gen_dir/$target_name.d"
|
||||
|
||||
inputs = [
|
||||
invoker.source,
|
||||
asserted_list_file,
|
||||
]
|
||||
if (resource_ids != "") {
|
||||
# The script depends on the ID file. Only add this dependency if the ID
|
||||
# file is specified.
|
||||
inputs += [ resource_ids ]
|
||||
}
|
||||
if (grit_predetermined_resource_ids_file != "") {
|
||||
# If the predetermined ID file is present, the script outputs depend on
|
||||
# it too.
|
||||
inputs += [ grit_predetermined_resource_ids_file ]
|
||||
}
|
||||
deps = [
|
||||
"//tools/grit:grit_sources",
|
||||
]
|
||||
outputs = [ "${depfile}.stamp" ] + _grit_outputs + _pak_info_outputs
|
||||
|
||||
depfile = "$target_gen_dir/$target_name.d"
|
||||
outputs = [ "${depfile}.stamp" ] + grit_outputs + pak_info_outputs
|
||||
|
||||
args = [
|
||||
"-i",
|
||||
source_path,
|
||||
"build",
|
||||
"-o",
|
||||
rebased_output_dir,
|
||||
"--depdir",
|
||||
".",
|
||||
"--depfile",
|
||||
rebase_path(depfile, root_build_dir),
|
||||
"--write-only-new=1",
|
||||
"--depend-on-stamp",
|
||||
] + grit_defines
|
||||
|
||||
# Add brotli executable if using brotli.
|
||||
if (defined(invoker.use_brotli) && invoker.use_brotli) {
|
||||
brotli_target = "//third_party/brotli:brotli($host_toolchain)"
|
||||
brotli_executable = get_label_info(brotli_target, "root_out_dir") + "/" +
|
||||
get_label_info(brotli_target, "name")
|
||||
if (host_os == "win") {
|
||||
brotli_executable += ".exe"
|
||||
}
|
||||
|
||||
inputs += [ brotli_executable ]
|
||||
args += [
|
||||
"--brotli",
|
||||
rebase_path(brotli_executable, root_build_dir),
|
||||
]
|
||||
}
|
||||
_grit_flags = grit_defines
|
||||
|
||||
# Add extra defines with -D flags.
|
||||
define_args = []
|
||||
if (defined(invoker.defines)) {
|
||||
foreach(i, invoker.defines) {
|
||||
define_args += [
|
||||
_grit_flags += [
|
||||
"-D",
|
||||
i,
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
args += define_args + grit_flags + assert_files_flags
|
||||
if (defined(invoker.grit_flags)) {
|
||||
_grit_flags += invoker.grit_flags
|
||||
}
|
||||
|
||||
_rebased_source_path = rebase_path(invoker.source, root_build_dir)
|
||||
_source_is_generated =
|
||||
defined(invoker.source_is_generated) && invoker.source_is_generated
|
||||
if (!_source_is_generated && compute_inputs_for_analyze) {
|
||||
# Only call exec_script when the user has explicitly opted into greater
|
||||
# precision at the expense of performance.
|
||||
_rel_inputs = exec_script("//tools/grit/grit_info.py",
|
||||
[
|
||||
"--inputs",
|
||||
_rebased_source_path,
|
||||
] + _grit_flags,
|
||||
"list lines")
|
||||
inputs += rebase_path(_rel_inputs, ".", root_build_dir)
|
||||
}
|
||||
|
||||
args = [
|
||||
"-i",
|
||||
_rebased_source_path,
|
||||
"build",
|
||||
"-o",
|
||||
rebase_path(_output_dir, root_build_dir),
|
||||
"--depdir",
|
||||
".",
|
||||
"--depfile",
|
||||
rebase_path(depfile, root_build_dir),
|
||||
"--write-only-new=1",
|
||||
"--depend-on-stamp",
|
||||
] + _grit_flags
|
||||
|
||||
# Add brotli executable if using brotli.
|
||||
if (defined(invoker.use_brotli) && invoker.use_brotli) {
|
||||
_brotli_target = "//third_party/brotli:brotli($host_toolchain)"
|
||||
_brotli_executable = get_label_info(_brotli_target, "root_out_dir") +
|
||||
"/" + get_label_info(_brotli_target, "name")
|
||||
if (host_os == "win") {
|
||||
_brotli_executable += ".exe"
|
||||
}
|
||||
|
||||
inputs += [ _brotli_executable ]
|
||||
args += [
|
||||
"--brotli",
|
||||
rebase_path(_brotli_executable, root_build_dir),
|
||||
]
|
||||
}
|
||||
|
||||
_resource_ids = grit_resource_id_file
|
||||
if (defined(invoker.resource_ids)) {
|
||||
_resource_ids = invoker.resource_ids
|
||||
}
|
||||
|
||||
if (_resource_ids != "") {
|
||||
inputs += [ _resource_ids ]
|
||||
args += [
|
||||
"-f",
|
||||
rebase_path(_resource_ids, root_build_dir),
|
||||
]
|
||||
if (_resource_ids == grit_resource_id_file) {
|
||||
deps += [ grit_resource_id_target ]
|
||||
}
|
||||
}
|
||||
if (grit_predetermined_resource_ids_file != "") {
|
||||
inputs += [ grit_predetermined_resource_ids_file ]
|
||||
args += [
|
||||
"-p",
|
||||
rebase_path(grit_predetermined_resource_ids_file, root_build_dir),
|
||||
]
|
||||
}
|
||||
|
||||
# We want to make sure the declared outputs actually match what Grit is
|
||||
# writing. We write the list to a file (some of the output lists are long
|
||||
# enough to not fit on a Windows command line) and ask Grit to verify those
|
||||
# are the actual outputs at runtime.
|
||||
_asserted_list_file =
|
||||
"$target_out_dir/${_grit_output_name}_expected_outputs.txt"
|
||||
write_file(_asserted_list_file,
|
||||
rebase_path(invoker.outputs, root_build_dir, _output_dir))
|
||||
inputs += [ _asserted_list_file ]
|
||||
args += [
|
||||
"--assert-file-list",
|
||||
rebase_path(_asserted_list_file, root_build_dir),
|
||||
]
|
||||
|
||||
if (enable_resource_whitelist_generation) {
|
||||
rc_grit_outputs = []
|
||||
foreach(output, grit_outputs) {
|
||||
_rc_grit_outputs = []
|
||||
foreach(output, _grit_outputs) {
|
||||
if (get_path_info(output, "extension") == "rc") {
|
||||
rc_grit_outputs += [ output ]
|
||||
_rc_grit_outputs += [ output ]
|
||||
}
|
||||
}
|
||||
|
||||
if (rc_grit_outputs != []) {
|
||||
if (_rc_grit_outputs != []) {
|
||||
# Resource whitelisting cannot be used with .rc files.
|
||||
# Make sure that there aren't any .pak outputs which would require
|
||||
# whitelist annotations.
|
||||
assert(pak_info_outputs == [], "can't combine .pak and .rc outputs")
|
||||
assert(_pak_info_outputs == [], "can't combine .pak and .rc outputs")
|
||||
} else {
|
||||
args += [ "--whitelist-support" ]
|
||||
}
|
||||
}
|
||||
if (_strip_resource_files) {
|
||||
js_minifier_command = rebase_path(_js_minifier, root_build_dir)
|
||||
css_minifier_command = rebase_path(_css_minifier, root_build_dir)
|
||||
_js_minifier_command = rebase_path(_js_minifier, root_build_dir)
|
||||
_css_minifier_command = rebase_path(_css_minifier, root_build_dir)
|
||||
args += [
|
||||
"--js-minifier",
|
||||
js_minifier_command,
|
||||
_js_minifier_command,
|
||||
"--css-minifier",
|
||||
css_minifier_command,
|
||||
_css_minifier_command,
|
||||
]
|
||||
inputs += [
|
||||
_js_minifier,
|
||||
@ -410,27 +409,6 @@ template("grit") {
|
||||
]
|
||||
}
|
||||
|
||||
# Must be after the args are computed since they are re-used.
|
||||
# See the comments for the two variables used in this condition for
|
||||
# why this works this way.
|
||||
if (compute_inputs_for_analyze && !source_is_generated) {
|
||||
grit_info_script = "//tools/grit/grit_info.py"
|
||||
grit_info_args = [
|
||||
"--inputs",
|
||||
source_path,
|
||||
] + grit_flags + grit_defines + define_args
|
||||
|
||||
# Only call exec_script when the user has explicitly opted into greater
|
||||
# precision at the expense of performance.
|
||||
rel_inputs = exec_script(grit_info_script,
|
||||
grit_info_args,
|
||||
"list lines",
|
||||
[ grit_info_script ])
|
||||
inputs += rebase_path(rel_inputs, ".", root_build_dir)
|
||||
} else {
|
||||
assert(source_is_generated || !source_is_generated) # Prevent error.
|
||||
}
|
||||
|
||||
if (defined(invoker.visibility)) {
|
||||
# This needs to include both what the invoker specified (since they
|
||||
# probably include generated headers from this target), as well as the
|
||||
@ -442,9 +420,6 @@ template("grit") {
|
||||
visibility = [ ":${invoker.target_name}" ] + invoker.visibility
|
||||
}
|
||||
|
||||
deps = [
|
||||
"//tools/grit:grit_sources",
|
||||
]
|
||||
if (defined(invoker.use_brotli) && invoker.use_brotli) {
|
||||
if (is_mac && is_asan) {
|
||||
deps += [ "//tools/grit:brotli_mac_asan_workaround" ]
|
||||
@ -468,11 +443,11 @@ template("grit") {
|
||||
# Since we generate a file, we need to be run before the targets that
|
||||
# depend on us.
|
||||
sources = []
|
||||
foreach(output, grit_outputs) {
|
||||
extension = get_path_info(output, "extension")
|
||||
if (extension != "json" && extension != "gz" && extension != "pak" &&
|
||||
extension != "xml") {
|
||||
sources += [ output ]
|
||||
foreach(_output, _grit_outputs) {
|
||||
_extension = get_path_info(_output, "extension")
|
||||
if (_extension != "json" && _extension != "gz" && _extension != "pak" &&
|
||||
_extension != "xml") {
|
||||
sources += [ _output ]
|
||||
}
|
||||
}
|
||||
|
||||
@ -481,7 +456,7 @@ template("grit") {
|
||||
# action publicly so other scripts can take the outputs from the grit
|
||||
# script as inputs.
|
||||
public_deps = [
|
||||
":$grit_custom_target",
|
||||
":$_grit_custom_target",
|
||||
]
|
||||
|
||||
deps = [
|
||||
@ -499,6 +474,6 @@ template("grit") {
|
||||
if (defined(invoker.visibility)) {
|
||||
visibility = invoker.visibility
|
||||
}
|
||||
output_name = grit_output_name
|
||||
output_name = _grit_output_name
|
||||
}
|
||||
}
|
||||
|
41
tools/gritsettings/BUILD.gn
Normal file
41
tools/gritsettings/BUILD.gn
Normal file
@ -0,0 +1,41 @@
|
||||
# Copyright 2020 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.
|
||||
|
||||
import("//build/config/compute_inputs_for_analyze.gni")
|
||||
import("//tools/grit/grit_rule.gni")
|
||||
|
||||
action("default_resource_ids") {
|
||||
script = "//tools/grit/grit.py"
|
||||
inputs = [
|
||||
"resource_ids.spec",
|
||||
]
|
||||
outputs = [
|
||||
grit_resource_id_file,
|
||||
]
|
||||
deps = [
|
||||
"//tools/grit:grit_sources",
|
||||
]
|
||||
depfile = "$target_gen_dir/$target_name.d"
|
||||
_rebased_input = rebase_path(inputs[0], root_build_dir)
|
||||
args = [
|
||||
"update_resource_ids",
|
||||
"-o",
|
||||
rebase_path(grit_resource_id_file, root_build_dir),
|
||||
"--add-header",
|
||||
"--depfile",
|
||||
rebase_path(depfile, root_build_dir),
|
||||
_rebased_input,
|
||||
]
|
||||
|
||||
if (compute_inputs_for_analyze) {
|
||||
_depfile_inputs = exec_script(script,
|
||||
[
|
||||
"update_resource_ids",
|
||||
"--analyze-inputs",
|
||||
_rebased_input,
|
||||
],
|
||||
"list lines")
|
||||
inputs += rebase_path(_depfile_inputs, ".", root_build_dir)
|
||||
}
|
||||
}
|
@ -30,10 +30,6 @@
|
||||
# "META": {"join": <duplicate count>},
|
||||
# for the item following duplicates. Be sure to look for duplicates that
|
||||
# may appear earlier than those that immediately precede the item.
|
||||
# * To update IDs, run the following (from src/):
|
||||
#
|
||||
# python tools/grit/grit.py update_resource_ids \
|
||||
# -o tools/gritsettings/resource_ids tools/gritsettings/resource_ids
|
||||
{
|
||||
# The first entry in the file, SRCDIR, is special: It is a relative path from
|
||||
# this file to the base of your checkout.
|
||||
@ -60,13 +56,13 @@
|
||||
"chrome/app/generated_resources.grd": {
|
||||
# Big alignment since strings (previous item) are frequently added.
|
||||
"META": {"join": 2, "align": 200},
|
||||
"messages": [800],
|
||||
"messages": [600],
|
||||
},
|
||||
|
||||
"chrome/app/resources/locale_settings.grd": {
|
||||
# Big alignment since strings (previous item) are frequently added.
|
||||
"META": {"align": 1000},
|
||||
"messages": [9000],
|
||||
"messages": [1000],
|
||||
},
|
||||
|
||||
# These each start with the same resource id because we only use one
|
||||
@ -74,29 +70,29 @@
|
||||
"chrome/app/resources/locale_settings_chromiumos.grd": {
|
||||
# Big alignment since strings (previous item) are frequently added.
|
||||
"META": {"align": 100},
|
||||
"messages": [9100],
|
||||
"messages": [1100],
|
||||
},
|
||||
"chrome/app/resources/locale_settings_google_chromeos.grd": {
|
||||
"messages": [9100],
|
||||
"messages": [1100],
|
||||
},
|
||||
"chrome/app/resources/locale_settings_linux.grd": {
|
||||
"messages": [9100],
|
||||
"messages": [1100],
|
||||
},
|
||||
"chrome/app/resources/locale_settings_mac.grd": {
|
||||
"messages": [9100],
|
||||
"messages": [1100],
|
||||
},
|
||||
"chrome/app/resources/locale_settings_win.grd": {
|
||||
"messages": [9100],
|
||||
"messages": [1100],
|
||||
},
|
||||
|
||||
"chrome/app/theme/chrome_unscaled_resources.grd": {
|
||||
"META": {"join": 5},
|
||||
"includes": [9150],
|
||||
"includes": [1120],
|
||||
},
|
||||
|
||||
# Leave space for theme_resources since it has many structures.
|
||||
"chrome/app/theme/theme_resources.grd": {
|
||||
"structures": [9230],
|
||||
"structures": [1140],
|
||||
},
|
||||
# END chrome/app section.
|
||||
|
||||
@ -104,92 +100,92 @@
|
||||
"chrome/browser/dev_ui_browser_resources.grd": {
|
||||
# Big alignment at start of section.
|
||||
"META": {"align": 100},
|
||||
"includes": [9500],
|
||||
"includes": [1200],
|
||||
},
|
||||
"chrome/browser/browser_resources.grd": {
|
||||
"includes": [9570],
|
||||
"structures": [9910],
|
||||
"includes": [1220],
|
||||
"structures": [1240],
|
||||
},
|
||||
"chrome/browser/resources/bookmarks/bookmarks_resources.grd": {
|
||||
"includes": [9940],
|
||||
"structures": [9960],
|
||||
"includes": [1260],
|
||||
"structures": [1280],
|
||||
},
|
||||
"chrome/browser/resources/bookmarks/bookmarks_resources_vulcanized.grd": {
|
||||
"includes": [9980],
|
||||
"includes": [1300],
|
||||
},
|
||||
"chrome/browser/resources/chromeos/camera/camera_resources.grd": {
|
||||
"includes": [9990],
|
||||
"structures": [10050],
|
||||
"includes": [1320],
|
||||
"structures": [1340],
|
||||
},
|
||||
"chrome/browser/resources/chromeos/camera/src/strings/camera_strings.grd": {
|
||||
"messages": [10110],
|
||||
"messages": [1360],
|
||||
},
|
||||
"chrome/browser/resources/chromeos/cellular_setup/cellular_setup_resources.grd": {
|
||||
"structures": [10200],
|
||||
"structures": [1380],
|
||||
},
|
||||
"chrome/browser/resources/chromeos/multidevice_setup/multidevice_setup_resources.grd": {
|
||||
"structures": [10210],
|
||||
"structures": [1400],
|
||||
},
|
||||
"chrome/browser/resources/component_extension_resources.grd": {
|
||||
"includes": [10220],
|
||||
"structures": [10360],
|
||||
"includes": [1420],
|
||||
"structures": [1440],
|
||||
},
|
||||
"chrome/browser/resources/downloads/downloads_resources_vulcanized.grd": {
|
||||
"includes": [10370],
|
||||
"includes": [1460],
|
||||
},
|
||||
"chrome/browser/resources/downloads/downloads_resources.grd": {
|
||||
"includes": [10380],
|
||||
"structures": [10390],
|
||||
"includes": [1480],
|
||||
"structures": [1500],
|
||||
},
|
||||
"chrome/browser/resources/extensions/extensions_resources_vulcanized.grd": {
|
||||
"includes": [10400],
|
||||
"includes": [1520],
|
||||
},
|
||||
"chrome/browser/resources/extensions/extensions_resources.grd": {
|
||||
"includes": [10410],
|
||||
"structures": [10450],
|
||||
"includes": [1540],
|
||||
"structures": [1560],
|
||||
},
|
||||
"chrome/browser/resources/history/history_resources_vulcanized.grd": {
|
||||
"includes": [10470],
|
||||
"includes": [1580],
|
||||
},
|
||||
"chrome/browser/resources/history/history_resources.grd": {
|
||||
"includes": [10480],
|
||||
"includes": [1600],
|
||||
},
|
||||
"chrome/browser/resources/local_ntp/local_ntp_resources.grd": {
|
||||
"includes": [10510],
|
||||
"includes": [1620],
|
||||
},
|
||||
"chrome/browser/resources/new_tab_page/new_tab_page_resources.grd": {
|
||||
"includes": [10550],
|
||||
"structures": [10560],
|
||||
"includes": [1640],
|
||||
"structures": [1660],
|
||||
},
|
||||
"chrome/browser/resources/print_preview/print_preview_resources_vulcanized.grd": {
|
||||
"includes": [10570],
|
||||
"includes": [1680],
|
||||
},
|
||||
"chrome/browser/resources/print_preview/print_preview_resources.grd": {
|
||||
"includes": [10580],
|
||||
"structures": [10630],
|
||||
"includes": [1700],
|
||||
"structures": [1720],
|
||||
},
|
||||
"chrome/browser/resources/settings/os_settings_resources_vulcanized.grd": {
|
||||
"includes": [10670],
|
||||
"includes": [1740],
|
||||
},
|
||||
"chrome/browser/resources/settings/os_settings_resources.grd": {
|
||||
"structures": [10680],
|
||||
"structures": [1760],
|
||||
},
|
||||
"chrome/browser/resources/settings/settings_resources_vulcanized.grd": {
|
||||
"includes": [11160],
|
||||
"includes": [1780],
|
||||
},
|
||||
"chrome/browser/resources/settings/settings_resources.grd": {
|
||||
"structures": [11170],
|
||||
"structures": [1800],
|
||||
},
|
||||
"chrome/browser/resources/tab_strip/tab_strip_resources.grd": {
|
||||
"structures": [11620],
|
||||
"includes": [11640],
|
||||
"structures": [1820],
|
||||
"includes": [1840],
|
||||
},
|
||||
"chrome/browser/resources/welcome/welcome_resources.grd": {
|
||||
"includes": [11660],
|
||||
"structures": [11690],
|
||||
"includes": [1860],
|
||||
"structures": [1880],
|
||||
},
|
||||
"chrome/browser/vr/testapp/vr_testapp_resources.grd": {
|
||||
"includes": [11710],
|
||||
"includes": [1900],
|
||||
},
|
||||
# END chrome/browser section.
|
||||
|
||||
@ -197,43 +193,43 @@
|
||||
"chrome/browser/media/kaleidoscope/internal/kaleidoscope_resources.grd": {
|
||||
# Big alignment at start of section.
|
||||
"META": {"align": 100},
|
||||
"includes": [11800],
|
||||
"includes": [2000],
|
||||
},
|
||||
"chrome/browser/resources/bluetooth_internals/resources.grd": {
|
||||
"includes": [11810],
|
||||
"includes": [2020],
|
||||
},
|
||||
"chrome/browser/resources/invalidations/invalidations_resources.grd": {
|
||||
"includes": [11850],
|
||||
"includes": [2040],
|
||||
},
|
||||
"chrome/browser/resources/media/webrtc_logs_resources.grd": {
|
||||
"includes": [11860],
|
||||
"includes": [2060],
|
||||
},
|
||||
"chrome/browser/resources/net_internals/net_internals_resources.grd": {
|
||||
"includes": [11870],
|
||||
"includes": [2080],
|
||||
},
|
||||
"chrome/browser/resources/omnibox/resources.grd": {
|
||||
"includes": [11880],
|
||||
"includes": [2100],
|
||||
},
|
||||
"chrome/browser/resources/quota_internals/quota_internals_resources.grd": {
|
||||
"includes": [11900],
|
||||
"includes": [2120],
|
||||
},
|
||||
"chrome/browser/resources/sync_file_system_internals/sync_file_system_internals_resources.grd": {
|
||||
"includes": [11910],
|
||||
"includes": [2140],
|
||||
},
|
||||
"chrome/browser/resources/usb_internals/resources.grd": {
|
||||
"includes": [11920],
|
||||
"includes": [2160],
|
||||
},
|
||||
"chrome/browser/resources/webapks/webapks_ui_resources.grd": {
|
||||
"includes": [11930],
|
||||
"includes": [2180],
|
||||
},
|
||||
"components/sync/driver/resources.grd": {
|
||||
"includes": [11940],
|
||||
"includes": [2200],
|
||||
},
|
||||
"content/browser/resources/media/media_internals_resources.grd": {
|
||||
"includes": [11960],
|
||||
"includes": [2220],
|
||||
},
|
||||
"content/browser/webrtc/resources/resources.grd": {
|
||||
"includes": [11970],
|
||||
"includes": [2240],
|
||||
},
|
||||
# END chrome/ WebUI resources section
|
||||
|
||||
@ -241,21 +237,21 @@
|
||||
"chrome/android/features/test_dummy/internal/resources/resources.grd": {
|
||||
# Big alignment at start of section.
|
||||
"META": {"align": 100},
|
||||
"includes": [12000],
|
||||
"includes": [2300],
|
||||
},
|
||||
"chrome/common/common_resources.grd": {
|
||||
"includes": [12010],
|
||||
"includes": [2320],
|
||||
},
|
||||
"chrome/credential_provider/gaiacp/gaia_resources.grd": {
|
||||
"includes": [12020],
|
||||
"messages": [12030],
|
||||
"includes": [2340],
|
||||
"messages": [2360],
|
||||
},
|
||||
"chrome/renderer/resources/renderer_resources.grd": {
|
||||
"includes": [12070],
|
||||
"structures": [12150],
|
||||
"includes": [2380],
|
||||
"structures": [2400],
|
||||
},
|
||||
"chrome/test/data/webui_test_resources.grd": {
|
||||
"includes": [12160],
|
||||
"includes": [2420],
|
||||
},
|
||||
# END chrome/ miscellaneous section.
|
||||
|
||||
@ -263,10 +259,10 @@
|
||||
"chromeos/chromeos_strings.grd": {
|
||||
# Big alignment at start of section.
|
||||
"META": {"align": 100},
|
||||
"messages": [12200],
|
||||
"messages": [2500],
|
||||
},
|
||||
"chromeos/components/help_app_ui/resources/help_app_resources.grd": {
|
||||
"includes": [12250],
|
||||
"includes": [2520],
|
||||
},
|
||||
# Both help_app_bundle_resources.grd and help_app_bundle_mock_resources.grd
|
||||
# start with the same id because only one of them is built depending on if
|
||||
@ -274,14 +270,14 @@
|
||||
# of languages (74).
|
||||
"chromeos/components/help_app_ui/resources/app/help_app_bundle_resources.grd": {
|
||||
"META": {"sizes": {"includes": [100],}}, # Relies on src-internal.
|
||||
"includes": [12260],
|
||||
"includes": [2540],
|
||||
},
|
||||
"chromeos/components/help_app_ui/resources/mock/help_app_bundle_mock_resources.grd": {
|
||||
"includes": [12260],
|
||||
"includes": [2540],
|
||||
},
|
||||
"chromeos/components/media_app_ui/resources/media_app_resources.grd": {
|
||||
"META": {"join": 2},
|
||||
"includes": [12380],
|
||||
"includes": [2560],
|
||||
},
|
||||
# Both media_app_bundle_resources.grd and media_app_bundle_mock_resources.grd
|
||||
# start with the same id because only one of them is built depending on if
|
||||
@ -289,17 +285,17 @@
|
||||
# of languages (74).
|
||||
"chromeos/components/media_app_ui/resources/app/app/media_app_bundle_resources.grd": {
|
||||
"META": {"sizes": {"includes": [120],}}, # Relies on src-internal.
|
||||
"includes": [12390],
|
||||
"includes": [2580],
|
||||
},
|
||||
"chromeos/components/media_app_ui/resources/mock/media_app_bundle_mock_resources.grd": {
|
||||
"includes": [12390],
|
||||
"includes": [2580],
|
||||
},
|
||||
"chromeos/components/sample_system_web_app_ui/resources/sample_system_web_app_resources.grd": {
|
||||
"META": {"join": 2},
|
||||
"includes": [12530],
|
||||
"includes": [2600],
|
||||
},
|
||||
"chromeos/resources/chromeos_resources.grd": {
|
||||
"includes": [12540],
|
||||
"includes": [2620],
|
||||
},
|
||||
# END chromeos/ section.
|
||||
|
||||
@ -310,37 +306,37 @@
|
||||
"components/components_chromium_strings.grd": {
|
||||
# Big alignment at start of section.
|
||||
"META": {"align": 100},
|
||||
"messages": [12600],
|
||||
"messages": [2700],
|
||||
},
|
||||
"components/components_google_chrome_strings.grd": {
|
||||
"messages": [12600],
|
||||
"messages": [2700],
|
||||
},
|
||||
|
||||
"components/components_locale_settings.grd": {
|
||||
"META": {"join": 2},
|
||||
"includes": [12620],
|
||||
"messages": [12630],
|
||||
"includes": [2720],
|
||||
"messages": [2740],
|
||||
},
|
||||
"components/components_strings.grd": {
|
||||
"messages": [12640],
|
||||
"messages": [2760],
|
||||
},
|
||||
"components/omnibox/resources/omnibox_resources.grd": {
|
||||
"includes": [14590],
|
||||
"includes": [2780],
|
||||
},
|
||||
"components/policy/resources/policy_templates.grd": {
|
||||
"structures": [14600],
|
||||
"structures": [2800],
|
||||
},
|
||||
"components/resources/components_resources.grd": {
|
||||
"includes": [14610],
|
||||
"includes": [2820],
|
||||
},
|
||||
"components/resources/components_scaled_resources.grd": {
|
||||
"structures": [14690],
|
||||
"structures": [2840],
|
||||
},
|
||||
"components/embedder_support/android/java/strings/web_contents_delegate_android_strings.grd": {
|
||||
"messages": [14730],
|
||||
"messages": [2860],
|
||||
},
|
||||
"components/autofill/core/browser/autofill_address_rewriter_resources.grd":{
|
||||
"includes": [14750]
|
||||
"includes": [2880]
|
||||
},
|
||||
# END components/ section.
|
||||
|
||||
@ -373,26 +369,26 @@
|
||||
"ios/chrome/app/theme/ios_theme_resources.grd": {
|
||||
# Big alignment since strings (previous item) are frequently added.
|
||||
"META": {"align": 100},
|
||||
"structures": [1400],
|
||||
"structures": [700],
|
||||
},
|
||||
"ios/chrome/share_extension/strings/ios_share_extension_strings.grd": {
|
||||
"messages": [1440],
|
||||
"messages": [720],
|
||||
},
|
||||
"ios/chrome/search_widget_extension/strings/ios_search_widget_extension_strings.grd": {
|
||||
"messages": [1450],
|
||||
"messages": [740],
|
||||
},
|
||||
"ios/chrome/search_widget_extension/strings/ios_search_widget_extension_chromium_strings.grd": {
|
||||
"messages": [1470],
|
||||
"messages": [760],
|
||||
},
|
||||
"ios/chrome/search_widget_extension/strings/ios_search_widget_extension_google_chrome_strings.grd": {
|
||||
"messages": [1470],
|
||||
"messages": [760],
|
||||
},
|
||||
"ios/chrome/content_widget_extension/strings/ios_content_widget_extension_chromium_strings.grd": {
|
||||
"META": {"join": 2},
|
||||
"messages": [1480],
|
||||
"messages": [780],
|
||||
},
|
||||
"ios/chrome/content_widget_extension/strings/ios_content_widget_extension_google_chrome_strings.grd": {
|
||||
"messages": [1480],
|
||||
"messages": [780],
|
||||
},
|
||||
|
||||
# END ios/ section.
|
||||
@ -403,19 +399,19 @@
|
||||
"content/app/resources/content_resources.grd": {
|
||||
# Big alignment at start of section.
|
||||
"META": {"join": 3, "align": 100},
|
||||
"structures": [14800],
|
||||
"structures": [2900],
|
||||
},
|
||||
"content/content_resources.grd": {
|
||||
"includes": [14830],
|
||||
"includes": [2920],
|
||||
},
|
||||
"content/shell/shell_resources.grd": {
|
||||
"includes": [14870],
|
||||
"includes": [2940],
|
||||
},
|
||||
|
||||
# This file is generated during the build.
|
||||
"<(SHARED_INTERMEDIATE_DIR)/content/browser/tracing/tracing_resources.grd": {
|
||||
"META": {"sizes": {"includes": [20],}},
|
||||
"includes": [14880],
|
||||
"includes": [2960],
|
||||
},
|
||||
# END content/ section.
|
||||
|
||||
@ -425,10 +421,10 @@
|
||||
"ios/web/ios_web_resources.grd": {
|
||||
# Big alignment at start of section.
|
||||
"META": {"align": 100},
|
||||
"includes": [14800],
|
||||
"includes": [2900],
|
||||
},
|
||||
"ios/web/test/test_resources.grd": {
|
||||
"includes": [14810],
|
||||
"includes": [2920],
|
||||
},
|
||||
# END ios/web/ section.
|
||||
|
||||
@ -437,143 +433,143 @@
|
||||
"android_webview/ui/aw_resources.grd": {
|
||||
# Big alignment at start of section.
|
||||
"META": {"join": 2, "align": 100},
|
||||
"includes": [15000],
|
||||
"includes": [3000],
|
||||
},
|
||||
"android_webview/ui/aw_strings.grd": {
|
||||
"messages": [15010],
|
||||
"messages": [3020],
|
||||
},
|
||||
|
||||
"ash/app_list/resources/app_list_resources.grd": {
|
||||
"structures": [15020],
|
||||
"structures": [3040],
|
||||
},
|
||||
"ash/ash_strings.grd": {
|
||||
"messages": [15030],
|
||||
"messages": [3060],
|
||||
},
|
||||
"ash/components/ash_components_strings.grd": {
|
||||
"messages": [15770],
|
||||
"messages": [3080],
|
||||
},
|
||||
"ash/keyboard/ui/keyboard_resources.grd": {
|
||||
"includes": [16020],
|
||||
"includes": [3100],
|
||||
},
|
||||
"ash/login/resources/login_resources.grd": {
|
||||
"structures": [16100],
|
||||
"structures": [3120],
|
||||
},
|
||||
"ash/public/cpp/resources/ash_public_unscaled_resources.grd": {
|
||||
"includes": [16110],
|
||||
"includes": [3140],
|
||||
},
|
||||
"chromecast/renderer/resources/extensions_renderer_resources.grd": {
|
||||
"includes": [16120],
|
||||
"includes": [3160],
|
||||
},
|
||||
|
||||
"cloud_print/virtual_driver/win/install/virtual_driver_setup_resources.grd": {
|
||||
"includes": [16130],
|
||||
"messages": [16140],
|
||||
"includes": [3180],
|
||||
"messages": [3200],
|
||||
},
|
||||
|
||||
"device/bluetooth/bluetooth_strings.grd": {
|
||||
"messages": [16150],
|
||||
"messages": [3220],
|
||||
},
|
||||
|
||||
"device/fido/fido_strings.grd": {
|
||||
"messages": [16190],
|
||||
"messages": [3240],
|
||||
},
|
||||
|
||||
"extensions/browser/resources/extensions_browser_resources.grd": {
|
||||
"structures": [16200],
|
||||
"structures": [3260],
|
||||
},
|
||||
"extensions/extensions_resources.grd": {
|
||||
"includes": [16210],
|
||||
"includes": [3280],
|
||||
},
|
||||
"extensions/renderer/resources/extensions_renderer_resources.grd": {
|
||||
"includes": [16220],
|
||||
"structures": [16290],
|
||||
"includes": [3300],
|
||||
"structures": [3320],
|
||||
},
|
||||
"extensions/shell/app_shell_resources.grd": {
|
||||
"includes": [16300],
|
||||
"includes": [3340],
|
||||
},
|
||||
"extensions/strings/extensions_strings.grd": {
|
||||
"messages": [16310],
|
||||
"messages": [3360],
|
||||
},
|
||||
|
||||
"headless/lib/resources/headless_lib_resources.grd": {
|
||||
"includes": [16390],
|
||||
"includes": [3380],
|
||||
},
|
||||
|
||||
"mojo/public/js/mojo_bindings_resources.grd": {
|
||||
"includes": [16400],
|
||||
"includes": [3400],
|
||||
},
|
||||
|
||||
"net/base/net_resources.grd": {
|
||||
"includes": [16420],
|
||||
"includes": [3420],
|
||||
},
|
||||
|
||||
"remoting/resources/remoting_strings.grd": {
|
||||
"messages": [16430],
|
||||
"messages": [3440],
|
||||
},
|
||||
|
||||
"services/services_strings.grd": {
|
||||
"messages": [16810],
|
||||
"messages": [3460],
|
||||
},
|
||||
|
||||
"third_party/blink/public/blink_image_resources.grd": {
|
||||
"structures": [16820],
|
||||
"structures": [3480],
|
||||
},
|
||||
"third_party/blink/public/blink_resources.grd": {
|
||||
"includes": [16830],
|
||||
"includes": [3500],
|
||||
},
|
||||
"third_party/blink/renderer/modules/media_controls/resources/media_controls_resources.grd": {
|
||||
"includes": [16910],
|
||||
"structures": [16920],
|
||||
"includes": [3520],
|
||||
"structures": [3540],
|
||||
},
|
||||
"third_party/blink/public/strings/blink_strings.grd": {
|
||||
"messages": [16930],
|
||||
"messages": [3560],
|
||||
},
|
||||
"third_party/ink/ink_resources.grd": {
|
||||
"includes": [17240],
|
||||
"includes": [3580],
|
||||
},
|
||||
"third_party/libaddressinput/chromium/address_input_strings.grd": {
|
||||
"messages": [17250],
|
||||
"messages": [3600],
|
||||
},
|
||||
|
||||
"ui/base/test/ui_base_test_resources.grd": {
|
||||
"messages": [17300],
|
||||
"messages": [3620],
|
||||
},
|
||||
"ui/chromeos/resources/ui_chromeos_resources.grd": {
|
||||
"structures": [17310],
|
||||
"structures": [3640],
|
||||
},
|
||||
"ui/chromeos/ui_chromeos_strings.grd": {
|
||||
"messages": [17410],
|
||||
"messages": [3660],
|
||||
},
|
||||
"ui/file_manager/file_manager_resources.grd": {
|
||||
"includes": [18330],
|
||||
"includes": [3680],
|
||||
},
|
||||
"ui/resources/ui_resources.grd": {
|
||||
"structures": [18550],
|
||||
"structures": [3700],
|
||||
},
|
||||
"ui/resources/ui_unscaled_resources.grd": {
|
||||
"includes": [18690],
|
||||
"includes": [3720],
|
||||
},
|
||||
"ui/strings/app_locale_settings.grd": {
|
||||
"messages": [18720],
|
||||
"messages": [3740],
|
||||
},
|
||||
"ui/strings/ui_strings.grd": {
|
||||
"messages": [18730],
|
||||
"messages": [3760],
|
||||
},
|
||||
"ui/views/resources/views_resources.grd": {
|
||||
"structures": [19030],
|
||||
"structures": [3780],
|
||||
},
|
||||
"ui/webui/resources/webui_resources.grd": {
|
||||
"includes": [19090],
|
||||
"structures": [19250],
|
||||
"includes": [3800],
|
||||
"structures": [3820],
|
||||
},
|
||||
"weblayer/weblayer_resources.grd": {
|
||||
"includes": [19870],
|
||||
"includes": [3840],
|
||||
},
|
||||
|
||||
# This file is generated during the build.
|
||||
"<(SHARED_INTERMEDIATE_DIR)/devtools/devtools_resources.grd": {
|
||||
"META": {"sizes": {"includes": [500],}},
|
||||
"includes": [19880],
|
||||
"includes": [3860],
|
||||
},
|
||||
|
||||
# END "everything else" section.
|
Reference in New Issue
Block a user