Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(654)

Unified Diff: third_party/WebKit/Source/core/layout/LayoutImageResource.cpp

Issue 1706083002: Split ImageResourceClient into ResourceClient and ImageResourceObserver [1/2] (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase. Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/core/layout/LayoutImageResource.cpp
diff --git a/third_party/WebKit/Source/core/layout/LayoutImageResource.cpp b/third_party/WebKit/Source/core/layout/LayoutImageResource.cpp
index a873c99bedbc8df0b2b91fcd9652e0024a2374d2..ed4aab39721a1802cc29f2a7bc9ad6ca7142784e 100644
--- a/third_party/WebKit/Source/core/layout/LayoutImageResource.cpp
+++ b/third_party/WebKit/Source/core/layout/LayoutImageResource.cpp
@@ -36,6 +36,7 @@ namespace blink {
LayoutImageResource::LayoutImageResource()
: m_layoutObject(nullptr)
, m_cachedImage(nullptr)
+ , m_client(nullptr)
{
}
@@ -43,19 +44,23 @@ LayoutImageResource::~LayoutImageResource()
{
}
-void LayoutImageResource::initialize(LayoutObject* layoutObject)
+void LayoutImageResource::initialize(LayoutObject* layoutObject, ResourceClient* client)
{
ASSERT(!m_layoutObject);
ASSERT(layoutObject);
m_layoutObject = layoutObject;
+ m_client = client;
}
void LayoutImageResource::shutdown()
{
ASSERT(m_layoutObject);
- if (m_cachedImage)
- m_cachedImage->removeClient(m_layoutObject);
+ if (!m_cachedImage)
+ return;
+ if (m_client)
+ m_cachedImage->removeClient(m_client);
+ m_cachedImage->removeObserver(m_layoutObject);
}
void LayoutImageResource::setImageResource(ImageResource* newImage)
@@ -65,11 +70,16 @@ void LayoutImageResource::setImageResource(ImageResource* newImage)
if (m_cachedImage == newImage)
return;
- if (m_cachedImage)
- m_cachedImage->removeClient(m_layoutObject);
+ if (m_cachedImage) {
+ if (m_client)
+ m_cachedImage->removeClient(m_client);
+ m_cachedImage->removeObserver(m_layoutObject);
+ }
m_cachedImage = newImage;
if (m_cachedImage) {
- m_cachedImage->addClient(m_layoutObject);
+ if (m_client)
+ m_cachedImage->addClient(m_client);
+ m_cachedImage->addObserver(m_layoutObject);
if (m_cachedImage->errorOccurred())
m_layoutObject->imageChanged(m_cachedImage.get());
} else {

Powered by Google App Engine
This is Rietveld 408576698