void DOMTimer::fired() { ScriptExecutionContext* context = scriptExecutionContext(); timerNestingLevel = m_nestingLevel; InspectorInstrumentationCookie cookie = InspectorInstrumentation::willFireTimer(context, m_timeoutId); // Simple case for non-one-shot timers. if (isActive()) { if (repeatInterval() && repeatInterval() < s_minTimerInterval) { m_nestingLevel++; if (m_nestingLevel >= maxTimerNestingLevel) augmentRepeatInterval(s_minTimerInterval - repeatInterval()); } // No access to member variables after this point, it can delete the timer. m_action->execute(context); InspectorInstrumentation::didFireTimer(cookie); return; } // Delete timer before executing the action for one-shot timers. OwnPtr<ScheduledAction> action = m_action.release(); // No access to member variables after this point. delete this; action->execute(context); InspectorInstrumentation::didFireTimer(cookie); timerNestingLevel = 0; }
void DOMTimer::fired() { ScriptExecutionContext* context = scriptExecutionContext(); timerNestingLevel = m_nestingLevel; // Simple case for non-one-shot timers. if (isActive()) { if (repeatInterval() && repeatInterval() < s_minTimerInterval) { m_nestingLevel++; if (m_nestingLevel >= maxTimerNestingLevel) augmentRepeatInterval(s_minTimerInterval - repeatInterval()); } // No access to member variables after this point, it can delete the timer. m_action->execute(context); return; } // Delete timer before executing the action for one-shot timers. ScheduledAction* action = m_action.release(); // No access to member variables after this point. delete this; action->execute(context); delete action; timerNestingLevel = 0; }
void MSArrowButton::button1Press(const XEvent *) { arrow()->select(MSTrue); activate(); if (repeatInterval()>0) { if (arrowTimer()==0) _arrowTimer=new MSArrowTimer(repeatThreshold(),this); if (repeatThreshold()==0) arrowTimer()->expirationInterval(repeatInterval()); else arrowTimer()->expirationInterval(repeatThreshold()); arrowTimer()->reset(); } }
void DOMTimer::updateTimerIntervalIfNecessary() { ASSERT(m_nestingLevel <= maxTimerNestingLevel); double previousInterval = m_currentTimerInterval; m_currentTimerInterval = intervalClampedToMinimum(); if (previousInterval == m_currentTimerInterval) return; if (repeatInterval()) { ASSERT(repeatInterval() == previousInterval); augmentRepeatInterval(m_currentTimerInterval - previousInterval); } else augmentFireInterval(m_currentTimerInterval - previousInterval); }
void DOMTimer::adjustMinimumTimerInterval(double oldMinimumTimerInterval) { if (m_nestingLevel < maxTimerNestingLevel) return; double newMinimumInterval = scriptExecutionContext()->minimumTimerInterval(); double newClampedInterval = intervalClampedToMinimum(m_originalInterval, newMinimumInterval); if (repeatInterval()) { augmentRepeatInterval(newClampedInterval - repeatInterval()); return; } double previousClampedInterval = intervalClampedToMinimum(m_originalInterval, oldMinimumTimerInterval); augmentFireInterval(newClampedInterval - previousClampedInterval); }
void DOMTimer::fired() { ExecutionContext* context = getExecutionContext(); ASSERT(context); context->timers()->setTimerNestingLevel(m_nestingLevel); ASSERT(!context->activeDOMObjectsAreSuspended()); // Only the first execution of a multi-shot timer should get an affirmative user gesture indicator. UserGestureIndicator gestureIndicator(m_userGestureToken.release()); TRACE_EVENT1("devtools.timeline", "TimerFire", "data", InspectorTimerFireEvent::data(context, m_timeoutID)); InspectorInstrumentationCookie cookie = InspectorInstrumentation::willFireTimer(context, m_timeoutID); // Simple case for non-one-shot timers. if (isActive()) { if (repeatInterval() && repeatInterval() < minimumInterval) { m_nestingLevel++; if (m_nestingLevel >= maxTimerNestingLevel) augmentRepeatInterval(minimumInterval - repeatInterval()); } // No access to member variables after this point, it can delete the timer. m_action->execute(context); InspectorInstrumentation::didFireTimer(cookie); return; } RawPtr<DOMTimer> protect(this); // Unregister the timer from ExecutionContext before executing the action // for one-shot timers. RawPtr<ScheduledAction> action = m_action.release(); context->timers()->removeTimeoutByID(m_timeoutID); action->execute(context); InspectorInstrumentation::didFireTimer(cookie); TRACE_EVENT_INSTANT1(TRACE_DISABLED_BY_DEFAULT("devtools.timeline"), "UpdateCounters", TRACE_EVENT_SCOPE_THREAD, "data", InspectorUpdateCountersEvent::data()); // ExecutionContext might be already gone when we executed action->execute(). if (getExecutionContext()) getExecutionContext()->timers()->setTimerNestingLevel(0); }
void DOMTimer::suspend() { #if !ASSERT_DISABLED ASSERT(!m_suspended); m_suspended = true; #endif m_nextFireInterval = nextFireInterval(); m_repeatInterval = repeatInterval(); TimerBase::stop(); }
MSAttrValueList& MSArrowButton::get(MSAttrValueList& avList_) { MSStringVector typeVector("MSArrow::Left\nMSArrow::Right\nMSArrow::Up\nMSArrow::Down"); avList_<<MSAttrValue("activate","",MSAttrValue::Callback); avList_<<MSAttrValue("type",typeVector(type()),typeVector); avList_<<MSAttrValue("repeatThreshold",MSString(repeatThreshold())); avList_<<MSAttrValue("repeatInterval",MSString(repeatInterval())); avList_<<MSAttrValue("arrowColor",server()->colorName(arrowColor()),MSAttrValue::Color); return MSWidgetCommon::get(avList_); }
void DOMTimer::fired() { ScriptExecutionContext* context = scriptExecutionContext(); timerNestingLevel = m_nestingLevel; #if ENABLE(INSPECTOR) InspectorTimelineAgent* timelineAgent = InspectorTimelineAgent::retrieve(context); if (timelineAgent) timelineAgent->willFireTimer(m_timeoutId); #endif // Simple case for non-one-shot timers. if (isActive()) { if (repeatInterval() && repeatInterval() < s_minTimerInterval) { m_nestingLevel++; if (m_nestingLevel >= maxTimerNestingLevel) augmentRepeatInterval(s_minTimerInterval - repeatInterval()); } // No access to member variables after this point, it can delete the timer. m_action->execute(context); #if ENABLE(INSPECTOR) if (timelineAgent) timelineAgent->didFireTimer(); #endif return; } // Delete timer before executing the action for one-shot timers. ScheduledAction* action = m_action.release(); // No access to member variables after this point. delete this; action->execute(context); #if ENABLE(INSPECTOR) if (timelineAgent) timelineAgent->didFireTimer(); #endif delete action; timerNestingLevel = 0; }
void DOMTimer::fired() { ExecutionContext* context = executionContext(); timerNestingLevel = m_nestingLevel; ASSERT(!context->activeDOMObjectsAreSuspended()); // Only the first execution of a multi-shot timer should get an affirmative user gesture indicator. UserGestureIndicator gestureIndicator(m_userGestureToken.release()); TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("devtools.timeline"), "TimerFire", "data", InspectorTimerFireEvent::data(context, m_timeoutID)); // FIXME(361045): remove InspectorInstrumentation calls once DevTools Timeline migrates to tracing. InspectorInstrumentationCookie cookie = InspectorInstrumentation::willFireTimer(context, m_timeoutID); // Simple case for non-one-shot timers. if (isActive()) { if (repeatInterval() && repeatInterval() < minimumInterval) { m_nestingLevel++; if (m_nestingLevel >= maxTimerNestingLevel) augmentRepeatInterval(minimumInterval - repeatInterval()); } // No access to member variables after this point, it can delete the timer. m_action->execute(context); InspectorInstrumentation::didFireTimer(cookie); return; } // Delete timer before executing the action for one-shot timers. OwnPtr<ScheduledAction> action = m_action.release(); // This timer is being deleted; no access to member variables allowed after this point. context->removeTimeoutByID(m_timeoutID); action->execute(context); InspectorInstrumentation::didFireTimer(cookie); TRACE_EVENT_INSTANT1(TRACE_DISABLED_BY_DEFAULT("devtools.timeline"), "UpdateCounters", "data", InspectorUpdateCountersEvent::data()); timerNestingLevel = 0; }
void DOMTimer::fired() { ScriptExecutionContext* context = scriptExecutionContext(); timerNestingLevel = m_nestingLevel; UserGestureIndicator gestureIndicator(m_shouldForwardUserGesture ? DefinitelyProcessingUserGesture : PossiblyProcessingUserGesture); // Only the first execution of a multi-shot timer should get an affirmative user gesture indicator. m_shouldForwardUserGesture = false; InspectorInstrumentationCookie cookie = InspectorInstrumentation::willFireTimer(context, m_timeoutId); // Simple case for non-one-shot timers. if (isActive()) { double minimumInterval = context->minimumTimerInterval(); if (repeatInterval() && repeatInterval() < minimumInterval) { m_nestingLevel++; if (m_nestingLevel >= maxTimerNestingLevel) augmentRepeatInterval(minimumInterval - repeatInterval()); } // No access to member variables after this point, it can delete the timer. m_action->execute(context); InspectorInstrumentation::didFireTimer(cookie); return; } // Delete timer before executing the action for one-shot timers. OwnPtr<ScheduledAction> action = m_action.release(); // No access to member variables after this point. delete this; action->execute(context); InspectorInstrumentation::didFireTimer(cookie); timerNestingLevel = 0; }
void SuspendableTimer::suspend() { #if ENABLE(ASSERT) ASSERT(!m_suspended); m_suspended = true; #endif if (isActive()) { m_nextFireInterval = nextFireInterval(); ASSERT(m_nextFireInterval >= 0.0); m_repeatInterval = repeatInterval(); TimerBase::stop(); } }
void SuspendableTimer::suspend(ReasonForSuspension) { #if !ASSERT_DISABLED ASSERT(!m_suspended); m_suspended = true; #endif m_active = isActive(); if (m_active) { m_nextFireInterval = nextFireInterval(); m_repeatInterval = repeatInterval(); TimerBase::stop(); } }
void SuspendableTimer::suspend() { #if ASSERT_ENABLED ASSERT(!m_suspended); m_suspended = true; #endif m_active = isActive(); if (m_active) { m_nextFireInterval = nextUnalignedFireInterval(); m_repeatInterval = repeatInterval(); TimerBase::stop(); } }
void DOMTimer::fired() { ExecutionContext* context = executionContext(); timerNestingLevel = m_nestingLevel; ASSERT(!context->activeDOMObjectsAreSuspended()); // Only the first execution of a multi-shot timer should get an affirmative user gesture indicator. UserGestureIndicator gestureIndicator(m_userGestureToken.release()); InspectorInstrumentationCookie cookie = InspectorInstrumentation::willFireTimer(context, m_timeoutID); // Simple case for non-one-shot timers. if (isActive()) { if (repeatInterval() && repeatInterval() < minimumInterval) { m_nestingLevel++; if (m_nestingLevel >= maxTimerNestingLevel) augmentRepeatInterval(minimumInterval - repeatInterval()); } // No access to member variables after this point, it can delete the timer. m_action->execute(context); InspectorInstrumentation::didFireTimer(cookie); return; } // Delete timer before executing the action for one-shot timers. OwnPtr<ScheduledAction> action = m_action.release(); // This timer is being deleted; no access to member variables allowed after this point. context->removeTimeoutByID(m_timeoutID); action->execute(context); InspectorInstrumentation::didFireTimer(cookie); timerNestingLevel = 0; }
void MSArrowButton::set(MSAttrValueList& avList_) { MSWidgetCommon::set(avList_); MSIndexVector index; for (unsigned i=0;i<avList_.length();i++) { if (avList_[i].attribute()=="type") { MSStringVector typeVector("MSArrow::Left\nMSArrow::Right\nMSArrow::Up\nMSArrow::Down"); int t=typeVector.indexOf(avList_[i].value()); if(t!=typeVector.length()) type((MSArrow::ArrowType)t); index<<i; } else if(avList_[i].attribute()=="repeatThreshold") repeatThreshold(avList_[i].value().asInt()),index<<i; else if(avList_[i].attribute()=="repeatInterval") repeatInterval(avList_[i].value().asInt()),index<<i; else if(avList_[i].attribute()=="arrowColor") arrowColor(avList_[i].value()),index<<i; } avList_.remove(index); }
void DOMTimer::fired() { ScriptExecutionContext* context = scriptExecutionContext(); ASSERT(context); #if PLATFORM(IOS) Document* document = nullptr; if (!context->isDocument()) { document = toDocument(context); ASSERT(!document->frame()->timersPaused()); } #endif timerNestingLevel = m_nestingLevel; ASSERT(!isSuspended()); ASSERT(!context->activeDOMObjectsAreSuspended()); UserGestureIndicator gestureIndicator(m_shouldForwardUserGesture ? DefinitelyProcessingUserGesture : PossiblyProcessingUserGesture); // Only the first execution of a multi-shot timer should get an affirmative user gesture indicator. m_shouldForwardUserGesture = false; InspectorInstrumentationCookie cookie = InspectorInstrumentation::willFireTimer(context, m_timeoutId); // Simple case for non-one-shot timers. if (isActive()) { double minimumInterval = context->minimumTimerInterval(); if (repeatInterval() && repeatInterval() < minimumInterval) { m_nestingLevel++; if (m_nestingLevel >= maxTimerNestingLevel) augmentRepeatInterval(minimumInterval - repeatInterval()); } // No access to member variables after this point, it can delete the timer. m_action->execute(context); InspectorInstrumentation::didFireTimer(cookie); return; } // Delete timer before executing the action for one-shot timers. OwnPtr<ScheduledAction> action = m_action.release(); // No access to member variables after this point. delete this; #if PLATFORM(IOS) bool shouldReportLackOfChanges; bool shouldBeginObservingChanges; if (document) { shouldReportLackOfChanges = WebThreadCountOfObservedContentModifiers() == 1; shouldBeginObservingChanges = WebThreadContainsObservedContentModifier(this); } else { shouldReportLackOfChanges = false; shouldBeginObservingChanges = false; } if (shouldBeginObservingChanges) { WKBeginObservingContentChanges(false); WebThreadRemoveObservedContentModifier(this); } #endif action->execute(context); #if PLATFORM(IOS) if (shouldBeginObservingChanges) { WKStopObservingContentChanges(); if (WKObservedContentChange() == WKContentVisibilityChange || shouldReportLackOfChanges) if (document && document->page()) document->page()->chrome().client().observedContentChange(document->frame()); } #endif InspectorInstrumentation::didFireTimer(cookie); timerNestingLevel = 0; }