www.pudn.com > wcore.rar > WebCoreCache.cpp


 /* 
 * Copyright (c) 2005 Nokia Corporation, Inc. All rights reserved. 
 * 
 * Redistribution and use in source and binary forms, with or without 
 * modification, are permitted provided that the following conditions 
 * are met: 
 * 1. Redistributions of source code must retain the above copyright 
 *    notice, this list of conditions and the following disclaimer. 
 * 2. Redistributions in binary form must reproduce the above copyright 
 *    notice, this list of conditions and the following disclaimer in the 
 *    documentation and/or other materials provided with the distribution. 
 * 3. Neither the name of the Nokia Corporation nor the names of its 
 *    contributors may be used to endorse or promote products derived 
 *    from this software without specific prior written permission. 
 * 
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
 * POSSIBILITY OF SUCH DAMAGE. 
*/ 
 
#include "WebCoreCache.h" 
#include "loader.h" 
#include "KWQBuffer.h" 
#include "WebCoreUrlResponseInfo.h" 
 
_LIT( KMimeStringImage, "image/" ); 
_LIT( KMimeStringCss, "text/css" ); 
_LIT( KMimeStringJs, "application/x-javascript" ); 
 
 
// ----------------------------------------------------------------------------- 
// TWebCoreCache::AddItemToCache 
// 
// 
// ----------------------------------------------------------------------------- 
// 
EXPORT_C void TWebCoreCache::AddItemToCacheL( 
    MWebCoreUrlResponseHeaderInfo& aHeader, 
    TDesC8& aData, 
    TBool aSaveRawData ) 
    { 
    // if content is a CSS document 
    if( aHeader.ContentType().Find(KMimeStringCss) != KErrNotFound ) 
        { 
        TWebCoreCache::AddCssToCacheL( aHeader, aData ); 
        } 
    // if content is a Script document 
    else if( aHeader.ContentType().Find(KMimeStringJs) != KErrNotFound ) 
        { 
        TWebCoreCache::AddScriptToCacheL( aHeader, aData ); 
        } 
    // if content is an image 
    else if( aHeader.ContentType().Find(KMimeStringImage) != KErrNotFound ) 
        { 
        TWebCoreCache::AddImageToCacheL( aHeader, aData, aSaveRawData ); 
        } 
    } 
 
// ----------------------------------------------------------------------------- 
// TWebCoreCache::AddCssToCache 
// 
// 
// ----------------------------------------------------------------------------- 
// 
void TWebCoreCache::AddCssToCacheL( 
    MWebCoreUrlResponseHeaderInfo& aResponse, 
    TDesC8& aCssData ) 
    { 
    HBufC16* data16 = HBufC16::NewL( aCssData.Length() ); 
    data16->Des().Copy( aCssData ); 
    khtml::Cache::preloadStyleSheet( QString::FromDes( aResponse.ResponseUrl() ), 
        QString::FromDes( *data16 ) ); 
    delete data16; 
    } 
 
// ----------------------------------------------------------------------------- 
// TWebCoreCache::AddScriptToCache 
// 
// 
// ----------------------------------------------------------------------------- 
// 
void TWebCoreCache::AddScriptToCacheL( 
    MWebCoreUrlResponseHeaderInfo& aResponse, 
    TDesC8& aScriptData ) 
    { 
    HBufC16* data16 = HBufC16::NewL( aScriptData.Length() ); 
    data16->Des().Copy( aScriptData ); 
    khtml::Cache::preloadScript( QString::FromDes( aResponse.ResponseUrl() ), 
        QString::FromDes( *data16 ) ); 
    delete data16; 
    } 
 
// ----------------------------------------------------------------------------- 
// TWebCoreCache::AddImageToCache 
// 
// 
// ----------------------------------------------------------------------------- 
// 
void TWebCoreCache::AddImageToCacheL( 
    MWebCoreUrlResponseHeaderInfo& aResponse, 
    TDesC8& aImageData, 
    TBool aSaveRawData ) 
    { 
    QBuffer *imgBuf = new QBuffer(); 
    imgBuf->writeBlock((const char *)aImageData.Ptr(), (int)aImageData.Length()); 
    khtml::CachedImage * image = khtml::Cache::preloadImage( aResponse, *imgBuf ); 
    delete imgBuf; 
    } 
 
//  End of File