Index: chrome/browser/debugger/devtools_manager_unittest.cc |
=================================================================== |
--- chrome/browser/debugger/devtools_manager_unittest.cc (revision 0) |
+++ chrome/browser/debugger/devtools_manager_unittest.cc (revision 0) |
@@ -0,0 +1,110 @@ |
+// Copyright (c) 2009 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/basictypes.h" |
+#include "chrome/browser/debugger/devtools_manager.h" |
+#include "chrome/browser/debugger/devtools_window.h" |
+#include "chrome/browser/renderer_host/test_render_view_host.h" |
+#include "testing/gtest/include/gtest/gtest.h" |
+#include "chrome/common/render_messages.h" |
+ |
+namespace { |
+ |
+class TestDevToolsWindow : public DevToolsWindow { |
+ public: |
+ TestDevToolsWindow(DevToolsInstanceDescriptor* descriptor) |
+ : descriptor_(descriptor), |
+ shown_(false), |
+ closed_(false) { |
+ descriptor->SetDevToolsWindow(this); |
+ } |
+ |
+ virtual ~TestDevToolsWindow() { |
+ EXPECT_EQ(shown_, closed_); |
+ } |
+ |
+ virtual void Show() { |
+ open_counter++; |
+ shown_ = true; |
+ } |
+ |
+ virtual void Close() { |
+ EXPECT_TRUE(shown_); |
+ close_counter++; |
+ descriptor_->Destroy(); |
+ closed_ = true; |
+ } |
+ |
+ static void ResetCounters() { |
+ open_counter = 0; |
+ close_counter = 0; |
+ } |
+ |
+ static int open_counter; |
+ static int close_counter; |
+ |
+ private: |
+ DevToolsInstanceDescriptor* descriptor_; |
+ bool shown_; |
+ bool closed_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(TestDevToolsWindow); |
+}; |
+ |
+int TestDevToolsWindow::open_counter = 0; |
+int TestDevToolsWindow::close_counter = 0; |
+ |
+ |
+class TestDevToolsWindowFactory : public DevToolsWindowFactory { |
+ public: |
+ TestDevToolsWindowFactory() : DevToolsWindowFactory(), |
+ last_created_window(NULL) {} |
+ virtual ~TestDevToolsWindowFactory() {} |
+ |
+ virtual DevToolsWindow* CreateDevToolsWindow( |
+ DevToolsInstanceDescriptor* descriptor) { |
+ last_created_window = new TestDevToolsWindow(descriptor); |
+ return last_created_window; |
+ } |
+ |
+ DevToolsWindow* last_created_window; |
+ |
+ private: |
+ DISALLOW_COPY_AND_ASSIGN(TestDevToolsWindowFactory); |
+}; |
+ |
+} // namespace |
+ |
+class DevToolsManagerTest : public RenderViewHostTestHarness { |
+ public: |
+ DevToolsManagerTest() : RenderViewHostTestHarness() { |
+ } |
+ |
+ protected: |
+ virtual void SetUp() { |
+ RenderViewHostTestHarness::SetUp(); |
+ TestDevToolsWindow::ResetCounters(); |
+ } |
+}; |
+ |
+TEST_F(DevToolsManagerTest, OpenAndManuallyCloseDevToolsWindow) { |
+ TestDevToolsWindowFactory window_factory; |
+ DevToolsManager manager(&window_factory); |
+ |
+ manager.ShowDevToolsForWebContents(contents()); |
+ EXPECT_EQ(TestDevToolsWindow::open_counter, 1); |
+ EXPECT_EQ(TestDevToolsWindow::close_counter, 0); |
+ |
+ DevToolsWindow* window = window_factory.last_created_window; |
+ // Test that same devtools window is used. |
+ manager.ShowDevToolsForWebContents(contents()); |
+ // Check that no new windows were created. |
+ EXPECT_TRUE(window == window_factory.last_created_window); |
+ EXPECT_EQ(TestDevToolsWindow::open_counter, 2); |
+ EXPECT_EQ(TestDevToolsWindow::close_counter, 0); |
+ |
+ window->Close(); |
+ EXPECT_EQ(TestDevToolsWindow::open_counter, 2); |
+ EXPECT_EQ(TestDevToolsWindow::close_counter, 1); |
+} |