Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(348)

Side by Side Diff: chrome/browser/debugger/devtools_manager_unittest.cc

Issue 50009: Allow different types of devtools client (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/debugger/devtools_manager.cc ('k') | chrome/browser/debugger/devtools_view.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/basictypes.h" 5 #include "base/basictypes.h"
6 #include "chrome/browser/debugger/devtools_client_host.h"
6 #include "chrome/browser/debugger/devtools_manager.h" 7 #include "chrome/browser/debugger/devtools_manager.h"
7 #include "chrome/browser/debugger/devtools_window.h" 8 #include "chrome/browser/debugger/devtools_window.h"
8 #include "chrome/browser/renderer_host/test_render_view_host.h" 9 #include "chrome/browser/renderer_host/test_render_view_host.h"
9 #include "testing/gtest/include/gtest/gtest.h" 10 #include "testing/gtest/include/gtest/gtest.h"
10 #include "chrome/common/render_messages.h" 11 #include "chrome/common/render_messages.h"
11 12
12 namespace { 13 namespace {
13 14
14 class TestDevToolsWindow : public DevToolsWindow { 15 class TestDevToolsClientHost : public DevToolsClientHost {
15 public: 16 public:
16 TestDevToolsWindow(DevToolsInstanceDescriptor* descriptor) 17 TestDevToolsClientHost()
17 : descriptor_(descriptor), 18 : last_sent_message(NULL),
18 shown_(false),
19 closed_(false) { 19 closed_(false) {
20 descriptor->SetDevToolsWindow(this);
21 } 20 }
22 21
23 virtual ~TestDevToolsWindow() { 22 virtual ~TestDevToolsClientHost() {
24 EXPECT_EQ(shown_, closed_); 23 EXPECT_TRUE(closed_);
25 }
26
27 virtual void Show() {
28 open_counter++;
29 shown_ = true;
30 } 24 }
31 25
32 virtual void Close() { 26 virtual void Close() {
33 EXPECT_TRUE(shown_); 27 EXPECT_FALSE(closed_);
34 close_counter++; 28 close_counter++;
35 descriptor_->Destroy(); 29 NotifyCloseListener();
36 closed_ = true; 30 closed_ = true;
37 } 31 }
32 virtual void InspectedTabClosing() {
33 Close();
34 }
35
36 virtual void SendMessageToClient(const IPC::Message& message) {
37 last_sent_message = &message;
38 }
38 39
39 static void ResetCounters() { 40 static void ResetCounters() {
40 open_counter = 0;
41 close_counter = 0; 41 close_counter = 0;
42 } 42 }
43 43
44 static int open_counter;
45 static int close_counter; 44 static int close_counter;
46 45
46 const IPC::Message* last_sent_message;
47
47 private: 48 private:
48 DevToolsInstanceDescriptor* descriptor_;
49 bool shown_;
50 bool closed_; 49 bool closed_;
51 50
52 DISALLOW_COPY_AND_ASSIGN(TestDevToolsWindow); 51 DISALLOW_COPY_AND_ASSIGN(TestDevToolsClientHost);
53 }; 52 };
54 53
55 int TestDevToolsWindow::open_counter = 0; 54 int TestDevToolsClientHost::close_counter = 0;
56 int TestDevToolsWindow::close_counter = 0;
57
58
59 class TestDevToolsWindowFactory : public DevToolsWindowFactory {
60 public:
61 TestDevToolsWindowFactory() : DevToolsWindowFactory(),
62 last_created_window(NULL) {}
63 virtual ~TestDevToolsWindowFactory() {}
64
65 virtual DevToolsWindow* CreateDevToolsWindow(
66 DevToolsInstanceDescriptor* descriptor) {
67 last_created_window = new TestDevToolsWindow(descriptor);
68 return last_created_window;
69 }
70
71 DevToolsWindow* last_created_window;
72
73 private:
74 DISALLOW_COPY_AND_ASSIGN(TestDevToolsWindowFactory);
75 };
76 55
77 } // namespace 56 } // namespace
78 57
79 class DevToolsManagerTest : public RenderViewHostTestHarness { 58 class DevToolsManagerTest : public RenderViewHostTestHarness {
80 public: 59 public:
81 DevToolsManagerTest() : RenderViewHostTestHarness() { 60 DevToolsManagerTest() : RenderViewHostTestHarness() {
82 } 61 }
83 62
84 protected: 63 protected:
85 virtual void SetUp() { 64 virtual void SetUp() {
86 RenderViewHostTestHarness::SetUp(); 65 RenderViewHostTestHarness::SetUp();
87 TestDevToolsWindow::ResetCounters(); 66 TestDevToolsClientHost::ResetCounters();
88 } 67 }
89 }; 68 };
90 69
91 TEST_F(DevToolsManagerTest, OpenAndManuallyCloseDevToolsWindow) { 70 TEST_F(DevToolsManagerTest, OpenAndManuallyCloseDevToolsClientHost) {
92 TestDevToolsWindowFactory window_factory; 71 DevToolsManager manager;
93 DevToolsManager manager(&window_factory);
94 72
95 manager.ShowDevToolsForWebContents(contents()); 73 DevToolsClientHost* host = manager.GetDevToolsClientHostFor(*contents());
96 EXPECT_EQ(TestDevToolsWindow::open_counter, 1); 74 EXPECT_TRUE(NULL == host);
97 EXPECT_EQ(TestDevToolsWindow::close_counter, 0);
98 75
99 DevToolsWindow* window = window_factory.last_created_window; 76 TestDevToolsClientHost client_host;
100 // Test that same devtools window is used. 77 manager.RegisterDevToolsClientHostFor(*contents(), &client_host);
101 manager.ShowDevToolsForWebContents(contents()); 78 // Test that just registered devtools host is returned.
102 // Check that no new windows were created. 79 host = manager.GetDevToolsClientHostFor(*contents());
103 EXPECT_TRUE(window == window_factory.last_created_window); 80 EXPECT_TRUE(&client_host == host);
104 EXPECT_EQ(TestDevToolsWindow::open_counter, 2); 81 EXPECT_EQ(0, TestDevToolsClientHost::close_counter);
105 EXPECT_EQ(TestDevToolsWindow::close_counter, 0);
106 82
107 window->Close(); 83 // Test that the same devtools host is returned.
108 EXPECT_EQ(TestDevToolsWindow::open_counter, 2); 84 host = manager.GetDevToolsClientHostFor(*contents());
109 EXPECT_EQ(TestDevToolsWindow::close_counter, 1); 85 EXPECT_TRUE(&client_host == host);
86 EXPECT_EQ(0, TestDevToolsClientHost::close_counter);
87
88 client_host.Close();
89 EXPECT_EQ(1, TestDevToolsClientHost::close_counter);
90 host = manager.GetDevToolsClientHostFor(*contents());
91 EXPECT_TRUE(NULL == host);
110 } 92 }
93
94 TEST_F(DevToolsManagerTest, ForwardMessageToClient) {
95 DevToolsManager manager;
96
97 TestDevToolsClientHost client_host;
98 manager.RegisterDevToolsClientHostFor(*contents(), &client_host);
99 EXPECT_EQ(0, TestDevToolsClientHost::close_counter);
100
101 IPC::Message m;
102 manager.ForwardToDevToolsClient(*contents()->render_view_host(), m);
103 EXPECT_TRUE(&m == client_host.last_sent_message);
104
105 client_host.Close();
106 EXPECT_EQ(1, TestDevToolsClientHost::close_counter);
107 }
OLDNEW
« no previous file with comments | « chrome/browser/debugger/devtools_manager.cc ('k') | chrome/browser/debugger/devtools_view.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698