Index: tracing/third_party/tvcm/tvcm/style_sheet.py |
diff --git a/tracing/third_party/tvcm/tvcm/style_sheet.py b/tracing/third_party/tvcm/tvcm/style_sheet.py |
deleted file mode 100644 |
index b3c5e743739bff1d2f7714d994b5e654d4fa5734..0000000000000000000000000000000000000000 |
--- a/tracing/third_party/tvcm/tvcm/style_sheet.py |
+++ /dev/null |
@@ -1,136 +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 base64 |
-import os |
-import re |
- |
- |
-class Image(object): |
- |
- def __init__(self, resource): |
- self.resource = resource |
- self.aliases = [] |
- |
- @property |
- def relative_path(self): |
- return self.resource.relative_path |
- |
- @property |
- def absolute_path(self): |
- return self.resource.absolute_path |
- |
- @property |
- def contents(self): |
- return self.resource.contents |
- |
- |
-class ParsedStyleSheet(object): |
- def __init__(self, loader, containing_dirname, contents): |
- self.loader = loader |
- self.contents = contents |
- self._images = None |
- self._Load(containing_dirname) |
- |
- @property |
- def images(self): |
- return self._images |
- |
- def AppendDirectlyDependentFilenamesTo(self, dependent_filenames): |
- for i in self.images: |
- dependent_filenames.append(i.resource.absolute_path) |
- |
- @property |
- def contents_with_inlined_images(self): |
- images_by_url = {} |
- for i in self.images: |
- for a in i.aliases: |
- images_by_url[a] = i |
- |
- def InlineUrl(m): |
- url = m.group('url') |
- image = images_by_url[url] |
- |
- ext = os.path.splitext(image.absolute_path)[1] |
- data = base64.standard_b64encode(image.contents) |
- |
- return "url(data:image/%s;base64,%s)" % (ext[1:], data) |
- |
- # I'm assuming we only have url()'s associated with images |
- return re.sub('url\((?P<quote>"|\'|)(?P<url>[^"\'()]*)(?P=quote)\)', |
- InlineUrl, self.contents) |
- |
- def AppendDirectlyDependentFilenamesTo(self, dependent_filenames): |
- for i in self.images: |
- dependent_filenames.append(i.resource.absolute_path) |
- |
- def _Load(self, containing_dirname): |
- if self.contents.find('@import') != -1: |
- raise Exception('@imports are not supported') |
- |
- matches = re.findall( |
- 'url\((?:["|\']?)([^"\'()]*)(?:["|\']?)\)', |
- self.contents) |
- |
- def resolve_url(url): |
- if os.path.isabs(url): |
- # FIXME: module is used here, but tvcm.module is never imported. |
- # However, tvcm.module cannot be imported since tvcm.module may import |
- # style_sheet, leading to an import loop. |
- raise module.DepsException('URL references must be relative') |
- # URLS are relative to this module's directory |
- abs_path = os.path.abspath(os.path.join(containing_dirname, url)) |
- image = self.loader.LoadImage(abs_path) |
- image.aliases.append(url) |
- return image |
- |
- self._images = [resolve_url(x) for x in matches] |
- |
- |
-class StyleSheet(object): |
- """Represents a stylesheet resource referenced by a module via the |
- base.requireStylesheet(xxx) directive.""" |
- def __init__(self, loader, name, resource): |
- self.loader = loader |
- self.name = name |
- self.resource = resource |
- self._parsed_style_sheet = None |
- |
- @property |
- def filename(self): |
- return self.resource.absolute_path |
- |
- @property |
- def contents(self): |
- return self.resource.contents |
- |
- def __repr__(self): |
- return "StyleSheet(%s)" % self.name |
- |
- @property |
- def images(self): |
- self._InitParsedStyleSheetIfNeeded() |
- return self._parsed_style_sheet.images |
- |
- def AppendDirectlyDependentFilenamesTo(self, dependent_filenames): |
- self._InitParsedStyleSheetIfNeeded() |
- |
- dependent_filenames.append(self.resource.absolute_path) |
- self._parsed_style_sheet.AppendDirectlyDependentFilenamesTo( |
- dependent_filenames) |
- |
- @property |
- def contents_with_inlined_images(self): |
- self._InitParsedStyleSheetIfNeeded() |
- return self._parsed_style_sheet.contents_with_inlined_images |
- |
- def load(self): |
- self._InitParsedStyleSheetIfNeeded() |
- |
- def _InitParsedStyleSheetIfNeeded(self): |
- if self._parsed_style_sheet: |
- return |
- module_dirname = os.path.dirname(self.resource.absolute_path) |
- self._parsed_style_sheet = ParsedStyleSheet( |
- self.loader, module_dirname, self.contents) |