Closed Bug 432371 Opened 16 years ago Closed 15 years ago

Silverlight not working on MLB site.

Categories

(Tech Evangelism Graveyard :: English US, defect)

defect
Not set
normal

Tracking

(Not tracked)

RESOLVED WORKSFORME

People

(Reporter: leon.sha, Unassigned)

References

()

Details

(Keywords: relnote, testcase)

Attachments

(3 files, 1 obsolete file)

Go to mlb site, select a live game and enter game day. Try to play a video there.
Expect result: The video start to play.
Actual result: There is nothing in the media box.

It works on firefox 2. And for firefox 3 beta 5, it will tell you that silverlight is not installed. But for nightly build, there is nothing.
Also you can see this site.
http://preview.microsoft.com/video/
It is work on firefox 2.
works 20050921
broke 20050922

Then it looks related to bug 1156. But I wonder if it's the a problem with the site.  Other Silverlight sites still work.  

This is the same regression range I found in bug 421217 Comment #46.  I just retried those builds for this case.  But this issue is separate from that bug. 
Flags: blocking1.9?
Keywords: qawanted
Whiteboard: [testcase-needed]
Version: unspecified → Trunk
There is a chance that this has been fixed since beta 5, so if you could retest that would be awesome.

I do think we should look into this and see what the tag the site is using that no longer works.

However I don't think we should block on this unless we hear of more sites broken over this.
Flags: blocking1.9? → blocking1.9-
I'm using today's build so no change since beta 5.

But I have a testcase.  I compared the silverlight.js between a site that works and one that does not work.  They are different.  And I reconfirmed my regression range with my testcase.
Attached file zipped testcase
I used the quickstart to create a testcase with the silverlight.js taken from the sites.  
http://www.silverlight.net/quickstarts/silverlight10/FileSetup.aspx

There are two js files: silverlight-broke.js and silverlight-works.js.  Rename one to silverlight.js to work with the testcase.
Keywords: qawantedtestcase
Whiteboard: [testcase-needed]
Ok I dove into this some more by trying Firebug(1.1b12) for the first time.  It was easy enough to use as a visual studio user.  

The difference that seems to count here between the silverlight.js files is the isInstalled function.  The one that works tests loading the plugin with an embed.  While the other tests with an object.  They both call IsVersionSupported on the plugin with 1.0 as the in parameter.  In the failing case it seems like it returns false.  But when I try to step through with Firebug it returns true and the plugin gets loaded but the xaml file is not loaded so the area on the page for the plugin ends up as a white block which uses the silverlight context menu.  So the plugin is loaded. But that only happens when I step into the isInstalled function with Firebug.  

So I assume that the IsVersionSupported function return is the reason IsInstalled returns false.  I encountered no exceptions when stepping through the IsInstalled function.  But why is the IsVersionSupported returning false when not stepping through the IsInstalled function and returning true when stepping through the function? That's the strangest part.  Also is the plugin returning false in that case from IsVersionSupported or is the function call failing and returning false?  Or would that throw an exception if the IsVersionSupported function call failed?  

Jonas who can dig deeper into this?  The bottom line is why does using the object tag work in FF2 and not FF3?  The embed tag works in both. Changing the UA string to a Firefox UA string instead of a Minefield UA string makes no difference.  

This likely looks like a plugin issue.  But with the NBC Olympic site set to use Silverlight for their videos.  It would not be nice if those videos did not work in the recently released FF3 come this August.  If it's a plugin issue so be it.  Plus we don't know it they will use the Silverlight.js that works or the one that doesn't.  Heck it's possible they will be using Silverlight 2.  
 

Attached file minimzed testcase (obsolete) —
Ok I'm getting closer.  This testcase fails by throwing an exception.  But if you remove the comment from the alert(b); line then the testcase passes.  So I guess it's a timing issue. Which must be why it was passing when I was stepping through with Firebug. But that looks about as far as I can go.  I don't know what to make of the timing issue.
Comment on attachment 319814 [details]
minimzed testcase

Ugh that tescase fails because childNodes[0] is a text node in that case.
Attachment #319814 - Attachment is obsolete: true
This should be the one.  It also involves innerHTML.
This testcase works.  Which is why the one silverlight.js works.
So the problem is the following lines of code:

a.innerHTML='<object type="application/x-silverlight"  data="data:," />';
var b=a.childNodes[0];
alert(b.IsVersionSupported('1.0'));

