mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-14 20:22:00 +00:00
Bug 1251655 - Remove support for JavaScript-global-constructor-prototype-alias. r=bz.
--HG-- extra : rebase_source : b77f4ad6d582b863bf6462177ce816aa360c64ed
This commit is contained in:
parent
40d4481e10
commit
5564e12f54
@ -1204,8 +1204,6 @@ BaseStubConstructor(nsIWeakReference* aWeakOwner,
|
||||
rv = NS_ERROR_NOT_AVAILABLE;
|
||||
} else if (name_struct->mType == nsGlobalNameStruct::eTypeExternalConstructor) {
|
||||
native = do_CreateInstance(name_struct->mCID, &rv);
|
||||
} else if (name_struct->mType == nsGlobalNameStruct::eTypeExternalConstructorAlias) {
|
||||
native = do_CreateInstance(name_struct->mAlias->mCID, &rv);
|
||||
} else {
|
||||
native = do_CreateInstance(*name_struct->mData->mConstructorCID, &rv);
|
||||
}
|
||||
@ -1352,8 +1350,7 @@ private:
|
||||
IsConstructable(&sClassInfoData[aNameStruct->mDOMClassInfoID])) ||
|
||||
(aNameStruct->mType == nsGlobalNameStruct::eTypeExternalClassInfo &&
|
||||
IsConstructable(aNameStruct->mData)) ||
|
||||
aNameStruct->mType == nsGlobalNameStruct::eTypeExternalConstructor ||
|
||||
aNameStruct->mType == nsGlobalNameStruct::eTypeExternalConstructorAlias;
|
||||
aNameStruct->mType == nsGlobalNameStruct::eTypeExternalConstructor;
|
||||
}
|
||||
|
||||
const char16_t* mClassName;
|
||||
@ -1514,8 +1511,7 @@ nsDOMConstructor::HasInstance(nsIXPConnectWrappedNative *wrapper,
|
||||
}
|
||||
|
||||
if (name_struct->mType != nsGlobalNameStruct::eTypeClassConstructor &&
|
||||
name_struct->mType != nsGlobalNameStruct::eTypeExternalClassInfo &&
|
||||
name_struct->mType != nsGlobalNameStruct::eTypeExternalConstructorAlias) {
|
||||
name_struct->mType != nsGlobalNameStruct::eTypeExternalClassInfo) {
|
||||
// Doesn't have DOM interfaces.
|
||||
return NS_OK;
|
||||
}
|
||||
@ -1529,9 +1525,6 @@ nsDOMConstructor::HasInstance(nsIXPConnectWrappedNative *wrapper,
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsScriptNameSpaceManager *nameSpaceManager = GetNameSpaceManager();
|
||||
NS_ASSERTION(nameSpaceManager, "Can't get namespace manager?");
|
||||
|
||||
const nsIID *class_iid;
|
||||
if (class_name_struct->mType == nsGlobalNameStruct::eTypeInterface ||
|
||||
class_name_struct->mType == nsGlobalNameStruct::eTypeClassProto) {
|
||||
@ -1541,37 +1534,12 @@ nsDOMConstructor::HasInstance(nsIXPConnectWrappedNative *wrapper,
|
||||
sClassInfoData[class_name_struct->mDOMClassInfoID].mProtoChainInterface;
|
||||
} else if (class_name_struct->mType == nsGlobalNameStruct::eTypeExternalClassInfo) {
|
||||
class_iid = class_name_struct->mData->mProtoChainInterface;
|
||||
} else if (class_name_struct->mType == nsGlobalNameStruct::eTypeExternalConstructorAlias) {
|
||||
const nsGlobalNameStruct* alias_struct =
|
||||
nameSpaceManager->GetConstructorProto(class_name_struct);
|
||||
if (!alias_struct) {
|
||||
NS_ERROR("Couldn't get constructor prototype.");
|
||||
return NS_ERROR_UNEXPECTED;
|
||||
}
|
||||
|
||||
if (alias_struct->mType == nsGlobalNameStruct::eTypeClassConstructor) {
|
||||
class_iid =
|
||||
sClassInfoData[alias_struct->mDOMClassInfoID].mProtoChainInterface;
|
||||
} else if (alias_struct->mType == nsGlobalNameStruct::eTypeExternalClassInfo) {
|
||||
class_iid = alias_struct->mData->mProtoChainInterface;
|
||||
} else {
|
||||
NS_ERROR("Expected eTypeClassConstructor or eTypeExternalClassInfo.");
|
||||
return NS_ERROR_UNEXPECTED;
|
||||
}
|
||||
} else {
|
||||
*bp = false;
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
if (name_struct->mType == nsGlobalNameStruct::eTypeExternalConstructorAlias) {
|
||||
name_struct = nameSpaceManager->GetConstructorProto(name_struct);
|
||||
if (!name_struct) {
|
||||
NS_ERROR("Couldn't get constructor prototype.");
|
||||
return NS_ERROR_UNEXPECTED;
|
||||
}
|
||||
}
|
||||
|
||||
NS_ASSERTION(name_struct->mType == nsGlobalNameStruct::eTypeClassConstructor ||
|
||||
name_struct->mType == nsGlobalNameStruct::eTypeExternalClassInfo,
|
||||
"The constructor was set up with a struct of the wrong type.");
|
||||
@ -2153,34 +2121,6 @@ nsWindowSH::GlobalResolve(nsGlobalWindow *aWin, JSContext *cx,
|
||||
name_struct, nameSpaceManager, nullptr, desc);
|
||||
}
|
||||
|
||||
if (name_struct->mType == nsGlobalNameStruct::eTypeExternalConstructorAlias) {
|
||||
const nsGlobalNameStruct *alias_struct =
|
||||
nameSpaceManager->GetConstructorProto(name_struct);
|
||||
NS_ENSURE_TRUE(alias_struct, NS_ERROR_UNEXPECTED);
|
||||
|
||||
// We need to use the XPConnect prototype for the DOM class that this
|
||||
// constructor is an alias for (for example for Image we need the prototype
|
||||
// for HTMLImageElement).
|
||||
JS::Rooted<JSObject*> dot_prototype(cx);
|
||||
rv = GetXPCProto(nsDOMClassInfo::sXPConnect, cx, aWin, alias_struct,
|
||||
&dot_prototype);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
MOZ_ASSERT(dot_prototype);
|
||||
|
||||
const nsDOMClassInfoData *ci_data;
|
||||
if (alias_struct->mType == nsGlobalNameStruct::eTypeClassConstructor) {
|
||||
ci_data = &sClassInfoData[alias_struct->mDOMClassInfoID];
|
||||
} else if (alias_struct->mType == nsGlobalNameStruct::eTypeExternalClassInfo) {
|
||||
ci_data = alias_struct->mData;
|
||||
} else {
|
||||
return NS_ERROR_UNEXPECTED;
|
||||
}
|
||||
|
||||
return ResolvePrototype(nsDOMClassInfo::sXPConnect, aWin, cx, obj,
|
||||
class_name, ci_data,
|
||||
name_struct, nameSpaceManager, nullptr, desc);
|
||||
}
|
||||
|
||||
if (name_struct->mType == nsGlobalNameStruct::eTypeExternalConstructor) {
|
||||
RefPtr<nsDOMConstructor> constructor;
|
||||
rv = nsDOMConstructor::Create(class_name, nullptr, name_struct,
|
||||
|
@ -10,9 +10,6 @@
|
||||
#define JAVASCRIPT_GLOBAL_CONSTRUCTOR_CATEGORY \
|
||||
"JavaScript-global-constructor"
|
||||
|
||||
#define JAVASCRIPT_GLOBAL_CONSTRUCTOR_PROTO_ALIAS_CATEGORY \
|
||||
"JavaScript-global-constructor-prototype-alias"
|
||||
|
||||
#define JAVASCRIPT_GLOBAL_PROPERTY_CATEGORY \
|
||||
"JavaScript-global-property"
|
||||
|
||||
|
@ -73,9 +73,6 @@ GlobalNameHashClearEntry(PLDHashTable *table, PLDHashEntryHdr *entry)
|
||||
// Release our pointer to the helper.
|
||||
NS_IF_RELEASE(ci);
|
||||
}
|
||||
else if (e->mGlobalName.mType == nsGlobalNameStruct::eTypeExternalConstructorAlias) {
|
||||
delete e->mGlobalName.mAlias;
|
||||
}
|
||||
|
||||
// This will set e->mGlobalName.mType to
|
||||
// nsGlobalNameStruct::eTypeNotInitialized
|
||||
@ -151,21 +148,6 @@ nsScriptNameSpaceManager::RemoveFromHash(PLDHashTable *aTable,
|
||||
aTable->Remove(aKey);
|
||||
}
|
||||
|
||||
nsGlobalNameStruct*
|
||||
nsScriptNameSpaceManager::GetConstructorProto(const nsGlobalNameStruct* aStruct)
|
||||
{
|
||||
NS_ASSERTION(aStruct->mType == nsGlobalNameStruct::eTypeExternalConstructorAlias,
|
||||
"This function only works on constructor aliases!");
|
||||
if (!aStruct->mAlias->mProto) {
|
||||
auto proto = static_cast<GlobalNameMapEntry*>
|
||||
(mGlobalNames.Search(&aStruct->mAlias->mProtoName));
|
||||
if (proto) {
|
||||
aStruct->mAlias->mProto = &proto->mGlobalName;
|
||||
}
|
||||
}
|
||||
return aStruct->mAlias->mProto;
|
||||
}
|
||||
|
||||
nsresult
|
||||
nsScriptNameSpaceManager::FillHash(nsICategoryManager *aCategoryManager,
|
||||
const char *aCategory)
|
||||
@ -591,31 +573,6 @@ nsScriptNameSpaceManager::OperateCategoryEntryHash(nsICategoryManager* aCategory
|
||||
nsCID cid = *cidPtr;
|
||||
free(cidPtr);
|
||||
|
||||
if (type == nsGlobalNameStruct::eTypeExternalConstructor) {
|
||||
nsXPIDLCString constructorProto;
|
||||
rv = aCategoryManager->GetCategoryEntry(JAVASCRIPT_GLOBAL_CONSTRUCTOR_PROTO_ALIAS_CATEGORY,
|
||||
categoryEntry.get(),
|
||||
getter_Copies(constructorProto));
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
nsGlobalNameStruct *s = AddToHash(&mGlobalNames, categoryEntry.get());
|
||||
NS_ENSURE_TRUE(s, NS_ERROR_OUT_OF_MEMORY);
|
||||
|
||||
if (s->mType == nsGlobalNameStruct::eTypeNotInitialized ||
|
||||
s->mType == nsGlobalNameStruct::eTypeNewDOMBinding) {
|
||||
s->mAlias = new nsGlobalNameStruct::ConstructorAlias;
|
||||
s->mType = nsGlobalNameStruct::eTypeExternalConstructorAlias;
|
||||
s->mChromeOnly = false;
|
||||
s->mAlias->mCID = cid;
|
||||
AppendASCIItoUTF16(constructorProto, s->mAlias->mProtoName);
|
||||
s->mAlias->mProto = nullptr;
|
||||
} else {
|
||||
NS_WARNING("Global script name not overwritten!");
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
}
|
||||
|
||||
nsGlobalNameStruct *s = AddToHash(table, categoryEntry.get());
|
||||
NS_ENSURE_TRUE(s, NS_ERROR_OUT_OF_MEMORY);
|
||||
|
||||
|
@ -36,13 +36,6 @@
|
||||
|
||||
struct nsGlobalNameStruct
|
||||
{
|
||||
struct ConstructorAlias
|
||||
{
|
||||
nsCID mCID;
|
||||
nsString mProtoName;
|
||||
nsGlobalNameStruct* mProto;
|
||||
};
|
||||
|
||||
enum nametype {
|
||||
eTypeNotInitialized,
|
||||
eTypeNewDOMBinding,
|
||||
@ -54,7 +47,6 @@ struct nsGlobalNameStruct
|
||||
eTypeClassProto,
|
||||
eTypeExternalClassInfoCreator,
|
||||
eTypeExternalClassInfo,
|
||||
eTypeExternalConstructorAlias
|
||||
} mType;
|
||||
|
||||
// mChromeOnly is only used for structs that define non-WebIDL things
|
||||
@ -67,7 +59,6 @@ struct nsGlobalNameStruct
|
||||
int32_t mDOMClassInfoID; // eTypeClassConstructor
|
||||
nsIID mIID; // eTypeInterface, eTypeClassProto
|
||||
nsExternalDOMClassInfoData* mData; // eTypeExternalClassInfo
|
||||
ConstructorAlias* mAlias; // eTypeExternalConstructorAlias
|
||||
nsCID mCID; // All other types except eTypeNewDOMBinding
|
||||
};
|
||||
|
||||
@ -152,8 +143,6 @@ public:
|
||||
bool aHasClassInterface,
|
||||
const nsCID *aConstructorCID);
|
||||
|
||||
nsGlobalNameStruct* GetConstructorProto(const nsGlobalNameStruct* aStruct);
|
||||
|
||||
void RegisterDefineDOMInterface(const nsAFlatString& aName,
|
||||
mozilla::dom::DefineInterface aDefineDOMInterface,
|
||||
mozilla::dom::ConstructorEnabled* aConstructorEnabled);
|
||||
|
Loading…
x
Reference in New Issue
Block a user