Closed Bug 145119 Opened 22 years ago Closed 22 years ago

OBJECT tag doesn't work right

Categories

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

x86
Windows NT
defect

Tracking

(Not tracked)

RESOLVED INVALID
mozilla1.2alpha

People

(Reporter: shrir, Assigned: srgchrpv)

References

()

Details

Attachments

(2 files)

realOne installed.

this test does not load in pr1 0512..but works on 4.79
Priority: -- → P3
Summary: OBJECT tag doesn't work right → OBJECT tag doesn't work right
Target Milestone: --- → mozilla1.2alpha
WFM Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.0rc2) Gecko/20020512
RealPlayer(tm) G2 LiveConnect-Enabled Plug-In (32-bit) ver. 6.0.8.1024
components\nppl3260.dll & nppl3260.xpt automatically installed into components 
folder by netscape installer.
Probably for any other non xpcom plugins we won't be able to handle such king of 
object tag properly.
Investigating...
Does not work for me neither on the trunk (Mozilla/5.0 (Windows; U; Windows NT
5.1; en-US; rv:1.0.0+) Gecko/20020516) nor on the branch (Mozilla/5.0 (Windows;
U; Windows NT 5.1; en-US; rv:1.0rc3) Gecko/20020516). The same plugin.
This kind of <object> tag syntax is supposed to be fully supported, it is just
parsed by our code exactly like <embed> tag, if fact, it is the same code.
>The same plugin
are you talking about realOne or RealPlayer8?
realOne claims to handle "*" mimetype, the test case has 
TYPE="audio/x-pn-realaudio-plugin"
how we suppose to bind this type with realOne?
>it is just parsed by our code exactly like <embed> tag
well, it doesn't seem like exactly:(
I'll post two simple test cases to proof it.
it has two tags with the same attributes
EMBED  with type="application/x-shockwave-flash-foo"
OBJECT with type="application/x-shockwave-flash-foo"
but no default plugin involved on OBJECT tag.
6.0 behaves in the same way, it shows only 1 puzzle on embed tag,
4.79 shows 2 puzzle icons.
I mean 6.0.8.1024 thing, and the player itself is RealPlayer 8, build 6.0.9.584.

The only difference in parsing which I see looking at the code is expecting DATA
for <object> and SRC for <embed>. Everything should be in nsIPluginTagInfo which
ends up in nsPluginInstanceOwner, which in turn should not in theory care much
about  which tag it is. If it is not the same for the two tags, we should
probably file a bug.
Well, 'no default plugin on <object> tag' is not what I am talking about. I
meant parsing the tag parameters which should not differ. All the attributes are
supposed to be passed to the plugin instance via NPP_New regardless of the tag.

And yes, we don't display the default plugin on <object> tag because according
to the HTML we were supposed to show the tag content instead, so there is
explicit check for the tag after failing to instantiate a plugin instance. Looks
like we will need to change this behaviour though along the lines of recent
discussions, and if I remember correctly we have a bug on that.
well, the test case (attachment 83996 [details]) is really belongs to bug 134445,
and this bug is probably a dup of 134445.
does your real8 work with embed tag?
http://www.mozilla.org/quality/browser/front-end/testcases/plugins/ra1.html
It looks really strange. The execution goes through the part of the code which
creates a wrapper as if this is a legacy plugin, although no wrapper is created
and no our NPP_* functions are called. I am wondering if we are doing right
thing with the factory we get from the plugin, because we the creation of the
xpcom plugin instance by the component manager fails with 'not registered' error
and we use the factory to create the instance. I think the problem is that we
don't pass the DATA attribute as we should, that's why it does not play.

Serge, in your working build, can you step through
|nsPluginHostImpl::TrySetUpPluginInstance| and see what is happening?
Yes, it's my bug 134445. I think the way to go there may be just to add a check
if 'codebase' has something in it and then show the default plugin. I believe
the Windows version already has code to read this.

This bug is very strange. Same testcase, but the one with object fails:
embed: http://panther.mcom.com/testcases/plugins/testcases/real1.html
object: http://www.mozilla.org/quality/browser/front-end/testcases/plugins/ra8.html

Why does the embed work and the object fail?

RealPlayer does show up for me, it just doesn't play anything when the play
button is clicked with the object tag. I get Polish Radio with the embed tag. :)

Are we using the tag wrong?
Does RealPlayer simply not support this in the their plugin?
Is there a bug in our code?
Andrei, setting breakpoints in nsPluginStreamListenerPeer::OnStartRequest and
nsPluginStreamListenerPeer::OnDataAvailable. I see we are feeding something to
the plugin.
Yes, it works for me with <embed> but does not if I change <embed> to
<object></object> and SRC to DATA.
Peter, I would say that Real fails to look for DATA and only looks for SRC, but
Serge sees it working with older versions of Mozilla, so the problem is probably
ours.
when did I say that?
real isn't using  NPN_GetURL call to get content, it's doing its own connection.
Ah, I thought your WFM in comment #1 meant that. Sorry.
Andrei, you are right!

This is not our bug. Real is looking for the SRC= attribute and there is nothing
we can do about it. If you change the testcase to:
OBJECT data="http://www.wrn.org/audio/0000.ram"
       src="http://www.wrn.org/audio/0000.ram"

It works!

--->INVALID
Status: NEW → RESOLVED
Closed: 22 years ago
Resolution: --- → INVALID
This shows that Real needs BOTH the SRC and DATA attribute to work with us in
the OBJECT tag. We follow the spec and use the DATA attribute and feed the
plugin the stream but Real will not play it unless there is ALSO a SRC
attribute.
Thanks Peter, but I think shrir filed this bug for realOne not for real8.
Shrir could you clarify please?
Ah. We don't set up an initial stream if we have no DATA attribute in the object
tag. So we need to have it just to set up a stream in our code, but we also need
to have SRC in order to work around Real bug, that's why we need both. We can
easily fix this to be able to use SRC only (this is in
|nsPluginHostImpl::InstantiateEmbededPlugin|):

    if(pti) {
      const char *value;
      if(tagType == nsPluginTagType_Embed)
        havedata = NS_SUCCEEDED(pti->GetAttribute("SRC", &value));
-     if(tagType == nsPluginTagType_Object) 
+     if(tagType == nsPluginTagType_Object) {
        havedata = NS_SUCCEEDED(pti->GetAttribute("DATA", &value));
+       if (!havedata) // try SRC
+         havedata = NS_SUCCEEDED(pti->GetAttribute("SRC", &value));
+     }
    }

    if(havedata && !isJava && bCanHandleInternally)
      rv = NewEmbededPluginStream(aURL, aOwner, instance);

But I am not sure we want it. The original test case will still not work due to
the Real bug.
serge, the new testcase peter posted works on realOne. 
av is right, we can do this workaround for real, 
but I doubt there are any content with such king of non standard attribute of 
object tag.
shrir, please be more specific on test cases, your initial 
>this test does not load in pr1 0512..but works on 4.79
I understood as we do not load the real plugin at all, not that  real does not 
load its stream url,
and this is why in comment #1 I said WFM
no..in my initial case , I meant to say "we don't stream". realplayer loads fine 
but nothing plays. sorry for confusing u.
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: