widget/xpwidgets/nsTransferable.cpp

branch
TOR_BUG_9701
changeset 13
44a2da4a2ab2
parent 12
7540298fafa1
child 14
925c144e1f1f
equal deleted inserted replaced
6:c3c519b64070 7:ca923a9feeef
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

mercurial