Bug 1367332 - Don't build image layer if image map is presence. r=mattwoodrow
MozReview-Commit-ID: 5w43NRlTL6d
--- a/layout/generic/nsImageFrame.cpp
+++ b/layout/generic/nsImageFrame.cpp
@@ -1627,16 +1627,22 @@ nsDisplayImage::GetLayerState(nsDisplayL
uint32_t flags = aBuilder->ShouldSyncDecodeImages()
? imgIContainer::FLAG_SYNC_DECODE
: imgIContainer::FLAG_NONE;
if (!mImage->IsImageContainerAvailable(aManager, flags)) {
return LAYER_NONE;
}
+ // Image layer doesn't support draw focus ring for image map.
+ nsImageFrame* f = static_cast<nsImageFrame*>(mFrame);
+ if (f->HasImageMap()) {
+ return LAYER_NONE;
+ }
+
return LAYER_ACTIVE;
}
/* virtual */ nsRegion
nsDisplayImage::GetOpaqueRegion(nsDisplayListBuilder* aBuilder,
bool* aSnap)
{
--- a/layout/painting/nsDisplayList.cpp
+++ b/layout/painting/nsDisplayList.cpp
@@ -4055,16 +4055,24 @@ nsDisplayImageContainer::CanOptimizeToIm
destRect.height / imageHeight);
if (scale.width < 0.34 || scale.height < 0.34) {
// This would look awful as long as we can't use high-quality downscaling
// for image layers (bug 803703), so don't turn this into an image layer.
return false;
}
+ if (mFrame->IsImageFrame()) {
+ // Image layer doesn't support draw focus ring for image map.
+ nsImageFrame* f = static_cast<nsImageFrame*>(mFrame);
+ if (f->HasImageMap()) {
+ return false;
+ }
+ }
+
return true;
}
void
nsDisplayBackgroundColor::ApplyOpacity(nsDisplayListBuilder* aBuilder,
float aOpacity,
const DisplayItemClipChain* aClip)
{