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 "base/callback.h" 9 #include "components/dom_distiller/core/article_distillation_update.h" 10 #include "components/dom_distiller/core/article_entry.h" 11 #include "components/dom_distiller/core/distiller.h" 12 #include "testing/gmock/include/gmock/gmock.h" 13 #include "url/gurl.h" 14 15 class GURL; 16 17 namespace dom_distiller { 18 namespace test { 19 20 class MockDistillerFactory : public DistillerFactory { 21 public: 22 MockDistillerFactory(); 23 virtual ~MockDistillerFactory(); 24 MOCK_METHOD0(CreateDistillerImpl, Distiller*()); CreateDistiller()25 virtual scoped_ptr<Distiller> CreateDistiller() OVERRIDE { 26 return scoped_ptr<Distiller>(CreateDistillerImpl()); 27 } 28 }; 29 30 class FakeDistiller : public Distiller { 31 public: 32 // If execute_callback is true, when DistillPage is called, a task will 33 // immediately be posted to execute the callback with a simple 34 // DistilledArticleProto. 35 explicit FakeDistiller(bool execute_callback); 36 // TODO(yfriedman): Drop execute_callback from this and give the option of 37 // "auto-distilling" or calling the provided closure. 38 explicit FakeDistiller(bool execute_callback, 39 const base::Closure& distillation_initiated_callback); 40 virtual ~FakeDistiller(); 41 MOCK_METHOD0(Die, void()); 42 43 virtual void DistillPage( 44 const GURL& url, 45 scoped_ptr<DistillerPage> distiller_page, 46 const DistillationFinishedCallback& article_callback, 47 const DistillationUpdateCallback& page_callback) OVERRIDE; 48 49 void RunDistillerCallback(scoped_ptr<DistilledArticleProto> proto); 50 void RunDistillerUpdateCallback(const ArticleDistillationUpdate& update); 51 GetUrl()52 GURL GetUrl() { return url_; } 53 GetArticleCallback()54 DistillationFinishedCallback GetArticleCallback() { 55 return article_callback_; 56 } 57 58 private: 59 void PostDistillerCallback(scoped_ptr<DistilledArticleProto> proto); 60 void RunDistillerCallbackInternal(scoped_ptr<DistilledArticleProto> proto); 61 62 bool execute_callback_; 63 GURL url_; 64 DistillationFinishedCallback article_callback_; 65 DistillationUpdateCallback page_callback_; 66 bool destruction_allowed_; 67 // Used to notify when distillation is complete. 68 base::Closure distillation_initiated_callback_; 69 }; 70 71 } // namespace test 72 } // namespace dom_distiller 73 74 #endif // COMPONENTS_DOM_DISTILLER_CORE_FAKE_DISTILLER_H_ 75