add PurgeResourceCache to track leaks

TBR=halcananry

Author: reed@google.com

Review URL: https://codereview.chromium.org/554263005
diff --git a/src/core/SkResourceCache.cpp b/src/core/SkResourceCache.cpp
index 6400e8a..9262c34 100644
--- a/src/core/SkResourceCache.cpp
+++ b/src/core/SkResourceCache.cpp
@@ -303,7 +303,7 @@
     fCount -= 1;
 }
 
-void SkResourceCache::purgeAsNeeded() {
+void SkResourceCache::purgeAsNeeded(bool forcePurge) {
     size_t byteLimit;
     int    countLimit;
 
@@ -317,7 +317,7 @@
 
     Rec* rec = fTail;
     while (rec) {
-        if (fTotalBytesUsed < byteLimit && fCount < countLimit) {
+        if (!forcePurge && fTotalBytesUsed < byteLimit && fCount < countLimit) {
             break;
         }
 
@@ -564,6 +564,11 @@
     return get_cache()->getSingleAllocationByteLimit();
 }
 
+void SkResourceCache::PurgeAll() {
+    SkAutoMutexAcquire am(gMutex);
+    return get_cache()->purgeAll();
+}
+
 const SkResourceCache::Rec* SkResourceCache::FindAndLock(const Key& key) {
     SkAutoMutexAcquire am(gMutex);
     return get_cache()->findAndLock(key);
@@ -603,3 +608,7 @@
     return SkResourceCache::SetSingleAllocationByteLimit(newLimit);
 }
 
+void SkGraphics::PurgeResourceCache() {
+    return SkResourceCache::PurgeAll();
+}
+