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 "base/basictypes.h" | 5 #include "base/basictypes.h" |
6 #include "base/bind.h" | 6 #include "base/bind.h" |
7 #include "base/callback.h" | 7 #include "base/callback.h" |
8 #include "base/memory/shared_memory.h" | 8 #include "base/memory/shared_memory.h" |
9 #include "base/strings/string_util.h" | 9 #include "base/strings/string_util.h" |
10 #include "base/strings/utf_string_conversions.h" | 10 #include "base/strings/utf_string_conversions.h" |
(...skipping 484 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
495 // Ensure the RenderViewImpl sends an ACK to a SwapOut request, even if it is | 495 // Ensure the RenderViewImpl sends an ACK to a SwapOut request, even if it is |
496 // already swapped out. http://crbug.com/93427. | 496 // already swapped out. http://crbug.com/93427. |
497 TEST_F(RenderViewImplTest, SendSwapOutACK) { | 497 TEST_F(RenderViewImplTest, SendSwapOutACK) { |
498 LoadHTML("<div>Page A</div>"); | 498 LoadHTML("<div>Page A</div>"); |
499 int initial_page_id = view_page_id(); | 499 int initial_page_id = view_page_id(); |
500 | 500 |
501 // Increment the ref count so that we don't exit when swapping out. | 501 // Increment the ref count so that we don't exit when swapping out. |
502 RenderProcess::current()->AddRefProcess(); | 502 RenderProcess::current()->AddRefProcess(); |
503 | 503 |
504 // Respond to a swap out request. | 504 // Respond to a swap out request. |
505 view()->main_render_frame()->OnSwapOut(kProxyRoutingId); | 505 view()->GetMainRenderFrame()->OnSwapOut(kProxyRoutingId); |
506 | 506 |
507 // Ensure the swap out commits synchronously. | 507 // Ensure the swap out commits synchronously. |
508 EXPECT_NE(initial_page_id, view_page_id()); | 508 EXPECT_NE(initial_page_id, view_page_id()); |
509 | 509 |
510 // Check for a valid OnSwapOutACK. | 510 // Check for a valid OnSwapOutACK. |
511 const IPC::Message* msg = render_thread_->sink().GetUniqueMessageMatching( | 511 const IPC::Message* msg = render_thread_->sink().GetUniqueMessageMatching( |
512 FrameHostMsg_SwapOut_ACK::ID); | 512 FrameHostMsg_SwapOut_ACK::ID); |
513 ASSERT_TRUE(msg); | 513 ASSERT_TRUE(msg); |
514 | 514 |
515 // It is possible to get another swap out request. Ensure that we send | 515 // It is possible to get another swap out request. Ensure that we send |
516 // an ACK, even if we don't have to do anything else. | 516 // an ACK, even if we don't have to do anything else. |
517 render_thread_->sink().ClearMessages(); | 517 render_thread_->sink().ClearMessages(); |
518 view()->main_render_frame()->OnSwapOut(kProxyRoutingId); | 518 view()->GetMainRenderFrame()->OnSwapOut(kProxyRoutingId); |
519 const IPC::Message* msg2 = render_thread_->sink().GetUniqueMessageMatching( | 519 const IPC::Message* msg2 = render_thread_->sink().GetUniqueMessageMatching( |
520 FrameHostMsg_SwapOut_ACK::ID); | 520 FrameHostMsg_SwapOut_ACK::ID); |
521 ASSERT_TRUE(msg2); | 521 ASSERT_TRUE(msg2); |
522 | 522 |
523 // If we navigate back to this RenderView, ensure we don't send a state | 523 // If we navigate back to this RenderView, ensure we don't send a state |
524 // update for the swapped out URL. (http://crbug.com/72235) | 524 // update for the swapped out URL. (http://crbug.com/72235) |
525 FrameMsg_Navigate_Params nav_params; | 525 FrameMsg_Navigate_Params nav_params; |
526 nav_params.url = GURL("data:text/html,<div>Page B</div>"); | 526 nav_params.url = GURL("data:text/html,<div>Page B</div>"); |
527 nav_params.navigation_type = FrameMsg_Navigate_Type::NORMAL; | 527 nav_params.navigation_type = FrameMsg_Navigate_Type::NORMAL; |
528 nav_params.transition = PAGE_TRANSITION_TYPED; | 528 nav_params.transition = PAGE_TRANSITION_TYPED; |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
566 params_A.current_history_list_length = 2; | 566 params_A.current_history_list_length = 2; |
567 params_A.current_history_list_offset = 1; | 567 params_A.current_history_list_offset = 1; |
568 params_A.pending_history_list_offset = 0; | 568 params_A.pending_history_list_offset = 0; |
569 params_A.page_id = 1; | 569 params_A.page_id = 1; |
570 params_A.page_state = state_A; | 570 params_A.page_state = state_A; |
571 params_A.browser_navigation_start = base::TimeTicks::FromInternalValue(1); | 571 params_A.browser_navigation_start = base::TimeTicks::FromInternalValue(1); |
572 frame()->OnNavigate(params_A); | 572 frame()->OnNavigate(params_A); |
573 ProcessPendingMessages(); | 573 ProcessPendingMessages(); |
574 | 574 |
575 // Respond to a swap out request. | 575 // Respond to a swap out request. |
576 view()->main_render_frame()->OnSwapOut(kProxyRoutingId); | 576 view()->GetMainRenderFrame()->OnSwapOut(kProxyRoutingId); |
577 | 577 |
578 // Check for a OnSwapOutACK. | 578 // Check for a OnSwapOutACK. |
579 const IPC::Message* msg = render_thread_->sink().GetUniqueMessageMatching( | 579 const IPC::Message* msg = render_thread_->sink().GetUniqueMessageMatching( |
580 FrameHostMsg_SwapOut_ACK::ID); | 580 FrameHostMsg_SwapOut_ACK::ID); |
581 ASSERT_TRUE(msg); | 581 ASSERT_TRUE(msg); |
582 render_thread_->sink().ClearMessages(); | 582 render_thread_->sink().ClearMessages(); |
583 | 583 |
584 // It is possible to get a reload request at this point, containing the | 584 // It is possible to get a reload request at this point, containing the |
585 // params.page_state of the initial page (e.g., if the new page fails the | 585 // params.page_state of the initial page (e.g., if the new page fails the |
586 // provisional load in the renderer process, after we unload the old page). | 586 // provisional load in the renderer process, after we unload the old page). |
(...skipping 963 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1550 // Start a load that will reach provisional state synchronously, | 1550 // Start a load that will reach provisional state synchronously, |
1551 // but won't complete synchronously. | 1551 // but won't complete synchronously. |
1552 FrameMsg_Navigate_Params params; | 1552 FrameMsg_Navigate_Params params; |
1553 params.page_id = -1; | 1553 params.page_id = -1; |
1554 params.navigation_type = FrameMsg_Navigate_Type::NORMAL; | 1554 params.navigation_type = FrameMsg_Navigate_Type::NORMAL; |
1555 params.url = GURL("data:text/html,test data"); | 1555 params.url = GURL("data:text/html,test data"); |
1556 params.browser_navigation_start = base::TimeTicks::FromInternalValue(1); | 1556 params.browser_navigation_start = base::TimeTicks::FromInternalValue(1); |
1557 frame()->OnNavigate(params); | 1557 frame()->OnNavigate(params); |
1558 | 1558 |
1559 // An error occurred. | 1559 // An error occurred. |
1560 view()->main_render_frame()->didFailProvisionalLoad(web_frame, error); | 1560 view()->GetMainRenderFrame()->didFailProvisionalLoad(web_frame, error); |
1561 // Frame should exit view-source mode. | 1561 // Frame should exit view-source mode. |
1562 EXPECT_FALSE(web_frame->isViewSourceModeEnabled()); | 1562 EXPECT_FALSE(web_frame->isViewSourceModeEnabled()); |
1563 } | 1563 } |
1564 | 1564 |
1565 TEST_F(RenderViewImplTest, DidFailProvisionalLoadWithErrorForCancellation) { | 1565 TEST_F(RenderViewImplTest, DidFailProvisionalLoadWithErrorForCancellation) { |
1566 GetMainFrame()->enableViewSourceMode(true); | 1566 GetMainFrame()->enableViewSourceMode(true); |
1567 WebURLError error; | 1567 WebURLError error; |
1568 error.domain = WebString::fromUTF8(net::kErrorDomain); | 1568 error.domain = WebString::fromUTF8(net::kErrorDomain); |
1569 error.reason = net::ERR_ABORTED; | 1569 error.reason = net::ERR_ABORTED; |
1570 error.unreachableURL = GURL("http://foo"); | 1570 error.unreachableURL = GURL("http://foo"); |
1571 WebLocalFrame* web_frame = GetMainFrame(); | 1571 WebLocalFrame* web_frame = GetMainFrame(); |
1572 | 1572 |
1573 // Start a load that will reach provisional state synchronously, | 1573 // Start a load that will reach provisional state synchronously, |
1574 // but won't complete synchronously. | 1574 // but won't complete synchronously. |
1575 FrameMsg_Navigate_Params params; | 1575 FrameMsg_Navigate_Params params; |
1576 params.page_id = -1; | 1576 params.page_id = -1; |
1577 params.navigation_type = FrameMsg_Navigate_Type::NORMAL; | 1577 params.navigation_type = FrameMsg_Navigate_Type::NORMAL; |
1578 params.url = GURL("data:text/html,test data"); | 1578 params.url = GURL("data:text/html,test data"); |
1579 params.browser_navigation_start = base::TimeTicks::FromInternalValue(1); | 1579 params.browser_navigation_start = base::TimeTicks::FromInternalValue(1); |
1580 frame()->OnNavigate(params); | 1580 frame()->OnNavigate(params); |
1581 | 1581 |
1582 // A cancellation occurred. | 1582 // A cancellation occurred. |
1583 view()->main_render_frame()->didFailProvisionalLoad(web_frame, error); | 1583 view()->GetMainRenderFrame()->didFailProvisionalLoad(web_frame, error); |
1584 // Frame should stay in view-source mode. | 1584 // Frame should stay in view-source mode. |
1585 EXPECT_TRUE(web_frame->isViewSourceModeEnabled()); | 1585 EXPECT_TRUE(web_frame->isViewSourceModeEnabled()); |
1586 } | 1586 } |
1587 | 1587 |
1588 // Regression test for http://crbug.com/41562 | 1588 // Regression test for http://crbug.com/41562 |
1589 TEST_F(RenderViewImplTest, UpdateTargetURLWithInvalidURL) { | 1589 TEST_F(RenderViewImplTest, UpdateTargetURLWithInvalidURL) { |
1590 const GURL invalid_gurl("http://"); | 1590 const GURL invalid_gurl("http://"); |
1591 view()->setMouseOverURL(blink::WebURL(invalid_gurl)); | 1591 view()->setMouseOverURL(blink::WebURL(invalid_gurl)); |
1592 EXPECT_EQ(invalid_gurl, view()->target_url_); | 1592 EXPECT_EQ(invalid_gurl, view()->target_url_); |
1593 } | 1593 } |
(...skipping 565 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2159 // Start a load that will reach provisional state synchronously, | 2159 // Start a load that will reach provisional state synchronously, |
2160 // but won't complete synchronously. | 2160 // but won't complete synchronously. |
2161 FrameMsg_Navigate_Params params; | 2161 FrameMsg_Navigate_Params params; |
2162 params.page_id = -1; | 2162 params.page_id = -1; |
2163 params.navigation_type = FrameMsg_Navigate_Type::NORMAL; | 2163 params.navigation_type = FrameMsg_Navigate_Type::NORMAL; |
2164 params.url = GURL("data:text/html,test data"); | 2164 params.url = GURL("data:text/html,test data"); |
2165 params.browser_navigation_start = base::TimeTicks::FromInternalValue(1); | 2165 params.browser_navigation_start = base::TimeTicks::FromInternalValue(1); |
2166 frame()->OnNavigate(params); | 2166 frame()->OnNavigate(params); |
2167 | 2167 |
2168 // An error occurred. | 2168 // An error occurred. |
2169 view()->main_render_frame()->didFailProvisionalLoad(web_frame, error); | 2169 view()->GetMainRenderFrame()->didFailProvisionalLoad(web_frame, error); |
2170 const int kMaxOutputCharacters = 22; | 2170 const int kMaxOutputCharacters = 22; |
2171 EXPECT_EQ("", | 2171 EXPECT_EQ("", |
2172 base::UTF16ToASCII(web_frame->contentAsText(kMaxOutputCharacters))); | 2172 base::UTF16ToASCII(web_frame->contentAsText(kMaxOutputCharacters))); |
2173 } | 2173 } |
2174 | 2174 |
2175 #if defined(OS_ANDROID) | 2175 #if defined(OS_ANDROID) |
2176 // Crashing on Android: http://crbug.com/311341 | 2176 // Crashing on Android: http://crbug.com/311341 |
2177 #define MAYBE_DoesNotSuppress DISABLED_DoesNotSuppress | 2177 #define MAYBE_DoesNotSuppress DISABLED_DoesNotSuppress |
2178 #else | 2178 #else |
2179 #define MAYBE_DoesNotSuppress DoesNotSuppress | 2179 #define MAYBE_DoesNotSuppress DoesNotSuppress |
2180 #endif | 2180 #endif |
2181 | 2181 |
2182 TEST_F(SuppressErrorPageTest, MAYBE_DoesNotSuppress) { | 2182 TEST_F(SuppressErrorPageTest, MAYBE_DoesNotSuppress) { |
2183 WebURLError error; | 2183 WebURLError error; |
2184 error.domain = WebString::fromUTF8(net::kErrorDomain); | 2184 error.domain = WebString::fromUTF8(net::kErrorDomain); |
2185 error.reason = net::ERR_FILE_NOT_FOUND; | 2185 error.reason = net::ERR_FILE_NOT_FOUND; |
2186 error.unreachableURL = GURL("http://example.com/dont-suppress"); | 2186 error.unreachableURL = GURL("http://example.com/dont-suppress"); |
2187 WebLocalFrame* web_frame = GetMainFrame(); | 2187 WebLocalFrame* web_frame = GetMainFrame(); |
2188 | 2188 |
2189 // Start a load that will reach provisional state synchronously, | 2189 // Start a load that will reach provisional state synchronously, |
2190 // but won't complete synchronously. | 2190 // but won't complete synchronously. |
2191 FrameMsg_Navigate_Params params; | 2191 FrameMsg_Navigate_Params params; |
2192 params.page_id = -1; | 2192 params.page_id = -1; |
2193 params.navigation_type = FrameMsg_Navigate_Type::NORMAL; | 2193 params.navigation_type = FrameMsg_Navigate_Type::NORMAL; |
2194 params.url = GURL("data:text/html,test data"); | 2194 params.url = GURL("data:text/html,test data"); |
2195 params.browser_navigation_start = base::TimeTicks::FromInternalValue(1); | 2195 params.browser_navigation_start = base::TimeTicks::FromInternalValue(1); |
2196 frame()->OnNavigate(params); | 2196 frame()->OnNavigate(params); |
2197 | 2197 |
2198 // An error occurred. | 2198 // An error occurred. |
2199 view()->main_render_frame()->didFailProvisionalLoad(web_frame, error); | 2199 view()->GetMainRenderFrame()->didFailProvisionalLoad(web_frame, error); |
2200 // The error page itself is loaded asynchronously. | 2200 // The error page itself is loaded asynchronously. |
2201 FrameLoadWaiter(frame()).Wait(); | 2201 FrameLoadWaiter(frame()).Wait(); |
2202 const int kMaxOutputCharacters = 22; | 2202 const int kMaxOutputCharacters = 22; |
2203 EXPECT_EQ("A suffusion of yellow.", | 2203 EXPECT_EQ("A suffusion of yellow.", |
2204 base::UTF16ToASCII(web_frame->contentAsText(kMaxOutputCharacters))); | 2204 base::UTF16ToASCII(web_frame->contentAsText(kMaxOutputCharacters))); |
2205 } | 2205 } |
2206 | 2206 |
2207 // Tests if IME API's candidatewindow* events sent from browser are handled | 2207 // Tests if IME API's candidatewindow* events sent from browser are handled |
2208 // in renderer. | 2208 // in renderer. |
2209 TEST_F(RenderViewImplTest, SendCandidateWindowEvents) { | 2209 TEST_F(RenderViewImplTest, SendCandidateWindowEvents) { |
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2434 ProcessPendingMessages(); | 2434 ProcessPendingMessages(); |
2435 base::Time after_navigation = | 2435 base::Time after_navigation = |
2436 base::Time::Now() + base::TimeDelta::FromDays(1); | 2436 base::Time::Now() + base::TimeDelta::FromDays(1); |
2437 | 2437 |
2438 base::Time late_nav_reported_start = | 2438 base::Time late_nav_reported_start = |
2439 base::Time::FromDoubleT(GetMainFrame()->performance().navigationStart()); | 2439 base::Time::FromDoubleT(GetMainFrame()->performance().navigationStart()); |
2440 EXPECT_LE(late_nav_reported_start, after_navigation); | 2440 EXPECT_LE(late_nav_reported_start, after_navigation); |
2441 } | 2441 } |
2442 | 2442 |
2443 } // namespace content | 2443 } // namespace content |
OLD | NEW |