Changeset 233943 in webkit


Ignore:
Timestamp:
Jul 18, 2018 5:47:57 PM (6 years ago)
Author:
dino@apple.com
Message:

Provide an lldb type summary for WebCore::Color
https://bugs.webkit.org/show_bug.cgi?id=187776

Reviewed by Dan Bates.

  • lldb/lldbWebKitTester/lldbWebKitTester.xcodeproj/project.pbxproj: Link against WebKit

to get to WebCore.

  • lldb/lldbWebKitTester/main.cpp:

(testSummaryProviders): Create some Color objects for testing.

  • lldb/lldb_webkit.py: Add a Color summary provider.

(lldb_init_module):
(WebCoreColor_SummaryProvider):
(WebCoreColorProvider):
(WebCoreColorProvider.
init):
(WebCoreColorProvider._is_extended):
(WebCoreColorProvider._is_valid):
(WebCoreColorProvider._is_semantic):
(WebCoreColorProvider._to_string_extended):
(WebCoreColorProvider.to_string):

  • lldb/lldb_webkit_unittest.py: Tests.

(TestSummaryProviders.serial_test_WTFVectorProvider_vector_size_and_capacity):
(TestSummaryProviders):
(TestSummaryProviders.serial_test_WebCoreColorProvider_invalid_color):
(TestSummaryProviders.serial_test_WebCoreColorProvider_extended_color):
(TestSummaryProviders.serial_test_WebCoreColorProvider_rgb_color):
(TestSummaryProviders.serial_test_WebCoreColorProvider_rgba_color):

Location:
trunk/Tools
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Tools/ChangeLog

    r233942 r233943  
     12018-07-18  Dean Jackson  <dino@apple.com>
     2
     3        Provide an lldb type summary for WebCore::Color
     4        https://bugs.webkit.org/show_bug.cgi?id=187776
     5
     6        Reviewed by Dan Bates.
     7
     8        * lldb/lldbWebKitTester/lldbWebKitTester.xcodeproj/project.pbxproj: Link against WebKit
     9            to get to WebCore.
     10        * lldb/lldbWebKitTester/main.cpp:
     11        (testSummaryProviders): Create some Color objects for testing.
     12
     13        * lldb/lldb_webkit.py: Add a Color summary provider.
     14        (__lldb_init_module):
     15        (WebCoreColor_SummaryProvider):
     16        (WebCoreColorProvider):
     17        (WebCoreColorProvider.__init__):
     18        (WebCoreColorProvider._is_extended):
     19        (WebCoreColorProvider._is_valid):
     20        (WebCoreColorProvider._is_semantic):
     21        (WebCoreColorProvider._to_string_extended):
     22        (WebCoreColorProvider.to_string):
     23
     24        * lldb/lldb_webkit_unittest.py: Tests.
     25        (TestSummaryProviders.serial_test_WTFVectorProvider_vector_size_and_capacity):
     26        (TestSummaryProviders):
     27        (TestSummaryProviders.serial_test_WebCoreColorProvider_invalid_color):
     28        (TestSummaryProviders.serial_test_WebCoreColorProvider_extended_color):
     29        (TestSummaryProviders.serial_test_WebCoreColorProvider_rgb_color):
     30        (TestSummaryProviders.serial_test_WebCoreColorProvider_rgba_color):
     31
    1322018-07-18  Truitt Savell  <tsavell@apple.com>
    233
  • trunk/Tools/lldb/lldbWebKitTester/lldbWebKitTester.xcodeproj/project.pbxproj

    r233942 r233943  
    99/* Begin PBXBuildFile section */
    1010                0FC1C35420E5391E001E9FB0 /* DumpClassLayoutTesting.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FC1C35320E5391E001E9FB0 /* DumpClassLayoutTesting.cpp */; };
     11                3156A19320FEEE3200CA3BA3 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3156A19220FEEE3200CA3BA3 /* WebKit.framework */; };
    1112                7CB6844B1AFA7978002B305C /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CB6844A1AFA7978002B305C /* main.cpp */; };
    1213                CE6C3AFF20C0B17B003E33D8 /* libWTF.a in Frameworks */ = {isa = PBXBuildFile; fileRef = CE6C3AFE20C0B17B003E33D8 /* libWTF.a */; };
     
    2930                0FC1C35320E5391E001E9FB0 /* DumpClassLayoutTesting.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DumpClassLayoutTesting.cpp; sourceTree = "<group>"; };
    3031                0FC1C35520E53932001E9FB0 /* DumpClassLayoutTesting.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DumpClassLayoutTesting.h; sourceTree = "<group>"; };
     32                3156A19220FEEE3200CA3BA3 /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = WebKit.framework; sourceTree = "<group>"; };
    3133                7C2227511AFC4D9C008C3338 /* Base.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Base.xcconfig; sourceTree = "<group>"; };
    3234                7C2227521AFC4D9C008C3338 /* lldbWebKitTester.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = lldbWebKitTester.xcconfig; sourceTree = "<group>"; };
     
    4547                                CE6C3B0120C0C444003E33D8 /* libicucore.dylib in Frameworks */,
    4648                                CE6C3AFF20C0B17B003E33D8 /* libWTF.a in Frameworks */,
     49                                3156A19320FEEE3200CA3BA3 /* WebKit.framework in Frameworks */,
    4750                        );
    4851                        runOnlyForDeploymentPostprocessing = 0;
     
    9497                                CE6C3B0020C0C443003E33D8 /* libicucore.dylib */,
    9598                                CE6C3AFE20C0B17B003E33D8 /* libWTF.a */,
     99                                3156A19220FEEE3200CA3BA3 /* WebKit.framework */,
    96100                        );
    97101                        name = Frameworks;
  • trunk/Tools/lldb/lldbWebKitTester/main.cpp

    r233942 r233943  
    2424 */
    2525
     26#define WEBCORE_EXPORT
     27
    2628#include "DumpClassLayoutTesting.h"
    2729#include <stdio.h>
     30#include <WebCore/Color.h>
    2831#include <wtf/text/StringBuilder.h>
    2932#include <wtf/text/WTFString.h>
     
    6265    aVectorWithOneItem.append(1);
    6366
     67    auto invalidColor = WebCore::Color { };
     68    auto rgbColor = WebCore::Color { 255, 128, 64 };
     69    auto rgbaColor = WebCore::Color { 255, 128, 64, 128 };
     70    auto extendedColor = WebCore::Color { 0.1, 0.2, 0.3, 0.4, WebCore::ColorSpaceDisplayP3 };
     71    auto semanticColor = WebCore::Color { WebCore::makeRGBA(255, 255, 255, 255), WebCore::Color::Semantic };
     72
    6473    breakForTestingSummaryProviders();
    6574}
  • trunk/Tools/lldb/lldb_webkit.py

    r233942 r233943  
    4545    debugger.HandleCommand('type synthetic add -x "WTF::Vector<.+>$" --python-class lldb_webkit.WTFVectorProvider')
    4646    debugger.HandleCommand('type synthetic add -x "WTF::HashTable<.+>$" --python-class lldb_webkit.WTFHashTableProvider')
     47    debugger.HandleCommand('type summary add -F lldb_webkit.WebCoreColor_SummaryProvider WebCore::Color')
    4748    debugger.HandleCommand('type summary add -F lldb_webkit.WebCoreLayoutUnit_SummaryProvider WebCore::LayoutUnit')
    4849    debugger.HandleCommand('type summary add -F lldb_webkit.WebCoreLayoutSize_SummaryProvider WebCore::LayoutSize')
     
    9798
    9899
     100def WebCoreColor_SummaryProvider(valobj, dict):
     101    provider = WebCoreColorProvider(valobj, dict)
     102    return "{ %s }" % provider.to_string()
     103
     104
    99105def WebCoreURL_SummaryProvider(valobj, dict):
    100106    provider = WebCoreURLProvider(valobj, dict)
     
    308314            return u""
    309315        return impl.to_string()
     316
     317
     318class WebCoreColorProvider:
     319    "Print a WebCore::Color"
     320    def __init__(self, valobj, dict):
     321        self.valobj = valobj
     322
     323    def _is_extended(self, rgba_and_flags):
     324        return not bool(rgba_and_flags & 0x1)
     325
     326    def _is_valid(self, rgba_and_flags):
     327        # Assumes not extended.
     328        return bool(rgba_and_flags & 0x2)
     329
     330    def _is_semantic(self, rgba_and_flags):
     331        # Assumes not extended.
     332        return bool(rgba_and_flags & 0x4)
     333
     334    def _to_string_extended(self):
     335        extended_color = self.valobj.GetChildMemberWithName('m_colorData').GetChildMemberWithName('extendedColor').Dereference()
     336        profile = extended_color.GetChildMemberWithName('m_colorSpace').GetValue()
     337        if profile == 'ColorSpaceSRGB':
     338            profile = 'srgb'
     339        elif profile == 'ColorSpaceDisplayP3':
     340            profile = 'display-p3'
     341        else:
     342            profile = 'unknown'
     343        red = float(extended_color.GetChildMemberWithName('m_red').GetValue())
     344        green = float(extended_color.GetChildMemberWithName('m_green').GetValue())
     345        blue = float(extended_color.GetChildMemberWithName('m_blue').GetValue())
     346        alpha = float(extended_color.GetChildMemberWithName('m_alpha').GetValue())
     347        return "color(%s %1.2f %1.2f %1.2f / %1.2f)" % (profile, red, green, blue, alpha)
     348
     349    def to_string(self):
     350        rgba_and_flags = self.valobj.GetChildMemberWithName('m_colorData').GetChildMemberWithName('rgbaAndFlags').GetValueAsUnsigned(0)
     351
     352        if self._is_extended(rgba_and_flags):
     353            return self._to_string_extended()
     354
     355        if not self._is_valid(rgba_and_flags):
     356            return 'invalid'
     357
     358        color = rgba_and_flags >> 32
     359        red = (color >> 16) & 0xFF
     360        green = (color >> 8) & 0xFF
     361        blue = color & 0xFF
     362        alpha = ((color >> 24) & 0xFF) / 255.0
     363
     364        semantic = ' semantic' if self._is_semantic(rgba_and_flags) else ""
     365
     366        result = 'rgba(%d, %d, %d, %1.2f)%s' % (red, green, blue, alpha, semantic)
     367        return result
    310368
    311369
  • trunk/Tools/lldb/lldb_webkit_unittest.py

    r233942 r233943  
    153153        summary = lldb_webkit.WTFVector_SummaryProvider(variable, {})
    154154        self.assertEqual(summary, "{ size = 1, capacity = 16 }")
     155
     156    # MARK: WebCoreColor_SummaryProvider test cases
     157
     158    def serial_test_WebCoreColorProvider_invalid_color(self):
     159        variable = self._sbFrame.FindVariable('invalidColor');
     160        summary = lldb_webkit.WebCoreColor_SummaryProvider(variable, {})
     161        self.assertEqual(summary, "{ invalid }")
     162
     163    def serial_test_WebCoreColorProvider_extended_color(self):
     164        variable = self._sbFrame.FindVariable('extendedColor');
     165        summary = lldb_webkit.WebCoreColor_SummaryProvider(variable, {})
     166        self.assertEqual(summary, "{ color(display-p3 0.10 0.20 0.30 / 0.40) }")
     167
     168    def serial_test_WebCoreColorProvider_rgb_color(self):
     169        variable = self._sbFrame.FindVariable('rgbColor');
     170        summary = lldb_webkit.WebCoreColor_SummaryProvider(variable, {})
     171        self.assertEqual(summary, "{ rgba(255, 128, 64, 1.00) }")
     172
     173    def serial_test_WebCoreColorProvider_rgba_color(self):
     174        variable = self._sbFrame.FindVariable('rgbaColor');
     175        summary = lldb_webkit.WebCoreColor_SummaryProvider(variable, {})
     176        self.assertEqual(summary, "{ rgba(255, 128, 64, 0.50) }")
     177
     178    def serial_test_WebCoreColorProvider_semantic_color(self):
     179        variable = self._sbFrame.FindVariable('semanticColor');
     180        summary = lldb_webkit.WebCoreColor_SummaryProvider(variable, {})
     181        self.assertEqual(summary, "{ rgba(255, 255, 255, 1.00) semantic }")
     182
Note: See TracChangeset for help on using the changeset viewer.