summaryrefslogtreecommitdiffstats
path: root/WebCore/bindings/js/ScriptObject.cpp
diff options
context:
space:
mode:
authorFeng Qian <fqian@google.com>2009-06-17 12:12:20 -0700
committerFeng Qian <fqian@google.com>2009-06-17 12:12:20 -0700
commit5f1ab04193ad0130ca8204aadaceae083aca9881 (patch)
tree5a92cd389e2cfe7fb67197ce14b38469462379f8 /WebCore/bindings/js/ScriptObject.cpp
parent194315e5a908cc8ed67d597010544803eef1ac59 (diff)
downloadexternal_webkit-5f1ab04193ad0130ca8204aadaceae083aca9881.zip
external_webkit-5f1ab04193ad0130ca8204aadaceae083aca9881.tar.gz
external_webkit-5f1ab04193ad0130ca8204aadaceae083aca9881.tar.bz2
Get WebKit r44544.
Diffstat (limited to 'WebCore/bindings/js/ScriptObject.cpp')
-rw-r--r--WebCore/bindings/js/ScriptObject.cpp116
1 files changed, 116 insertions, 0 deletions
diff --git a/WebCore/bindings/js/ScriptObject.cpp b/WebCore/bindings/js/ScriptObject.cpp
index 148dac5..44337bd 100644
--- a/WebCore/bindings/js/ScriptObject.cpp
+++ b/WebCore/bindings/js/ScriptObject.cpp
@@ -31,6 +31,14 @@
#include "config.h"
#include "ScriptObject.h"
+#include "JSDOMBinding.h"
+
+#if ENABLE(JAVASCRIPT_DEBUGGER)
+#include "JSInspectorController.h"
+#endif
+
+#include <runtime/JSLock.h>
+
using namespace JSC;
namespace WebCore {
@@ -40,4 +48,112 @@ ScriptObject::ScriptObject(JSObject* object)
{
}
+static bool handleException(ScriptState* scriptState)
+{
+ if (!scriptState->hadException())
+ return true;
+
+ reportException(scriptState, scriptState->exception());
+ return false;
+}
+
+bool ScriptObject::set(ScriptState* scriptState, const String& name, const String& value)
+{
+ JSLock lock(false);
+ PutPropertySlot slot;
+ jsObject()->put(scriptState, Identifier(scriptState, name), jsString(scriptState, value), slot);
+ return handleException(scriptState);
+}
+
+bool ScriptObject::set(ScriptState* scriptState, const char* name, const ScriptObject& value)
+{
+ JSLock lock(false);
+ PutPropertySlot slot;
+ jsObject()->put(scriptState, Identifier(scriptState, name), value.jsObject(), slot);
+ return handleException(scriptState);
+}
+
+bool ScriptObject::set(ScriptState* scriptState, const char* name, const String& value)
+{
+ JSLock lock(false);
+ PutPropertySlot slot;
+ jsObject()->put(scriptState, Identifier(scriptState, name), jsString(scriptState, value), slot);
+ return handleException(scriptState);
+}
+
+bool ScriptObject::set(ScriptState* scriptState, const char* name, double value)
+{
+ JSLock lock(false);
+ PutPropertySlot slot;
+ jsObject()->put(scriptState, Identifier(scriptState, name), jsNumber(scriptState, value), slot);
+ return handleException(scriptState);
+}
+
+bool ScriptObject::set(ScriptState* scriptState, const char* name, long long value)
+{
+ JSLock lock(false);
+ PutPropertySlot slot;
+ jsObject()->put(scriptState, Identifier(scriptState, name), jsNumber(scriptState, value), slot);
+ return handleException(scriptState);
+}
+
+bool ScriptObject::set(ScriptState* scriptState, const char* name, int value)
+{
+ JSLock lock(false);
+ PutPropertySlot slot;
+ jsObject()->put(scriptState, Identifier(scriptState, name), jsNumber(scriptState, value), slot);
+ return handleException(scriptState);
+}
+
+bool ScriptObject::set(ScriptState* scriptState, const char* name, bool value)
+{
+ JSLock lock(false);
+ PutPropertySlot slot;
+ jsObject()->put(scriptState, Identifier(scriptState, name), jsBoolean(value), slot);
+ return handleException(scriptState);
+}
+
+ScriptObject ScriptObject::createNew(ScriptState* scriptState)
+{
+ JSLock lock(false);
+ return ScriptObject(constructEmptyObject(scriptState));
+}
+
+bool ScriptGlobalObject::set(ScriptState* scriptState, const char* name, const ScriptObject& value)
+{
+ JSLock lock(false);
+ scriptState->lexicalGlobalObject()->putDirect(Identifier(scriptState, name), value.jsObject());
+ return handleException(scriptState);
+}
+
+#if ENABLE(JAVASCRIPT_DEBUGGER)
+bool ScriptGlobalObject::set(ScriptState* scriptState, const char* name, InspectorController* value)
+{
+ JSLock lock(false);
+ scriptState->lexicalGlobalObject()->putDirect(Identifier(scriptState, name), toJS(scriptState, value));
+ return handleException(scriptState);
+}
+#endif
+
+bool ScriptGlobalObject::get(ScriptState* scriptState, const char* name, ScriptObject& value)
+{
+ JSLock lock(false);
+ JSValue jsValue = scriptState->lexicalGlobalObject()->get(scriptState, Identifier(scriptState, name));
+ if (!jsValue)
+ return false;
+
+ if (!jsValue.isObject())
+ return false;
+
+ value = ScriptObject(asObject(jsValue));
+ return true;
+}
+
+bool ScriptGlobalObject::remove(ScriptState* scriptState, const char* name)
+{
+ JSLock lock(false);
+ scriptState->lexicalGlobalObject()->deleteProperty(scriptState, Identifier(scriptState, name));
+ return handleException(scriptState);
+}
+
} // namespace WebCore