diff options
Diffstat (limited to 'src/core/web_contents_adapter.cpp')
-rw-r--r-- | src/core/web_contents_adapter.cpp | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/core/web_contents_adapter.cpp b/src/core/web_contents_adapter.cpp index 82d6ed26f..be68e6ef4 100644 --- a/src/core/web_contents_adapter.cpp +++ b/src/core/web_contents_adapter.cpp @@ -59,6 +59,7 @@ #include "content/public/common/renderer_preferences.h" #include "content/public/common/url_constants.h" #include "ui/shell_dialogs/selected_file_info.h" +#include "third_party/WebKit/public/web/WebFindOptions.h" #include <QDir> #include <QGuiApplication> @@ -173,6 +174,7 @@ public: scoped_ptr<QtRenderViewObserverHost> renderViewObserverHost; WebContentsAdapterClient *adapterClient; quint64 lastRequestId; + QString lastSearchedString; }; WebContentsAdapterPrivate::WebContentsAdapterPrivate(WebContentsAdapterClient::RenderingMode renderingMode) @@ -429,6 +431,29 @@ quint64 WebContentsAdapter::fetchDocumentInnerText() return d->lastRequestId; } +quint64 WebContentsAdapter::findText(const QString &subString, bool caseSensitively, bool findBackward) +{ + Q_D(WebContentsAdapter); + WebKit::WebFindOptions options; + options.forward = !findBackward; + options.matchCase = caseSensitively; + options.findNext = subString == d->lastSearchedString; + d->lastSearchedString = subString; + + // Find already allows a request ID as input, but only as an int. + // Use the same counter but mod it to MAX_INT, this keeps the same likeliness of request ID clashing. + int shrunkRequestId = ++d->lastRequestId & 0x7fffffff; + d->webContents->GetRenderViewHost()->Find(shrunkRequestId, toString16(subString), options); + return shrunkRequestId; +} + +void WebContentsAdapter::stopFinding() +{ + Q_D(WebContentsAdapter); + d->lastSearchedString = QString(); + d->webContents->GetRenderViewHost()->StopFinding(content::STOP_FIND_ACTION_CLEAR_SELECTION); +} + void WebContentsAdapter::wasShown() { Q_D(WebContentsAdapter); |