示例#1
0
void WebView::load(const QNetworkRequest &request, QNetworkAccessManager::Operation operation, const QByteArray &body)
{
    const QUrl reqUrl = request.url();

    if (reqUrl.scheme() == QLatin1String("javascript")) {
        // Getting scriptSource from PercentEncoding to properly load bookmarklets
        // First check if url is percent encoded (let's just look for space)
        QString scriptSource;
        if (reqUrl.path().trimmed().contains(' ')) {
            scriptSource = reqUrl.toString().mid(11);
        }
        else {
            scriptSource = QUrl::fromPercentEncoding(reqUrl.toString().mid(11).toUtf8());
        }
        page()->mainFrame()->evaluateJavaScript(scriptSource);
        return;
    }

    if (reqUrl.isEmpty() || isUrlValid(reqUrl)) {
        QWebView::load(request, operation, body);
        m_aboutToLoadUrl = reqUrl;
        return;
    }

    SearchEnginesManager::SearchResult res = mApp->searchEnginesManager()->searchResult(reqUrl.toString());
    const QUrl searchUrl = res.request.url();

    QWebView::load(res.request, res.operation, res.data);
    m_aboutToLoadUrl = searchUrl;
}
示例#2
0
void WebView::load(const LoadRequest &request)
{
    const QUrl reqUrl = request.url();

    if (reqUrl.scheme() == QL1S("javascript")) {
        const QString scriptSource = reqUrl.toString().mid(11);
        // Is the javascript source percent encoded or not?
        // Looking for % character in source should work in most cases
        if (scriptSource.contains(QL1C('%')))
            page()->mainFrame()->evaluateJavaScript(QUrl::fromPercentEncoding(scriptSource.toUtf8()));
        else
            page()->mainFrame()->evaluateJavaScript(scriptSource);
        return;
    }

    if (reqUrl.isEmpty() || isUrlValid(reqUrl)) {
        request.load(this);
        m_aboutToLoadUrl = reqUrl;
        return;
    }

    const LoadRequest searchRequest = mApp->searchEnginesManager()->searchResult(reqUrl.toString());
    m_aboutToLoadUrl = searchRequest.url();
    searchRequest.load(this);
}
示例#3
0
void WebView::load(const LoadRequest &request)
{
    const QUrl reqUrl = request.url();

    if (reqUrl.isEmpty())
        return;

    if (reqUrl.scheme() == QL1S("javascript")) {
        const QString scriptSource = reqUrl.toString().mid(11);
        // Is the javascript source percent encoded or not?
        // Looking for % character in source should work in most cases
        if (scriptSource.contains(QL1C('%')))
            page()->runJavaScript(QUrl::fromPercentEncoding(scriptSource.toUtf8()));
        else
            page()->runJavaScript(scriptSource);
        return;
    }

    if (isUrlValid(reqUrl)) {
        loadRequest(request);
        return;
    }

    // Make sure to correctly load hosts like localhost (eg. without the dot)
    if (!reqUrl.isEmpty() &&
        reqUrl.scheme().isEmpty() &&
        !QzTools::containsSpace(reqUrl.path()) && // See #1622
        !reqUrl.path().contains(QL1C('.'))
       ) {
        QUrl u(QSL("http://") + reqUrl.path());
        if (u.isValid()) {
            // This is blocking...
            QHostInfo info = QHostInfo::fromName(u.path());
            if (info.error() == QHostInfo::NoError) {
                LoadRequest req = request;
                req.setUrl(u);
                loadRequest(req);
                return;
            }
        }
    }

    if (qzSettings->searchFromAddressBar) {
        const LoadRequest searchRequest = mApp->searchEnginesManager()->searchResult(request.urlString());
        loadRequest(searchRequest);
    }
}
示例#4
0
void WebView::load(const QUrl &url)
{
    if (url.scheme() == "javascript") {
        // Getting scriptSource from PercentEncoding to properly load bookmarklets
        QString scriptSource = QUrl::fromPercentEncoding(url.toString().mid(11).toUtf8());
        page()->mainFrame()->evaluateJavaScript(scriptSource);
        return;
    }

    if (isUrlValid(url)) {
        QWebView::load(url);
        emit urlChanged(url);
        m_aboutToLoadUrl = url;
        return;
    }

    const QUrl &searchUrl = mApp->searchEnginesManager()->searchUrl(url.toString());
    QWebView::load(searchUrl);
    emit urlChanged(searchUrl);
    m_aboutToLoadUrl = searchUrl;
}
示例#5
0
void WebView::load(const QNetworkRequest &request, QNetworkAccessManager::Operation operation, const QByteArray &body)
{
    const QUrl &reqUrl = request.url();

    if (reqUrl.scheme() == QLatin1String("javascript")) {
        // Getting scriptSource from PercentEncoding to properly load bookmarklets
        QString scriptSource = QUrl::fromPercentEncoding(reqUrl.toString().mid(11).toUtf8());
        page()->mainFrame()->evaluateJavaScript(scriptSource);
        return;
    }

    if (reqUrl.isEmpty() || isUrlValid(reqUrl)) {
        QWebView::load(request, operation, body);
        emit urlChanged(reqUrl);
        m_aboutToLoadUrl = reqUrl;
        return;
    }

    const QUrl &searchUrl = mApp->searchEnginesManager()->searchUrl(reqUrl.toString());
    QWebView::load(searchUrl);

    emit urlChanged(searchUrl);
    m_aboutToLoadUrl = searchUrl;
}