Combine JavaScript and JSON encoding logic
authorKevin Israel <pleasestand@live.com>
Thu, 21 Feb 2013 02:30:45 +0000 (21:30 -0500)
committerKevin Israel <pleasestand@live.com>
Thu, 28 Mar 2013 00:22:45 +0000 (20:22 -0400)
commit79f80cc49571e286b89fc1666c034262611fac7f
tree8c4bda12d7bf253a40f7fed3ade8a5a0799cd3ba
parentb3c718f6aec5ad56b22b13d8a51323f5450ce2c4
Combine JavaScript and JSON encoding logic

This will help with improving human readability of JS and JSON
objects encoded by both ResourceLoader and the API. This patch
also adds new "utf8" parameter to the JSON formatter of the API.

Changes to FormatJson class:

* Added escaping of '<', '>', and '&' by default to protect against XSS.
* Removed unnecessary escaping of '/' and added an additional option to
  unescape non-ASCII characters (those above U+007F) as well.
* Added PHP 5.3 pretty printing code (to replace Services_JSON) that
  uses a four-space indent as PHP 5.4 does.

Changes to Xml class:

* Defined Xml::encodeJsVar() in terms of FormatJson::encode()
  and added a pretty printing option. Also added a pretty printing
  option to Xml::encodeJsCall() as well.
* Deprecated Xml::escapeJsString() and QuickTemplate::jstext();
  callers have to add quotes themselves, hence the escaping of
  both double quotes and apostrophes.

Bug: 26818
Change-Id: I1987190f1ba5bf41738e7bd611209706c1f6bb5c
15 files changed:
RELEASE-NOTES-1.21
includes/Article.php
includes/AutoLoader.php
includes/SkinTemplate.php
includes/Xml.php
includes/api/ApiFormatJson.php
includes/json/FormatJson.php
includes/json/Services_JSON.php [deleted file]
includes/resourceloader/ResourceLoader.php
includes/resourceloader/ResourceLoaderUserOptionsModule.php
includes/resourceloader/ResourceLoaderUserTokensModule.php
tests/phpunit/includes/JsonTest.php [deleted file]
tests/phpunit/includes/json/FormatJsonTest.php [new file with mode: 0644]
tests/phpunit/includes/json/ServicesJsonTest.php [deleted file]
tests/qunit/data/load.mock.php