void detachRenderTree(Element* current, const AttachContext& context) { WidgetHierarchyUpdatesSuspensionScope suspendWidgetHierarchyUpdates; if (current->hasCustomStyleResolveCallbacks()) current->willDetachRenderers(); current->clearStyleDerivedDataBeforeDetachingRenderer(); // Do not remove the element's hovered and active status // if performing a reattach. if (!context.performingReattach) current->clearHoverAndActiveStatusBeforeDetachingRenderer(); if (ShadowRoot* shadowRoot = current->shadowRoot()) detachShadowRoot(shadowRoot, context); detachChildren(current, context); if (current->renderer()) current->renderer()->destroyAndCleanupAnonymousWrappers(); current->setRenderer(0); current->setAttached(false); if (current->hasCustomStyleResolveCallbacks()) current->didDetachRenderers(); }
static void detachRenderTree(Element& current, DetachType detachType) { WidgetHierarchyUpdatesSuspensionScope suspendWidgetHierarchyUpdates; if (current.hasCustomStyleResolveCallbacks()) current.willDetachRenderers(); current.clearStyleDerivedDataBeforeDetachingRenderer(); // Do not remove the element's hovered and active status // if performing a reattach. if (detachType != ReattachDetach) current.clearHoverAndActiveStatusBeforeDetachingRenderer(); if (ShadowRoot* shadowRoot = current.shadowRoot()) detachShadowRoot(*shadowRoot, detachType); detachChildren(current, detachType); if (current.renderer()) current.renderer()->destroyAndCleanupAnonymousWrappers(); current.setRenderer(0); current.setAttached(false); if (current.hasCustomStyleResolveCallbacks()) current.didDetachRenderers(); }