tpopela / rpms / chromium

Forked from rpms/chromium 6 years ago
Clone
Blob Blame History Raw
diff -up chromium-66.0.3359.117/third_party/blink/tools/blinkpy/common/__init__.py.missing chromium-66.0.3359.117/third_party/blink/tools/blinkpy/common/__init__.py
--- chromium-66.0.3359.117/third_party/blink/tools/blinkpy/common/__init__.py.missing	2018-04-19 09:51:46.165723235 -0400
+++ chromium-66.0.3359.117/third_party/blink/tools/blinkpy/common/__init__.py	2018-04-19 09:51:46.171723115 -0400
@@ -0,0 +1,3 @@
+# Copyright 2017 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.
diff -up chromium-66.0.3359.117/third_party/blink/tools/blinkpy/common/name_style_converter.py.missing chromium-66.0.3359.117/third_party/blink/tools/blinkpy/common/name_style_converter.py
--- chromium-66.0.3359.117/third_party/blink/tools/blinkpy/common/name_style_converter.py.missing	2018-04-19 09:51:46.171723115 -0400
+++ chromium-66.0.3359.117/third_party/blink/tools/blinkpy/common/name_style_converter.py	2018-04-19 09:51:46.172723095 -0400
@@ -0,0 +1,110 @@
+# Copyright 2017 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.
+# pylint: disable=import-error,print-statement,relative-import
+import re
+SPECIAL_TOKENS = [
+    # This list should be sorted by length.
+    'CString',
+    'Float32',
+    'Float64',
+    'Base64',
+    'IFrame',
+    'Latin1',
+    'PlugIn',
+    'SQLite',
+    'Uint16',
+    'Uint32',
+    'WebGL2',
+    'ASCII',
+    'CType',
+    'DList',
+    'Int16',
+    'Int32',
+    'MPath',
+    'OList',
+    'TSpan',
+    'UList',
+    'UTF16',
+    'Uint8',
+    'WebGL',
+    'XPath',
+    'ETC1',
+    'HTML',
+    'Int8',
+    'S3TC',
+    'SPv2',
+    'UTF8',
+    'API',
+    'CSS',
+    'DOM',
+    'EXT',
+    'RTC',
+    'SVG',
+    '2D',
+    'AX',
+    'V0',
+    'V8',
+]
+MATCHING_EXPRESSION = '((?:[A-Z][a-z]+)|[0-9]D?$)'
+class SmartTokenizer(object):
+    """Detects special cases that are not easily discernible without additional
+       knowledge, such as recognizing that in SVGSVGElement, the first two SVGs
+       are separate tokens, but WebGL is one token."""
+    def __init__(self, name):
+        self.remaining = name
+    def tokenize(self):
+        name = self.remaining
+        tokens = []
+        while len(name) > 0:
+            matched_token = None
+            for token in SPECIAL_TOKENS:
+                if name.startswith(token):
+                    matched_token = token
+                    break
+            if not matched_token:
+                match = re.search(MATCHING_EXPRESSION, name)
+                if not match:
+                    matched_token = name
+                elif match.start(0) != 0:
+                    matched_token = name[:match.start(0)]
+                else:
+                    matched_token = match.group(0)
+            tokens.append(name[:len(matched_token)])
+            name = name[len(matched_token):]
+        return tokens
+class NameStyleConverter(object):
+    """Converts names from camelCase to various other styles.
+    """
+    def __init__(self, name):
+        self.tokens = self.tokenize(name)
+    def tokenize(self, name):
+        tokenizer = SmartTokenizer(name)
+        return tokenizer.tokenize()
+    def to_snake_case(self):
+        """Snake case is the file and variable name style per Google C++ Style
+           Guide:
+           https://google.github.io/styleguide/cppguide.html#Variable_Names
+           Also known as the hacker case.
+           https://en.wikipedia.org/wiki/Snake_case
+        """
+        return '_'.join([token.lower() for token in self.tokens])
+    def to_upper_camel_case(self):
+        """Upper-camel case is the class and function name style per
+           Google C++ Style Guide:
+           https://google.github.io/styleguide/cppguide.html#Function_Names
+           Also known as the PascalCase.
+           https://en.wikipedia.org/wiki/Camel_case.
+        """
+        return ''.join([token[0].upper() + token[1:] for token in self.tokens])
+    def to_macro_case(self):
+        """Macro case is the macro name style per Google C++ Style Guide:
+           https://google.github.io/styleguide/cppguide.html#Macro_Names
+        """
+        return '_'.join([token.upper() for token in self.tokens])
+    def to_all_cases(self):
+        return {
+            'snake_case': self.to_snake_case(),
+            'upper_camel_case': self.to_upper_camel_case(),
+            'macro_case': self.to_macro_case(),
+        }
diff -up chromium-66.0.3359.117/third_party/blink/tools/blinkpy/common/name_style_converter_test.py.missing chromium-66.0.3359.117/third_party/blink/tools/blinkpy/common/name_style_converter_test.py
--- chromium-66.0.3359.117/third_party/blink/tools/blinkpy/common/name_style_converter_test.py.missing	2018-04-19 09:51:46.172723095 -0400
+++ chromium-66.0.3359.117/third_party/blink/tools/blinkpy/common/name_style_converter_test.py	2018-04-19 09:51:46.173723075 -0400
@@ -0,0 +1,140 @@
+# Copyright 2017 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.
+# pylint: disable=import-error,print-statement,relative-import,protected-access
+"""Unit tests for name_style_converter.py."""
+import unittest
+from name_style_converter import NameStyleConverter
+from name_style_converter import SmartTokenizer
+class SmartTokenizerTest(unittest.TestCase):
+    def test_simple_cases(self):
+        tokenizer = SmartTokenizer('foo')
+        self.assertEqual(tokenizer.tokenize(), ['foo'])
+        tokenizer = SmartTokenizer('fooBar')
+        self.assertEqual(tokenizer.tokenize(), ['foo', 'Bar'])
+        tokenizer = SmartTokenizer('fooBarBaz')
+        self.assertEqual(tokenizer.tokenize(), ['foo', 'Bar', 'Baz'])
+        tokenizer = SmartTokenizer('Baz')
+        self.assertEqual(tokenizer.tokenize(), ['Baz'])
+        tokenizer = SmartTokenizer('')
+        self.assertEqual(tokenizer.tokenize(), [])
+        tokenizer = SmartTokenizer('FOO')
+        self.assertEqual(tokenizer.tokenize(), ['FOO'])
+        tokenizer = SmartTokenizer('foo2')
+        self.assertEqual(tokenizer.tokenize(), ['foo', '2'])
+    def test_tricky_cases(self):
+        tokenizer = SmartTokenizer('XMLHttpRequest')
+        self.assertEqual(tokenizer.tokenize(), ['XML', 'Http', 'Request'])
+        tokenizer = SmartTokenizer('HTMLElement')
+        self.assertEqual(tokenizer.tokenize(), ['HTML', 'Element'])
+        tokenizer = SmartTokenizer('WebGLRenderingContext')
+        self.assertEqual(tokenizer.tokenize(),
+                         ['WebGL', 'Rendering', 'Context'])
+        tokenizer = SmartTokenizer('CanvasRenderingContext2D')
+        self.assertEqual(tokenizer.tokenize(),
+                         ['Canvas', 'Rendering', 'Context', '2D'])
+        tokenizer = SmartTokenizer('CanvasRenderingContext2DAPITest')
+        self.assertEqual(tokenizer.tokenize(),
+                         ['Canvas', 'Rendering', 'Context', '2D', 'API', 'Test'])
+        tokenizer = SmartTokenizer('SVGSVGElement')
+        self.assertEqual(tokenizer.tokenize(), ['SVG', 'SVG', 'Element'])
+        tokenizer = SmartTokenizer('CanvasRenderingContext2D')
+        self.assertEqual(tokenizer.tokenize(), ['Canvas', 'Rendering', 'Context', '2D'])
+        tokenizer = SmartTokenizer('CSSURLImageValue')
+        self.assertEqual(tokenizer.tokenize(), ['CSS', 'URL', 'Image', 'Value'])
+        tokenizer = SmartTokenizer('CSSPropertyAPID')
+        self.assertEqual(tokenizer.tokenize(), ['CSS', 'Property', 'API', 'D'])
+        tokenizer = SmartTokenizer('AXARIAGridCell')
+        self.assertEqual(tokenizer.tokenize(), ['AX', 'ARIA', 'Grid', 'Cell'])
+        tokenizer = SmartTokenizer('CDATASection')
+        self.assertEqual(tokenizer.tokenize(), ['CDATA', 'Section'])
+        tokenizer = SmartTokenizer('ASCIICType')
+        self.assertEqual(tokenizer.tokenize(), ['ASCII', 'CType'])
+        tokenizer = SmartTokenizer('CString')
+        self.assertEqual(tokenizer.tokenize(), ['CString'])
+        tokenizer = SmartTokenizer('HTMLDListElement')
+        self.assertEqual(tokenizer.tokenize(), ['HTML', 'DList', 'Element'])
+        tokenizer = SmartTokenizer('HTMLOListElement')
+        self.assertEqual(tokenizer.tokenize(), ['HTML', 'OList', 'Element'])
+        tokenizer = SmartTokenizer('HTMLIFrameElement')
+        self.assertEqual(tokenizer.tokenize(), ['HTML', 'IFrame', 'Element'])
+        tokenizer = SmartTokenizer('HTMLPlugInElement')
+        self.assertEqual(tokenizer.tokenize(), ['HTML', 'PlugIn', 'Element'])
+        # No special handling for OptGroup, FieldSet, and TextArea.
+        tokenizer = SmartTokenizer('HTMLOptGroupElement')
+        self.assertEqual(tokenizer.tokenize(), ['HTML', 'Opt', 'Group', 'Element'])
+        tokenizer = SmartTokenizer('HTMLFieldSetElement')
+        self.assertEqual(tokenizer.tokenize(), ['HTML', 'Field', 'Set', 'Element'])
+        tokenizer = SmartTokenizer('HTMLTextAreaElement')
+        self.assertEqual(tokenizer.tokenize(), ['HTML', 'Text', 'Area', 'Element'])
+        tokenizer = SmartTokenizer('Path2D')
+        self.assertEqual(tokenizer.tokenize(), ['Path', '2D'])
+        tokenizer = SmartTokenizer('Point2D')
+        self.assertEqual(tokenizer.tokenize(), ['Point', '2D'])
+        tokenizer = SmartTokenizer('CanvasRenderingContext2DState')
+        self.assertEqual(tokenizer.tokenize(), ['Canvas', 'Rendering', 'Context', '2D', 'State'])
+        tokenizer = SmartTokenizer('RTCDTMFSender')
+        self.assertEqual(tokenizer.tokenize(), ['RTC', 'DTMF', 'Sender'])
+        tokenizer = SmartTokenizer('WebGLCompressedTextureS3TCsRGB')
+        self.assertEqual(tokenizer.tokenize(), ['WebGL', 'Compressed', 'Texture', 'S3TC', 'sRGB'])
+        tokenizer = SmartTokenizer('WebGL2CompressedTextureETC1')
+        self.assertEqual(tokenizer.tokenize(), ['WebGL2', 'Compressed', 'Texture', 'ETC1'])
+        tokenizer = SmartTokenizer('EXTsRGB')
+        self.assertEqual(tokenizer.tokenize(), ['EXT', 'sRGB'])
+        tokenizer = SmartTokenizer('SVGFEBlendElement')
+        self.assertEqual(tokenizer.tokenize(), ['SVG', 'FE', 'Blend', 'Element'])
+        tokenizer = SmartTokenizer('SVGMPathElement')
+        self.assertEqual(tokenizer.tokenize(), ['SVG', 'MPath', 'Element'])
+        tokenizer = SmartTokenizer('SVGTSpanElement')
+        self.assertEqual(tokenizer.tokenize(), ['SVG', 'TSpan', 'Element'])
+        tokenizer = SmartTokenizer('SVGURIReference')
+        self.assertEqual(tokenizer.tokenize(), ['SVG', 'URI', 'Reference'])
+        tokenizer = SmartTokenizer('UTF16TextIterator')
+        self.assertEqual(tokenizer.tokenize(), ['UTF16', 'Text', 'Iterator'])
+        tokenizer = SmartTokenizer('UTF8Decoder')
+        self.assertEqual(tokenizer.tokenize(), ['UTF8', 'Decoder'])
+        tokenizer = SmartTokenizer('Uint8Array')
+        self.assertEqual(tokenizer.tokenize(), ['Uint8', 'Array'])
+        tokenizer = SmartTokenizer('DOMWindowBase64')
+        self.assertEqual(tokenizer.tokenize(), ['DOM', 'Window', 'Base64'])
+        tokenizer = SmartTokenizer('TextCodecLatin1')
+        self.assertEqual(tokenizer.tokenize(), ['Text', 'Codec', 'Latin1'])
+        tokenizer = SmartTokenizer('V8BindingForCore')
+        self.assertEqual(tokenizer.tokenize(), ['V8', 'Binding', 'For', 'Core'])
+        tokenizer = SmartTokenizer('V8DOMRect')
+        self.assertEqual(tokenizer.tokenize(), ['V8', 'DOM', 'Rect'])
+        tokenizer = SmartTokenizer('V0InsertionPoint')
+        self.assertEqual(tokenizer.tokenize(), ['V0', 'Insertion', 'Point'])
+        tokenizer = SmartTokenizer('ShadowDOMV0Test')
+        self.assertEqual(tokenizer.tokenize(), ['Shadow', 'DOM', 'V0', 'Test'])
+        tokenizer = SmartTokenizer('ElementShadowV0')
+        self.assertEqual(tokenizer.tokenize(), ['Element', 'Shadow', 'V0'])
+        tokenizer = SmartTokenizer('StubChromeClientForSPv2')
+        self.assertEqual(tokenizer.tokenize(), ['Stub', 'Chrome', 'Client', 'For', 'SPv2'])
+        tokenizer = SmartTokenizer('SQLiteAuthorizer')
+        self.assertEqual(tokenizer.tokenize(), ['SQLite', 'Authorizer'])
+        tokenizer = SmartTokenizer('XPathEvaluator')
+        self.assertEqual(tokenizer.tokenize(), ['XPath', 'Evaluator'])
+        tokenizer = SmartTokenizer('IsXHTMLDocument')
+        self.assertEqual(tokenizer.tokenize(), ['Is', 'XHTML', 'Document'])
+        tokenizer = SmartTokenizer('Animation.idl')
+        self.assertEqual(tokenizer.tokenize(), ['Animation', '.idl'])
+class NameStyleConverterTest(unittest.TestCase):
+    def test_snake_case(self):
+        converter = NameStyleConverter('HTMLElement')
+        self.assertEqual(converter.to_snake_case(), 'html_element')
+    def test_upper_camel_case(self):
+        converter = NameStyleConverter('someSuperThing')
+        self.assertEqual(converter.to_upper_camel_case(), 'SomeSuperThing')
+        converter = NameStyleConverter('SVGElement')
+        self.assertEqual(converter.to_upper_camel_case(), 'SVGElement')
+    def test_macro_case(self):
+        converter = NameStyleConverter('WebGLBaz2D')
+        self.assertEqual(converter.to_macro_case(), 'WEBGL_BAZ_2D')
+    def test_all_cases(self):
+        converter = NameStyleConverter('SVGScriptElement')
+        self.assertEqual(converter.to_all_cases(), {
+            'snake_case': 'svg_script_element',
+            'upper_camel_case': 'SVGScriptElement',
+            'macro_case': 'SVG_SCRIPT_ELEMENT',
+        })
diff -up chromium-66.0.3359.117/third_party/blink/tools/blinkpy/__init__.py.missing chromium-66.0.3359.117/third_party/blink/tools/blinkpy/__init__.py
--- chromium-66.0.3359.117/third_party/blink/tools/blinkpy/__init__.py.missing	2018-04-19 11:34:40.621293007 -0400
+++ chromium-66.0.3359.117/third_party/blink/tools/blinkpy/__init__.py	2018-04-19 11:34:34.440413163 -0400
@@ -0,0 +1,3 @@
+# Copyright 2017 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.