Skip to content

Commit

Permalink
Merge pull request nwjs#3897 from jtg-gg/nw13_pullrequest
Browse files Browse the repository at this point in the history
Nw13 pullrequest
  • Loading branch information
rogerwang committed Oct 26, 2015
2 parents de4e685 + 791f61d commit 53661e5
Show file tree
Hide file tree
Showing 10 changed files with 632 additions and 16 deletions.
2 changes: 2 additions & 0 deletions nw.gypi
Original file line number Diff line number Diff line change
Expand Up @@ -696,6 +696,8 @@
}],
['OS=="mac"', {
'sources': [
'src/api/nw_window_api_mac.mm',
'src/api/nw_menu_api_mac.mm',
'src/api/menuitem/menuitem_mac.mm',
'src/api/menu/menu_mac.mm',
'src/api/menu/menu_delegate_mac.h',
Expand Down
3 changes: 3 additions & 0 deletions src/api/nw_current_window_internal.idl
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@ namespace nw.currentWindowInternal {
};
interface Functions {
static void showDevTools();
static void setBadgeLabel(DOMString badge);
static void requestAttention(long count);
static void setProgressBar(double progress);
static void capturePageInternal(optional CapturePageOptions options, optional CapturePageCallback callback);
static void clearMenu();
static void setMenu(long id);
Expand Down
4 changes: 3 additions & 1 deletion src/api/nw_menu.idl
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,13 @@ namespace nw.Menu {
static void remove([instanceOf=MenuItem] object item);
static void removeAt(long index);
static void popup(long x, long y);
//static void createMacBuiltin(DOMString appname);
static void createMacBuiltin(DOMString appname);
};
interface Functions {
static object createItem(optional object options);
[nocompile] static object createMenu(optional object options);
[nocompile] static void destroy(long id);
static DOMString getNSStringWithFixup(DOMString msg);
static DOMString getNSStringFWithFixup(DOMString msg, DOMString appName);
};
};
15 changes: 11 additions & 4 deletions src/api/nw_menu_api.cc
Original file line number Diff line number Diff line change
@@ -1,15 +1,11 @@
#include "content/nw/src/api/nw_menu_api.h"

#include "chrome/browser/devtools/devtools_window.h"
#include "chrome/browser/extensions/devtools_util.h"
#include "chrome/browser/extensions/extension_service.h"
#include "content/nw/src/api/menuitem/menuitem.h"
#include "content/nw/src/api/object_manager.h"
#include "content/public/browser/render_view_host.h"
#include "content/public/browser/web_contents.h"
#include "extensions/browser/extension_system.h"
#include "extensions/common/error_utils.h"
#include "ui/base/clipboard/clipboard.h"

using nw::MenuItem;

Expand All @@ -33,4 +29,15 @@ bool NwMenuCreateItemFunction::RunNWSync(base::ListValue* response, std::string*
return true;
}

#ifndef OS_MACOSX
bool NwMenuGetNSStringWithFixupFunction::RunNWSync(base::ListValue* response, std::string* error) {
error_ = "NwMenuGetNSStringWithFixupFunction is only for OSX";
return false;
}

bool NwMenuGetNSStringFWithFixupFunction::RunNWSync(base::ListValue* response, std::string* error) {
error_ = "NwMenuGetNSStringFWithFixupFunction is only for OSX";
return false;
}
#endif
} // namespace extensions
26 changes: 26 additions & 0 deletions src/api/nw_menu_api.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,5 +20,31 @@ class NwMenuCreateItemFunction : public NWSyncExtensionFunction {
DISALLOW_COPY_AND_ASSIGN(NwMenuCreateItemFunction);
};

class NwMenuGetNSStringWithFixupFunction : public NWSyncExtensionFunction {
public:
NwMenuGetNSStringWithFixupFunction(){}
bool RunNWSync(base::ListValue* response, std::string* error) override;

protected:
~NwMenuGetNSStringWithFixupFunction() override {}

DECLARE_EXTENSION_FUNCTION("nw.Menu.getNSStringWithFixup", UNKNOWN)
private:
DISALLOW_COPY_AND_ASSIGN(NwMenuGetNSStringWithFixupFunction);
};

class NwMenuGetNSStringFWithFixupFunction : public NWSyncExtensionFunction {
public:
NwMenuGetNSStringFWithFixupFunction() {}
bool RunNWSync(base::ListValue* response, std::string* error) override;

protected:
~NwMenuGetNSStringFWithFixupFunction() override {}

DECLARE_EXTENSION_FUNCTION("nw.Menu.getNSStringFWithFixup", UNKNOWN)
private:
DISALLOW_COPY_AND_ASSIGN(NwMenuGetNSStringFWithFixupFunction);
};

} // namespace extensions
#endif
75 changes: 75 additions & 0 deletions src/api/nw_menu_api_mac.mm
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
#include "content/nw/src/api/nw_menu_api.h"
#include "base/containers/hash_tables.h"
#include "base/strings/sys_string_conversions.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/grit/generated_resources.h"
#include "ui/base/l10n/l10n_util_mac.h"

namespace extensions {

typedef struct {
std::string msgstr;
int msgid;
} MsgMapEntry;

const MsgMapEntry msg_map[] = {
{ "IDS_ABOUT_MAC", IDS_ABOUT_MAC },
{ "IDS_HIDE_APP_MAC", IDS_HIDE_APP_MAC},
{ "IDS_HIDE_OTHERS_MAC", IDS_HIDE_OTHERS_MAC},
{ "IDS_SHOW_ALL_MAC", IDS_SHOW_ALL_MAC },
{ "IDS_EXIT_MAC", IDS_EXIT_MAC },
{ "IDS_EDIT_MENU_MAC", IDS_EDIT_MENU_MAC },
{ "IDS_EDIT_UNDO_MAC", IDS_EDIT_UNDO_MAC },
{ "IDS_EDIT_REDO_MAC", IDS_EDIT_REDO_MAC },
{ "IDS_CUT_MAC", IDS_CUT_MAC },
{ "IDS_COPY_MAC", IDS_COPY_MAC },
{ "IDS_PASTE_MAC", IDS_PASTE_MAC },
{ "IDS_EDIT_DELETE_MAC", IDS_EDIT_DELETE_MAC },
{ "IDS_EDIT_SELECT_ALL_MAC", IDS_EDIT_SELECT_ALL_MAC },
{ "IDS_WINDOW_MENU_MAC", IDS_WINDOW_MENU_MAC },
{ "IDS_MINIMIZE_WINDOW_MAC", IDS_MINIMIZE_WINDOW_MAC },
{ "IDS_CLOSE_WINDOW_MAC", IDS_CLOSE_WINDOW_MAC },
{ "IDS_ALL_WINDOWS_FRONT_MAC", IDS_ALL_WINDOWS_FRONT_MAC },
};

typedef base::hash_map<std::string, int> MsgIDMap;
MsgIDMap g_msgid_map;
static bool g_msgid_inited = false;

void InitMsgIDMap() {
g_msgid_map.clear();
for (size_t i = 0; i < arraysize(msg_map); i++) {
g_msgid_map.insert(std::make_pair(msg_map[i].msgstr, msg_map[i].msgid));
}
g_msgid_inited = true;
}

bool NwMenuGetNSStringWithFixupFunction::RunNWSync(base::ListValue* response, std::string* error) {
if (!g_msgid_inited) InitMsgIDMap();
std::string msgstr;
EXTENSION_FUNCTION_VALIDATE(args_->GetString(0, &msgstr));
MsgIDMap::iterator it = g_msgid_map.find(msgstr);
if (it != g_msgid_map.end()) {
int msgid = it->second;
response->AppendString(base::SysNSStringToUTF16(l10n_util::GetNSStringWithFixup(msgid)));
return true;
}
return false;
}

bool NwMenuGetNSStringFWithFixupFunction::RunNWSync(base::ListValue* response, std::string* error) {
if (!g_msgid_inited) InitMsgIDMap();
std::string msgstr;
base::string16 appName;
EXTENSION_FUNCTION_VALIDATE(args_->GetString(0, &msgstr));
EXTENSION_FUNCTION_VALIDATE(args_->GetString(1, &appName));
MsgIDMap::iterator it = g_msgid_map.find(msgstr);
if (it != g_msgid_map.end()) {
int msgid = it->second;
response->AppendString(base::SysNSStringToUTF16(l10n_util::GetNSStringFWithFixup(msgid, appName)));
return true;
}
return false;
}

} // namespace extensions
Loading

0 comments on commit 53661e5

Please sign in to comment.