From ad14e65ef9b3f3ef3ca6fab07ef161026d3ee315 Mon Sep 17 00:00:00 2001 From: Corey Johnson Date: Mon, 25 Feb 2013 11:25:11 -0800 Subject: [PATCH] Add atom.getVersion(callback) --- native/atom_cef_client.cpp | 3 +++ native/atom_cef_client.h | 1 + native/atom_cef_client_mac.mm | 11 +++++++++++ spec/app/atom-spec.coffee | 10 ++++++++++ src/app/atom.coffee | 3 +++ 5 files changed, 28 insertions(+) diff --git a/native/atom_cef_client.cpp b/native/atom_cef_client.cpp index 356058a5b..4427a8901 100644 --- a/native/atom_cef_client.cpp +++ b/native/atom_cef_client.cpp @@ -84,6 +84,9 @@ bool AtomCefClient::OnProcessMessageReceived(CefRefPtr browser, else if (name == "toggleFullScreen") { ToggleFullScreen(browser); } + else if (name == "getVersion") { + GetVersion(messageId, browser); + } else { return false; } diff --git a/native/atom_cef_client.h b/native/atom_cef_client.h index b81c93bca..494009c5c 100644 --- a/native/atom_cef_client.h +++ b/native/atom_cef_client.h @@ -125,6 +125,7 @@ class AtomCefClient : public CefClient, void Log(const char *message); void Show(CefRefPtr browser); void ToggleFullScreen(CefRefPtr browser); + void GetVersion(int replyId, CefRefPtr browser); IMPLEMENT_REFCOUNTING(AtomCefClient); IMPLEMENT_LOCKING(AtomCefClient); diff --git a/native/atom_cef_client_mac.mm b/native/atom_cef_client_mac.mm index c44ef5c22..4be8f3592 100644 --- a/native/atom_cef_client_mac.mm +++ b/native/atom_cef_client_mac.mm @@ -158,3 +158,14 @@ void AtomCefClient::Exit(int status) { void AtomCefClient::Log(const char *message) { std::cout << message << "\n"; } + +void AtomCefClient::GetVersion(int replyId, CefRefPtr browser) { + CefRefPtr replyMessage = CefProcessMessage::Create("reply"); + CefRefPtr replyArguments = replyMessage->GetArgumentList(); + NSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"]; + + replyArguments->SetSize(2); + replyArguments->SetString(1, [version UTF8String]); + replyArguments->SetList(0, CreateReplyDescriptor(replyId, 0)); + browser->SendProcessMessage(PID_RENDERER, replyMessage); +} diff --git a/spec/app/atom-spec.coffee b/spec/app/atom-spec.coffee index 2c34de5ee..dde4f0cc5 100644 --- a/spec/app/atom-spec.coffee +++ b/spec/app/atom-spec.coffee @@ -131,3 +131,13 @@ describe "the `atom` global", -> expect(packageStates['package-with-module']).toEqual someNumber: 1 expect(packageStates['package-with-serialize-error']).toBeUndefined() expect(console.error).toHaveBeenCalled() + + describe ".getVersion(callback)", -> + it "calls the callback with the current version number", -> + versionHandler = jasmine.createSpy("versionHandler") + atom.getVersion(versionHandler) + waitsFor -> + versionHandler.callCount > 0 + + runs -> + expect(versionHandler.argsForCall[0][0]).toMatch /^\d+\.\d+\.\d+$/ diff --git a/src/app/atom.coffee b/src/app/atom.coffee index c180f8d55..b5149622e 100644 --- a/src/app/atom.coffee +++ b/src/app/atom.coffee @@ -186,3 +186,6 @@ _.extend atom, require userInitScriptPath if fs.isFile(userInitScriptPath) catch error console.error "Failed to load `#{userInitScriptPath}`", error.stack, error + + getVersion: (callback) -> + @sendMessageToBrowserProcess('getVersion', null, callback)