OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "content/browser/child_process_security_policy_impl.h" | 5 #include "content/browser/child_process_security_policy_impl.h" |
6 #include "content/browser/renderer_host/test_render_view_host.h" | 6 #include "content/browser/renderer_host/test_render_view_host.h" |
7 #include "content/browser/web_contents/navigation_controller_impl.h" | 7 #include "content/browser/web_contents/navigation_controller_impl.h" |
8 #include "content/browser/web_contents/test_web_contents.h" | 8 #include "content/browser/web_contents/test_web_contents.h" |
9 #include "content/common/view_messages.h" | 9 #include "content/common/view_messages.h" |
10 #include "content/public/browser/navigation_entry.h" | 10 #include "content/public/browser/navigation_entry.h" |
(...skipping 18 matching lines...) Expand all Loading... |
29 } | 29 } |
30 | 30 |
31 // Create a full screen popup RenderWidgetHost and View. | 31 // Create a full screen popup RenderWidgetHost and View. |
32 TEST_F(RenderViewHostTest, CreateFullscreenWidget) { | 32 TEST_F(RenderViewHostTest, CreateFullscreenWidget) { |
33 int routing_id = process()->GetNextRoutingID(); | 33 int routing_id = process()->GetNextRoutingID(); |
34 test_rvh()->CreateNewFullscreenWidget(routing_id); | 34 test_rvh()->CreateNewFullscreenWidget(routing_id); |
35 } | 35 } |
36 | 36 |
37 // Makes sure that RenderViewHost::is_waiting_for_unload_ack_ is false when | 37 // Makes sure that RenderViewHost::is_waiting_for_unload_ack_ is false when |
38 // reloading a page. If is_waiting_for_unload_ack_ is not false when reloading | 38 // reloading a page. If is_waiting_for_unload_ack_ is not false when reloading |
39 // the tab may get closed out even though the user pressed the reload button. | 39 // the contents may get closed out even though the user pressed the reload |
| 40 // button. |
40 TEST_F(RenderViewHostTest, ResetUnloadOnReload) { | 41 TEST_F(RenderViewHostTest, ResetUnloadOnReload) { |
41 const GURL url1("http://foo1"); | 42 const GURL url1("http://foo1"); |
42 const GURL url2("http://foo2"); | 43 const GURL url2("http://foo2"); |
43 | 44 |
44 // This test is for a subtle timing bug. Here's the sequence that triggered | 45 // This test is for a subtle timing bug. Here's the sequence that triggered |
45 // the bug: | 46 // the bug: |
46 // . go to a page. | 47 // . go to a page. |
47 // . go to a new page, preferably one that takes a while to resolve, such | 48 // . go to a new page, preferably one that takes a while to resolve, such |
48 // as one on a site that doesn't exist. | 49 // as one on a site that doesn't exist. |
49 // . After this step is_waiting_for_unload_ack_ has been set to true on | 50 // . After this step is_waiting_for_unload_ack_ has been set to true on |
50 // the first RVH. | 51 // the first RVH. |
51 // . click stop before the page has been commited. | 52 // . click stop before the page has been commited. |
52 // . click reload. | 53 // . click reload. |
53 // . is_waiting_for_unload_ack_ is still true, and the if the hang monitor | 54 // . is_waiting_for_unload_ack_ is still true, and the if the hang monitor |
54 // fires the tab gets closed. | 55 // fires the contents gets closed. |
55 | 56 |
56 NavigateAndCommit(url1); | 57 NavigateAndCommit(url1); |
57 controller().LoadURL( | 58 controller().LoadURL( |
58 url2, content::Referrer(), content::PAGE_TRANSITION_LINK, std::string()); | 59 url2, content::Referrer(), content::PAGE_TRANSITION_LINK, std::string()); |
59 // Simulate the ClosePage call which is normally sent by the net::URLRequest. | 60 // Simulate the ClosePage call which is normally sent by the net::URLRequest. |
60 rvh()->ClosePage(); | 61 rvh()->ClosePage(); |
61 // Needed so that navigations are not suspended on the RVH. | 62 // Needed so that navigations are not suspended on the RVH. |
62 test_rvh()->SendShouldCloseACK(true); | 63 test_rvh()->SendShouldCloseACK(true); |
63 contents()->Stop(); | 64 contents()->Stop(); |
64 controller().Reload(false); | 65 controller().Reload(false); |
65 EXPECT_FALSE(test_rvh()->is_waiting_for_unload_ack_for_testing()); | 66 EXPECT_FALSE(test_rvh()->is_waiting_for_unload_ack_for_testing()); |
66 } | 67 } |
67 | 68 |
68 // Ensure we do not grant bindings to a process shared with unprivileged views. | 69 // Ensure we do not grant bindings to a process shared with unprivileged views. |
69 TEST_F(RenderViewHostTest, DontGrantBindingsToSharedProcess) { | 70 TEST_F(RenderViewHostTest, DontGrantBindingsToSharedProcess) { |
70 // Create another view in the same process. | 71 // Create another view in the same process. |
71 scoped_ptr<TestWebContents> new_tab( | 72 scoped_ptr<TestWebContents> new_web_contents( |
72 new TestWebContents(browser_context(), rvh()->GetSiteInstance())); | 73 new TestWebContents(browser_context(), rvh()->GetSiteInstance())); |
73 | 74 |
74 rvh()->AllowBindings(content::BINDINGS_POLICY_WEB_UI); | 75 rvh()->AllowBindings(content::BINDINGS_POLICY_WEB_UI); |
75 EXPECT_FALSE(rvh()->GetEnabledBindings() & content::BINDINGS_POLICY_WEB_UI); | 76 EXPECT_FALSE(rvh()->GetEnabledBindings() & content::BINDINGS_POLICY_WEB_UI); |
76 } | 77 } |
77 | 78 |
78 class MockDraggingRenderViewHostDelegateView | 79 class MockDraggingRenderViewHostDelegateView |
79 : public content::RenderViewHostDelegate::View { | 80 : public content::RenderViewHostDelegate::View { |
80 public: | 81 public: |
81 virtual ~MockDraggingRenderViewHostDelegateView() {} | 82 virtual ~MockDraggingRenderViewHostDelegateView() {} |
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
205 // the code actually expects it to have at least one int para, this this | 206 // the code actually expects it to have at least one int para, this this |
206 // bogus message will not fail at de-serialization but should fail in | 207 // bogus message will not fail at de-serialization but should fail in |
207 // OnMsgInputEventAck() processing. | 208 // OnMsgInputEventAck() processing. |
208 IPC::Message message(0, ViewHostMsg_HandleInputEvent_ACK::ID, | 209 IPC::Message message(0, ViewHostMsg_HandleInputEvent_ACK::ID, |
209 IPC::Message::PRIORITY_NORMAL); | 210 IPC::Message::PRIORITY_NORMAL); |
210 test_rvh()->OnMessageReceived(message); | 211 test_rvh()->OnMessageReceived(message); |
211 EXPECT_EQ(1, process()->bad_msg_count()); | 212 EXPECT_EQ(1, process()->bad_msg_count()); |
212 } | 213 } |
213 | 214 |
214 #endif | 215 #endif |
OLD | NEW |