Closed Bug 638367 Opened 11 years ago Closed 3 years ago

[Firefox 4] [NPAPI plugins] NPN_GetURLNotify does not call NPP_URLNotify if notifyData is null


(Core :: Plug-ins, defect)

Not set





(Reporter: andreycpp, Unassigned)


(Keywords: regression)


(1 file, 1 obsolete file)

User-Agent:       Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv: Gecko/20110218 Firefox/3.6.14
Build Identifier: Firefox 4.0b12

On Firefox 4, NPN_GetURLNotify does not call NPP_URLNotify

It does this on Firefox 3.6

Reproducible: Always

Steps to Reproduce:
1. Use a plugin that calls NPN_GetURLNotify with a NULL target
This is a simple NPAPI plugin based on mozilla code (

It issues a call to NPN_GetURLNotify( "" ) and does printf() inside NPP_NewStream, NPP_DestroyStream and NPP_URLNotify

Under Firefox 3 you see all 3 calls. On Firefox 4, NPP_URLNotify is not called.

You need to run Firefox in console to see the printf's.
This issue is also reproducible on Windows.
Version: unspecified → Trunk
What are you passing for the notifyData void*? I believe we changed our behavior so that we don't notify if you pass a null pointer as notifyData...
Exactly! I'm calling NPN_GetURLNotify(mInstance, "", NULL, NULL)

I have just tried specifying the notifyData (e.g. NPN_GetURLNotify(mInstance, "", NULL, (void*)mInstance) ) and this works!
First attachment had a buggy Makefile (it does not define XP_UNIX, and such plugin does not work)
Attachment #516519 - Attachment is obsolete: true
I believe that Josh made this change intentionally, but I'll let him close this WONTFIX if so when he gets back from vacation.
Ever confirmed: true
Keywords: regression
Summary: [Firefox 4] [NPAPI plugins] NPN_GetURLNotify does not call NPP_URLNotify → [Firefox 4] [NPAPI plugins] NPN_GetURLNotify does not call NPP_URLNotify if notifyData is null
I don't have time at the moment to look into this (I think it was intentional, as Benjamin said), but my advice would be to not pass NULL for notifyData if you want notifications. The browser doesn't deref that pointer value, it's just a unique identifier which you can use to reference your own stream data if you want. Technically you can pass whatever you want so long as it is unique to a stream - it doesn't have to be an actual memory address. You could just pass 0x1 if you only ever had one stream active at a time, for example.
Thanks Josh. That's exactly what I was going to use - just a dummy address like 0x1.

I have just put a warning into these wiki pages about current behavior:
Component: General → Plug-ins
Product: Firefox → Core
Closed: 3 years ago
Resolution: --- → WONTFIX
You need to log in before you can comment on or make changes to this bug.