1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef COMPONENTS_DOM_DISTILLER_CORE_DOM_DISTILLER_CONTENT_STORE_H_
6 #define COMPONENTS_DOM_DISTILLER_CORE_DOM_DISTILLER_CONTENT_STORE_H_
9 #include "base/containers/hash_tables.h"
10 #include "components/dom_distiller/core/article_entry.h"
11 #include "components/dom_distiller/core/proto/distilled_article.pb.h"
13 namespace dom_distiller
{
15 // This is a simple interface for saving and loading of distilled content for an
17 class DistilledContentStore
{
19 typedef base::Callback
<
20 void(bool /* success */, scoped_ptr
<DistilledArticleProto
>)> LoadCallback
;
21 typedef base::Callback
<void(bool /* success */)> SaveCallback
;
23 virtual void SaveContent(const ArticleEntry
& entry
,
24 const DistilledArticleProto
& proto
,
25 SaveCallback callback
) = 0;
26 virtual void LoadContent(const ArticleEntry
& entry
,
27 LoadCallback callback
) const = 0;
29 DistilledContentStore() {};
30 virtual ~DistilledContentStore() {};
32 DISALLOW_COPY_AND_ASSIGN(DistilledContentStore
);
35 // This content store keeps anything put in it around forever. Its memory use
36 // then may grow very large.
38 // TODO(cjhopman): Do something about unbound memory growth.
39 class InMemoryContentStore
: public DistilledContentStore
{
41 InMemoryContentStore();
42 virtual ~InMemoryContentStore();
44 // DistilledContentStore implementation
45 virtual void SaveContent(const ArticleEntry
& entry
,
46 const DistilledArticleProto
& proto
,
47 SaveCallback callback
) OVERRIDE
;
48 virtual void LoadContent(const ArticleEntry
& entry
,
49 LoadCallback callback
) const OVERRIDE
;
51 // Synchronously saves the content.
52 void InjectContent(const ArticleEntry
& entry
,
53 const DistilledArticleProto
& proto
);
56 typedef base::hash_map
<std::string
, DistilledArticleProto
> ContentMap
;
61 #endif // COMPONENTS_DOM_DISTILLER_CORE_DOM_DISTILLER_CONTENT_CACHE_H_