1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- /*
- * 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 "tools/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();
- }
|