| Index: tracing/third_party/tvcm/tvcm/html_module.py
|
| diff --git a/tracing/third_party/tvcm/tvcm/html_module.py b/tracing/third_party/tvcm/tvcm/html_module.py
|
| deleted file mode 100644
|
| index b2024326e808f2bc45a2b1055eff6f4d0375e3ab..0000000000000000000000000000000000000000
|
| --- a/tracing/third_party/tvcm/tvcm/html_module.py
|
| +++ /dev/null
|
| @@ -1,206 +0,0 @@
|
| -# Copyright 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 re
|
| -
|
| -from tvcm import module
|
| -from tvcm import js_utils
|
| -from tvcm import parse_html_deps
|
| -from tvcm import style_sheet
|
| -
|
| -
|
| -def IsHTMLResourceTheModuleGivenConflictingResourceNames(
|
| - js_resource, html_resource): # pylint: disable=unused-argument
|
| - return 'polymer-element' in html_resource.contents
|
| -
|
| -
|
| -class HTMLModule(module.Module):
|
| -
|
| - @property
|
| - def _module_dir_name(self):
|
| - return os.path.dirname(self.resource.absolute_path)
|
| -
|
| - def Parse(self):
|
| - try:
|
| - parser_results = parse_html_deps.HTMLModuleParser().Parse(self.contents)
|
| - except Exception, ex:
|
| - raise Exception('While parsing %s: %s' % (self.name, str(ex)))
|
| -
|
| - self.dependency_metadata = Parse(self.loader,
|
| - self.name, self._module_dir_name,
|
| - self.isComponent(),
|
| - parser_results)
|
| - self._parser_results = parser_results
|
| -
|
| - def Load(self):
|
| - super(HTMLModule, self).Load()
|
| -
|
| - reachable_names = set([m.name
|
| - for m in self.all_dependent_modules_recursive])
|
| - if 'tr.exportTo' in self.contents:
|
| - if 'tracing.base.base' not in reachable_names:
|
| - raise Exception('%s: Does not have a dependency on base' %
|
| - os.path.relpath(self.resource.absolute_path))
|
| -
|
| - def GetTVCMDepsModuleType(self):
|
| - return 'tvcm.HTML_MODULE_TYPE'
|
| -
|
| - def AppendJSContentsToFile(self,
|
| - f,
|
| - use_include_tags_for_scripts,
|
| - dir_for_include_tag_root):
|
| - super(HTMLModule, self).AppendJSContentsToFile(f,
|
| - use_include_tags_for_scripts,
|
| - dir_for_include_tag_root)
|
| - for inline_script in self._parser_results.inline_scripts:
|
| - if not HasPolymerCall(inline_script.stripped_contents):
|
| - js = inline_script.contents
|
| - else:
|
| - js = GetInlineScriptContentWithPolymerizingApplied(inline_script)
|
| -
|
| - js = js_utils.EscapeJSIfNeeded(js)
|
| -
|
| - f.write(js)
|
| - f.write('\n')
|
| -
|
| - def AppendHTMLContentsToFile(self, f, ctl, minify=False):
|
| - super(HTMLModule, self).AppendHTMLContentsToFile(f, ctl)
|
| -
|
| - ctl.current_module = self
|
| - try:
|
| - for piece in self._parser_results.YieldHTMLInPieces(ctl, minify=minify):
|
| - f.write(piece)
|
| - finally:
|
| - ctl.current_module = None
|
| -
|
| - def HRefToResource(self, href, tag_for_err_msg):
|
| - return _HRefToResource(self.loader, self.name, self._module_dir_name,
|
| - href, tag_for_err_msg)
|
| -
|
| - def AppendDirectlyDependentFilenamesTo(
|
| - self, dependent_filenames, include_raw_scripts=True):
|
| - super(HTMLModule, self).AppendDirectlyDependentFilenamesTo(
|
| - dependent_filenames, include_raw_scripts)
|
| - for contents in self._parser_results.inline_stylesheets:
|
| - module_dirname = os.path.dirname(self.resource.absolute_path)
|
| - ss = style_sheet.ParsedStyleSheet(
|
| - self.loader, module_dirname, contents)
|
| - ss.AppendDirectlyDependentFilenamesTo(dependent_filenames)
|
| -
|
| -
|
| -def GetInlineScriptContentWithPolymerizingApplied(inline_script):
|
| - polymer_element_name = GetPolymerElementNameFromOpenTags(
|
| - inline_script.open_tags)
|
| - if polymer_element_name is None:
|
| - raise module.DepsException(
|
| - 'Tagless Polymer() call must be made inside a <polymer-element> tag')
|
| -
|
| - return UpdatePolymerCallsGivenElementName(
|
| - inline_script.stripped_contents, polymer_element_name)
|
| -
|
| -
|
| -def GetPolymerElementNameFromOpenTags(open_tags):
|
| - found_tag = None
|
| - for tag in reversed(open_tags):
|
| - if tag.tag == 'polymer-element':
|
| - found_tag = tag
|
| - break
|
| -
|
| - if not found_tag:
|
| - return None
|
| -
|
| - return found_tag.attrs.get('name', None)
|
| -
|
| -_POLYMER_RE_1 = 'Polymer(\s*?)\((\s*?)\{'
|
| -_POLYMER_RE_2 = 'Polymer(\s*?)\((\s*?)\)'
|
| -
|
| -
|
| -def HasPolymerCall(js):
|
| - if re.search(_POLYMER_RE_1, js) is not None:
|
| - return True
|
| - if re.search(_POLYMER_RE_2, js) is not None:
|
| - return True
|
| - return False
|
| -
|
| -
|
| -def UpdatePolymerCallsGivenElementName(js, polymer_element_name):
|
| - if re.search(_POLYMER_RE_1, js) is not None:
|
| - return re.sub(_POLYMER_RE_1,
|
| - 'Polymer\g<1>(\g<2>\'%s\', {' % polymer_element_name,
|
| - js, 0, re.DOTALL)
|
| - if re.search(_POLYMER_RE_2, js) is not None:
|
| - return re.sub(_POLYMER_RE_2,
|
| - 'Polymer\g<1>(\g<2>\'%s\')' % polymer_element_name,
|
| - js, 0, re.DOTALL)
|
| - assert False, 'This should never be reached'
|
| -
|
| -
|
| -def _HRefToResource(
|
| - loader, module_name, module_dir_name, href, tag_for_err_msg):
|
| - if href[0] == '/':
|
| - resource = loader.FindResourceGivenRelativePath(
|
| - os.path.normpath(href[1:]))
|
| - else:
|
| - abspath = os.path.normpath(os.path.join(module_dir_name,
|
| - os.path.normpath(href)))
|
| - resource = loader.FindResourceGivenAbsolutePath(abspath)
|
| -
|
| - if not resource:
|
| - raise module.DepsException(
|
| - 'In %s, the %s cannot be loaded because '
|
| - 'it is not in the search path' % (module_name, tag_for_err_msg))
|
| - try:
|
| - resource.contents
|
| - except:
|
| - raise module.DepsException('In %s, %s points at a nonexistent file ' % (
|
| - module_name, tag_for_err_msg))
|
| - return resource
|
| -
|
| -
|
| -def Parse(loader, module_name, module_dir_name, is_component, parser_results):
|
| - res = module.ModuleDependencyMetadata()
|
| - if is_component:
|
| - return res
|
| -
|
| - if parser_results.has_decl is False:
|
| - raise Exception('%s must have <!DOCTYPE html>' % module_name)
|
| -
|
| - # External script references..
|
| - for href in parser_results.scripts_external:
|
| - resource = _HRefToResource(loader, module_name, module_dir_name,
|
| - href,
|
| - tag_for_err_msg='<script src="%s">' % href)
|
| - res.dependent_raw_script_relative_paths.append(
|
| - resource.unix_style_relative_path)
|
| -
|
| - # External imports. Mostly the same as <script>, but we know its a module.
|
| - for href in parser_results.imports:
|
| - if not href.endswith('.html'):
|
| - raise Exception(
|
| - 'In %s, the <link rel="import" href="%s"> must point at a '
|
| - 'file with an html suffix' % (module_name, href))
|
| -
|
| - resource = _HRefToResource(
|
| - loader, module_name, module_dir_name, href,
|
| - tag_for_err_msg='<link rel="import" href="%s">' % href)
|
| - res.dependent_module_names.append(resource.name)
|
| -
|
| - # Validate the in-line scripts.
|
| - for inline_script in parser_results.inline_scripts:
|
| - stripped_text = inline_script.stripped_contents
|
| - try:
|
| - js_utils.ValidateUsesStrictMode('_', stripped_text)
|
| - except:
|
| - raise Exception('%s has an inline script tag that is missing '
|
| - 'a \'use strict\' directive.' % module_name)
|
| -
|
| - # Style sheets
|
| - for href in parser_results.stylesheets:
|
| - resource = _HRefToResource(
|
| - loader, module_name, module_dir_name, href,
|
| - tag_for_err_msg='<link rel="stylesheet" href="%s">' % href)
|
| - res.style_sheet_names.append(resource.name)
|
| -
|
| - return res
|
|
|