JSIDBDatabaseCustom.cpp [plain text]
#include "config.h"
#if ENABLE(INDEXED_DATABASE)
#include "JSIDBDatabase.h"
#include "IDBBindingUtilities.h"
#include "IDBDatabase.h"
#include "IDBKeyPath.h"
#include "IDBObjectStore.h"
#include "JSDOMBinding.h"
#include "JSIDBObjectStore.h"
#include <runtime/Error.h>
#include <runtime/JSString.h>
using namespace JSC;
namespace WebCore {
JSValue JSIDBDatabase::createObjectStore(ExecState* exec)
{
if (exec->argumentCount() < 1)
return exec->vm().throwException(exec, createNotEnoughArgumentsError(exec));
String name = exec->argument(0).toString(exec)->value(exec);
if (exec->hadException())
return jsUndefined();
JSValue optionsValue = exec->argument(1);
if (!optionsValue.isUndefinedOrNull() && !optionsValue.isObject())
return throwTypeError(exec, "Not an object.");
IDBKeyPath keyPath;
bool autoIncrement = false;
if (!optionsValue.isUndefinedOrNull()) {
JSValue keyPathValue = optionsValue.get(exec, Identifier::fromString(exec, "keyPath"));
if (exec->hadException())
return jsUndefined();
if (!keyPathValue.isUndefinedOrNull()) {
keyPath = idbKeyPathFromValue(exec, keyPathValue);
if (exec->hadException())
return jsUndefined();
}
autoIncrement = optionsValue.get(exec, Identifier::fromString(exec, "autoIncrement")).toBoolean(exec);
if (exec->hadException())
return jsUndefined();
}
ExceptionCode ec = 0;
JSValue result = toJS(exec, globalObject(), impl().createObjectStore(name, keyPath, autoIncrement, ec).get());
setDOMException(exec, ec);
return result;
}
}
#endif