18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2006, 2007 Apple Inc. All rights reserved. 38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Redistribution and use in source and binary forms, with or without 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modification, are permitted provided that the following conditions 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * are met: 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 1. Redistributions of source code must retain the above copyright 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * notice, this list of conditions and the following disclaimer. 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * notice, this list of conditions and the following disclaimer in the 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * documentation and/or other materials provided with the distribution. 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "config.h" 278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "WebKitDLL.h" 288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "WebCache.h" 298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "CFDictionaryPropertyBag.h" 31563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark#include <WebCore/ApplicationCacheStorage.h> 3228040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu#include <WebCore/MemoryCache.h> 33563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark#include <WebCore/CrossOriginPreflightResultCache.h> 348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// WebCache --------------------------------------------------------------------------- 368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectWebCache::WebCache() 388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project: m_refCount(0) 398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project gClassCount++; 418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project gClassNameCount.add("WebCache"); 428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectWebCache::~WebCache() 458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project gClassCount--; 478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project gClassNameCount.remove("WebCache"); 488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectWebCache* WebCache::createInstance() 518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebCache* instance = new WebCache(); 538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project instance->AddRef(); 548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return instance; 558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// IUnknown ------------------------------------------------------------------- 588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectHRESULT STDMETHODCALLTYPE WebCache::QueryInterface(REFIID riid, void** ppvObject) 608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *ppvObject = 0; 628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (IsEqualGUID(riid, IID_IUnknown)) 638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *ppvObject = static_cast<WebCache*>(this); 648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project else if (IsEqualGUID(riid, IID_IWebCache)) 658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *ppvObject = static_cast<WebCache*>(this); 668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project else 678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return E_NOINTERFACE; 688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project AddRef(); 708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return S_OK; 718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectULONG STDMETHODCALLTYPE WebCache::AddRef(void) 748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return ++m_refCount; 768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectULONG STDMETHODCALLTYPE WebCache::Release(void) 798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ULONG newRef = --m_refCount; 818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!newRef) 828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project delete(this); 838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return newRef; 858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// IWebCache ------------------------------------------------------------------------------ 888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectHRESULT STDMETHODCALLTYPE WebCache::statistics( 908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /* [in][out] */ int* count, 918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /* [retval][out] */ IPropertyBag ** s) 928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!count || (s && *count < 4)) 948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return E_FAIL; 958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *count = 4; 978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!s) 988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return S_OK; 998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 10065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebCore::MemoryCache::Statistics stat = WebCore::memoryCache()->getStatistics(); 1018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project static CFStringRef imagesKey = CFSTR("images"); 1038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project static CFStringRef stylesheetsKey = CFSTR("style sheets"); 1048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project static CFStringRef xslKey = CFSTR("xsl"); 1058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project static CFStringRef scriptsKey = CFSTR("scripts"); 1068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if !ENABLE(XSLT) 1078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project const int zero = 0; 1088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 1098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project RetainPtr<CFMutableDictionaryRef> dictionary(AdoptCF, 1118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project CFDictionaryCreateMutable(0, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks)); 1128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project RetainPtr<CFNumberRef> value(AdoptCF, CFNumberCreate(0, kCFNumberIntType, &stat.images.count)); 1148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project CFDictionaryAddValue(dictionary.get(), imagesKey, value.get()); 1158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project value.adoptCF(CFNumberCreate(0, kCFNumberIntType, &stat.cssStyleSheets.count)); 1178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project CFDictionaryAddValue(dictionary.get(), stylesheetsKey, value.get()); 1188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if ENABLE(XSLT) 1208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project value.adoptCF(CFNumberCreate(0, kCFNumberIntType, &stat.xslStyleSheets.count)); 1218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#else 1228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project value.adoptCF(CFNumberCreate(0, kCFNumberIntType, &zero)); 1238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 1248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project CFDictionaryAddValue(dictionary.get(), xslKey, value.get()); 1258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project value.adoptCF(CFNumberCreate(0, kCFNumberIntType, &stat.scripts.count)); 1278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project CFDictionaryAddValue(dictionary.get(), scriptsKey, value.get()); 1288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 129643ca7872b450ea4efacab6188849e5aac2ba161Steve Block COMPtr<CFDictionaryPropertyBag> propBag = CFDictionaryPropertyBag::createInstance(); 1308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project propBag->setDictionary(dictionary.get()); 131643ca7872b450ea4efacab6188849e5aac2ba161Steve Block s[0] = propBag.releaseRef(); 1328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project dictionary.adoptCF(CFDictionaryCreateMutable(0, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks)); 1348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project value.adoptCF(CFNumberCreate(0, kCFNumberIntType, &stat.images.size)); 1368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project CFDictionaryAddValue(dictionary.get(), imagesKey, value.get()); 1378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project value.adoptCF(CFNumberCreate(0, kCFNumberIntType, &stat.cssStyleSheets.size)); 1398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project CFDictionaryAddValue(dictionary.get(), stylesheetsKey, value.get()); 1408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if ENABLE(XSLT) 1428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project value.adoptCF(CFNumberCreate(0, kCFNumberIntType, &stat.xslStyleSheets.size)); 1438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#else 1448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project value.adoptCF(CFNumberCreate(0, kCFNumberIntType, &zero)); 1458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 1468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project CFDictionaryAddValue(dictionary.get(), xslKey, value.get()); 1478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project value.adoptCF(CFNumberCreate(0, kCFNumberIntType, &stat.scripts.size)); 1498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project CFDictionaryAddValue(dictionary.get(), scriptsKey, value.get()); 1508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project propBag = CFDictionaryPropertyBag::createInstance(); 1528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project propBag->setDictionary(dictionary.get()); 153643ca7872b450ea4efacab6188849e5aac2ba161Steve Block s[1] = propBag.releaseRef(); 1548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project dictionary.adoptCF(CFDictionaryCreateMutable(0, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks)); 1568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project value.adoptCF(CFNumberCreate(0, kCFNumberIntType, &stat.images.liveSize)); 1588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project CFDictionaryAddValue(dictionary.get(), imagesKey, value.get()); 1598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project value.adoptCF(CFNumberCreate(0, kCFNumberIntType, &stat.cssStyleSheets.liveSize)); 1618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project CFDictionaryAddValue(dictionary.get(), stylesheetsKey, value.get()); 1628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if ENABLE(XSLT) 1648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project value.adoptCF(CFNumberCreate(0, kCFNumberIntType, &stat.xslStyleSheets.liveSize)); 1658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#else 1668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project value.adoptCF(CFNumberCreate(0, kCFNumberIntType, &zero)); 1678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 1688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project CFDictionaryAddValue(dictionary.get(), xslKey, value.get()); 1698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project value.adoptCF(CFNumberCreate(0, kCFNumberIntType, &stat.scripts.liveSize)); 1718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project CFDictionaryAddValue(dictionary.get(), scriptsKey, value.get()); 1728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project propBag = CFDictionaryPropertyBag::createInstance(); 1748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project propBag->setDictionary(dictionary.get()); 175643ca7872b450ea4efacab6188849e5aac2ba161Steve Block s[2] = propBag.releaseRef(); 1768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project dictionary.adoptCF(CFDictionaryCreateMutable(0, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks)); 1788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project value.adoptCF(CFNumberCreate(0, kCFNumberIntType, &stat.images.decodedSize)); 1808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project CFDictionaryAddValue(dictionary.get(), imagesKey, value.get()); 1818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project value.adoptCF(CFNumberCreate(0, kCFNumberIntType, &stat.cssStyleSheets.decodedSize)); 1838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project CFDictionaryAddValue(dictionary.get(), stylesheetsKey, value.get()); 1848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if ENABLE(XSLT) 1868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project value.adoptCF(CFNumberCreate(0, kCFNumberIntType, &stat.xslStyleSheets.decodedSize)); 1878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#else 1888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project value.adoptCF(CFNumberCreate(0, kCFNumberIntType, &zero)); 1898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 1908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project CFDictionaryAddValue(dictionary.get(), xslKey, value.get()); 1918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project value.adoptCF(CFNumberCreate(0, kCFNumberIntType, &stat.scripts.decodedSize)); 1938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project CFDictionaryAddValue(dictionary.get(), scriptsKey, value.get()); 1948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project propBag = CFDictionaryPropertyBag::createInstance(); 1968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project propBag->setDictionary(dictionary.get()); 197643ca7872b450ea4efacab6188849e5aac2ba161Steve Block s[3] = propBag.releaseRef(); 1988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return S_OK; 2008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectHRESULT STDMETHODCALLTYPE WebCache::empty( void) 2038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 20465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch if (WebCore::memoryCache()->disabled()) 2058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return S_OK; 20665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebCore::memoryCache()->setDisabled(true); 20765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebCore::memoryCache()->setDisabled(false); 208563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 209563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark // Empty the application cache. 210563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark WebCore::cacheStorage().empty(); 211563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 212563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark // Empty the Cross-Origin Preflight cache 213563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark WebCore::CrossOriginPreflightResultCache::shared().empty(); 214563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 2158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return S_OK; 2168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectHRESULT STDMETHODCALLTYPE WebCache::setDisabled( 2198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /* [in] */ BOOL disabled) 2208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 22165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebCore::memoryCache()->setDisabled(!!disabled); 2228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return S_OK; 2238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectHRESULT STDMETHODCALLTYPE WebCache::disabled( 2268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /* [out][retval] */ BOOL* disabled) 2278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 2288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!disabled) 2298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return E_POINTER; 23065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch *disabled = WebCore::memoryCache()->disabled(); 2318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return S_OK; 2328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 233