зеркало из https://github.com/mozilla/pjs.git
Bug 638106 - CKEditor document should be editable, r=davidb, a=final+
This commit is contained in:
Родитель
2964a61556
Коммит
af994f7d08
|
@ -219,9 +219,8 @@ NotificationController::WillRefresh(mozilla::TimeStamp aTime)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
mTreeConstructedState = eTreeConstructed;
|
mTreeConstructedState = eTreeConstructed;
|
||||||
mDocument->CacheChildrenInSubtree(mDocument);
|
|
||||||
|
|
||||||
mDocument->NotifyOfInitialUpdate();
|
mDocument->NotifyOfInitialUpdate();
|
||||||
|
|
||||||
NS_ASSERTION(mContentInsertions.Length() == 0,
|
NS_ASSERTION(mContentInsertions.Length() == 0,
|
||||||
"Pending content insertions while initial accessible tree isn't created!");
|
"Pending content insertions while initial accessible tree isn't created!");
|
||||||
}
|
}
|
||||||
|
|
|
@ -1503,6 +1503,15 @@ nsDocAccessible::CacheChildren()
|
||||||
void
|
void
|
||||||
nsDocAccessible::NotifyOfInitialUpdate()
|
nsDocAccessible::NotifyOfInitialUpdate()
|
||||||
{
|
{
|
||||||
|
// The content element may be changed before the initial update and then we
|
||||||
|
// miss the notification (since content tree change notifications are ignored
|
||||||
|
// prior to initial update). Make sure the content element is valid.
|
||||||
|
nsIContent* contentElm = nsCoreUtils::GetRoleContent(mDocument);
|
||||||
|
if (contentElm && mContent != contentElm)
|
||||||
|
mContent = contentElm;
|
||||||
|
|
||||||
|
// Build initial tree.
|
||||||
|
CacheChildrenInSubtree(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
@ -283,6 +283,8 @@ nsDocAccessibleWrap::GetNativeWindow() const
|
||||||
void
|
void
|
||||||
nsDocAccessibleWrap::NotifyOfInitialUpdate()
|
nsDocAccessibleWrap::NotifyOfInitialUpdate()
|
||||||
{
|
{
|
||||||
|
nsDocAccessible::NotifyOfInitialUpdate();
|
||||||
|
|
||||||
if (nsWinUtils::IsWindowEmulationEnabled()) {
|
if (nsWinUtils::IsWindowEmulationEnabled()) {
|
||||||
// Create window for tab document.
|
// Create window for tab document.
|
||||||
if (nsWinUtils::IsTabDocument(mDocument)) {
|
if (nsWinUtils::IsTabDocument(mDocument)) {
|
||||||
|
|
|
@ -59,13 +59,14 @@ const EXT_STATE_VERTICAL = nsIAccessibleStates.EXT_STATE_VERTICAL;
|
||||||
* @param aExtraState The extra state bits that are wanted.
|
* @param aExtraState The extra state bits that are wanted.
|
||||||
* @param aAbsentState State bits that are not wanted.
|
* @param aAbsentState State bits that are not wanted.
|
||||||
* @param aAbsentExtraState Extra state bits that are not wanted.
|
* @param aAbsentExtraState Extra state bits that are not wanted.
|
||||||
|
* @param aTestName The test name.
|
||||||
*/
|
*/
|
||||||
function testStates(aAccOrElmOrID, aState, aExtraState, aAbsentState,
|
function testStates(aAccOrElmOrID, aState, aExtraState, aAbsentState,
|
||||||
aAbsentExtraState)
|
aAbsentExtraState, aTestName)
|
||||||
{
|
{
|
||||||
var [state, extraState] = getStates(aAccOrElmOrID);
|
var [state, extraState] = getStates(aAccOrElmOrID);
|
||||||
|
|
||||||
var id = prettyName(aAccOrElmOrID);
|
var id = prettyName(aAccOrElmOrID) + (aTestName ? " [" + aTestName + "]": "");
|
||||||
|
|
||||||
// Primary test.
|
// Primary test.
|
||||||
isState(state & aState, aState, false,
|
isState(state & aState, aState, false,
|
||||||
|
|
|
@ -45,15 +45,13 @@ relativesrcdir = accessible/states
|
||||||
include $(DEPTH)/config/autoconf.mk
|
include $(DEPTH)/config/autoconf.mk
|
||||||
include $(topsrcdir)/config/rules.mk
|
include $(topsrcdir)/config/rules.mk
|
||||||
|
|
||||||
# temporarily disabled test (bug 562328)
|
|
||||||
# test_frames.html \
|
|
||||||
|
|
||||||
_TEST_FILES =\
|
_TEST_FILES =\
|
||||||
test_aria.html \
|
test_aria.html \
|
||||||
test_aria_imgmap.html \
|
test_aria_imgmap.html \
|
||||||
test_doc.html \
|
test_doc.html \
|
||||||
test_docarticle.html \
|
test_docarticle.html \
|
||||||
test_editablebody.html \
|
test_editablebody.html \
|
||||||
|
test_frames.html \
|
||||||
test_inputs.html \
|
test_inputs.html \
|
||||||
test_inputs.xul \
|
test_inputs.xul \
|
||||||
test_link.html \
|
test_link.html \
|
||||||
|
@ -63,6 +61,7 @@ _TEST_FILES =\
|
||||||
z_frames_article.html \
|
z_frames_article.html \
|
||||||
z_frames_checkbox.html \
|
z_frames_checkbox.html \
|
||||||
z_frames_textbox.html \
|
z_frames_textbox.html \
|
||||||
|
z_frames_update.html \
|
||||||
$(NULL)
|
$(NULL)
|
||||||
|
|
||||||
libs:: $(_TEST_FILES)
|
libs:: $(_TEST_FILES)
|
||||||
|
|
|
@ -84,5 +84,6 @@
|
||||||
|
|
||||||
<div id="document" role="document">document</div>
|
<div id="document" role="document">document</div>
|
||||||
<div id="editable_document" role="document" contentEditable="true">editable document</doc>
|
<div id="editable_document" role="document" contentEditable="true">editable document</doc>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -24,22 +24,29 @@
|
||||||
frameDocCheckbox = document.getElementById("frame_doc_checkbox").contentDocument;
|
frameDocCheckbox = document.getElementById("frame_doc_checkbox").contentDocument;
|
||||||
frameDocTextbox = document.getElementById("frame_doc_textbox").contentDocument;
|
frameDocTextbox = document.getElementById("frame_doc_textbox").contentDocument;
|
||||||
|
|
||||||
testStates(frameDoc, STATE_READONLY);
|
testStates(frameDoc, STATE_READONLY, 0, 0, 0, "test1: frameDoc");
|
||||||
testStates(frameDocArticle, STATE_READONLY);
|
testStates(frameDocArticle, STATE_READONLY, 0, 0, 0, "test1: frameDocArticle");
|
||||||
testStates(frameDocCheckbox, 0, 0, STATE_READONLY);
|
testStates(frameDocCheckbox, 0, 0, STATE_READONLY, 0, "test1: frameDocCheckbox");
|
||||||
testStates(frameDocTextbox, 0, EXT_STATE_EDITABLE);
|
testStates(frameDocTextbox, 0, EXT_STATE_EDITABLE, 0, 0, "test1: frameDocTextbox");
|
||||||
|
|
||||||
frameDoc.designMode = "on";
|
frameDoc.designMode = "on";
|
||||||
testStates(frameDoc, 0, EXT_STATE_EDITABLE);
|
testStates(frameDoc, 0, EXT_STATE_EDITABLE, 0, 0, "test2: frameDoc");
|
||||||
testStates(frameDocArticle, STATE_READONLY);
|
testStates(frameDocArticle, STATE_READONLY, 0, 0, 0, "test2: frameDocArticle");
|
||||||
testStates(frameDocCheckbox, 0, 0, STATE_READONLY);
|
testStates(frameDocCheckbox, 0, 0, STATE_READONLY, 0, "test2: frameDocCheckbox");
|
||||||
testStates(frameDocTextbox, 0, EXT_STATE_EDITABLE);
|
testStates(frameDocTextbox, 0, EXT_STATE_EDITABLE, 0, 0, "test2: frameDocTextbox");
|
||||||
|
|
||||||
frameDocArticle.designMode = "on";
|
frameDocArticle.designMode = "on";
|
||||||
testStates(frameDocArticle, 0, EXT_STATE_EDITABLE);
|
testStates(frameDocArticle, 0, EXT_STATE_EDITABLE, 0, 0, "test3: frameDocArticle");
|
||||||
|
|
||||||
frameDocCheckbox.designMode = "on";
|
frameDocCheckbox.designMode = "on";
|
||||||
testStates(frameDocCheckbox, 0, 0, STATE_READONLY);
|
testStates(frameDocCheckbox, 0, 0, STATE_READONLY, 0, "test4: frameDocCheckbox");
|
||||||
|
|
||||||
|
// Replace iframe document body before the document accessible tree is
|
||||||
|
// created. Check the states are updated for new body.
|
||||||
|
var frameUpdateDoc =
|
||||||
|
document.getElementById("frame_updatedoc").contentDocument;
|
||||||
|
testStates(frameUpdateDoc, 0, EXT_STATE_EDITABLE,
|
||||||
|
STATE_READONLY, EXT_STATE_STALE, "test5: frameUpdateDoc");
|
||||||
|
|
||||||
SimpleTest.finish();
|
SimpleTest.finish();
|
||||||
}
|
}
|
||||||
|
@ -56,6 +63,11 @@
|
||||||
title="Expose non-editable documents as readonly, regardless of role">
|
title="Expose non-editable documents as readonly, regardless of role">
|
||||||
Mozilla Bug 467387
|
Mozilla Bug 467387
|
||||||
</a>
|
</a>
|
||||||
|
<a target="_blank"
|
||||||
|
href="https://bugzilla.mozilla.org/show_bug.cgi?id=638106"
|
||||||
|
title="CKEditor document should be editable">
|
||||||
|
Mozilla Bug 638106
|
||||||
|
</a>
|
||||||
<p id="display"></p>
|
<p id="display"></p>
|
||||||
<div id="content" style="display: none"></div>
|
<div id="content" style="display: none"></div>
|
||||||
<pre id="test">
|
<pre id="test">
|
||||||
|
@ -65,5 +77,6 @@
|
||||||
<iframe id="frame_doc_article" src="z_frames_article.html"></iframe>
|
<iframe id="frame_doc_article" src="z_frames_article.html"></iframe>
|
||||||
<iframe id="frame_doc_checkbox" src="z_frames_checkbox.html"></iframe>
|
<iframe id="frame_doc_checkbox" src="z_frames_checkbox.html"></iframe>
|
||||||
<iframe id="frame_doc_textbox" src="z_frames_textbox.html"></iframe>
|
<iframe id="frame_doc_textbox" src="z_frames_textbox.html"></iframe>
|
||||||
|
<iframe id="frame_updatedoc" src="z_frames_update.html"></iframe>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<script>
|
||||||
|
function replaceBody()
|
||||||
|
{
|
||||||
|
var accRetrieval = Components.classes["@mozilla.org/accessibleRetrieval;1"].
|
||||||
|
getService(Components.interfaces.nsIAccessibleRetrieval);
|
||||||
|
accRetrieval.getAccessibleFor(document);
|
||||||
|
|
||||||
|
var newBody = document.createElement("body");
|
||||||
|
newBody.setAttribute("contentEditable", "true");
|
||||||
|
newBody.textContent = "New Hello";
|
||||||
|
document.documentElement.replaceChild(newBody, document.body);
|
||||||
|
getComputedStyle(newBody, "").color;
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body onload="replaceBody();">
|
||||||
|
OLD hello
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
Загрузка…
Ссылка в новой задаче