Index: tools/win/DebugVisualizers/chrome.natvis |
diff --git a/tools/win/DebugVisualizers/chrome.natvis b/tools/win/DebugVisualizers/chrome.natvis |
new file mode 100644 |
index 0000000000000000000000000000000000000000..7a7c45e1ac1330a3cdaf07a78022f3a10befceca |
--- /dev/null |
+++ b/tools/win/DebugVisualizers/chrome.natvis |
@@ -0,0 +1,266 @@ |
+<?xml version="1.0" encoding="utf-8" ?> |
+<AutoVisualizer |
+ xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010"> |
+ <Type Name="gfx::Point"> |
+ <AlternativeType Name="gfx::PointF"/> |
+ <DisplayString>({x_}, {y_})</DisplayString> |
+ <Expand> |
+ <Item Name="X">x_</Item> |
+ <Item Name="Y">y_</Item> |
+ </Expand> |
+ </Type> |
+ <Type Name="gfx::Size"> |
+ <AlternativeType Name="gfx::SizeF"/> |
+ <DisplayString>({width_}, {height_})</DisplayString> |
+ <Expand> |
+ <Item Name="Width">width_</Item> |
+ <Item Name="Height">height_</Item> |
+ </Expand> |
+ </Type> |
+ <Type Name="gfx::Rect"> |
+ <AlternativeType Name="gfx::RectF"/> |
+ <DisplayString>({origin_.x_}, {origin_.y_}) x ({size_.width_}, {size_.height_})</DisplayString> |
+ <Expand> |
+ <Item Name="Left">origin_.x_</Item> |
+ <Item Name="Top">origin_.y_</Item> |
+ <Item Name="Width">size_.width_</Item> |
+ <Item Name="Height">size_.height_</Item> |
+ </Expand> |
+ </Type> |
+ <Type Name="aura::Window::Value"> |
+ <DisplayString>{name,s}: {value}</DisplayString> |
+ <Expand/> |
+ </Type> |
+ <Type Name="aura::Window"> |
+ <DisplayString>{name_,s}</DisplayString> |
+ <Expand> |
+ <Item Name="Name">name_</Item> |
+ <Item Name="Id">id_</Item> |
+ <Item Name="Parent">parent_</Item> |
+ <Item Name="Children">children_</Item> |
+ <Item Name="Bounds">bounds_</Item> |
+ <Item Name="Type">type_</Item> |
+ <Item Name="Visible">visible_</Item> |
+ <Item Name="Transparent">transparent_</Item> |
+ <!--<Synthetic Name="Property Map"> |
+ <DisplayString>Size = {prop_map_._Mysize}</DisplayString> |
+ <Expand> |
+ <TreeItems> |
+ <Size>prop_map_._Mysize</Size> |
+ <HeadPointer>prop_map_._Myhead->_Parent</HeadPointer> |
+ <LeftPointer>_Left</LeftPointer> |
+ <RightPointer>_Right</RightPointer> |
+ <ValueNode Condition="_Isnil == 0">_Myval.second</ValueNode> |
+ </TreeItems> |
+ </Expand> |
+ </Synthetic>--> |
+ <Item Name="Layer">layer_</Item> |
+ </Expand> |
+ </Type> |
+ <Type Name="scoped_ptr<*,*>"> |
+ <DisplayString Condition="impl_.data_.ptr == 0">null</DisplayString> |
+ <DisplayString>{impl_.data_.ptr}</DisplayString> |
+ <Expand> |
+ <ExpandedItem>impl_.data_.ptr</ExpandedItem> |
+ </Expand> |
+ </Type> |
+ <Type Name="scoped_refptr<*>"> |
+ <DisplayString Condition="ptr_ == 0">null</DisplayString> |
+ <DisplayString>[{((base::subtle::RefCountedBase*)ptr_)->ref_count_}] {(void*)ptr_} {*ptr_}</DisplayString> |
+ <Expand> |
+ <Item Name="Ptr">ptr_</Item> |
+ <Item Name="RefCount">((base::subtle::RefCountedBase*)ptr_)->ref_count_</Item> |
+ </Expand> |
+ </Type> |
+ <Type Name="base::RefCounted<*>"> |
+ <DisplayString>RefCount: {ref_count_}</DisplayString> |
+ <Expand> |
+ <Item Name="RefCount">ref_count_</Item> |
+ </Expand> |
+ </Type> |
+ <Type Name="IPC::Message::Header"> |
+ <DisplayString>{{Routing: {routing}, Type: {type}}}</DisplayString> |
+ <Expand> |
+ <Item Name="RoutingId">routing</Item> |
+ <Item Name="Type">type</Item> |
+ <Synthetic Name="Priority" |
+ Condition="(flags & IPC::Message::PRIORITY_MASK) == |
+ IPC::Message::PRIORITY_LOW"> |
+ <DisplayString>Low</DisplayString> |
+ </Synthetic> |
+ <Synthetic Name="Priority" |
+ Condition="(flags & IPC::Message::PRIORITY_MASK) == |
+ IPC::Message::PRIORITY_NORMAL"> |
+ <DisplayString>Normal</DisplayString> |
+ </Synthetic> |
+ <Synthetic Name="Priority" |
+ Condition="(flags & IPC::Message::PRIORITY_MASK) == |
+ IPC::Message::PRIORITY_HIGH"> |
+ <DisplayString>High</DisplayString> |
+ </Synthetic> |
+ <Synthetic Name="Sync" |
+ Condition="(flags & IPC::Message::SYNC_BIT) != 0"> |
+ <DisplayString>true</DisplayString> |
+ </Synthetic> |
+ <Synthetic Name="Sync" |
+ Condition="(flags & IPC::Message::SYNC_BIT) == 0"> |
+ <DisplayString>false</DisplayString> |
+ </Synthetic> |
+ <Synthetic Name="Reply" |
+ Condition="(flags & IPC::Message::REPLY_BIT) != 0"> |
+ <DisplayString>true</DisplayString> |
+ </Synthetic> |
+ <Synthetic Name="Reply" |
+ Condition="(flags & IPC::Message::REPLY_BIT) == 0"> |
+ <DisplayString>false</DisplayString> |
+ </Synthetic> |
+ <Synthetic Name="ReplyError" |
+ Condition="(flags & IPC::Message::REPLY_ERROR_BIT) != 0"> |
+ <DisplayString>true</DisplayString> |
+ </Synthetic> |
+ <Synthetic Name="ReplyError" |
+ Condition="(flags & IPC::Message::REPLY_ERROR_BIT) == 0"> |
+ <DisplayString>false</DisplayString> |
+ </Synthetic> |
+ <Synthetic Name="Unblock" |
+ Condition="(flags & IPC::Message::UNBLOCK_BIT) != 0"> |
+ <DisplayString>true</DisplayString> |
+ </Synthetic> |
+ <Synthetic Name="Unblock" |
+ Condition="(flags & IPC::Message::UNBLOCK_BIT) == 0"> |
+ <DisplayString>false</DisplayString> |
+ </Synthetic> |
+ <Synthetic Name="PumpingMessages" |
+ Condition="(flags & IPC::Message::PUMPING_MSGS_BIT) != 0"> |
+ <DisplayString>true</DisplayString> |
+ </Synthetic> |
+ <Synthetic Name="PumpingMessages" |
+ Condition="(flags & IPC::Message::PUMPING_MSGS_BIT) == 0"> |
+ <DisplayString>false</DisplayString> |
+ </Synthetic> |
+ <Synthetic Name="HasSentTime" |
+ Condition="(flags & IPC::Message::HAS_SENT_TIME_BIT) != 0"> |
+ <DisplayString>true</DisplayString> |
+ </Synthetic> |
+ <Synthetic Name="HasSentTime" |
+ Condition="(flags & IPC::Message::HAS_SENT_TIME_BIT) == 0"> |
+ <DisplayString>false</DisplayString> |
+ </Synthetic> |
+ </Expand> |
+ </Type> |
+ <Type Name="IPC::Message"> |
+ <DisplayString>{{size = {header_size_+capacity_after_header_}}}</DisplayString> |
+ <Expand> |
+ <ExpandedItem>*((IPC::Message::Header*)header_),nd</ExpandedItem> |
+ <Item Name="Payload">(void*)((char*)header_ + header_size_)</Item> |
+ </Expand> |
+ </Type> |
+ <Type Name="base::TimeDelta"> |
+ <DisplayString>{delta_}</DisplayString> |
+ <Expand> |
+ <Synthetic Name="Days"> |
+ <DisplayString>{(int)(delta_ / {,,base.dll}base::Time::kMicrosecondsPerDay)}</DisplayString> |
+ </Synthetic> |
+ <Synthetic Name="Hours"> |
+ <DisplayString>{(int)(delta_ / {,,base.dll}base::Time::kMicrosecondsPerHour)}</DisplayString> |
+ </Synthetic> |
+ <Synthetic Name="Minutes"> |
+ <DisplayString>{(int)(delta_ / {,,base.dll}base::Time::kMicrosecondsPerMinute)}</DisplayString> |
+ </Synthetic> |
+ <Synthetic Name="Seconds"> |
+ <DisplayString>{(int)(delta_ / {,,base.dll}base::Time::kMicrosecondsPerSecond)}</DisplayString> |
+ </Synthetic> |
+ <Synthetic Name="Milliseconds"> |
+ <DisplayString>{(int)(delta_ / {,,base.dll}base::Time::kMicrosecondsPerMillisecond)}</DisplayString> |
+ </Synthetic> |
+ <Item Name="Microseconds">delta_</Item> |
+ </Expand> |
+ </Type> |
+ <Type Name="GURL"> |
+ <DisplayString>{spec_}</DisplayString> |
+ <Expand> |
+ <Item Name="Spec">spec_</Item> |
+ <Item Name="IsValid">is_valid_</Item> |
+ <Synthetic Name="Scheme"> |
+ <DisplayString |
+ Condition="parsed_.scheme.len==-1">undefined</DisplayString> |
+ <DisplayString>spec_._Myres[parsed_.scheme.begin][</DisplayString> |
+ </Synthetic> |
+ <Synthetic Name="Username"> |
+ <DisplayString |
+ Condition="parsed_.username.len==-1">undefined</DisplayString> |
+ <DisplayString>spec_._Myres[parsed_.username.begin][</DisplayString> |
+ </Synthetic> |
+ <Synthetic Name="Password"> |
+ <DisplayString |
+ Condition="parsed_.password.len==-1">undefined</DisplayString> |
+ <DisplayString>spec_._Myres[parsed_.password.begin][</DisplayString> |
+ </Synthetic> |
+ <Synthetic Name="Host"> |
+ <DisplayString |
+ Condition="parsed_.host.len==-1">undefined</DisplayString> |
+ <DisplayString>spec_._Myres[parsed_.host.begin][</DisplayString> |
+ </Synthetic> |
+ <Synthetic Name="Port"> |
+ <DisplayString |
+ Condition="parsed_.port.len==-1">undefined</DisplayString> |
+ <DisplayString>spec_._Myres[parsed_.port.begin][</DisplayString> |
+ </Synthetic> |
+ <Synthetic Name="Path"> |
+ <DisplayString |
+ Condition="parsed_.path.len==-1">undefined</DisplayString> |
+ <DisplayString>spec_._Myres[parsed_.path.begin][</DisplayString> |
+ </Synthetic> |
+ <Synthetic Name="Query"> |
+ <DisplayString |
+ Condition="parsed_.query.len==-1">undefined</DisplayString> |
+ <DisplayString>spec_._Myres[parsed_.query.begin][</DisplayString> |
+ </Synthetic> |
+ <Synthetic Name="Ref"> |
+ <DisplayString Condition="parsed_.ref.len==-1">undefined</DisplayString> |
+ <DisplayString>spec_._Myres[parsed_.ref.begin][</DisplayString> |
+ </Synthetic> |
+ </Expand> |
+ </Type> |
+ <Type Name="base::Value"> |
+ <DisplayString>{type_}</DisplayString> |
+ <Expand> |
+ <Item Name="Type">type_</Item> |
+ </Expand> |
+ </Type> |
+ <Type Name="base::FundamentalValue"> |
+ <DisplayString>Fundamental</DisplayString> |
+ <Expand> |
+ <ExpandedItem>(base::Value*)this,nd</ExpandedItem> |
+ <Item Name="Int">integer_value_</Item> |
+ <Item Name="Bool">boolean_value_</Item> |
+ <Item Name="Double">double_value_</Item> |
+ </Expand> |
+ </Type> |
+ <Type Name="base::StringValue"> |
+ <DisplayString>String ({value_})</DisplayString> |
+ <Expand> |
+ <ExpandedItem>(base::Value*)this,nd</ExpandedItem> |
+ <Item Name="Value">value_</Item> |
+ </Expand> |
+ </Type> |
+ <Type Name="base::BinaryValue"> |
+ <DisplayString>Binary ({size_} byte(s))</DisplayString> |
+ <Expand> |
+ <ExpandedItem>(base::Value*)this,nd</ExpandedItem> |
+ <Item Name="Data">buffer_</Item> |
+ </Expand> |
+ </Type> |
+ <Type Name="base::DictionaryValue"> |
+ <DisplayString>Dictionary ({dictionary_._Mysize} entries)</DisplayString> |
+ <Expand> |
+ <ExpandedItem>dictionary_</ExpandedItem> |
+ </Expand> |
+ </Type> |
+ <Type Name="base::ListValue"> |
+ <DisplayString>List ({list_._Mysize} entries)</DisplayString> |
+ <Expand> |
+ <ExpandedItem>list_</ExpandedItem> |
+ </Expand> |
+ </Type> |
+</AutoVisualizer> |