12012-07-26 Shinya Kawanaka <shinyak@chromium.org>
2
3 AuthorShadowDOM for progress element
4 https://bugs.webkit.org/show_bug.cgi?id=91969
5
6 Reviewed by NOBODY (OOPS!).
7
8 We add support for AuthorShadowDOM for progress element.
9
10 According to the Shadow DOM spec, a progress element should behave like having a UserAgentShadowRoot and
11 an element in UserAgentShadowRoot draws a real 'progress' bar. In this patch, we change the inner structure
12 of a progress element so that we can distribute an element having RenderProgress to AuthorShadowDOM.
13
14 Before this patch, a progress element has the following inner structure.
15
16 <progress>--UserAgentShadowRoot -- -- -- -- -- -- -- -- -- -- AuthorShadowRoot
17 |
18 +-- ProgressBarElement
19 |
20 +-- ProgressValueElement
21
22 After this patch, a progress element will have the following inner structure.
23
24 <progress>--UserAgentShadowRoot -- -- -- -- -- -- -- -- -- -- AuthorShadowRoot
25 |
26 +-- ProgressInnerElement
27 |
28 +-- ProgressBarElement
29 |
30 +-- ProgressValueElement
31
32
33 Tests: fast/dom/shadow/shadowdom-for-progress-dynamic.html
34 fast/dom/shadow/shadowdom-for-progress-multiple.html
35 fast/dom/shadow/shadowdom-for-progress-with-style.html
36 fast/dom/shadow/shadowdom-for-progress-without-appearance.html
37 fast/dom/shadow/shadowdom-for-progress-without-shadow-element.html
38 fast/dom/shadow/shadowdom-for-progress.html
39
40 * css/html.css:
41 (progress::-webkit-progress-inner-element):
42 * dom/ElementShadow.cpp:
43 (WebCore::ElementShadow::addShadowRoot): We force reattach here, since the renderer of RenderInnerElement
44 was not removed.
45 * html/HTMLProgressElement.cpp:
46 (WebCore::HTMLProgressElement::createRenderer):
47 (WebCore::HTMLProgressElement::renderProgress): Returns RenderProgress gotten from UserAgentShadowDOM.
48 (WebCore):
49 (WebCore::HTMLProgressElement::didElementStateChange):
50 (WebCore::HTMLProgressElement::createShadowSubtree): Creates a new Shadow DOM structure.
51 * html/HTMLProgressElement.h:
52 (WebCore):
53 (HTMLProgressElement):
54 (WebCore::isHTMLProgressElement):
55 (WebCore::toHTMLProgressElement):
56 * html/shadow/ProgressShadowElement.cpp:
57 (WebCore::ProgressInnerElement::ProgressInnerElement): We introduce a new element having RenderProgress
58 so that we can distribute an element having RenderProgress to AuthorShadowDOM.
59 (WebCore):
60 (WebCore::ProgressInnerElement::create):
61 (WebCore::ProgressInnerElement::progressElement):
62 (WebCore::ProgressInnerElement::shadowPseudoId):
63 (WebCore::ProgressInnerElement::createRenderer):
64 (WebCore::ProgressShadowElement::ProgressShadowElement):
65 (WebCore::ProgressShadowElement::progressElement):
66 * html/shadow/ProgressShadowElement.h:
67 (ProgressInnerElement):
68 (WebCore):
69 * rendering/RenderProgress.cpp:
70 (WebCore::RenderProgress::RenderProgress):
71 (WebCore::RenderProgress::progressElement):
72 * rendering/RenderProgress.h:
73 (RenderProgress):
74