12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/printing/print_preview_test.h" 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 7a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)#include "chrome/browser/ui/browser.h" 8a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)#include "chrome/browser/ui/browser_iterator.h" 9a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)#include "chrome/browser/ui/tabs/tab_strip_model.h" 10a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)#include "chrome/test/base/test_browser_window.h" 1190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "components/web_modal/web_contents_modal_dialog_host.h" 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "content/public/browser/plugin_service.h" 13a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)#include "content/public/browser/web_contents.h" 14a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) 1590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)using web_modal::WebContentsModalDialogHost; 164e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)using web_modal::ModalDialogHostObserver; 1790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 18a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)namespace { 19a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) 20a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)// Use a custom test browser window to provide a parent view to the print 21a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)// preview dialog. 22a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)class PrintPreviewTestBrowserWindow 23a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) : public TestBrowserWindow, 24a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) public WebContentsModalDialogHost { 25a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) public: 26a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) PrintPreviewTestBrowserWindow() {} 27a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) 28a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) // BrowserWindow overrides 29a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) virtual WebContentsModalDialogHost* GetWebContentsModalDialogHost() OVERRIDE { 30a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) return this; 31a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) } 32a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) 33a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) // WebContentsModalDialogHost overrides 34a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) 35a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) // The web contents modal dialog must be parented to *something*; use the 36a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) // WebContents window since there is no true browser window for unit tests. 37a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) virtual gfx::NativeView GetHostView() const OVERRIDE { 38010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) return FindBrowser()->tab_strip_model()->GetActiveWebContents()-> 39a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) GetNativeView(); 40a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) } 41a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) 42a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) virtual gfx::Point GetDialogPosition(const gfx::Size& size) OVERRIDE { 43a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) return gfx::Point(); 44a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) } 45a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) 4658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) virtual gfx::Size GetMaximumDialogSize() OVERRIDE { 4758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) return gfx::Size(); 4858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) } 4958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 50a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) virtual void AddObserver( 514e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) ModalDialogHostObserver* observer) OVERRIDE {} 52a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) virtual void RemoveObserver( 534e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) ModalDialogHostObserver* observer) OVERRIDE {} 54a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) 55a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) private: 56a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) Browser* FindBrowser() const { 57a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) for (chrome::BrowserIterator it; !it.done(); it.Next()) { 58a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) Browser* browser = *it; 59a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) if (browser->window() == this) 60a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) return browser; 61a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) } 62a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) NOTREACHED(); 63a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) return NULL; 64a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) } 65a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) 66a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(PrintPreviewTestBrowserWindow); 67a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)}; 68a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)} // namespace 692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)PrintPreviewTest::PrintPreviewTest() {} 712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)PrintPreviewTest::~PrintPreviewTest() {} 722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void PrintPreviewTest::SetUp() { 742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) BrowserWithTestWindowTest::SetUp(); 752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // The PluginService will be destroyed at the end of the test (due to the 772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // ShadowingAtExitManager in our base class). 78ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch content::PluginService::GetInstance()->Init(); 79ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch content::PluginService::GetInstance()->DisablePluginsDiscoveryForTesting(); 802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 81a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) 82a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)BrowserWindow* PrintPreviewTest::CreateBrowserWindow() { 83a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) return new PrintPreviewTestBrowserWindow; 84a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)} 85