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 15class GURL; 16 17namespace dom_distiller { 18namespace test { 19 20class MockDistillerFactory : public DistillerFactory { 21 public: 22 MockDistillerFactory(); 23 virtual ~MockDistillerFactory(); 24 MOCK_METHOD0(CreateDistillerImpl, Distiller*()); 25 virtual scoped_ptr<Distiller> CreateDistiller() OVERRIDE { 26 return scoped_ptr<Distiller>(CreateDistillerImpl()); 27 } 28}; 29 30class 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 52 GURL GetUrl() { return url_; } 53 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