зеркало из https://github.com/mozilla/gecko-dev.git
Move voidable string into xpcom. Part of fix for bug 221387 (XPathExpression.createExpression doesn't throw NAMESPACE_ERR). r=bz, sr=dbaron.
This commit is contained in:
Родитель
16014e6ec2
Коммит
9059682e5b
|
@ -2383,41 +2383,6 @@ protected:
|
|||
nsBufferHandle<PRUnichar> mBufferHandle;
|
||||
};
|
||||
|
||||
// "voidable" nsAString implementation
|
||||
class XPCVoidableString : public nsAutoString
|
||||
{
|
||||
public:
|
||||
XPCVoidableString() :
|
||||
nsAutoString(), mIsVoid(PR_FALSE)
|
||||
{ }
|
||||
|
||||
char_type* GetWritableFragment(nsWritableFragment<char_type>& aFragment,
|
||||
nsFragmentRequest aRequest,
|
||||
PRUint32 aOffset)
|
||||
{
|
||||
mIsVoid = PR_FALSE;
|
||||
|
||||
return nsAutoString::GetWritableFragment(aFragment, aRequest, aOffset);
|
||||
}
|
||||
|
||||
PRBool IsVoid() const
|
||||
{
|
||||
return mIsVoid;
|
||||
}
|
||||
|
||||
void SetIsVoid(PRBool aVoid)
|
||||
{
|
||||
if(aVoid && !mIsVoid) {
|
||||
Truncate();
|
||||
}
|
||||
|
||||
mIsVoid = aVoid;
|
||||
}
|
||||
|
||||
protected:
|
||||
PRBool mIsVoid;
|
||||
};
|
||||
|
||||
// readable string conversions, static methods only
|
||||
class XPCStringConvert
|
||||
{
|
||||
|
|
|
@ -1606,7 +1606,7 @@ XPCWrappedNative::CallMethod(XPCCallContext& ccx,
|
|||
#define PARAM_AUTOSTRING_COUNT 1
|
||||
|
||||
#if PARAM_AUTOSTRING_COUNT
|
||||
XPCVoidableString autoStrings[PARAM_AUTOSTRING_COUNT];
|
||||
nsVoidableString autoStrings[PARAM_AUTOSTRING_COUNT];
|
||||
int autoStringIndex = 0;
|
||||
#endif
|
||||
|
||||
|
@ -1808,7 +1808,7 @@ XPCWrappedNative::CallMethod(XPCCallContext& ccx,
|
|||
}
|
||||
#endif
|
||||
dp->SetValIsDOMString();
|
||||
if(!(dp->val.p = new XPCVoidableString()))
|
||||
if(!(dp->val.p = new nsVoidableString()))
|
||||
{
|
||||
JS_ReportOutOfMemory(ccx);
|
||||
goto done;
|
||||
|
|
|
@ -1330,6 +1330,24 @@ nsAutoString::nsAutoString(const CBufDescriptor& aBuffer) : nsString() {
|
|||
AddNullTerminator(*this);
|
||||
}
|
||||
|
||||
PRUnichar* nsVoidableString::GetWritableFragment(nsWritableFragment<PRUnichar>& aFragment,nsFragmentRequest aRequest,PRUint32 aOffset) {
|
||||
mIsVoid = PR_FALSE;
|
||||
|
||||
return nsAutoString::GetWritableFragment(aFragment, aRequest, aOffset);
|
||||
}
|
||||
|
||||
PRBool nsVoidableString::IsVoid() const {
|
||||
return mIsVoid;
|
||||
}
|
||||
|
||||
void nsVoidableString::SetIsVoid(PRBool aVoid) {
|
||||
if (aVoid && !mIsVoid) {
|
||||
Truncate();
|
||||
}
|
||||
|
||||
mIsVoid = aVoid;
|
||||
}
|
||||
|
||||
void
|
||||
NS_ConvertASCIItoUTF16::Init( const char* aCString, PRUint32 aLength )
|
||||
{
|
||||
|
|
|
@ -482,6 +482,21 @@ public:
|
|||
PRUnichar mBuffer[kDefaultStringSize];
|
||||
};
|
||||
|
||||
class nsVoidableString : public nsAutoString
|
||||
{
|
||||
public:
|
||||
nsVoidableString() :
|
||||
nsAutoString(),
|
||||
mIsVoid(PR_FALSE) { }
|
||||
|
||||
char_type* GetWritableFragment(nsWritableFragment<char_type>& aFragment, nsFragmentRequest aRequest, PRUint32 aOffset);
|
||||
PRBool IsVoid() const;
|
||||
void SetIsVoid(PRBool aVoid);
|
||||
|
||||
protected:
|
||||
PRBool mIsVoid;
|
||||
};
|
||||
|
||||
// NS_DEF_DERIVED_STRING_OPERATOR_PLUS(nsAutoString, PRUnichar)
|
||||
|
||||
class NS_COM NS_ConvertASCIItoUTF16
|
||||
|
|
Загрузка…
Ссылка в новой задаче