WheelBlockState::WheelBlockState(const RefPtr<AsyncPanZoomController>& aTargetApzc, bool aTargetConfirmed, const ScrollWheelInput& aInitialEvent) : CancelableBlockState(aTargetApzc, aTargetConfirmed) , mScrollSeriesCounter(0) , mTransactionEnded(false) { sLastWheelBlockId = GetBlockId(); if (aTargetConfirmed) { // Find the nearest APZC in the overscroll handoff chain that is scrollable. // If we get a content confirmation later that the apzc is different, then // content should have found a scrollable apzc, so we don't need to handle // that case. RefPtr<AsyncPanZoomController> apzc = mOverscrollHandoffChain->FindFirstScrollable(aInitialEvent); // If nothing is scrollable, we don't consider this block as starting a // transaction. if (!apzc) { EndTransaction(); return; } if (apzc != GetTargetApzc()) { UpdateTargetApzc(apzc); } } }
PanGestureBlockState::PanGestureBlockState(const RefPtr<AsyncPanZoomController>& aTargetApzc, bool aTargetConfirmed, const PanGestureInput& aInitialEvent) : CancelableBlockState(aTargetApzc, aTargetConfirmed) , mInterrupted(false) , mWaitingForContentResponse(false) { if (aTargetConfirmed) { // Find the nearest APZC in the overscroll handoff chain that is scrollable. // If we get a content confirmation later that the apzc is different, then // content should have found a scrollable apzc, so we don't need to handle // that case. RefPtr<AsyncPanZoomController> apzc = mOverscrollHandoffChain->FindFirstScrollable(aInitialEvent); if (apzc && apzc != GetTargetApzc()) { UpdateTargetApzc(apzc); } } }
bool InputBlockState::SetConfirmedTargetApzc(const RefPtr<AsyncPanZoomController>& aTargetApzc) { if (mTargetConfirmed) { return false; } mTargetConfirmed = true; TBS_LOG("%p got confirmed target APZC %p\n", this, mTargetApzc.get()); if (mTargetApzc == aTargetApzc) { // The confirmed target is the same as the tentative one, so we're done. return true; } TBS_LOG("%p replacing unconfirmed target %p with real target %p\n", this, mTargetApzc.get(), aTargetApzc.get()); UpdateTargetApzc(aTargetApzc); return true; }
bool InputBlockState::SetConfirmedTargetApzc(const nsRefPtr<AsyncPanZoomController>& aTargetApzc) { if (mTargetConfirmed) { return false; } mTargetConfirmed = true; TBS_LOG("%p got confirmed target APZC %p\n", this, mTargetApzc.get()); if (mTargetApzc == aTargetApzc) { // The confirmed target is the same as the tentative one, so we're done. return true; } // Log enabled by default for now, we will put it in a TBS_LOG eventually // once this code is more baked printf_stderr("%p replacing unconfirmed target %p with real target %p\n", this, mTargetApzc.get(), aTargetApzc.get()); UpdateTargetApzc(aTargetApzc); return true; }