From 84ced937a0f9f2874e32e16c4c6ebf72b46904c9 Mon Sep 17 00:00:00 2001 From: Jocelyn Turcotte Date: Mon, 7 Apr 2014 14:00:35 +0200 Subject: Replace uses of QWebEngineFrame with a security origin URL This changes implemented methods. The rest of the references will go away with the public headers cleanup. Change-Id: I82340cd7a4488c4b463489ae98cd9c16de4e7487 Reviewed-by: Michael Bruning --- src/core/javascript_dialog_controller.cpp | 9 ++++++++- src/core/javascript_dialog_controller.h | 1 + src/core/javascript_dialog_controller_p.h | 4 +++- src/core/javascript_dialog_manager_qt.cpp | 3 +-- src/webenginewidgets/api/qwebenginepage.cpp | 18 +++++++++--------- src/webenginewidgets/api/qwebenginepage.h | 6 +++--- src/webenginewidgets/doc/src/qwebenginepage_lgpl.qdoc | 12 ++++++------ 7 files changed, 31 insertions(+), 22 deletions(-) (limited to 'src') diff --git a/src/core/javascript_dialog_controller.cpp b/src/core/javascript_dialog_controller.cpp index ed0431084..973fa89b7 100644 --- a/src/core/javascript_dialog_controller.cpp +++ b/src/core/javascript_dialog_controller.cpp @@ -54,10 +54,12 @@ void JavaScriptDialogControllerPrivate::dialogFinished(bool accepted, const base } JavaScriptDialogControllerPrivate::JavaScriptDialogControllerPrivate(WebContentsAdapterClient::JavascriptDialogType t, const QString &msg, const QString &prompt - , const content::JavaScriptDialogManager::DialogClosedCallback &cb, content::WebContents *c) + , const QUrl &securityOrigin, const content::JavaScriptDialogManager::DialogClosedCallback &cb + , content::WebContents *c) : type(t) , message(msg) , defaultPrompt(prompt) + , securityOrigin(securityOrigin) , callback(cb) , contents(c) { @@ -82,6 +84,11 @@ WebContentsAdapterClient::JavascriptDialogType JavaScriptDialogController::type( return d->type; } +QUrl JavaScriptDialogController::securityOrigin() const +{ + return d->securityOrigin; +} + void JavaScriptDialogController::textProvided(const QString &text) { d->userInput = text; diff --git a/src/core/javascript_dialog_controller.h b/src/core/javascript_dialog_controller.h index b0d598afa..755a2712b 100644 --- a/src/core/javascript_dialog_controller.h +++ b/src/core/javascript_dialog_controller.h @@ -55,6 +55,7 @@ public: QString message() const; QString defaultPrompt() const; WebContentsAdapterClient::JavascriptDialogType type() const; + QUrl securityOrigin() const; public Q_SLOTS: void textProvided(const QString &text); diff --git a/src/core/javascript_dialog_controller_p.h b/src/core/javascript_dialog_controller_p.h index 9e84b31a0..0d7552ce2 100644 --- a/src/core/javascript_dialog_controller_p.h +++ b/src/core/javascript_dialog_controller_p.h @@ -55,11 +55,13 @@ class JavaScriptDialogControllerPrivate { public: void dialogFinished(bool accepted, const base::string16 &promptValue); JavaScriptDialogControllerPrivate(WebContentsAdapterClient::JavascriptDialogType, const QString &message, const QString &prompt - , const content::JavaScriptDialogManager::DialogClosedCallback &, content::WebContents *); + , const QUrl &securityOrigin, const content::JavaScriptDialogManager::DialogClosedCallback & + , content::WebContents *); WebContentsAdapterClient::JavascriptDialogType type; QString message; QString defaultPrompt; + QUrl securityOrigin; QString userInput; content::JavaScriptDialogManager::DialogClosedCallback callback; content::WebContents *contents; diff --git a/src/core/javascript_dialog_manager_qt.cpp b/src/core/javascript_dialog_manager_qt.cpp index 1cde76a8f..1e37481b6 100644 --- a/src/core/javascript_dialog_manager_qt.cpp +++ b/src/core/javascript_dialog_manager_qt.cpp @@ -58,7 +58,6 @@ JavaScriptDialogManagerQt *JavaScriptDialogManagerQt::GetInstance() void JavaScriptDialogManagerQt::RunJavaScriptDialog(content::WebContents *webContents, const GURL &originUrl, const std::string &acceptLang, content::JavaScriptMessageType javascriptMessageType, const base::string16 &messageText, const base::string16 &defaultPromptText, const content::JavaScriptDialogManager::DialogClosedCallback &callback, bool *didSuppressMessage) { - Q_UNUSED(originUrl); Q_UNUSED(acceptLang); WebContentsAdapterClient *client = WebContentsViewQt::from(webContents->GetView())->client(); @@ -69,7 +68,7 @@ void JavaScriptDialogManagerQt::RunJavaScriptDialog(content::WebContents *webCon WebContentsAdapterClient::JavascriptDialogType dialogType = static_cast(javascriptMessageType); JavaScriptDialogControllerPrivate *dialogData = new JavaScriptDialogControllerPrivate(dialogType, toQt(messageText).toHtmlEscaped() - , toQt(defaultPromptText).toHtmlEscaped(), callback, webContents); + , toQt(defaultPromptText).toHtmlEscaped(), toQt(originUrl), callback, webContents); QSharedPointer dialog(new JavaScriptDialogController(dialogData)); // We shouldn't get new dialogs for a given WebContents until we gave back a result. diff --git a/src/webenginewidgets/api/qwebenginepage.cpp b/src/webenginewidgets/api/qwebenginepage.cpp index 80f780dde..6fcababbf 100644 --- a/src/webenginewidgets/api/qwebenginepage.cpp +++ b/src/webenginewidgets/api/qwebenginepage.cpp @@ -583,14 +583,14 @@ void QWebEnginePagePrivate::javascriptDialog(QSharedPointertype()) { case AlertDialog: - q->javaScriptAlert(0, controller->message()); + q->javaScriptAlert(controller->securityOrigin(), controller->message()); accepted = true; break; case ConfirmDialog: - accepted = q->javaScriptConfirm(0, controller->message()); + accepted = q->javaScriptConfirm(controller->securityOrigin(), controller->message()); break; case PromptDialog: - accepted = q->javaScriptPrompt(0, controller->message(), controller->defaultPrompt(), &promptResult); + accepted = q->javaScriptPrompt(controller->securityOrigin(), controller->message(), controller->defaultPrompt(), &promptResult); if (accepted) controller->textProvided(promptResult); break; @@ -810,21 +810,21 @@ QStringList QWebEnginePage::chooseFiles(FileSelectionMode mode, const QStringLis return ret; } -void QWebEnginePage::javaScriptAlert(QWebEngineFrame *originatingFrame, const QString &msg) +void QWebEnginePage::javaScriptAlert(const QUrl &securityOrigin, const QString &msg) { - Q_UNUSED(originatingFrame); + Q_UNUSED(securityOrigin); QMessageBox::information(view(), QStringLiteral("Javascript Alert - %1").arg(url().toString()), msg); } -bool QWebEnginePage::javaScriptConfirm(QWebEngineFrame *originatingFrame, const QString &msg) +bool QWebEnginePage::javaScriptConfirm(const QUrl &securityOrigin, const QString &msg) { - Q_UNUSED(originatingFrame); + Q_UNUSED(securityOrigin); return (QMessageBox::information(view(), QStringLiteral("Javascript Confirm - %1").arg(url().toString()), msg, QMessageBox::Ok, QMessageBox::Cancel) == QMessageBox::Ok); } -bool QWebEnginePage::javaScriptPrompt(QWebEngineFrame *originatingFrame, const QString &msg, const QString &defaultValue, QString *result) +bool QWebEnginePage::javaScriptPrompt(const QUrl &securityOrigin, const QString &msg, const QString &defaultValue, QString *result) { - Q_UNUSED(originatingFrame); + Q_UNUSED(securityOrigin); bool ret = false; if (result) *result = QInputDialog::getText(view(), QStringLiteral("Javascript Prompt - %1").arg(url().toString()), msg, QLineEdit::Normal, defaultValue, &ret); diff --git a/src/webenginewidgets/api/qwebenginepage.h b/src/webenginewidgets/api/qwebenginepage.h index eea7b52d2..29ba140bc 100644 --- a/src/webenginewidgets/api/qwebenginepage.h +++ b/src/webenginewidgets/api/qwebenginepage.h @@ -574,9 +574,9 @@ protected: virtual bool acceptNavigationRequest(QWebEngineFrame *frame, const QNetworkRequest &request, NavigationType type) { Q_UNUSED(frame); Q_UNUSED(&request); Q_UNUSED(type); Q_UNREACHABLE(); return false; } virtual QStringList chooseFiles(FileSelectionMode mode, const QStringList &oldFiles, const QStringList &acceptedMimeTypes); - virtual void javaScriptAlert(QWebEngineFrame *originatingFrame, const QString& msg); - virtual bool javaScriptConfirm(QWebEngineFrame *originatingFrame, const QString& msg); - virtual bool javaScriptPrompt(QWebEngineFrame *originatingFrame, const QString& msg, const QString& defaultValue, QString* result); + virtual void javaScriptAlert(const QUrl &securityOrigin, const QString& msg); + virtual bool javaScriptConfirm(const QUrl &securityOrigin, const QString& msg); + virtual bool javaScriptPrompt(const QUrl &securityOrigin, const QString& msg, const QString& defaultValue, QString* result); virtual void javaScriptConsoleMessage(JavaScriptConsoleMessageLevel level, const QString& message, int lineNumber, const QString& sourceID); virtual QString userAgentForUrl(const QUrl& url) const { Q_UNUSED(url); Q_UNREACHABLE(); return QString(); } diff --git a/src/webenginewidgets/doc/src/qwebenginepage_lgpl.qdoc b/src/webenginewidgets/doc/src/qwebenginepage_lgpl.qdoc index 225ad5a48..a32406264 100644 --- a/src/webenginewidgets/doc/src/qwebenginepage_lgpl.qdoc +++ b/src/webenginewidgets/doc/src/qwebenginepage_lgpl.qdoc @@ -416,24 +416,24 @@ */ /*! - \fn void QWebEnginePage::javaScriptAlert(QWebEngineFrame *frame, const QString& msg) - This function is called whenever a JavaScript program running inside \a frame calls the alert() function with + \fn void QWebEnginePage::javaScriptAlert(const QUrl &securityOrigin, const QString& msg) + This function is called whenever a JavaScript program running in a frame affiliated with \a securityOrigin calls the alert() function with the message \a msg. The default implementation shows the message, \a msg, with QMessageBox::information. */ /*! - \fn bool QWebEnginePage::javaScriptConfirm(QWebEngineFrame *frame, const QString& msg) - This function is called whenever a JavaScript program running inside \a frame calls the confirm() function + \fn bool QWebEnginePage::javaScriptConfirm(const QUrl &securityOrigin, const QString& msg) + This function is called whenever a JavaScript program running in a frame affiliated with \a securityOrigin calls the confirm() function with the message, \a msg. Returns true if the user confirms the message; otherwise returns false. The default implementation executes the query using QMessageBox::information with QMessageBox::Ok and QMessageBox::Cancel buttons. */ /*! - \fn bool QWebEnginePage::javaScriptPrompt(QWebEngineFrame *frame, const QString& msg, const QString& defaultValue, QString* result) - This function is called whenever a JavaScript program running inside \a frame tries to prompt the user for input. + \fn bool QWebEnginePage::javaScriptPrompt(const QUrl &securityOrigin, const QString& msg, const QString& defaultValue, QString* result) + This function is called whenever a JavaScript program running in a frame affiliated with \a securityOrigin tries to prompt the user for input. The program may provide an optional message, \a msg, as well as a default value for the input in \a defaultValue. If the prompt was cancelled by the user the implementation should return false; otherwise the -- cgit v1.2.1