2011-11-01 18:06:48 -07:00
|
|
|
/* vim: set ts=2 et sw=2 tw=80: */
|
|
|
|
/* Any copyright is dedicated to the Public Domain.
|
|
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
|
2012-01-23 07:50:11 -08:00
|
|
|
let tempScope = {}
|
|
|
|
Cu.import("resource:///modules/devtools/CssRuleView.jsm", tempScope);
|
|
|
|
let CssRuleView = tempScope.CssRuleView;
|
|
|
|
let _ElementStyle = tempScope._ElementStyle;
|
|
|
|
let _editableField = tempScope._editableField;
|
2012-03-26 15:26:21 -07:00
|
|
|
let inplaceEditor = tempScope._getInplaceEditorForSpan;
|
2011-11-01 18:06:48 -07:00
|
|
|
|
|
|
|
let doc = content.document;
|
|
|
|
|
|
|
|
function expectDone(aValue, aCommit, aNext)
|
|
|
|
{
|
|
|
|
return function(aDoneValue, aDoneCommit) {
|
|
|
|
dump("aDoneValue: " + aDoneValue + " commit: " + aDoneCommit + "\n");
|
|
|
|
|
|
|
|
is(aDoneValue, aValue, "Should get expected value");
|
|
|
|
is(aDoneCommit, aDoneCommit, "Should get expected commit value");
|
|
|
|
aNext();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function clearBody()
|
|
|
|
{
|
|
|
|
doc.body.innerHTML = "";
|
|
|
|
}
|
|
|
|
|
|
|
|
function createSpan()
|
|
|
|
{
|
|
|
|
let span = doc.createElement("span");
|
|
|
|
span.setAttribute("tabindex", "0");
|
|
|
|
span.textContent = "Edit Me!";
|
|
|
|
doc.body.appendChild(span);
|
|
|
|
return span;
|
|
|
|
}
|
|
|
|
|
|
|
|
function testReturnCommit()
|
|
|
|
{
|
|
|
|
clearBody();
|
|
|
|
let span = createSpan();
|
|
|
|
_editableField({
|
|
|
|
element: span,
|
|
|
|
initial: "explicit initial",
|
|
|
|
start: function() {
|
2012-03-26 15:26:21 -07:00
|
|
|
is(inplaceEditor(span).input.value, "explicit initial", "Explicit initial value should be used.");
|
|
|
|
inplaceEditor(span).input.value = "Test Value";
|
2011-12-16 05:38:45 -08:00
|
|
|
EventUtils.sendKey("return");
|
2011-11-01 18:06:48 -07:00
|
|
|
},
|
|
|
|
done: expectDone("Test Value", true, testBlurCommit)
|
|
|
|
});
|
2012-06-01 15:13:48 -07:00
|
|
|
span.click();
|
2011-11-01 18:06:48 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
function testBlurCommit()
|
|
|
|
{
|
|
|
|
clearBody();
|
|
|
|
let span = createSpan();
|
|
|
|
_editableField({
|
|
|
|
element: span,
|
|
|
|
start: function() {
|
2012-03-26 15:26:21 -07:00
|
|
|
is(inplaceEditor(span).input.value, "Edit Me!", "textContent of the span used.");
|
|
|
|
inplaceEditor(span).input.value = "Test Value";
|
|
|
|
inplaceEditor(span).input.blur();
|
2011-11-01 18:06:48 -07:00
|
|
|
},
|
|
|
|
done: expectDone("Test Value", true, testAdvanceCharCommit)
|
|
|
|
});
|
2012-06-01 15:13:48 -07:00
|
|
|
span.click();
|
2011-11-01 18:06:48 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
function testAdvanceCharCommit()
|
|
|
|
{
|
|
|
|
clearBody();
|
|
|
|
let span = createSpan();
|
|
|
|
_editableField({
|
|
|
|
element: span,
|
|
|
|
advanceChars: ":",
|
|
|
|
start: function() {
|
2012-03-26 15:26:21 -07:00
|
|
|
let input = inplaceEditor(span).input;
|
2011-11-01 18:06:48 -07:00
|
|
|
for each (let ch in "Test:") {
|
2011-12-16 05:38:45 -08:00
|
|
|
EventUtils.sendChar(ch);
|
2011-11-01 18:06:48 -07:00
|
|
|
}
|
|
|
|
},
|
|
|
|
done: expectDone("Test", true, testEscapeCancel)
|
|
|
|
});
|
2012-06-01 15:13:48 -07:00
|
|
|
span.click();
|
2011-11-01 18:06:48 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
function testEscapeCancel()
|
|
|
|
{
|
|
|
|
clearBody();
|
|
|
|
let span = createSpan();
|
|
|
|
_editableField({
|
|
|
|
element: span,
|
|
|
|
initial: "initial text",
|
|
|
|
start: function() {
|
2012-03-26 15:26:21 -07:00
|
|
|
inplaceEditor(span).input.value = "Test Value";
|
2011-12-16 05:38:45 -08:00
|
|
|
EventUtils.sendKey("escape");
|
2011-11-01 18:06:48 -07:00
|
|
|
},
|
|
|
|
done: expectDone("initial text", false, finishTest)
|
|
|
|
});
|
2012-06-01 15:13:48 -07:00
|
|
|
span.click();
|
2011-11-01 18:06:48 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function finishTest()
|
|
|
|
{
|
|
|
|
doc = null;
|
|
|
|
gBrowser.removeCurrentTab();
|
|
|
|
finish();
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function test()
|
|
|
|
{
|
|
|
|
waitForExplicitFinish();
|
|
|
|
gBrowser.selectedTab = gBrowser.addTab();
|
|
|
|
gBrowser.selectedBrowser.addEventListener("load", function(evt) {
|
|
|
|
gBrowser.selectedBrowser.removeEventListener(evt.type, arguments.callee, true);
|
|
|
|
doc = content.document;
|
|
|
|
waitForFocus(testReturnCommit, content);
|
|
|
|
}, true);
|
|
|
|
|
|
|
|
content.location = "data:text/html,inline editor tests";
|
2012-01-23 07:50:11 -08:00
|
|
|
}
|