Write sources from flattenhtml to depfiles. (issue 1320683002 by brettw@chromium.org)

1 view
Skip to first unread message

bre...@chromium.org

unread,
Aug 26, 2015, 1:30:59 PM8/26/15
to db...@chromium.org, grit-de...@googlegroups.com
Reviewers: Dan Beam,

Description:
Write sources from flattenhtml to depfiles.

Previously, only explicit inputs were written to depfiles. This patch adds
any
includes in files marked "flattenhtml=true" which are also dependencies of
the
.grd file.

BUG=http://crbug.com/519860

Please review this at https://codereview.chromium.org/1320683002/

Base URL: https://chromium.googlesource.com/external/grit-i18n.git@master

Affected files (+14, -4 lines):
M grit/node/misc.py
M grit/node/misc_unittest.py


Index: grit/node/misc.py
diff --git a/grit/node/misc.py b/grit/node/misc.py
index
7f450188fc75d48e73bb5d40b4e2e78c69d25b4e..1003b877548e243a4b8a8f9ddf9f3742c1aced04
100755
--- a/grit/node/misc.py
+++ b/grit/node/misc.py
@@ -333,9 +333,15 @@ class GritNode(base.Node):
structure.StructureNode,
variant.SkeletonNode)):
input_path = node.GetInputPath()
if input_path is not None:
- input_files.add(input_path)
+ input_files.add(self.ToRealPath(input_path))
+
+ # If it's a flattened node, grab inlined resources too.
+ if node.name == 'structure' and node.attrs['flattenhtml']
== 'true':
+ node.RunPreSubstitutionGatherer()
+ input_files.update(node.GetHtmlResourceFilenames())
+
self.SetOutputLanguage(old_output_language)
- return sorted(map(self.ToRealPath, input_files))
+ return sorted(input_files)

def GetFirstIdsFile(self):
"""Returns a usable path to the first_ids file, if set, otherwise
Index: grit/node/misc_unittest.py
diff --git a/grit/node/misc_unittest.py b/grit/node/misc_unittest.py
index
7eb67a8e73a37dd08f25506f1b95c4edd5a15d3a..dea81b65fd3b5128e3efaa79f84649195d44c723
100644
--- a/grit/node/misc_unittest.py
+++ b/grit/node/misc_unittest.py
@@ -56,6 +56,7 @@ class GritNodeUnittest(unittest.TestCase):
# Verifies that GetInputFiles() returns the correct list of files
# corresponding to ChromeScaledImage nodes when assets are missing.
def testGetInputFilesChromeScaledImage(self):
+ chrome_html_path = util.PathFromRoot('grit/testdata/chrome_html.html')
xml = '''<?xml version="1.0" encoding="utf-8"?>
<grit latest_public_release="0" current_release="1">
<outputs>
@@ -66,12 +67,15 @@ class GritNodeUnittest(unittest.TestCase):
<structures fallback_to_low_resolution="true">
<structure type="chrome_scaled_image" name="IDR_A"
file="a.png" />
<structure type="chrome_scaled_image" name="IDR_B"
file="b.png" />
+ <structure type="chrome_html" name="HTML_FILE1" file="%s"
flattenhtml="true" />
</structures>
</release>
- </grit>'''
+ </grit>''' % chrome_html_path

grd = grd_reader.Parse(StringIO.StringIO(xml),
util.PathFromRoot('grit/testdata'))
- expected =
['default_100_percent/a.png', 'default_100_percent/b.png', 'special_100_percent/a.png']
+ expected = ['chrome_html.html', 'default_100_percent/a.png',
+ 'default_100_percent/b.png', 'included_sample.html',
+ 'special_100_percent/a.png']
actual = [os.path.relpath(path, util.PathFromRoot('grit/testdata'))
for path in grd.GetInputFiles()]
# Convert path separator for Windows paths.
actual = [path.replace('\\', '/') for path in actual]


db...@chromium.org

unread,
Aug 26, 2015, 1:35:03 PM8/26/15
to bre...@chromium.org, grit-de...@googlegroups.com
lgtm but I'm still confused as to how this worked for GYP but not GN...

https://codereview.chromium.org/1320683002/

bre...@chromium.org

unread,
Aug 26, 2015, 1:41:47 PM8/26/15
to db...@chromium.org, grit-de...@googlegroups.com
GYP uses a different code path for getting the input files that doesn't
involve
writing depfiles. The code GYP calls is in tools/grit/grit_info.py.

https://codereview.chromium.org/1320683002/
Reply all
Reply to author
Forward
0 new messages