18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2008 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 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 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 "WebCoreStatistics.h" 298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "COMPropertyBag.h" 318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <JavaScriptCore/JSLock.h> 328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <WebCore/FontCache.h> 338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <WebCore/GlyphPageTreeNode.h> 348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <WebCore/IconDatabase.h> 358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <WebCore/JSDOMWindow.h> 362bde8e466a4451c7319e3a072d118917957d6554Steve Block#include <WebCore/SharedBuffer.h> 378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectusing namespace JSC; 398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectusing namespace WebCore; 408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// WebCoreStatistics --------------------------------------------------------------------------- 428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectWebCoreStatistics::WebCoreStatistics() 448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project: m_refCount(0) 458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project gClassCount++; 478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project gClassNameCount.add("WebCoreStatistics"); 488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectWebCoreStatistics::~WebCoreStatistics() 518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project gClassCount--; 538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project gClassNameCount.remove("WebCoreStatistics"); 548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectWebCoreStatistics* WebCoreStatistics::createInstance() 578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebCoreStatistics* instance = new WebCoreStatistics(); 598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project instance->AddRef(); 608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return instance; 618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// IUnknown ------------------------------------------------------------------- 648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectHRESULT STDMETHODCALLTYPE WebCoreStatistics::QueryInterface(REFIID riid, void** ppvObject) 668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *ppvObject = 0; 688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (IsEqualGUID(riid, IID_IUnknown)) 698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *ppvObject = static_cast<WebCoreStatistics*>(this); 708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project else if (IsEqualGUID(riid, IID_IWebCoreStatistics)) 718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *ppvObject = static_cast<WebCoreStatistics*>(this); 728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project else 738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return E_NOINTERFACE; 748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project AddRef(); 768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return S_OK; 778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectULONG STDMETHODCALLTYPE WebCoreStatistics::AddRef(void) 808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return ++m_refCount; 828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectULONG STDMETHODCALLTYPE WebCoreStatistics::Release(void) 858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ULONG newRef = --m_refCount; 878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!newRef) 888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project delete(this); 898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return newRef; 918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// IWebCoreStatistics ------------------------------------------------------------------------------ 948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectHRESULT STDMETHODCALLTYPE WebCoreStatistics::javaScriptObjectsCount( 968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /* [retval][out] */ UINT* count) 978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!count) 998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return E_POINTER; 1008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch JSLock lock(SilenceAssertionsOnly); 102635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project *count = (UINT)JSDOMWindow::commonJSGlobalData()->heap.objectCount(); 1038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return S_OK; 1048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectHRESULT STDMETHODCALLTYPE WebCoreStatistics::javaScriptGlobalObjectsCount( 1078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /* [retval][out] */ UINT* count) 1088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!count) 1108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return E_POINTER; 1118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch JSLock lock(SilenceAssertionsOnly); 1138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *count = (UINT)JSDOMWindow::commonJSGlobalData()->heap.globalObjectCount(); 1148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return S_OK; 1158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectHRESULT STDMETHODCALLTYPE WebCoreStatistics::javaScriptProtectedObjectsCount( 1188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /* [retval][out] */ UINT* count) 1198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!count) 1218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return E_POINTER; 1228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch JSLock lock(SilenceAssertionsOnly); 1248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *count = (UINT)JSDOMWindow::commonJSGlobalData()->heap.protectedObjectCount(); 1258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return S_OK; 1268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectHRESULT STDMETHODCALLTYPE WebCoreStatistics::javaScriptProtectedGlobalObjectsCount( 1298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /* [retval][out] */ UINT* count) 1308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!count) 1328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return E_POINTER; 1338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch JSLock lock(SilenceAssertionsOnly); 1358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *count = (UINT)JSDOMWindow::commonJSGlobalData()->heap.protectedGlobalObjectCount(); 1368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return S_OK; 1378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectHRESULT STDMETHODCALLTYPE WebCoreStatistics::javaScriptProtectedObjectTypeCounts( 1408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /* [retval][out] */ IPropertyBag2** typeNamesAndCounts) 1418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch JSLock lock(SilenceAssertionsOnly); 1432fc2651226baac27029e38c9d6ef883fa32084dbSteve Block OwnPtr<TypeCountSet> jsObjectTypeNames(JSDOMWindow::commonJSGlobalData()->heap.protectedObjectTypeCounts()); 1442fc2651226baac27029e38c9d6ef883fa32084dbSteve Block typedef TypeCountSet::const_iterator Iterator; 1458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Iterator end = jsObjectTypeNames->end(); 1468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project HashMap<String, int> typeCountMap; 1478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project for (Iterator current = jsObjectTypeNames->begin(); current != end; ++current) 1488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project typeCountMap.set(current->first, current->second); 1498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project COMPtr<IPropertyBag2> results(AdoptCOM, COMPropertyBag<int>::createInstance(typeCountMap)); 1518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project results.copyRefTo(typeNamesAndCounts); 1528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return S_OK; 1538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectHRESULT STDMETHODCALLTYPE WebCoreStatistics::iconPageURLMappingCount( 1568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /* [retval][out] */ UINT* count) 1578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!count) 1598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return E_POINTER; 16081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch *count = (UINT) iconDatabase().pageURLMappingCount(); 1618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return S_OK; 1628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectHRESULT STDMETHODCALLTYPE WebCoreStatistics::iconRetainedPageURLCount( 1658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /* [retval][out] */ UINT *count) 1668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!count) 1688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return E_POINTER; 16981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch *count = (UINT) iconDatabase().retainedPageURLCount(); 1708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return S_OK; 1718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectHRESULT STDMETHODCALLTYPE WebCoreStatistics::iconRecordCount( 1748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /* [retval][out] */ UINT *count) 1758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!count) 1778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return E_POINTER; 17881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch *count = (UINT) iconDatabase().iconRecordCount(); 1798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return S_OK; 1808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectHRESULT STDMETHODCALLTYPE WebCoreStatistics::iconsWithDataCount( 1838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /* [retval][out] */ UINT *count) 1848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!count) 1868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return E_POINTER; 18781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch *count = (UINT) iconDatabase().iconRecordCountWithData(); 1888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return S_OK; 1898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectHRESULT STDMETHODCALLTYPE WebCoreStatistics::cachedFontDataCount( 1928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /* [retval][out] */ UINT *count) 1938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!count) 1958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return E_POINTER; 196635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project *count = (UINT) fontCache()->fontDataCount(); 1978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return S_OK; 1988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectHRESULT STDMETHODCALLTYPE WebCoreStatistics::cachedFontDataInactiveCount( 2018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /* [retval][out] */ UINT *count) 2028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 2038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!count) 2048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return E_POINTER; 205635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project *count = (UINT) fontCache()->inactiveFontDataCount(); 2068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return S_OK; 2078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectHRESULT STDMETHODCALLTYPE WebCoreStatistics::purgeInactiveFontData(void) 2108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 211635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project fontCache()->purgeInactiveFontData(); 2128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return S_OK; 2138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectHRESULT STDMETHODCALLTYPE WebCoreStatistics::glyphPageCount( 2168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /* [retval][out] */ UINT *count) 2178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 2188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!count) 2198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return E_POINTER; 2208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *count = (UINT) GlyphPageTreeNode::treeGlyphPageCount(); 2218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return S_OK; 2228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 223