15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/test/base/test_browser_window.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/browser_list.h"
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/browser_list_observer.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/rect.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using content::NativeWebKeyboardEvent;
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TestBrowserWindow::TestBrowserWindow() {}
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TestBrowserWindow::~TestBrowserWindow() {}
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool TestBrowserWindow::IsActive() const {
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return false;
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool TestBrowserWindow::IsAlwaysOnTop() const {
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return false;
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)gfx::NativeWindow TestBrowserWindow::GetNativeWindow() {
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return NULL;
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)BrowserWindowTesting* TestBrowserWindow::GetBrowserWindowTesting() {
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return NULL;
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)StatusBubble* TestBrowserWindow::GetStatusBubble() {
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return NULL;
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)gfx::Rect TestBrowserWindow::GetRestoredBounds() const {
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return gfx::Rect();
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
41b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)ui::WindowShowState TestBrowserWindow::GetRestoredState() const {
42b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)  return ui::SHOW_STATE_DEFAULT;
43b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)}
44b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)gfx::Rect TestBrowserWindow::GetBounds() const {
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return gfx::Rect();
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool TestBrowserWindow::IsMaximized() const {
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return false;
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool TestBrowserWindow::IsMinimized() const {
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return false;
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool TestBrowserWindow::ShouldHideUIForFullscreen() const {
582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return false;
592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool TestBrowserWindow::IsFullscreen() const {
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return false;
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN)
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool TestBrowserWindow::IsInMetroSnapMode() const {
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return false;
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool TestBrowserWindow::IsFullscreenBubbleVisible() const {
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return false;
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)LocationBar* TestBrowserWindow::GetLocationBar() const {
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return const_cast<TestLocationBar*>(&location_bar_);
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool TestBrowserWindow::PreHandleKeyboardEvent(
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const NativeWebKeyboardEvent& event,
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    bool* is_keyboard_shortcut) {
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return false;
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool TestBrowserWindow::IsBookmarkBarVisible() const {
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return false;
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool TestBrowserWindow::IsBookmarkBarAnimating() const {
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return false;
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool TestBrowserWindow::IsTabStripEditable() const {
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return false;
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool TestBrowserWindow::IsToolbarVisible() const {
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return false;
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)gfx::Rect TestBrowserWindow::GetRootWindowResizerRect() const {
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return gfx::Rect();
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool TestBrowserWindow::IsDownloadShelfVisible() const {
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return false;
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)DownloadShelf* TestBrowserWindow::GetDownloadShelf() {
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return &download_shelf_;
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int TestBrowserWindow::GetExtraRenderViewHeight() const {
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return 0;
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_MACOSX)
1182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool TestBrowserWindow::IsFullscreenWithChrome() {
1192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return false;
1202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
1212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool TestBrowserWindow::IsFullscreenWithoutChrome() {
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return false;
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)WindowOpenDisposition TestBrowserWindow::GetDispositionForPopupBounds(
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const gfx::Rect& bounds) {
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return NEW_POPUP;
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)FindBar* TestBrowserWindow::CreateFindBar() {
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return NULL;
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)web_modal::WebContentsModalDialogHost*
137c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    TestBrowserWindow::GetWebContentsModalDialogHost() {
138c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  return NULL;
1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace chrome {
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace {
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Handles destroying a TestBrowserWindow when the Browser it is attached to is
1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// destroyed.
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class TestBrowserWindowOwner : public chrome::BrowserListObserver {
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  explicit TestBrowserWindowOwner(TestBrowserWindow* window) : window_(window) {
1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    BrowserList::AddObserver(this);
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~TestBrowserWindowOwner() {
1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    BrowserList::RemoveObserver(this);
1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Overridden from BrowserListObserver:
1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void OnBrowserRemoved(Browser* browser) OVERRIDE {
1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if (browser->window() == window_.get())
1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      delete this;
1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<TestBrowserWindow> window_;
1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(TestBrowserWindowOwner);
1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace
1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Browser* CreateBrowserWithTestWindowForParams(Browser::CreateParams* params) {
1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  TestBrowserWindow* window = new TestBrowserWindow;
1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  new TestBrowserWindowOwner(window);
1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  params->window = window;
1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return new Browser(*params);
1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace chrome
178