Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / components / dom_distiller / core / fake_distiller.h
1 // Copyright 2013 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.
4
5 #ifndef COMPONENTS_DOM_DISTILLER_CORE_FAKE_DISTILLER_H_
6 #define COMPONENTS_DOM_DISTILLER_CORE_FAKE_DISTILLER_H_
7
8 #include "components/dom_distiller/core/article_distillation_update.h"
9 #include "components/dom_distiller/core/article_entry.h"
10 #include "components/dom_distiller/core/distiller.h"
11 #include "testing/gmock/include/gmock/gmock.h"
12 #include "url/gurl.h"
13
14 class GURL;
15
16 namespace dom_distiller {
17 namespace test {
18
19 class MockDistillerFactory : public DistillerFactory {
20  public:
21   MockDistillerFactory();
22   virtual ~MockDistillerFactory();
23   MOCK_METHOD0(CreateDistillerImpl, Distiller*());
24   virtual scoped_ptr<Distiller> CreateDistiller() OVERRIDE {
25     return scoped_ptr<Distiller>(CreateDistillerImpl());
26   }
27 };
28
29 class FakeDistiller : public Distiller {
30  public:
31   // If execute_callback is true, when DistillPage is called, a task will
32   // immediately be posted to execute the callback with a simple
33   // DistilledArticleProto.
34   explicit FakeDistiller(bool execute_callback);
35   virtual ~FakeDistiller();
36   MOCK_METHOD0(Die, void());
37
38   virtual void DistillPage(
39       const GURL& url,
40       scoped_ptr<DistillerPage> distiller_page,
41       const DistillationFinishedCallback& article_callback,
42       const DistillationUpdateCallback& page_callback) OVERRIDE;
43
44   void RunDistillerCallback(scoped_ptr<DistilledArticleProto> proto);
45
46   GURL GetUrl() { return url_; }
47
48   DistillationFinishedCallback GetArticleCallback() {
49     return article_callback_;
50   }
51
52  private:
53   void PostDistillerCallback(scoped_ptr<DistilledArticleProto> proto);
54   void RunDistillerCallbackInternal(scoped_ptr<DistilledArticleProto> proto);
55
56   bool execute_callback_;
57   GURL url_;
58   DistillationFinishedCallback article_callback_;
59   DistillationUpdateCallback page_callback_;
60
61   bool destruction_allowed_;
62 };
63
64 }  // namespace test
65 }  // namespace dom_distiller
66
67 #endif  // COMPONENTS_DOM_DISTILLER_CORE_FAKE_DISTILLER_H_