nsresult nsScriptNameSpaceManager::Init() { static PLDHashTableOps hash_table_ops = { PL_DHashAllocTable, PL_DHashFreeTable, GlobalNameHashHashKey, GlobalNameHashMatchEntry, PL_DHashMoveEntryStub, GlobalNameHashClearEntry, PL_DHashFinalizeStub, GlobalNameHashInitEntry }; mIsInitialized = PL_DHashTableInit(&mGlobalNames, &hash_table_ops, nsnull, sizeof(GlobalNameMapEntry), GLOBALNAME_HASHTABLE_INITIAL_SIZE); NS_ENSURE_TRUE(mIsInitialized, NS_ERROR_OUT_OF_MEMORY); nsresult rv = NS_OK; rv = FillHashWithDOMInterfaces(); NS_ENSURE_SUCCESS(rv, rv); nsCOMPtr<nsICategoryManager> cm = do_GetService(NS_CATEGORYMANAGER_CONTRACTID, &rv); NS_ENSURE_SUCCESS(rv, rv); rv = FillHash(cm, JAVASCRIPT_GLOBAL_CONSTRUCTOR_CATEGORY, nsGlobalNameStruct::eTypeExternalConstructor, PR_FALSE); NS_ENSURE_SUCCESS(rv, rv); rv = FillHash(cm, JAVASCRIPT_GLOBAL_PROPERTY_CATEGORY, nsGlobalNameStruct::eTypeProperty, PR_FALSE); NS_ENSURE_SUCCESS(rv, rv); rv = FillHash(cm, JAVASCRIPT_GLOBAL_PRIVILEGED_PROPERTY_CATEGORY, nsGlobalNameStruct::eTypeProperty, PR_TRUE); NS_ENSURE_SUCCESS(rv, rv); rv = FillHash(cm, JAVASCRIPT_GLOBAL_STATIC_NAMESET_CATEGORY, nsGlobalNameStruct::eTypeStaticNameSet, PR_FALSE); NS_ENSURE_SUCCESS(rv, rv); rv = FillHash(cm, JAVASCRIPT_GLOBAL_DYNAMIC_NAMESET_CATEGORY, nsGlobalNameStruct::eTypeDynamicNameSet, PR_FALSE); NS_ENSURE_SUCCESS(rv, rv); return NS_OK; }
nsresult nsScriptNameSpaceManager::Init() { static PLDHashTableOps hash_table_ops = { PL_DHashAllocTable, PL_DHashFreeTable, GlobalNameHashHashKey, GlobalNameHashMatchEntry, PL_DHashMoveEntryStub, GlobalNameHashClearEntry, PL_DHashFinalizeStub, GlobalNameHashInitEntry }; mIsInitialized = PL_DHashTableInit(&mGlobalNames, &hash_table_ops, nsnull, sizeof(GlobalNameMapEntry), GLOBALNAME_HASHTABLE_INITIAL_SIZE); NS_ENSURE_TRUE(mIsInitialized, NS_ERROR_OUT_OF_MEMORY); mIsInitialized = PL_DHashTableInit(&mNavigatorNames, &hash_table_ops, nsnull, sizeof(GlobalNameMapEntry), GLOBALNAME_HASHTABLE_INITIAL_SIZE); if (!mIsInitialized) { PL_DHashTableFinish(&mGlobalNames); return NS_ERROR_OUT_OF_MEMORY; } nsresult rv = NS_OK; rv = FillHashWithDOMInterfaces(); NS_ENSURE_SUCCESS(rv, rv); nsCOMPtr<nsICategoryManager> cm = do_GetService(NS_CATEGORYMANAGER_CONTRACTID, &rv); NS_ENSURE_SUCCESS(rv, rv); rv = FillHash(cm, JAVASCRIPT_GLOBAL_CONSTRUCTOR_CATEGORY); NS_ENSURE_SUCCESS(rv, rv); rv = FillHash(cm, JAVASCRIPT_GLOBAL_PROPERTY_CATEGORY); NS_ENSURE_SUCCESS(rv, rv); rv = FillHash(cm, JAVASCRIPT_GLOBAL_PRIVILEGED_PROPERTY_CATEGORY); NS_ENSURE_SUCCESS(rv, rv); rv = FillHash(cm, JAVASCRIPT_GLOBAL_STATIC_NAMESET_CATEGORY); NS_ENSURE_SUCCESS(rv, rv); rv = FillHash(cm, JAVASCRIPT_GLOBAL_DYNAMIC_NAMESET_CATEGORY); NS_ENSURE_SUCCESS(rv, rv); rv = FillHash(cm, JAVASCRIPT_NAVIGATOR_PROPERTY_CATEGORY); NS_ENSURE_SUCCESS(rv, rv); // Initial filling of the has table has been done. // Now, listen for changes. nsCOMPtr<nsIObserverService> serv = do_GetService(NS_OBSERVERSERVICE_CONTRACTID); if (serv) { serv->AddObserver(this, NS_XPCOM_CATEGORY_ENTRY_ADDED_OBSERVER_ID, true); } return NS_OK; }