Home | History | Annotate | Download | only in tools
      1 /*
      2  * Copyright 2016 Google Inc.
      3  *
      4  * Use of this source code is governed by a BSD-style license that can be
      5  * found in the LICENSE file.
      6  */
      7 
      8 #include "UrlDataManager.h"
      9 
     10 bool operator==(const SkData& a, const SkData& b) {
     11     return a.equals(&b);
     12 }
     13 
     14 UrlDataManager::UrlDataManager(SkString rootUrl) : fRootUrl(rootUrl), fDataId(0) {}
     15 
     16 SkString UrlDataManager::addData(SkData* data, const char* contentType) {
     17     UrlData* urlData = fCache.find(*data);
     18     if (fCache.find(*data)) {
     19         SkASSERT(data->equals(urlData->fData.get()));
     20         return urlData->fUrl;
     21     }
     22 
     23     urlData = new UrlData;
     24     urlData->fData.reset(SkRef(data));
     25     urlData->fContentType.set(contentType);
     26     urlData->fUrl.appendf("%s/%d", fRootUrl.c_str(), fDataId++);
     27 
     28     fCache.add(urlData);
     29 
     30     SkASSERT(!fUrlLookup.find(urlData->fUrl));
     31     fUrlLookup.add(urlData);
     32     return urlData->fUrl;
     33 }
     34 
     35 void UrlDataManager::reset() {
     36     SkTDynamicHash<UrlData, SkData, LookupTrait>::Iter iter(&fCache);
     37     while (!iter.done()) {
     38         UrlData* urlData = &(*iter);
     39         urlData->unref();
     40         ++iter;
     41     }
     42 
     43     fCache.rewind();
     44 }
     45