summaryrefslogtreecommitdiff
path: root/lib/javascript_dialog_manager_qt.cpp
diff options
context:
space:
mode:
authorPierre Rossi <pierre.rossi@digia.com>2013-09-05 15:55:00 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-10-17 15:06:19 +0200
commit7642fabf5f62fbc583dc6bd9f349dbe1e45e805a (patch)
treef493be28f91e06b46534061bcd251d259105da58 /lib/javascript_dialog_manager_qt.cpp
parentd9276b51c64c2b0b1cd97dcd02c0a83e78018f81 (diff)
downloadqtwebengine-7642fabf5f62fbc583dc6bd9f349dbe1e45e805a.tar.gz
Add javascript dialogs support
This is just the basic core part and widgets plumbing and default implementations of the virtual functions in QWebEnginePage. QtQuick implementation is still yet to be done Change-Id: I7cf8d6e5ec0bf747d45e9914db57bd0e4ef95b7f Reviewed-by: Zeno Albisser <zeno.albisser@digia.com>
Diffstat (limited to 'lib/javascript_dialog_manager_qt.cpp')
-rw-r--r--lib/javascript_dialog_manager_qt.cpp78
1 files changed, 78 insertions, 0 deletions
diff --git a/lib/javascript_dialog_manager_qt.cpp b/lib/javascript_dialog_manager_qt.cpp
new file mode 100644
index 000000000..b2f6d86bc
--- /dev/null
+++ b/lib/javascript_dialog_manager_qt.cpp
@@ -0,0 +1,78 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the QtWebEngine module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia. For licensing terms and
+** conditions see http://qt.digia.com/licensing. For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Digia gives you certain additional
+** rights. These rights are described in the Digia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "javascript_dialog_manager_qt.h"
+
+#include "web_contents_adapter_client.h"
+#include "web_contents_view_qt.h"
+#include "type_conversion.h"
+
+#include "base/memory/singleton.h"
+
+Q_STATIC_ASSERT_X(static_cast<int>(content::JAVASCRIPT_MESSAGE_TYPE_PROMPT) == static_cast<int>(WebContentsAdapterClient::PromptDialog), "These enums should be in sync.");
+
+JavaScriptDialogManagerQt *JavaScriptDialogManagerQt::GetInstance()
+{
+ return Singleton<JavaScriptDialogManagerQt>::get();
+}
+
+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();
+ if (!client) {
+ *didSuppressMessage = true;
+ return;
+ }
+
+ QString promptInput;
+ WebContentsAdapterClient::JavascriptDialogType dialogType = static_cast<WebContentsAdapterClient::JavascriptDialogType>(javascriptMessageType);
+ bool res = client->javascriptDialog(dialogType, toQt(messageText).toHtmlEscaped(), toQt(defaultPromptText).toHtmlEscaped(), &promptInput);
+ callback.Run(res, toString16(promptInput));
+}
+
+bool JavaScriptDialogManagerQt::HandleJavaScriptDialog(content::WebContents *, bool accept, const base::string16 *promptOverride)
+{
+ // FIXME: We might need to keep a queue of modal dialogs in there and unqueue them...
+ return false;
+}