Index: third_party/google_input_tools/third_party/closure_library/closure/goog/html/uncheckedconversions.js |
diff --git a/third_party/google_input_tools/third_party/closure_library/closure/goog/html/uncheckedconversions.js b/third_party/google_input_tools/third_party/closure_library/closure/goog/html/uncheckedconversions.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..a1a5a9a7e48728a960f7842b781dfd2431931392 |
--- /dev/null |
+++ b/third_party/google_input_tools/third_party/closure_library/closure/goog/html/uncheckedconversions.js |
@@ -0,0 +1,231 @@ |
+// Copyright 2013 The Closure Library Authors. All Rights Reserved. |
+// |
+// Licensed under the Apache License, Version 2.0 (the "License"); |
+// you may not use this file except in compliance with the License. |
+// You may obtain a copy of the License at |
+// |
+// http://www.apache.org/licenses/LICENSE-2.0 |
+// |
+// Unless required by applicable law or agreed to in writing, software |
+// distributed under the License is distributed on an "AS-IS" BASIS, |
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
+// See the License for the specific language governing permissions and |
+// limitations under the License. |
+ |
+/** |
+ * @fileoverview Unchecked conversions to create values of goog.html types from |
+ * plain strings. Use of these functions could potentially result in instances |
+ * of goog.html types that violate their type contracts, and hence result in |
+ * security vulnerabilties. |
+ * |
+ * Therefore, all uses of the methods herein must be carefully security |
+ * reviewed. Avoid use of the methods in this file whenever possible; instead |
+ * prefer to create instances of goog.html types using inherently safe builders |
+ * or template systems. |
+ * |
+ * |
+ * @visibility {//closure/goog/html:approved_for_unchecked_conversion} |
+ * @visibility {//closure/goog/bin/sizetests:__pkg__} |
+ */ |
+ |
+ |
+goog.provide('goog.html.uncheckedconversions'); |
+ |
+goog.require('goog.asserts'); |
+goog.require('goog.html.SafeHtml'); |
+goog.require('goog.html.SafeScript'); |
+goog.require('goog.html.SafeStyle'); |
+goog.require('goog.html.SafeStyleSheet'); |
+goog.require('goog.html.SafeUrl'); |
+goog.require('goog.html.TrustedResourceUrl'); |
+goog.require('goog.string'); |
+goog.require('goog.string.Const'); |
+ |
+ |
+/** |
+ * Performs an "unchecked conversion" to SafeHtml from a plain string that is |
+ * known to satisfy the SafeHtml type contract. |
+ * |
+ * IMPORTANT: Uses of this method must be carefully security-reviewed to ensure |
+ * that the value of {@code html} satisfies the SafeHtml type contract in all |
+ * possible program states. |
+ * |
+ * |
+ * @param {!goog.string.Const} justification A constant string explaining why |
+ * this use of this method is safe. May include a security review ticket |
+ * number. |
+ * @param {string} html A string that is claimed to adhere to the SafeHtml |
+ * contract. |
+ * @param {?goog.i18n.bidi.Dir=} opt_dir The optional directionality of the |
+ * SafeHtml to be constructed. A null or undefined value signifies an |
+ * unknown directionality. |
+ * @return {!goog.html.SafeHtml} The value of html, wrapped in a SafeHtml |
+ * object. |
+ * @suppress {visibility} For access to SafeHtml.create... Note that this |
+ * use is appropriate since this method is intended to be "package private" |
+ * withing goog.html. DO NOT call SafeHtml.create... from outside this |
+ * package; use appropriate wrappers instead. |
+ */ |
+goog.html.uncheckedconversions.safeHtmlFromStringKnownToSatisfyTypeContract = |
+ function(justification, html, opt_dir) { |
+ // unwrap() called inside an assert so that justification can be optimized |
+ // away in production code. |
+ goog.asserts.assertString(goog.string.Const.unwrap(justification), |
+ 'must provide justification'); |
+ goog.asserts.assert( |
+ !goog.string.isEmptyOrWhitespace(goog.string.Const.unwrap(justification)), |
+ 'must provide non-empty justification'); |
+ return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse( |
+ html, opt_dir || null); |
+}; |
+ |
+ |
+/** |
+ * Performs an "unchecked conversion" to SafeScript from a plain string that is |
+ * known to satisfy the SafeScript type contract. |
+ * |
+ * IMPORTANT: Uses of this method must be carefully security-reviewed to ensure |
+ * that the value of {@code script} satisfies the SafeScript type contract in |
+ * all possible program states. |
+ * |
+ * |
+ * @param {!goog.string.Const} justification A constant string explaining why |
+ * this use of this method is safe. May include a security review ticket |
+ * number. |
+ * @param {string} script The string to wrap as a SafeScript. |
+ * @return {!goog.html.SafeScript} The value of {@code script}, wrapped in a |
+ * SafeScript object. |
+ */ |
+goog.html.uncheckedconversions.safeScriptFromStringKnownToSatisfyTypeContract = |
+ function(justification, script) { |
+ // unwrap() called inside an assert so that justification can be optimized |
+ // away in production code. |
+ goog.asserts.assertString(goog.string.Const.unwrap(justification), |
+ 'must provide justification'); |
+ goog.asserts.assert( |
+ !goog.string.isEmpty(goog.string.Const.unwrap(justification)), |
+ 'must provide non-empty justification'); |
+ return goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse( |
+ script); |
+}; |
+ |
+ |
+/** |
+ * Performs an "unchecked conversion" to SafeStyle from a plain string that is |
+ * known to satisfy the SafeStyle type contract. |
+ * |
+ * IMPORTANT: Uses of this method must be carefully security-reviewed to ensure |
+ * that the value of {@code style} satisfies the SafeUrl type contract in all |
+ * possible program states. |
+ * |
+ * |
+ * @param {!goog.string.Const} justification A constant string explaining why |
+ * this use of this method is safe. May include a security review ticket |
+ * number. |
+ * @param {string} style The string to wrap as a SafeStyle. |
+ * @return {!goog.html.SafeStyle} The value of {@code style}, wrapped in a |
+ * SafeStyle object. |
+ */ |
+goog.html.uncheckedconversions.safeStyleFromStringKnownToSatisfyTypeContract = |
+ function(justification, style) { |
+ // unwrap() called inside an assert so that justification can be optimized |
+ // away in production code. |
+ goog.asserts.assertString(goog.string.Const.unwrap(justification), |
+ 'must provide justification'); |
+ goog.asserts.assert( |
+ !goog.string.isEmptyOrWhitespace(goog.string.Const.unwrap(justification)), |
+ 'must provide non-empty justification'); |
+ return goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse( |
+ style); |
+}; |
+ |
+ |
+/** |
+ * Performs an "unchecked conversion" to SafeStyleSheet from a plain string |
+ * that is known to satisfy the SafeStyleSheet type contract. |
+ * |
+ * IMPORTANT: Uses of this method must be carefully security-reviewed to ensure |
+ * that the value of {@code styleSheet} satisfies the SafeUrl type contract in |
+ * all possible program states. |
+ * |
+ * |
+ * @param {!goog.string.Const} justification A constant string explaining why |
+ * this use of this method is safe. May include a security review ticket |
+ * number. |
+ * @param {string} styleSheet The string to wrap as a SafeStyleSheet. |
+ * @return {!goog.html.SafeStyleSheet} The value of {@code styleSheet}, wrapped |
+ * in a SafeStyleSheet object. |
+ */ |
+goog.html.uncheckedconversions. |
+ safeStyleSheetFromStringKnownToSatisfyTypeContract = |
+ function(justification, styleSheet) { |
+ // unwrap() called inside an assert so that justification can be optimized |
+ // away in production code. |
+ goog.asserts.assertString(goog.string.Const.unwrap(justification), |
+ 'must provide justification'); |
+ goog.asserts.assert( |
+ !goog.string.isEmptyOrWhitespace(goog.string.Const.unwrap(justification)), |
+ 'must provide non-empty justification'); |
+ return goog.html.SafeStyleSheet. |
+ createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(styleSheet); |
+}; |
+ |
+ |
+/** |
+ * Performs an "unchecked conversion" to SafeUrl from a plain string that is |
+ * known to satisfy the SafeUrl type contract. |
+ * |
+ * IMPORTANT: Uses of this method must be carefully security-reviewed to ensure |
+ * that the value of {@code url} satisfies the SafeUrl type contract in all |
+ * possible program states. |
+ * |
+ * |
+ * @param {!goog.string.Const} justification A constant string explaining why |
+ * this use of this method is safe. May include a security review ticket |
+ * number. |
+ * @param {string} url The string to wrap as a SafeUrl. |
+ * @return {!goog.html.SafeUrl} The value of {@code url}, wrapped in a SafeUrl |
+ * object. |
+ */ |
+goog.html.uncheckedconversions.safeUrlFromStringKnownToSatisfyTypeContract = |
+ function(justification, url) { |
+ // unwrap() called inside an assert so that justification can be optimized |
+ // away in production code. |
+ goog.asserts.assertString(goog.string.Const.unwrap(justification), |
+ 'must provide justification'); |
+ goog.asserts.assert( |
+ !goog.string.isEmptyOrWhitespace(goog.string.Const.unwrap(justification)), |
+ 'must provide non-empty justification'); |
+ return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(url); |
+}; |
+ |
+ |
+/** |
+ * Performs an "unchecked conversion" to TrustedResourceUrl from a plain string |
+ * that is known to satisfy the TrustedResourceUrl type contract. |
+ * |
+ * IMPORTANT: Uses of this method must be carefully security-reviewed to ensure |
+ * that the value of {@code url} satisfies the TrustedResourceUrl type contract |
+ * in all possible program states. |
+ * |
+ * |
+ * @param {!goog.string.Const} justification A constant string explaining why |
+ * this use of this method is safe. May include a security review ticket |
+ * number. |
+ * @param {string} url The string to wrap as a TrustedResourceUrl. |
+ * @return {!goog.html.TrustedResourceUrl} The value of {@code url}, wrapped in |
+ * a TrustedResourceUrl object. |
+ */ |
+goog.html.uncheckedconversions. |
+ trustedResourceUrlFromStringKnownToSatisfyTypeContract = |
+ function(justification, url) { |
+ // unwrap() called inside an assert so that justification can be optimized |
+ // away in production code. |
+ goog.asserts.assertString(goog.string.Const.unwrap(justification), |
+ 'must provide justification'); |
+ goog.asserts.assert( |
+ !goog.string.isEmptyOrWhitespace(goog.string.Const.unwrap(justification)), |
+ 'must provide non-empty justification'); |
+ return goog.html.TrustedResourceUrl. |
+ createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(url); |
+}; |