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

Unified Diff: Source/WebCore/bindings/v8/ScriptValue.h

Issue 12926003: Merge 144458 (Closed) Base URL: http://svn.webkit.org/repository/webkit/branches/chromium/1410/
Patch Set: Created 7 years, 9 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | Source/WebCore/bindings/v8/ScriptValue.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/WebCore/bindings/v8/ScriptValue.h
===================================================================
--- Source/WebCore/bindings/v8/ScriptValue.h (revision 146152)
+++ Source/WebCore/bindings/v8/ScriptValue.h (working copy)
@@ -31,8 +31,8 @@
#ifndef ScriptValue_h
#define ScriptValue_h
-#include "ScopedPersistent.h"
#include "ScriptState.h"
+#include "SharedPersistent.h"
#include <v8.h>
#include <wtf/PassRefPtr.h>
#include <wtf/RefPtr.h>
@@ -60,47 +60,37 @@
ScriptValue() { }
virtual ~ScriptValue();
- ScriptValue(v8::Handle<v8::Value> value)
+ ScriptValue(v8::Handle<v8::Value> value)
+ : m_value(value.IsEmpty() ? 0 : SharedPersistent<v8::Value>::create(value))
{
- if (value.IsEmpty())
- return;
- m_value.set(value);
}
- ScriptValue(const ScriptValue& value)
+ ScriptValue(const ScriptValue& value)
+ : m_value(value.m_value)
{
- if (value.hasNoValue())
- return;
- m_value.set(value.m_value.get());
}
ScriptValue& operator=(const ScriptValue& value)
{
- if (this == &value)
- return *this;
-
- m_value.clear();
-
- if (value.hasNoValue())
- return *this;
-
- m_value.set(value.m_value.get());
+ if (this != &value)
+ m_value = value.m_value;
return *this;
}
bool operator==(const ScriptValue& value) const
{
- return m_value.get() == value.m_value.get();
+ return v8ValueRaw() == value.v8ValueRaw();
}
bool isEqual(ScriptState*, const ScriptValue& value) const
{
- return m_value.get() == value.m_value.get();
+ return operator==(value);
}
bool isFunction() const
{
- return m_value->IsFunction();
+ ASSERT(!hasNoValue());
+ return v8ValueRaw()->IsFunction();
}
bool operator!=(const ScriptValue& value) const
@@ -110,22 +100,25 @@
bool isNull() const
{
- return m_value->IsNull();
+ ASSERT(!hasNoValue());
+ return v8ValueRaw()->IsNull();
}
bool isUndefined() const
{
- return m_value->IsUndefined();
+ ASSERT(!hasNoValue());
+ return v8ValueRaw()->IsUndefined();
}
bool isObject() const
{
- return m_value->IsObject();
+ ASSERT(!hasNoValue());
+ return v8ValueRaw()->IsObject();
}
bool hasNoValue() const
{
- return m_value.isEmpty();
+ return !m_value.get() || m_value->get().IsEmpty();
}
PassRefPtr<SerializedScriptValue> serialize(ScriptState*);
@@ -134,11 +127,20 @@
void clear()
{
- m_value.clear();
+ m_value = 0;
}
- v8::Handle<v8::Value> v8Value() const { return m_value.get(); }
+ v8::Handle<v8::Value> v8Value() const
+ {
+ return v8::Local<v8::Value>::New(v8ValueRaw());
+ }
+ // FIXME: This function should be private.
+ v8::Handle<v8::Value> v8ValueRaw() const
+ {
+ return m_value.get() ? m_value->get() : v8::Handle<v8::Value>();
+ }
+
bool getString(ScriptState*, String& result) const { return getString(result); }
bool getString(String& result) const;
String toString(ScriptState*) const;
@@ -146,7 +148,7 @@
PassRefPtr<InspectorValue> toInspectorValue(ScriptState*) const;
private:
- ScopedPersistent<v8::Value> m_value;
+ RefPtr<SharedPersistent<v8::Value> > m_value;
};
} // namespace WebCore
« no previous file with comments | « no previous file | Source/WebCore/bindings/v8/ScriptValue.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698