12da489cd246702bee5938545b18a6f710ed214bcJamie Gennis#!/usr/bin/env python 22da489cd246702bee5938545b18a6f710ed214bcJamie Gennis# Copyright (c) 2012 The Chromium Authors. All rights reserved. 32da489cd246702bee5938545b18a6f710ed214bcJamie Gennis# Use of this source code is governed by a BSD-style license that can be 42da489cd246702bee5938545b18a6f710ed214bcJamie Gennis# found in the LICENSE file. 52da489cd246702bee5938545b18a6f710ed214bcJamie Gennisimport optparse 62da489cd246702bee5938545b18a6f710ed214bcJamie Gennisimport parse_deps 72da489cd246702bee5938545b18a6f710ed214bcJamie Gennisimport sys 82da489cd246702bee5938545b18a6f710ed214bcJamie Gennisimport os 92da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 102da489cd246702bee5938545b18a6f710ed214bcJamie Gennissrcdir = os.path.abspath(os.path.join(os.path.dirname(__file__), "../src")) 112da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 122da489cd246702bee5938545b18a6f710ed214bcJamie Gennishtml_warning_message = """ 132da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 142da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 152da489cd246702bee5938545b18a6f710ed214bcJamie Gennis<!------------------------------------------------------------------------------ 162da489cd246702bee5938545b18a6f710ed214bcJamie GennisWARNING: This file is generated by generate_about_tracing_contents.py 172da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 182da489cd246702bee5938545b18a6f710ed214bcJamie Gennis Do not edit directly. 192da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 202da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 212da489cd246702bee5938545b18a6f710ed214bcJamie Gennis-------------------------------------------------------------------------------> 222da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 232da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 242da489cd246702bee5938545b18a6f710ed214bcJamie Gennis""" 252da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 262da489cd246702bee5938545b18a6f710ed214bcJamie Gennisjs_warning_message = """/** 272da489cd246702bee5938545b18a6f710ed214bcJamie Gennis// Copyright (c) 2012 The Chromium Authors. All rights reserved. 282da489cd246702bee5938545b18a6f710ed214bcJamie Gennis// Use of this source code is governed by a BSD-style license that can be 292da489cd246702bee5938545b18a6f710ed214bcJamie Gennis// found in the LICENSE file. 302da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 312da489cd246702bee5938545b18a6f710ed214bcJamie Gennis* WARNING: This file is generated by generate_about_tracing_contents.py 322da489cd246702bee5938545b18a6f710ed214bcJamie Gennis* 332da489cd246702bee5938545b18a6f710ed214bcJamie Gennis* Do not edit directly. 342da489cd246702bee5938545b18a6f710ed214bcJamie Gennis*/ 352da489cd246702bee5938545b18a6f710ed214bcJamie Gennis""" 362da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 372da489cd246702bee5938545b18a6f710ed214bcJamie Gennisdef generate_html(): 382da489cd246702bee5938545b18a6f710ed214bcJamie Gennis f = open(os.path.join(srcdir, "about_tracing.html.template"), 'r') 392da489cd246702bee5938545b18a6f710ed214bcJamie Gennis template = f.read() 402da489cd246702bee5938545b18a6f710ed214bcJamie Gennis f.close() 412da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 422da489cd246702bee5938545b18a6f710ed214bcJamie Gennis assert template.find("<WARNING_MESSAGE></WARNING_MESSAGE>") != -1 432da489cd246702bee5938545b18a6f710ed214bcJamie Gennis assert template.find("<STYLE_SHEET_CONTENTS></STYLE_SHEET_CONTENTS>") != -1 442da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 452da489cd246702bee5938545b18a6f710ed214bcJamie Gennis filenames = [os.path.join(srcdir, x) for x in ["base.js", "profiling_view.js"]] 462da489cd246702bee5938545b18a6f710ed214bcJamie Gennis filenames = [os.path.relpath(x) for x in filenames] 472da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 482da489cd246702bee5938545b18a6f710ed214bcJamie Gennis load_sequence = parse_deps.calc_load_sequence(filenames) 492da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 502da489cd246702bee5938545b18a6f710ed214bcJamie Gennis style_sheet_contents = "" 512da489cd246702bee5938545b18a6f710ed214bcJamie Gennis for module in load_sequence: 522da489cd246702bee5938545b18a6f710ed214bcJamie Gennis for style_sheet in module.style_sheets: 532da489cd246702bee5938545b18a6f710ed214bcJamie Gennis rel_filename = os.path.relpath(style_sheet.filename, srcdir) 542da489cd246702bee5938545b18a6f710ed214bcJamie Gennis link_tag = """<link rel="stylesheet" href="%s">\n""" % rel_filename 552da489cd246702bee5938545b18a6f710ed214bcJamie Gennis style_sheet_contents += link_tag 562da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 572da489cd246702bee5938545b18a6f710ed214bcJamie Gennis result = template 582da489cd246702bee5938545b18a6f710ed214bcJamie Gennis result = result.replace("<WARNING_MESSAGE></WARNING_MESSAGE>", html_warning_message) 592da489cd246702bee5938545b18a6f710ed214bcJamie Gennis result = result.replace("<STYLE_SHEET_CONTENTS></STYLE_SHEET_CONTENTS>", style_sheet_contents) 602da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 612da489cd246702bee5938545b18a6f710ed214bcJamie Gennis return result 622da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 632da489cd246702bee5938545b18a6f710ed214bcJamie Gennisdef generate_js(): 642da489cd246702bee5938545b18a6f710ed214bcJamie Gennis f = open(os.path.join(srcdir, "about_tracing.js.template"), 'r') 652da489cd246702bee5938545b18a6f710ed214bcJamie Gennis template = f.read() 662da489cd246702bee5938545b18a6f710ed214bcJamie Gennis f.close() 672da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 682da489cd246702bee5938545b18a6f710ed214bcJamie Gennis assert template.find("<WARNING_MESSAGE></WARNING_MESSAGE>") != -1 692da489cd246702bee5938545b18a6f710ed214bcJamie Gennis assert template.find("<SCRIPT_CONTENTS></SCRIPT_CONTENTS>") != -1 702da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 712da489cd246702bee5938545b18a6f710ed214bcJamie Gennis filenames = [os.path.join(srcdir, x) for x in ["base.js", "profiling_view.js"]] 722da489cd246702bee5938545b18a6f710ed214bcJamie Gennis filenames = [os.path.relpath(x) for x in filenames] 732da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 742da489cd246702bee5938545b18a6f710ed214bcJamie Gennis import parse_deps 752da489cd246702bee5938545b18a6f710ed214bcJamie Gennis load_sequence = parse_deps.calc_load_sequence(filenames) 762da489cd246702bee5938545b18a6f710ed214bcJamie Gennis script_contents = "" 772da489cd246702bee5938545b18a6f710ed214bcJamie Gennis script_contents += "window.FLATTENED = {};\n" 782da489cd246702bee5938545b18a6f710ed214bcJamie Gennis for module in load_sequence: 792da489cd246702bee5938545b18a6f710ed214bcJamie Gennis script_contents += "window.FLATTENED['%s'] = true;\n" % module.name 802da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 812da489cd246702bee5938545b18a6f710ed214bcJamie Gennis for module in load_sequence: 822da489cd246702bee5938545b18a6f710ed214bcJamie Gennis rel_filename = os.path.relpath(module.filename, srcdir) 832da489cd246702bee5938545b18a6f710ed214bcJamie Gennis script_contents += """<include src="%s">\n""" % rel_filename 842da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 852da489cd246702bee5938545b18a6f710ed214bcJamie Gennis result = template 862da489cd246702bee5938545b18a6f710ed214bcJamie Gennis result = result.replace("<WARNING_MESSAGE></WARNING_MESSAGE>", 872da489cd246702bee5938545b18a6f710ed214bcJamie Gennis js_warning_message) 882da489cd246702bee5938545b18a6f710ed214bcJamie Gennis result = result.replace("<SCRIPT_CONTENTS></SCRIPT_CONTENTS>", script_contents) 892da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 902da489cd246702bee5938545b18a6f710ed214bcJamie Gennis return result 912da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 922da489cd246702bee5938545b18a6f710ed214bcJamie Gennisdef is_out_of_date(): 932da489cd246702bee5938545b18a6f710ed214bcJamie Gennis olddir = os.getcwd() 942da489cd246702bee5938545b18a6f710ed214bcJamie Gennis try: 952da489cd246702bee5938545b18a6f710ed214bcJamie Gennis os.chdir(srcdir) 962da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 972da489cd246702bee5938545b18a6f710ed214bcJamie Gennis o = open(os.path.join(srcdir, "about_tracing.html"), 'r') 982da489cd246702bee5938545b18a6f710ed214bcJamie Gennis existing_result_html = o.read() 992da489cd246702bee5938545b18a6f710ed214bcJamie Gennis o.close() 1002da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 1012da489cd246702bee5938545b18a6f710ed214bcJamie Gennis result_html = generate_html() 1022da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 1032da489cd246702bee5938545b18a6f710ed214bcJamie Gennis if result_html != existing_result_html: 1042da489cd246702bee5938545b18a6f710ed214bcJamie Gennis return True 1052da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 1062da489cd246702bee5938545b18a6f710ed214bcJamie Gennis o = open(os.path.join(srcdir, "about_tracing.js"), 'r') 1072da489cd246702bee5938545b18a6f710ed214bcJamie Gennis existing_result_js = o.read() 1082da489cd246702bee5938545b18a6f710ed214bcJamie Gennis o.close() 1092da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 1102da489cd246702bee5938545b18a6f710ed214bcJamie Gennis result_js = generate_js() 1112da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 1122da489cd246702bee5938545b18a6f710ed214bcJamie Gennis if result_js != existing_result_js: 1132da489cd246702bee5938545b18a6f710ed214bcJamie Gennis return True 1142da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 1152da489cd246702bee5938545b18a6f710ed214bcJamie Gennis finally: 1162da489cd246702bee5938545b18a6f710ed214bcJamie Gennis os.chdir(olddir) 1172da489cd246702bee5938545b18a6f710ed214bcJamie Gennis return False 1182da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 1192da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 1202da489cd246702bee5938545b18a6f710ed214bcJamie Gennisdef main(args): 1212da489cd246702bee5938545b18a6f710ed214bcJamie Gennis parser = optparse.OptionParser() 1222da489cd246702bee5938545b18a6f710ed214bcJamie Gennis options, args = parser.parse_args(args) 1232da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 1242da489cd246702bee5938545b18a6f710ed214bcJamie Gennis olddir = os.getcwd() 1252da489cd246702bee5938545b18a6f710ed214bcJamie Gennis try: 1262da489cd246702bee5938545b18a6f710ed214bcJamie Gennis os.chdir(srcdir) 1272da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 1282da489cd246702bee5938545b18a6f710ed214bcJamie Gennis try: 1292da489cd246702bee5938545b18a6f710ed214bcJamie Gennis result_html = generate_html() 1302da489cd246702bee5938545b18a6f710ed214bcJamie Gennis except parse_deps.DepsException, ex: 1312da489cd246702bee5938545b18a6f710ed214bcJamie Gennis sys.stderr.write("Error: %s\n\n" % str(ex)) 1322da489cd246702bee5938545b18a6f710ed214bcJamie Gennis return 255 1332da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 1342da489cd246702bee5938545b18a6f710ed214bcJamie Gennis o = open(os.path.join(srcdir, "about_tracing.html"), 'w') 1352da489cd246702bee5938545b18a6f710ed214bcJamie Gennis o.write(result_html) 1362da489cd246702bee5938545b18a6f710ed214bcJamie Gennis o.close() 1372da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 1382da489cd246702bee5938545b18a6f710ed214bcJamie Gennis result_js = generate_js() 1392da489cd246702bee5938545b18a6f710ed214bcJamie Gennis o = open(os.path.join(srcdir, "about_tracing.js"), 'w') 1402da489cd246702bee5938545b18a6f710ed214bcJamie Gennis o.write(result_js) 1412da489cd246702bee5938545b18a6f710ed214bcJamie Gennis o.close() 1422da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 1432da489cd246702bee5938545b18a6f710ed214bcJamie Gennis finally: 1442da489cd246702bee5938545b18a6f710ed214bcJamie Gennis os.chdir(olddir) 1452da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 1462da489cd246702bee5938545b18a6f710ed214bcJamie Gennis return 0 1472da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 1482da489cd246702bee5938545b18a6f710ed214bcJamie Gennisif __name__ == "__main__": 1492da489cd246702bee5938545b18a6f710ed214bcJamie Gennis sys.exit(main(sys.argv)) 150