From 7db1feab2314f93d372d5ccbba016fc1e047f095 Mon Sep 17 00:00:00 2001 From: "bzbarsky%mit.edu" Date: Tue, 7 Feb 2006 22:24:47 +0000 Subject: [PATCH] Fix bug 325991 -- spinning event queues requires more care. r=jst, sr=shaver git-svn-id: svn://10.0.0.236/trunk@189362 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/caps/src/nsScriptSecurityManager.cpp | 7 ++++ mozilla/layout/printing/nsPrintEngine.cpp | 41 -------------------- 2 files changed, 7 insertions(+), 41 deletions(-) diff --git a/mozilla/caps/src/nsScriptSecurityManager.cpp b/mozilla/caps/src/nsScriptSecurityManager.cpp index ea3e77a87b2..85696a51be3 100644 --- a/mozilla/caps/src/nsScriptSecurityManager.cpp +++ b/mozilla/caps/src/nsScriptSecurityManager.cpp @@ -1558,6 +1558,13 @@ nsScriptSecurityManager::CanExecuteScripts(JSContext* cx, //-- See if the current window allows JS execution nsIScriptContext *scriptContext = GetScriptContext(cx); if (!scriptContext) return NS_ERROR_FAILURE; + + if (!scriptContext->GetScriptsEnabled()) { + // No scripting on this context, folks + *result = PR_FALSE; + return NS_OK; + } + nsIScriptGlobalObject *sgo = scriptContext->GetGlobalObject(); if (!sgo) { diff --git a/mozilla/layout/printing/nsPrintEngine.cpp b/mozilla/layout/printing/nsPrintEngine.cpp index c33d9a30340..15d749d5b47 100644 --- a/mozilla/layout/printing/nsPrintEngine.cpp +++ b/mozilla/layout/printing/nsPrintEngine.cpp @@ -2506,46 +2506,6 @@ nsPrintEngine::ReflowDocList(nsPrintObject* aPO, PRBool aSetPixelScale, PRBool a return NS_OK; } -PR_STATIC_CALLBACK(void *) -HandleBarrierEvent(PLEvent *aEvent) -{ - PRBool *b = NS_STATIC_CAST(PRBool *, PL_GetEventOwner(aEvent)); - *b = PR_TRUE; - return nsnull; -} - -PR_STATIC_CALLBACK(void) -DestroyBarrierEvent(PLEvent *aEvent) -{ -} - -static void -FlushEventQueue() -{ - PRBool hitBarrier = PR_FALSE; - nsCOMPtr eventQ; - nsresult rv = NS_GetMainEventQ(getter_AddRefs(eventQ)); - if (NS_FAILED(rv)) - return; - - PLEvent evt; - - PL_InitEvent(&evt, &hitBarrier, HandleBarrierEvent, DestroyBarrierEvent); - - if (NS_FAILED(eventQ->PostEvent(&evt))) - return; - - while (!hitBarrier) { - PLEvent *next; - eventQ->GetEvent(&next); - if (!next) { - NS_ERROR("barrier event not found!"); - return; - } - eventQ->HandleEvent(next); - } -} - //------------------------------------------------------- // Reflow a nsPrintObject nsresult @@ -2756,7 +2716,6 @@ nsPrintEngine::ReflowPrintObject(nsPrintObject * aPO, PRBool aDoCalcShrink) aPO->mPresContext->SetPageDim(adjRect); rv = aPO->mPresShell->InitialReflow(width, height); - FlushEventQueue(); if (NS_SUCCEEDED(rv)) { // Transfer Selection Ranges to the new Print PresShell nsCOMPtr selection;