1926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)/*
2926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) *           (C) 2004-2005 Allan Sandfeld Jensen (kde@carewolf.com)
4926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * Copyright (C) 2006, 2007 Nicholas Shanks (webkit@nickshanks.com)
5926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights reserved.
6926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org>
7926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * Copyright (C) 2007, 2008 Eric Seidel <eric@webkit.org>
8926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmobile.com/)
9926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * Copyright (c) 2011, Code Aurora Forum. All rights reserved.
10926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * Copyright (C) Research In Motion Limited 2011. All rights reserved.
11926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * Copyright (C) 2012 Google Inc. All rights reserved.
12926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) *
13926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * This library is free software; you can redistribute it and/or
14926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * modify it under the terms of the GNU Library General Public
15926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * License as published by the Free Software Foundation; either
16926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * version 2 of the License, or (at your option) any later version.
17926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) *
18926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * This library is distributed in the hope that it will be useful,
19926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * but WITHOUT ANY WARRANTY; without even the implied warranty of
20926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
21926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * Library General Public License for more details.
22926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) *
23926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * You should have received a copy of the GNU Library General Public License
24926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * along with this library; see the file COPYING.LIB.  If not, write to
25926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
26926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * Boston, MA 02110-1301, USA.
27926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */
28926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
29926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)#include "config.h"
3053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/css/CSSDefaultStyleSheets.h"
3153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)
32926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)#include "UserAgentStyleSheets.h"
3353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/css/MediaQueryEvaluator.h"
3453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/css/RuleSet.h"
3553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/css/StyleSheetContents.h"
36f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles)#include "core/dom/FullscreenElementStack.h"
37e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch#include "core/html/HTMLAnchorElement.h"
38e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch#include "core/html/HTMLHtmlElement.h"
39e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch#include "core/html/HTMLVideoElement.h"
4053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/rendering/RenderTheme.h"
41926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
42926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)namespace WebCore {
43926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
44926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)using namespace HTMLNames;
45926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
46926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)RuleSet* CSSDefaultStyleSheets::defaultStyle;
47926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)RuleSet* CSSDefaultStyleSheets::defaultQuirksStyle;
48926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)RuleSet* CSSDefaultStyleSheets::defaultPrintStyle;
49926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)RuleSet* CSSDefaultStyleSheets::defaultViewSourceStyle;
50926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
51926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)StyleSheetContents* CSSDefaultStyleSheets::simpleDefaultStyleSheet;
52926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)StyleSheetContents* CSSDefaultStyleSheets::defaultStyleSheet;
53926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)StyleSheetContents* CSSDefaultStyleSheets::quirksStyleSheet;
54926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)StyleSheetContents* CSSDefaultStyleSheets::svgStyleSheet;
55926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)StyleSheetContents* CSSDefaultStyleSheets::mathMLStyleSheet;
56926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)StyleSheetContents* CSSDefaultStyleSheets::mediaControlsStyleSheet;
57926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)StyleSheetContents* CSSDefaultStyleSheets::fullscreenStyleSheet;
58926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
59926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)// FIXME: It would be nice to use some mechanism that guarantees this is in sync with the real UA stylesheet.
60304f76f9712bb8bf182649e3408252f91dbb8d53Torne (Richard Coles)static const char* simpleUserAgentStyleSheet = "html,body,div{display:block}head{display:none}body{margin:8px}div:focus,span:focus{outline:auto 5px -webkit-focus-ring-color}a:-webkit-any-link{color:-webkit-link;text-decoration:underline}a:-webkit-any-link:active{color:-webkit-activelink}body:-webkit-seamless-document{margin:0}body:-webkit-full-page-media{background-color:black}";
61926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
62926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)static inline bool elementCanUseSimpleDefaultStyle(Element* e)
63926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){
64e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    return isHTMLHtmlElement(e) || e->hasTagName(headTag) || e->hasTagName(bodyTag) || e->hasTagName(divTag) || e->hasTagName(spanTag) || e->hasTagName(brTag) || isHTMLAnchorElement(e);
65926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)}
66926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
67926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)static const MediaQueryEvaluator& screenEval()
68926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){
69926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    DEFINE_STATIC_LOCAL(const MediaQueryEvaluator, staticScreenEval, ("screen"));
70926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    return staticScreenEval;
71926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)}
72926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
73926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)static const MediaQueryEvaluator& printEval()
74926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){
75926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    DEFINE_STATIC_LOCAL(const MediaQueryEvaluator, staticPrintEval, ("print"));
76926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    return staticPrintEval;
77926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)}
78926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
79926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)static StyleSheetContents* parseUASheet(const String& str)
80926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){
815267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    StyleSheetContents* sheet = StyleSheetContents::create(CSSParserContext(UASheetMode)).leakRef(); // leak the sheet on purpose
82926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    sheet->parseString(str);
83926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    return sheet;
84926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)}
85926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
86926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)static StyleSheetContents* parseUASheet(const char* characters, unsigned size)
87926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){
88926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    return parseUASheet(String(characters, size));
89926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)}
90926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
91926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)void CSSDefaultStyleSheets::initDefaultStyle(Element* root)
92926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){
93926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    if (!defaultStyle) {
94926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)        if (!root || elementCanUseSimpleDefaultStyle(root))
95926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)            loadSimpleDefaultStyle();
96926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)        else
97926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)            loadFullDefaultStyle();
98926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    }
99926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)}
100926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
101926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)void CSSDefaultStyleSheets::loadFullDefaultStyle()
102926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){
103926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    if (simpleDefaultStyleSheet) {
104926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)        ASSERT(defaultStyle);
105926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)        ASSERT(defaultPrintStyle == defaultStyle);
106926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)        delete defaultStyle;
107926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)        simpleDefaultStyleSheet->deref();
108926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)        defaultStyle = RuleSet::create().leakPtr();
109926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)        defaultPrintStyle = RuleSet::create().leakPtr();
110926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)        simpleDefaultStyleSheet = 0;
111926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    } else {
112926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)        ASSERT(!defaultStyle);
113926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)        defaultStyle = RuleSet::create().leakPtr();
114926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)        defaultPrintStyle = RuleSet::create().leakPtr();
115926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)        defaultQuirksStyle = RuleSet::create().leakPtr();
116926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    }
117926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
118926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    // Strict-mode rules.
119926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    String defaultRules = String(htmlUserAgentStyleSheet, sizeof(htmlUserAgentStyleSheet)) + RenderTheme::defaultTheme()->extraDefaultStyleSheet();
120926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    defaultStyleSheet = parseUASheet(defaultRules);
121926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    defaultStyle->addRulesFromSheet(defaultStyleSheet, screenEval());
122926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    defaultPrintStyle->addRulesFromSheet(defaultStyleSheet, printEval());
123926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
124926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    // Quirks-mode rules.
125926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    String quirksRules = String(quirksUserAgentStyleSheet, sizeof(quirksUserAgentStyleSheet)) + RenderTheme::defaultTheme()->extraQuirksStyleSheet();
126926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    quirksStyleSheet = parseUASheet(quirksRules);
127926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    defaultQuirksStyle->addRulesFromSheet(quirksStyleSheet, screenEval());
128926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)}
129926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
130926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)void CSSDefaultStyleSheets::loadSimpleDefaultStyle()
131926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){
132926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    ASSERT(!defaultStyle);
133926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    ASSERT(!simpleDefaultStyleSheet);
134926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
135926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    defaultStyle = RuleSet::create().leakPtr();
136926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    // There are no media-specific rules in the simple default style.
137926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    defaultPrintStyle = defaultStyle;
138926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    defaultQuirksStyle = RuleSet::create().leakPtr();
139926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
140926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    simpleDefaultStyleSheet = parseUASheet(simpleUserAgentStyleSheet, strlen(simpleUserAgentStyleSheet));
141926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    defaultStyle->addRulesFromSheet(simpleDefaultStyleSheet, screenEval());
142926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
143926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    // No need to initialize quirks sheet yet as there are no quirk rules for elements allowed in simple default style.
144926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)}
145926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
146926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)RuleSet* CSSDefaultStyleSheets::viewSourceStyle()
147926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){
148926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    if (!defaultViewSourceStyle) {
149926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)        defaultViewSourceStyle = RuleSet::create().leakPtr();
150926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)        defaultViewSourceStyle->addRulesFromSheet(parseUASheet(sourceUserAgentStyleSheet, sizeof(sourceUserAgentStyleSheet)), screenEval());
151926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    }
152926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    return defaultViewSourceStyle;
153926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)}
154926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
155926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
156926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)void CSSDefaultStyleSheets::ensureDefaultStyleSheetsForElement(Element* element, bool& changedDefaultStyle)
157926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){
158926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    if (simpleDefaultStyleSheet && !elementCanUseSimpleDefaultStyle(element)) {
159926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)        loadFullDefaultStyle();
160926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)        changedDefaultStyle = true;
161926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    }
162926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
163304f76f9712bb8bf182649e3408252f91dbb8d53Torne (Richard Coles)    // FIXME: We should assert that the sheet only styles SVG elements.
164926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    if (element->isSVGElement() && !svgStyleSheet) {
165926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)        svgStyleSheet = parseUASheet(svgUserAgentStyleSheet, sizeof(svgUserAgentStyleSheet));
166926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)        defaultStyle->addRulesFromSheet(svgStyleSheet, screenEval());
167926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)        defaultPrintStyle->addRulesFromSheet(svgStyleSheet, printEval());
168926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)        changedDefaultStyle = true;
169926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    }
170926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
171304f76f9712bb8bf182649e3408252f91dbb8d53Torne (Richard Coles)    // FIXME: We should assert that this sheet only contains rules for <video> and <audio>.
172e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    if (!mediaControlsStyleSheet && (isHTMLVideoElement(element) || element->hasTagName(audioTag))) {
173926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)        String mediaRules = String(mediaControlsUserAgentStyleSheet, sizeof(mediaControlsUserAgentStyleSheet)) + RenderTheme::themeForPage(element->document()->page())->extraMediaControlsStyleSheet();
174926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)        mediaControlsStyleSheet = parseUASheet(mediaRules);
175926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)        defaultStyle->addRulesFromSheet(mediaControlsStyleSheet, screenEval());
176926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)        defaultPrintStyle->addRulesFromSheet(mediaControlsStyleSheet, printEval());
177926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)        changedDefaultStyle = true;
178926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    }
179926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
180f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles)    if (!fullscreenStyleSheet && FullscreenElementStack::isFullScreen(element->document())) {
181926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)        String fullscreenRules = String(fullscreenUserAgentStyleSheet, sizeof(fullscreenUserAgentStyleSheet)) + RenderTheme::defaultTheme()->extraFullScreenStyleSheet();
182926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)        fullscreenStyleSheet = parseUASheet(fullscreenRules);
183926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)        defaultStyle->addRulesFromSheet(fullscreenStyleSheet, screenEval());
184926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)        defaultQuirksStyle->addRulesFromSheet(fullscreenStyleSheet, screenEval());
185926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)        changedDefaultStyle = true;
186926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    }
187926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
188926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    ASSERT(defaultStyle->features().idsInRules.isEmpty());
189926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    ASSERT(mathMLStyleSheet || defaultStyle->features().siblingRules.isEmpty());
190926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)}
191926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
192926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} // namespace WebCore
193