Bug 1159490 - Allow cut/copy event dispatch unconditionally in HTML documents. r=neil

This commit is contained in:
Michael Layzell 2015-05-13 08:44:00 +02:00
Родитель c13b8f3ee6
Коммит 4c5c129216
8 изменённых файлов: 69 добавлений и 53 удалений

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

@ -357,8 +357,8 @@ function runTest(testNum) {
// Context menu for textarea before spell check initialization finishes
checkContextMenu(["context-undo", false,
"---", null,
"context-cut", false,
"context-copy", false,
"context-cut", true,
"context-copy", true,
"context-paste", null,
"context-delete", false,
"---", null,
@ -377,8 +377,8 @@ function runTest(testNum) {
"---", null,
"context-undo", false,
"---", null,
"context-cut", false,
"context-copy", false,
"context-cut", true,
"context-copy", true,
"context-paste", null, // ignore clipboard state
"context-delete", false,
"---", null,
@ -409,8 +409,8 @@ function runTest(testNum) {
"---", null,
"context-undo", false,
"---", null,
"context-cut", false,
"context-copy", false,
"context-cut", true,
"context-copy", true,
"context-paste", null, // ignore clipboard state
"context-delete", false,
"---", null,
@ -434,8 +434,8 @@ function runTest(testNum) {
"---", null,
"context-undo", false,
"---", null,
"context-cut", false,
"context-copy", false,
"context-cut", true,
"context-copy", true,
"context-paste", null, // ignore clipboard state
"context-delete", false,
"---", null,
@ -650,8 +650,8 @@ function runTest(testNum) {
// Context menu for selected text in input[type="password"]
checkContextMenu(["context-undo", false,
"---", null,
"context-cut", false,
"context-copy", false,
"context-cut", true,
"context-copy", true,
"context-paste", null, // ignore clipboard state
"context-delete", true,
"---", null,
@ -743,8 +743,8 @@ function runTest(testNum) {
// Context menu for text input field with spellcheck=false
checkContextMenu(["context-undo", false,
"---", null,
"context-cut", false,
"context-copy", false,
"context-cut", true,
"context-copy", true,
"context-paste", null, // ignore clipboard state
"context-delete", false,
"---", null,

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

@ -40,8 +40,8 @@ function runTest(testNum) {
// Context menu for text input field.
checkContextMenu(["context-undo", false,
"---", null,
"context-cut", false,
"context-copy", false,
"context-cut", true,
"context-copy", true,
"context-paste", null, // ignore clipboard state
"context-delete", false,
"---", null,
@ -61,8 +61,8 @@ function runTest(testNum) {
// Context menu for spell-check input.
checkContextMenu(["context-undo", value,
"---", null,
"context-cut", value,
"context-copy", value,
"context-cut", true,
"context-copy", true,
"context-paste", null, // ignore clipboard state
"context-delete", value,
"---", null,
@ -90,8 +90,8 @@ function runTest(testNum) {
"---", null,
"context-undo", value,
"---", null,
"context-cut", value,
"context-copy", value,
"context-cut", true,
"context-copy", true,
"context-paste", null, // ignore clipboard state
"context-delete", value,
"---", null,
@ -115,8 +115,8 @@ function runTest(testNum) {
// Context menu for spell-check input with a known word.
checkContextMenu(["context-undo", value,
"---", null,
"context-cut", value,
"context-copy", value,
"context-cut", true,
"context-copy", true,
"context-paste", null, // ignore clipboard state
"context-delete", value,
"---", null,
@ -139,8 +139,8 @@ function runTest(testNum) {
// Context menu for disabled input.
checkContextMenu(["context-undo", false,
"---", null,
"context-cut", false,
"context-copy", false,
"context-cut", true,
"context-copy", true,
"context-paste", null, // ignore clipboard state
"context-delete", false,
"---", null,
@ -157,15 +157,11 @@ function runTest(testNum) {
break;
case 7: // password
case 8: // email
case 9: // url
case 10: // tel
case 11: // type='number'
// Context menu for tel, password, email, url and number input fields.
// Context menu for password input fields.
checkContextMenu(["context-undo", false,
"---", null,
"context-cut", false,
"context-copy", false,
"context-cut", true,
"context-copy", true,
"context-paste", null, // ignore clipboard state
"context-delete", false,
"---", null,
@ -175,9 +171,30 @@ function runTest(testNum) {
closeContextMenu();
if (testNum == 7) {
input.type = 'email';
} else if (testNum == 8) {
openContextMenuFor(input); // Invoke context menu for next test.
break;
case 8: // email
case 9: // url
case 10: // tel
case 11: // type='number'
// Context menu for tel, email, url and number input fields.
checkContextMenu(["context-undo", false,
"---", null,
"context-cut", true,
"context-copy", true,
"context-paste", null, // ignore clipboard state
"context-delete", false,
"---", null,
"context-selectall", false,
"---", null,
"context-inspect", true]);
closeContextMenu();
if (testNum == 8) {
input.type = 'url';
} else if (testNum == 9) {
input.type = 'tel';
@ -228,8 +245,8 @@ function runTest(testNum) {
// Context menu for search input fields.
checkContextMenu(["context-undo", false,
"---", null,
"context-cut", false,
"context-copy", false,
"context-cut", true,
"context-copy", true,
"context-paste", null, // ignore clipboard state
"context-delete", false,
"---", null,
@ -257,8 +274,8 @@ function runTest(testNum) {
// Context menu for a read-only input.
checkContextMenu(["context-undo", false,
"---", null,
"context-cut", false,
"context-copy", false,
"context-cut", true,
"context-copy", true,
"context-paste", null, // ignore clipboard state
"context-delete", false,
"---", null,

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

@ -19,7 +19,7 @@ add_task(function() {
let copyButton = document.getElementById("copy-button");
ok(copyButton, "Copy button exists in Panel Menu");
is(copyButton.getAttribute("disabled"), "true", "Copy button is initially disabled");
ok(!copyButton.getAttribute("disabled"), "Copy button is initially enabled");
// copy text from URL bar
gURLBar.value = testText;
@ -28,7 +28,7 @@ add_task(function() {
yield PanelUI.show();
info("Menu panel was opened");
ok(!copyButton.hasAttribute("disabled"), "Copy button gets enabled");
ok(!copyButton.hasAttribute("disabled"), "Copy button is enabled when selecting");
copyButton.click();
is(gURLBar.value, testText, "Selected text is unaltered when clicking copy");

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

@ -18,7 +18,7 @@ add_task(function() {
let cutButton = document.getElementById("cut-button");
ok(cutButton, "Cut button exists in Panel Menu");
ok(cutButton.getAttribute("disabled"), "Cut button is disabled");
ok(!cutButton.hasAttribute("disabled"), "Cut button is enabled");
// cut text from URL bar
gURLBar.value = testText;
@ -27,7 +27,7 @@ add_task(function() {
yield PanelUI.show();
info("Menu panel was opened");
ok(!cutButton.hasAttribute("disabled"), "Cut button gets enabled");
ok(!cutButton.hasAttribute("disabled"), "Cut button is enabled when selecting");
cutButton.click();
is(gURLBar.value, "", "Selected text is removed from source when clicking on cut");

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

@ -119,7 +119,7 @@ function runTests()
};
let firstShow = function() {
ok(cutItem.hasAttribute("disabled"), "cut menuitem is disabled");
ok(!cutItem.hasAttribute("disabled"), "cut menuitem is enabled");
closeMenu(firstHide);
};
@ -149,7 +149,7 @@ function runTests()
};
let showAfterCut = function() {
ok(cutItem.hasAttribute("disabled"), "cut menuitem is disabled after cut");
ok(!cutItem.hasAttribute("disabled"), "cut menuitem is enabled after cut");
ok(!pasteItem.hasAttribute("disabled"), "paste menuitem is enabled after cut");
closeMenu(hideAfterCut);
};
@ -167,7 +167,7 @@ function runTests()
};
let showAfterPaste = function() {
ok(cutItem.hasAttribute("disabled"), "cut menuitem is disabled after paste");
ok(!cutItem.hasAttribute("disabled"), "cut menuitem is enabled after paste");
ok(!pasteItem.hasAttribute("disabled"), "paste menuitem is enabled after paste");
closeMenu(hideAfterPaste);
};

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

@ -17,8 +17,7 @@ function goUpdateGlobalEditMenuItems()
goUpdateCommand("cmd_undo");
goUpdateCommand("cmd_redo");
goUpdateCommand("cmd_cut");
goUpdateCommand("cmd_copy");
// don't update the cmd_cut or cmd_copy items - as we want them to always be enabled
goUpdateCommand("cmd_paste");
goUpdateCommand("cmd_selectAll");
goUpdateCommand("cmd_delete");

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

@ -93,7 +93,7 @@ function goDoCommand(aCommand)
try {
var controller = top.document.commandDispatcher
.getControllerForCommand(aCommand);
if (controller && controller.isCommandEnabled(aCommand))
if (controller)
controller.doCommand(aCommand);
}
catch (e) {

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

@ -19,15 +19,15 @@
<script type="application/javascript"
src="chrome://global/content/globalOverlay.js"/>
<script type="application/javascript"><![CDATA[
// Without the fix for bug 366992, the copy command would be enabled
// Without the fix for bug 366992, the delete command would be enabled
// for the textbox even though the textbox's controller for this command
// disables it.
var gShouldNotBeReachedController = {
supportsCommand: function(aCommand) {
return aCommand == "cmd_copy";
return aCommand == "cmd_delete";
},
isCommandEnabled: function(aCommand) {
return aCommand == "cmd_copy";
return aCommand == "cmd_delete";
},
doCommand: function(aCommand) { }
}
@ -43,10 +43,10 @@
function onLoad() {
document.getElementById("textbox").focus();
var copyDisabled = document.getElementById("cmd_copy")
var deleteDisabled = document.getElementById("cmd_delete")
.getAttribute("disabled") == "true";
ok(copyDisabled,
"cmd_copy should be disabled when the empty textbox is focused");
ok(deleteDisabled,
"cmd_delete should be disabled when the empty textbox is focused");
finish();
}