diff options
author | Pierre Rossi <pierre.rossi@digia.com> | 2014-04-11 18:46:40 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-04-29 16:37:37 +0200 |
commit | 4da1db8fb60b444dc112b41804a3ac7480197bd2 (patch) | |
tree | 9d49ec3bfb6a8703ee23fb6122c025862db39a79 /src/core/javascript_dialog_manager_qt.cpp | |
parent | 59ec1beac8b2c0931efb9a78ee696a8e150e9a6f (diff) |
Add a way of using UI dialogs for authorization
We could use this to prompt the user for various feature permissions
that we are not ready to expose in our API.
Change-Id: If6e6a16aca4142b0564121dfc7677b7c4996f742
Reviewed-by: Zeno Albisser <zeno.albisser@digia.com>
Diffstat (limited to 'src/core/javascript_dialog_manager_qt.cpp')
-rw-r--r-- | src/core/javascript_dialog_manager_qt.cpp | 33 |
1 files changed, 22 insertions, 11 deletions
diff --git a/src/core/javascript_dialog_manager_qt.cpp b/src/core/javascript_dialog_manager_qt.cpp index 1e37481b6..bd528af95 100644 --- a/src/core/javascript_dialog_manager_qt.cpp +++ b/src/core/javascript_dialog_manager_qt.cpp @@ -43,7 +43,6 @@ #include "javascript_dialog_controller.h" #include "javascript_dialog_controller_p.h" -#include "web_contents_adapter_client.h" #include "web_contents_view_qt.h" #include "type_conversion.h" @@ -62,20 +61,13 @@ void JavaScriptDialogManagerQt::RunJavaScriptDialog(content::WebContents *webCon WebContentsAdapterClient *client = WebContentsViewQt::from(webContents->GetView())->client(); if (!client) { - *didSuppressMessage = true; + if (didSuppressMessage) + *didSuppressMessage = true; return; } WebContentsAdapterClient::JavascriptDialogType dialogType = static_cast<WebContentsAdapterClient::JavascriptDialogType>(javascriptMessageType); - JavaScriptDialogControllerPrivate *dialogData = new JavaScriptDialogControllerPrivate(dialogType, toQt(messageText).toHtmlEscaped() - , toQt(defaultPromptText).toHtmlEscaped(), toQt(originUrl), callback, webContents); - QSharedPointer<JavaScriptDialogController> dialog(new JavaScriptDialogController(dialogData)); - - // We shouldn't get new dialogs for a given WebContents until we gave back a result. - Q_ASSERT(!m_activeDialogs.contains(webContents)); - m_activeDialogs.insert(webContents, dialog); - - client->javascriptDialog(dialog); + runDialogForContents(webContents, dialogType, toQt(messageText).toHtmlEscaped(), toQt(defaultPromptText).toHtmlEscaped(), toQt(originUrl), callback); } bool JavaScriptDialogManagerQt::HandleJavaScriptDialog(content::WebContents *contents, bool accept, const base::string16 *promptOverride) @@ -88,6 +80,25 @@ bool JavaScriptDialogManagerQt::HandleJavaScriptDialog(content::WebContents *con return true; } +void JavaScriptDialogManagerQt::runDialogForContents(content::WebContents *webContents, WebContentsAdapterClient::JavascriptDialogType type + , const QString &messageText, const QString &defaultPrompt, const QUrl &origin + , const content::JavaScriptDialogManager::DialogClosedCallback &callback, const QString &title) +{ + WebContentsAdapterClient *client = WebContentsViewQt::from(webContents->GetView())->client(); + if (!client) + return; + + JavaScriptDialogControllerPrivate *dialogData = new JavaScriptDialogControllerPrivate(type, messageText, defaultPrompt, title, origin, callback, webContents); + QSharedPointer<JavaScriptDialogController> dialog(new JavaScriptDialogController(dialogData)); + + // We shouldn't get new dialogs for a given WebContents until we gave back a result. + Q_ASSERT(!m_activeDialogs.contains(webContents)); + m_activeDialogs.insert(webContents, dialog); + + client->javascriptDialog(dialog); + +} + void JavaScriptDialogManagerQt::removeDialogForContents(content::WebContents *contents) { |