diff options
Diffstat (limited to 'src/webenginewidgets/api/qwebenginepage.cpp')
-rw-r--r-- | src/webenginewidgets/api/qwebenginepage.cpp | 112 |
1 files changed, 5 insertions, 107 deletions
diff --git a/src/webenginewidgets/api/qwebenginepage.cpp b/src/webenginewidgets/api/qwebenginepage.cpp index bc0a97f97..bf5868925 100644 --- a/src/webenginewidgets/api/qwebenginepage.cpp +++ b/src/webenginewidgets/api/qwebenginepage.cpp @@ -79,106 +79,6 @@ static QWebEnginePage::WebWindowType toWindowType(WebContentsAdapterClient::Wind } } -CallbackDirectory::~CallbackDirectory() -{ - // "Cancel" pending callbacks by calling them with an invalid value. - // This guarantees that each callback is called exactly once. - Q_FOREACH (const CallbackSharedDataPointer &sharedPtr, m_callbackMap) { - switch (sharedPtr.type) { - case CallbackSharedDataPointer::Variant: - (*sharedPtr.variantCallback)(QVariant()); - break; - case CallbackSharedDataPointer::String: - (*sharedPtr.stringCallback)(QString()); - break; - case CallbackSharedDataPointer::Bool: - (*sharedPtr.boolCallback)(false); - break; - default: - Q_UNREACHABLE(); - } - } -} - -void CallbackDirectory::registerCallback(quint64 requestId, const QExplicitlySharedDataPointer<VariantCallback> &callback) -{ - m_callbackMap.insert(requestId, CallbackSharedDataPointer(callback.data())); -} - -void CallbackDirectory::registerCallback(quint64 requestId, const QExplicitlySharedDataPointer<StringCallback> &callback) -{ - m_callbackMap.insert(requestId, CallbackSharedDataPointer(callback.data())); -} - -void CallbackDirectory::registerCallback(quint64 requestId, const QExplicitlySharedDataPointer<BoolCallback> &callback) -{ - m_callbackMap.insert(requestId, CallbackSharedDataPointer(callback.data())); -} - -void CallbackDirectory::invoke(quint64 requestId, const QVariant &result) -{ - CallbackSharedDataPointer sharedPtr = m_callbackMap.take(requestId); - if (sharedPtr) { - Q_ASSERT(sharedPtr.type == CallbackSharedDataPointer::Variant); - (*sharedPtr.variantCallback)(result); - } -} - -void CallbackDirectory::invoke(quint64 requestId, const QString &result) -{ - CallbackSharedDataPointer sharedPtr = m_callbackMap.take(requestId); - if (sharedPtr) { - Q_ASSERT(sharedPtr.type == CallbackSharedDataPointer::String); - (*sharedPtr.stringCallback)(result); - } -} - -void CallbackDirectory::invoke(quint64 requestId, bool result) -{ - CallbackSharedDataPointer sharedPtr = m_callbackMap.take(requestId); - if (sharedPtr) { - Q_ASSERT(sharedPtr.type == CallbackSharedDataPointer::Bool); - (*sharedPtr.boolCallback)(result); - } -} - -void CallbackDirectory::CallbackSharedDataPointer::doRef() -{ - switch (type) { - case None: - break; - case Variant: - variantCallback->ref.ref(); - break; - case String: - stringCallback->ref.ref(); - break; - case Bool: - boolCallback->ref.ref(); - break; - } -} - -void CallbackDirectory::CallbackSharedDataPointer::doDeref() -{ - switch (type) { - case None: - break; - case Variant: - if (!variantCallback->ref.deref()) - delete variantCallback; - break; - case String: - if (!stringCallback->ref.deref()) - delete stringCallback; - break; - case Bool: - if (!boolCallback->ref.deref()) - delete boolCallback; - break; - } -} - QWebEnginePagePrivate::QWebEnginePagePrivate(QWebEngineProfile *_profile) : adapter(new WebContentsAdapter) , history(new QWebEngineHistory(new QWebEngineHistoryPrivate(this))) @@ -814,12 +714,10 @@ void QWebEnginePage::findText(const QString &subString, FindFlags options, const Q_D(QWebEnginePage); if (subString.isEmpty()) { d->adapter->stopFinding(); - if (resultCallback.d) - (*resultCallback.d)(false); + d->m_callbacks.invokeEmpty(resultCallback); } else { quint64 requestId = d->adapter->findText(subString, options & FindCaseSensitively, options & FindBackward); - if (resultCallback.d) - d->m_callbacks.registerCallback(requestId, resultCallback.d); + d->m_callbacks.registerCallback(requestId, resultCallback); } } @@ -1087,14 +985,14 @@ void QWebEnginePage::toHtml(const QWebEngineCallback<const QString &> &resultCal { Q_D(const QWebEnginePage); quint64 requestId = d->adapter->fetchDocumentMarkup(); - d->m_callbacks.registerCallback(requestId, resultCallback.d); + d->m_callbacks.registerCallback(requestId, resultCallback); } void QWebEnginePage::toPlainText(const QWebEngineCallback<const QString &> &resultCallback) const { Q_D(const QWebEnginePage); quint64 requestId = d->adapter->fetchDocumentInnerText(); - d->m_callbacks.registerCallback(requestId, resultCallback.d); + d->m_callbacks.registerCallback(requestId, resultCallback); } void QWebEnginePage::setHtml(const QString &html, const QUrl &baseUrl) @@ -1161,7 +1059,7 @@ void QWebEnginePage::runJavaScript(const QString& scriptSource, const QWebEngine { Q_D(QWebEnginePage); quint64 requestId = d->adapter->runJavaScriptCallbackResult(scriptSource); - d->m_callbacks.registerCallback(requestId, resultCallback.d); + d->m_callbacks.registerCallback(requestId, resultCallback); } /*! |