From 1a66aba6aae45292c7fdd88c985ce1122e8e58dc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20Br=C3=BCning?= <michael.bruning@digia.com>
Date: Mon, 14 Apr 2014 16:07:51 +0200
Subject: [PATCH] Map Javascript console message level to enum values.

Translates the internally used LogSeverity values to
enums defined by the QtWebEngine integration layer.

Change-Id: I7da0983d4fb5c199e1a2436b5899a43cf6698784
Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
---
 src/core/web_contents_adapter_client.h      |  8 +++++++-
 src/core/web_contents_delegate_qt.cpp       | 13 ++++++++++++-
 src/webengine/api/qquickwebengineview.cpp   |  4 ++--
 src/webengine/api/qquickwebengineview_p.h   | 10 +++++++++-
 src/webengine/api/qquickwebengineview_p_p.h |  2 +-
 src/webenginewidgets/api/qwebenginepage.cpp |  6 +++---
 src/webenginewidgets/api/qwebenginepage.h   |  9 ++++++++-
 src/webenginewidgets/api/qwebenginepage_p.h |  2 +-
 8 files changed, 43 insertions(+), 11 deletions(-)

diff --git a/src/core/web_contents_adapter_client.h b/src/core/web_contents_adapter_client.h
index 2c89de369..f24629234 100644
--- a/src/core/web_contents_adapter_client.h
+++ b/src/core/web_contents_adapter_client.h
@@ -107,6 +107,12 @@ public:
         Save
     };
 
+    enum JavaScriptConsoleMessageLevel {
+        Info = 0,
+        Warning,
+        Error
+    };
+
     virtual ~WebContentsAdapterClient() { }
 
     virtual RenderWidgetHostViewQtDelegate* CreateRenderWidgetHostViewQtDelegate(RenderWidgetHostViewQtDelegateClient *client) = 0;
@@ -135,7 +141,7 @@ public:
     virtual void didFetchDocumentInnerText(quint64 requestId, const QString& result) = 0;
     virtual void didFindText(quint64 requestId, int matchCount) = 0;
     virtual void passOnFocus(bool reverse) = 0;
-    virtual void javaScriptConsoleMessage(int level, const QString& message, int lineNumber, const QString& sourceID) = 0;
+    virtual void javaScriptConsoleMessage(JavaScriptConsoleMessageLevel level, const QString& message, int lineNumber, const QString& sourceID) = 0;
     virtual void authenticationRequired(const QUrl &requestUrl, const QString &realm, bool isProxy, const QString &challengingHost, QString *outUser, QString *outPassword) = 0;
 };
 
diff --git a/src/core/web_contents_delegate_qt.cpp b/src/core/web_contents_delegate_qt.cpp
index 80b2330a8..dba63296b 100644
--- a/src/core/web_contents_delegate_qt.cpp
+++ b/src/core/web_contents_delegate_qt.cpp
@@ -54,6 +54,17 @@
 #include "content/public/common/favicon_url.h"
 #include "content/public/common/file_chooser_params.h"
 
