| Index: Source/core/dom/Node.cpp
|
| diff --git a/Source/core/dom/Node.cpp b/Source/core/dom/Node.cpp
|
| index 9c563c07b4cbf96044eb8c8e96711a622cf7ee2f..7cf67788ec5d74f369bb0315871cb385fa3f5967 100644
|
| --- a/Source/core/dom/Node.cpp
|
| +++ b/Source/core/dom/Node.cpp
|
| @@ -600,7 +600,7 @@ void Node::normalize()
|
| // Both non-empty text nodes. Merge them.
|
| unsigned offset = text->length();
|
| text->appendData(nextText->data());
|
| - document()->textNodesMerged(nextText.get(), offset);
|
| + document().textNodesMerged(nextText.get(), offset);
|
| nextText->remove(IGNORE_EXCEPTION);
|
| }
|
|
|
| @@ -634,13 +634,13 @@ const AtomicString& Node::namespaceURI() const
|
|
|
| bool Node::isContentEditable(UserSelectAllTreatment treatment)
|
| {
|
| - document()->updateStyleIfNeeded();
|
| + document().updateStyleIfNeeded();
|
| return rendererIsEditable(Editable, treatment);
|
| }
|
|
|
| bool Node::isContentRichlyEditable()
|
| {
|
| - document()->updateStyleIfNeeded();
|
| + document().updateStyleIfNeeded();
|
| return rendererIsEditable(RichlyEditable, UserSelectAllIsAlwaysNonEditable);
|
| }
|
|
|
| @@ -684,11 +684,10 @@ bool Node::isEditableToAccessibility(EditableLevel editableLevel) const
|
| if (editableLevel == RichlyEditable)
|
| return false;
|
|
|
| - ASSERT(document());
|
| ASSERT(AXObjectCache::accessibilityEnabled());
|
| - ASSERT(document()->existingAXObjectCache());
|
| + ASSERT(document().existingAXObjectCache());
|
|
|
| - if (AXObjectCache* cache = document()->existingAXObjectCache())
|
| + if (AXObjectCache* cache = document().existingAXObjectCache())
|
| return cache->rootAXEditableElement(this);
|
|
|
| return false;
|
| @@ -792,8 +791,8 @@ void Node::markAncestorsWithChildNeedsDistributionRecalc()
|
| {
|
| for (Node* node = this; node && !node->childNeedsDistributionRecalc(); node = node->parentOrShadowHostNode())
|
| node->setChildNeedsDistributionRecalc();
|
| - if (document()->childNeedsDistributionRecalc())
|
| - document()->scheduleStyleRecalc();
|
| + if (document().childNeedsDistributionRecalc())
|
| + document().scheduleStyleRecalc();
|
| }
|
|
|
| inline void Node::setStyleChange(StyleChangeType changeType)
|
| @@ -806,8 +805,8 @@ inline void Node::markAncestorsWithChildNeedsStyleRecalc()
|
| for (ContainerNode* p = parentOrShadowHostNode(); p && !p->childNeedsStyleRecalc(); p = p->parentOrShadowHostNode())
|
| p->setChildNeedsStyleRecalc();
|
|
|
| - if (document()->needsStyleRecalc() || document()->childNeedsStyleRecalc())
|
| - document()->scheduleStyleRecalc();
|
| + if (document().needsStyleRecalc() || document().childNeedsStyleRecalc())
|
| + document().scheduleStyleRecalc();
|
| }
|
|
|
| void Node::refEventTarget()
|
| @@ -865,10 +864,10 @@ bool Node::shouldHaveFocusAppearance() const
|
|
|
| bool Node::isInert() const
|
| {
|
| - const HTMLDialogElement* dialog = document()->activeModalDialog();
|
| + const HTMLDialogElement* dialog = document().activeModalDialog();
|
| if (dialog && !containsIncludingShadowDOM(dialog) && !dialog->containsIncludingShadowDOM(this))
|
| return true;
|
| - return document()->ownerElement() && document()->ownerElement()->isInert();
|
| + return document().ownerElement() && document().ownerElement()->isInert();
|
| }
|
|
|
| unsigned Node::nodeIndex() const
|
| @@ -925,10 +924,10 @@ void Node::invalidateNodeListCachesInAncestors(const QualifiedName* attrName, El
|
| if (attrName && !attributeOwnerElement)
|
| return;
|
|
|
| - if (!document()->shouldInvalidateNodeListCaches(attrName))
|
| + if (!document().shouldInvalidateNodeListCaches(attrName))
|
| return;
|
|
|
| - document()->invalidateNodeListCaches(attrName);
|
| + document().invalidateNodeListCaches(attrName);
|
|
|
| for (Node* node = this; node; node = node->parentNode()) {
|
| if (!node->hasRareData())
|
| @@ -1001,7 +1000,7 @@ bool Node::containsIncludingShadowDOM(const Node* node) const
|
| if (this == node)
|
| return true;
|
|
|
| - if (document() != node->document())
|
| + if (&document() != &node->document())
|
| return false;
|
|
|
| if (inDocument() != node->inDocument())
|
| @@ -1063,7 +1062,7 @@ inline void Node::detachNode(Node* root, const AttachContext& context)
|
| void Node::reattach(const AttachContext& context)
|
| {
|
| // FIXME: Text::updateTextRenderer calls reattach outside a style recalc.
|
| - ASSERT(document()->inStyleRecalc() || isTextNode());
|
| + ASSERT(document().inStyleRecalc() || isTextNode());
|
| AttachContext reattachContext(context);
|
| reattachContext.performingReattach = true;
|
|
|
| @@ -1079,7 +1078,7 @@ void Node::attach(const AttachContext&)
|
| // If this node got a renderer it may be the previousRenderer() of sibling text nodes and thus affect the
|
| // result of Text::textRendererIsNeeded() for those nodes.
|
| // FIXME: This loop is no longer required once we lazy attach all the time.
|
| - if (renderer() && !document()->inStyleRecalc()) {
|
| + if (renderer() && !document().inStyleRecalc()) {
|
| for (Node* next = nextSibling(); next; next = next->nextSibling()) {
|
| if (next->renderer())
|
| break;
|
| @@ -1129,13 +1128,13 @@ void Node::detach(const AttachContext& context)
|
| // Do not remove the element's hovered and active status
|
| // if performing a reattach.
|
| if (!context.performingReattach) {
|
| - Document* doc = document();
|
| + Document& doc = document();
|
| if (isUserActionElement()) {
|
| if (hovered())
|
| - doc->hoveredNodeDetached(this);
|
| + doc.hoveredNodeDetached(this);
|
| if (inActiveChain())
|
| - doc->activeChainNodeDetached(this);
|
| - doc->userActionElements().didDetach(this);
|
| + doc.activeChainNodeDetached(this);
|
| + doc.userActionElements().didDetach(this);
|
| }
|
| }
|
|
|
| @@ -1229,7 +1228,7 @@ bool Node::canStartSelection() const
|
|
|
| bool Node::isRegisteredWithNamedFlow() const
|
| {
|
| - return document()->renderView()->flowThreadController()->isContentNodeRegisteredWithAnyNamedFlow(this);
|
| + return document().renderView()->flowThreadController()->isContentNodeRegisteredWithAnyNamedFlow(this);
|
| }
|
|
|
| Element* Node::shadowHost() const
|
| @@ -1319,7 +1318,7 @@ bool Node::isRootEditableElement() const
|
| Element* Node::rootEditableElement(EditableType editableType) const
|
| {
|
| if (editableType == HasEditableAXRole) {
|
| - if (AXObjectCache* cache = document()->existingAXObjectCache())
|
| + if (AXObjectCache* cache = document().existingAXObjectCache())
|
| return const_cast<Element*>(cache->rootAXEditableElement(this));
|
| }
|
|
|
| @@ -1350,7 +1349,7 @@ PassRefPtr<NodeList> Node::getElementsByTagName(const AtomicString& localName)
|
| if (localName.isNull())
|
| return 0;
|
|
|
| - if (document()->isHTMLDocument())
|
| + if (document().isHTMLDocument())
|
| return ensureRareData()->ensureNodeLists()->addCacheWithAtomicName<HTMLTagNodeList>(this, HTMLTagNodeListType, localName);
|
| return ensureRareData()->ensureNodeLists()->addCacheWithAtomicName<TagNodeList>(this, TagNodeListType, localName);
|
| }
|
| @@ -1389,7 +1388,7 @@ PassRefPtr<Element> Node::querySelector(const AtomicString& selectors, Exception
|
| return 0;
|
| }
|
|
|
| - SelectorQuery* selectorQuery = document()->selectorQueryCache()->add(selectors, document(), es);
|
| + SelectorQuery* selectorQuery = document().selectorQueryCache()->add(selectors, &document(), es);
|
| if (!selectorQuery)
|
| return 0;
|
| return selectorQuery->queryFirst(this);
|
| @@ -1402,7 +1401,7 @@ PassRefPtr<NodeList> Node::querySelectorAll(const AtomicString& selectors, Excep
|
| return 0;
|
| }
|
|
|
| - SelectorQuery* selectorQuery = document()->selectorQueryCache()->add(selectors, document(), es);
|
| + SelectorQuery* selectorQuery = document().selectorQueryCache()->add(selectors, &document(), es);
|
| if (!selectorQuery)
|
| return 0;
|
| return selectorQuery->queryAll(this);
|
| @@ -1410,7 +1409,7 @@ PassRefPtr<NodeList> Node::querySelectorAll(const AtomicString& selectors, Excep
|
|
|
| Document* Node::ownerDocument() const
|
| {
|
| - Document* doc = document();
|
| + Document* doc = &document();
|
| return doc == this ? 0 : doc;
|
| }
|
|
|
| @@ -1710,7 +1709,7 @@ void Node::setTextContent(const String& text, ExceptionState& es)
|
| ChildListMutationScope mutation(this);
|
| container->removeChildren();
|
| if (!text.isEmpty())
|
| - container->appendChild(document()->createTextNode(text), es);
|
| + container->appendChild(document().createTextNode(text), es);
|
| return;
|
| }
|
| case DOCUMENT_NODE:
|
| @@ -2060,8 +2059,8 @@ void Node::formatForDebugger(char* buffer, unsigned length) const
|
| static ContainerNode* parentOrShadowHostOrFrameOwner(const Node* node)
|
| {
|
| ContainerNode* parent = node->parentOrShadowHostNode();
|
| - if (!parent && node->document()->frame())
|
| - parent = node->document()->frame()->ownerElement();
|
| + if (!parent && node->document().frame())
|
| + parent = node->document().frame()->ownerElement();
|
| return parent;
|
| }
|
|
|
| @@ -2134,7 +2133,7 @@ const AtomicString& Node::interfaceName() const
|
|
|
| ScriptExecutionContext* Node::scriptExecutionContext() const
|
| {
|
| - return document();
|
| + return &document();
|
| }
|
|
|
| void Node::didMoveToNewDocument(Document* oldDocument)
|
| @@ -2146,7 +2145,7 @@ void Node::didMoveToNewDocument(Document* oldDocument)
|
| if (!listenerMap.isEmpty()) {
|
| Vector<AtomicString> types = listenerMap.eventTypes();
|
| for (unsigned i = 0; i < types.size(); ++i)
|
| - document()->addListenerTypeIfNeeded(types[i]);
|
| + document().addListenerTypeIfNeeded(types[i]);
|
| }
|
| }
|
|
|
| @@ -2157,31 +2156,31 @@ void Node::didMoveToNewDocument(Document* oldDocument)
|
| const EventListenerVector& mousewheelListeners = getEventListeners(eventNames().mousewheelEvent);
|
| for (size_t i = 0; i < mousewheelListeners.size(); ++i) {
|
| oldDocument->didRemoveWheelEventHandler();
|
| - document()->didAddWheelEventHandler();
|
| + document().didAddWheelEventHandler();
|
| }
|
|
|
| const EventListenerVector& wheelListeners = getEventListeners(eventNames().wheelEvent);
|
| for (size_t i = 0; i < wheelListeners.size(); ++i) {
|
| oldDocument->didRemoveWheelEventHandler();
|
| - document()->didAddWheelEventHandler();
|
| + document().didAddWheelEventHandler();
|
| }
|
|
|
| if (const TouchEventTargetSet* touchHandlers = oldDocument ? oldDocument->touchEventTargets() : 0) {
|
| while (touchHandlers->contains(this)) {
|
| oldDocument->didRemoveTouchEventHandler(this);
|
| - document()->didAddTouchEventHandler(this);
|
| + document().didAddTouchEventHandler(this);
|
| }
|
| }
|
|
|
| if (Vector<OwnPtr<MutationObserverRegistration> >* registry = mutationObserverRegistry()) {
|
| for (size_t i = 0; i < registry->size(); ++i) {
|
| - document()->addMutationObserverTypes(registry->at(i)->mutationTypes());
|
| + document().addMutationObserverTypes(registry->at(i)->mutationTypes());
|
| }
|
| }
|
|
|
| if (HashSet<MutationObserverRegistration*>* transientRegistry = transientMutationObserverRegistry()) {
|
| for (HashSet<MutationObserverRegistration*>::iterator iter = transientRegistry->begin(); iter != transientRegistry->end(); ++iter) {
|
| - document()->addMutationObserverTypes((*iter)->mutationTypes());
|
| + document().addMutationObserverTypes((*iter)->mutationTypes());
|
| }
|
| }
|
| }
|
| @@ -2191,12 +2190,12 @@ static inline bool tryAddEventListener(Node* targetNode, const AtomicString& eve
|
| if (!targetNode->EventTarget::addEventListener(eventType, listener, useCapture))
|
| return false;
|
|
|
| - Document* document = targetNode->document();
|
| - document->addListenerTypeIfNeeded(eventType);
|
| + Document& document = targetNode->document();
|
| + document.addListenerTypeIfNeeded(eventType);
|
| if (eventType == eventNames().wheelEvent || eventType == eventNames().mousewheelEvent)
|
| - document->didAddWheelEventHandler();
|
| + document.didAddWheelEventHandler();
|
| else if (eventNames().isTouchEventType(eventType))
|
| - document->didAddTouchEventHandler(targetNode);
|
| + document.didAddTouchEventHandler(targetNode);
|
|
|
| return true;
|
| }
|
| @@ -2213,11 +2212,11 @@ static inline bool tryRemoveEventListener(Node* targetNode, const AtomicString&
|
|
|
| // FIXME: Notify Document that the listener has vanished. We need to keep track of a number of
|
| // listeners for each type, not just a bool - see https://bugs.webkit.org/show_bug.cgi?id=33861
|
| - Document* document = targetNode->document();
|
| + Document& document = targetNode->document();
|
| if (eventType == eventNames().wheelEvent || eventType == eventNames().mousewheelEvent)
|
| - document->didRemoveWheelEventHandler();
|
| + document.didRemoveWheelEventHandler();
|
| else if (eventNames().isTouchEventType(eventType))
|
| - document->didRemoveTouchEventHandler(targetNode);
|
| + document.didRemoveTouchEventHandler(targetNode);
|
|
|
| return true;
|
| }
|
| @@ -2318,7 +2317,7 @@ void Node::registerMutationObserver(MutationObserver* observer, MutationObserver
|
| registration = registry.last().get();
|
| }
|
|
|
| - document()->addMutationObserverTypes(registration->mutationTypes());
|
| + document().addMutationObserverTypes(registration->mutationTypes());
|
| }
|
|
|
| void Node::unregisterMutationObserver(MutationObserverRegistration* registration)
|
| @@ -2358,7 +2357,7 @@ void Node::unregisterTransientMutationObserver(MutationObserverRegistration* reg
|
|
|
| void Node::notifyMutationObserversNodeWillDetach()
|
| {
|
| - if (!document()->hasMutationObservers())
|
| + if (!document().hasMutationObservers())
|
| return;
|
|
|
| for (Node* node = parentNode(); node; node = node->parentNode()) {
|
| @@ -2412,7 +2411,7 @@ void Node::dispatchSubtreeModifiedEvent()
|
|
|
| ASSERT(!NoEventDispatchAssertion::isEventDispatchForbidden());
|
|
|
| - if (!document()->hasListenerType(Document::DOMSUBTREEMODIFIED_LISTENER))
|
| + if (!document().hasListenerType(Document::DOMSUBTREEMODIFIED_LISTENER))
|
| return;
|
|
|
| dispatchScopedEvent(MutationEvent::create(eventNames().DOMSubtreeModifiedEvent, true));
|
| @@ -2421,7 +2420,7 @@ void Node::dispatchSubtreeModifiedEvent()
|
| bool Node::dispatchDOMActivateEvent(int detail, PassRefPtr<Event> underlyingEvent)
|
| {
|
| ASSERT(!NoEventDispatchAssertion::isEventDispatchForbidden());
|
| - RefPtr<UIEvent> event = UIEvent::create(eventNames().DOMActivateEvent, true, true, document()->defaultView(), detail);
|
| + RefPtr<UIEvent> event = UIEvent::create(eventNames().DOMActivateEvent, true, true, document().defaultView(), detail);
|
| event->setUnderlyingEvent(underlyingEvent);
|
| dispatchScopedEvent(event);
|
| return event->defaultHandled();
|
| @@ -2429,18 +2428,18 @@ bool Node::dispatchDOMActivateEvent(int detail, PassRefPtr<Event> underlyingEven
|
|
|
| bool Node::dispatchKeyEvent(const PlatformKeyboardEvent& event)
|
| {
|
| - return EventDispatcher::dispatchEvent(this, KeyboardEventDispatchMediator::create(KeyboardEvent::create(event, document()->defaultView())));
|
| + return EventDispatcher::dispatchEvent(this, KeyboardEventDispatchMediator::create(KeyboardEvent::create(event, document().defaultView())));
|
| }
|
|
|
| bool Node::dispatchMouseEvent(const PlatformMouseEvent& event, const AtomicString& eventType,
|
| int detail, Node* relatedTarget)
|
| {
|
| - return EventDispatcher::dispatchEvent(this, MouseEventDispatchMediator::create(MouseEvent::create(eventType, document()->defaultView(), event, detail, relatedTarget)));
|
| + return EventDispatcher::dispatchEvent(this, MouseEventDispatchMediator::create(MouseEvent::create(eventType, document().defaultView(), event, detail, relatedTarget)));
|
| }
|
|
|
| bool Node::dispatchGestureEvent(const PlatformGestureEvent& event)
|
| {
|
| - RefPtr<GestureEvent> gestureEvent = GestureEvent::create(document()->defaultView(), event);
|
| + RefPtr<GestureEvent> gestureEvent = GestureEvent::create(document().defaultView(), event);
|
| if (!gestureEvent.get())
|
| return false;
|
| return EventDispatcher::dispatchEvent(this, GestureEventDispatchMediator::create(gestureEvent));
|
| @@ -2458,7 +2457,7 @@ void Node::dispatchSimulatedClick(Event* underlyingEvent, SimulatedClickMouseEve
|
|
|
| bool Node::dispatchBeforeLoadEvent(const String& sourceURL)
|
| {
|
| - if (!document()->hasListenerType(Document::BEFORELOAD_LISTENER))
|
| + if (!document().hasListenerType(Document::BEFORELOAD_LISTENER))
|
| return true;
|
|
|
| RefPtr<Node> protector(this);
|
| @@ -2469,7 +2468,7 @@ bool Node::dispatchBeforeLoadEvent(const String& sourceURL)
|
|
|
| bool Node::dispatchWheelEvent(const PlatformWheelEvent& event)
|
| {
|
| - return EventDispatcher::dispatchEvent(this, WheelEventDispatchMediator::create(event, document()->defaultView()));
|
| + return EventDispatcher::dispatchEvent(this, WheelEventDispatchMediator::create(event, document().defaultView()));
|
| }
|
|
|
| void Node::dispatchChangeEvent()
|
| @@ -2489,7 +2488,7 @@ void Node::defaultEventHandler(Event* event)
|
| const AtomicString& eventType = event->type();
|
| if (eventType == eventNames().keydownEvent || eventType == eventNames().keypressEvent) {
|
| if (event->isKeyboardEvent()) {
|
| - if (Frame* frame = document()->frame())
|
| + if (Frame* frame = document().frame())
|
| frame->eventHandler()->defaultKeyboardEventHandler(toKeyboardEvent(event));
|
| }
|
| } else if (eventType == eventNames().clickEvent) {
|
| @@ -2497,11 +2496,11 @@ void Node::defaultEventHandler(Event* event)
|
| if (dispatchDOMActivateEvent(detail, event))
|
| event->setDefaultHandled();
|
| } else if (eventType == eventNames().contextmenuEvent) {
|
| - if (Page* page = document()->page())
|
| + if (Page* page = document().page())
|
| page->contextMenuController().handleContextMenuEvent(event);
|
| } else if (eventType == eventNames().textInputEvent) {
|
| if (event->hasInterface(eventNames().interfaceForTextEvent))
|
| - if (Frame* frame = document()->frame())
|
| + if (Frame* frame = document().frame())
|
| frame->eventHandler()->defaultTextInputEventHandler(static_cast<TextEvent*>(event));
|
| #if OS(WINDOWS)
|
| } else if (eventType == eventNames().mousedownEvent && event->isMouseEvent()) {
|
| @@ -2515,7 +2514,7 @@ void Node::defaultEventHandler(Event* event)
|
| renderer = renderer->parent();
|
|
|
| if (renderer) {
|
| - if (Frame* frame = document()->frame())
|
| + if (Frame* frame = document().frame())
|
| frame->eventHandler()->startPanScrolling(renderer);
|
| }
|
| }
|
| @@ -2530,7 +2529,7 @@ void Node::defaultEventHandler(Event* event)
|
| startNode = startNode->parentOrShadowHostNode();
|
|
|
| if (startNode && startNode->renderer())
|
| - if (Frame* frame = document()->frame())
|
| + if (Frame* frame = document().frame())
|
| frame->eventHandler()->defaultWheelEventHandler(startNode, wheelEvent);
|
| } else if (event->type() == eventNames().webkitEditableContentChangedEvent) {
|
| dispatchInputEvent();
|
| @@ -2607,7 +2606,7 @@ void Node::removedLastRef()
|
|
|
| void Node::textRects(Vector<IntRect>& rects) const
|
| {
|
| - RefPtr<Range> range = Range::create(document());
|
| + RefPtr<Range> range = Range::create(&document());
|
| range->selectNodeContents(const_cast<Node*>(this), IGNORE_EXCEPTION);
|
| range->textRects(rects);
|
| }
|
| @@ -2652,7 +2651,7 @@ void Node::updateAncestorConnectedSubframeCountForInsertion() const
|
|
|
| PassRefPtr<NodeList> Node::getDestinationInsertionPoints()
|
| {
|
| - document()->updateDistributionForNodeIfNeeded(this);
|
| + document().updateDistributionForNodeIfNeeded(this);
|
| Vector<InsertionPoint*, 8> insertionPoints;
|
| collectInsertionPointsWhereNodeIsDistributed(this, insertionPoints);
|
| Vector<RefPtr<Node> > filteredInsertionPoints;
|
| @@ -2689,41 +2688,41 @@ size_t Node::numberOfScopedHTMLStyleChildren() const
|
|
|
| void Node::setFocus(bool flag)
|
| {
|
| - document()->userActionElements().setFocused(this, flag);
|
| + document().userActionElements().setFocused(this, flag);
|
| }
|
|
|
| void Node::setActive(bool flag, bool)
|
| {
|
| - document()->userActionElements().setActive(this, flag);
|
| + document().userActionElements().setActive(this, flag);
|
| }
|
|
|
| void Node::setHovered(bool flag)
|
| {
|
| - document()->userActionElements().setHovered(this, flag);
|
| + document().userActionElements().setHovered(this, flag);
|
| }
|
|
|
| bool Node::isUserActionElementActive() const
|
| {
|
| ASSERT(isUserActionElement());
|
| - return document()->userActionElements().isActive(this);
|
| + return document().userActionElements().isActive(this);
|
| }
|
|
|
| bool Node::isUserActionElementInActiveChain() const
|
| {
|
| ASSERT(isUserActionElement());
|
| - return document()->userActionElements().isInActiveChain(this);
|
| + return document().userActionElements().isInActiveChain(this);
|
| }
|
|
|
| bool Node::isUserActionElementHovered() const
|
| {
|
| ASSERT(isUserActionElement());
|
| - return document()->userActionElements().isHovered(this);
|
| + return document().userActionElements().isHovered(this);
|
| }
|
|
|
| bool Node::isUserActionElementFocused() const
|
| {
|
| ASSERT(isUserActionElement());
|
| - return document()->userActionElements().isFocused(this);
|
| + return document().userActionElements().isFocused(this);
|
| }
|
|
|
| void Node::setCustomElementState(CustomElementState newState)
|
|
|