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