widget/xpwidgets/nsTransferable.cpp

branch
TOR_BUG_9701
changeset 11
deefc01c0e14
parent 10
ac0c01689b40
child 12
7540298fafa1
equal deleted inserted replaced
4:7082fd048f6a 5:9e475906624a
53 { 53 {
54 if (mCacheFileName) free(mCacheFileName); 54 if (mCacheFileName) free(mCacheFileName);
55 } 55 }
56 56
57 //------------------------------------------------------------------------- 57 //-------------------------------------------------------------------------
58 // The SetData method is overloaded to indicate private browsing mode
59 // while achieving some semblance of (private) interface compatibility.
60 //------------------------------------------------------------------------- 58 //-------------------------------------------------------------------------
61 void 59 void
62 DataStruct::SetData ( nsISupports* aData, uint32_t aDataLen, bool aIsPrivBrowsing ) 60 DataStruct::SetData ( nsISupports* aData, uint32_t aDataLen, bool aIsPrivBrowsing )
63 { 61 {
64 // Now, check to see if we consider the data to be "too large" 62 // Now, check to see if we consider the data to be "too large"
71 NS_WARNING("Oh no, couldn't write data to the cache file"); 69 NS_WARNING("Oh no, couldn't write data to the cache file");
72 } 70 }
73 71
74 mData = aData; 72 mData = aData;
75 mDataLen = aDataLen; 73 mDataLen = aDataLen;
76 }
77
78
79 //-------------------------------------------------------------------------
80 void
81 DataStruct::SetData ( nsISupports* aData, uint32_t aDataLen )
82 {
83 // Now, check to see if we consider the data to be "too large"
84 if (aDataLen > kLargeDatasetSize) {
85 // if so, cache it to disk instead of memory
86 if ( NS_SUCCEEDED(WriteCache(aData, aDataLen)) )
87 return;
88 else
89 NS_WARNING("Oh no, couldn't write data to the cache file");
90 }
91
92 mData = aData;
93 mDataLen = aDataLen;
94 } 74 }
95 75
96 76
97 //------------------------------------------------------------------------- 77 //-------------------------------------------------------------------------
98 void 78 void
437 // if not, try using a format converter to find a flavor to put the data in 417 // if not, try using a format converter to find a flavor to put the data in
438 if ( mFormatConv ) { 418 if ( mFormatConv ) {
439 for (i = 0; i < mDataArray.Length(); ++i) { 419 for (i = 0; i < mDataArray.Length(); ++i) {
440 DataStruct& data = mDataArray.ElementAt(i); 420 DataStruct& data = mDataArray.ElementAt(i);
441 bool canConvert = false; 421 bool canConvert = false;
422 bool aIsPrivBrowsing = false;
442 mFormatConv->CanConvert(aFlavor, data.GetFlavor().get(), &canConvert); 423 mFormatConv->CanConvert(aFlavor, data.GetFlavor().get(), &canConvert);
443 424
444 if ( canConvert ) { 425 if ( canConvert ) {
445 nsCOMPtr<nsISupports> ConvertedData; 426 nsCOMPtr<nsISupports> ConvertedData;
446 uint32_t ConvertedLen; 427 uint32_t ConvertedLen;
447 mFormatConv->Convert(aFlavor, aData, aDataLen, data.GetFlavor().get(), getter_AddRefs(ConvertedData), &ConvertedLen); 428 mFormatConv->Convert(aFlavor, aData, aDataLen, data.GetFlavor().get(), getter_AddRefs(ConvertedData), &ConvertedLen);
448 data.SetData(ConvertedData, ConvertedLen); 429 if (NS_SUCCEEDED(GetIsPrivateData(&aIsPrivBrowsing))) {
449 return NS_OK; 430 data.SetData(ConvertedData, ConvertedLen, aIsPrivBrowsing);
431 return NS_OK;
432 }
433 else { // call to GetIsPrivateData() failed,
434 return NS_ERROR_FAILURE; // we didn't SetData(), generic error
435 }
450 } 436 }
451 } 437 }
452 } 438 }
453 439
454 // Can't set data neither directly nor through converter. Just add this flavor and try again 440 // Can't set data neither directly nor through converter. Just add this flavor and try again

mercurial