| Index: trunk/src/components/dom_distiller/content/distiller_page_web_contents_browsertest.cc
|
| ===================================================================
|
| --- trunk/src/components/dom_distiller/content/distiller_page_web_contents_browsertest.cc (revision 272703)
|
| +++ trunk/src/components/dom_distiller/content/distiller_page_web_contents_browsertest.cc (working copy)
|
| @@ -7,12 +7,8 @@
|
| #include "base/run_loop.h"
|
| #include "base/values.h"
|
| #include "components/dom_distiller/content/distiller_page_web_contents.h"
|
| -#include "components/dom_distiller/content/web_contents_main_frame_observer.h"
|
| #include "components/dom_distiller/core/distiller_page.h"
|
| #include "content/public/browser/browser_context.h"
|
| -#include "content/public/browser/navigation_controller.h"
|
| -#include "content/public/browser/render_frame_host.h"
|
| -#include "content/public/browser/web_contents_observer.h"
|
| #include "content/public/test/content_browser_test.h"
|
| #include "content/shell/browser/shell.h"
|
| #include "grit/component_resources.h"
|
| @@ -27,8 +23,6 @@
|
|
|
| namespace dom_distiller {
|
|
|
| -const char* kSimpleArticlePath = "/simple_article.html";
|
| -
|
| class DistillerPageWebContentsTest : public ContentBrowserTest {
|
| public:
|
| // ContentBrowserTest:
|
| @@ -72,108 +66,18 @@
|
| }
|
|
|
| protected:
|
| - void RunUseCurrentWebContentsTest(const std::string& url,
|
| - bool expect_new_web_contents,
|
| - bool setup_main_frame_observer,
|
| - bool wait_for_document_loaded);
|
| -
|
| DistillerPageWebContents* distiller_page_;
|
| base::Closure quit_closure_;
|
| scoped_ptr<DistilledPageInfo> page_info_;
|
| };
|
|
|
| -// Use this class to be able to leak the WebContents, which is needed for when
|
| -// the current WebContents is used for distillation.
|
| -class TestDistillerPageWebContents : public DistillerPageWebContents {
|
| - public:
|
| - TestDistillerPageWebContents(
|
| - content::BrowserContext* browser_context,
|
| - scoped_ptr<SourcePageHandleWebContents> optional_web_contents_handle,
|
| - bool expect_new_web_contents)
|
| - : DistillerPageWebContents(browser_context,
|
| - optional_web_contents_handle.Pass()),
|
| - expect_new_web_contents_(expect_new_web_contents),
|
| - new_web_contents_created_(false) {}
|
| -
|
| - virtual void CreateNewWebContents(const GURL& url) OVERRIDE {
|
| - ASSERT_EQ(true, expect_new_web_contents_);
|
| - new_web_contents_created_ = true;
|
| - // DistillerPageWebContents::CreateNewWebContents resets the scoped_ptr to
|
| - // the WebContents, so intentionally leak WebContents here, since it is
|
| - // owned by the shell.
|
| - content::WebContents* web_contents = web_contents_.release();
|
| - web_contents->GetLastCommittedURL();
|
| - DistillerPageWebContents::CreateNewWebContents(url);
|
| - }
|
| -
|
| - virtual ~TestDistillerPageWebContents() {
|
| - if (!expect_new_web_contents_) {
|
| - // Intentionally leaking WebContents, since it is owned by the shell.
|
| - content::WebContents* web_contents = web_contents_.release();
|
| - web_contents->GetLastCommittedURL();
|
| - }
|
| - }
|
| -
|
| - bool new_web_contents_created() { return new_web_contents_created_; }
|
| -
|
| - private:
|
| - bool expect_new_web_contents_;
|
| - bool new_web_contents_created_;
|
| -};
|
| -
|
| -// Helper class to know how far in the loading process the current WebContents
|
| -// has come. It will call the callback either after
|
| -// DidCommitProvisionalLoadForFrame or DocumentLoadedInFrame is called for the
|
| -// main frame, based on the value of |wait_for_document_loaded|.
|
| -class WebContentsMainFrameHelper : public content::WebContentsObserver {
|
| - public:
|
| - WebContentsMainFrameHelper(content::WebContents* web_contents,
|
| - const base::Closure& callback,
|
| - bool wait_for_document_loaded)
|
| - : web_contents_(web_contents),
|
| - callback_(callback),
|
| - wait_for_document_loaded_(wait_for_document_loaded) {
|
| - content::WebContentsObserver::Observe(web_contents);
|
| - }
|
| -
|
| - virtual void DidCommitProvisionalLoadForFrame(
|
| - int64 frame_id,
|
| - const base::string16& frame_unique_name,
|
| - bool is_main_frame,
|
| - const GURL& url,
|
| - content::PageTransition transition_type,
|
| - content::RenderViewHost* render_view_host) OVERRIDE {
|
| - if (wait_for_document_loaded_)
|
| - return;
|
| - if (is_main_frame)
|
| - callback_.Run();
|
| - }
|
| -
|
| - virtual void DocumentLoadedInFrame(
|
| - int64 frame_id,
|
| - content::RenderViewHost* render_view_host) OVERRIDE {
|
| - if (wait_for_document_loaded_) {
|
| - if (web_contents_ &&
|
| - frame_id == web_contents_->GetMainFrame()->GetRoutingID()) {
|
| - callback_.Run();
|
| - }
|
| - }
|
| - }
|
| -
|
| - private:
|
| - content::WebContents* web_contents_;
|
| - base::Closure callback_;
|
| - bool wait_for_document_loaded_;
|
| -};
|
| -
|
| IN_PROC_BROWSER_TEST_F(DistillerPageWebContentsTest, BasicDistillationWorks) {
|
| DistillerPageWebContents distiller_page(
|
| - shell()->web_contents()->GetBrowserContext(),
|
| - scoped_ptr<SourcePageHandleWebContents>());
|
| + shell()->web_contents()->GetBrowserContext());
|
| distiller_page_ = &distiller_page;
|
|
|
| base::RunLoop run_loop;
|
| - DistillPage(run_loop.QuitClosure(), kSimpleArticlePath);
|
| + DistillPage(run_loop.QuitClosure(), "/simple_article.html");
|
| run_loop.Run();
|
|
|
| EXPECT_EQ("Test Page Title", page_info_.get()->title);
|
| @@ -185,12 +89,11 @@
|
|
|
| IN_PROC_BROWSER_TEST_F(DistillerPageWebContentsTest, HandlesRelativeLinks) {
|
| DistillerPageWebContents distiller_page(
|
| - shell()->web_contents()->GetBrowserContext(),
|
| - scoped_ptr<SourcePageHandleWebContents>());
|
| + shell()->web_contents()->GetBrowserContext());
|
| distiller_page_ = &distiller_page;
|
|
|
| base::RunLoop run_loop;
|
| - DistillPage(run_loop.QuitClosure(), kSimpleArticlePath);
|
| + DistillPage(run_loop.QuitClosure(), "/simple_article.html");
|
| run_loop.Run();
|
|
|
| // A relative link should've been updated.
|
| @@ -202,12 +105,11 @@
|
|
|
| IN_PROC_BROWSER_TEST_F(DistillerPageWebContentsTest, HandlesRelativeImages) {
|
| DistillerPageWebContents distiller_page(
|
| - shell()->web_contents()->GetBrowserContext(),
|
| - scoped_ptr<SourcePageHandleWebContents>());
|
| + shell()->web_contents()->GetBrowserContext());
|
| distiller_page_ = &distiller_page;
|
|
|
| base::RunLoop run_loop;
|
| - DistillPage(run_loop.QuitClosure(), kSimpleArticlePath);
|
| + DistillPage(run_loop.QuitClosure(), "/simple_article.html");
|
| run_loop.Run();
|
|
|
| // A relative link should've been updated.
|
| @@ -219,8 +121,7 @@
|
|
|
| IN_PROC_BROWSER_TEST_F(DistillerPageWebContentsTest, VisibilityDetection) {
|
| DistillerPageWebContents distiller_page(
|
| - shell()->web_contents()->GetBrowserContext(),
|
| - scoped_ptr<SourcePageHandleWebContents>());
|
| + shell()->web_contents()->GetBrowserContext());
|
| distiller_page_ = &distiller_page;
|
|
|
| // visble_style.html and invisible_style.html only differ by the visibility
|
| @@ -241,92 +142,4 @@
|
| }
|
| }
|
|
|
| -IN_PROC_BROWSER_TEST_F(DistillerPageWebContentsTest,
|
| - UsingCurrentWebContentsWrongUrl) {
|
| - std::string url("/bogus");
|
| - bool expect_new_web_contents = true;
|
| - bool setup_main_frame_observer = true;
|
| - bool wait_for_document_loaded = true;
|
| - RunUseCurrentWebContentsTest(url,
|
| - expect_new_web_contents,
|
| - setup_main_frame_observer,
|
| - wait_for_document_loaded);
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(DistillerPageWebContentsTest,
|
| - UsingCurrentWebContentsNoMainFrameObserver) {
|
| - std::string url(kSimpleArticlePath);
|
| - bool expect_new_web_contents = true;
|
| - bool setup_main_frame_observer = false;
|
| - bool wait_for_document_loaded = true;
|
| - RunUseCurrentWebContentsTest(url,
|
| - expect_new_web_contents,
|
| - setup_main_frame_observer,
|
| - wait_for_document_loaded);
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(DistillerPageWebContentsTest,
|
| - UsingCurrentWebContentsNotFinishedLoadingYet) {
|
| - std::string url(kSimpleArticlePath);
|
| - bool expect_new_web_contents = false;
|
| - bool setup_main_frame_observer = true;
|
| - bool wait_for_document_loaded = false;
|
| - RunUseCurrentWebContentsTest(url,
|
| - expect_new_web_contents,
|
| - setup_main_frame_observer,
|
| - wait_for_document_loaded);
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(DistillerPageWebContentsTest,
|
| - UsingCurrentWebContentsReadyForDistillation) {
|
| - std::string url(kSimpleArticlePath);
|
| - bool expect_new_web_contents = false;
|
| - bool setup_main_frame_observer = true;
|
| - bool wait_for_document_loaded = true;
|
| - RunUseCurrentWebContentsTest(url,
|
| - expect_new_web_contents,
|
| - setup_main_frame_observer,
|
| - wait_for_document_loaded);
|
| -}
|
| -
|
| -void DistillerPageWebContentsTest::RunUseCurrentWebContentsTest(
|
| - const std::string& url,
|
| - bool expect_new_web_contents,
|
| - bool setup_main_frame_observer,
|
| - bool wait_for_document_loaded) {
|
| - content::WebContents* current_web_contents = shell()->web_contents();
|
| - if (setup_main_frame_observer) {
|
| - dom_distiller::WebContentsMainFrameObserver::CreateForWebContents(
|
| - current_web_contents);
|
| - }
|
| - base::RunLoop url_loaded_runner;
|
| - WebContentsMainFrameHelper main_frame_loaded(current_web_contents,
|
| - url_loaded_runner.QuitClosure(),
|
| - wait_for_document_loaded);
|
| - current_web_contents->GetController().LoadURL(
|
| - embedded_test_server()->GetURL(url),
|
| - content::Referrer(),
|
| - content::PAGE_TRANSITION_TYPED,
|
| - std::string());
|
| - url_loaded_runner.Run();
|
| -
|
| - scoped_ptr<content::WebContents> old_web_contents_sptr(current_web_contents);
|
| - scoped_ptr<SourcePageHandleWebContents> source_page_handle(
|
| - new SourcePageHandleWebContents(old_web_contents_sptr.Pass()));
|
| -
|
| - TestDistillerPageWebContents distiller_page(
|
| - shell()->web_contents()->GetBrowserContext(),
|
| - source_page_handle.Pass(),
|
| - expect_new_web_contents);
|
| - distiller_page_ = &distiller_page;
|
| -
|
| - base::RunLoop run_loop;
|
| - DistillPage(run_loop.QuitClosure(), kSimpleArticlePath);
|
| - run_loop.Run();
|
| -
|
| - // Sanity check of distillation process.
|
| - EXPECT_EQ(expect_new_web_contents, distiller_page.new_web_contents_created());
|
| - EXPECT_EQ("Test Page Title", page_info_.get()->title);
|
| -}
|
| -
|
| } // namespace dom_distiller
|
|
|