Skip to content
This repository was archived by the owner on Sep 2, 2021. It is now read-only.

Commit 257e6bc

Browse files
authored
Merge pull request #674 from jha-g/jha-g/merging_master_for_patch_release
Cherry picking changes from master for patch release
2 parents e31c5f5 + c662e97 commit 257e6bc

File tree

5 files changed

+44
-10
lines changed

5 files changed

+44
-10
lines changed

appshell/appshell_extension_handler.h

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ class AppShellExtensionHandler : public CefV8Handler {
160160
CefString& exception) {
161161

162162
// The only messages that are handled here is getElapsedMilliseconds(),
163-
// GetCurrentLanguage(), GetApplicationSupportDirectory(), and GetRemoteDebuggingPort().
163+
// GetCurrentLanguage(), and GetApplicationSupportDirectory().
164164
// All other messages are passed to the browser process.
165165
if (name == "GetElapsedMilliseconds") {
166166
retval = CefV8Value::CreateDouble(GetElapsedMilliseconds());
@@ -170,8 +170,6 @@ class AppShellExtensionHandler : public CefV8Handler {
170170
retval = CefV8Value::CreateString(AppGetSupportDirectory());
171171
} else if (name == "GetUserDocumentsDirectory") {
172172
retval = CefV8Value::CreateString(AppGetDocumentsDirectory());
173-
} else if (name == "GetRemoteDebuggingPort") {
174-
retval = CefV8Value::CreateInt(REMOTE_DEBUGGING_PORT);
175173
} else {
176174
// Pass all messages to the browser process. Look in appshell_extensions.cpp for implementation.
177175
CefRefPtr<CefBrowser> browser = CefV8Context::GetCurrentContext()->GetBrowser();

appshell/appshell_extensions.cpp

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@
3737
#include "update.h"
3838

3939
extern std::vector<CefString> gDroppedFiles;
40+
extern int g_remote_debugging_port;
41+
extern std::string g_get_remote_debugging_port_error;
4042

4143
namespace appshell_extensions {
4244

@@ -56,6 +58,7 @@ class ProcessMessageDelegate : public ClientHandler::ProcessMessageDelegate {
5658
CefRefPtr<CefListValue> argList = message->GetArgumentList();
5759
int32 callbackId = -1;
5860
int32 error = NO_ERROR;
61+
std::string errInfo;
5962
CefRefPtr<CefProcessMessage> response =
6063
CefProcessMessage::Create("invokeCallback");
6164
CefRefPtr<CefListValue> responseArgs = response->GetArgumentList();
@@ -842,6 +845,14 @@ class ProcessMessageDelegate : public ClientHandler::ProcessMessageDelegate {
842845
uberDict->SetList(0, dirContents);
843846
uberDict->SetList(1, allStats);
844847
responseArgs->SetList(2, uberDict);
848+
} else if (message_name == "GetRemoteDebuggingPort") {
849+
if (g_get_remote_debugging_port_error.empty() && g_remote_debugging_port > 0) {
850+
responseArgs->SetInt(2, g_remote_debugging_port);
851+
}
852+
else {
853+
responseArgs->SetNull(2);
854+
errInfo = g_get_remote_debugging_port_error;
855+
}
845856
}
846857

847858
else {
@@ -850,8 +861,13 @@ class ProcessMessageDelegate : public ClientHandler::ProcessMessageDelegate {
850861
}
851862

852863
if (callbackId != -1) {
853-
responseArgs->SetInt(1, error);
854-
864+
if (errInfo.empty()) {
865+
responseArgs->SetInt(1, error);
866+
}
867+
else {
868+
responseArgs->SetString(1, errInfo);
869+
}
870+
855871
// Send response
856872
browser->SendProcessMessage(PID_RENDERER, response);
857873
}

appshell/appshell_extensions.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -640,8 +640,8 @@ if (!brackets) {
640640
* @return int. The remote debugging port used by the appshell.
641641
*/
642642
native function GetRemoteDebuggingPort();
643-
appshell.app.getRemoteDebuggingPort = function () {
644-
return GetRemoteDebuggingPort();
643+
appshell.app.getRemoteDebuggingPort = function (callback) {
644+
GetRemoteDebuggingPort(callback || _dummyCallback);
645645
};
646646

647647

appshell/cefclient.cpp

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
#include <cstdlib>
88
#include <sstream>
99
#include <string>
10+
#include <errno.h>
1011
#include "include/cef_app.h"
1112
#include "include/cef_browser.h"
1213
#include "include/cef_command_line.h"
@@ -19,6 +20,8 @@
1920
#include "config.h"
2021

2122
CefRefPtr<ClientHandler> g_handler;
23+
int g_remote_debugging_port = 0;
24+
std::string g_get_remote_debugging_port_error;
2225

2326
#ifdef OS_WIN
2427
bool g_force_enable_acc = false;
@@ -95,7 +98,26 @@ void AppGetSettings(CefSettings& settings, CefRefPtr<CefCommandLine> command_lin
9598
command_line->GetSwitchValue(client::switches::kJavascriptFlags);
9699

97100
// Enable dev tools
98-
settings.remote_debugging_port = REMOTE_DEBUGGING_PORT;
101+
CefString debugger_port = command_line->GetSwitchValue("remote-debugging-port");
102+
if (!debugger_port.empty()) {
103+
g_get_remote_debugging_port_error = debugger_port.ToString();
104+
long port = strtol(g_get_remote_debugging_port_error.c_str(), NULL, 10);
105+
if (errno == ERANGE) {
106+
errno = port = 0;
107+
}
108+
static const long max_port_num = 65535;
109+
static const long max_reserved_port_num = 1023;
110+
if (port > max_reserved_port_num && port < max_port_num) {
111+
g_remote_debugging_port = static_cast<int>(port);
112+
settings.remote_debugging_port = g_remote_debugging_port;
113+
g_get_remote_debugging_port_error.clear();
114+
}
115+
else {
116+
// Setting debugging port to highest number will disable remote debugging
117+
// As setting.remote_debugging_port has higher priority compared to command line option
118+
settings.remote_debugging_port = max_port_num;
119+
}
120+
}
99121

100122
std::wstring versionStr = appshell::AppGetProductVersionString();
101123

appshell/config.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,8 +82,6 @@
8282

8383
#endif
8484

85-
#define REMOTE_DEBUGGING_PORT 9234
86-
8785
// Comment out this line to enable OS themed drawing
8886
#define DARK_UI
8987
#define DARK_AERO_GLASS

0 commit comments

Comments
 (0)