diff --git a/native/atom_cef_client.cpp b/native/atom_cef_client.cpp index a30bf1ff9..e819a7a53 100644 --- a/native/atom_cef_client.cpp +++ b/native/atom_cef_client.cpp @@ -22,7 +22,10 @@ bool AtomCefClient::OnProcessMessageReceived(CefRefPtr browser, CefProcessId source_process, CefRefPtr message) { std::string name = message->GetName().ToString(); - + CefRefPtr argumentList = message->GetArgumentList(); + int messageId = argumentList->GetInt(0); + message->GetArgumentList()->Remove(0); + if (name == "open") { if (message->GetArgumentList()->GetSize() == 1) { Open(message->GetArgumentList()->GetString(0)); diff --git a/src/app/atom.coffee b/src/app/atom.coffee index 26c01ee27..c92a2e08b 100644 --- a/src/app/atom.coffee +++ b/src/app/atom.coffee @@ -1,2 +1,20 @@ +messageIdCounter = 1 + +originalSendMessageToBrowserProcess = atom.sendMessageToBrowserProcess + +atom.pendingBrowserProcessCallbacks = {} + +atom.sendMessageToBrowserProcess = (name, data, callback) -> + messageId = messageIdCounter++ + data.unshift(messageId) + pendingBrowserProcessCallbacks[messageId] = callback + atom.open = (args...) -> @sendMessageToBrowserProcess('open', args) + +atom.confirm = (prompt, buttonsAndCallbacks...) -> + console.log prompt, buttonsAndCallbacks + +atom.confirm "Are you sure?", + "Yes", (-> ) + "No", (-> )