Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 356699 - [Shell][Label][Button] Text not displayed in IE8
Summary: [Shell][Label][Button] Text not displayed in IE8
Status: RESOLVED FIXED
Alias: None
Product: RAP
Classification: RT
Component: RWT (show other bugs)
Version: 1.5   Edit
Hardware: PC Windows XP
: P1 normal (vote)
Target Milestone: 1.5 M2   Edit
Assignee: Project Inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-09-04 19:56 EDT by Chris Fairhall CLA
Modified: 2011-09-05 05:26 EDT (History)
2 users (show)

See Also:


Attachments
screenshot (53.75 KB, image/jpeg)
2011-09-04 19:56 EDT, Chris Fairhall CLA
no flags Details
Working IE8 (81.07 KB, image/png)
2011-09-05 03:22 EDT, Ivan Furnadjiev CLA
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Chris Fairhall CLA 2011-09-04 19:56:26 EDT
Created attachment 202728 [details]
screenshot

Some time after 1.5 M1 text on labels stopped being displayed in IE8/XPsp3
Some time after rap-runtime-1.5.0-N-20110829-0431 the text on buttons is also missing.

This is reproducable in the RAP Demo. most visible in the about dialog.
Comment 1 Chris Fairhall CLA 2011-09-04 20:05:50 EDT
Tree, Table, Link, Combo, DateTime, ImageHyperlink, CLabel and Group widgets are not effected.

All of this works perfectly in Chrome but as we're developing an app for a corporate environment it has to run on IE8/XP
Comment 2 Ivan Furnadjiev CLA 2011-09-05 03:22:03 EDT
Probably related to Label/Button protocol switch, but currently have no idea how. Austin Riddle reported the same issue with his application. Unfortunately, I can't reproduce it with fully updated IE8 (Windows XP SP3 with all updates installed). "About" dialog looks good - Label and Button text is there.
Comment 3 Ivan Furnadjiev CLA 2011-09-05 03:22:54 EDT
Created attachment 202734 [details]
Working IE8
Comment 4 Ivan Furnadjiev CLA 2011-09-05 03:38:32 EDT
Chris, in your screenshot the Shell titlebar text is missing as well. I will really appreciate some more information about your environment. Austin already confirmed that the text is not available in the DOM, but exists in the protocol message sent by the server.
Comment 5 Ivan Furnadjiev CLA 2011-09-05 03:59:19 EDT
My suspicion is in the new EncodingUtil.js introduced on the client. It is used in all Shell, Label and Button adapters. Could you change EncodingUtil.js#escapeText as follow:
escapeText : function( text, mnemonics ) {
  return text;
}
Does it make any difference? Don't forget to run your application with "debug" client-side library variant.
Comment 6 Chris Fairhall CLA 2011-09-05 04:53:01 EDT
> Don't forget to run your application with "debug" client-side library variant.

While trying this I started it up with the debug client option and no other changes. This fixed the issue.

perhaps something is dodgy with client.js?

> Unfortunately, I can't reproduce it with fully updated IE8
Try it without client debug
Comment 7 Chris Fairhall CLA 2011-09-05 05:01:41 EDT
I've had a look through client.js
Line 34, column 728 (of rap-runtime-1.5.0-N-20110904-2111) contains a null character. It should contain a \000 like in EncodingUtil.js line 64.

Looks like the javascript compressor RAP uses is replacing \000 with an actual null and IE doesn't like it.
Comment 8 Ivan Furnadjiev CLA 2011-09-05 05:09:42 EDT
(In reply to comment #7)
> I've had a look through client.js
> Line 34, column 728 (of rap-runtime-1.5.0-N-20110904-2111) contains a null
> character. It should contain a \000 like in EncodingUtil.js line 64.
> 
> Looks like the javascript compressor RAP uses is replacing \000 with an actual
> null and IE doesn't like it.
Thanks for the pointer. I will have a look on it immediately.
Comment 9 Ivan Furnadjiev CLA 2011-09-05 05:18:31 EDT
Good news... I can reproduce it in IE8 with "standard" client library (client.js).
Comment 10 Ivan Furnadjiev CLA 2011-09-05 05:26:18 EDT
Fixed in CVS HEAD by replacing "\000" in EncodingUtil.js#truncateAtZero with String.fromCharCode( 0 ).