+
+// Maps the LogSeverity defines in base/logging.h to the web engines message levels.
+static WebContentsAdapterClient::JavaScriptConsoleMessageLevel mapToJavascriptConsoleMessageLevel(int32 messageLevel) {
+    if (messageLevel < 1)
+        return WebContentsAdapterClient::Info;
+    else if (messageLevel > 1)
+        return WebContentsAdapterClient::Error;
+
+    return WebContentsAdapterClient::Warning;
+}
+
 WebContentsDelegateQt::WebContentsDelegateQt(content::WebContents *webContents, WebContentsAdapterClient *adapterClient)
     : m_viewClient(adapterClient)
 {
@@ -188,7 +199,7 @@ void WebContentsDelegateQt::RunFileChooser(content::WebContents *web_contents, c
 bool WebContentsDelegateQt::AddMessageToConsole(content::WebContents *source, int32 level, const base::string16 &message, int32 line_no, const base::string16 &source_id)
 {
     Q_UNUSED(source)
-    m_viewClient->javaScriptConsoleMessage(static_cast<int>(level), toQt(message), static_cast<int>(line_no), toQt(source_id));
+    m_viewClient->javaScriptConsoleMessage(mapToJavascriptConsoleMessageLevel(level), toQt(message), static_cast<int>(line_no), toQt(source_id));
     return false;
 }
 
diff --git a/src/webengine/api/qquickwebengineview.cpp b/src/webengine/api/qquickwebengineview.cpp
index 2b71d1f45..c8c8bfac0 100644
--- a/src/webengine/api/qquickwebengineview.cpp
+++ b/src/webengine/api/qquickwebengineview.cpp
@@ -336,11 +336,11 @@ bool QQuickWebEngineViewPrivate::isFullScreen() const
     return e->isFullScreen();
 }
 
-void QQuickWebEngineViewPrivate::javaScriptConsoleMessage(int level, const QString& message, int lineNumber, const QString& sourceID)
+void QQuickWebEngineViewPrivate::javaScriptConsoleMessage(JavaScriptConsoleMessageLevel level, const QString& message, int lineNumber, const QString& sourceID)
 {
     Q_Q(QQuickWebEngineView);
     Q_UNUSED(level);
-    Q_EMIT q->javaScriptConsoleMessage(level, message, lineNumber, sourceID);
+    Q_EMIT q->javaScriptConsoleMessage(static_cast<QQuickWebEngineView::JavaScriptConsoleMessageLevel>(level), message, lineNumber, sourceID);
 }
 
 void QQuickWebEngineViewPrivate::setDevicePixelRatio(qreal devicePixelRatio)
diff --git a/src/webengine/api/qquickwebengineview_p.h b/src/webengine/api/qquickwebengineview_p.h
index 3ad2e59b7..40bc59f4e 100644
--- a/src/webengine/api/qquickwebengineview_p.h
+++ b/src/webengine/api/qquickwebengineview_p.h
@@ -63,6 +63,7 @@ class Q_WEBENGINE_PRIVATE_EXPORT QQuickWebEngineView : public QQuickItem {
     Q_ENUMS(LoadStatus);
     Q_ENUMS(ErrorDomain);
     Q_ENUMS(NewViewDestination);
+    Q_ENUMS(JavaScriptConsoleMessageLevel);
 
 public:
     QQuickWebEngineView(QQuickItem *parent = 0);
@@ -102,6 +103,13 @@ public:
         NewViewInTab
     };
 
+    // must match WebContentsAdapterClient::JavaScriptConsoleMessageLevel
+    enum JavaScriptConsoleMessageLevel {
+        Info = 0,
+        Warning,
+        Error
+    };
+
 public Q_SLOTS:
     void loadHtml(const QString &html, const QUrl &baseUrl = QUrl(), const QUrl &unreachableUrl = QUrl());
     void goBack();
@@ -115,7 +123,7 @@ Q_SIGNALS:
     void iconChanged();
     void loadingChanged(QQuickWebEngineLoadRequest *loadRequest);
     void loadProgressChanged();
-    void javaScriptConsoleMessage(int level, const QString &message, int lineNumber, const QString &sourceID);
+    void javaScriptConsoleMessage(JavaScriptConsoleMessageLevel level, const QString &message, int lineNumber, const QString &sourceID);
 
 protected:
     void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry);
diff --git a/src/webengine/api/qquickwebengineview_p_p.h b/src/webengine/api/qquickwebengineview_p_p.h
index 2fcca73b7..3a84eae5c 100644
--- a/src/webengine/api/qquickwebengineview_p_p.h
+++ b/src/webengine/api/qquickwebengineview_p_p.h
@@ -151,7 +151,7 @@ public:
     virtual void didFetchDocumentInnerText(quint64, const QString&) Q_DECL_OVERRIDE { }
     virtual void didFindText(quint64, int) Q_DECL_OVERRIDE { }
     virtual void passOnFocus(bool reverse) Q_DECL_OVERRIDE;
-    virtual void javaScriptConsoleMessage(int level, const QString& message, int lineNumber, const QString& sourceID) Q_DECL_OVERRIDE;
+    virtual void javaScriptConsoleMessage(JavaScriptConsoleMessageLevel level, const QString& message, int lineNumber, const QString& sourceID) Q_DECL_OVERRIDE;
     virtual void authenticationRequired(const QUrl&, const QString&, bool, const QString&, QString*, QString*) Q_DECL_OVERRIDE { }
 
     void setDevicePixelRatio(qreal);
