Class CssStyleSheet

  • All Implemented Interfaces:
    java.io.Serializable

    public class CssStyleSheet
    extends java.lang.Object
    implements java.io.Serializable
    A css StyleSheet.
    See Also:
    Serialized Form
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static java.lang.String ABSOLUTE
      "absolute".
      static java.lang.String AUTO
      "auto".
      static java.lang.String BLOCK
      "block".
      static java.util.Set<java.lang.String> CSS2_PSEUDO_CLASSES
      Set of CSS2 pseudo class names.
      private static java.util.Set<java.lang.String> CSS3_PSEUDO_CLASSES  
      static java.util.Set<java.lang.String> CSS4_PSEUDO_CLASSES
      Set of CSS4 pseudo class names.
      private boolean enabled_  
      static java.lang.String FIXED
      "fixed".
      private java.util.Map<org.htmlunit.cssparser.dom.CSSImportRuleImpl,​CssStyleSheet> imports_
      The CSS import rules and their corresponding stylesheets.
      static java.lang.String INHERIT
      "inherit".
      static java.lang.String INITIAL
      "initial".
      static java.lang.String INLINE
      "inline".
      private static org.apache.commons.logging.Log LOG  
      private static java.util.Map<java.lang.String,​org.htmlunit.cssparser.dom.MediaListImpl> media_
      cache parsed media strings
      static java.lang.String NONE
      "none".
      private static java.util.regex.Pattern NTH_COMPLEX  
      private static java.util.regex.Pattern NTH_NUMERIC  
      private HtmlElement owner_
      The HTML element which owns this stylesheet.
      static java.lang.String RELATIVE
      "relative".
      static java.lang.String REPEAT
      "repeat".
      static java.lang.String SCROLL
      "scroll".
      static java.lang.String STATIC
      "static".
      private static java.util.regex.Pattern UNESCAPE_SELECTOR  
      private java.lang.String uri_
      This stylesheet's URI (used to resolved contained @import rules).
      private org.htmlunit.cssparser.dom.CSSStyleSheetImpl wrapped_
      The parsed stylesheet which this host object wraps.
    • Constructor Summary

      Constructors 
      Constructor Description
      CssStyleSheet​(HtmlElement element, java.lang.String styleSheet, java.lang.String uri)
      Creates a new stylesheet representing the CSS stylesheet for the specified input source.
      CssStyleSheet​(HtmlElement element, org.htmlunit.cssparser.dom.CSSStyleSheetImpl wrapped, java.lang.String uri)
      Creates a new stylesheet representing the specified CSS stylesheet.
      CssStyleSheet​(HtmlElement element, org.htmlunit.cssparser.parser.InputSource source, java.lang.String uri)
      Creates a new stylesheet representing the CSS stylesheet for the specified input source.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods 
      Modifier and Type Method Description
      CssStyleSheet getImportedStyleSheet​(org.htmlunit.cssparser.dom.CSSImportRuleImpl importRule)  
      private static boolean getNthElement​(java.lang.String nth, int index)  
      private org.htmlunit.cssparser.dom.CSSStyleSheetImpl.CSSStyleSheetRuleIndex getRuleIndex()  
      java.lang.String getUri()
      Returns this stylesheet's URI (used to resolved contained @import rules).
      org.htmlunit.cssparser.dom.CSSStyleSheetImpl getWrappedSheet()
      Returns the wrapped stylesheet.
      private void index​(org.htmlunit.cssparser.dom.CSSStyleSheetImpl.CSSStyleSheetRuleIndex index, org.htmlunit.cssparser.dom.CSSRuleListImpl ruleList, java.util.Set<java.lang.String> alreadyProcessing)  
      boolean isActive()
      Returns true if this stylesheet is active, based on the media types it is associated with (if any).
      static boolean isActive​(org.htmlunit.cssparser.dom.MediaListImpl mediaList, WebWindow webWindow)
      Returns whether the specified MediaList is active or not.
      private static boolean isActive​(org.htmlunit.cssparser.parser.media.MediaQuery mediaQuery, WebWindow webWindow)  
      private static boolean isEmpty​(DomElement element)  
      boolean isEnabled()
      Returns true if this stylesheet is enabled.
      private static boolean isValidCondition​(org.htmlunit.cssparser.parser.condition.Condition condition, int documentMode, DomNode domNode)  
      private static boolean isValidSelector​(org.htmlunit.cssparser.parser.selector.Selector selector, int documentMode, DomNode domNode)  
      static CssStyleSheet loadStylesheet​(HtmlElement element, HtmlLink link, java.lang.String url)
      Loads the stylesheet at the specified link or href.
      void modifyIfNecessary​(ComputedCssStyleDeclaration style, DomElement element, java.lang.String pseudoElement)
      Modifies the specified style object by adding any style rules which apply to the specified element.
      private static org.htmlunit.cssparser.dom.CSSStyleSheetImpl parseCSS​(org.htmlunit.cssparser.parser.InputSource source, WebClient client)
      Parses the CSS at the specified input source.
      static org.htmlunit.cssparser.dom.MediaListImpl parseMedia​(java.lang.String mediaString, WebClient webClient)
      Parses the given media string.
      static org.htmlunit.cssparser.dom.MediaListImpl parseMedia​(org.htmlunit.cssparser.parser.CSSErrorHandler errorHandler, java.lang.String mediaString)
      Deprecated.
      as of version 3.8.0; use parseMedia(String, WebClient) instead
      private static double pixelValue​(org.htmlunit.cssparser.dom.CSSValueImpl cssValue, WebWindow webWindow)  
      private static double resolutionValue​(org.htmlunit.cssparser.dom.CSSValueImpl cssValue)  
      (package private) 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.
      static boolean selects​(BrowserVersion browserVersion, org.htmlunit.cssparser.parser.selector.Selector selector, DomElement element, java.lang.String pseudoElement, boolean fromQuerySelectorAll, boolean throwOnSyntax)
      Returns true if the specified selector selects the specified element.
      private java.util.List<org.htmlunit.cssparser.dom.CSSStyleSheetImpl.SelectorEntry> selects​(org.htmlunit.cssparser.dom.CSSStyleSheetImpl.CSSStyleSheetRuleIndex index, BrowserVersion browserVersion, DomElement element, java.lang.String pseudoElement, boolean fromQuerySelectorAll)  
      private static boolean selectsHyphenSeparated​(java.lang.String condition, java.lang.String attribute)  
      private static boolean selectsOneOf​(java.lang.String condition, java.lang.String attribute)  
      private static boolean selectsPseudoClass​(BrowserVersion browserVersion, org.htmlunit.cssparser.parser.condition.Condition condition, DomElement element)  
      private static boolean selectsWhitespaceSeparated​(java.lang.String condition, java.lang.String attribute)  
      void setEnabled​(boolean enabled)
      Sets whether this sheet is enabled or not.
      private static java.lang.String toString​(org.htmlunit.cssparser.parser.InputSource source)
      Returns the contents of the specified input source, ignoring any IOExceptions.
      static void validateSelectors​(org.htmlunit.cssparser.parser.selector.SelectorList selectorList, int documentMode, DomNode domNode)
      Validates the list of selectors.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • LOG

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

        private static final java.util.regex.Pattern NTH_NUMERIC
      • NTH_COMPLEX

        private static final java.util.regex.Pattern NTH_COMPLEX
      • UNESCAPE_SELECTOR

        private static final java.util.regex.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 java.util.Map<org.htmlunit.cssparser.dom.CSSImportRuleImpl,​CssStyleSheet> imports_
        The CSS import rules and their corresponding stylesheets.
      • media_

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

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

        private boolean enabled_
      • CSS2_PSEUDO_CLASSES

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

        private static final java.util.Set<java.lang.String> CSS3_PSEUDO_CLASSES
      • CSS4_PSEUDO_CLASSES

        public static final java.util.Set<java.lang.String> CSS4_PSEUDO_CLASSES
        Set of CSS4 pseudo class names.
    • Constructor Detail

      • CssStyleSheet

        public CssStyleSheet​(HtmlElement element,
                             org.htmlunit.cssparser.parser.InputSource source,
                             java.lang.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,
                             java.lang.String styleSheet,
                             java.lang.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,
                             java.lang.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 Detail

      • getWrappedSheet

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

        public java.lang.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,
                                                   java.lang.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,
                                      java.lang.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​(java.lang.String condition,
                                            java.lang.String attribute)
      • selectsHyphenSeparated

        private static boolean selectsHyphenSeparated​(java.lang.String condition,
                                                      java.lang.String attribute)
      • selectsWhitespaceSeparated

        private static boolean selectsWhitespaceSeparated​(java.lang.String condition,
                                                          java.lang.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​(java.lang.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​(java.lang.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,
                                                                          java.lang.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:
        mediaString - the source from which to retrieve the media to be parsed
        errorHandler - the CSSErrorHandler to be used
        Returns:
        the media parsed from the specified input source
      • toString

        private static java.lang.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,
                                      java.lang.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,
                           java.util.Set<java.lang.String> alreadyProcessing)
      • selects

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