ScriptPromise ImageBitmapFactories::createImageBitmap(ScriptState* scriptState, EventTarget& eventTarget, Blob* blob, ExceptionState& exceptionState) { ImageBitmapLoader* loader = ImageBitmapFactories::ImageBitmapLoader::create(from(eventTarget), IntRect(), scriptState); ScriptPromise promise = loader->promise(); from(eventTarget).addLoader(loader); loader->loadBlobAsync(eventTarget.executionContext(), blob); return promise; }
int setInterval(ScriptState* scriptState, EventTarget& eventTarget, const ScriptValue& handler, int timeout, const Vector<ScriptValue>& arguments) { ExecutionContext* executionContext = eventTarget.executionContext(); if (!isAllowed(scriptState, executionContext, false)) return 0; OwnPtrWillBeRawPtr<ScheduledAction> action = ScheduledAction::create(scriptState, handler, arguments); return DOMTimer::install(executionContext, action.release(), timeout, false); }
int setInterval(ScriptState* scriptState, EventTarget& eventTarget, const String& handler, int timeout, const Vector<ScriptValue>&) { ExecutionContext* executionContext = eventTarget.executionContext(); if (!isAllowed(scriptState, executionContext, true)) return 0; // Don't allow setting timeouts to run empty functions. Was historically a // perfomance issue. if (handler.isEmpty()) return 0; OwnPtrWillBeRawPtr<ScheduledAction> action = ScheduledAction::create(scriptState, handler); return DOMTimer::install(executionContext, action.release(), timeout, false); }
ScriptPromise ImageBitmapFactories::createImageBitmap(ScriptState* scriptState, EventTarget& eventTarget, Blob* blob, int sx, int sy, int sw, int sh, ExceptionState& exceptionState) { if (!sw || !sh) { exceptionState.throwDOMException(IndexSizeError, String::format("The source %s provided is 0.", sw ? "height" : "width")); return ScriptPromise(); } ImageBitmapLoader* loader = ImageBitmapFactories::ImageBitmapLoader::create(from(eventTarget), IntRect(sx, sy, sw, sh), scriptState); ScriptPromise promise = loader->promise(); from(eventTarget).addLoader(loader); loader->loadBlobAsync(eventTarget.executionContext(), blob); return promise; }
int setTimeout(ScriptState* scriptState, EventTarget& eventTarget, const ScriptValue& handler, int timeout, const Vector<ScriptValue>& arguments) { ExecutionContext* executionContext = eventTarget.executionContext(); if (!isAllowed(scriptState, executionContext, false)) return 0; if (timeout >= 0 && executionContext->isDocument()) { // FIXME: Crude hack that attempts to pass idle time to V8. This should // be done using the scheduler instead. V8GCForContextDispose::instance().notifyIdle(); } OwnPtrWillBeRawPtr<ScheduledAction> action = ScheduledAction::create(scriptState, handler, arguments); return DOMTimer::install(executionContext, action.release(), timeout, true); }
void clearInterval(EventTarget& eventTarget, int timeoutID) { if (ExecutionContext* context = eventTarget.executionContext()) DOMTimer::removeByID(context, timeoutID); }
int setInterval(EventTarget& eventTarget, PassOwnPtr<ScheduledAction> action, int timeout) { return DOMTimer::install(eventTarget.executionContext(), action, timeout, false); }