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. 4 5 #ifndef COMPONENTS_DOM_DISTILLER_CONTENT_DOM_DISTILLER_VIEWER_SOURCE_H_ 6 #define COMPONENTS_DOM_DISTILLER_CONTENT_DOM_DISTILLER_VIEWER_SOURCE_H_ 7 8 #include <string> 9 10 #include "base/basictypes.h" 11 #include "base/compiler_specific.h" 12 #include "content/public/browser/url_data_source.h" 13 14 namespace dom_distiller { 15 16 class DomDistillerServiceInterface; 17 class DomDistillerViewerSourceTest; 18 class ViewerHandle; 19 class ViewRequestDelegate; 20 21 // Serves HTML and resources for viewing distilled articles. 22 class DomDistillerViewerSource : public content::URLDataSource { 23 public: 24 DomDistillerViewerSource(DomDistillerServiceInterface* dom_distiller_service, 25 const std::string& scheme); 26 virtual ~DomDistillerViewerSource(); 27 28 class RequestViewerHandle; 29 30 // Overridden from content::URLDataSource: 31 virtual std::string GetSource() const OVERRIDE; 32 virtual void StartDataRequest( 33 const std::string& path, 34 int render_process_id, 35 int render_frame_id, 36 const content::URLDataSource::GotDataCallback& callback) OVERRIDE; 37 virtual std::string GetMimeType(const std::string& path) const OVERRIDE; 38 virtual bool ShouldServiceRequest( 39 const net::URLRequest* request) const OVERRIDE; 40 virtual void WillServiceRequest(const net::URLRequest* request, 41 std::string* path) const OVERRIDE; 42 virtual std::string GetContentSecurityPolicyObjectSrc() const OVERRIDE; 43 44 private: 45 friend class DomDistillerViewerSourceTest; 46 47 // The scheme this URLDataSource is hosted under. 48 std::string scheme_; 49 50 // The service which contains all the functionality needed to interact with 51 // the list of articles. 52 DomDistillerServiceInterface* dom_distiller_service_; 53 54 DISALLOW_COPY_AND_ASSIGN(DomDistillerViewerSource); 55 }; 56 57 } // namespace dom_distiller 58 59 #endif // COMPONENTS_DOM_DISTILLER_CONTENT_DOM_DISTILLER_VIEWER_SOURCE_H_ 60