com.google.gwt.safehtml.shared

## Interface SafeUri

- All Known Implementing Classes:
    SafeUriString

      public interface SafeUri

  An object that implements this interface encapsulates a URI that is guaranteed to be safe to use (with respect to potential Cross-Site-Scripting vulnerabilities) in a URL context, for example in a URL-typed attribute in an HTML document.

  Note on usage: SafeUri should be used to ensure user input is not executed in the browser. SafeUri should not be used to sanitize input before sending it to the server: The server cannot rely on the type contract of SafeUri values received from clients, because a malicious client could provide maliciously crafted serialized forms of implementations of this type that violate the type contract.

  All implementing classes must maintain the class invariant (by design and implementation and/or convention of use), that invoking `asString()` on any instance will return a string that is safe to assign to a URL-typed DOM or CSS property in a browser (or to use similarly in a "URL context"), in the sense that doing so must not cause unintended execution of script in the browser.

  In determining safety of a URL both the value itself as well as its provenance matter. An arbitrary URI, including e.g. a `javascript:` URI, can be deemed safe in the sense of this type's contract if it is entirely under the program's control (e.g., a string literal, `UriUtils.fromSafeConstant(java.lang.String)`).

  All implementations must implement equals() and hashCode() to behave consistently with the result of asString().equals() and asString.hashCode().

  Implementations must not return `null` from `asString()`.

  See Also:
    `UriUtils`

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `java.lang.String` | `asString()` Returns this object's contained URI as a string.
    `boolean` | `equals(java.lang.Object anObject)` Compares this string to the specified object.
    `int` | `hashCode()` Returns a hash code for this string.

- - ### Method Detail

    - #### asString

          java.lang.String asString()

      Returns this object's contained URI as a string.

      Based on this class' contract, the returned value will be non-null and a string that is safe to use in a URL context.

      Returns:
        the contents as a String

    - #### equals

          boolean equals(java.lang.Object anObject)

      Compares this string to the specified object. Must be equal to asString().equals().
      Overrides:
        `equals` in class `java.lang.Object`
      Parameters:
        `anObject` - the object to compare to

    - #### hashCode

          int hashCode()

      Returns a hash code for this string. Must be equal to asString().hashCode().
      Overrides:
        `hashCode` in class `java.lang.Object`