Bug 550784 - [OOPP] Flash deadlocks during script evals that trigger focus related events. r=bent.

This commit is contained in:
Jim Mathies
2010-03-10 19:15:55 -06:00
parent 4226e6c2a4
commit eb257d7031

View File

@@ -360,7 +360,7 @@ NeuteredWindowProc(HWND hwnd,
}
static bool
WindowIsMozillaWindow(HWND hWnd)
WindowIsDeferredWindow(HWND hWnd)
{
if (!IsWindow(hWnd)) {
NS_WARNING("Window has died!");
@@ -374,6 +374,7 @@ WindowIsMozillaWindow(HWND hWnd)
return false;
}
// Common mozilla windows we must defer messages to.
nsDependentString className(buffer, length);
if (StringBeginsWith(className, NS_LITERAL_STRING("Mozilla")) ||
StringBeginsWith(className, NS_LITERAL_STRING("Gecko")) ||
@@ -382,6 +383,14 @@ WindowIsMozillaWindow(HWND hWnd)
return true;
}
// Plugin windows that can trigger ipc calls in child:
// 'ShockwaveFlashFullScreen' - flash fullscreen window
// 'AGFullScreenWinClass' - silverlight fullscreen window
if (className.EqualsLiteral("ShockwaveFlashFullScreen") ||
className.EqualsLiteral("AGFullScreenWinClass")) {
return true;
}
// nsNativeAppSupport makes a window like "FirefoxMessageWindow" based on the
// toolkit app's name. It's pretty expensive to calculate this so we only try
// once.
@@ -416,7 +425,7 @@ WindowIsMozillaWindow(HWND hWnd)
bool
NeuterWindowProcedure(HWND hWnd)
{
if (!WindowIsMozillaWindow(hWnd)) {
if (!WindowIsDeferredWindow(hWnd)) {
// Some other kind of window, skip.
return false;
}
@@ -455,8 +464,8 @@ NeuterWindowProcedure(HWND hWnd)
void
RestoreWindowProcedure(HWND hWnd)
{
NS_ASSERTION(WindowIsMozillaWindow(hWnd),
"Not a mozilla window, this shouldn't be in our list!");
NS_ASSERTION(WindowIsDeferredWindow(hWnd),
"Not a deferred window, this shouldn't be in our list!");
LONG_PTR oldWndProc = (LONG_PTR)RemoveProp(hWnd, kOldWndProcProp);
if (oldWndProc) {