Index: third_party/WebKit/Source/platform/graphics/paint/DisplayItem.h |
diff --git a/third_party/WebKit/Source/platform/graphics/paint/DisplayItem.h b/third_party/WebKit/Source/platform/graphics/paint/DisplayItem.h |
index 632fa11d2677a35c0755d2c8991722d5ed772cf4..4168d6d6c788de9ee48baf1ba9c37d3591a5103d 100644 |
--- a/third_party/WebKit/Source/platform/graphics/paint/DisplayItem.h |
+++ b/third_party/WebKit/Source/platform/graphics/paint/DisplayItem.h |
@@ -192,8 +192,8 @@ public: |
TableCollapsedBorderLeft = 1 << 3, |
}; |
- DisplayItem(const DisplayItemClientWrapper& client, Type type, size_t derivedSize) |
- : m_client(client.displayItemClient()) |
+ DisplayItem(const DisplayItemClient& client, Type type, size_t derivedSize) |
+ : m_client(&client) |
, m_scope(0) |
, m_type(type) |
, m_derivedSize(derivedSize) |
@@ -213,7 +213,7 @@ public: |
// Ids are for matching new DisplayItems with existing DisplayItems. |
struct Id { |
STACK_ALLOCATED(); |
- Id(const DisplayItemClient client, const Type type, const unsigned scope) |
+ Id(const DisplayItemClient& client, const Type type, const unsigned scope) |
: client(client) |
, type(type) |
, scope(scope) { } |
@@ -223,12 +223,12 @@ public: |
// We should always convert to non-cached types before matching. |
ASSERT(!isCachedType(item.m_type)); |
ASSERT(!isCachedType(type)); |
- return client == item.m_client |
+ return &client == item.m_client |
&& type == item.m_type |
&& scope == item.m_scope; |
} |
- const DisplayItemClient client; |
+ const DisplayItemClient& client; |
const Type type; |
const unsigned scope; |
}; |
@@ -246,12 +246,12 @@ public: |
// Return the Id with cached type converted to non-cached type. |
Id nonCachedId() const |
{ |
- return Id(m_client, nonCachedType(m_type), m_scope); |
+ return Id(*m_client, nonCachedType(m_type), m_scope); |
} |
virtual void replay(GraphicsContext&) const { } |
- DisplayItemClient client() const { return m_client; } |
+ const DisplayItemClient& client() const { ASSERT(m_client); return *m_client; } |
Type type() const { return m_type; } |
void setScope(unsigned scope) { m_scope = scope; } |
@@ -345,7 +345,7 @@ public: |
#ifndef NDEBUG |
static WTF::String typeAsDebugString(DisplayItem::Type); |
- const WTF::String& clientDebugString() const { return m_clientDebugString; } |
+ const WTF::String clientDebugString() const { return m_clientDebugString; } |
void setClientDebugString(const WTF::String& s) { m_clientDebugString = s; } |
WTF::String asDebugString() const; |
virtual void dumpPropertiesAsDebugString(WTF::StringBuilder&) const; |
@@ -365,7 +365,7 @@ private: |
, m_skippedCache(false) |
{ } |
- const DisplayItemClient m_client; |
+ const DisplayItemClient* m_client; |
unsigned m_scope; |
static_assert(TypeLast < (1 << 16), "DisplayItem::Type should fit in 16 bits"); |
const Type m_type : 16; |
@@ -379,7 +379,7 @@ private: |
class PLATFORM_EXPORT PairedBeginDisplayItem : public DisplayItem { |
protected: |
- PairedBeginDisplayItem(const DisplayItemClientWrapper& client, Type type, size_t derivedSize) : DisplayItem(client, type, derivedSize) { } |
+ PairedBeginDisplayItem(const DisplayItemClient& client, Type type, size_t derivedSize) : DisplayItem(client, type, derivedSize) { } |
private: |
bool isBegin() const final { return true; } |
@@ -387,7 +387,7 @@ private: |
class PLATFORM_EXPORT PairedEndDisplayItem : public DisplayItem { |
protected: |
- PairedEndDisplayItem(const DisplayItemClientWrapper& client, Type type, size_t derivedSize) : DisplayItem(client, type, derivedSize) { } |
+ PairedEndDisplayItem(const DisplayItemClient& client, Type type, size_t derivedSize) : DisplayItem(client, type, derivedSize) { } |
#if ENABLE(ASSERT) |
bool isEndAndPairedWith(DisplayItem::Type otherType) const override = 0; |