1// Copyright (c) 2012 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#include "chrome/browser/printing/print_preview_test.h" 6 7#include "chrome/browser/ui/browser.h" 8#include "chrome/browser/ui/browser_iterator.h" 9#include "chrome/browser/ui/tabs/tab_strip_model.h" 10#include "chrome/test/base/test_browser_window.h" 11#include "components/web_modal/web_contents_modal_dialog_host.h" 12#include "content/public/browser/plugin_service.h" 13#include "content/public/browser/web_contents.h" 14 15using web_modal::WebContentsModalDialogHost; 16using web_modal::ModalDialogHostObserver; 17 18namespace { 19 20// Use a custom test browser window to provide a parent view to the print 21// preview dialog. 22class PrintPreviewTestBrowserWindow 23 : public TestBrowserWindow, 24 public WebContentsModalDialogHost { 25 public: 26 PrintPreviewTestBrowserWindow() {} 27 28 // BrowserWindow overrides 29 virtual WebContentsModalDialogHost* GetWebContentsModalDialogHost() OVERRIDE { 30 return this; 31 } 32 33 // WebContentsModalDialogHost overrides 34 35 // The web contents modal dialog must be parented to *something*; use the 36 // WebContents window since there is no true browser window for unit tests. 37 virtual gfx::NativeView GetHostView() const OVERRIDE { 38 return FindBrowser()->tab_strip_model()->GetActiveWebContents()-> 39 GetNativeView(); 40 } 41 42 virtual gfx::Point GetDialogPosition(const gfx::Size& size) OVERRIDE { 43 return gfx::Point(); 44 } 45 46 virtual gfx::Size GetMaximumDialogSize() OVERRIDE { 47 return gfx::Size(); 48 } 49 50 virtual void AddObserver( 51 ModalDialogHostObserver* observer) OVERRIDE {} 52 virtual void RemoveObserver( 53 ModalDialogHostObserver* observer) OVERRIDE {} 54 55 private: 56 Browser* FindBrowser() const { 57 for (chrome::BrowserIterator it; !it.done(); it.Next()) { 58 Browser* browser = *it; 59 if (browser->window() == this) 60 return browser; 61 } 62 NOTREACHED(); 63 return NULL; 64 } 65 66 DISALLOW_COPY_AND_ASSIGN(PrintPreviewTestBrowserWindow); 67}; 68} // namespace 69 70PrintPreviewTest::PrintPreviewTest() {} 71PrintPreviewTest::~PrintPreviewTest() {} 72 73void PrintPreviewTest::SetUp() { 74 BrowserWithTestWindowTest::SetUp(); 75 76 // The PluginService will be destroyed at the end of the test (due to the 77 // ShadowingAtExitManager in our base class). 78 content::PluginService::GetInstance()->Init(); 79 content::PluginService::GetInstance()->DisablePluginsDiscoveryForTesting(); 80} 81 82BrowserWindow* PrintPreviewTest::CreateBrowserWindow() { 83 return new PrintPreviewTestBrowserWindow; 84} 85