Index: chrome/browser/ui/views/html_dialog_view_browsertest.cc |
=================================================================== |
--- chrome/browser/ui/views/html_dialog_view_browsertest.cc (revision 133969) |
+++ chrome/browser/ui/views/html_dialog_view_browsertest.cc (working copy) |
@@ -1,208 +0,0 @@ |
-// 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 "base/bind.h" |
-#include "base/bind_helpers.h" |
-#include "base/file_path.h" |
-#include "base/memory/singleton.h" |
-#include "base/message_loop.h" |
-#include "base/utf_string_conversions.h" |
-#include "chrome/browser/ui/browser.h" |
-#include "chrome/browser/ui/views/html_dialog_view.h" |
-#include "chrome/browser/ui/webui/test_html_dialog_ui_delegate.h" |
-#include "chrome/common/url_constants.h" |
-#include "chrome/test/base/in_process_browser_test.h" |
-#include "chrome/test/base/ui_test_utils.h" |
-#include "content/public/browser/render_widget_host_view.h" |
-#include "content/public/browser/web_contents.h" |
-#include "content/public/browser/web_contents_view.h" |
-#include "testing/gmock/include/gmock/gmock.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
-#include "ui/views/widget/widget.h" |
- |
-using content::WebContents; |
-using testing::Eq; |
- |
-namespace { |
- |
-// Initial size of HTMLDialog for SizeWindow test case. |
-const int kInitialWidth = 40; |
-const int kInitialHeight = 40; |
- |
-class TestHtmlDialogView: public HtmlDialogView { |
- public: |
- TestHtmlDialogView(Profile* profile, |
- Browser* browser, |
- HtmlDialogUIDelegate* delegate) |
- : HtmlDialogView(profile, browser, delegate), |
- painted_(false), |
- should_quit_on_size_change_(false) { |
- delegate->GetDialogSize(&last_size_); |
- } |
- |
- bool painted() const { |
- return painted_; |
- } |
- |
- void set_should_quit_on_size_change(bool should_quit) { |
- should_quit_on_size_change_ = should_quit; |
- } |
- |
- private: |
- // TODO(xiyuan): Update this when WidgetDelegate has bounds change hook. |
- virtual void SaveWindowPlacement(const gfx::Rect& bounds, |
- ui::WindowShowState show_state) OVERRIDE { |
- if (should_quit_on_size_change_ && last_size_ != bounds.size()) { |
- // Schedule message loop quit because we could be called while |
- // the bounds change call is on the stack and not in the nested message |
- // loop. |
- MessageLoop::current()->PostTask(FROM_HERE, base::Bind( |
- &MessageLoop::Quit, base::Unretained(MessageLoop::current()))); |
- } |
- |
- last_size_ = bounds.size(); |
- } |
- |
- virtual void OnDialogClosed(const std::string& json_retval) OVERRIDE { |
- should_quit_on_size_change_ = false; // No quit when we are closing. |
- HtmlDialogView::OnDialogClosed(json_retval); |
- } |
- |
- virtual void OnTabMainFrameRender() OVERRIDE { |
- HtmlDialogView::OnTabMainFrameRender(); |
- painted_ = true; |
- MessageLoop::current()->Quit(); |
- } |
- |
- // Whether first rendered notification is received. |
- bool painted_; |
- |
- // Whether we should quit message loop when size change is detected. |
- bool should_quit_on_size_change_; |
- gfx::Size last_size_; |
- |
- DISALLOW_COPY_AND_ASSIGN(TestHtmlDialogView); |
-}; |
- |
-} // namespace |
- |
-class HtmlDialogBrowserTest : public InProcessBrowserTest { |
- public: |
- HtmlDialogBrowserTest() {} |
-}; |
- |
-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) |
-#define MAYBE_SizeWindow SizeWindow |
-#else |
-// http://code.google.com/p/chromium/issues/detail?id=52602 |
-// Windows has some issues resizing windows- an off by one problem, |
-// and a minimum size that seems too big. This file isn't included in |
-// Mac builds yet. On Chrome OS, this test doesn't apply since ChromeOS |
-// doesn't allow resizing of windows. |
-#define MAYBE_SizeWindow DISABLED_SizeWindow |
-#endif |
- |
-IN_PROC_BROWSER_TEST_F(HtmlDialogBrowserTest, MAYBE_SizeWindow) { |
- test::TestHtmlDialogUIDelegate* delegate = new test::TestHtmlDialogUIDelegate( |
- GURL(chrome::kChromeUIChromeURLsURL)); |
- delegate->set_size(kInitialWidth, kInitialHeight); |
- |
- TestHtmlDialogView* html_view = |
- new TestHtmlDialogView(browser()->profile(), browser(), delegate); |
- WebContents* web_contents = browser()->GetSelectedWebContents(); |
- ASSERT_TRUE(web_contents != NULL); |
- views::Widget::CreateWindowWithParent( |
- html_view, web_contents->GetView()->GetTopLevelNativeWindow()); |
- html_view->GetWidget()->Show(); |
- |
- // TestHtmlDialogView should quit current message loop on size change. |
- html_view->set_should_quit_on_size_change(true); |
- |
- gfx::Rect bounds = html_view->GetWidget()->GetClientAreaScreenBounds(); |
- |
- gfx::Rect set_bounds = bounds; |
- gfx::Rect actual_bounds, rwhv_bounds; |
- |
- // Bigger than the default in both dimensions. |
- set_bounds.set_width(400); |
- set_bounds.set_height(300); |
- |
- html_view->MoveContents(web_contents, set_bounds); |
- ui_test_utils::RunMessageLoop(); // TestHtmlDialogView will quit. |
- actual_bounds = html_view->GetWidget()->GetClientAreaScreenBounds(); |
- EXPECT_EQ(set_bounds, actual_bounds); |
- |
- rwhv_bounds = |
- html_view->web_contents()->GetRenderWidgetHostView()->GetViewBounds(); |
- EXPECT_LT(0, rwhv_bounds.width()); |
- EXPECT_LT(0, rwhv_bounds.height()); |
- EXPECT_GE(set_bounds.width(), rwhv_bounds.width()); |
- EXPECT_GE(set_bounds.height(), rwhv_bounds.height()); |
- |
- // Larger in one dimension and smaller in the other. |
- set_bounds.set_width(550); |
- set_bounds.set_height(250); |
- |
- html_view->MoveContents(web_contents, set_bounds); |
- ui_test_utils::RunMessageLoop(); // TestHtmlDialogView will quit. |
- actual_bounds = html_view->GetWidget()->GetClientAreaScreenBounds(); |
- EXPECT_EQ(set_bounds, actual_bounds); |
- |
- rwhv_bounds = |
- html_view->web_contents()->GetRenderWidgetHostView()->GetViewBounds(); |
- EXPECT_LT(0, rwhv_bounds.width()); |
- EXPECT_LT(0, rwhv_bounds.height()); |
- EXPECT_GE(set_bounds.width(), rwhv_bounds.width()); |
- EXPECT_GE(set_bounds.height(), rwhv_bounds.height()); |
- |
- // Get very small. |
- gfx::Size min_size = html_view->GetWidget()->GetMinimumSize(); |
- set_bounds.set_size(min_size); |
- |
- html_view->MoveContents(web_contents, set_bounds); |
- ui_test_utils::RunMessageLoop(); // TestHtmlDialogView will quit. |
- actual_bounds = html_view->GetWidget()->GetClientAreaScreenBounds(); |
- EXPECT_EQ(set_bounds, actual_bounds); |
- |
- rwhv_bounds = |
- html_view->web_contents()->GetRenderWidgetHostView()->GetViewBounds(); |
- EXPECT_LT(0, rwhv_bounds.width()); |
- EXPECT_LT(0, rwhv_bounds.height()); |
- EXPECT_GE(set_bounds.width(), rwhv_bounds.width()); |
- EXPECT_GE(set_bounds.height(), rwhv_bounds.height()); |
- |
- // Check to make sure we can't get to 0x0 |
- set_bounds.set_width(0); |
- set_bounds.set_height(0); |
- |
- html_view->MoveContents(web_contents, set_bounds); |
- ui_test_utils::RunMessageLoop(); // TestHtmlDialogView will quit. |
- actual_bounds = html_view->GetWidget()->GetClientAreaScreenBounds(); |
- EXPECT_LT(0, actual_bounds.width()); |
- EXPECT_LT(0, actual_bounds.height()); |
-} |
- |
-// This is timing out about 5~10% of runs. See crbug.com/86059. |
-IN_PROC_BROWSER_TEST_F(HtmlDialogBrowserTest, DISABLED_WebContentRendered) { |
- HtmlDialogUIDelegate* delegate = new test::TestHtmlDialogUIDelegate( |
- GURL(chrome::kChromeUIChromeURLsURL)); |
- |
- TestHtmlDialogView* html_view = |
- new TestHtmlDialogView(browser()->profile(), browser(), delegate); |
- WebContents* web_contents = browser()->GetSelectedWebContents(); |
- ASSERT_TRUE(web_contents != NULL); |
- views::Widget::CreateWindowWithParent( |
- html_view, web_contents->GetView()->GetTopLevelNativeWindow()); |
- EXPECT_TRUE(html_view->initialized_); |
- |
- html_view->InitDialog(); |
- html_view->GetWidget()->Show(); |
- |
- // TestHtmlDialogView::OnTabMainFrameRender() will Quit(). |
- MessageLoopForUI::current()->Run(); |
- |
- EXPECT_TRUE(html_view->painted()); |
- |
- html_view->GetWidget()->Close(); |
-} |