Class CssStyleSheet

java.lang.Object
org.htmlunit.css.CssStyleSheet
All Implemented Interfaces:
Serializable

public class CssStyleSheet extends Object implements Serializable
A css StyleSheet.
See Also:
  • Field Details

    • NONE

      public static final String NONE
      "none".
      See Also:
    • AUTO

      public static final String AUTO
      "auto".
      See Also:
    • STATIC

      public static final String STATIC
      "static".
      See Also:
    • INHERIT

      public static final String INHERIT
      "inherit".
      See Also:
    • INITIAL

      public static final String INITIAL
      "initial".
      See Also:
    • RELATIVE

      public static final String RELATIVE
      "relative".
      See Also:
    • FIXED

      public static final String FIXED
      "fixed".
      See Also:
    • ABSOLUTE

      public static final String ABSOLUTE
      "absolute".
      See Also:
    • REPEAT

      public static final String REPEAT
      "repeat".
      See Also:
    • BLOCK

      public static final String BLOCK
      "block".
      See Also:
    • INLINE

      public static final String INLINE
      "inline".
      See Also:
    • SCROLL

      public static final String SCROLL
      "scroll".
      See Also:
    • LOG

      private static final org.apache.commons.logging.Log LOG
    • NTH_NUMERIC

      private static final Pattern NTH_NUMERIC
    • NTH_COMPLEX

      private static final Pattern NTH_COMPLEX
    • UNESCAPE_SELECTOR

      private static final Pattern UNESCAPE_SELECTOR
    • wrapped_

      private final org.htmlunit.cssparser.dom.CSSStyleSheetImpl wrapped_
      The parsed stylesheet which this host object wraps.
    • owner_

      private final HtmlElement owner_
      The HTML element which owns this stylesheet.
    • imports_

      private final Map<org.htmlunit.cssparser.dom.CSSImportRuleImpl,CssStyleSheet> imports_
      The CSS import rules and their corresponding stylesheets.
    • media_

      private static final transient Map<String,org.htmlunit.cssparser.dom.MediaListImpl> media_
      cache parsed media strings
    • uri_

      private final String uri_
      This stylesheet's URI (used to resolved contained @import rules).
    • enabled_

      private boolean enabled_
    • CSS2_PSEUDO_CLASSES

      public static final Set<String> CSS2_PSEUDO_CLASSES
      Set of CSS2 pseudo class names.
    • CSS3_PSEUDO_CLASSES

      private static final Set<String> CSS3_PSEUDO_CLASSES
    • CSS4_PSEUDO_CLASSES

      public static final Set<String> CSS4_PSEUDO_CLASSES
      Set of CSS4 pseudo class names.
  • Constructor Details

    • CssStyleSheet

      public CssStyleSheet(HtmlElement element, org.htmlunit.cssparser.parser.InputSource source, String uri)
      Creates a new stylesheet representing the CSS stylesheet for the specified input source.
      Parameters:
      element - the owning node
      source - the input source which contains the CSS stylesheet which this stylesheet host object represents
      uri - this stylesheet's URI (used to resolved contained @import rules)
    • CssStyleSheet

      public CssStyleSheet(HtmlElement element, String styleSheet, String uri)
      Creates a new stylesheet representing the CSS stylesheet for the specified input source.
      Parameters:
      element - the owning node
      styleSheet - the source which contains the CSS stylesheet which this stylesheet host object represents
      uri - this stylesheet's URI (used to resolved contained @import rules)
    • CssStyleSheet

      public CssStyleSheet(HtmlElement element, org.htmlunit.cssparser.dom.CSSStyleSheetImpl wrapped, String uri)
      Creates a new stylesheet representing the specified CSS stylesheet.
      Parameters:
      element - the owning node
      wrapped - the CSS stylesheet which this stylesheet host object represents
      uri - this stylesheet's URI (used to resolved contained @import rules)
  • Method Details

    • getWrappedSheet

      public org.htmlunit.cssparser.dom.CSSStyleSheetImpl getWrappedSheet()
      Returns the wrapped stylesheet.
      Returns:
      the wrapped stylesheet
    • getUri

      public String getUri()
      Returns this stylesheet's URI (used to resolved contained @import rules). For inline styles this is the page uri.
      Returns:
      this stylesheet's URI (used to resolved contained @import rules)
    • isEnabled

      public boolean isEnabled()
      Returns true if this stylesheet is enabled.
      Returns:
      true if this stylesheet is enabled
    • setEnabled

      public void setEnabled(boolean enabled)
      Sets whether this sheet is enabled or not.
      Parameters:
      enabled - enabled or not
    • loadStylesheet

      public static CssStyleSheet loadStylesheet(HtmlElement element, HtmlLink link, String url)
      Loads the stylesheet at the specified link or href.
      Parameters:
      element - the parent DOM element
      link - the stylesheet's link (may be null if a url is specified)
      url - the stylesheet's url (may be null if a link is specified)
      Returns:
      the loaded stylesheet
    • selects

      public static boolean selects(BrowserVersion browserVersion, org.htmlunit.cssparser.parser.selector.Selector selector, DomElement element, String pseudoElement, boolean fromQuerySelectorAll, boolean throwOnSyntax)
      Returns true if the specified selector selects the specified element.
      Parameters:
      browserVersion - the browser version
      selector - the selector to test
      element - the element to test
      pseudoElement - the pseudo element to match, (can be null)
      fromQuerySelectorAll - whether this is called from DomNode.querySelectorAll(String)
      throwOnSyntax - throw exception if the selector syntax is incorrect
      Returns:
      true if it does apply, false if it doesn't apply
    • selects

      static boolean selects(BrowserVersion browserVersion, org.htmlunit.cssparser.parser.condition.Condition condition, DomElement element, boolean fromQuerySelectorAll, boolean throwOnSyntax)
      INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
      Returns true if the specified condition selects the specified element.
      Parameters:
      browserVersion - the browser version
      condition - the condition to test
      element - the element to test
      fromQuerySelectorAll - whether this is called from DomNode.querySelectorAll(String)
      throwOnSyntax - throw exception if the selector syntax is incorrect
      Returns:
      true if it does apply, false if it doesn't apply
    • selectsOneOf

      private static boolean selectsOneOf(String condition, String attribute)
    • selectsHyphenSeparated

      private static boolean selectsHyphenSeparated(String condition, String attribute)
    • selectsWhitespaceSeparated

      private static boolean selectsWhitespaceSeparated(String condition, String attribute)
    • selectsPseudoClass

      private static boolean selectsPseudoClass(BrowserVersion browserVersion, org.htmlunit.cssparser.parser.condition.Condition condition, DomElement element)
    • isEmpty

      private static boolean isEmpty(DomElement element)
    • getNthElement

      private static boolean getNthElement(String nth, int index)
    • parseCSS

      private static org.htmlunit.cssparser.dom.CSSStyleSheetImpl parseCSS(org.htmlunit.cssparser.parser.InputSource source, WebClient client)
      Parses the CSS at the specified input source. If anything at all goes wrong, this method returns an empty stylesheet.
      Parameters:
      source - the source from which to retrieve the CSS to be parsed
      client - the client
      Returns:
      the stylesheet parsed from the specified input source
    • parseMedia

      public static org.htmlunit.cssparser.dom.MediaListImpl parseMedia(String mediaString, WebClient webClient)
      Parses the given media string. If anything at all goes wrong, this method returns an empty MediaList list.
      Parameters:
      mediaString - the source from which to retrieve the media to be parsed
      webClient - the WebClient to be used
      Returns:
      the media parsed from the specified input source
    • parseMedia

      @Deprecated public static org.htmlunit.cssparser.dom.MediaListImpl parseMedia(org.htmlunit.cssparser.parser.CSSErrorHandler errorHandler, String mediaString)
      Deprecated.
      as of version 3.8.0; use parseMedia(String, WebClient) instead
      Parses the given media string. If anything at all goes wrong, this method returns an empty MediaList list.
      Parameters:
      errorHandler - the CSSErrorHandler to be used
      mediaString - the source from which to retrieve the media to be parsed
      Returns:
      the media parsed from the specified input source
    • toString

      private static String toString(org.htmlunit.cssparser.parser.InputSource source)
      Returns the contents of the specified input source, ignoring any IOExceptions.
      Parameters:
      source - the input source from which to read
      Returns:
      the contents of the specified input source, or an empty string if an IOException occurs
    • validateSelectors

      public static void validateSelectors(org.htmlunit.cssparser.parser.selector.SelectorList selectorList, int documentMode, DomNode domNode) throws org.htmlunit.cssparser.parser.CSSException
      Validates the list of selectors.
      Parameters:
      selectorList - the selectors
      documentMode - see Document.getDocumentMode()
      domNode - the dom node the query should work on
      Throws:
      org.htmlunit.cssparser.parser.CSSException - if a selector is invalid
    • isValidSelector

      private static boolean isValidSelector(org.htmlunit.cssparser.parser.selector.Selector selector, int documentMode, DomNode domNode)
      Parameters:
      documentMode - see Document.getDocumentMode()
    • isValidCondition

      private static boolean isValidCondition(org.htmlunit.cssparser.parser.condition.Condition condition, int documentMode, DomNode domNode)
      Parameters:
      documentMode - see Document.getDocumentMode()
    • getImportedStyleSheet

      public CssStyleSheet getImportedStyleSheet(org.htmlunit.cssparser.dom.CSSImportRuleImpl importRule)
    • isActive

      public boolean isActive()
      Returns true if this stylesheet is active, based on the media types it is associated with (if any).
      Returns:
      true if this stylesheet is active, based on the media types it is associated with (if any)
    • isActive

      public static boolean isActive(org.htmlunit.cssparser.dom.MediaListImpl mediaList, WebWindow webWindow)
      Returns whether the specified MediaList is active or not.
      Parameters:
      mediaList - the media list
      webWindow - the WebWindow for some basic data
      Returns:
      whether the specified MediaList is active or not
    • isActive

      private static boolean isActive(org.htmlunit.cssparser.parser.media.MediaQuery mediaQuery, WebWindow webWindow)
    • pixelValue

      private static double pixelValue(org.htmlunit.cssparser.dom.CSSValueImpl cssValue, WebWindow webWindow)
    • resolutionValue

      private static double resolutionValue(org.htmlunit.cssparser.dom.CSSValueImpl cssValue)
    • modifyIfNecessary

      public void modifyIfNecessary(ComputedCssStyleDeclaration style, DomElement element, String pseudoElement)
      Modifies the specified style object by adding any style rules which apply to the specified element.
      Parameters:
      style - the style to modify
      element - the element to which style rules must apply in order for them to be added to the specified style
      pseudoElement - a string specifying the pseudo-element to match (may be null)
    • getRuleIndex

      private org.htmlunit.cssparser.dom.CSSStyleSheetImpl.CSSStyleSheetRuleIndex getRuleIndex()
    • index

      private void index(org.htmlunit.cssparser.dom.CSSStyleSheetImpl.CSSStyleSheetRuleIndex index, org.htmlunit.cssparser.dom.CSSRuleListImpl ruleList, Set<String> alreadyProcessing)
    • selects

      private List<org.htmlunit.cssparser.dom.CSSStyleSheetImpl.SelectorEntry> selects(org.htmlunit.cssparser.dom.CSSStyleSheetImpl.CSSStyleSheetRuleIndex index, BrowserVersion browserVersion, DomElement element, String pseudoElement, boolean fromQuerySelectorAll)