TEST_F(APZHitTestingTester, Bug1148350) { CreateBug1148350LayerTree(); ScopedLayerTreeRegistration registration(manager, 0, root, mcc); manager->UpdateHitTestingTree(nullptr, root, false, 0, 0); MockFunction<void(std::string checkPointName)> check; { InSequence s; EXPECT_CALL(*mcc, HandleTap(TapType::eSingleTap, LayoutDevicePoint(100, 100), 0, ApzcOf(layers[1])->GetGuid(), _)).Times(1); EXPECT_CALL(check, Call("Tapped without transform")); EXPECT_CALL(*mcc, HandleTap(TapType::eSingleTap, LayoutDevicePoint(100, 100), 0, ApzcOf(layers[1])->GetGuid(), _)).Times(1); EXPECT_CALL(check, Call("Tapped with interleaved transform")); } Tap(manager, ScreenIntPoint(100, 100), TimeDuration::FromMilliseconds(100)); mcc->RunThroughDelayedTasks(); check.Call("Tapped without transform"); uint64_t blockId; TouchDown(manager, ScreenIntPoint(100, 100), mcc->Time(), &blockId); if (gfxPrefs::TouchActionEnabled()) { SetDefaultAllowedTouchBehavior(manager, blockId); } mcc->AdvanceByMillis(100); layers[0]->SetVisibleRegion(LayerIntRegion(LayerIntRect(0,50,200,150))); layers[0]->SetBaseTransform(Matrix4x4::Translation(0, 50, 0)); manager->UpdateHitTestingTree(nullptr, root, false, 0, 0); TouchUp(manager, ScreenIntPoint(100, 100), mcc->Time()); mcc->RunThroughDelayedTasks(); check.Call("Tapped with interleaved transform"); }
void ImageLayerMLGPU::SetRenderRegion(LayerIntRegion&& aRegion) { switch (mScaleMode) { case ScaleMode::STRETCH: // See bug 1264142. aRegion.AndWith(LayerIntRect(0, 0, mScaleToSize.width, mScaleToSize.height)); break; default: // Clamp the visible region to the texture size. (see bug 1396507) MOZ_ASSERT(mScaleMode == ScaleMode::SCALE_NONE); aRegion.AndWith(LayerIntRect(0, 0, mPictureRect.Width(), mPictureRect.Height())); break; } LayerMLGPU::SetRenderRegion(Move(aRegion)); }
void ImageLayerMLGPU::SetRegionToRender(LayerIntRegion&& aRegion) { // See bug 1264142. if (mScaleMode == ScaleMode::STRETCH) { aRegion.AndWith(LayerIntRect(0, 0, mScaleToSize.width, mScaleToSize.height)); } LayerMLGPU::SetRegionToRender(Move(aRegion)); }