| Index: sky/engine/core/dom/Node.cpp
|
| diff --git a/sky/engine/core/dom/Node.cpp b/sky/engine/core/dom/Node.cpp
|
| index 7749a7308a8f2d551f2bc8a6e131446623cdfb06..160ae41468d6d540ce021706f865fadd05e67753 100644
|
| --- a/sky/engine/core/dom/Node.cpp
|
| +++ b/sky/engine/core/dom/Node.cpp
|
| @@ -27,10 +27,7 @@
|
|
|
| #include "base/trace_event/trace_event_impl.h"
|
| #include "gen/sky/core/HTMLNames.h"
|
| -#include "sky/engine/bindings/core/v8/DOMDataStore.h"
|
| -#include "sky/engine/bindings/core/v8/ExceptionState.h"
|
| -#include "sky/engine/bindings/core/v8/ScriptCallStackFactory.h"
|
| -#include "sky/engine/bindings/core/v8/V8DOMWrapper.h"
|
| +#include "sky/engine/bindings2/exception_state.h"
|
| #include "sky/engine/core/css/resolver/StyleResolver.h"
|
| #include "sky/engine/core/dom/Attr.h"
|
| #include "sky/engine/core/dom/Attribute.h"
|
| @@ -74,6 +71,7 @@
|
| #include "sky/engine/platform/JSONValues.h"
|
| #include "sky/engine/platform/Partitions.h"
|
| #include "sky/engine/platform/TraceEvent.h"
|
| +#include "sky/engine/tonic/dart_gc_visitor.h"
|
| #include "sky/engine/wtf/HashSet.h"
|
| #include "sky/engine/wtf/PassOwnPtr.h"
|
| #include "sky/engine/wtf/RefCountedLeakCounter.h"
|
| @@ -320,6 +318,21 @@ void Node::clearRareData()
|
| clearFlag(HasRareDataFlag);
|
| }
|
|
|
| +static const Node* rootForGC(const Node* node)
|
| +{
|
| + if (node->inDocument())
|
| + return &node->document();
|
| + while (Node* parent = node->parentOrShadowHostOrTemplateHostNode())
|
| + node = parent;
|
| + return node;
|
| +}
|
| +
|
| +void Node::AcceptDartGCVisitor(DartGCVisitor& visitor) const
|
| +{
|
| + visitor.AddToSetForRoot(rootForGC(this), dart_wrapper());
|
| + EventTarget::AcceptDartGCVisitor(visitor);
|
| +}
|
| +
|
| Node* Node::toNode()
|
| {
|
| return this;
|
| @@ -335,7 +348,7 @@ PassRefPtr<Node> Node::insertBefore(PassRefPtr<Node> newChild, Node* refChild, E
|
| if (isContainerNode())
|
| return toContainerNode(this)->insertBefore(newChild, refChild, exceptionState);
|
|
|
| - exceptionState.throwDOMException(HierarchyRequestError, "This node type does not support this method.");
|
| + exceptionState.ThrowDOMException(HierarchyRequestError, "This node type does not support this method.");
|
| return nullptr;
|
| }
|
|
|
| @@ -344,7 +357,7 @@ PassRefPtr<Node> Node::replaceChild(PassRefPtr<Node> newChild, PassRefPtr<Node>
|
| if (isContainerNode())
|
| return toContainerNode(this)->replaceChild(newChild, oldChild, exceptionState);
|
|
|
| - exceptionState.throwDOMException(HierarchyRequestError, "This node type does not support this method.");
|
| + exceptionState.ThrowDOMException(HierarchyRequestError, "This node type does not support this method.");
|
| return nullptr;
|
| }
|
|
|
| @@ -353,7 +366,7 @@ PassRefPtr<Node> Node::removeChild(PassRefPtr<Node> oldChild, ExceptionState& ex
|
| if (isContainerNode())
|
| return toContainerNode(this)->removeChild(oldChild, exceptionState);
|
|
|
| - exceptionState.throwDOMException(NotFoundError, "This node type does not support this method.");
|
| + exceptionState.ThrowDOMException(NotFoundError, "This node type does not support this method.");
|
| return nullptr;
|
| }
|
|
|
| @@ -362,7 +375,7 @@ PassRefPtr<Node> Node::appendChild(PassRefPtr<Node> newChild, ExceptionState& ex
|
| if (isContainerNode())
|
| return toContainerNode(this)->appendChild(newChild, exceptionState);
|
|
|
| - exceptionState.throwDOMException(HierarchyRequestError, "This node type does not support this method.");
|
| + exceptionState.ThrowDOMException(HierarchyRequestError, "This node type does not support this method.");
|
| return nullptr;
|
| }
|
|
|
| @@ -482,26 +495,6 @@ private:
|
| RefPtr<JSONValue> m_value;
|
| };
|
|
|
| -void addJsStack(JSONArray* stackFrames)
|
| -{
|
| - RefPtr<ScriptCallStack> stack = createScriptCallStack(10);
|
| - if (!stack)
|
| - return;
|
| - for (size_t i = 0; i < stack->size(); i++)
|
| - stackFrames->pushString(stack->at(i).functionName());
|
| -}
|
| -
|
| -scoped_refptr<base::debug::ConvertableToTraceFormat> jsonObjectForStyleInvalidation(unsigned nodeCount, const Node* rootNode)
|
| -{
|
| - RefPtr<JSONObject> value = JSONObject::create();
|
| - value->setNumber("node_count", nodeCount);
|
| - value->setString("root_node", rootNode->debugName());
|
| - RefPtr<JSONArray> stack;
|
| - addJsStack(stack.get());
|
| - value->setArray("js_stack", stack.release());
|
| - return make_scoped_refptr(new JSONTraceValue(value));
|
| -}
|
| -
|
| } // namespace
|
|
|
| unsigned Node::styledSubtreeSize() const
|
| @@ -525,9 +518,8 @@ void Node::traceStyleChange(StyleChangeType changeType)
|
| if (nodeCount < kMinLoggedSize)
|
| return;
|
|
|
| - TRACE_EVENT_INSTANT1(TRACE_DISABLED_BY_DEFAULT("style.debug"),
|
| - "Node::setNeedsStyleRecalc", TRACE_EVENT_SCOPE_PROCESS,
|
| - "data", jsonObjectForStyleInvalidation(nodeCount, this)
|
| + TRACE_EVENT_INSTANT0(TRACE_DISABLED_BY_DEFAULT("style.debug"),
|
| + "Node::setNeedsStyleRecalc", TRACE_EVENT_SCOPE_PROCESS
|
| );
|
| }
|
|
|
| @@ -1602,21 +1594,6 @@ unsigned Node::lengthOfContents() const
|
| return 0;
|
| }
|
|
|
| -v8::Handle<v8::Object> Node::wrap(v8::Handle<v8::Object> creationContext, v8::Isolate* isolate)
|
| -{
|
| - ASSERT(!DOMDataStore::containsWrapperNonTemplate(this, isolate));
|
| -
|
| - const WrapperTypeInfo* wrapperType = wrapperTypeInfo();
|
| -
|
| - v8::Handle<v8::Object> wrapper = V8DOMWrapper::createWrapper(creationContext, wrapperType, toScriptWrappableBase(), isolate);
|
| - if (UNLIKELY(wrapper.IsEmpty()))
|
| - return wrapper;
|
| -
|
| - wrapperType->installConditionallyEnabledProperties(wrapper, isolate);
|
| - V8DOMWrapper::associateObjectWithWrapperNonTemplate(this, wrapperType, wrapper, isolate);
|
| - return wrapper;
|
| -}
|
| -
|
| } // namespace blink
|
|
|
| #ifndef NDEBUG
|
|
|