Bug 15377

Summary: need to handle more strings
Product: swfdec Reporter: Anand Kumria <wildfire>
Component: libraryAssignee: swfdec ml <swfdec>
Status: ASSIGNED --- QA Contact: swfdec ml <swfdec>
Severity: normal    
Priority: medium CC: david.morgan
Version: unspecified   
Hardware: Other   
OS: All   
URL: http://www.bbc.co.uk/doctorwho/s4/episodes/?episode=S4_01&action=iplayer&pid=b009w049&title=Partners%20In%20Crime&summary=Donna%20is%20determined%20to%20find%20the%20Doctor%20again%20-%20even%20if%20it%20means%20braving%20the%20villainous%20Miss%20Foster%20and%20her%20hordes%20of%20sinister%20Adipose
Whiteboard:
i915 platform: i915 features:
Attachments: iPlayer SWF
iPlayer configuration
crossdomain file
iPlayer episode configuration
Episode cover image

Description Anand Kumria 2008-04-06 12:33:10 UTC
Created attachment 15719 [details]
iPlayer SWF

Unable to watch DoctorWho using the BBC's iPlayer.


<http://www.bbc.co.uk/doctorwho/s4/episodes/?episode=S4_01&action=iplayer&pid=b009w049&title=Partners%20In%20Crime&summary=Donna%20is%20determined%20to%20find%20the%20Doctor%20again%20-%20even%20if%20it%20means%20braving%20the%20villainous%20Miss%20Foster%20and%20her%20hordes%20of%20sinister%20Adipose>

The above URL contains the following Javascript fragment:

	<script type="text/javascript">
		var so = new SWFObject("http://www.bbc.co.uk/iplayer/emp/flash/iplayer-external.swf", "bbc_emp_embed", "512", "323", "8", "#000000");
		so.addParam("allowFullScreen", "true");
		so.addParam("wmode", "opaque");
		
		so.addVariable("config", "http://www.bbc.co.uk/iplayer/emp/xml/config.xml");
		so.addVariable("metafile", "http://www.bbc.co.uk/iplayer/metafiles/episode/b009w049.xml");
		so.useExpressInstall('http://www.bbc.co.uk/iplayer/emp/flash/expressinstall.swf');
		var div = document.getElementById("bbc_emp"); 
		if (so.installedVer.major == 0) { 
			div.innerHTML = '<p style="padding:40px 60px 0;font-size:1.2em;font-weight:bold">You need to install Flash to play this programme</p><p style="padding:40px 60px 0"><a style="color:#ED007F" href="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash">Download the Flash player now</a></p><p style="padding:40px 60px 0">(This link will take you to a site outside bbc.co.uk. The BBC is not responsible for the content of software downloaded from external sites)</p>'; 
		}
		else if (so.installedVer.major < 7) { 
		div.innerHTML = '<p style="padding:40px 60px 0;font-size:1.2em;font-weight:bold">A newer version of Flash is needed to play this programme</p><p style="padding:40px 60px 0"><a style="color:#ED007F" href="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash">Download the Flash player now</a></p><p style="padding:40px 60px 0">(This link will take you to a site outside bbc.co.uk. The BBC is not responsible for the content of software downloaded from external sites)</p>'; 
		} 
		else so.write("bbc_emp"); 
	</script>

I have the iPlayer SWF file to this bug report and will include the other referenced files shortly.

Thanks,
Anand
Comment 1 Anand Kumria 2008-04-06 12:34:27 UTC
Created attachment 15720 [details]
iPlayer configuration
Comment 2 Anand Kumria 2008-04-06 12:34:56 UTC
Created attachment 15721 [details]
crossdomain file
Comment 3 Anand Kumria 2008-04-06 12:35:37 UTC
Created attachment 15722 [details]
iPlayer episode configuration
Comment 4 Anand Kumria 2008-04-06 12:36:09 UTC
Created attachment 15723 [details]
Episode cover image
Comment 5 Anand Kumria 2008-04-08 15:43:42 UTC
Actually it isn't just DoctorWho that is affected.

We are unable to watch wacky Germans too!

<http://news.bbc.co.uk/1/hi/world/europe/7335351.stm>

Comment 6 Benjamin Otte 2008-04-09 00:34:49 UTC
So after investigating this more it turns out that the unicode consortium and Flash have a different idea of what unicode is.
Or to be more techy: There is a set of unicode "code points" (read: values) that are considered invalid and must not appear in any string of text. Every other library we use (read: Pango or glib) will reject these values. Some might even crash. Flash will not, it seems to treat these as valid.

This seems to need a somewhat larger refactoring + code audit so that we can allow all these "invalid" strings. I'm not yet sure how to best do that though.

I'll however try a quick fix to work around the problem. I'll let you know about it when I've done it.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.