зеркало из https://github.com/mozilla/gecko-dev.git
merge mozilla-inbound to mozilla-central
This commit is contained in:
Коммит
bdd365c1f1
|
@ -226,9 +226,7 @@ EventQueue::CoalesceReorderEvents(AccEvent* aTailEvent)
|
|||
|
||||
// If tailEvent contains thisEvent
|
||||
// then
|
||||
// if show of tailEvent contains a grand parent of thisEvent
|
||||
// then assert
|
||||
// else if hide of tailEvent contains a grand parent of thisEvent
|
||||
// if show or hide of tailEvent contains a grand parent of thisEvent
|
||||
// then ignore thisEvent and its show and hide events
|
||||
// otherwise ignore thisEvent but not its show and hide events
|
||||
Accessible* thisParent = thisEvent->mAccessible;
|
||||
|
@ -237,9 +235,12 @@ EventQueue::CoalesceReorderEvents(AccEvent* aTailEvent)
|
|||
AccReorderEvent* tailReorder = downcast_accEvent(aTailEvent);
|
||||
uint32_t eventType = tailReorder->IsShowHideEventTarget(thisParent);
|
||||
|
||||
if (eventType == nsIAccessibleEvent::EVENT_SHOW) {
|
||||
NS_ERROR("Accessible tree was created after it was modified! Huh?");
|
||||
} else if (eventType == nsIAccessibleEvent::EVENT_HIDE) {
|
||||
// Sometimes InvalidateChildren() and
|
||||
// DocAccessible::CacheChildrenInSubtree() can conspire to reparent an
|
||||
// accessible in this case no need for mutation events. Se bug 883708
|
||||
// for details.
|
||||
if (eventType == nsIAccessibleEvent::EVENT_SHOW ||
|
||||
eventType == nsIAccessibleEvent::EVENT_HIDE) {
|
||||
AccReorderEvent* thisReorder = downcast_accEvent(thisEvent);
|
||||
thisReorder->DoNotEmitAll();
|
||||
} else {
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
[test_ariadialog.html]
|
||||
[test_bug852150.xhtml]
|
||||
[test_bug883708.xhtml]
|
||||
[test_bug895082.html]
|
||||
[test_canvas.html]
|
||||
[test_colorpicker.xul]
|
||||
|
|
|
@ -0,0 +1,33 @@
|
|||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<script type="application/javascript"
|
||||
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
|
||||
|
||||
<script>
|
||||
|
||||
function boom()
|
||||
{
|
||||
var newSpan = document.createElementNS("http://www.w3.org/1999/xhtml", "span");
|
||||
c.insertBefore(newSpan, d);
|
||||
a.style.visibility = "visible";
|
||||
ok(true, "test didn't crash or assert");
|
||||
SimpleTest.finish();
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body onload="boom();">
|
||||
<a target="_blank"
|
||||
title="test reparenting accessible subtree when inaccessible element becomes accessible"
|
||||
href="https://bugzilla.mozilla.org/show_bug.cgi?id=883708">
|
||||
Mozilla Bug 883708
|
||||
</a>
|
||||
|
||||
<p id="display"></p>
|
||||
<div id="content" style="display: none"></div>
|
||||
<pre id="test">
|
||||
</pre>
|
||||
|
||||
<div style="visibility: collapse;" id="a"><div style="float: right; visibility: visible;"><div id="c"><td id="d"></td></div></div></div></body>
|
||||
</html>
|
|
@ -1733,15 +1733,6 @@ RuntimeService::Init()
|
|||
MAX_WORKERS_PER_DOMAIN);
|
||||
gMaxWorkersPerDomain = std::max(0, maxPerDomain);
|
||||
|
||||
mDetectorName = Preferences::GetLocalizedCString("intl.charset.detector");
|
||||
|
||||
nsCOMPtr<nsIPlatformCharset> platformCharset =
|
||||
do_GetService(NS_PLATFORMCHARSET_CONTRACTID, &rv);
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
rv = platformCharset->GetCharset(kPlatformCharsetSel_PlainTextInFile,
|
||||
mSystemCharset);
|
||||
}
|
||||
|
||||
rv = InitOSFileConstants();
|
||||
if (NS_FAILED(rv)) {
|
||||
return rv;
|
||||
|
|
|
@ -96,9 +96,6 @@ private:
|
|||
// Only used on the main thread.
|
||||
nsCOMPtr<nsITimer> mIdleThreadTimer;
|
||||
|
||||
nsCString mDetectorName;
|
||||
nsCString mSystemCharset;
|
||||
|
||||
static JSSettings sDefaultJSSettings;
|
||||
static bool sDefaultPreferences[WORKERPREF_COUNT];
|
||||
|
||||
|
@ -153,18 +150,6 @@ public:
|
|||
void
|
||||
ForgetSharedWorker(WorkerPrivate* aWorkerPrivate);
|
||||
|
||||
const nsACString&
|
||||
GetDetectorName() const
|
||||
{
|
||||
return mDetectorName;
|
||||
}
|
||||
|
||||
const nsACString&
|
||||
GetSystemCharset() const
|
||||
{
|
||||
return mSystemCharset;
|
||||
}
|
||||
|
||||
const NavigatorStrings&
|
||||
GetNavigatorStrings() const
|
||||
{
|
||||
|
|
|
@ -7819,10 +7819,13 @@ GetTemplateObjectForNative(JSContext *cx, HandleScript script, jsbytecode *pc,
|
|||
// done to provide templates to Ion for inlining these natives later on.
|
||||
|
||||
if (native == js_Array) {
|
||||
// Note: the template array won't be used if its length is inaccurately
|
||||
// computed here. (We allocate here because compilation may occur on a
|
||||
// separate thread where allocation is impossible.)
|
||||
size_t count = 0;
|
||||
if (args.hasDefined(1))
|
||||
if (args.length() != 1)
|
||||
count = args.length();
|
||||
else if (args.hasDefined(0) && args[0].isInt32() && args[0].toInt32() > 0)
|
||||
else if (args.length() == 1 && args[0].isInt32() && args[0].toInt32() >= 0)
|
||||
count = args[0].toInt32();
|
||||
res.set(NewDenseUnallocatedArray(cx, count, nullptr, TenuredObject));
|
||||
if (!res)
|
||||
|
|
|
@ -122,8 +122,6 @@ void CacheIOThread::ThreadFunc()
|
|||
|
||||
lock.NotifyAll();
|
||||
|
||||
static PRIntervalTime const waitTime = PR_MillisecondsToInterval(5000);
|
||||
|
||||
do {
|
||||
loopStart:
|
||||
// Reset the lowest level now, so that we can detect a new event on
|
||||
|
@ -160,14 +158,17 @@ loopStart:
|
|||
}
|
||||
|
||||
if (EventsPending())
|
||||
goto loopStart;
|
||||
continue;
|
||||
|
||||
lock.Wait(waitTime);
|
||||
if (mShutdown)
|
||||
break;
|
||||
|
||||
lock.Wait(PR_INTERVAL_NO_TIMEOUT);
|
||||
|
||||
if (EventsPending())
|
||||
goto loopStart;
|
||||
continue;
|
||||
|
||||
} while (!mShutdown);
|
||||
} while (true);
|
||||
|
||||
MOZ_ASSERT(!EventsPending());
|
||||
} // lock
|
||||
|
|
Загрузка…
Ссылка в новой задаче