Example usage for org.w3c.dom.css CSSRule MEDIA_RULE

List of usage examples for org.w3c.dom.css CSSRule MEDIA_RULE

Introduction

In this page you can find the example usage for org.w3c.dom.css CSSRule MEDIA_RULE.

Prototype

short MEDIA_RULE

To view the source code for org.w3c.dom.css CSSRule MEDIA_RULE.

Click Source Link

Document

The rule is a CSSMediaRule.

Usage

From source file:com.gargoylesoftware.htmlunit.javascript.host.css.CSSStyleSheet.java

private void modifyIfNecessary(final ComputedCSSStyleDeclaration style, final Element element,
        final CSSRuleList rules, final Set<String> alreadyProcessing) {
    if (rules == null) {
        return;//from   w  ww.j  a v a2s  . c  o  m
    }

    final BrowserVersion browser = getBrowserVersion();
    final DomElement e = element.getDomNodeOrDie();
    final int rulesLength = rules.getLength();
    for (int i = 0; i < rulesLength; i++) {
        final CSSRule rule = rules.item(i);

        final short ruleType = rule.getType();
        if (CSSRule.STYLE_RULE == ruleType) {
            final CSSStyleRuleImpl styleRule = (CSSStyleRuleImpl) rule;
            final SelectorList selectors = styleRule.getSelectors();
            for (int j = 0; j < selectors.getLength(); j++) {
                final Selector selector = selectors.item(j);
                final boolean selected = selects(browser, selector, e);
                if (selected) {
                    final org.w3c.dom.css.CSSStyleDeclaration dec = styleRule.getStyle();
                    style.applyStyleFromSelector(dec, selector);
                }
            }
        } else if (CSSRule.IMPORT_RULE == ruleType) {
            final CSSImportRuleImpl importRule = (CSSImportRuleImpl) rule;
            final MediaList mediaList = importRule.getMedia();
            if (isActive(this, mediaList)) {
                CSSStyleSheet sheet = imports_.get(importRule);
                if (sheet == null) {
                    // TODO: surely wrong: in which case is it null and why?
                    final String uri = (uri_ != null) ? uri_ : e.getPage().getUrl().toExternalForm();
                    final String href = importRule.getHref();
                    final String url = UrlUtils.resolveUrl(uri, href);
                    sheet = loadStylesheet(getWindow(), ownerNode_, null, url);
                    imports_.put(importRule, sheet);
                }

                if (!alreadyProcessing.contains(sheet.getUri())) {
                    final CSSRuleList sheetRules = sheet.getWrappedSheet().getCssRules();
                    alreadyProcessing.add(getUri());
                    sheet.modifyIfNecessary(style, element, sheetRules, alreadyProcessing);
                }
            }
        } else if (CSSRule.MEDIA_RULE == ruleType) {
            final CSSMediaRuleImpl mediaRule = (CSSMediaRuleImpl) rule;
            final MediaList mediaList = mediaRule.getMedia();
            if (isActive(this, mediaList)) {
                final CSSRuleList internalRules = mediaRule.getCssRules();
                modifyIfNecessary(style, element, internalRules, alreadyProcessing);
            }
        }
    }
}