Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 449113

Summary: Some plugins broken under IE10
Product: [ECD] Orion Reporter: Mark Macdonald <mamacdon>
Component: ClientAssignee: Mark Macdonald <mamacdon>
Status: RESOLVED FIXED QA Contact:
Severity: critical    
Priority: P3 CC: gheorghe
Version: 6.0   
Target Milestone: 7.0   
Hardware: PC   
OS: Windows 7   
Whiteboard:

Description Mark Macdonald CLA 2014-10-28 17:32:48 EDT
1. Using IE10, go to Settings > Plugins
2. Note that the Web Tools plugin and JS plugin are showing 0 services, indicating they failed for some reason.
3. Open IE dev tools, click "Start Debugging", enable "Break on all exceptions". 
4. Click the "Reload All" button on the page

You can see an an error silently caught when we try to persist those plugins' metadata:

SCRIPT87: Caught exception occurred : Invalid argument. 
pluginregistry.js, line 1001 character 17
> 	persist, pluginregistry.js, line 1001
> 	_persist, pluginregistry.js, line 472
> 	_update, pluginregistry.js, line 766
> 	settleDeferred, Deferred.js, line 70
>        ...

The problem is with the stringified plugin manifest. It contains a character that IE refuses to store in localStorage.
Comment 1 Mark Macdonald CLA 2014-10-28 17:39:16 EDT
The problematic character appears at offset 10587 within the stringified manifest:

> \s+[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9 -]*)?\\s*\\(","end":"\\)","captures":{"1
>                                       ^
>                                       U+FFFF is here

The metadata in question comes from the JS syntax grammar
Comment 2 Mark Macdonald CLA 2014-10-28 17:59:21 EDT
http://git.eclipse.org/c/orion/org.eclipse.orion.client.git/commit/?id=c4731bb

The JS grammar had some incorrect escapes inside a string literal. The intent was to write a regex pattern that would match U+A0 and U+FFFF characters, but instead it injected raw A0 and FFFF characters into the string. IE has a bug that causes it to choke on those characters when saving to localStorage [1].

[1] http://stackoverflow.com/a/10505012/3394770