diff --git a/src/webenginewidgets/api/qwebenginepage.cpp b/src/webenginewidgets/api/qwebenginepage.cpp
index dbd78acd0..70f2097a0 100644
--- a/src/webenginewidgets/api/qwebenginepage.cpp
+++ b/src/webenginewidgets/api/qwebenginepage.cpp
@@ -587,10 +587,10 @@ void QWebEnginePagePrivate::javascriptDialog(QSharedPointer<JavaScriptDialogCont
         controller->reject();
 }
 
-void QWebEnginePagePrivate::javaScriptConsoleMessage(int level, const QString &message, int lineNumber, const QString &sourceID)
+void QWebEnginePagePrivate::javaScriptConsoleMessage(JavaScriptConsoleMessageLevel level, const QString &message, int lineNumber, const QString &sourceID)
 {
     Q_Q(QWebEnginePage);
-    q->javaScriptConsoleMessage(level, message, lineNumber, sourceID);
+    q->javaScriptConsoleMessage(static_cast<QWebEnginePage::JavaScriptConsoleMessageLevel>(level), message, lineNumber, sourceID);
 }
 
 namespace {
@@ -815,7 +815,7 @@ bool QWebEnginePage::javaScriptPrompt(QWebEngineFrame *originatingFrame, const Q
     return ret;
 }
 
-void QWebEnginePage::javaScriptConsoleMessage(int level, const QString &message, int lineNumber, const QString &sourceID)
+void QWebEnginePage::javaScriptConsoleMessage(JavaScriptConsoleMessageLevel level, const QString &message, int lineNumber, const QString &sourceID)
 {
     Q_UNUSED(level);
     Q_UNUSED(message);
diff --git a/src/webenginewidgets/api/qwebenginepage.h b/src/webenginewidgets/api/qwebenginepage.h
index 04db99750..fcec92f85 100644
--- a/src/webenginewidgets/api/qwebenginepage.h
+++ b/src/webenginewidgets/api/qwebenginepage.h
@@ -287,6 +287,13 @@ public:
         FileSelectOpenMultiple,
     };
 
+    // must match WebContentsAdapterClient::JavaScriptConsoleMessageLevel
+    enum JavaScriptConsoleMessageLevel {
+        Info = 0,
+        Warning,
+        Error
+    };
+
     class QWEBENGINEWIDGETS_EXPORT ViewportAttributes {
     public:
         ViewportAttributes();
@@ -569,7 +576,7 @@ protected:
     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 javaScriptConsoleMessage(int level, const QString& message, int lineNumber, const QString& sourceID);
+    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/api/qwebenginepage_p.h b/src/webenginewidgets/api/qwebenginepage_p.h
index 947c57317..b24489385 100644
--- a/src/webenginewidgets/api/qwebenginepage_p.h
+++ b/src/webenginewidgets/api/qwebenginepage_p.h
@@ -134,7 +134,7 @@ public:
     virtual void didFetchDocumentInnerText(quint64 requestId, const QString& result) Q_DECL_OVERRIDE;
     virtual void didFindText(quint64 requestId, int matchCount) Q_DECL_OVERRIDE;
     virtual void passOnFocus(bool reverse) Q_DECL_OVERRIDE { Q_UNUSED(reverse); };
-    virtual void javaScriptConsoleMessage(int level, const QString& message, int lineNumber, const QString& sourceID) Q_DECL_OVERRIDE;
+    virtual void javaScriptConsoleMessage(JavaScriptConsoleMessageLevel level, const QString& message, int lineNumber, const QString& sourceID) Q_DECL_OVERRIDE;
     virtual void authenticationRequired(const QUrl &requestUrl, const QString &realm, bool isProxy, const QString &challengingHost, QString *outUser, QString *outPassword) Q_DECL_OVERRIDE;
 
     void updateAction(QWebEnginePage::WebAction) const;
-- 
GitLab