HTMLInputElement* SliderThumbElement::hostInput() const { // Only HTMLInputElement creates SliderThumbElement instances as its shadow nodes. // So, shadowHost() must be an HTMLInputElement. Element* host = shadowHost(); return host ? host->toInputElement() : 0; }
const AtomicString& SliderContainerElement::shadowPseudoId() const { // FIXME: this code needs to go away, it is very very wrong. // The value of shadowPseudoId() is needed to resolve the style of the shadow tree. In this case, // that value depends on the style, which means the style needs to be computed twice to get // a correct value: once to get the Input's appearance, then a second time to style the shadow tree correctly. DEPRECATED_DEFINE_STATIC_LOCAL(const AtomicString, mediaSliderContainer, ("-webkit-media-slider-container", AtomicString::ConstructFromLiteral)); DEPRECATED_DEFINE_STATIC_LOCAL(const AtomicString, sliderContainer, ("-webkit-slider-container", AtomicString::ConstructFromLiteral)); HTMLInputElement* input = shadowHost()->toInputElement(); if (!input) return sliderContainer; if (!input->renderer()) return emptyAtom; const RenderStyle& sliderStyle = input->renderer()->style(); switch (sliderStyle.appearance()) { case MediaSliderPart: case MediaSliderThumbPart: case MediaVolumeSliderPart: case MediaVolumeSliderThumbPart: case MediaFullScreenVolumeSliderPart: case MediaFullScreenVolumeSliderThumbPart: return mediaSliderContainer; default: return sliderContainer; } }
void SVGShadowTreeRootElement::attachElement(PassRefPtr<RenderStyle> style, RenderArena* arena) { ASSERT(shadowHost()); // Create the renderer with the specified style RenderObject* renderer = createRenderer(arena, style.get()); if (renderer) { setRenderer(renderer); renderer->setStyle(style); } // Set these explicitly since this normally happens during an attach() setAttached(); // Add the renderer to the render tree if (renderer) shadowHost()->renderer()->addChild(renderer); }
void MediaControlsApple::handleClickEvent(Event* event) { Node* currentTarget = event->currentTarget()->toNode(); Node* target = event->target()->toNode(); if ((currentTarget == &document() && !shadowHost()->contains(target)) || (currentTarget == this && !m_closedCaptionsContainer->contains(target))) { hideClosedCaptionTrackList(); event->stopImmediatePropagation(); event->setDefaultHandled(); } }
const AtomicString& SliderContainerElement::shadowPseudoId() const { DEFINE_STATIC_LOCAL(const AtomicString, mediaSliderContainer, ("-webkit-media-slider-container", AtomicString::ConstructFromLiteral)); DEFINE_STATIC_LOCAL(const AtomicString, sliderContainer, ("-webkit-slider-container", AtomicString::ConstructFromLiteral)); if (!shadowHost() || !shadowHost()->layoutObject()) return sliderContainer; const ComputedStyle& sliderStyle = shadowHost()->layoutObject()->styleRef(); switch (sliderStyle.appearance()) { case MediaSliderPart: case MediaSliderThumbPart: case MediaVolumeSliderPart: case MediaVolumeSliderThumbPart: case MediaFullScreenVolumeSliderPart: case MediaFullScreenVolumeSliderThumbPart: return mediaSliderContainer; default: return sliderContainer; } }
String SVGElement::title() const { // According to spec, we should not return titles when hovering over root <svg> elements (those // <title> elements are the title of the document, not a tooltip) so we instantly return. if (isOutermostSVGSVGElement()) return String(); if (inUseShadowTree()) { String useTitle(shadowHost()->title()); if (!useTitle.isEmpty()) return useTitle; } // If we aren't an instance in a <use> or the <use> title was not found, then find the first // <title> child of this element. // If a title child was found, return the text contents. if (Element* titleElement = Traversal<SVGTitleElement>::firstChild(*this)) return titleElement->innerText(); // Otherwise return a null/empty string. return String(); }
HTMLInputElement* SliderThumbElement::hostInput() const { // Only HTMLInputElement creates SliderThumbElement instances as its shadow nodes. // So, shadowHost() must be an HTMLInputElement. return toHTMLInputElement(shadowHost()); }
void ShadowRoot::setNeedsReattachHostChildrenAndShadow() { m_needsRecalculateContent = true; if (shadowHost()) shadowHost()->setNeedsStyleRecalc(); }
bool DetailsMarkerControl::rendererIsNeeded(const RenderStyle& style) { return downcast<HTMLSummaryElement>(shadowHost())->isMainSummary() && HTMLDivElement::rendererIsNeeded(style); }