/src/cpp/desktop/DesktopWebPage.cpp
https://github.com/nlhartman/rstudio · C++ · 87 lines · 59 code · 15 blank · 13 comment · 15 complexity · 38b96b648690ddafd5ca26e77f76fb56 MD5 · raw file
- /*
- * DesktopWebPage.cpp
- *
- * Copyright (C) 2009-11 by RStudio, Inc.
- *
- * This program is licensed to you under the terms of version 3 of the
- * GNU Affero General Public License. This program is distributed WITHOUT
- * ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING THOSE OF NON-INFRINGEMENT,
- * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Please refer to the
- * AGPL (http://www.gnu.org/licenses/agpl-3.0.txt) for more details.
- *
- */
- #include "DesktopWebPage.hpp"
- #include <QWidget>
- #include <QtDebug>
- #include "DesktopNetworkAccessManager.hpp"
- extern QString sharedSecret;
- namespace desktop {
- WebPage::WebPage(QUrl baseUrl, QWidget *parent) :
- QWebPage(parent),
- baseUrl_(baseUrl),
- navigated_(false)
- {
- //settings()->setAttribute(QWebSettings::DeveloperExtrasEnabled, true);
- setNetworkAccessManager(new NetworkAccessManager(sharedSecret, parent));
- }
- void WebPage::setBaseUrl(const QUrl& baseUrl)
- {
- baseUrl_ = baseUrl;
- }
- bool WebPage::shouldInterruptJavaScript()
- {
- return false;
- }
- void WebPage::javaScriptConsoleMessage(const QString& message, int /*lineNumber*/, const QString& /*sourceID*/)
- {
- qDebug() << message;
- }
- QString WebPage::userAgentForUrl(const QUrl &url) const
- {
- return this->QWebPage::userAgentForUrl(url) + QString::fromAscii(" Qt/") + QString::fromAscii(qVersion());
- }
- bool WebPage::acceptNavigationRequest(QWebFrame*,
- const QNetworkRequest& request,
- NavigationType navType)
- {
- QUrl url = request.url();
- if (url.toString() == QString::fromAscii("about:blank"))
- return true;
- if (url.scheme() != QString::fromAscii("http")
- && url.scheme() != QString::fromAscii("https")
- && url.scheme() != QString::fromAscii("mailto"))
- {
- return false;
- }
- if (baseUrl_.isEmpty() ||
- (url.scheme() == baseUrl_.scheme()
- && url.host() == baseUrl_.host()
- && url.port() == baseUrl_.port()))
- {
- navigated_ = true;
- return true;
- }
- else
- {
- QDesktopServices::openUrl(url);
- if (!navigated_)
- this->view()->window()->deleteLater();
- return false;
- }
- }
- }