# Copyright (c) 2013 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 os import parse_deps import re srcdir = os.path.abspath(os.path.join(os.path.dirname(__file__), "../src")) def GritCheck(): filenames = [os.path.join(srcdir, x) for x in [ "base.js", "about_tracing/profiling_view.js"]] grit_files = [] load_sequence = parse_deps.calc_load_sequence(filenames, srcdir) for module in load_sequence: for style_sheet in module.style_sheets: # I'm assuming we only have url()'s associated with images grit_files.extend(re.findall( 'url\((?:["|\']?)([^"\'()]*)(?:["|\']?)\)', style_sheet.contents)) for idx, filename in enumerate(grit_files): while filename.startswith("../"): filename = filename[3:] grit_files[idx] = "src/" + filename known_images = [] for (dirpath, dirnames, filenames) in os.walk('src/images'): for name in filenames: known_images.append(os.path.join(dirpath, name)) u = set(grit_files).union(set(known_images)) i = set(grit_files).intersection(set(known_images)) diff = list(u - i) if len(diff) == 0: return '' error = 'Entries in CSS url()s do not match files in src/images:\n' in_grit_only = list(set(grit_files) - set(known_images)) in_known_only = list(set(known_images) - set(grit_files)) if len(in_grit_only) > 0: error += ' In CSS urls()s only:\n ' + '\n '.join(sorted(in_grit_only)) if len(in_known_only) > 0: if len(in_grit_only) > 0: error += '\n\n' error += ' In src/images only:\n ' + '\n '.join(sorted(in_known_only)) return error