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) { ...@@ -274,11 +274,6 @@ void CSSLayoutDefinition::Instance::Trace(blink::Visitor* visitor) {
visitor->Trace(definition_); visitor->Trace(definition_);
} }
void CSSLayoutDefinition::Instance::TraceWrappers(
const ScriptWrappableVisitor* visitor) const {
visitor->TraceWrappers(instance_.Cast<v8::Value>());
}
void CSSLayoutDefinition::TraceWrappers( void CSSLayoutDefinition::TraceWrappers(
const ScriptWrappableVisitor* visitor) const { const ScriptWrappableVisitor* visitor) const {
visitor->TraceWrappers(constructor_.Cast<v8::Value>()); visitor->TraceWrappers(constructor_.Cast<v8::Value>());
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#include "core/css/cssom/CSSStyleValue.h" #include "core/css/cssom/CSSStyleValue.h"
#include "core/css_property_names.h" #include "core/css_property_names.h"
#include "platform/bindings/ScopedPersistent.h"
#include "platform/bindings/ScriptWrappable.h" #include "platform/bindings/ScriptWrappable.h"
#include "platform/bindings/TraceWrapperMember.h" #include "platform/bindings/TraceWrapperMember.h"
#include "platform/bindings/TraceWrapperV8Reference.h" #include "platform/bindings/TraceWrapperV8Reference.h"
...@@ -39,8 +40,7 @@ class CSSLayoutDefinition final ...@@ -39,8 +40,7 @@ class CSSLayoutDefinition final
// This class represents an instance of the layout class defined by the // This class represents an instance of the layout class defined by the
// CSSLayoutDefinition. // CSSLayoutDefinition.
class Instance final : public GarbageCollectedFinalized<Instance>, class Instance final : public GarbageCollectedFinalized<Instance> {
public TraceWrapperBase {
public: public:
Instance(CSSLayoutDefinition*, v8::Local<v8::Object> instance); Instance(CSSLayoutDefinition*, v8::Local<v8::Object> instance);
...@@ -49,16 +49,12 @@ class CSSLayoutDefinition final ...@@ -49,16 +49,12 @@ class CSSLayoutDefinition final
bool Layout(const LayoutCustom&, FragmentResultOptions*); bool Layout(const LayoutCustom&, FragmentResultOptions*);
void Trace(blink::Visitor*); void Trace(blink::Visitor*);
void TraceWrappers(const ScriptWrappableVisitor*) const override;
const char* NameInHeapSnapshot() const override {
return "CSSLayoutDefinition::Instance";
}
private: private:
void ReportException(ExceptionState*); void ReportException(ExceptionState*);
Member<CSSLayoutDefinition> definition_; Member<CSSLayoutDefinition> definition_;
TraceWrapperV8Reference<v8::Object> instance_; ScopedPersistent<v8::Object> instance_;
}; };
// Creates an instance of the web developer defined class. May return a // 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