Changeset 233943 in webkit
- Timestamp:
- Jul 18, 2018 5:47:57 PM (6 years ago)
- Location:
- trunk/Tools
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Tools/ChangeLog
r233942 r233943 1 2018-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 1 32 2018-07-18 Truitt Savell <tsavell@apple.com> 2 33 -
trunk/Tools/lldb/lldbWebKitTester/lldbWebKitTester.xcodeproj/project.pbxproj
r233942 r233943 9 9 /* Begin PBXBuildFile section */ 10 10 0FC1C35420E5391E001E9FB0 /* DumpClassLayoutTesting.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FC1C35320E5391E001E9FB0 /* DumpClassLayoutTesting.cpp */; }; 11 3156A19320FEEE3200CA3BA3 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3156A19220FEEE3200CA3BA3 /* WebKit.framework */; }; 11 12 7CB6844B1AFA7978002B305C /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CB6844A1AFA7978002B305C /* main.cpp */; }; 12 13 CE6C3AFF20C0B17B003E33D8 /* libWTF.a in Frameworks */ = {isa = PBXBuildFile; fileRef = CE6C3AFE20C0B17B003E33D8 /* libWTF.a */; }; … … 29 30 0FC1C35320E5391E001E9FB0 /* DumpClassLayoutTesting.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DumpClassLayoutTesting.cpp; sourceTree = "<group>"; }; 30 31 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>"; }; 31 33 7C2227511AFC4D9C008C3338 /* Base.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Base.xcconfig; sourceTree = "<group>"; }; 32 34 7C2227521AFC4D9C008C3338 /* lldbWebKitTester.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = lldbWebKitTester.xcconfig; sourceTree = "<group>"; }; … … 45 47 CE6C3B0120C0C444003E33D8 /* libicucore.dylib in Frameworks */, 46 48 CE6C3AFF20C0B17B003E33D8 /* libWTF.a in Frameworks */, 49 3156A19320FEEE3200CA3BA3 /* WebKit.framework in Frameworks */, 47 50 ); 48 51 runOnlyForDeploymentPostprocessing = 0; … … 94 97 CE6C3B0020C0C443003E33D8 /* libicucore.dylib */, 95 98 CE6C3AFE20C0B17B003E33D8 /* libWTF.a */, 99 3156A19220FEEE3200CA3BA3 /* WebKit.framework */, 96 100 ); 97 101 name = Frameworks; -
trunk/Tools/lldb/lldbWebKitTester/main.cpp
r233942 r233943 24 24 */ 25 25 26 #define WEBCORE_EXPORT 27 26 28 #include "DumpClassLayoutTesting.h" 27 29 #include <stdio.h> 30 #include <WebCore/Color.h> 28 31 #include <wtf/text/StringBuilder.h> 29 32 #include <wtf/text/WTFString.h> … … 62 65 aVectorWithOneItem.append(1); 63 66 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 64 73 breakForTestingSummaryProviders(); 65 74 } -
trunk/Tools/lldb/lldb_webkit.py
r233942 r233943 45 45 debugger.HandleCommand('type synthetic add -x "WTF::Vector<.+>$" --python-class lldb_webkit.WTFVectorProvider') 46 46 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') 47 48 debugger.HandleCommand('type summary add -F lldb_webkit.WebCoreLayoutUnit_SummaryProvider WebCore::LayoutUnit') 48 49 debugger.HandleCommand('type summary add -F lldb_webkit.WebCoreLayoutSize_SummaryProvider WebCore::LayoutSize') … … 97 98 98 99 100 def WebCoreColor_SummaryProvider(valobj, dict): 101 provider = WebCoreColorProvider(valobj, dict) 102 return "{ %s }" % provider.to_string() 103 104 99 105 def WebCoreURL_SummaryProvider(valobj, dict): 100 106 provider = WebCoreURLProvider(valobj, dict) … … 308 314 return u"" 309 315 return impl.to_string() 316 317 318 class 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 310 368 311 369 -
trunk/Tools/lldb/lldb_webkit_unittest.py
r233942 r233943 153 153 summary = lldb_webkit.WTFVector_SummaryProvider(variable, {}) 154 154 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.