From c3637454c4f98b705ef5f696bd85d2cda6b5a124 Mon Sep 17 00:00:00 2001 From: Rowell Cruz Date: Mon, 10 Dec 2012 17:53:56 -0500 Subject: [PATCH] Exposed methods for disabling/enabling platform menu items in the context menu --- ext/ui.contextmenu/client.js | 13 +++++++++++++ ext/ui.contextmenu/index.js | 19 +++++++++++++++++++ test/unit/ext/ui.contextmenu/client.js | 21 ++++++++++++++++++++- test/unit/ext/ui.contextmenu/index.js | 25 +++++++++++++++++++++++++ 4 files changed, 77 insertions(+), 1 deletion(-) diff --git a/ext/ui.contextmenu/client.js b/ext/ui.contextmenu/client.js index c43a6093..8c63e405 100644 --- a/ext/ui.contextmenu/client.js +++ b/ext/ui.contextmenu/client.js @@ -119,6 +119,18 @@ contextmenu.defineCustomContext = function (customContext, options) { window.webworks.execAsync(_ID, 'defineCustomContext', {context: customContext, options: options}); }; +contextmenu.disablePlatformItem = function (context, actionId) { + return window.webworks.execSync(_ID, 'disablePlatformItem', {context: context, actionId: actionId}); +}; + +contextmenu.enablePlatformItem = function (context, actionId) { + return window.webworks.execSync(_ID, 'enablePlatformItem', {context: context, actionId: actionId}); +}; + +contextmenu.listDisabledPlatformItems = function () { + return window.webworks.execSync(_ID, 'listDisabledPlatformItems'); +}; + defineReadOnlyContext("ALL"); defineReadOnlyContext("LINK"); defineReadOnlyContext("IMAGE_LINK"); @@ -138,5 +150,6 @@ defineReadOnlyActions("SAVE_IMAGE", "SaveImage"); defineReadOnlyActions("COPY_IMAGE_LINK", "CopyImageLink"); defineReadOnlyActions("VIEW_IMAGE", "ViewImage"); defineReadOnlyActions("INSPECT_ELEMENT", "InspectElement"); +defineReadOnlyActions("MENU_SERVICE", "MenuService"); module.exports = contextmenu; diff --git a/ext/ui.contextmenu/index.js b/ext/ui.contextmenu/index.js index 3db2df2e..9384e21f 100644 --- a/ext/ui.contextmenu/index.js +++ b/ext/ui.contextmenu/index.js @@ -74,12 +74,31 @@ function defineCustomContext(success, fail, args, env) { _overlayWebView.contextMenu.defineCustomContext(args.context, args.options); } +function disablePlatformItem(success, fail, args) { + args.context = JSON.parse(decodeURIComponent(args.context)); + args.actionId = JSON.parse(decodeURIComponent(args.actionId)); + success(_overlayWebView.contextMenu.disablePlatformItem(args.context, args.actionId)); +} + +function enablePlatformItem(success, fail, args) { + args.context = JSON.parse(decodeURIComponent(args.context)); + args.actionId = JSON.parse(decodeURIComponent(args.actionId)); + success(_overlayWebView.contextMenu.enablePlatformItem(args.context, args.actionId)); +} + +function listDisabledPlatformItems(success) { + success(_overlayWebView.contextMenu.listDisabledPlatformItems()); +} + contextmenu = { enabled: enabled, addItem: addItem, removeItem: removeItem, overrideItem: overrideItem, clearOverride: clearOverride, + disablePlatformItem: disablePlatformItem, + enablePlatformItem: enablePlatformItem, + listDisabledPlatformItems: listDisabledPlatformItems, defineCustomContext: defineCustomContext }; diff --git a/test/unit/ext/ui.contextmenu/client.js b/test/unit/ext/ui.contextmenu/client.js index 81b1b194..843dc219 100644 --- a/test/unit/ext/ui.contextmenu/client.js +++ b/test/unit/ext/ui.contextmenu/client.js @@ -72,12 +72,12 @@ describe("blackberry.ui.contextmenu client", function () { expect(client.ACTION_COPY_LINK).toEqual("CopyLink"); expect(client.ACTION_CUT).toEqual("Cut"); expect(client.ACTION_INSPECT_ELEMENT).toEqual("InspectElement"); - expect(client.ACTION_OPEN_LINK).toEqual("OpenLink"); expect(client.ACTION_PASTE).toEqual("Paste"); expect(client.ACTION_SAVE_IMAGE).toEqual("SaveImage"); expect(client.ACTION_SAVE_LINK_AS).toEqual("SaveLinkAs"); expect(client.ACTION_VIEW_IMAGE).toEqual("ViewImage"); expect(client.ACTION_SELECT).toEqual("Select"); + expect(client.ACTION_MENU_SERVICE).toEqual("MenuService"); }); it("Cannot add a menu item without a context", function () { @@ -125,4 +125,23 @@ describe("blackberry.ui.contextmenu client", function () { client.clearOverride(actionId); expect(mockedWebworks.execSync).toHaveBeenCalledWith(_ID, 'clearOverride', {actionId: actionId}); }); + + it("can disable a platform provided item", function () { + var context = client.CONTEXT_ALL, + actionId = client.ACTION_OPEN_LINK; + client.disablePlatformItem(context, actionId); + expect(mockedWebworks.execSync).toHaveBeenCalledWith(_ID, 'disablePlatformItem', {context: context, actionId: actionId}); + }); + + it("can enable a disabled platform provided item", function () { + var context = client.CONTEXT_ALL, + actionId = client.ACTION_OPEN_LINK; + client.enablePlatformItem(context, actionId); + expect(mockedWebworks.execSync).toHaveBeenCalledWith(_ID, 'enablePlatformItem', {context: context, actionId: actionId}); + }); + + it("can list the disabled platform provided item", function () { + client.listDisabledPlatformItems(); + expect(mockedWebworks.execSync).toHaveBeenCalledWith(_ID, 'listDisabledPlatformItems'); + }); }); diff --git a/test/unit/ext/ui.contextmenu/index.js b/test/unit/ext/ui.contextmenu/index.js index 1e01be35..ddc3fcac 100644 --- a/test/unit/ext/ui.contextmenu/index.js +++ b/test/unit/ext/ui.contextmenu/index.js @@ -25,6 +25,9 @@ var _extDir = __dirname + "./../../../../ext/", overrideItem: jasmine.createSpy(), clearOverride: jasmine.createSpy(), defineCustomContext: jasmine.createSpy(), + disablePlatformItem: jasmine.createSpy(), + enablePlatformItem: jasmine.createSpy(), + listDisabledPlatformItems: jasmine.createSpy(), enabled : true }, mockedQnx = { @@ -195,4 +198,26 @@ describe("blackberry.ui.contextmenu index", function () { expect(mockedContextMenu.clearOverride).toHaveBeenCalledWith('MenuService-Share'); }); + it("can disable a platform menu item", function () { + var args = { + actionId: encodeURIComponent(JSON.stringify('Paste')), + context: encodeURIComponent(JSON.stringify('INPUT')) + }; + contextmenu.disablePlatformItem(success, fail, args); + expect(mockedContextMenu.disablePlatformItem).toHaveBeenCalledWith(args.context, args.actionId); + }); + + it("can enable a disabled platform menu item", function () { + var args = { + actionId: encodeURIComponent(JSON.stringify('Paste')), + context: encodeURIComponent(JSON.stringify('INPUT')) + }; + contextmenu.enablePlatformItem(success, fail, args); + expect(mockedContextMenu.enablePlatformItem).toHaveBeenCalledWith(args.context, args.actionId); + }); + + it("can list all disabled platform menu items", function () { + contextmenu.listDisabledPlatformItems(success); + expect(mockedContextMenu.listDisabledPlatformItems).toHaveBeenCalled(); + }); });