| Index: chrome/browser/ui/webui/print_preview/hidden_web_contents_unittest.cc
|
| diff --git a/chrome/browser/ui/webui/print_preview/hidden_web_contents_unittest.cc b/chrome/browser/ui/webui/print_preview/hidden_web_contents_unittest.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..9a53acf1d127359641b263d4bb57a5f94915c5c6
|
| --- /dev/null
|
| +++ b/chrome/browser/ui/webui/print_preview/hidden_web_contents_unittest.cc
|
| @@ -0,0 +1,170 @@
|
| +// Copyright (c) 2015 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include <string>
|
| +#include <vector>
|
| +
|
| +#include "chrome/browser/printing/print_preview_test.h"
|
| +#include "chrome/browser/ui/browser_commands.h"
|
| +#include "chrome/browser/ui/tabs/tab_strip_model.h"
|
| +#include "chrome/browser/ui/webui/print_preview/hidden_web_contents.h"
|
| +#include "chrome/test/base/browser_with_test_window_test.h"
|
| +
|
| +using content::WebContents;
|
| +
|
| +class TestingObserver : public HiddenWebContents::Observer {
|
| + public:
|
| + TestingObserver() :
|
| + failed_(false) {}
|
| + ~TestingObserver() override {}
|
| +
|
| + void OnFail(HiddenWebContents* contents) override {
|
| + failed_ = true;
|
| + }
|
| +
|
| + void OnFinishedLoad(HiddenWebContents* contents) override {
|
| + }
|
| +
|
| + bool failed() { return failed_; }
|
| +
|
| + void Reset() {
|
| + failed_ = false;
|
| + }
|
| +
|
| + private:
|
| + bool failed_;
|
| +};
|
| +
|
| +class HiddenWebContentsUnitTest : public PrintPreviewTest {
|
| + public:
|
| + HiddenWebContentsUnitTest();
|
| + ~HiddenWebContentsUnitTest() override;
|
| +
|
| + HiddenWebContents* CreateHiddenWebContentsForURL(GURL, TestingObserver&);
|
| +
|
| + protected:
|
| + void SetUp() override;
|
| + private:
|
| + DISALLOW_COPY_AND_ASSIGN(HiddenWebContentsUnitTest);
|
| +};
|
| +
|
| +HiddenWebContentsUnitTest::HiddenWebContentsUnitTest() {}
|
| +HiddenWebContentsUnitTest::~HiddenWebContentsUnitTest() {}
|
| +
|
| +HiddenWebContents* HiddenWebContentsUnitTest::CreateHiddenWebContentsForURL(
|
| + GURL url, TestingObserver& observer) {
|
| +
|
| + WebContents* initiator = browser()->tab_strip_model()->GetActiveWebContents();
|
| + Profile* profile =
|
| + Profile::FromBrowserContext(initiator->GetBrowserContext());
|
| +
|
| + HiddenWebContents* hidden_web_contents = new HiddenWebContents(profile, url);
|
| + hidden_web_contents->AddObserver(&observer);
|
| +
|
| + content::SessionStorageNamespace* session_storage_namespace =
|
| + initiator->GetController().GetDefaultSessionStorageNamespace();
|
| + hidden_web_contents->StartRendering(
|
| + gfx::Size(1, 1), session_storage_namespace);
|
| + return hidden_web_contents;
|
| +}
|
| +
|
| +void HiddenWebContentsUnitTest::SetUp() {
|
| + PrintPreviewTest::SetUp();
|
| +
|
| + chrome::NewTab(browser());
|
| +}
|
| +
|
| +TEST_F(HiddenWebContentsUnitTest, ValidURL) {
|
| + TestingObserver observer;
|
| + scoped_ptr<HiddenWebContents> hidden_web_contents(
|
| + CreateHiddenWebContentsForURL(GURL("http://google.com"), observer));
|
| + ASSERT_TRUE(observer.failed());
|
| +
|
| + hidden_web_contents->RemoveObserver(&observer);
|
| + observer.Reset();
|
| +
|
| + hidden_web_contents.reset(
|
| + CreateHiddenWebContentsForURL(
|
| + GURL("chrome-distiller://fake/url"), observer));
|
| + ASSERT_FALSE(observer.failed());
|
| + hidden_web_contents->RemoveObserver(&observer);
|
| +}
|
| +
|
| +static void DownloadCallback(bool should_continue) {
|
| + ASSERT_FALSE(should_continue);
|
| +}
|
| +
|
| +TEST_F(HiddenWebContentsUnitTest, ContentFailures) {
|
| + TestingObserver observer;
|
| + scoped_ptr<HiddenWebContents> hidden_web_contents(
|
| + CreateHiddenWebContentsForURL(
|
| + GURL("chrome-distiller://fake/url"), observer));
|
| +
|
| + content::OpenURLParams params(GURL(), content::Referrer(),
|
| + CURRENT_TAB, ui::PAGE_TRANSITION_AUTO_TOPLEVEL,
|
| + true /* is_renderer_initiated */);
|
| + WebContents* result_contents =
|
| + hidden_web_contents->web_contents()->GetDelegate()->OpenURLFromTab(
|
| + NULL, params);
|
| + ASSERT_TRUE(observer.failed());
|
| + ASSERT_EQ(NULL, result_contents);
|
| +
|
| + hidden_web_contents->RemoveObserver(&observer);
|
| + observer.Reset();
|
| + hidden_web_contents.reset(
|
| + CreateHiddenWebContentsForURL(
|
| + GURL("chrome-distiller://fake/url"), observer));
|
| +
|
| + hidden_web_contents->web_contents()->GetDelegate()->CloseContents(NULL);
|
| + ASSERT_TRUE(observer.failed());
|
| +
|
| + hidden_web_contents->RemoveObserver(&observer);
|
| + observer.Reset();
|
| + hidden_web_contents.reset(
|
| + CreateHiddenWebContentsForURL(
|
| + GURL("chrome-distiller://fake/url"), observer));
|
| +
|
| + hidden_web_contents->web_contents()->GetDelegate()->CanDownload(
|
| + NULL, GURL(), std::string(), base::Bind(&DownloadCallback));
|
| + ASSERT_TRUE(observer.failed());
|
| +
|
| + hidden_web_contents->RemoveObserver(&observer);
|
| + observer.Reset();
|
| + hidden_web_contents.reset(
|
| + CreateHiddenWebContentsForURL(
|
| + GURL("chrome-distiller://fake/url"), observer));
|
| +
|
| + bool result =
|
| + hidden_web_contents->web_contents()->
|
| + GetDelegate()->ShouldCreateWebContents(
|
| + NULL, 0, 0, WINDOW_CONTAINER_TYPE_NORMAL,
|
| + base::string16(), GURL(), std::string(), NULL);
|
| + ASSERT_TRUE(observer.failed());
|
| + ASSERT_FALSE(result);
|
| +
|
| + hidden_web_contents->RemoveObserver(&observer);
|
| + observer.Reset();
|
| + hidden_web_contents.reset(
|
| + CreateHiddenWebContentsForURL(
|
| + GURL("chrome-distiller://fake/url"), observer));
|
| +
|
| + result =
|
| + hidden_web_contents->web_contents()->GetDelegate()->ShouldSuppressDialogs(
|
| + NULL);
|
| + ASSERT_TRUE(observer.failed());
|
| + ASSERT_TRUE(result);
|
| +
|
| + hidden_web_contents->RemoveObserver(&observer);
|
| + observer.Reset();
|
| + hidden_web_contents.reset(
|
| + CreateHiddenWebContentsForURL(
|
| + GURL("chrome-distiller://fake/url"), observer));
|
| + ASSERT_FALSE(observer.failed());
|
| +
|
| + hidden_web_contents->web_contents()->GetDelegate()->RegisterProtocolHandler(
|
| + NULL, std::string(), GURL(), false);
|
| + ASSERT_TRUE(observer.failed());
|
| +
|
| + hidden_web_contents->RemoveObserver(&observer);
|
| +}
|
|
|