code: static Context computeContextAfterAttributeDelimiter(
        ElementType elType,
        AttributeType attrType,
        AttributeEndDelimiter delim,
        UriType uriType,
        int templateNestDepth) {
      HtmlContext state;
      JsFollowingSlash slash = JsFollowingSlash.NONE;
      UriPart uriPart = UriPart.NONE;
      switch (attrType) {
        case PLAIN_TEXT:
          state = HtmlContext.HTML_NORMAL_ATTR_VALUE;
          break;
        case SCRIPT:
          state = HtmlContext.JS;
          // Start a JS block in a regex state since
          //   /foo/.test(str) && doSideEffect();
          // which starts with a regular expression literal is a valid and possibly useful program,
          // but there is no valid program which starts with a division operator.
          slash = JsFollowingSlash.REGEX;
          break;
        case STYLE:
          state = HtmlContext.CSS;
          break;
        case HTML:
          state = HtmlContext.HTML_HTML_ATTR_VALUE;
          break;
        case META_REFRESH_CONTENT:
          state = HtmlContext.HTML_META_REFRESH_CONTENT;
          break;
        case URI:
          state = HtmlContext.URI;
          uriPart = UriPart.START;
          break;
          // NONE is not a valid AttributeType inside an attribute value.
        default:
          throw new AssertionError("Unexpected attribute type " + attrType);
      }
      Preconditions.checkArgument(
          (uriType != UriType.NONE) == (attrType == AttributeType.URI),
          "uriType=%s but attrType=%s",
          uriType,
          attrType);
      return new Context(
          state,
          elType,
          attrType,
          delim,
          slash,
          uriPart,
          uriType,
          HtmlHtmlAttributePosition.NONE,
          templateNestDepth,
          0);
    }
docs: Computes the context after an attribute delimiter is seen.
  
  @param elType The type of element whose tag the attribute appears in.
  @param attrType The type of attribute whose value the delimiter starts.
  @param delim The type of delimiter that will mark the end of the attribute value.
  @param templateNestDepth The number of (@code <template>} elements on the open element stack.
  @return A context suitable for the start of the attribute value.