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