Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(76)

Side by Side Diff: components/dom_distiller/content/distiller_page_web_contents.h

Issue 266073003: Add support for distilling current WebContents (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef COMPONENTS_DOM_DISTILLER_CONTENT_DISTILLER_PAGE_WEB_CONTENTS_H_ 5 #ifndef COMPONENTS_DOM_DISTILLER_CONTENT_DISTILLER_PAGE_WEB_CONTENTS_H_
6 #define COMPONENTS_DOM_DISTILLER_CONTENT_DISTILLER_PAGE_WEB_CONTENTS_H_ 6 #define COMPONENTS_DOM_DISTILLER_CONTENT_DISTILLER_PAGE_WEB_CONTENTS_H_
7 7
8 #include <string> 8 #include <string>
9 9
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
11 #include "components/dom_distiller/core/distiller_page.h" 11 #include "components/dom_distiller/core/distiller_page.h"
12 #include "content/public/browser/web_contents.h" 12 #include "content/public/browser/web_contents.h"
13 #include "content/public/browser/web_contents_observer.h" 13 #include "content/public/browser/web_contents_observer.h"
14 #include "url/gurl.h" 14 #include "url/gurl.h"
15 15
16 namespace content { 16 namespace content {
17 class RenderViewHost; 17 class RenderViewHost;
18 } 18 }
19 19
20 using content::RenderViewHost; 20 using content::RenderViewHost;
21 21
22 namespace dom_distiller { 22 namespace dom_distiller {
23 23
24 class DistillerContext; 24 class SourcePageHandleWebContents : public SourcePageHandle {
25 public:
26 explicit SourcePageHandleWebContents(
27 scoped_ptr<content::WebContents> web_contents);
28 virtual ~SourcePageHandleWebContents();
29
30 scoped_ptr<content::WebContents> GetWebContents();
31
32 private:
33 // The WebContents this class owns.
34 scoped_ptr<content::WebContents> web_contents_;
35 };
25 36
26 class DistillerPageWebContentsFactory : public DistillerPageFactory { 37 class DistillerPageWebContentsFactory : public DistillerPageFactory {
27 public: 38 public:
28 explicit DistillerPageWebContentsFactory( 39 explicit DistillerPageWebContentsFactory(
29 content::BrowserContext* browser_context) 40 content::BrowserContext* browser_context)
30 : DistillerPageFactory(), browser_context_(browser_context) {} 41 : DistillerPageFactory(), browser_context_(browser_context) {}
31 virtual ~DistillerPageWebContentsFactory() {} 42 virtual ~DistillerPageWebContentsFactory() {}
32 43
33 virtual scoped_ptr<DistillerPage> CreateDistillerPage() const OVERRIDE; 44 virtual scoped_ptr<DistillerPage> CreateDistillerPage() const OVERRIDE;
45 virtual scoped_ptr<DistillerPage> CreateDistillerPageWithHandle(
46 scoped_ptr<SourcePageHandle> handle) const OVERRIDE;
34 47
35 private: 48 private:
36 content::BrowserContext* browser_context_; 49 content::BrowserContext* browser_context_;
37 }; 50 };
38 51
39 class DistillerPageWebContents : public DistillerPage, 52 class DistillerPageWebContents : public DistillerPage,
40 public content::WebContentsObserver { 53 public content::WebContentsObserver {
41 public: 54 public:
42 DistillerPageWebContents(content::BrowserContext* browser_context); 55 DistillerPageWebContents(
56 content::BrowserContext* browser_context,
57 scoped_ptr<SourcePageHandleWebContents> optional_web_contents_handle);
43 virtual ~DistillerPageWebContents(); 58 virtual ~DistillerPageWebContents();
44 59
45 // content::WebContentsObserver implementation. 60 // content::WebContentsObserver implementation.
46 virtual void DocumentLoadedInFrame(int64 frame_id, 61 virtual void DocumentLoadedInFrame(int64 frame_id,
47 RenderViewHost* render_view_host) OVERRIDE; 62 RenderViewHost* render_view_host) OVERRIDE;
48 63
49 virtual void DidFailLoad(int64 frame_id, 64 virtual void DidFailLoad(int64 frame_id,
50 const GURL& validated_url, 65 const GURL& validated_url,
51 bool is_main_frame, 66 bool is_main_frame,
52 int error_code, 67 int error_code,
53 const base::string16& error_description, 68 const base::string16& error_description,
54 RenderViewHost* render_view_host) OVERRIDE; 69 RenderViewHost* render_view_host) OVERRIDE;
55 70
56 protected: 71 protected:
57 virtual void DistillPageImpl(const GURL& url, 72 virtual void DistillPageImpl(const GURL& url,
58 const std::string& script) OVERRIDE; 73 const std::string& script) OVERRIDE;
59 74
60 private: 75 private:
76 friend class TestDistillerPageWebContents;
77
61 enum State { 78 enum State {
62 // The page distiller is idle. 79 // The page distiller is idle.
63 IDLE, 80 IDLE,
64 // A page is currently loading. 81 // A page is currently loading.
65 LOADING_PAGE, 82 LOADING_PAGE,
66 // There was an error processing the page. 83 // There was an error processing the page.
67 PAGELOAD_FAILED, 84 PAGELOAD_FAILED,
68 // JavaScript is executing within the context of the page. When the 85 // JavaScript is executing within the context of the page. When the
69 // JavaScript completes, the state will be returned to |IDLE|. 86 // JavaScript completes, the state will be returned to |IDLE|.
70 EXECUTING_JAVASCRIPT 87 EXECUTING_JAVASCRIPT
71 }; 88 };
72 89
90 // Creates a new WebContents, adds |this| as an observer, and loads the
91 // |url|.
92 virtual void CreateNewWebContents(const GURL& url);
93
73 // Injects and executes JavaScript in the context of a loaded page. This 94 // Injects and executes JavaScript in the context of a loaded page. This
74 // must only be called after the page has successfully loaded. 95 // must only be called after the page has successfully loaded.
75 void ExecuteJavaScript(); 96 void ExecuteJavaScript();
76 97
77 // Called when the distillation is done or if the page load failed. 98 // Called when the distillation is done or if the page load failed.
78 void OnWebContentsDistillationDone(const GURL& page_url, 99 void OnWebContentsDistillationDone(const GURL& page_url,
79 const base::Value* value); 100 const base::Value* value);
80 101
81 // The current state of the |DistillerPage|, initially |IDLE|. 102 // The current state of the |DistillerPage|, initially |IDLE|.
82 State state_; 103 State state_;
83 104
84 // The JavaScript to inject to extract content. 105 // The JavaScript to inject to extract content.
85 std::string script_; 106 std::string script_;
86 107
87 scoped_ptr<content::WebContents> web_contents_; 108 scoped_ptr<content::WebContents> web_contents_;
88 content::BrowserContext* browser_context_; 109 content::BrowserContext* browser_context_;
89 DISALLOW_COPY_AND_ASSIGN(DistillerPageWebContents); 110 DISALLOW_COPY_AND_ASSIGN(DistillerPageWebContents);
90 }; 111 };
91 112
92 } // namespace dom_distiller 113 } // namespace dom_distiller
93 114
94 #endif // COMPONENTS_DOM_DISTILLER_CONTENT_DISTILLER_PAGE_WEB_CONTENTS_H_ 115 #endif // COMPONENTS_DOM_DISTILLER_CONTENT_DISTILLER_PAGE_WEB_CONTENTS_H_
OLDNEW
« no previous file with comments | « components/dom_distiller.gypi ('k') | components/dom_distiller/content/distiller_page_web_contents.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698