Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(28)

Side by Side Diff: third_party/WebKit/Source/core/dom/Node.cpp

Issue 2171493003: [Editing][DOM][CodeHealth] Make Node::hasEditableStyle global functions. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) 3 * (C) 1999 Antti Koivisto (koivisto@kde.org)
4 * (C) 2001 Dirk Mueller (mueller@kde.org) 4 * (C) 2001 Dirk Mueller (mueller@kde.org)
5 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All r ights reserved. 5 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All r ights reserved.
6 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) 6 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)
7 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo bile.com/) 7 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo bile.com/)
8 * 8 *
9 * This library is free software; you can redistribute it and/or 9 * This library is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU Library General Public 10 * modify it under the terms of the GNU Library General Public
(...skipping 579 matching lines...) Expand 10 before | Expand all | Expand 10 after
590 return false; 590 return false;
591 591
592 // FIXME(dmazzoni): support ScopedAXObjectCache (crbug/489851). 592 // FIXME(dmazzoni): support ScopedAXObjectCache (crbug/489851).
593 if (AXObjectCache* cache = node.document().existingAXObjectCache()) 593 if (AXObjectCache* cache = node.document().existingAXObjectCache())
594 return cache->rootAXEditableElement(&node); 594 return cache->rootAXEditableElement(&node);
595 595
596 return false; 596 return false;
597 } 597 }
598 598
599 // TODO(yoichio): Move to core/editing 599 // TODO(yoichio): Move to core/editing
600 bool Node::hasEditableStyle(EditableType editableType) const 600 bool hasEditableStyle(const Node& node, EditableType editableType)
601 { 601 {
602 switch (editableType) { 602 switch (editableType) {
603 case ContentIsEditable: 603 case ContentIsEditable:
604 return blink::hasEditableStyle(*this, Editable); 604 return blink::hasEditableStyle(node, Editable);
605 case HasEditableAXRole: 605 case HasEditableAXRole:
606 return isEditableToAccessibility(*this, Editable); 606 return isEditableToAccessibility(node, Editable);
607 } 607 }
608 NOTREACHED(); 608 NOTREACHED();
609 return false; 609 return false;
610 } 610 }
611 611
612 // TODO(yoichio): Move to core/editing 612 // TODO(yoichio): Move to core/editing
613 bool Node::layoutObjectIsRichlyEditable(EditableType editableType) const 613 bool layoutObjectIsRichlyEditable(const Node& node, EditableType editableType)
tkent 2016/07/21 09:26:40 Off topic: The names 'hasEditableStyle' and 'layou
614 { 614 {
615 switch (editableType) { 615 switch (editableType) {
616 case ContentIsEditable: 616 case ContentIsEditable:
617 return blink::hasEditableStyle(*this, RichlyEditable); 617 return blink::hasEditableStyle(node, RichlyEditable);
618 case HasEditableAXRole: 618 case HasEditableAXRole:
619 return isEditableToAccessibility(*this, RichlyEditable); 619 return isEditableToAccessibility(node, RichlyEditable);
620 } 620 }
621 NOTREACHED(); 621 NOTREACHED();
622 return false; 622 return false;
623 } 623 }
624 624
625 LayoutBox* Node::layoutBox() const 625 LayoutBox* Node::layoutBox() const
626 { 626 {
627 LayoutObject* layoutObject = this->layoutObject(); 627 LayoutObject* layoutObject = this->layoutObject();
628 return layoutObject && layoutObject->isBox() ? toLayoutBox(layoutObject) : n ullptr; 628 return layoutObject && layoutObject->isBox() ? toLayoutBox(layoutObject) : n ullptr;
629 } 629 }
(...skipping 376 matching lines...) Expand 10 before | Expand all | Expand 10 after
1006 return 0; 1006 return 0;
1007 } 1007 }
1008 1008
1009 // FIXME: Shouldn't these functions be in the editing code? Code that asks ques tions about HTML in the core DOM class 1009 // FIXME: Shouldn't these functions be in the editing code? Code that asks ques tions about HTML in the core DOM class
1010 // is obviously misplaced. 1010 // is obviously misplaced.
1011 bool Node::canStartSelection() const 1011 bool Node::canStartSelection() const
1012 { 1012 {
1013 if (isDisabledFormControl(this)) 1013 if (isDisabledFormControl(this))
1014 return false; 1014 return false;
1015 1015
1016 if (hasEditableStyle()) 1016 if (hasEditableStyle(*this))
1017 return true; 1017 return true;
1018 1018
1019 if (layoutObject()) { 1019 if (layoutObject()) {
1020 const ComputedStyle& style = layoutObject()->styleRef(); 1020 const ComputedStyle& style = layoutObject()->styleRef();
1021 // We allow selections to begin within an element that has -webkit-user- select: none set, 1021 // We allow selections to begin within an element that has -webkit-user- select: none set,
1022 // but if the element is draggable then dragging should take priority ov er selection. 1022 // but if the element is draggable then dragging should take priority ov er selection.
1023 if (style.userDrag() == DRAG_ELEMENT && style.userSelect() == SELECT_NON E) 1023 if (style.userDrag() == DRAG_ELEMENT && style.userSelect() == SELECT_NON E)
1024 return false; 1024 return false;
1025 } 1025 }
1026 ContainerNode* parent = FlatTreeTraversal::parent(*this); 1026 ContainerNode* parent = FlatTreeTraversal::parent(*this);
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
1135 ContainerNode* Node::parentOrShadowHostOrTemplateHostNode() const 1135 ContainerNode* Node::parentOrShadowHostOrTemplateHostNode() const
1136 { 1136 {
1137 if (isDocumentFragment() && toDocumentFragment(this)->isTemplateContent()) 1137 if (isDocumentFragment() && toDocumentFragment(this)->isTemplateContent())
1138 return static_cast<const TemplateContentDocumentFragment*>(this)->host() ; 1138 return static_cast<const TemplateContentDocumentFragment*>(this)->host() ;
1139 return parentOrShadowHostNode(); 1139 return parentOrShadowHostNode();
1140 } 1140 }
1141 1141
1142 // TODO(yoichio): Move to core/editing 1142 // TODO(yoichio): Move to core/editing
1143 bool isRootEditableElement(const Node& node) 1143 bool isRootEditableElement(const Node& node)
1144 { 1144 {
1145 return node.hasEditableStyle() && node.isElementNode() && (!node.parentNode( ) || !node.parentNode()->hasEditableStyle() 1145 return hasEditableStyle(node) && node.isElementNode() && (!node.parentNode() || !hasEditableStyle(*node.parentNode())
1146 || !node.parentNode()->isElementNode() || &node == node.document().body( )); 1146 || !node.parentNode()->isElementNode() || &node == node.document().body( ));
1147 } 1147 }
1148 1148
1149 // TODO(yoichio): Move to core/editing 1149 // TODO(yoichio): Move to core/editing
1150 Element* rootEditableElement(const Node& node, EditableType editableType) 1150 Element* rootEditableElement(const Node& node, EditableType editableType)
1151 { 1151 {
1152 if (editableType == HasEditableAXRole) { 1152 if (editableType == HasEditableAXRole) {
1153 if (AXObjectCache* cache = node.document().existingAXObjectCache()) 1153 if (AXObjectCache* cache = node.document().existingAXObjectCache())
1154 return const_cast<Element*>(cache->rootAXEditableElement(&node)); 1154 return const_cast<Element*>(cache->rootAXEditableElement(&node));
1155 } 1155 }
1156 1156
1157 return rootEditableElement(node); 1157 return rootEditableElement(node);
1158 } 1158 }
1159 1159
1160 // TODO(yoichio): Move to core/editing 1160 // TODO(yoichio): Move to core/editing
1161 Element* rootEditableElement(const Node& node) 1161 Element* rootEditableElement(const Node& node)
1162 { 1162 {
1163 const Node* result = nullptr; 1163 const Node* result = nullptr;
1164 for (const Node* n = &node; n && n->hasEditableStyle(); n = n->parentNode()) { 1164 for (const Node* n = &node; n && hasEditableStyle(*n); n = n->parentNode()) {
1165 if (n->isElementNode()) 1165 if (n->isElementNode())
1166 result = n; 1166 result = n;
1167 if (node.document().body() == n) 1167 if (node.document().body() == n)
1168 break; 1168 break;
1169 } 1169 }
1170 return toElement(const_cast<Node*>(result)); 1170 return toElement(const_cast<Node*>(result));
1171 } 1171 }
1172 1172
1173 // FIXME: End of obviously misplaced HTML editing functions. Try to move these out of Node. 1173 // FIXME: End of obviously misplaced HTML editing functions. Try to move these out of Node.
1174 1174
(...skipping 475 matching lines...) Expand 10 before | Expand all | Expand 10 after
1650 WTFLogAlways("%s?%s\t%p\n", prefix, nodeName().utf8().data(), this); 1650 WTFLogAlways("%s?%s\t%p\n", prefix, nodeName().utf8().data(), this);
1651 } else if (isShadowRoot()) { 1651 } else if (isShadowRoot()) {
1652 // nodeName of ShadowRoot is #document-fragment. It's confused with 1652 // nodeName of ShadowRoot is #document-fragment. It's confused with
1653 // DocumentFragment. 1653 // DocumentFragment.
1654 WTFLogAlways("%s#shadow-root\t%p\n", prefix, this); 1654 WTFLogAlways("%s#shadow-root\t%p\n", prefix, this);
1655 } else { 1655 } else {
1656 StringBuilder attrs; 1656 StringBuilder attrs;
1657 appendAttributeDesc(this, attrs, idAttr, " ID"); 1657 appendAttributeDesc(this, attrs, idAttr, " ID");
1658 appendAttributeDesc(this, attrs, classAttr, " CLASS"); 1658 appendAttributeDesc(this, attrs, classAttr, " CLASS");
1659 appendAttributeDesc(this, attrs, styleAttr, " STYLE"); 1659 appendAttributeDesc(this, attrs, styleAttr, " STYLE");
1660 if (hasEditableStyle()) 1660 if (hasEditableStyle(*this))
1661 attrs.append(" (editable)"); 1661 attrs.append(" (editable)");
1662 if (document().focusedElement() == this) 1662 if (document().focusedElement() == this)
1663 attrs.append(" (focused)"); 1663 attrs.append(" (focused)");
1664 WTFLogAlways("%s%s\t%p%s\n", prefix, nodeName().utf8().data(), this, att rs.toString().utf8().data()); 1664 WTFLogAlways("%s%s\t%p%s\n", prefix, nodeName().utf8().data(), this, att rs.toString().utf8().data());
1665 } 1665 }
1666 } 1666 }
1667 1667
1668 void Node::showTreeForThis() const 1668 void Node::showTreeForThis() const
1669 { 1669 {
1670 showTreeAndMark(this, "*"); 1670 showTreeAndMark(this, "*");
(...skipping 865 matching lines...) Expand 10 before | Expand all | Expand 10 after
2536 2536
2537 void showNodePath(const blink::Node* node) 2537 void showNodePath(const blink::Node* node)
2538 { 2538 {
2539 if (node) 2539 if (node)
2540 node->showNodePathForThis(); 2540 node->showNodePathForThis();
2541 else 2541 else
2542 fprintf(stderr, "Cannot showNodePath for (nil)\n"); 2542 fprintf(stderr, "Cannot showNodePath for (nil)\n");
2543 } 2543 }
2544 2544
2545 #endif 2545 #endif
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/dom/Node.h ('k') | third_party/WebKit/Source/core/editing/EditingStrategy.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698