Purge GrTextBlobCache entries on SkTextBlob deletion

Similar to the SkImage purge mechanism.

Change-Id: I0b7fb1bad507a3c7f30a4f7514bedd894d1748ac
Reviewed-on: https://skia-review.googlesource.com/9631
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Florin Malita <fmalita@chromium.org>
diff --git a/src/gpu/text/GrTextBlobCache.cpp b/src/gpu/text/GrTextBlobCache.cpp
index c53fcb0..f1162e2 100644
--- a/src/gpu/text/GrTextBlobCache.cpp
+++ b/src/gpu/text/GrTextBlobCache.cpp
@@ -7,6 +7,8 @@
 
 #include "GrTextBlobCache.h"
 
+DECLARE_SKMESSAGEBUS_MESSAGE(GrTextBlobCache::PurgeBlobMessage)
+
 GrTextBlobCache::~GrTextBlobCache() {
     SkDEBUGCODE(this->freeAll();)
 }
@@ -24,3 +26,8 @@
     SkASSERT(fPool.isEmpty());
     SkASSERT(fBlobList.isEmpty());
 }
+
+void GrTextBlobCache::PostPurgeBlobMessage(uint32_t id) {
+    SkASSERT(id != SK_InvalidGenID);
+    SkMessageBus<PurgeBlobMessage>::Post(PurgeBlobMessage({id}));
+}