// static bool IndexedDatabaseManager::DefineIndexedDB(JSContext* aCx, JS::Handle<JSObject*> aGlobal) { MOZ_ASSERT(NS_IsMainThread()); MOZ_ASSERT(js::GetObjectClass(aGlobal)->flags & JSCLASS_DOM_GLOBAL, "Passed object is not a global object!"); RefPtr<IDBFactory> factory; if (NS_FAILED(IDBFactory::CreateForMainThreadJS(aCx, aGlobal, getter_AddRefs(factory)))) { return false; } MOZ_ASSERT(factory, "This should never fail for chrome!"); JS::Rooted<JS::Value> indexedDB(aCx); js::AssertSameCompartment(aCx, aGlobal); if (!GetOrCreateDOMReflector(aCx, factory, &indexedDB)) { return false; } return JS_DefineProperty(aCx, aGlobal, IDB_STR, indexedDB, JSPROP_ENUMERATE); }
// static bool IndexedDatabaseManager::DefineIndexedDB(JSContext* aCx, JS::Handle<JSObject*> aGlobal) { MOZ_ASSERT(NS_IsMainThread()); MOZ_ASSERT(js::GetObjectClass(aGlobal)->flags & JSCLASS_DOM_GLOBAL, "Passed object is not a global object!"); // We need to ensure that the manager has been created already here so that we // load preferences that may control which properties are exposed. if (NS_WARN_IF(!GetOrCreate())) { return false; } if (!IDBCursorBinding::GetConstructorObject(aCx, aGlobal) || !IDBCursorWithValueBinding::GetConstructorObject(aCx, aGlobal) || !IDBDatabaseBinding::GetConstructorObject(aCx, aGlobal) || !IDBFactoryBinding::GetConstructorObject(aCx, aGlobal) || !IDBIndexBinding::GetConstructorObject(aCx, aGlobal) || !IDBKeyRangeBinding::GetConstructorObject(aCx, aGlobal) || !IDBLocaleAwareKeyRangeBinding::GetConstructorObject(aCx, aGlobal) || !IDBMutableFileBinding::GetConstructorObject(aCx, aGlobal) || !IDBObjectStoreBinding::GetConstructorObject(aCx, aGlobal) || !IDBOpenDBRequestBinding::GetConstructorObject(aCx, aGlobal) || !IDBRequestBinding::GetConstructorObject(aCx, aGlobal) || !IDBTransactionBinding::GetConstructorObject(aCx, aGlobal) || !IDBVersionChangeEventBinding::GetConstructorObject(aCx, aGlobal)) { return false; } RefPtr<IDBFactory> factory; if (NS_FAILED(IDBFactory::CreateForMainThreadJS(aCx, aGlobal, getter_AddRefs(factory)))) { return false; } MOZ_ASSERT(factory, "This should never fail for chrome!"); JS::Rooted<JS::Value> indexedDB(aCx); js::AssertSameCompartment(aCx, aGlobal); if (!GetOrCreateDOMReflector(aCx, factory, &indexedDB)) { return false; } return JS_DefineProperty(aCx, aGlobal, IDB_STR, indexedDB, JSPROP_ENUMERATE); }