コード例 #1
0
ファイル: FileReader.cpp プロジェクト: Zirias/webkitfltk
void FileReader::abort()
{
    LOG(FileAPI, "FileReader: aborting\n");

    if (m_aborting || m_state != LOADING)
        return;
    m_aborting = true;

    // Schedule to have the abort done later since abort() might be called from the event handler and we do not want the resource loading code to be in the stack.
    scriptExecutionContext()->postTask(CrossThreadTask(&delayedAbort, AllowAccessLater(this)));
}
コード例 #2
0
void WorkerThreadableWebSocketChannel::Bridge::initialize()
{
    ASSERT(!m_peer);
    setMethodNotCompleted();
    Ref<Bridge> protect(*this);
    m_loaderProxy.postTaskToLoader(CrossThreadTask(&Bridge::mainThreadInitialize, AllowCrossThreadAccess(&m_loaderProxy), m_workerClientWrapper, m_taskMode));
    waitForMethodCompletion();
    // m_peer may be null when the nested runloop exited before a peer has created.
    m_peer = m_workerClientWrapper->peer();
    if (!m_peer)
        m_workerClientWrapper->setFailedWebSocketChannelCreation();
}
コード例 #3
0
void ThreadableWebSocketChannelClientWrapper::processPendingTasks()
{
    if (m_suspended)
        return;
    if (!m_syncMethodDone) {
        // When a synchronous operation is in progress (i.e. the execution stack contains
        // WorkerThreadableWebSocketChannel::waitForMethodCompletion()), we cannot invoke callbacks in this run loop.
        m_context->postTask(CrossThreadTask(&ThreadableWebSocketChannelClientWrapper::processPendingTasksCallback, this));
        return;
    }

    Vector<std::unique_ptr<ScriptExecutionContext::Task>> pendingTasks = WTF::move(m_pendingTasks);
    for (auto& task : pendingTasks)
        task->performTask(*m_context);
}
コード例 #4
0
void SharedWorkerProxy::postConsoleMessageToWorkerObject(MessageSource source, MessageLevel level, const String& message, int lineNumber, int columnNumber, const String& sourceURL)
{
    MutexLocker lock(m_workerDocumentsLock);
    for (auto& document : m_workerDocuments)
        document->postTask(CrossThreadTask(&postConsoleMessageTask, source, level, message, sourceURL, lineNumber, columnNumber));
}
コード例 #5
0
void SharedWorkerProxy::postExceptionToWorkerObject(const String& errorMessage, int lineNumber, int columnNumber, const String& sourceURL)
{
    MutexLocker lock(m_workerDocumentsLock);
    for (auto& document : m_workerDocuments)
        document->postTask(CrossThreadTask(&postExceptionTask, errorMessage, lineNumber, columnNumber, sourceURL));
}