<?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>
</Type>
<Type Name="gfx::Size">
<AlternativeType Name="gfx::SizeF"/>
<DisplayString>({width_}, {height_})</DisplayString>
</Type>
<Type Name="gfx::Rect">
<AlternativeType Name="gfx::RectF"/>
<DisplayString>({origin_.x_}, {origin_.y_}) x ({size_.width_}, {size_.height_})</DisplayString>
</Type>
<Type Name="gfx::Matrix44">
<Expand>
<ArrayItems>
<Direction>Backward</Direction>
<Rank>2</Rank>
<Size>4</Size>
<ValuePointer>matrix_[0]</ValuePointer>
</ArrayItems>
</Expand>
</Type>
<Type Name="gfx::AxisTransform2d">
<DisplayString>({scale_.x_}, {scale_.y_}) + ({translation_.x_}, {translation_.y_})</DisplayString>
</Type>
<Type Name="gfx::Transform">
<DisplayString Condition="full_matrix_">{{ full_matrix_={full_matrix_} }}</DisplayString>
<DisplayString Condition="!full_matrix_">{{ axis_2d_={axis_2d_} }}</DisplayString>
<Expand>
<ExpandedItem Condition="full_matrix_ == true">matrix_</ExpandedItem>
<ExpandedItem Condition="!full_matrix_">axis_2d_</ExpandedItem>
</Expand>
</Type>
<Type Name="gpu::Mailbox">
<DisplayString Condition="name[0] == 0 && name[1] == 0 && name[2] == 0 && name[3] == 0
&& name[4] == 0 && name[5] == 0 && name[6] == 0 && name[7] == 0
&& name[8] == 0 && name[9] == 0 && name[10] == 0 && name[11] == 0
&& name[12] == 0 && name[13] == 0 && name[14] == 0 && name[15] == 0">{{ name=[zero] }}</DisplayString>
<DisplayString>{{ name={name[0],nvoXb}:{name[1],nvoXb}:{name[2],nvoXb}:{name[3],nvoXb}:{name[4],nvoXb}:{name[5],nvoXb}:{name[6],nvoXb}:{name[7],nvoXb}:{name[8],nvoXb}:{name[9],nvoXb}:{name[10],nvoXb}:{name[11],nvoXb}:{name[12],nvoXb}:{name[13],nvoXb}:{name[14],nvoXb}:{name[15],nvoXb} }}</DisplayString>
</Type>
<Type Name="viz::SharedImageFormat">
<DisplayString Condition="plane_type_ == kSinglePlane">{format_.singleplanar_format}</DisplayString>
<DisplayString Condition="plane_type_ == kMultiPlane">{format_.multiplanar_format}</DisplayString>
</Type>
<Type Name="scoped_refptr<*>">
<SmartPointer Usage="Minimal">ptr_</SmartPointer>
<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" Condition="ptr_ != 0">((base::subtle::RefCountedBase*)ptr_)->ref_count_</Item>
<ExpandedItem Condition="ptr_ != 0">ptr_</ExpandedItem>
</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::FilePath">
<DisplayString>{path_}</DisplayString>
</Type>
<Type Name="base::time_internal::TimeBase<*>">
<Intrinsic Name="microseconds" Expression="us_.value_" />
<Intrinsic Name="kHoursPerDay" Expression="24" />
<Intrinsic Name="kMinutesPerHour" Expression="60" />
<Intrinsic Name="kSecondsPerMinute" Expression="60" />
<Intrinsic Name="kMillisecondsPerSecond" Expression="1000" />
<Intrinsic Name="kMicrosecondsPerMillisecond" Expression="1000" />
<Intrinsic Name="kMicrosecondsPerSecond" Expression="kMicrosecondsPerMillisecond() * kMillisecondsPerSecond()" />
<Intrinsic Name="kMicrosecondsPerMinute" Expression="kMicrosecondsPerSecond() * kSecondsPerMinute()" />
<Intrinsic Name="kMicrosecondsPerHour" Expression="(int64_t)kMicrosecondsPerMinute() * kMinutesPerHour()" />
<Intrinsic Name="kMicrosecondsPerDay" Expression="(int64_t)kMicrosecondsPerHour() * kHoursPerDay()" />
<Intrinsic Name="microseconds_float" Expression="microseconds() * 1.0" />
<DisplayString Condition="microseconds() % kMicrosecondsPerDay() == 0">{microseconds() / kMicrosecondsPerDay()}d</DisplayString>
<DisplayString Condition="microseconds() % kMicrosecondsPerHour() == 0">{microseconds() / kMicrosecondsPerHour()}h</DisplayString>
<DisplayString Condition="microseconds() % kMicrosecondsPerMinute() == 0">{microseconds() / kMicrosecondsPerMinute()}m</DisplayString>
<DisplayString Condition="microseconds() % kMicrosecondsPerSecond() == 0">{microseconds() / kMicrosecondsPerSecond()}s</DisplayString>
<DisplayString Condition="microseconds() % kMicrosecondsPerMillisecond() == 0">{microseconds() / kMicrosecondsPerMillisecond()}ms</DisplayString>
<DisplayString>{microseconds()}us</DisplayString>
<Expand>
<Item Name="[in days]">microseconds_float() / kMicrosecondsPerDay()</Item>
<Item Name="[in hours]">microseconds_float() / kMicrosecondsPerHour()</Item>
<Item Name="[in minutes]">microseconds_float() / kMicrosecondsPerMinute()</Item>
<Item Name="[in seconds]">microseconds_float() / kMicrosecondsPerSecond()</Item>
<Item Name="[in milliseconds]">microseconds_float() / kMicrosecondsPerMillisecond()</Item>
<Item Name="[in microseconds]">microseconds()</Item>
</Expand>
</Type>
<Type Name="base::TimeDelta">
<Intrinsic Name="microseconds" Expression="delta_.value_" />
<Intrinsic Name="kHoursPerDay" Expression="24" />
<Intrinsic Name="kMinutesPerHour" Expression="60" />
<Intrinsic Name="kSecondsPerMinute" Expression="60" />
<Intrinsic Name="kMillisecondsPerSecond" Expression="1000" />
<Intrinsic Name="kMicrosecondsPerMillisecond" Expression="1000" />
<Intrinsic Name="kMicrosecondsPerSecond" Expression="kMicrosecondsPerMillisecond() * kMillisecondsPerSecond()" />
<Intrinsic Name="kMicrosecondsPerMinute" Expression="kMicrosecondsPerSecond() * kSecondsPerMinute()" />
<Intrinsic Name="kMicrosecondsPerHour" Expression="(int64_t)kMicrosecondsPerMinute() * kMinutesPerHour()" />
<Intrinsic Name="kMicrosecondsPerDay" Expression="(int64_t)kMicrosecondsPerHour() * kHoursPerDay()" />
<Intrinsic Name="microseconds_float" Expression="microseconds() * 1.0" />
<DisplayString Condition="microseconds() % kMicrosecondsPerDay() == 0">{microseconds() / kMicrosecondsPerDay()}d</DisplayString>
<DisplayString Condition="microseconds() % kMicrosecondsPerHour() == 0">{microseconds() / kMicrosecondsPerHour()}h</DisplayString>
<DisplayString Condition="microseconds() % kMicrosecondsPerMinute() == 0">{microseconds() / kMicrosecondsPerMinute()}m</DisplayString>
<DisplayString Condition="microseconds() % kMicrosecondsPerSecond() == 0">{microseconds() / kMicrosecondsPerSecond()}s</DisplayString>
<DisplayString Condition="microseconds() % kMicrosecondsPerMillisecond() == 0">{microseconds() / kMicrosecondsPerMillisecond()}ms</DisplayString>
<DisplayString>{microseconds()}us</DisplayString>
<Expand>
<Item Name="[in days]">microseconds_float() / kMicrosecondsPerDay()</Item>
<Item Name="[in hours]">microseconds_float() / kMicrosecondsPerHour()</Item>
<Item Name="[in minutes]">microseconds_float() / kMicrosecondsPerMinute()</Item>
<Item Name="[in seconds]">microseconds_float() / kMicrosecondsPerSecond()</Item>
<Item Name="[in milliseconds]">microseconds_float() / kMicrosecondsPerMillisecond()</Item>
<Item Name="[in microseconds]">microseconds()</Item>
</Expand>
</Type>
<Type Name="GURL">
<DisplayString>{spec_}</DisplayString>
</Type>
<Type Name="base::ManualConstructor<*>">
<DisplayString>{*($T1*)space_.data_}</DisplayString>
<Expand>
<ExpandedItem>*($T1*)space_.data_</ExpandedItem>
</Expand>
</Type>
<Type Name="base::IdType<*,*,*,*,*>">
<Intrinsic Name="is_null" Expression="value_ == $T3 || value_ == $T5" />
<DisplayString Condition="!is_null()">{value_}</DisplayString>
<DisplayString>null</DisplayString>
<Expand>
<Item Name="[value]">value_</Item>
<Item Name="[is_null]">is_null()</Item>
</Expand>
</Type>
<Type Name="base::IdType<*>">
<Intrinsic Name="is_null" Expression="value_ == $T3" />
<DisplayString Condition="!is_null()">{value_}</DisplayString>
<DisplayString>null</DisplayString>
<Expand>
<Item Name="[value]">value_</Item>
<Item Name="[is_null]">is_null()</Item>
<Item Name="more values that may be null (see chrome.natvis)" Optional="true" ExcludeView="simple">$T6</Item>
</Expand>
</Type>
<Type Name="base::internal::flat_tree<*>">
<DisplayString>{body_}</DisplayString>
<Expand>
<ExpandedItem>body_</ExpandedItem>
</Expand>
</Type>
<Type Name="base::Value">
<Intrinsic Name="index" Expression="(int)data_.__impl_.__index"/>
<DisplayString Condition="index() == base::Value::Type::NONE" Optional="true">None</DisplayString>
<DisplayString Condition="index() == base::Value::Type::BOOLEAN" Optional="true">Boolean {data_.__impl_.__data.__tail.__head.__value}</DisplayString>
<DisplayString Condition="index() == base::Value::Type::INTEGER" Optional="true">Integer {data_.__impl_.__data.__tail.__tail.__head.__value}</DisplayString>
<DisplayString Condition="index() == base::Value::Type::DOUBLE" Optional="true">Double {*(double*)&data_.__impl_.__data.__tail.__tail.__tail.__head.__value.v_}</DisplayString>
<DisplayString Condition="index() == base::Value::Type::STRING" Optional="true">String {data_.__impl_.__data.__tail.__tail.__tail.__tail.__head.__value,na}</DisplayString>
<DisplayString Condition="index() == base::Value::Type::BINARY" Optional="true">Binary {data_.__impl_.__data.__tail.__tail.__tail.__tail.__tail.__head.__value}</DisplayString>
<DisplayString Condition="index() == base::Value::Type::DICT" Optional="true">Dict {data_.__impl_.__data.__tail.__tail.__tail.__tail.__tail.__tail.__head.__value}</DisplayString>
<DisplayString Condition="index() == base::Value::Type::LIST" Optional="true">List {data_.__impl_.__data.__tail.__tail.__tail.__tail.__tail.__tail.__tail.__head.__value}</DisplayString>
<DisplayString>Unknown type</DisplayString>
<Expand>
<ExpandedItem Condition="index() == base::Value::Type::STRING" Optional="true">data_.__impl_.__data.__tail.__tail.__tail.__tail.__head.__value,na</ExpandedItem>
<ExpandedItem Condition="index() == base::Value::Type::BINARY" Optional="true">data_.__impl_.__data.__tail.__tail.__tail.__tail.__tail.__head.__value</ExpandedItem>
<ExpandedItem Condition="index() == base::Value::Type::DICT" Optional="true">data_.__impl_.__data.__tail.__tail.__tail.__tail.__tail.__tail.__head.__value</ExpandedItem>
<ExpandedItem Condition="index() == base::Value::Type::LIST" Optional="true">data_.__impl_.__data.__tail.__tail.__tail.__tail.__tail.__tail.__tail.__head.__value</ExpandedItem>
</Expand>
</Type>
<Type Name="base::DictValue" >
<DisplayString>{storage_}</DisplayString>
<Expand>
<ExpandedItem>storage_</ExpandedItem>
</Expand>
</Type>
<Type Name="base::LazyInstance<*,*>">
<Intrinsic Name="atomic_value" Expression="*(unsigned long long*)&private_instance_" />
<Intrinsic Name="is_created" Expression="atomic_value() != 0" />
<Intrinsic Name="instance_ptr" Expression="(($T1*)private_buf_)" />
<DisplayString Condition="!is_created()">{{ not created }}</DisplayString>
<DisplayString Condition="is_created()">{{ created: {*instance_ptr()} }}</DisplayString>
<Expand>
<Item Name="[IsCreated]" ExcludeView="simple">is_created()</Item>
<Item Name="[instance]" Condition="is_created()">*instance_ptr()</Item>
</Expand>
</Type>
<Type Name="base::ListValue" >
<DisplayString>{storage_}</DisplayString>
<Expand>
<ExpandedItem>storage_</ExpandedItem>
</Expand>
</Type>
<Type Name="base::StrongAlias<*,*>">
<DisplayString>{value_}</DisplayString>
</Type>
<Type Name="base::span<*>">
<Intrinsic Name="size" Expression="size_" />
<DisplayString>{{ size={size()} }}</DisplayString>
<Expand>
<ArrayItems>
<Size>size()</Size>
<ValuePointer>data_</ValuePointer>
</ArrayItems>
</Expand>
</Type>
<Type Name="base::WeakPtr<*>">
<Intrinsic Name="ref_is_valid" Expression="ref_.flag_.ptr_ && (uint8_t*)&(ref_.flag_.ptr_->invalidated_.flag_)" />
<Intrinsic Name="was_invalidated" Expression="ptr_ && !ref_is_valid()" />
<Intrinsic Name="value" Expression="*($T1**)&ptr_" />
<SmartPointer Usage="Minimal">value()</SmartPointer>
<DisplayString Condition="was_invalidated()">invalidated</DisplayString>
<DisplayString Condition="value() == 0">empty</DisplayString>
<DisplayString Condition="value() != 0">WeakPtr {value()}</DisplayString>
<Expand>
<Item Condition="ref_is_valid() && value() != 0" Name="[ptr]">value()</Item>
<Item Condition="!ref_is_valid() && value() != 0" Name="[invalidated ptr]">value()</Item>
<Item Name="[ref_is_valid]" ExcludeView="simple">ref_is_valid()</Item>
<Item Name="[was_invalidated]" Condition="!ref_is_valid()" ExcludeView="simple">was_invalidated()</Item>
</Expand>
</Type>
</AutoVisualizer>