Commit 9bc76751 authored by Ian Kilpatrick's avatar Ian Kilpatrick Committed by Commit Bot

[css-layout-api] Change TraceWrapperV8Reference to ScopedPersistent.

The ownership chain for the instance_ variable looks like:
LayoutCustom -> CSSLayoutDefinition::Instance -> v8::Object (instance_).

As LayoutCustom isn't a ScriptWrappable (lifetime is manually controlled)
using the TraceWrapperV8Reference was the wrong thing to do there.

Changed to ScopedPersistent.

Bug: 726125
Change-Id: I452a44e6914d042ca12f3bce3f8bce4a068bba5d
Reviewed-on: https://chromium-review.googlesource.com/986986Reviewed-by: default avatarKentaro Hara <haraken@chromium.org>
Commit-Queue: Ian Kilpatrick <ikilpatrick@chromium.org>
Cr-Commit-Position: refs/heads/master@{#547081}
parent c1116d78
......@@ -274,11 +274,6 @@ void CSSLayoutDefinition::Instance::Trace(blink::Visitor* visitor) {
visitor->Trace(definition_);
}
void CSSLayoutDefinition::Instance::TraceWrappers(
const ScriptWrappableVisitor* visitor) const {
visitor->TraceWrappers(instance_.Cast<v8::Value>());
}
void CSSLayoutDefinition::TraceWrappers(
const ScriptWrappableVisitor* visitor) const {
visitor->TraceWrappers(constructor_.Cast<v8::Value>());
......
......@@ -7,6 +7,7 @@
#include "core/css/cssom/CSSStyleValue.h"
#include "core/css_property_names.h"
#include "platform/bindings/ScopedPersistent.h"
#include "platform/bindings/ScriptWrappable.h"
#include "platform/bindings/TraceWrapperMember.h"
#include "platform/bindings/TraceWrapperV8Reference.h"
......@@ -39,8 +40,7 @@ class CSSLayoutDefinition final
// This class represents an instance of the layout class defined by the
// CSSLayoutDefinition.
class Instance final : public GarbageCollectedFinalized<Instance>,
public TraceWrapperBase {
class Instance final : public GarbageCollectedFinalized<Instance> {
public:
Instance(CSSLayoutDefinition*, v8::Local<v8::Object> instance);
......@@ -49,16 +49,12 @@ class CSSLayoutDefinition final
bool Layout(const LayoutCustom&, FragmentResultOptions*);
void Trace(blink::Visitor*);
void TraceWrappers(const ScriptWrappableVisitor*) const override;
const char* NameInHeapSnapshot() const override {
return "CSSLayoutDefinition::Instance";
}
private:
void ReportException(ExceptionState*);
Member<CSSLayoutDefinition> definition_;
TraceWrapperV8Reference<v8::Object> instance_;
ScopedPersistent<v8::Object> instance_;
};
// Creates an instance of the web developer defined class. May return a
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment