1551ccae044b0ff658fe629dd67edd5ffe75d10e8Reid Spencer# Copyright 2014 The Chromium Authors. All rights reserved. 263b3afa98460ce38a1c48d3c44ef6edfdaf37b77Misha Brukman# Use of this source code is governed by a BSD-style license that can be 36c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke# found in the LICENSE file. 46c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaekeimport sys 57ed47a13356daed2a34cd2209a31f92552e3bdd8Chris Lattnerimport os 67ed47a13356daed2a34cd2209a31f92552e3bdd8Chris Lattnerimport optparse 763b3afa98460ce38a1c48d3c44ef6edfdaf37b77Misha Brukman 86c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaekefrom ui import spy_project 96c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaekefrom tvcm import generate 106c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke 116c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaekedef Main(args): 1263b3afa98460ce38a1c48d3c44ef6edfdaf37b77Misha Brukman parser = optparse.OptionParser() 139a9ad77847c1be4ffc5ba6304e33ccecbf72e43fStephen Wilson parser.add_option('--output-file', '-o') 149a9ad77847c1be4ffc5ba6304e33ccecbf72e43fStephen Wilson options,args = parser.parse_args(args) 159a9ad77847c1be4ffc5ba6304e33ccecbf72e43fStephen Wilson 169a9ad77847c1be4ffc5ba6304e33ccecbf72e43fStephen Wilson if options.output_file: 176c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke ofile = open(options.output_file, 'w') 186c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke else: 196c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke ofile = sys.stdout 20551ccae044b0ff658fe629dd67edd5ffe75d10e8Reid Spencer GenerateHTML(ofile) 21551ccae044b0ff658fe629dd67edd5ffe75d10e8Reid Spencer if ofile != sys.stdout: 22551ccae044b0ff658fe629dd67edd5ffe75d10e8Reid Spencer ofile.close() 235e4d8a5eca03c977ba01e061078a2d740ee6130aZonr Chang 241f6efa3996dd1929fbc129203ce5009b620e6969Michael J. Spencerdef GenerateHTML(ofile): 256c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke project = spy_project.SpyProject() 266c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke load_sequence = project.CalcLoadSequenceForModuleNames( 276c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke ['ui.spy_shell']) 286c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke bootstrap_js = """ 296c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke 306c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke document.addEventListener('DOMContentLoaded', function() { 316c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke document.body.appendChild(new ui.SpyShell('ws://127.0.0.1:42424')); 326c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke 33c8f6c44af46554036084cba21a118266f5e26c0eMichael J. Spencer }); 346c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke""" 35c8f6c44af46554036084cba21a118266f5e26c0eMichael J. Spencer bootstrap_script = generate.ExtraScript(text_content=bootstrap_js) 366c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke generate.GenerateStandaloneHTMLToFile( 37620ee02353d8b65959dc01a66b073adfcdef9eacBrian Gaeke ofile, load_sequence, 38620ee02353d8b65959dc01a66b073adfcdef9eacBrian Gaeke title='Mojo spy', 39c8f6c44af46554036084cba21a118266f5e26c0eMichael J. Spencer extra_scripts=[bootstrap_script]) 40620ee02353d8b65959dc01a66b073adfcdef9eacBrian Gaeke