ScriptObjectQuarantine.cpp [plain text]
#include "config.h"
#include "ScriptObjectQuarantine.h"
#include "Document.h"
#include "Frame.h"
#include "JSDOMBinding.h"
#include "JSInspectedObjectWrapper.h"
#include "JSNode.h"
#include "ScriptObject.h"
#include "ScriptValue.h"
#include <runtime/JSLock.h>
#if ENABLE(DATABASE)
#include "Database.h"
#include "JSDatabase.h"
#endif
#if ENABLE(DOM_STORAGE)
#include "JSStorage.h"
#endif
using namespace JSC;
namespace WebCore {
ScriptValue quarantineValue(ScriptState* scriptState, const ScriptValue& value)
{
JSLock lock(false);
return ScriptValue(JSInspectedObjectWrapper::wrap(scriptState, value.jsValue()));
}
#if ENABLE(DATABASE)
bool getQuarantinedScriptObject(Database* database, ScriptObject& quarantinedObject)
{
ASSERT(database);
Frame* frame = database->document()->frame();
if (!frame)
return false;
ExecState* exec = toJSDOMWindow(frame)->globalExec();
JSLock lock(false);
quarantinedObject = ScriptObject(asObject(JSInspectedObjectWrapper::wrap(exec, toJS(exec, database))));
return true;
}
#endif
#if ENABLE(DOM_STORAGE)
bool getQuarantinedScriptObject(Frame* frame, Storage* storage, ScriptObject& quarantinedObject)
{
ASSERT(frame);
ASSERT(storage);
ExecState* exec = toJSDOMWindow(frame)->globalExec();
JSLock lock(false);
quarantinedObject = ScriptObject(asObject(JSInspectedObjectWrapper::wrap(exec, toJS(exec, storage))));
return true;
}
#endif
bool getQuarantinedScriptObject(Node* node, ScriptObject& quarantinedObject)
{
ExecState* exec = scriptStateFromNode(node);
if (!exec)
return false;
JSLock lock(false);
quarantinedObject = ScriptObject(asObject(JSInspectedObjectWrapper::wrap(exec, toJS(exec, node))));
return true;
}
bool getQuarantinedScriptObject(DOMWindow* domWindow, ScriptObject& quarantinedObject)
{
ASSERT(domWindow);
JSDOMWindow* window = toJSDOMWindow(domWindow->frame());
ExecState* exec = window->globalExec();
JSLock lock(false);
quarantinedObject = ScriptObject(asObject(JSInspectedObjectWrapper::wrap(exec, window)));
return true;
}
}