Bug 550784 - [OOPP] Flash deadlocks during script evals that trigger focus related events. r=bent.
This commit is contained in:
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user