Bug 909157. Invalidate rendering observers when an image changes. r=mattwoodrow

--HG--
extra : rebase_source : 04b127fde9a9e07e50c6196f53a1eea3c8f04db6
This commit is contained in:
Robert O'Callahan 2013-09-04 23:13:11 +12:00
Родитель c61a331c05
Коммит 2bed019e71
5 изменённых файлов: 23 добавлений и 0 удалений

Просмотреть файл

@ -0,0 +1,7 @@
<!DOCTYPE HTML>
<html>
<body>
<div style="background:url(repeatable-diagonal-gradient.png?4567); width:100px; height:100px"></div>
<div style="background:url(repeatable-diagonal-gradient.png?90); width:100px; height:100px"></div>
</body>
</html>

Просмотреть файл

@ -0,0 +1,7 @@
<!DOCTYPE HTML>
<html>
<body>
<div id="A" style="background:url(repeatable-diagonal-gradient.png?1234); width:100px; height:100px"></div>
<div style="background:-moz-element(#A); width:100px; height:100px;"></div>
</body>
</html>

Просмотреть файл

@ -41,6 +41,7 @@ fuzzy(1,9674) random-if(!cocoaWidget) == gradient-html-06b.html gradient-html-06
== gradient-html-06d.html gradient-html-06e.html == gradient-html-06d.html gradient-html-06e.html
random-if(!cocoaWidget) fuzzy-if(azureQuartz,1,11367) == gradient-html-07a.html gradient-html-07b.html random-if(!cocoaWidget) fuzzy-if(azureQuartz,1,11367) == gradient-html-07a.html gradient-html-07b.html
fuzzy(1,16900) == gradient-html-07c.html gradient-html-07d.html fuzzy(1,16900) == gradient-html-07c.html gradient-html-07d.html
HTTP == invalidate-1.html invalidate-1-ref.html
== pattern-html-01.html pattern-html-01-ref.svg == pattern-html-01.html pattern-html-01-ref.svg
== pattern-html-02.html pattern-html-02-ref.svg == pattern-html-02.html pattern-html-02-ref.svg
== referenced-from-binding-01.html referenced-from-binding-01-ref.html == referenced-from-binding-01.html referenced-from-binding-01-ref.html

Двоичные данные
layout/reftests/image-element/repeatable-diagonal-gradient.png Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 14 KiB

Просмотреть файл

@ -12,6 +12,7 @@
#include "nsError.h" #include "nsError.h"
#include "nsDisplayList.h" #include "nsDisplayList.h"
#include "FrameLayerBuilder.h" #include "FrameLayerBuilder.h"
#include "nsSVGEffects.h"
namespace mozilla { namespace mozilla {
namespace css { namespace css {
@ -329,6 +330,13 @@ void InvalidateImagesCallback(nsIFrame* aFrame,
aItem->Invalidate(); aItem->Invalidate();
aFrame->SchedulePaint(); aFrame->SchedulePaint();
// Update ancestor rendering observers (-moz-element etc)
nsIFrame *f = aFrame;
while (f && !f->HasAnyStateBits(NS_FRAME_DESCENDANT_NEEDS_PAINT)) {
nsSVGEffects::InvalidateDirectRenderingObservers(f);
f = nsLayoutUtils::GetCrossDocParentFrame(f);
}
} }
void void