397 |
397 |
398 NS_ENSURE_ARG(aFlavor); |
398 NS_ENSURE_ARG(aFlavor); |
399 |
399 |
400 // first check our intrinsic flavors to see if one has been registered. |
400 // first check our intrinsic flavors to see if one has been registered. |
401 uint32_t i = 0; |
401 uint32_t i = 0; |
402 bool aIsPrivBrowsing = false; |
|
403 for (i = 0; i < mDataArray.Length(); ++i) { |
402 for (i = 0; i < mDataArray.Length(); ++i) { |
404 DataStruct& data = mDataArray.ElementAt(i); |
403 DataStruct& data = mDataArray.ElementAt(i); |
405 if ( data.GetFlavor().Equals(aFlavor) ) { |
404 if ( data.GetFlavor().Equals(aFlavor) ) { |
406 if ( NS_SUCCEEDED(GetIsPrivateData(&aIsPrivBrowsing)) ) { |
405 data.SetData ( aData, aDataLen, mPrivateData); |
407 data.SetData ( aData, aDataLen, aIsPrivBrowsing ); |
406 return NS_OK; |
408 return NS_OK; |
|
409 } |
|
410 else { // call to GetIsPrivateData() failed, |
|
411 return NS_ERROR_FAILURE; // we didn't SetData(), generic error |
|
412 } |
|
413 } |
407 } |
414 } |
408 } |
415 |
409 |
416 // if not, try using a format converter to find a flavor to put the data in |
410 // if not, try using a format converter to find a flavor to put the data in |
417 if ( mFormatConv ) { |
411 if ( mFormatConv ) { |
418 for (i = 0; i < mDataArray.Length(); ++i) { |
412 for (i = 0; i < mDataArray.Length(); ++i) { |
419 DataStruct& data = mDataArray.ElementAt(i); |
413 DataStruct& data = mDataArray.ElementAt(i); |
420 bool canConvert = false; |
414 bool canConvert = false; |
421 bool aIsPrivBrowsing = false; |
|
422 mFormatConv->CanConvert(aFlavor, data.GetFlavor().get(), &canConvert); |
415 mFormatConv->CanConvert(aFlavor, data.GetFlavor().get(), &canConvert); |
423 |
416 |
424 if ( canConvert ) { |
417 if ( canConvert ) { |
425 nsCOMPtr<nsISupports> ConvertedData; |
418 nsCOMPtr<nsISupports> ConvertedData; |
426 uint32_t ConvertedLen; |
419 uint32_t ConvertedLen; |
427 mFormatConv->Convert(aFlavor, aData, aDataLen, data.GetFlavor().get(), getter_AddRefs(ConvertedData), &ConvertedLen); |
420 mFormatConv->Convert(aFlavor, aData, aDataLen, data.GetFlavor().get(), getter_AddRefs(ConvertedData), &ConvertedLen); |
428 if (NS_SUCCEEDED(GetIsPrivateData(&aIsPrivBrowsing))) { |
421 data.SetData(ConvertedData, ConvertedLen, mPrivateData); |
429 data.SetData(ConvertedData, ConvertedLen, aIsPrivBrowsing); |
422 return NS_OK; |
430 return NS_OK; |
|
431 } |
|
432 else { // call to GetIsPrivateData() failed, |
|
433 return NS_ERROR_FAILURE; // we didn't SetData(), generic error |
|
434 } |
|
435 } |
423 } |
436 } |
424 } |
437 } |
425 } |
438 |
426 |
439 // Can't set data neither directly nor through converter. Just add this flavor and try again |
427 // Can't set data neither directly nor through converter. Just add this flavor and try again |