The abstract string types should be used only for function arguments. Concrete types such as nsString and nsAutoString should be used for new instances of strings.

Cheers,
Josh

On 04/04/2013 01:10 PM, [email protected] wrote:
Hello,

I'm a bit confused when it comes to abstract string classes, i.e. nsAString. The Mozilla 
internal string guide speaks of them as "historic", so I wondered that they are 
still expected as input value in nsDOMTokenList::Contains

In nsScriptLoader::ProcessScriptElement I want to do the following:

   nsCOMPtr<nsIContentSecurityPolicy> csp;

   nsAString& str1 = NS_LITERAL_STRING("string1");
   nsAString& str2 = csp->getMyStringValue();

   str1.Append(str2);

   // call Contains(str1) now, to check if the string "string1string2"
   // is a value of an element attribut

Explanation:

   - getMyStringValue() is supposed to be a JavaScript function written
     in contentSecurityPolicy.js and delivers a value from CSPRep, very
     smililar to what getAllowsEval does with _allowEval. The returned value
     is always a mixed string consisting of upper and lower case letters and
     numbers, e.g. "Abc123"

   - after the Append operation str1 should contain "string1string2"

Question 1: My above handling of this issue seems to be erroneous. How do I
             use the strings correctly inside this context?

Question 2: nsDOMTokenList defines Contains(const nsAString& aToken,
             ErrorResult& aError). However, I found this function nowhere used
             in this way. Can I simply call it via Contains(str1) as it is
             done in lines 111 or 148?

Thanks for your support.
Jeremy




_______________________________________________
dev-security mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-security

Reply via email to