Opened 12 years ago

Closed 11 years ago

#5846 closed defect (fixed)

GFX Silverlight renderer detection wont back off to SVG

Reported by: Adam Peller Owned by: Eugene Lazutkin
Priority: high Milestone: 1.3
Component: DojoX GFX Version: 1.0
Keywords: Cc:
Blocked By: Blocking:

Description (last modified by Eugene Lazutkin)

from Philip Taunton (IBM):

In trying to setup a web page that uses Silverlight for GFX drawing, I've found that the detection of the Silverlight plugin succeeds on a machine that does not have the plugin installed. The web page is setup with djConfig="gfxRenderer: 'silverlight,svg,vml'" such that it should back off to SVG if the Silverlight plugin is not found.

The page works fine on a system with the SL plugin installed, but on a system with no SL, it just displays the standard Microsoft "Get the plugin" banner rather than choosing SVG (browser is Firefox 2.0.0.11). There is also an associated JavaScript? error being produced on the console:

"dojo.byId(pluginName) has no properties"

Doing some investigation, it looks like the check for Silverlight on line 22 of dojox/gfx.js will pass purely if you have loaded the Silverlight.js file from Microsoft regardless of whether the plugin is actually installed. I believe a call to Silverlight.isInstalled(version) will be necessary to confirm the true existence of the Silverlight plugin.

Change History (13)

comment:1 Changed 12 years ago by Eugene Lazutkin

Milestone: 1.1.1
Status: newassigned

comment:2 Changed 11 years ago by Eugene Lazutkin

The technical problem is deeper than that, and Microsoft refused to fix the problem in their Silverlight detection code. I'll try to implement our own Silverlight detection code instead of relying on their implementation.

comment:3 Changed 11 years ago by Eugene Lazutkin

Description: modified (diff)

The detection problem is multiplied by inability of Silverlight.js to support the latest Firefox and Safari browsers. All gory details can be read in this thread: https://bugzilla.mozilla.org/show_bug.cgi?id=385720#c15. It looks like the only way to go forward is to ditch Silverlight.js completely and rewrite its buggy code. It includes the detection and the instantiation.

comment:4 Changed 11 years ago by Eugene Lazutkin

(In [14262]) gfx: better Silverlight detection. Refs #5846. !strict

comment:5 Changed 11 years ago by Eugene Lazutkin

(In [14325]) gfx: getting rid of buggy Silverlight.js => no external dependencies, smaller footprint, faster instantiation. Refs #5846. !strict

comment:6 Changed 11 years ago by Eugene Lazutkin

The code in [14325] works on Windows with IE and FF. It "almost" works on Linux with Moonlight (requires more experiments, and possible complication of API :-( ). It needs to be tested with Safari on Mac to see if it works as expected (may need some tweaking).

As soon as we good on Mac and Linux, and #6083 and #6939 are fixed, we can move the Silverlight renderer from the "experimental" to production, and move ahead of VML in the renderer string (gfxRenderer).

comment:7 Changed 11 years ago by Eugene Lazutkin

(In [14350]) dojox.gfx.silverlight: adding a correct object creation for Safari. Refs #5846. !strict

comment:8 Changed 11 years ago by Eugene Lazutkin

(In [14351]) dojox.gfx.silverlight: adding general provisions to implement the asynchronous creation of a surface for silverlight. Refs #5846. !strict

comment:9 Changed 11 years ago by Eugene Lazutkin

[14353] is related too.

comment:10 Changed 11 years ago by Eugene Lazutkin

comment:11 Changed 11 years ago by Eugene Lazutkin

Milestone: 1.2future

Moving all open ticketd to the future.

comment:12 Changed 11 years ago by Eugene Lazutkin

The only known problem is the Moonlight --- it is detected properly but crashes the browser. It was confirmed by the Mono team. I keep this ticket open to track this problem.

comment:13 Changed 11 years ago by Eugene Lazutkin

Milestone: future1.3
Resolution: fixed
Status: assignedclosed

New ticket will be opened if problem with Moonlight surfaces again.

Note: See TracTickets for help on using tickets.