Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(299)

Unified Diff: tracing/third_party/tvcm/tvcm/generate.py

Issue 1376953005: Move tracing/third_party/tvcm -> third_party/py_vulcanize. (Closed) Base URL: git@github.com:catapult-project/catapult.git@master
Patch Set: Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: tracing/third_party/tvcm/tvcm/generate.py
diff --git a/tracing/third_party/tvcm/tvcm/generate.py b/tracing/third_party/tvcm/tvcm/generate.py
deleted file mode 100644
index cf9c0db7f4546b32fa7427159352de261d2dd7dd..0000000000000000000000000000000000000000
--- a/tracing/third_party/tvcm/tvcm/generate.py
+++ /dev/null
@@ -1,274 +0,0 @@
-# Copyright (c) 2014 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 sys
-import subprocess
-import tempfile
-import StringIO
-
-from tvcm import html_generation_controller
-
-
-html_warning_message = """
-
-
-<!--
-WARNING: This file is auto generated.
-
- Do not edit directly.
--->
-"""
-
-js_warning_message = """
-// Copyright 2015 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.
-
-/* WARNING: This file is auto generated.
- *
- * Do not edit directly.
- */
-"""
-
-css_warning_message = """
-/* Copyright 2015 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. */
-
-/* WARNING: This file is auto-generated.
- *
- * Do not edit directly.
- */
-"""
-
-
-def _AssertIsUTF8(f):
- if isinstance(f, StringIO.StringIO):
- return
- assert f.encoding == 'utf-8'
-
-
-def _MinifyJS(input_js):
- tvcm_path = os.path.abspath(os.path.join(
- os.path.dirname(__file__), '..'))
- rjsmin_path = os.path.abspath(
- os.path.join(tvcm_path, 'third_party', 'rjsmin', 'rjsmin.py'))
-
- with tempfile.NamedTemporaryFile() as _:
- args = [
- 'python',
- rjsmin_path
- ]
- p = subprocess.Popen(args,
- stdin=subprocess.PIPE,
- stdout=subprocess.PIPE,
- stderr=subprocess.PIPE)
- res = p.communicate(input=input_js)
- errorcode = p.wait()
- if errorcode != 0:
- sys.stderr.write('rJSmin exited with error code %d' % errorcode)
- sys.stderr.write(res[1])
- raise Exception('Failed to minify, omgah')
- return res[0]
-
-
-def GenerateJS(load_sequence,
- use_include_tags_for_scripts=False,
- dir_for_include_tag_root=None,
- minify=False,
- report_sizes=False):
- f = StringIO.StringIO()
- GenerateJSToFile(f,
- load_sequence,
- use_include_tags_for_scripts,
- dir_for_include_tag_root,
- minify=minify,
- report_sizes=report_sizes)
-
- return f.getvalue()
-
-
-def GenerateJSToFile(f,
- load_sequence,
- use_include_tags_for_scripts=False,
- dir_for_include_tag_root=None,
- minify=False,
- report_sizes=False):
- _AssertIsUTF8(f)
- if use_include_tags_for_scripts and dir_for_include_tag_root is None:
- raise Exception('Must provide dir_for_include_tag_root')
-
- f.write(js_warning_message)
- f.write('\n')
-
- loader = load_sequence[0].loader
-
- polymer_script = loader.LoadRawScript('components/polymer/polymer.min.js')
- f.write(polymer_script.contents)
-
- if not minify:
- flatten_to_file = f
- else:
- flatten_to_file = StringIO.StringIO()
-
- for module in load_sequence:
- module.AppendJSContentsToFile(flatten_to_file,
- use_include_tags_for_scripts,
- dir_for_include_tag_root)
- if minify:
- js = flatten_to_file.getvalue()
- minified_js = _MinifyJS(js)
- f.write(minified_js)
- f.write('\n')
-
- if report_sizes:
- for module in load_sequence:
- s = StringIO.StringIO()
- module.AppendJSContentsToFile(s,
- use_include_tags_for_scripts,
- dir_for_include_tag_root)
-
- # Add minified size info.
- js = s.getvalue()
- min_js_size = str(len(_MinifyJS(js)))
-
- # Print names for this module. Some domain-specific simplifications
- # are included to make pivoting more obvious.
- parts = module.name.split('.')
- if parts[:2] == ['base', 'ui']:
- parts = ['base_ui'] + parts[2:]
- if parts[:2] == ['tracing', 'importer']:
- parts = ['importer'] + parts[2:]
- tln = parts[0]
- sln = '.'.join(parts[:2])
-
- # Output
- print '%i\t%s\t%s\t%s\t%s' % (len(js), min_js_size, module.name, tln, sln)
- sys.stdout.flush()
-
-
-class ExtraScript(object):
-
- def __init__(self, script_id=None, text_content=None, content_type=None):
- if script_id is not None:
- assert script_id[0] != '#'
- self.script_id = script_id
- self.text_content = text_content
- self.content_type = content_type
-
- def WriteToFile(self, output_file):
- _AssertIsUTF8(output_file)
- attrs = []
- if self.script_id:
- attrs.append('id="%s"' % self.script_id)
- if self.content_type:
- attrs.append('content-type="%s"' % self.content_type)
-
- if len(attrs) > 0:
- output_file.write('<script %s>\n' % ' '.join(attrs))
- else:
- output_file.write('<script>\n')
- if self.text_content:
- output_file.write(self.text_content)
- output_file.write('</script>\n')
-
-
-def _MinifyCSS(css_text):
- tvcm_path = os.path.abspath(os.path.join(
- os.path.dirname(__file__), '..'))
- rcssmin_path = os.path.abspath(
- os.path.join(tvcm_path, 'third_party', 'rcssmin', 'rcssmin.py'))
-
- with tempfile.NamedTemporaryFile() as _:
- rcssmin_args = ['python', rcssmin_path]
- p = subprocess.Popen(rcssmin_args,
- stdin=subprocess.PIPE,
- stdout=subprocess.PIPE,
- stderr=subprocess.PIPE)
- res = p.communicate(input=css_text)
- errorcode = p.wait()
- if errorcode != 0:
- sys.stderr.write('rCSSmin exited with error code %d' % errorcode)
- sys.stderr.write(res[1])
- raise Exception('Failed to generate css for %s.' % css_text)
- return res[0]
-
-
-def GenerateStandaloneHTMLAsString(*args, **kwargs):
- f = StringIO.StringIO()
- GenerateStandaloneHTMLToFile(f, *args, **kwargs)
- return f.getvalue()
-
-
-def GenerateStandaloneHTMLToFile(output_file,
- load_sequence,
- title=None,
- flattened_js_url=None,
- extra_scripts=None,
- minify=False,
- report_sizes=False,
- output_html_head_and_body=True):
- """Writes a HTML file with the content of all modules in a load sequence.
-
- The load_sequence is a list of (HTML or JS) Module objects; the order that
- they're inserted into the file depends on their type and position in the load
- sequence.
- """
- _AssertIsUTF8(output_file)
- extra_scripts = extra_scripts or []
-
- if output_html_head_and_body:
- output_file.write(
- '<!DOCTYPE html>\n'
- '<html>\n'
- ' <head i18n-values="dir:textdirection;">\n'
- ' <meta http-equiv="Content-Type" content="text/html;'
- 'charset=utf-8">\n')
- if title:
- output_file.write(' <title>%s</title>\n ' % title)
- else:
- assert title is None
-
- loader = load_sequence[0].loader
-
- written_style_sheets = set()
-
- class HTMLGenerationController(
- html_generation_controller.HTMLGenerationController):
-
- def __init__(self, module):
- self.module = module
-
- def GetHTMLForStylesheetHRef(self, href):
- resource = self.module.HRefToResource(
- href, '<link rel="stylesheet" href="%s">' % href)
- style_sheet = loader.LoadStyleSheet(resource.name)
-
- if style_sheet in written_style_sheets:
- return None
- written_style_sheets.add(style_sheet)
-
- text = style_sheet.contents_with_inlined_images
- if minify:
- text = _MinifyCSS(text)
- return '<style>\n%s\n</style>' % text
-
- for module in load_sequence:
- controller = HTMLGenerationController(module)
- module.AppendHTMLContentsToFile(output_file, controller, minify=minify)
-
- if flattened_js_url:
- output_file.write('<script src="%s"></script>\n' % flattened_js_url)
- else:
- output_file.write('<script>\n')
- js = GenerateJS(load_sequence, minify=minify, report_sizes=report_sizes)
- output_file.write(js)
- output_file.write('</script>\n')
-
- for extra_script in extra_scripts:
- extra_script.WriteToFile(output_file)
-
- if output_html_head_and_body:
- output_file.write('</head>\n <body>\n </body>\n</html>\n')

Powered by Google App Engine
This is Rietveld 408576698