Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2)

Unified Diff: tools/UrlDataManager.cpp

Issue 1670153005: Create image cache for use by json canvas (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: comments Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tools/UrlDataManager.h ('k') | tools/skiaserve/skiaserve.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/UrlDataManager.cpp
diff --git a/tools/UrlDataManager.cpp b/tools/UrlDataManager.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..a30d8ba23e6e92c446f6d1944b5eabf793a7f483
--- /dev/null
+++ b/tools/UrlDataManager.cpp
@@ -0,0 +1,44 @@
+/*
+ * Copyright 2016 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "UrlDataManager.h"
+
+bool operator==(const SkData& a, const SkData& b) {
+ return a.equals(&b);
+}
+
+UrlDataManager::UrlDataManager(SkString rootUrl) : fRootUrl(rootUrl), fDataId(0) {}
+
+SkString UrlDataManager::addData(SkData* data, const char* contentType) {
+ UrlData* urlData = fCache.find(*data);
+ if (fCache.find(*data)) {
+ SkASSERT(data->equals(urlData->fData.get()));
+ return urlData->fUrl;
+ }
+
+ urlData = new UrlData;
+ urlData->fData.reset(SkRef(data));
+ urlData->fContentType.set(contentType);
+ urlData->fUrl.appendf("%s/%d", fRootUrl.c_str(), fDataId++);
+
+ fCache.add(urlData);
+
+ SkASSERT(!fUrlLookup.find(urlData->fUrl));
+ fUrlLookup.add(urlData);
+ return urlData->fUrl;
+}
+
+void UrlDataManager::reset() {
+ SkTDynamicHash<UrlData, SkData, LookupTrait>::Iter iter(&fCache);
+ while (!iter.done()) {
+ UrlData* urlData = &(*iter);
+ urlData->unref();
+ ++iter;
+ }
+
+ fCache.rewind();
+}
« no previous file with comments | « tools/UrlDataManager.h ('k') | tools/skiaserve/skiaserve.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698