Bug 1198522 - Separate customized and sys cmd menu items. r=kanru

Use a different array to store 'copy-image' and 'copy-link' menu items.
This commit is contained in:
Boris Chiou 2015-09-04 00:52:00 +02:00
Родитель ec77469e00
Коммит a637c0b974
2 изменённых файлов: 19 добавлений и 5 удалений

Просмотреть файл

@ -1258,7 +1258,7 @@ BrowserElementChild.prototype = {
},
_buildMenuObj: function(menu, idPrefix, copyableElements) {
var menuObj = {type: 'menu', items: []};
var menuObj = {type: 'menu', items: [], sysItems: []};
// Customized context menu
if (menu) {
this._maybeCopyAttribute(menu, menuObj, 'label');
@ -1280,11 +1280,11 @@ BrowserElementChild.prototype = {
// put together with other image options if elem is an image link.
// "Copy Link" menu item
if (copyableElements.link) {
menuObj.items.push({id: 'copy-link'});
menuObj.sysItems.push({id: 'copy-link'});
}
// "Copy Image" menu item
if (copyableElements.image) {
menuObj.items.push({id: 'copy-image'});
menuObj.sysItems.push({id: 'copy-image'});
}
return menuObj;

Просмотреть файл

@ -24,7 +24,12 @@ function checkEmptyContextMenu() {
function checkInnerContextMenu() {
sendContextMenuTo('#inner-link', function onContextMenu(detail) {
is(detail.systemTargets.length, 1, 'Includes anchor data');
is(detail.contextmenu.items.length, 3, 'Inner clicks trigger correct menu');
is(detail.contextmenu.items.length, 2, 'Inner clicks trigger correct customized menu');
is(detail.contextmenu.items[0].label, 'foo', 'Customized menu has a "foo" menu item');
is(detail.contextmenu.items[1].label, 'bar', 'Customized menu has a "bar" menu item');
is(detail.contextmenu.sysItems.length, 1, 'Inner clicks trigger correct sys cmd menu');
is(detail.contextmenu.sysItems[0].id, 'copy-link', '#inner-link has a copy-link menu item');
var target = detail.systemTargets[0];
is(target.nodeName, 'A', 'Reports correct nodeName');
is(target.data.uri, 'foo.html', 'Reports correct uri');
@ -47,9 +52,16 @@ function checkNestedContextMenu() {
var innerMenu = detail.contextmenu.items.filter(function(x) {
return x.type === 'menu';
});
is(detail.systemTargets.length, 2, 'Includes anchor and img data');
is(detail.systemTargets.length, 2, 'Includes two systemTargets');
is(detail.systemTargets[0].nodeName, 'IMG', 'Includes "IMG" node');
is(detail.systemTargets[0].data.uri, 'example.png', 'Img data has the correct uri');
is(detail.systemTargets[1].nodeName, 'A', 'Includes "A" node');
is(detail.systemTargets[1].data.uri, 'bar.html', 'Anchor has the correct uri');
ok(innerMenu.length > 0, 'Menu contains a nested menu');
is(detail.contextmenu.sysItems.length, 2, 'Sys cmd menu has the correct # of menu items')
is(detail.contextmenu.sysItems[0].id, 'copy-link', 'Has a copy-link menu item');
is(detail.contextmenu.sysItems[1].id, 'copy-image', 'Has a copy-image menu item');
checkPreviousContextMenuHandler();
});
}
@ -131,6 +143,8 @@ function checkImageContextMenu() {
var target = detail.systemTargets[0];
is(target.nodeName, 'IMG', 'Reports correct nodeName');
is(target.data.uri, 'example.png', 'Reports correct uri');
is(detail.contextmenu.sysItems.length, 1, 'Reports correct # of sys cmd menu items');
is(detail.contextmenu.sysItems[0].id, 'copy-image', 'IMG has a copy-image menu item');
checkVideoContextMenu();
}, /* ignorePreventDefault */ true);