// Copyright (c) 2012 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 "chrome/browser/ui/constrained_window.h" #include "chrome/browser/ui/constrained_window_tab_helper.h" #include "chrome/browser/ui/tab_contents/tab_contents.h" #include "chrome/browser/ui/tab_contents/test_tab_contents.h" #include "content/public/test/test_browser_thread.h" #include "testing/gtest/include/gtest/gtest.h" using content::BrowserThread; class ConstrainedWindowTabHelperUnit : public TabContentsTestHarness { public: ConstrainedWindowTabHelperUnit() : TabContentsTestHarness(), ui_thread_(BrowserThread::UI, &message_loop_) { } private: content::TestBrowserThread ui_thread_; }; class ConstrainedWindowCloseTest : public ConstrainedWindow { public: explicit ConstrainedWindowCloseTest(TabContents* tab_contents) : tab_contents_(tab_contents) { } virtual void ShowConstrainedWindow() {} virtual void FocusConstrainedWindow() {} virtual ~ConstrainedWindowCloseTest() {} virtual void CloseConstrainedWindow() { tab_contents_->constrained_window_tab_helper()->WillClose(this); close_count++; } int close_count; TabContents* tab_contents_; }; TEST_F(ConstrainedWindowTabHelperUnit, ConstrainedWindows) { ConstrainedWindowCloseTest window(tab_contents()); window.close_count = 0; const int kWindowCount = 4; for (int i = 0; i < kWindowCount; i++) { tab_contents()->constrained_window_tab_helper()->AddConstrainedDialog( &window); } EXPECT_EQ(window.close_count, 0); tab_contents()->constrained_window_tab_helper()->CloseConstrainedWindows(); EXPECT_EQ(window.close_count, kWindowCount); }