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 |