Closed Bug 347736 Opened 14 years ago Closed 13 years ago

Plugin is not loaded if served as text/plain

Categories

(Core :: Plug-ins, defect)

x86
All
defect
Not set
normal

Tracking

()

RESOLVED FIXED

People

(Reporter: martijn.martijn, Assigned: Biesinger)

References

()

Details

(Keywords: regression, testcase)

Attachments

(2 files, 1 obsolete file)

See url, in current trunk builds, I get to see the plugin placeholder, while in current branch builds, the windows media player starts playing.
I think this is a regression from bug 1156.
Between 2005-09-21 and 2005-09-23, it stopped working entirely, because of bug 1156, and when it started working again after a month or so, I get to see the plugin placeholder.

I've tested this with a new profile.

This is what I have in about:plugins
Windows Media Player Plug-in Dynamic Link Library

    File name: npdsplay.dll


    Npdsplay dll

MIME Type 	Description 	Suffixes 	Enabled
application/asx 	Media Files 	* 	Yes
video/x-ms-asf-plugin 	Media Files 	* 	Yes
application/x-mplayer2 	Media Files 	* 	Yes
video/x-ms-asf 	Media Files 	asf,asx,* 	Yes
video/x-ms-wm 	Media Files 	wm,* 	Yes
audio/x-ms-wma 	Media Files 	wma,* 	Yes
audio/x-ms-wax 	Media Files 	wax,* 	Yes
video/x-ms-wmv 	Media Files 	wmv,* 	Yes
video/x-ms-wvx 	Media Files 	wvx,* 	Yes
If I add  type="application/x-mplayer2" to the <embed> tag, then it also works on trunk:
http://wargers.org/mozilla/bug344865/testmovie2.htm
I think this is what causes the videos not to display at this site (and instead show the plugin placeholder):
http://www.filecabi.net/u.php?file=1123299797.wmv
the URL from the URL field and filecabi.net work for me... could you, in a debug build, make a log with NSPR_LOG_MODULES=objlc:5?
(In reply to comment #3)
> the URL from the URL field and filecabi.net work for me... could you, in a
> debug build, make a log with NSPR_LOG_MODULES=objlc:5?

0[3f4488]: OBJLC [1076f28c]: Loading object: URI string=<testmovie.wmv> notify=0
 type=<> forceload=0
0[3f4488]: OBJLC [1076f28c]: Loading object: URI=<103f0908> notify=0 type=<> for
ceload=0
0[3f4488]: OBJLC [1076f28c]: Capabilities: 002b
0[3f4488]: OBJLC [1076f28c]: Channel opened.
0[3f4488]: WARNING: XPCOM objects created/destroyed from static ctor/dtor: 'gAct
ivityTLS != BAD_TLS_INDEX && NS_PTR_TO_INT32(PR_GetThreadPrivate(gActivityTLS))
== 0', file c:/mozilla/mozilla/xpcom/base/nsTraceRefcntImpl.cpp, line 971
WARNING: XPCOM objects created/destroyed from static ctor/dtor: 'gActivityTLS !=
 BAD_TLS_INDEX && NS_PTR_TO_INT32(PR_GetThreadPrivate(gActivityTLS)) == 0', file
 c:/mozilla/mozilla/xpcom/base/nsTraceRefcntImpl.cpp, line 971
0[3f4488]: OBJLC [1076f28c]: OnStartRequest: Content Type=<text/plain> Old type=
0 New Type=4
0[3f4488]: OBJLC [1076f28c]: Unsupported type, falling back
0[3f4488]: OBJLC [1076f28c]: Falling back (Notify=0)
0[3f4488]: OBJLC []: Dispatching PluginNotFound event for content 1076f270
0[3f4488]: OBJLC [1076f28c]: Notifying about state change: (0, 100000) -> (4, 22
0000) (sync=0)
0[3f4488]: OBJLC []: Firing plugin not found event for content 1076f270
--DOMWINDOW == 6

I get that, is that what you wanted?
yeah, thanks. hm... I wonder why this is working for me... and I also wonder whether this is a bug...
oh, haha. Because I'm using seamonkey and the code thinks it loads then nullplugin...
Assignee: nobody → cbiesinger
*** Bug 350958 has been marked as a duplicate of this bug. ***
Going to http://www.newgrounds.com/portal/view/315702 and clicking on Play this game works. It uses javascript to load the game. http://www.thatvideogamesite.com/play.php?id=392 fails. It uses <embed src='http://www.thatvideogamesite.com:81/9b3b8da48ffa550e514f7efc6f8b2424.swf' width='700' height='525' quality='high' loop='false' AllowScriptAccess='never' >
I haven't downloaded the files to make sure they are identical, but it's the same game.
"uses javascript" is kind of misleading. it eventually uses an embed tag too:
<OBJECT width="700" height="525" id="FlashContent" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,22,0" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"><PARAM value="http://uploads.ungrounded.net/315000/315702_3d_logic.swf" name="movie"/><PARAM value="high" name="quality"/><PARAM value="never" name="AllowScriptAccess"/><EMBED width="700" height="525" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" allowscriptaccess="never" name="FlashContent" quality="high" src="http://uploads.ungrounded.net/315000/315702_3d_logic.swf"/></OBJECT>

note that it has a type attribute. Going to look at the other one now...
oh. that was Bug 350958. why mention it again?
Because that bug was marked a duplicate of this bug, so to my understanding they're the same bug, and the only reason that one was resolved is that it was a duplicate of this bug, and so it makes sense to me that here is where further developments should go.

I found a case where what should end up with the same or similar result ends up in a different result, one being the correct result and thought that that might narrow down where the break lies.
ah... ok. I think at this point the only issue in this bug is figuring out exactly what the right behaviour here is.
Flags: blocking1.9?
If markup used to work but no longer does that seems bad, no?
Flags: blocking1.9? → blocking1.9+
Duplicate of this bug: 376950
OS: Windows XP → All
Summary: Windows media player is not invoked anymore with this testcase → Plugin is not loaded if served as text/plain
So is this basically the

278   // XXX do plugins expect to work via extension too?

comment in IsSupportedPlugin()?
Attached file testcase
This works on branch, but not on trunk.
Blocks: 387188
Attached patch patch (obsolete) — Splinter Review
Can we have regression tests depending on plugins?
Attachment #272696 - Flags: superreview?(bzbarsky)
Attachment #272696 - Flags: review?(bzbarsky)
Comment on attachment 272696 [details] [diff] [review]
patch

>Index: nsObjectLoadingContent.cpp
>+GetExtensionFromURI(nsIURI* uri, nsCString& ext)

So what are these non-nsIURL usecases? External protocol service stuff, I guess, that would be parsed as an nsIURL if we had a handler for it?

>+  if ((caps & eOverrideServerType) && (!aTypeHint.IsEmpty() ||
>+      (aURI && IsPluginEnabledByExtension(aURI, overrideType)))) {

Please indent this as:

  if ((caps & eOverrideServerType) && 
      (!aTypeHint.IsEmpty() ||
       (aURI && IsPluginEnabledByExtension(aURI, overrideType)))) {

I think that's much clearer.

Can we assert that either aTypeHint or overrideType is empty inside the body there?  In fact, I would expect exactly one of them to be empty here.  Please assert that.

The rest looks good, though it might be nice to have curlies around the single-line if/else bodies.

r+sr=bzbarsky with the nits picked.

As for tests, see bug 386676 and bug 372352.  Maybe just file a followup on tests for this and mark it dependent?
Attachment #272696 - Flags: superreview?(bzbarsky)
Attachment #272696 - Flags: superreview+
Attachment #272696 - Flags: review?(bzbarsky)
Attachment #272696 - Flags: review+
(In reply to comment #19)
> So what are these non-nsIURL usecases? External protocol service stuff, I
> guess, that would be parsed as an nsIURL if we had a handler for it?

If you mean "why do I hand-parse the spec" - I just moved that code, originally from nsObjectFrame.cpp, now from Instantiate().

I'll fix the rest.
Attached patch final patchSplinter Review
Attachment #272696 - Attachment is obsolete: true
Checking in nsObjectLoadingContent.cpp;
/cvsroot/mozilla/content/base/src/nsObjectLoadingContent.cpp,v  <--  nsObjectLoadingContent.cpp
new revision: 1.48; previous revision: 1.47
done

filed Bug 388684 for tests
Status: NEW → RESOLVED
Closed: 13 years ago
Resolution: --- → FIXED
Depends on: 427524
You need to log in before you can comment on or make changes to this bug.