Closed Bug 56028 Opened 25 years ago Closed 25 years ago

nsObjectFrame should be a DOM Listener

Categories

(Core Graveyard :: Plug-ins, defect, P3)

All
Windows NT
defect

Tracking

(Not tracked)

VERIFIED FIXED

People

(Reporter: peterlubczynski-bugs, Assigned: karnaze)

Details

Attachments

(2 files)

nsObjectFrame still has the old HandleEvent() code for sending plugins events. It needs to be re-written to be a DOM Listener so that we can consume events. This issue comes up when doing context menus on platforms that don't send events directly to a child window (as on the Mac). See bug 55822.
Blocks: 55822
Reassigning to myself and CCing kmcclusk.
Assignee: av → karnaze
Peterl, back to you for testing on the MAC.
Assignee: karnaze → peterl
Trying out the patch... Seem to work with context menus. Need to try Java. However, we are getting a crash in the destructor (on Mac and Win32) when you leave this test url: http://www.powershot.com/splash.html Looks like it's on: mOwner->GetContent(getter_AddRefs(content)) and here's the stack trace: nsPluginInstanceOwner::~nsPluginInstanceOwner() line 1438 + 39 bytes nsPluginInstanceOwner::`scalar deleting destructor'(unsigned int 1) + 15 bytes nsPluginInstanceOwner::Release(nsPluginInstanceOwner * const 0x03687030) line 1532 + 154 bytes nsEventListenerManager::ReleaseListeners(nsVoidArray * * 0x03687984, int 0) line 206 + 24 bytes nsEventListenerManager::~nsEventListenerManager() line 89 nsEventListenerManager::`scalar deleting destructor'(unsigned int 1) + 15 bytes nsEventListenerManager::Release(nsEventListenerManager * const 0x03687970) line 103 + 151 bytes nsGenericElement::~nsGenericElement() line 412 + 24 bytes nsGenericHTMLElement::~nsGenericHTMLElement() line 395 + 8 bytes nsGenericHTMLLeafElement::~nsGenericHTMLLeafElement() line 3158 + 8 bytes nsHTMLEmbedElement::~nsHTMLEmbedElement() line 126 + 11 bytes nsHTMLEmbedElement::`scalar deleting destructor'(unsigned int 1) + 15 bytes nsHTMLEmbedElement::Release(nsHTMLEmbedElement * const 0x032ce0f0) line 129 + 157 bytes nsGenericHTMLContainerElement::~nsGenericHTMLContainerElement() line 3200 + 12 bytes nsHTMLObjectElement::~nsHTMLObjectElement() line 95 + 11 bytes nsHTMLObjectElement::`scalar deleting destructor'(unsigned int 1) + 15 bytes nsHTMLObjectElement::Release(nsHTMLObjectElement * const 0x032b3990) line 99 + 154 bytes nsGenericHTMLContainerElement::~nsGenericHTMLContainerElement() line 3200 + 12 bytes nsHTMLSpanElement::~nsHTMLSpanElement() line 90 + 11 bytes nsHTMLSpanElement::`scalar deleting destructor'(unsigned int 1) + 15 bytes nsHTMLSpanElement::Release(nsHTMLSpanElement * const 0x032b1e00) line 94 + 154 bytes nsGenericHTMLContainerElement::~nsGenericHTMLContainerElement() line 3200 + 12 bytes nsBodyInner::~nsBodyInner() line 151 + 32 bytes nsHTMLBodyElement::~nsHTMLBodyElement() line 704 + 11 bytes nsHTMLBodyElement::`scalar deleting destructor'(unsigned int 1) + 15 bytes nsHTMLBodyElement::Release(nsHTMLBodyElement * const 0x0320a6a0) line 708 + 157 bytes nsGenericHTMLContainerElement::~nsGenericHTMLContainerElement() line 3200 + 12 bytes nsHTMLHtmlElement::~nsHTMLHtmlElement() line 98 + 11 bytes nsHTMLHtmlElement::`scalar deleting destructor'(unsigned int 1) + 15 bytes nsHTMLHtmlElement::Release(nsHTMLHtmlElement * const 0x03202ee0) line 102 + 154 bytes nsDocument::~nsDocument() line 665 + 27 bytes nsMarkupDocument::~nsMarkupDocument() line 38 + 8 bytes nsHTMLDocument::~nsHTMLDocument() line 345 + 37 bytes nsHTMLDocument::`scalar deleting destructor'() + 15 bytes nsDocument::Release(nsDocument * const 0x032072a0) line 821 + 158 bytes nsHTMLDocument::Release(nsHTMLDocument * const 0x032072a0) line 385 nsEventStateManager::~nsEventStateManager() line 172 + 45 bytes nsEventStateManager::`scalar deleting destructor'(unsigned int 1) + 15 bytes nsEventStateManager::Release(nsEventStateManager * const 0x032b7710) line 248 + 154 bytes nsCOMPtr<nsIEventStateManager>::~nsCOMPtr<nsIEventStateManager>() line 490 nsPresContext::~nsPresContext() line 148 + 28 bytes GalleyContext::~GalleyContext() line 45 + 8 bytes GalleyContext::`scalar deleting destructor'(unsigned int 1) + 15 bytes nsPresContext::Release(nsPresContext * const 0x031bee00) line 150 + 157 bytes nsDOMEvent::~nsDOMEvent() line 120 + 27 bytes nsDOMEvent::`scalar deleting destructor'(unsigned int 1) + 15 bytes nsDOMEvent::Release(nsDOMEvent * const 0x03328370) line 135 + 154 bytes nsJSUtils::nsGenericFinalize(JSContext * 0x031cb1d0, JSObject * 0x00eefb08) line 436 + 12 bytes FinalizeKeyEvent(JSContext * 0x031cb1d0, JSObject * 0x00eefb08) line 330 + 13 bytes js_FinalizeObject(JSContext * 0x031cb1d0, JSObject * 0x00eefb08) line 1600 + 114 bytes gc_finalize_phase(JSContext * 0x031cb1d0, unsigned int 428) line 907 + 11 bytes js_GC(JSContext * 0x031cb1d0, unsigned int 0) line 1173 + 13 bytes js_ForceGC(JSContext * 0x031cb1d0) line 871 + 11 bytes JS_GC(JSContext * 0x031cb1d0) line 1542 + 9 bytes nsJSContext::GC(nsJSContext * const 0x031cb380) line 1287 + 13 bytes GlobalWindowImpl::SetNewDocument(GlobalWindowImpl * const 0x031cb3f0, nsIDOMDocument * 0x036650d4) line 365 DocumentViewerImpl::Init(DocumentViewerImpl * const 0x03669ec0, nsIWidget * 0x031b8224, nsIDeviceContext * 0x031cb970, const nsRect & {...}) line 537 nsDocShell::SetupNewViewer(nsDocShell * const 0x031b89a0, nsIContentViewer * 0x03669ec0) line 2775 + 66 bytes nsWebShell::SetupNewViewer(nsWebShell * const 0x031b89a0, nsIContentViewer * 0x03669ec0) line 350 + 13 bytes nsDocShell::Embed(nsDocShell * const 0x031b89c0, nsIContentViewer * 0x03669ec0, const char * 0x01e311c4, nsISupports * 0x00000000) line 2409 + 23 bytes nsWebShell::Embed(nsWebShell * const 0x031b89c0, nsIContentViewer * 0x03669ec0, const char * 0x01e311c4, nsISupports * 0x00000000) line 383 nsDocShell::CreateContentViewer(nsDocShell * const 0x031b89a0, const char * 0x0012faf4, nsIChannel * 0x03661260, nsIStreamListener * * 0x0012fb48) line 2588 + 32 bytes nsDSURIContentListener::DoContent(nsDSURIContentListener * const 0x031b86c0, const char * 0x0012faf4, int 0, const char * 0x100a56c8 gCommonEmptyBuffer, nsIChannel * 0x03661260, nsIStreamListener * * 0x0012fb48, int * 0x0012fad8) line 106 + 33 bytes nsDocumentOpenInfo::DispatchContent(nsIChannel * 0x03661260, nsISupports * 0x00000000) line 359 + 109 bytes nsDocumentOpenInfo::OnStartRequest(nsDocumentOpenInfo * const 0x03665890, nsIChannel * 0x03661260, nsISupports * 0x00000000) line 233 + 16 bytes nsHTTPFinalListener::OnStartRequest(nsHTTPFinalListener * const 0x03663280, nsIChannel * 0x03661260, nsISupports * 0x00000000) line 1122 nsHTTPCacheListener::OnStartRequest(nsHTTPCacheListener * const 0x036743c0, nsIChannel * 0x036749d0, nsISupports * 0x00000000) line 150 nsDiskCacheRecordChannel::OnStartRequest(nsDiskCacheRecordChannel * const 0x036749d4, nsIChannel * 0x03674100, nsISupports * 0x00000000) line 704 nsOnStartRequestEvent::HandleEvent(nsOnStartRequestEvent * const 0x0367f310) line 210 + 26 bytes nsStreamListenerEvent::HandlePLEvent(PLEvent * 0x0367b090) line 97 + 12 bytes PL_HandleEvent(PLEvent * 0x0367b090) line 580 + 10 bytes PL_ProcessPendingEvents(PLEventQueue * 0x00ac8360) line 513 + 9 bytes _md_EventReceiverProc(HWND__ * 0x0001061c, unsigned int 49361, unsigned int 0, long 11305824) line 1049 + 9 bytes USER32! 77e7124c() Back over to Chris....
Assignee: peterl → karnaze
It's difficult to tell the difference between the 2 patches. Did you just add mInstanceOwner->Destroy() in the nsObjectFrame destructor?
mInstanceOwner->Destroy() was added because we can not release the ref in the destructor for nsPluginInstanceOwner because the EventManager still has a ref. mInstanceOwner->Destroy() is called in the object frame's constructor. That fixes the crash.
No longer blocks: 55822
I believe this bug has been rendered invalid (or fixed) due to recent checkins by saari. nsObjectFrame is getting mouse and key events via the DOM. see bug 58957, bug 65129, and bug 65687.
Status: NEW → RESOLVED
Closed: 25 years ago
Resolution: --- → FIXED
Yup, already done thanks to Chris Saari. Marking FIXED.
verified (rubberstamp)
Status: RESOLVED → VERIFIED
Product: Core → Core Graveyard
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: