void InputQueue::MaybeRequestContentResponse(const RefPtr<AsyncPanZoomController>& aTarget, CancelableBlockState* aBlock) { bool waitForMainThread = false; if (aBlock->IsTargetConfirmed()) { // Content won't prevent-default this, so we can just set the flag directly. INPQ_LOG("not waiting for content response on block %p\n", aBlock); aBlock->SetContentResponse(false); } else { waitForMainThread = true; } if (aBlock->AsTouchBlock() && gfxPrefs::TouchActionEnabled()) { // TODO: once bug 1101628 is fixed, waitForMainThread should only be set // to true if the APZCTM didn't know the touch-action behaviours for this // block. waitForMainThread = true; } if (waitForMainThread) { // We either don't know for sure if aTarget is the right APZC, or we may // need to wait to give content the opportunity to prevent-default the // touch events. Either way we schedule a timeout so the main thread stuff // can run. ScheduleMainThreadTimeout(aTarget, aBlock->GetBlockId()); } }
void InputQueue::MaybeRequestContentResponse(const RefPtr<AsyncPanZoomController>& aTarget, CancelableBlockState* aBlock) { bool waitForMainThread = false; if (aBlock->IsTargetConfirmed()) { // Content won't prevent-default this, so we can just set the flag directly. INPQ_LOG("not waiting for content response on block %p\n", aBlock); aBlock->SetContentResponse(false); } else { waitForMainThread = true; } if (aBlock->AsTouchBlock() && gfxPrefs::TouchActionEnabled()) { // waitForMainThread is set to true unconditionally here, but if the APZCTM // has the touch-action behaviours for this block, it will set it // immediately after we unwind out of this ReceiveInputEvent call. So even // though we are scheduling the main-thread timeout, we might end up not // waiting. INPQ_LOG("waiting for main thread touch-action info on block %p\n", aBlock); waitForMainThread = true; } if (waitForMainThread) { // We either don't know for sure if aTarget is the right APZC, or we may // need to wait to give content the opportunity to prevent-default the // touch events. Either way we schedule a timeout so the main thread stuff // can run. ScheduleMainThreadTimeout(aTarget, aBlock); } }
uint64_t InputQueue::InjectNewTouchBlock(AsyncPanZoomController* aTarget) { TouchBlockState* block = StartNewTouchBlock(aTarget, /* aTargetConfirmed = */ true, /* aCopyPropertiesFromCurrent = */ true); INPQ_LOG("injecting new touch block %p with id %" PRIu64 " and target %p\n", block, block->GetBlockId(), aTarget); ScheduleMainThreadTimeout(aTarget, block->GetBlockId()); return block->GetBlockId(); }