Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/macros.h" | 5 #include "base/macros.h" |
| 6 #include "base/strings/utf_string_conversions.h" | 6 #include "base/strings/utf_string_conversions.h" |
| 7 #include "base/values.h" | 7 #include "base/values.h" |
| 8 #include "build/build_config.h" | 8 #include "build/build_config.h" |
| 9 #include "content/browser/frame_host/navigation_entry_impl.h" | 9 #include "content/browser/frame_host/navigation_entry_impl.h" |
| 10 #include "content/browser/renderer_host/render_widget_host_impl.h" | 10 #include "content/browser/renderer_host/render_widget_host_impl.h" |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 101 shell_(shell), | 101 shell_(shell), |
| 102 url_(url), | 102 url_(url), |
| 103 done_(false) { | 103 done_(false) { |
| 104 } | 104 } |
| 105 | 105 |
| 106 // WebContentsObserver: | 106 // WebContentsObserver: |
| 107 void NavigationEntryCommitted( | 107 void NavigationEntryCommitted( |
| 108 const LoadCommittedDetails& load_details) override { | 108 const LoadCommittedDetails& load_details) override { |
| 109 if (!done_) { | 109 if (!done_) { |
| 110 done_ = true; | 110 done_ = true; |
| 111 shell_->LoadURL(url_); | |
| 112 | |
| 113 // There should be a pending entry. | |
| 114 CHECK(shell_->web_contents()->GetController().GetPendingEntry()); | |
| 115 | |
| 116 // Now that there is a pending entry, stop the load. | |
| 111 shell_->Stop(); | 117 shell_->Stop(); |
| 112 shell_->LoadURL(url_); | |
| 113 } | 118 } |
| 114 } | 119 } |
| 115 | 120 |
| 116 Shell* shell_; | 121 Shell* shell_; |
| 117 GURL url_; | 122 GURL url_; |
| 118 bool done_; | 123 bool done_; |
| 119 }; | 124 }; |
| 120 | 125 |
| 121 class RenderViewSizeDelegate : public WebContentsDelegate { | 126 class RenderViewSizeDelegate : public WebContentsDelegate { |
| 122 public: | 127 public: |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 182 int loadingStateChangedCount() const { return loadingStateChangedCount_; } | 187 int loadingStateChangedCount() const { return loadingStateChangedCount_; } |
| 183 int loadingStateToDifferentDocumentCount() const { | 188 int loadingStateToDifferentDocumentCount() const { |
| 184 return loadingStateToDifferentDocumentCount_; | 189 return loadingStateToDifferentDocumentCount_; |
| 185 } | 190 } |
| 186 | 191 |
| 187 private: | 192 private: |
| 188 int loadingStateChangedCount_; | 193 int loadingStateChangedCount_; |
| 189 int loadingStateToDifferentDocumentCount_; | 194 int loadingStateToDifferentDocumentCount_; |
| 190 }; | 195 }; |
| 191 | 196 |
| 192 // See: http://crbug.com/298193 | |
| 193 #if defined(OS_WIN) || defined(OS_LINUX) | |
| 194 #define MAYBE_DidStopLoadingDetails DISABLED_DidStopLoadingDetails | |
| 195 #else | |
| 196 #define MAYBE_DidStopLoadingDetails DidStopLoadingDetails | |
| 197 #endif | |
| 198 | |
| 199 // Test that DidStopLoading includes the correct URL in the details. | 197 // Test that DidStopLoading includes the correct URL in the details. |
| 200 IN_PROC_BROWSER_TEST_F(WebContentsImplBrowserTest, | 198 IN_PROC_BROWSER_TEST_F(WebContentsImplBrowserTest, DidStopLoadingDetails) { |
|
clamy
2016/01/25 14:01:18
It appears that the patch fixed the flakyness on t
| |
| 201 MAYBE_DidStopLoadingDetails) { | |
| 202 ASSERT_TRUE(embedded_test_server()->Start()); | 199 ASSERT_TRUE(embedded_test_server()->Start()); |
| 203 | 200 |
| 204 LoadStopNotificationObserver load_observer( | 201 LoadStopNotificationObserver load_observer( |
| 205 &shell()->web_contents()->GetController()); | 202 &shell()->web_contents()->GetController()); |
| 206 NavigateToURL(shell(), embedded_test_server()->GetURL("/title1.html")); | 203 NavigateToURL(shell(), embedded_test_server()->GetURL("/title1.html")); |
| 207 load_observer.Wait(); | 204 load_observer.Wait(); |
| 208 | 205 |
| 209 EXPECT_EQ("/title1.html", load_observer.url_.path()); | 206 EXPECT_EQ("/title1.html", load_observer.url_.path()); |
| 210 EXPECT_EQ(0, load_observer.session_index_); | 207 EXPECT_EQ(0, load_observer.session_index_); |
| 211 EXPECT_EQ(&shell()->web_contents()->GetController(), | 208 EXPECT_EQ(&shell()->web_contents()->GetController(), |
| 212 load_observer.controller_); | 209 load_observer.controller_); |
| 213 } | 210 } |
| 214 | 211 |
| 215 // See: http://crbug.com/298193 | |
| 216 #if defined(OS_WIN) || defined(OS_LINUX) | |
| 217 #define MAYBE_DidStopLoadingDetailsWithPending \ | |
| 218 DISABLED_DidStopLoadingDetailsWithPending | |
| 219 #else | |
| 220 #define MAYBE_DidStopLoadingDetailsWithPending DidStopLoadingDetailsWithPending | |
| 221 #endif | |
| 222 | |
| 223 // Test that DidStopLoading includes the correct URL in the details when a | 212 // Test that DidStopLoading includes the correct URL in the details when a |
| 224 // pending entry is present. | 213 // pending entry is present. |
| 225 IN_PROC_BROWSER_TEST_F(WebContentsImplBrowserTest, | 214 IN_PROC_BROWSER_TEST_F(WebContentsImplBrowserTest, |
| 226 MAYBE_DidStopLoadingDetailsWithPending) { | 215 DidStopLoadingDetailsWithPending) { |
|
clamy
2016/01/25 14:01:18
Same here, but I had to rewrite part of the test t
nasko
2016/01/26 01:34:27
Should there be a TODO to cover this case or do yo
clamy
2016/01/28 13:52:21
I added a TODO not to forget about it.
| |
| 227 ASSERT_TRUE(embedded_test_server()->Start()); | 216 ASSERT_TRUE(embedded_test_server()->Start()); |
| 228 GURL url("data:text/html,<div>test</div>"); | 217 GURL url1 = embedded_test_server()->GetURL("/title1.html"); |
| 218 GURL url2 = embedded_test_server()->GetURL("/title2.html"); | |
| 229 | 219 |
| 230 // Listen for the first load to stop. | 220 // Listen for the first load to stop. |
| 231 LoadStopNotificationObserver load_observer( | 221 LoadStopNotificationObserver load_observer( |
| 232 &shell()->web_contents()->GetController()); | 222 &shell()->web_contents()->GetController()); |
| 233 // Start a new pending navigation as soon as the first load commits. | 223 // Start a new pending navigation as soon as the first load commits. |
| 234 // We will hear a DidStopLoading from the first load as the new load | 224 // We will hear a DidStopLoading from the first load as the new load |
| 235 // is started. | 225 // is started. |
| 236 NavigateOnCommitObserver commit_observer( | 226 NavigateOnCommitObserver commit_observer( |
| 237 shell(), embedded_test_server()->GetURL("/title2.html")); | 227 shell(), url2); |
| 238 NavigateToURL(shell(), url); | 228 NavigateToURL(shell(), url1); |
| 239 load_observer.Wait(); | 229 load_observer.Wait(); |
| 240 | 230 |
| 241 EXPECT_EQ(url, load_observer.url_); | 231 EXPECT_EQ(url1, load_observer.url_); |
| 242 EXPECT_EQ(0, load_observer.session_index_); | 232 EXPECT_EQ(0, load_observer.session_index_); |
| 243 EXPECT_EQ(&shell()->web_contents()->GetController(), | 233 EXPECT_EQ(&shell()->web_contents()->GetController(), |
| 244 load_observer.controller_); | 234 load_observer.controller_); |
| 245 } | 235 } |
| 246 // Test that a renderer-initiated navigation to an invalid URL does not leave | 236 // Test that a renderer-initiated navigation to an invalid URL does not leave |
| 247 // around a pending entry that could be used in a URL spoof. We test this in | 237 // around a pending entry that could be used in a URL spoof. We test this in |
| 248 // a browser test because our unit test framework incorrectly calls | 238 // a browser test because our unit test framework incorrectly calls |
| 249 // DidStartProvisionalLoadForFrame for in-page navigations. | 239 // DidStartProvisionalLoadForFrame for in-page navigations. |
| 250 // See http://crbug.com/280512. | 240 // See http://crbug.com/280512. |
| 251 IN_PROC_BROWSER_TEST_F(WebContentsImplBrowserTest, | 241 IN_PROC_BROWSER_TEST_F(WebContentsImplBrowserTest, |
| (...skipping 560 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 812 Shell* new_shell = new_shell_observer.GetShell(); | 802 Shell* new_shell = new_shell_observer.GetShell(); |
| 813 WaitForLoadStop(new_shell->web_contents()); | 803 WaitForLoadStop(new_shell->web_contents()); |
| 814 | 804 |
| 815 EXPECT_EQ("foo", | 805 EXPECT_EQ("foo", |
| 816 static_cast<WebContentsImpl*>(new_shell->web_contents()) | 806 static_cast<WebContentsImpl*>(new_shell->web_contents()) |
| 817 ->GetFrameTree()->root()->frame_name()); | 807 ->GetFrameTree()->root()->frame_name()); |
| 818 } | 808 } |
| 819 } | 809 } |
| 820 | 810 |
| 821 } // namespace content | 811 } // namespace content |
| OLD | NEW |