[Mac] Add app.dock.getBadge() API.
authorCheng Zhao <zcbenz@gmail.com>
Tue, 6 Aug 2013 08:39:31 +0000 (16:39 +0800)
committerCheng Zhao <zcbenz@gmail.com>
Tue, 6 Aug 2013 08:39:31 +0000 (16:39 +0800)
browser/api/atom_api_app.cc
browser/api/atom_api_app.h
browser/api/lib/app.coffee
browser/browser.h
browser/browser_mac.mm

index 62ccc22..51a1362 100644 (file)
@@ -169,6 +169,12 @@ v8::Handle<v8::Value> App::DockSetBadgeText(const v8::Arguments& args) {
   return v8::Undefined();
 }
 
+// static
+v8::Handle<v8::Value> App::DockGetBadgeText(const v8::Arguments& args) {
+  std::string text(Browser::Get()->DockGetBadgeText());
+  return v8::String::New(text.data(), text.size());
+}
+
 #endif  // defined(OS_MACOSX)
 
 // static
@@ -194,6 +200,7 @@ void App::Initialize(v8::Handle<v8::Object> target) {
   NODE_SET_METHOD(target, "dockBounce", DockBounce);
   NODE_SET_METHOD(target, "dockCancelBounce", DockCancelBounce);
   NODE_SET_METHOD(target, "dockSetBadgeText", DockSetBadgeText);
+  NODE_SET_METHOD(target, "dockGetBadgeText", DockGetBadgeText);
 #endif  // defined(OS_MACOSX)
 }
 
index 674b229..04b70eb 100644 (file)
@@ -47,6 +47,7 @@ class App : public EventEmitter,
   static v8::Handle<v8::Value> DockBounce(const v8::Arguments& args);
   static v8::Handle<v8::Value> DockCancelBounce(const v8::Arguments& args);
   static v8::Handle<v8::Value> DockSetBadgeText(const v8::Arguments& args);
+  static v8::Handle<v8::Value> DockGetBadgeText(const v8::Arguments& args);
 #endif  // defined(OS_MACOSX)
 
   DISALLOW_COPY_AND_ASSIGN(App);
index a1c418e..0960db2 100644 (file)
@@ -18,6 +18,7 @@ if process.platform is 'darwin'
     bounce: (type = 'informational') -> bindings.dockBounce type
     cancelBounce: bindings.dockCancelBounce
     setBadge: bindings.dockSetBadgeText
+    getBadge: bindings.dockGetBadgeText
 
 # Only one App object pemitted.
 module.exports = app
index 15ab9ce..c715dfe 100644 (file)
@@ -42,8 +42,9 @@ class Browser : public WindowListObserver {
   int DockBounce(BounceType type);
   void DockCancelBounce(int request_id);
 
-  // Set dock's badge text.
+  // Set/Get dock's badge text.
   void DockSetBadgeText(const std::string& label);
+  std::string DockGetBadgeText();
 #endif  // defined(OS_MACOSX)
 
   // Tell the application to open a file.
index c907265..95ce57e 100644 (file)
@@ -42,4 +42,9 @@ void Browser::DockSetBadgeText(const std::string& label) {
   [tile setBadgeLabel:base::SysUTF8ToNSString(label)];
 }
 
+std::string Browser::DockGetBadgeText() {
+  NSDockTile *tile = [[AtomApplication sharedApplication] dockTile];
+  return base::SysNSStringToUTF8([tile badgeLabel]);
+}
+
 }  // namespace atom