Skip to content

Commit d940c58

Browse files
committed
Log console messages explicitilly.
Log js dialog execution. JS dialogs don't work due to upstream CEF bug: chromiumembedded/cef#3818 https://magpcss.org/ceforum/viewtopic.php?f=6&t=20041
1 parent 0a04732 commit d940c58

File tree

3 files changed

+66
-1
lines changed

3 files changed

+66
-1
lines changed

cef/browser_window.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -303,6 +303,7 @@ void BrowserWindow::SetIconFromSettings() {
303303
bool BrowserWindow::SetFocus() {
304304
// Calling SetFocus() on shellBrowser handle does not work.
305305
if (cefBrowser_) {
306+
LOGGER_INFO << "Focus browser, id=" << cefBrowser_->GetIdentifier();
306307
cefBrowser_->GetHost()->SetFocus(true);
307308
}
308309
return true;

cef/client_handler.cpp

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,34 @@ void ClientHandler::OnTitleChange(CefRefPtr<CefBrowser> cefBrowser,
117117
}
118118
}
119119

120+
bool ClientHandler::OnConsoleMessage(CefRefPtr<CefBrowser> browser,
121+
cef_log_severity_t level,
122+
const CefString& message,
123+
const CefString& source,
124+
int line)
125+
{
126+
std::string level_string = "UNKNOWN";
127+
switch (level) {
128+
case LOGSEVERITY_DEBUG:
129+
level_string = "Debug";
130+
break;
131+
case LOGSEVERITY_INFO:
132+
level_string = "Info";
133+
break;
134+
case LOGSEVERITY_WARNING:
135+
level_string = "Warning";
136+
break;
137+
case LOGSEVERITY_ERROR:
138+
level_string = "Error";
139+
break;
140+
case LOGSEVERITY_FATAL:
141+
level_string = "Fatal";
142+
break;
143+
}
144+
LOGGER_INFO << "JS Console: [" << level_string << "] " << message << "(" << source << ":" << line << ")";
145+
return true;
146+
}
147+
120148
// ----------------------------------------------------------------------------
121149
// CefLifeSpanHandler methods
122150
// ----------------------------------------------------------------------------
@@ -670,3 +698,21 @@ void ClientHandler::OnDownloadUpdated(
670698
LOGGER_INFO << "Download was cancelled";
671699
}
672700
}
701+
702+
// ----------------------------------------------------------------------------
703+
// CefDownloadHandler methods
704+
// ----------------------------------------------------------------------------
705+
706+
bool ClientHandler::OnJSDialog(CefRefPtr<CefBrowser> browser,
707+
const CefString& origin_url,
708+
JSDialogType dialog_type,
709+
const CefString& message_text,
710+
const CefString& default_prompt_text,
711+
CefRefPtr<CefJSDialogCallback> callback,
712+
bool& suppress_message)
713+
{
714+
// Use default implementation.
715+
LOGGER_DEBUG << "JS dialog: " << message_text;
716+
suppress_message = false;
717+
return false;
718+
}

cef/client_handler.h

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@ class ClientHandler : public CefClient,
1616
public CefDragHandler,
1717
public CefRequestHandler,
1818
public CefKeyboardHandler,
19-
public CefDownloadHandler {
19+
public CefDownloadHandler,
20+
public CefJSDialogHandler {
2021
public:
2122
ClientHandler();
2223
~ClientHandler();
@@ -49,6 +50,9 @@ class ClientHandler : public CefClient,
4950
virtual CefRefPtr<CefDownloadHandler> GetDownloadHandler() {
5051
return this;
5152
}
53+
virtual CefRefPtr<CefJSDialogHandler> GetJSDialogHandler() {
54+
return this;
55+
}
5256
virtual bool OnProcessMessageReceived(CefRefPtr<CefBrowser> browser,
5357
CefRefPtr<CefFrame> frame,
5458
CefProcessId source_process,
@@ -58,6 +62,11 @@ class ClientHandler : public CefClient,
5862
// CefDisplayHandler methods:
5963
virtual void OnTitleChange(CefRefPtr<CefBrowser> browser,
6064
const CefString& title) override;
65+
virtual bool OnConsoleMessage(CefRefPtr<CefBrowser> browser,
66+
cef_log_severity_t level,
67+
const CefString& message,
68+
const CefString& source,
69+
int line) override;
6170

6271
// CefLifeSpanHandler methods:
6372
virtual void OnAfterCreated(CefRefPtr<CefBrowser> browser) override;
@@ -126,6 +135,15 @@ class ClientHandler : public CefClient,
126135
CefRefPtr<CefBrowser> browser,
127136
CefRefPtr<CefDownloadItem> download_item,
128137
CefRefPtr<CefDownloadItemCallback> callback) override;
138+
139+
// CefJSDialogHandler methods:
140+
virtual bool OnJSDialog(CefRefPtr<CefBrowser> browser,
141+
const CefString& origin_url,
142+
JSDialogType dialog_type,
143+
const CefString& message_text,
144+
const CefString& default_prompt_text,
145+
CefRefPtr<CefJSDialogCallback> callback,
146+
bool& suppress_message) override;
129147

130148
private:
131149
// Include the default reference counting implementation.

0 commit comments

Comments
 (0)