зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1457972 - Part 2: Remove unused code paths in xpconnect, r=mccr8
Thanks to the changes in the previous patch, we had some unused code which we can get rid of. This patch just cleans stuff up a bit.
This commit is contained in:
Родитель
73efb8abf3
Коммит
f20e777cdb
|
@ -1399,22 +1399,12 @@ CallMethodHelper::GatherAndConvertResults()
|
||||||
const nsXPTType& type = paramInfo.GetType();
|
const nsXPTType& type = paramInfo.GetType();
|
||||||
nsXPTCVariant* dp = GetDispatchParam(i);
|
nsXPTCVariant* dp = GetDispatchParam(i);
|
||||||
RootedValue v(mCallContext, NullValue());
|
RootedValue v(mCallContext, NullValue());
|
||||||
nsXPTType datum_type;
|
|
||||||
bool isArray = type.IsArray();
|
bool isArray = type.IsArray();
|
||||||
bool isSizedString = isArray ?
|
bool isSizedString = isArray ?
|
||||||
false :
|
false :
|
||||||
type.TagPart() == nsXPTType::T_PSTRING_SIZE_IS ||
|
type.TagPart() == nsXPTType::T_PSTRING_SIZE_IS ||
|
||||||
type.TagPart() == nsXPTType::T_PWSTRING_SIZE_IS;
|
type.TagPart() == nsXPTType::T_PWSTRING_SIZE_IS;
|
||||||
|
|
||||||
if (isArray) {
|
|
||||||
if (NS_FAILED(mIFaceInfo->GetTypeForParam(mVTableIndex, ¶mInfo, 1,
|
|
||||||
&datum_type))) {
|
|
||||||
Throw(NS_ERROR_XPC_CANT_GET_ARRAY_INFO, mCallContext);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
} else
|
|
||||||
datum_type = type;
|
|
||||||
|
|
||||||
uint32_t array_count = 0;
|
uint32_t array_count = 0;
|
||||||
nsID param_iid;
|
nsID param_iid;
|
||||||
if (!GetInterfaceTypeFromParam(type, ¶m_iid) ||
|
if (!GetInterfaceTypeFromParam(type, ¶m_iid) ||
|
||||||
|
@ -1424,7 +1414,7 @@ CallMethodHelper::GatherAndConvertResults()
|
||||||
nsresult err;
|
nsresult err;
|
||||||
if (isArray) {
|
if (isArray) {
|
||||||
if (!XPCConvert::NativeArray2JS(&v, (const void**)&dp->val,
|
if (!XPCConvert::NativeArray2JS(&v, (const void**)&dp->val,
|
||||||
datum_type, ¶m_iid,
|
type.InnermostType(), ¶m_iid,
|
||||||
array_count, &err)) {
|
array_count, &err)) {
|
||||||
// XXX need exception scheme for arrays to indicate bad element
|
// XXX need exception scheme for arrays to indicate bad element
|
||||||
ThrowBadParam(err, i, mCallContext);
|
ThrowBadParam(err, i, mCallContext);
|
||||||
|
@ -1433,13 +1423,13 @@ CallMethodHelper::GatherAndConvertResults()
|
||||||
} else if (isSizedString) {
|
} else if (isSizedString) {
|
||||||
if (!XPCConvert::NativeStringWithSize2JS(&v,
|
if (!XPCConvert::NativeStringWithSize2JS(&v,
|
||||||
(const void*)&dp->val,
|
(const void*)&dp->val,
|
||||||
datum_type,
|
type,
|
||||||
array_count, &err)) {
|
array_count, &err)) {
|
||||||
ThrowBadParam(err, i, mCallContext);
|
ThrowBadParam(err, i, mCallContext);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (!XPCConvert::NativeData2JS(&v, &dp->val, datum_type,
|
if (!XPCConvert::NativeData2JS(&v, &dp->val, type,
|
||||||
¶m_iid, &err)) {
|
¶m_iid, &err)) {
|
||||||
ThrowBadParam(err, i, mCallContext);
|
ThrowBadParam(err, i, mCallContext);
|
||||||
return false;
|
return false;
|
||||||
|
@ -1731,7 +1721,6 @@ CallMethodHelper::ConvertDependentParam(uint8_t i)
|
||||||
{
|
{
|
||||||
const nsXPTParamInfo& paramInfo = mMethodInfo->GetParam(i);
|
const nsXPTParamInfo& paramInfo = mMethodInfo->GetParam(i);
|
||||||
const nsXPTType& type = paramInfo.GetType();
|
const nsXPTType& type = paramInfo.GetType();
|
||||||
nsXPTType datum_type;
|
|
||||||
bool isArray = type.IsArray();
|
bool isArray = type.IsArray();
|
||||||
|
|
||||||
bool isSizedString = isArray ?
|
bool isSizedString = isArray ?
|
||||||
|
@ -1742,18 +1731,6 @@ CallMethodHelper::ConvertDependentParam(uint8_t i)
|
||||||
nsXPTCVariant* dp = GetDispatchParam(i);
|
nsXPTCVariant* dp = GetDispatchParam(i);
|
||||||
dp->type = type;
|
dp->type = type;
|
||||||
|
|
||||||
if (isArray) {
|
|
||||||
if (NS_FAILED(mIFaceInfo->GetTypeForParam(mVTableIndex, ¶mInfo, 1,
|
|
||||||
&datum_type))) {
|
|
||||||
Throw(NS_ERROR_XPC_CANT_GET_ARRAY_INFO, mCallContext);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
MOZ_ASSERT(datum_type.TagPart() != nsXPTType::T_JSVAL,
|
|
||||||
"Arrays of JSVals not currently supported - see bug 693337.");
|
|
||||||
} else {
|
|
||||||
datum_type = type;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Specify the correct storage/calling semantics.
|
// Specify the correct storage/calling semantics.
|
||||||
if (paramInfo.IsIndirect())
|
if (paramInfo.IsIndirect())
|
||||||
dp->SetIndirect();
|
dp->SetIndirect();
|
||||||
|
@ -1798,8 +1775,8 @@ CallMethodHelper::ConvertDependentParam(uint8_t i)
|
||||||
if (isArray) {
|
if (isArray) {
|
||||||
if (array_count &&
|
if (array_count &&
|
||||||
!XPCConvert::JSArray2Native((void**)&dp->val, src,
|
!XPCConvert::JSArray2Native((void**)&dp->val, src,
|
||||||
array_count, datum_type, ¶m_iid,
|
array_count, type.InnermostType(),
|
||||||
&err)) {
|
¶m_iid, &err)) {
|
||||||
// XXX need exception scheme for arrays to indicate bad element
|
// XXX need exception scheme for arrays to indicate bad element
|
||||||
ThrowBadParam(err, i, mCallContext);
|
ThrowBadParam(err, i, mCallContext);
|
||||||
return false;
|
return false;
|
||||||
|
@ -1807,7 +1784,7 @@ CallMethodHelper::ConvertDependentParam(uint8_t i)
|
||||||
} else if (isSizedString) {
|
} else if (isSizedString) {
|
||||||
if (!XPCConvert::JSStringWithSize2Native((void*)&dp->val,
|
if (!XPCConvert::JSStringWithSize2Native((void*)&dp->val,
|
||||||
src, array_count,
|
src, array_count,
|
||||||
datum_type, &err)) {
|
type, &err)) {
|
||||||
ThrowBadParam(err, i, mCallContext);
|
ThrowBadParam(err, i, mCallContext);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -261,70 +261,6 @@ nsXPTInterfaceInfo::GetConstant(uint16_t aIndex,
|
||||||
return *aName ? NS_OK : NS_ERROR_FAILURE;
|
return *aName ? NS_OK : NS_ERROR_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
nsresult
|
|
||||||
nsXPTInterfaceInfo::GetTypeForParam(uint16_t /* UNUSED aMethodIndex */,
|
|
||||||
const nsXPTParamInfo* aParam,
|
|
||||||
uint16_t aDimension,
|
|
||||||
nsXPTType* aRetval) const
|
|
||||||
{
|
|
||||||
const nsXPTType* type = &aParam->Type();
|
|
||||||
for (uint16_t i = 0; i < aDimension; ++i) {
|
|
||||||
if (type->Tag() != TD_ARRAY) {
|
|
||||||
NS_ERROR("bad dimension");
|
|
||||||
return NS_ERROR_INVALID_ARG;
|
|
||||||
}
|
|
||||||
type = &type->ArrayElementType();
|
|
||||||
}
|
|
||||||
|
|
||||||
*aRetval = *type; // NOTE: This copies the type, which is fine I guess?
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
nsresult
|
|
||||||
nsXPTInterfaceInfo::GetSizeIsArgNumberForParam(uint16_t /* UNUSED aMethodIndex */,
|
|
||||||
const nsXPTParamInfo* aParam,
|
|
||||||
uint16_t aDimension,
|
|
||||||
uint8_t* aRetval) const
|
|
||||||
{
|
|
||||||
const nsXPTType* type = &aParam->Type();
|
|
||||||
for (uint16_t i = 0; i < aDimension; ++i) {
|
|
||||||
if (type->Tag() != TD_ARRAY) {
|
|
||||||
NS_ERROR("bad dimension");
|
|
||||||
return NS_ERROR_INVALID_ARG;
|
|
||||||
}
|
|
||||||
type = &type->ArrayElementType();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (type->Tag() != TD_ARRAY &&
|
|
||||||
type->Tag() != TD_PSTRING_SIZE_IS &&
|
|
||||||
type->Tag() != TD_PWSTRING_SIZE_IS) {
|
|
||||||
NS_ERROR("not a size_is");
|
|
||||||
return NS_ERROR_INVALID_ARG;
|
|
||||||
}
|
|
||||||
|
|
||||||
*aRetval = type->ArgNum();
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
nsresult
|
|
||||||
nsXPTInterfaceInfo::GetInterfaceIsArgNumberForParam(uint16_t /* UNUSED aMethodIndex */,
|
|
||||||
const nsXPTParamInfo* aParam,
|
|
||||||
uint8_t* aRetval) const
|
|
||||||
{
|
|
||||||
const nsXPTType* type = &aParam->Type();
|
|
||||||
while (type->Tag() == TD_ARRAY) {
|
|
||||||
type = &type->ArrayElementType();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (type->Tag() != TD_INTERFACE_IS_TYPE) {
|
|
||||||
NS_ERROR("not an iid_is");
|
|
||||||
return NS_ERROR_INVALID_ARG;
|
|
||||||
}
|
|
||||||
|
|
||||||
*aRetval = type->ArgNum();
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
nsresult
|
nsresult
|
||||||
nsXPTInterfaceInfo::IsIID(const nsIID* aIID, bool* aIs) const
|
nsXPTInterfaceInfo::IsIID(const nsIID* aIID, bool* aIs) const
|
||||||
{
|
{
|
||||||
|
@ -360,26 +296,6 @@ nsXPTInterfaceInfo::HasAncestor(const nsIID* aIID, bool* aRetval) const
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
nsresult
|
|
||||||
nsXPTInterfaceInfo::GetIIDForParamNoAlloc(uint16_t aMethodIndex,
|
|
||||||
const nsXPTParamInfo* aParam,
|
|
||||||
nsIID* aIID) const
|
|
||||||
{
|
|
||||||
const nsXPTType* type = &aParam->Type();
|
|
||||||
while (type->Tag() == TD_ARRAY) {
|
|
||||||
type = &type->ArrayElementType();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (type->Tag() == TD_INTERFACE_TYPE) {
|
|
||||||
const nsXPTInterfaceInfo* info = type->GetInterface();
|
|
||||||
if (info) {
|
|
||||||
*aIID = info->IID();
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return NS_ERROR_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
nsresult
|
nsresult
|
||||||
nsXPTInterfaceInfo::IsMainProcessScriptableOnly(bool* aRetval) const
|
nsXPTInterfaceInfo::IsMainProcessScriptableOnly(bool* aRetval) const
|
||||||
{
|
{
|
||||||
|
|
|
@ -107,23 +107,11 @@ struct nsXPTInterfaceInfo
|
||||||
nsresult GetConstant(uint16_t aIndex,
|
nsresult GetConstant(uint16_t aIndex,
|
||||||
JS::MutableHandleValue constant,
|
JS::MutableHandleValue constant,
|
||||||
char** aName) const;
|
char** aName) const;
|
||||||
nsresult GetTypeForParam(uint16_t aMethodIndex, const nsXPTParamInfo* aParam,
|
|
||||||
uint16_t aDimension, nsXPTType* aRetval) const;
|
|
||||||
nsresult GetSizeIsArgNumberForParam(uint16_t aMethodIndex,
|
|
||||||
const nsXPTParamInfo* aParam,
|
|
||||||
uint16_t aDimension,
|
|
||||||
uint8_t* aRetval) const;
|
|
||||||
nsresult GetInterfaceIsArgNumberForParam(uint16_t aMethodIndex,
|
|
||||||
const nsXPTParamInfo* aParam,
|
|
||||||
uint8_t* aRetval) const;
|
|
||||||
nsresult IsIID(const nsIID* aIID, bool* aIs) const;
|
nsresult IsIID(const nsIID* aIID, bool* aIs) const;
|
||||||
nsresult GetNameShared(const char** aName) const;
|
nsresult GetNameShared(const char** aName) const;
|
||||||
nsresult GetIIDShared(const nsIID** aIID) const;
|
nsresult GetIIDShared(const nsIID** aIID) const;
|
||||||
nsresult IsFunction(bool* aRetval) const;
|
nsresult IsFunction(bool* aRetval) const;
|
||||||
nsresult HasAncestor(const nsIID* aIID, bool* aRetval) const;
|
nsresult HasAncestor(const nsIID* aIID, bool* aRetval) const;
|
||||||
nsresult GetIIDForParamNoAlloc(uint16_t aMethodIndex,
|
|
||||||
const nsXPTParamInfo* aParam,
|
|
||||||
nsIID* aIID) const;
|
|
||||||
nsresult IsMainProcessScriptableOnly(bool* aRetval) const;
|
nsresult IsMainProcessScriptableOnly(bool* aRetval) const;
|
||||||
|
|
||||||
// XXX: We can probably get away with removing this method. A shim interface
|
// XXX: We can probably get away with removing this method. A shim interface
|
||||||
|
@ -248,15 +236,6 @@ public:
|
||||||
// place in xptcall. :-(
|
// place in xptcall. :-(
|
||||||
bool IsArithmetic() const { return Tag() <= TD_WCHAR; }
|
bool IsArithmetic() const { return Tag() <= TD_WCHAR; }
|
||||||
|
|
||||||
// We used to abuse 'pointer' flag bit in typelib format quite extensively.
|
|
||||||
// We've gotten rid of most of the cases, but there's still a fair amount
|
|
||||||
// of refactoring to be done in XPCWrappedJSClass before we can safely stop
|
|
||||||
// asking about this. In the mean time, we've got a temporary version of
|
|
||||||
// IsPointer() that should do the right thing.
|
|
||||||
bool deprecated_IsPointer() const {
|
|
||||||
return !IsArithmetic() && Tag() != TD_JSVAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool IsInterfacePointer() const {
|
bool IsInterfacePointer() const {
|
||||||
return Tag() == TD_INTERFACE_TYPE || Tag() == TD_INTERFACE_IS_TYPE;
|
return Tag() == TD_INTERFACE_TYPE || Tag() == TD_INTERFACE_IS_TYPE;
|
||||||
}
|
}
|
||||||
|
|
Загрузка…
Ссылка в новой задаче