| OLD | NEW |
| 1 <!doctype html> | 1 <!doctype html> |
| 2 <html> | 2 <html> |
| 3 <body> | 3 <body> |
| 4 <script> | 4 <script> |
| 5 | 5 |
| 6 /* Execute these tests with the browser_tests executable. */ | |
| 7 | |
| 8 var allowedByDefault = '<a href="https://google.com">Google!</a>'; | 6 var allowedByDefault = '<a href="https://google.com">Google!</a>'; |
| 9 var text = 'I\'m just text, nobody should have a problem with me!'; | 7 var text = 'I\'m just text, nobody should have a problem with me!'; |
| 10 var nonBreakingSpace = 'A\u00a0B\u00a0C'; // \u00a0 is a unicode nbsp. | 8 var nonBreakingSpace = 'A\u00a0B\u00a0C'; // \u00a0 is a unicode nbsp. |
| 11 | 9 |
| 12 function setUpPage() { | 10 function setUpPage() { |
| 13 loadTimeData.data = { | 11 loadTimeData.data = { |
| 14 'allowedByDefault': allowedByDefault, | 12 'allowedByDefault': allowedByDefault, |
| 15 'customAttr': '<a is="action-link">Take action!</a>', | 13 'customAttr': '<a is="action-link">Take action!</a>', |
| 16 'customTag': "<x-foo>I'm an X, foo!</x-foo>", | 14 'customTag': "<x-foo>I'm an X, foo!</x-foo>", |
| 17 'javascriptHref': '<a href="javascript:alert(1)">teh hax</a>', | 15 'javascriptHref': '<a href="javascript:alert(1)">teh hax</a>', |
| 18 'script': '<script>alert(/xss/)</scr' + 'ipt>', | 16 'script': '<script>alert(/xss/)</scr' + 'ipt>', |
| 19 'text': text, | 17 'text': text, |
| 20 'nonBreakingSpace': nonBreakingSpace, | 18 'nonBreakingSpace': nonBreakingSpace, |
| 21 }; | 19 }; |
| 22 } | 20 } |
| 23 | 21 |
| 24 function testI18n() { | 22 function testI18n() { |
| 25 assertEquals(allowedByDefault, I18nBehavior.i18n('allowedByDefault')); | |
| 26 assertEquals(text, I18nBehavior.i18n('text')); | 23 assertEquals(text, I18nBehavior.i18n('text')); |
| 27 assertEquals(nonBreakingSpace, I18nBehavior.i18n('nonBreakingSpace')); | 24 assertEquals(nonBreakingSpace, I18nBehavior.i18n('nonBreakingSpace')); |
| 28 | 25 |
| 29 assertThrows(function() { I18nBehavior.i18n('customAttr'); }); | 26 assertThrows(function() { I18nBehavior.i18n('customAttr'); }); |
| 30 assertThrows(function() { I18nBehavior.i18n('customTag'); }); | 27 assertThrows(function() { I18nBehavior.i18n('customTag'); }); |
| 31 assertThrows(function() { I18nBehavior.i18n('javascriptHref'); }); | 28 assertThrows(function() { I18nBehavior.i18n('javascriptHref'); }); |
| 32 assertThrows(function() { I18nBehavior.i18n('script'); }); | 29 assertThrows(function() { I18nBehavior.i18n('script'); }); |
| 33 } | 30 } |
| 34 | 31 |
| 35 function testI18nAdvanced() { | 32 function testI18nAdvanced() { |
| 33 assertEquals( |
| 34 allowedByDefault, |
| 35 I18nBehavior.i18nAdvanced('allowedByDefault')); |
| 36 I18nBehavior.i18nAdvanced('customAttr', { | 36 I18nBehavior.i18nAdvanced('customAttr', { |
| 37 attrs: { | 37 attrs: { |
| 38 is: function(el, val) { | 38 is: function(el, val) { |
| 39 return el.tagName == 'A' && val == 'action-link'; | 39 return el.tagName == 'A' && val == 'action-link'; |
| 40 }, | 40 }, |
| 41 }, | 41 }, |
| 42 }); | 42 }); |
| 43 I18nBehavior.i18nAdvanced('customTag', {tags: ['X-FOO']}); | 43 I18nBehavior.i18nAdvanced('customTag', {tags: ['X-FOO']}); |
| 44 } | 44 } |
| 45 | 45 |
| 46 function testI18nDynamic() { | 46 function testI18nDynamic() { |
| 47 var locale = 'en'; | 47 var locale = 'en'; |
| 48 assertEquals(text, I18nBehavior.i18nDynamic(locale, 'text')); | 48 assertEquals(text, I18nBehavior.i18nDynamic(locale, 'text')); |
| 49 } | 49 } |
| 50 | 50 |
| 51 function testI18nExists() { | 51 function testI18nExists() { |
| 52 assertTrue(I18nBehavior.i18nExists('text')); | 52 assertTrue(I18nBehavior.i18nExists('text')); |
| 53 assertFalse(I18nBehavior.i18nExists('missingText')); | 53 assertFalse(I18nBehavior.i18nExists('missingText')); |
| 54 } | 54 } |
| 55 | 55 |
| 56 </script> | 56 </script> |
| 57 </body> | 57 </body> |
| 58 </html> | 58 </html> |
| OLD | NEW |