By the time we reach the call to b.IsVersionSupported('1.0') we have started the load, but not yet received any data. That means that mType is eLoading, which results in nsObjectLoadingContent::EnsureInstantiation returning early and thus no plugin is instantiated. So no 'IsVersionSupported' function will exist, and so things fail.

Things have worked this way since bug 1156 got fixed in Sep-2005.

There are ways we could fix this, however given that we're just a few days from shipping RC1, and that we haven't heard much about this in the past 2.5 years, I think we should try to evangelize instead.

So note that the silverlight plugin does work fine, it's the silverlight detection script (which looks like it was shipped from MS) that breaks in FF3.

I should also note that there is nothing silverlight specific going on here, so it's possible that scripts for other plugins break over this too.
Nominating to get on the radar. I don't really think we should block at this point, but more people should be in on that decision.
Flags: blocking1.9- → blocking1.9?
(In reply to comment #10)
> So the problem is the following lines of code:
> 
> a.innerHTML='<object type="application/x-silverlight"  data="data:," />';
> var b=a.childNodes[0];
> alert(b.IsVersionSupported('1.0'));
> 
> By the time we reach the call to b.IsVersionSupported('1.0') we have started
> the load, but not yet received any data. That means that mType is eLoading,
> which results in nsObjectLoadingContent::EnsureInstantiation returning early
> and thus no plugin is instantiated. So no 'IsVersionSupported' function will
> exist, and so things fail.
> 
> Things have worked this way since bug 1156 got fixed in Sep-2005.
> 
> There are ways we could fix this, however given that we're just a few days from
> shipping RC1, and that we haven't heard much about this in the past 2.5 years,
> I think we should try to evangelize instead.
> 
> So note that the silverlight plugin does work fine, it's the silverlight
> detection script (which looks like it was shipped from MS) that breaks in FF3.
> 

Agreed -  I think we should get folks to update the detection script.  What change can they make?
Would we block on getting that script detection changed? I don't think so, and recommend blocking-.
I think they can simply switch to <embed> while testing. Will investigate that and other options tomorrow.
An alternative approach for detecting whether the Silverlight plugin is installed would be to check if navigator.plugins["Silverlight Plug-In"] is defined, and then they could check if the .description property contains the right version (which is something the silverlight plugin happens to expose through .description).
Yeah, that's exactly why navigator.plugins exists.  I'm not sure why people decided to base detection on undefined behavior instead....
Taking off nom list
Flags: blocking1.9? → blocking1.9-
(In reply to comment #15)
> An alternative approach for detecting whether the Silverlight plugin is
> installed would be to check if navigator.plugins["Silverlight Plug-In"] is
> defined, and then they could check if the .description property contains the
> right version (which is something the silverlight plugin happens to expose
> through .description).
> 
They do the first part but not the second part.  Here's a snippet:

if(Silverlight.ua.Browser=="MSIE")
  b=new ActiveXObject("AgControl.AgControl");
else if(navigator.plugins["Silverlight Plug-In"])
{
  a=document.createElement("div");
  document.body.appendChild(a);
  if(Silverlight.ua.Browser=="Safari")
    a.innerHTML='<embed type="application/x-silverlight" />';
  else 
    a.innerHTML='<object type="application/x-silverlight"  data="data:," />';
  b=a.childNodes[0]
}
document.body.innerHTML;
if(b.IsVersionSupported(d))
  c=true;



This probably should be mentioned in release notes since it's a fairly big site and all and the script might be have moderately widespread use.
Keywords: relnote
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9) Gecko/2008052906 Firefox/3.0

This seems to be a problem with Silverlight 1.0 and 2.0 beta. The MLB.tv website won't play videos for either. Other websites such as the http://preview.microsoft.com/video/ can't seem to recognize if Silverlight plug-in is installed or not. They keep asking to install it even if its already installed.
Is there a way to modify the scripts or script routines so that they work?
I'm a sysadmin at mlb.com (*not* a javascript person) ... if someone can suggest a server-side remedy, I can promote it to the mlb QA or content-creation departments, or put a mozilla developer in touch with them directly.
Silverlight 2.0 beta 2 is out, though the Mac OS X version is nowhere in sight for me.

Would someone with Windows check?
Ryan, if you're (or rather whoever is maintaining this part of the site is) willing to change the files shipped with silverlight comment 15 describes the modification you want to make.  If you're not, then you need to get Microsoft to change it on their end...
I got a chance to look at the Silverlight 2 beta 2 SDK and the isinstalled function has been rewritten and uses the plugins array and the plugin description as suggested by jst. 

So can this be marked invalid or wontfix then?

WONTFIX, yeah.
Status: NEW → RESOLVED
Closed: 16 years ago
Resolution: --- → WONTFIX
I still experience this issue. 
I have the latest beta of Silverlight 2 installed and although Brian says the function has been rewritten, Firefox 3 rc3 is still not recognizing the Silverlight plug-in when I visit Microsoft's website: http://www.microsoft.com
Microsoft.com is still using a previous version of silverlight.js.  They may not deploy the new version until Silverlight 2 is released.
OS: Windows XP → All
Hardware: PC → All
Denton - this is probably best understood as a problem with the website's javascript, not with the silverlight plugin itself.  So it's not a problem on your end.


FYI for everyone - For those who need the new silverlight.js, you're supposed to either get the file as part of the 2.0 SDK, or use this: http://agappdom.net/i/silverlight.js

(This is according to http://blogs.msdn.com/nigel/archive/2008/06/17/why-is-silverlight-1-broken-with-firefox-3-and-how-do-i-fix-it.aspx )
Sorry all I lead you wrong.

Silverlight Streaming is still serving up the Silverlight 2 Beta 1 detection script at http://agappdom.net/i/silverlight.js, I expect this will be updated later this week when Silverlight Streaming starts supporting Silverlight 2 Beta 2.

In the mean time I have uploaded just the new Silverlight 2 Beta 2 Silverlight.js detection file to http://cid-f4ba2b022841cc3a.skydrive.live.com/self.aspx/Public/Silverlight.js
I know next to nothing about scripts and codes and .js files. So I am hoping you guys can help. I am a huge Texas Rangers fan but I live in CA I would like to be able to watch the game fullscreen. This silverlight problem is killing me. Can you help me? Has this been resolved it? I need a simple step by step solution as I am not very computer literate. I have the latest beta of Silverlight 2 installed. Thanks in advance for your help.
Has anyone had any luck with this? I would really like to be able to use this website properly. I don't understand why this worked fine in Firefox 2.0.0.14 and this won't work in Firefox 3. 
Mozilla changed the way <object> elements are loaded.
And more precisely, the site depended on a bug in Firefox 2.  Then the bug got fixed.
Has there been any success at fixing this? 
Like has been said above, when the sites using Silverlight 1.0 upgrade to 2.0, you will not have any issues. 
I still can't get Silverlight to work with Firefox 3. Does anyone know how to fix this? 
Silverlight *works* with Firefox 3. The problem may be that the site you are viewing is using Silverlight 1.0. Sites using a later version (2.0 and above) do not have this problem. (See above comments for details.  
Microsoft's own site (http://www.microsoft.com) also had an issue with this but now it is fixed. Contact the site administrator of the site you are trying to view and ask about their upgrade plans.
(In reply to comment #25)
> I got a chance to look at the Silverlight 2 beta 2 SDK and the isinstalled
> function has been rewritten and uses the plugins array and the plugin
> description as suggested by jst. 
> 
> So can this be marked invalid or wontfix then?

Reading this comment gives me the feeling that it should be better marked as invalid as wontfix. The cause is not on our side. Shaver? 

Actually, it should be a tech evangelism bug.
Status: RESOLVED → REOPENED
Resolution: WONTFIX → ---
Assignee: nobody → english-us
Status: REOPENED → NEW
Component: Plug-ins → English US
Flags: blocking1.9-
Product: Core → Tech Evangelism
QA Contact: plugins → english-us
Version: Trunk → unspecified
(In reply to comment #41)
> Actually, it should be a tech evangelism bug.
> 

What does "tech evangelism bug" mean? I'm not familiar with that term. 
It means that the action we're taking is trying to contact the site and ask them to fix their pages. I.e. we are not planning on changing our code.
I heard MLB dropped Silverlight.  The URL given uses flash now.  
-> WFM
Status: NEW → RESOLVED
Closed: 16 years ago15 years ago
Resolution: --- → WORKSFORME
Product: Tech Evangelism → Tech Evangelism Graveyard
You need to log in before you can comment on or make changes to this bug.