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/strings/utf_string_conversions.h" | 5 #include "base/strings/utf_string_conversions.h" |
6 #include "base/values.h" | 6 #include "base/values.h" |
7 #include "content/browser/frame_host/navigation_entry_impl.h" | 7 #include "content/browser/frame_host/navigation_entry_impl.h" |
8 #include "content/browser/renderer_host/render_widget_host_impl.h" | 8 #include "content/browser/renderer_host/render_widget_host_impl.h" |
9 #include "content/browser/web_contents/web_contents_impl.h" | 9 #include "content/browser/web_contents/web_contents_impl.h" |
10 #include "content/browser/web_contents/web_contents_view.h" | 10 #include "content/browser/web_contents/web_contents_view.h" |
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
189 // See: http://crbug.com/298193 | 189 // See: http://crbug.com/298193 |
190 #if defined(OS_WIN) || defined(OS_LINUX) | 190 #if defined(OS_WIN) || defined(OS_LINUX) |
191 #define MAYBE_DidStopLoadingDetails DISABLED_DidStopLoadingDetails | 191 #define MAYBE_DidStopLoadingDetails DISABLED_DidStopLoadingDetails |
192 #else | 192 #else |
193 #define MAYBE_DidStopLoadingDetails DidStopLoadingDetails | 193 #define MAYBE_DidStopLoadingDetails DidStopLoadingDetails |
194 #endif | 194 #endif |
195 | 195 |
196 // Test that DidStopLoading includes the correct URL in the details. | 196 // Test that DidStopLoading includes the correct URL in the details. |
197 IN_PROC_BROWSER_TEST_F(WebContentsImplBrowserTest, | 197 IN_PROC_BROWSER_TEST_F(WebContentsImplBrowserTest, |
198 MAYBE_DidStopLoadingDetails) { | 198 MAYBE_DidStopLoadingDetails) { |
199 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); | 199 ASSERT_TRUE(embedded_test_server()->Start()); |
200 | 200 |
201 LoadStopNotificationObserver load_observer( | 201 LoadStopNotificationObserver load_observer( |
202 &shell()->web_contents()->GetController()); | 202 &shell()->web_contents()->GetController()); |
203 NavigateToURL(shell(), embedded_test_server()->GetURL("/title1.html")); | 203 NavigateToURL(shell(), embedded_test_server()->GetURL("/title1.html")); |
204 load_observer.Wait(); | 204 load_observer.Wait(); |
205 | 205 |
206 EXPECT_EQ("/title1.html", load_observer.url_.path()); | 206 EXPECT_EQ("/title1.html", load_observer.url_.path()); |
207 EXPECT_EQ(0, load_observer.session_index_); | 207 EXPECT_EQ(0, load_observer.session_index_); |
208 EXPECT_EQ(&shell()->web_contents()->GetController(), | 208 EXPECT_EQ(&shell()->web_contents()->GetController(), |
209 load_observer.controller_); | 209 load_observer.controller_); |
210 } | 210 } |
211 | 211 |
212 // See: http://crbug.com/298193 | 212 // See: http://crbug.com/298193 |
213 #if defined(OS_WIN) || defined(OS_LINUX) | 213 #if defined(OS_WIN) || defined(OS_LINUX) |
214 #define MAYBE_DidStopLoadingDetailsWithPending \ | 214 #define MAYBE_DidStopLoadingDetailsWithPending \ |
215 DISABLED_DidStopLoadingDetailsWithPending | 215 DISABLED_DidStopLoadingDetailsWithPending |
216 #else | 216 #else |
217 #define MAYBE_DidStopLoadingDetailsWithPending DidStopLoadingDetailsWithPending | 217 #define MAYBE_DidStopLoadingDetailsWithPending DidStopLoadingDetailsWithPending |
218 #endif | 218 #endif |
219 | 219 |
220 // Test that DidStopLoading includes the correct URL in the details when a | 220 // Test that DidStopLoading includes the correct URL in the details when a |
221 // pending entry is present. | 221 // pending entry is present. |
222 IN_PROC_BROWSER_TEST_F(WebContentsImplBrowserTest, | 222 IN_PROC_BROWSER_TEST_F(WebContentsImplBrowserTest, |
223 MAYBE_DidStopLoadingDetailsWithPending) { | 223 MAYBE_DidStopLoadingDetailsWithPending) { |
224 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); | 224 ASSERT_TRUE(embedded_test_server()->Start()); |
225 GURL url("data:text/html,<div>test</div>"); | 225 GURL url("data:text/html,<div>test</div>"); |
226 | 226 |
227 // Listen for the first load to stop. | 227 // Listen for the first load to stop. |
228 LoadStopNotificationObserver load_observer( | 228 LoadStopNotificationObserver load_observer( |
229 &shell()->web_contents()->GetController()); | 229 &shell()->web_contents()->GetController()); |
230 // Start a new pending navigation as soon as the first load commits. | 230 // Start a new pending navigation as soon as the first load commits. |
231 // We will hear a DidStopLoading from the first load as the new load | 231 // We will hear a DidStopLoading from the first load as the new load |
232 // is started. | 232 // is started. |
233 NavigateOnCommitObserver commit_observer( | 233 NavigateOnCommitObserver commit_observer( |
234 shell(), embedded_test_server()->GetURL("/title2.html")); | 234 shell(), embedded_test_server()->GetURL("/title2.html")); |
235 NavigateToURL(shell(), url); | 235 NavigateToURL(shell(), url); |
236 load_observer.Wait(); | 236 load_observer.Wait(); |
237 | 237 |
238 EXPECT_EQ(url, load_observer.url_); | 238 EXPECT_EQ(url, load_observer.url_); |
239 EXPECT_EQ(0, load_observer.session_index_); | 239 EXPECT_EQ(0, load_observer.session_index_); |
240 EXPECT_EQ(&shell()->web_contents()->GetController(), | 240 EXPECT_EQ(&shell()->web_contents()->GetController(), |
241 load_observer.controller_); | 241 load_observer.controller_); |
242 } | 242 } |
243 // Test that a renderer-initiated navigation to an invalid URL does not leave | 243 // Test that a renderer-initiated navigation to an invalid URL does not leave |
244 // around a pending entry that could be used in a URL spoof. We test this in | 244 // around a pending entry that could be used in a URL spoof. We test this in |
245 // a browser test because our unit test framework incorrectly calls | 245 // a browser test because our unit test framework incorrectly calls |
246 // DidStartProvisionalLoadForFrame for in-page navigations. | 246 // DidStartProvisionalLoadForFrame for in-page navigations. |
247 // See http://crbug.com/280512. | 247 // See http://crbug.com/280512. |
248 IN_PROC_BROWSER_TEST_F(WebContentsImplBrowserTest, | 248 IN_PROC_BROWSER_TEST_F(WebContentsImplBrowserTest, |
249 ClearNonVisiblePendingOnFail) { | 249 ClearNonVisiblePendingOnFail) { |
250 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); | 250 ASSERT_TRUE(embedded_test_server()->Start()); |
251 | 251 |
252 NavigateToURL(shell(), embedded_test_server()->GetURL("/title1.html")); | 252 NavigateToURL(shell(), embedded_test_server()->GetURL("/title1.html")); |
253 | 253 |
254 // Navigate to an invalid URL and make sure it doesn't leave a pending entry. | 254 // Navigate to an invalid URL and make sure it doesn't leave a pending entry. |
255 LoadStopNotificationObserver load_observer1( | 255 LoadStopNotificationObserver load_observer1( |
256 &shell()->web_contents()->GetController()); | 256 &shell()->web_contents()->GetController()); |
257 ASSERT_TRUE(ExecuteScript(shell()->web_contents(), | 257 ASSERT_TRUE(ExecuteScript(shell()->web_contents(), |
258 "window.location.href=\"nonexistent:12121\";")); | 258 "window.location.href=\"nonexistent:12121\";")); |
259 load_observer1.Wait(); | 259 load_observer1.Wait(); |
260 EXPECT_FALSE(shell()->web_contents()->GetController().GetPendingEntry()); | 260 EXPECT_FALSE(shell()->web_contents()->GetController().GetPendingEntry()); |
(...skipping 11 matching lines...) Expand all Loading... |
272 #if defined(OS_WIN) || defined(OS_ANDROID) \ | 272 #if defined(OS_WIN) || defined(OS_ANDROID) \ |
273 || defined(THREAD_SANITIZER) | 273 || defined(THREAD_SANITIZER) |
274 #define MAYBE_GetSizeForNewRenderView DISABLED_GetSizeForNewRenderView | 274 #define MAYBE_GetSizeForNewRenderView DISABLED_GetSizeForNewRenderView |
275 #else | 275 #else |
276 #define MAYBE_GetSizeForNewRenderView GetSizeForNewRenderView | 276 #define MAYBE_GetSizeForNewRenderView GetSizeForNewRenderView |
277 #endif | 277 #endif |
278 // Test that RenderViewHost is created and updated at the size specified by | 278 // Test that RenderViewHost is created and updated at the size specified by |
279 // WebContentsDelegate::GetSizeForNewRenderView(). | 279 // WebContentsDelegate::GetSizeForNewRenderView(). |
280 IN_PROC_BROWSER_TEST_F(WebContentsImplBrowserTest, | 280 IN_PROC_BROWSER_TEST_F(WebContentsImplBrowserTest, |
281 MAYBE_GetSizeForNewRenderView) { | 281 MAYBE_GetSizeForNewRenderView) { |
282 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); | 282 ASSERT_TRUE(embedded_test_server()->Start()); |
283 // Create a new server with a different site. | 283 // Create a new server with a different site. |
284 net::SpawnedTestServer https_server( | 284 net::EmbeddedTestServer https_server(net::EmbeddedTestServer::TYPE_HTTPS); |
285 net::SpawnedTestServer::TYPE_HTTPS, | 285 https_server.ServeFilesFromSourceDirectory("content/test/data"); |
286 net::SpawnedTestServer::kLocalhost, | |
287 base::FilePath(FILE_PATH_LITERAL("content/test/data"))); | |
288 ASSERT_TRUE(https_server.Start()); | 286 ASSERT_TRUE(https_server.Start()); |
289 | 287 |
290 scoped_ptr<RenderViewSizeDelegate> delegate(new RenderViewSizeDelegate()); | 288 scoped_ptr<RenderViewSizeDelegate> delegate(new RenderViewSizeDelegate()); |
291 shell()->web_contents()->SetDelegate(delegate.get()); | 289 shell()->web_contents()->SetDelegate(delegate.get()); |
292 ASSERT_TRUE(shell()->web_contents()->GetDelegate() == delegate.get()); | 290 ASSERT_TRUE(shell()->web_contents()->GetDelegate() == delegate.get()); |
293 | 291 |
294 // When no size is set, RenderWidgetHostView adopts the size of | 292 // When no size is set, RenderWidgetHostView adopts the size of |
295 // WebContentsView. | 293 // WebContentsView. |
296 NavigateToURL(shell(), embedded_test_server()->GetURL("/title2.html")); | 294 NavigateToURL(shell(), embedded_test_server()->GetURL("/title2.html")); |
297 EXPECT_EQ(shell()->web_contents()->GetContainerBounds().size(), | 295 EXPECT_EQ(shell()->web_contents()->GetContainerBounds().size(), |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
367 shell()->web_contents()->GetController().GetLastCommittedEntry()); | 365 shell()->web_contents()->GetController().GetLastCommittedEntry()); |
368 SiteInstance* site_instance2 = entry2->site_instance(); | 366 SiteInstance* site_instance2 = entry2->site_instance(); |
369 EXPECT_NE(site_instance1, site_instance2); | 367 EXPECT_NE(site_instance1, site_instance2); |
370 | 368 |
371 EXPECT_EQ(2, shell()->web_contents()->GetController().GetEntryCount()); | 369 EXPECT_EQ(2, shell()->web_contents()->GetController().GetEntryCount()); |
372 EXPECT_EQ(base::ASCIIToUTF16("B"), entry1->GetTitle()); | 370 EXPECT_EQ(base::ASCIIToUTF16("B"), entry1->GetTitle()); |
373 } | 371 } |
374 | 372 |
375 IN_PROC_BROWSER_TEST_F(WebContentsImplBrowserTest, OpenURLSubframe) { | 373 IN_PROC_BROWSER_TEST_F(WebContentsImplBrowserTest, OpenURLSubframe) { |
376 // Navigate to a page with frames and grab a subframe's FrameTreeNode ID. | 374 // Navigate to a page with frames and grab a subframe's FrameTreeNode ID. |
377 ASSERT_TRUE(test_server()->Start()); | 375 ASSERT_TRUE(embedded_test_server()->Start()); |
378 NavigateToURL(shell(), | 376 NavigateToURL(shell(), |
379 test_server()->GetURL("files/frame_tree/top.html")); | 377 embedded_test_server()->GetURL("/frame_tree/top.html")); |
380 WebContentsImpl* wc = static_cast<WebContentsImpl*>(shell()->web_contents()); | 378 WebContentsImpl* wc = static_cast<WebContentsImpl*>(shell()->web_contents()); |
381 FrameTreeNode* root = wc->GetFrameTree()->root(); | 379 FrameTreeNode* root = wc->GetFrameTree()->root(); |
382 ASSERT_EQ(3UL, root->child_count()); | 380 ASSERT_EQ(3UL, root->child_count()); |
383 int frame_tree_node_id = root->child_at(0)->frame_tree_node_id(); | 381 int frame_tree_node_id = root->child_at(0)->frame_tree_node_id(); |
384 EXPECT_NE(-1, frame_tree_node_id); | 382 EXPECT_NE(-1, frame_tree_node_id); |
385 | 383 |
386 // Navigate with the subframe's FrameTreeNode ID. | 384 // Navigate with the subframe's FrameTreeNode ID. |
387 const GURL url(test_server()->GetURL("files/title1.html")); | 385 const GURL url(embedded_test_server()->GetURL("/title1.html")); |
388 OpenURLParams params(url, Referrer(), frame_tree_node_id, CURRENT_TAB, | 386 OpenURLParams params(url, Referrer(), frame_tree_node_id, CURRENT_TAB, |
389 ui::PAGE_TRANSITION_LINK, true); | 387 ui::PAGE_TRANSITION_LINK, true); |
390 shell()->web_contents()->OpenURL(params); | 388 shell()->web_contents()->OpenURL(params); |
391 | 389 |
392 // Make sure the NavigationEntry ends up with the FrameTreeNode ID. | 390 // Make sure the NavigationEntry ends up with the FrameTreeNode ID. |
393 NavigationController* controller = &shell()->web_contents()->GetController(); | 391 NavigationController* controller = &shell()->web_contents()->GetController(); |
394 EXPECT_TRUE(controller->GetPendingEntry()); | 392 EXPECT_TRUE(controller->GetPendingEntry()); |
395 EXPECT_EQ(frame_tree_node_id, | 393 EXPECT_EQ(frame_tree_node_id, |
396 NavigationEntryImpl::FromNavigationEntry( | 394 NavigationEntryImpl::FromNavigationEntry( |
397 controller->GetPendingEntry())->frame_tree_node_id()); | 395 controller->GetPendingEntry())->frame_tree_node_id()); |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
436 IN_PROC_BROWSER_TEST_F(WebContentsImplBrowserTest, | 434 IN_PROC_BROWSER_TEST_F(WebContentsImplBrowserTest, |
437 RenderFrameCreatedCorrectProcessForObservers) { | 435 RenderFrameCreatedCorrectProcessForObservers) { |
438 static const char kFooCom[] = "foo.com"; | 436 static const char kFooCom[] = "foo.com"; |
439 GURL::Replacements replace_host; | 437 GURL::Replacements replace_host; |
440 net::HostPortPair foo_host_port; | 438 net::HostPortPair foo_host_port; |
441 GURL cross_site_url; | 439 GURL cross_site_url; |
442 | 440 |
443 // Setup the server to allow serving separate sites, so we can perform | 441 // Setup the server to allow serving separate sites, so we can perform |
444 // cross-process navigation. | 442 // cross-process navigation. |
445 host_resolver()->AddRule("*", "127.0.0.1"); | 443 host_resolver()->AddRule("*", "127.0.0.1"); |
446 ASSERT_TRUE(test_server()->Start()); | 444 ASSERT_TRUE(embedded_test_server()->Start()); |
447 | 445 |
448 foo_host_port = test_server()->host_port_pair(); | 446 foo_host_port = embedded_test_server()->host_port_pair(); |
449 foo_host_port.set_host(kFooCom); | 447 foo_host_port.set_host(kFooCom); |
450 | 448 |
451 GURL initial_url(test_server()->GetURL("/title1.html")); | 449 GURL initial_url(embedded_test_server()->GetURL("/title1.html")); |
452 | 450 |
453 cross_site_url = test_server()->GetURL("/title2.html"); | 451 cross_site_url = embedded_test_server()->GetURL("/title2.html"); |
454 replace_host.SetHostStr(kFooCom); | 452 replace_host.SetHostStr(kFooCom); |
455 cross_site_url = cross_site_url.ReplaceComponents(replace_host); | 453 cross_site_url = cross_site_url.ReplaceComponents(replace_host); |
456 | 454 |
457 // Navigate to the initial URL and capture the RenderFrameHost for later | 455 // Navigate to the initial URL and capture the RenderFrameHost for later |
458 // comparison. | 456 // comparison. |
459 NavigateToURL(shell(), initial_url); | 457 NavigateToURL(shell(), initial_url); |
460 RenderFrameHost* orig_rfh = shell()->web_contents()->GetMainFrame(); | 458 RenderFrameHost* orig_rfh = shell()->web_contents()->GetMainFrame(); |
461 | 459 |
462 // Install the observer and navigate cross-site. | 460 // Install the observer and navigate cross-site. |
463 RenderFrameCreatedObserver observer(shell()); | 461 RenderFrameCreatedObserver observer(shell()); |
464 NavigateToURL(shell(), cross_site_url); | 462 NavigateToURL(shell(), cross_site_url); |
465 | 463 |
466 // The observer should've seen a RenderFrameCreated call for the new frame | 464 // The observer should've seen a RenderFrameCreated call for the new frame |
467 // and not the old one. | 465 // and not the old one. |
468 EXPECT_NE(observer.last_rfh(), orig_rfh); | 466 EXPECT_NE(observer.last_rfh(), orig_rfh); |
469 EXPECT_EQ(observer.last_rfh(), shell()->web_contents()->GetMainFrame()); | 467 EXPECT_EQ(observer.last_rfh(), shell()->web_contents()->GetMainFrame()); |
470 } | 468 } |
471 | 469 |
472 IN_PROC_BROWSER_TEST_F(WebContentsImplBrowserTest, | 470 IN_PROC_BROWSER_TEST_F(WebContentsImplBrowserTest, |
473 LoadingStateChangedForSameDocumentNavigation) { | 471 LoadingStateChangedForSameDocumentNavigation) { |
474 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); | 472 ASSERT_TRUE(embedded_test_server()->Start()); |
475 scoped_ptr<LoadingStateChangedDelegate> delegate( | 473 scoped_ptr<LoadingStateChangedDelegate> delegate( |
476 new LoadingStateChangedDelegate()); | 474 new LoadingStateChangedDelegate()); |
477 shell()->web_contents()->SetDelegate(delegate.get()); | 475 shell()->web_contents()->SetDelegate(delegate.get()); |
478 | 476 |
479 LoadStopNotificationObserver load_observer( | 477 LoadStopNotificationObserver load_observer( |
480 &shell()->web_contents()->GetController()); | 478 &shell()->web_contents()->GetController()); |
481 TitleWatcher title_watcher(shell()->web_contents(), | 479 TitleWatcher title_watcher(shell()->web_contents(), |
482 base::ASCIIToUTF16("pushState")); | 480 base::ASCIIToUTF16("pushState")); |
483 NavigateToURL(shell(), embedded_test_server()->GetURL("/push_state.html")); | 481 NavigateToURL(shell(), embedded_test_server()->GetURL("/push_state.html")); |
484 load_observer.Wait(); | 482 load_observer.Wait(); |
485 base::string16 title = title_watcher.WaitAndGetTitle(); | 483 base::string16 title = title_watcher.WaitAndGetTitle(); |
486 ASSERT_EQ(title, base::ASCIIToUTF16("pushState")); | 484 ASSERT_EQ(title, base::ASCIIToUTF16("pushState")); |
487 | 485 |
488 // LoadingStateChanged should be called 4 times: start and stop for the | 486 // LoadingStateChanged should be called 4 times: start and stop for the |
489 // initial load of push_state.html, and start and stop for the "navigation" | 487 // initial load of push_state.html, and start and stop for the "navigation" |
490 // triggered by history.pushState(). However, the start notification for the | 488 // triggered by history.pushState(). However, the start notification for the |
491 // history.pushState() navigation should set to_different_document to false. | 489 // history.pushState() navigation should set to_different_document to false. |
492 EXPECT_EQ("pushState", shell()->web_contents()->GetLastCommittedURL().ref()); | 490 EXPECT_EQ("pushState", shell()->web_contents()->GetLastCommittedURL().ref()); |
493 EXPECT_EQ(4, delegate->loadingStateChangedCount()); | 491 EXPECT_EQ(4, delegate->loadingStateChangedCount()); |
494 EXPECT_EQ(3, delegate->loadingStateToDifferentDocumentCount()); | 492 EXPECT_EQ(3, delegate->loadingStateToDifferentDocumentCount()); |
495 } | 493 } |
496 | 494 |
497 IN_PROC_BROWSER_TEST_F(WebContentsImplBrowserTest, | 495 IN_PROC_BROWSER_TEST_F(WebContentsImplBrowserTest, |
498 RenderViewCreatedForChildWindow) { | 496 RenderViewCreatedForChildWindow) { |
499 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); | 497 ASSERT_TRUE(embedded_test_server()->Start()); |
500 | 498 |
501 NavigateToURL(shell(), | 499 NavigateToURL(shell(), |
502 embedded_test_server()->GetURL("/title1.html")); | 500 embedded_test_server()->GetURL("/title1.html")); |
503 | 501 |
504 WebContentsAddedObserver new_web_contents_observer; | 502 WebContentsAddedObserver new_web_contents_observer; |
505 ASSERT_TRUE(ExecuteScript(shell()->web_contents(), | 503 ASSERT_TRUE(ExecuteScript(shell()->web_contents(), |
506 "var a = document.createElement('a');" | 504 "var a = document.createElement('a');" |
507 "a.href='./title2.html';" | 505 "a.href='./title2.html';" |
508 "a.target = '_blank';" | 506 "a.target = '_blank';" |
509 "document.body.appendChild(a);" | 507 "document.body.appendChild(a);" |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
543 EXPECT_FALSE(did_stop_loading); | 541 EXPECT_FALSE(did_stop_loading); |
544 did_stop_loading = true; | 542 did_stop_loading = true; |
545 } | 543 } |
546 | 544 |
547 bool did_start_loading; | 545 bool did_start_loading; |
548 std::vector<double> progresses; | 546 std::vector<double> progresses; |
549 bool did_stop_loading; | 547 bool did_stop_loading; |
550 }; | 548 }; |
551 | 549 |
552 IN_PROC_BROWSER_TEST_F(WebContentsImplBrowserTest, LoadProgress) { | 550 IN_PROC_BROWSER_TEST_F(WebContentsImplBrowserTest, LoadProgress) { |
553 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); | 551 ASSERT_TRUE(embedded_test_server()->Start()); |
554 scoped_ptr<LoadProgressDelegateAndObserver> delegate( | 552 scoped_ptr<LoadProgressDelegateAndObserver> delegate( |
555 new LoadProgressDelegateAndObserver(shell())); | 553 new LoadProgressDelegateAndObserver(shell())); |
556 | 554 |
557 NavigateToURL(shell(), embedded_test_server()->GetURL("/title1.html")); | 555 NavigateToURL(shell(), embedded_test_server()->GetURL("/title1.html")); |
558 | 556 |
559 const std::vector<double>& progresses = delegate->progresses; | 557 const std::vector<double>& progresses = delegate->progresses; |
560 // All updates should be in order ... | 558 // All updates should be in order ... |
561 if (std::adjacent_find(progresses.begin(), | 559 if (std::adjacent_find(progresses.begin(), |
562 progresses.end(), | 560 progresses.end(), |
563 std::greater<double>()) != progresses.end()) { | 561 std::greater<double>()) != progresses.end()) { |
564 ADD_FAILURE() << "Progress values should be in order: " | 562 ADD_FAILURE() << "Progress values should be in order: " |
565 << ::testing::PrintToString(progresses); | 563 << ::testing::PrintToString(progresses); |
566 } | 564 } |
567 | 565 |
568 // ... and the last one should be 1.0, meaning complete. | 566 // ... and the last one should be 1.0, meaning complete. |
569 ASSERT_GE(progresses.size(), 1U) | 567 ASSERT_GE(progresses.size(), 1U) |
570 << "There should be at least one progress update"; | 568 << "There should be at least one progress update"; |
571 EXPECT_EQ(1.0, *progresses.rbegin()); | 569 EXPECT_EQ(1.0, *progresses.rbegin()); |
572 } | 570 } |
573 | 571 |
574 IN_PROC_BROWSER_TEST_F(WebContentsImplBrowserTest, LoadProgressWithFrames) { | 572 IN_PROC_BROWSER_TEST_F(WebContentsImplBrowserTest, LoadProgressWithFrames) { |
575 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); | 573 ASSERT_TRUE(embedded_test_server()->Start()); |
576 scoped_ptr<LoadProgressDelegateAndObserver> delegate( | 574 scoped_ptr<LoadProgressDelegateAndObserver> delegate( |
577 new LoadProgressDelegateAndObserver(shell())); | 575 new LoadProgressDelegateAndObserver(shell())); |
578 | 576 |
579 NavigateToURL(shell(), | 577 NavigateToURL(shell(), |
580 embedded_test_server()->GetURL("/frame_tree/top.html")); | 578 embedded_test_server()->GetURL("/frame_tree/top.html")); |
581 | 579 |
582 const std::vector<double>& progresses = delegate->progresses; | 580 const std::vector<double>& progresses = delegate->progresses; |
583 // All updates should be in order ... | 581 // All updates should be in order ... |
584 if (std::adjacent_find(progresses.begin(), | 582 if (std::adjacent_find(progresses.begin(), |
585 progresses.end(), | 583 progresses.end(), |
586 std::greater<double>()) != progresses.end()) { | 584 std::greater<double>()) != progresses.end()) { |
587 ADD_FAILURE() << "Progress values should be in order: " | 585 ADD_FAILURE() << "Progress values should be in order: " |
588 << ::testing::PrintToString(progresses); | 586 << ::testing::PrintToString(progresses); |
589 } | 587 } |
590 | 588 |
591 // ... and the last one should be 1.0, meaning complete. | 589 // ... and the last one should be 1.0, meaning complete. |
592 ASSERT_GE(progresses.size(), 1U) | 590 ASSERT_GE(progresses.size(), 1U) |
593 << "There should be at least one progress update"; | 591 << "There should be at least one progress update"; |
594 EXPECT_EQ(1.0, *progresses.rbegin()); | 592 EXPECT_EQ(1.0, *progresses.rbegin()); |
595 } | 593 } |
596 | 594 |
597 // Ensure that a new navigation that interrupts a pending one will still fire | 595 // Ensure that a new navigation that interrupts a pending one will still fire |
598 // a DidStopLoading. See http://crbug.com/429399. | 596 // a DidStopLoading. See http://crbug.com/429399. |
599 IN_PROC_BROWSER_TEST_F(WebContentsImplBrowserTest, | 597 IN_PROC_BROWSER_TEST_F(WebContentsImplBrowserTest, |
600 LoadProgressAfterInterruptedNav) { | 598 LoadProgressAfterInterruptedNav) { |
601 host_resolver()->AddRule("*", "127.0.0.1"); | 599 host_resolver()->AddRule("*", "127.0.0.1"); |
602 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); | 600 ASSERT_TRUE(embedded_test_server()->Start()); |
603 | 601 |
604 // Start at a real page. | 602 // Start at a real page. |
605 NavigateToURL(shell(), embedded_test_server()->GetURL("/title1.html")); | 603 NavigateToURL(shell(), embedded_test_server()->GetURL("/title1.html")); |
606 | 604 |
607 // Simulate a navigation that has not completed. | 605 // Simulate a navigation that has not completed. |
608 scoped_ptr<LoadProgressDelegateAndObserver> delegate( | 606 scoped_ptr<LoadProgressDelegateAndObserver> delegate( |
609 new LoadProgressDelegateAndObserver(shell())); | 607 new LoadProgressDelegateAndObserver(shell())); |
610 RenderFrameHost* main_frame = shell()->web_contents()->GetMainFrame(); | 608 RenderFrameHost* main_frame = shell()->web_contents()->GetMainFrame(); |
611 FrameHostMsg_DidStartLoading start_msg(main_frame->GetRoutingID(), true); | 609 FrameHostMsg_DidStartLoading start_msg(main_frame->GetRoutingID(), true); |
612 static_cast<RenderFrameHostImpl*>(main_frame)->OnMessageReceived(start_msg); | 610 static_cast<RenderFrameHostImpl*>(main_frame)->OnMessageReceived(start_msg); |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
656 | 654 |
657 // See: http://crbug.com/395664 | 655 // See: http://crbug.com/395664 |
658 #if defined(OS_ANDROID) | 656 #if defined(OS_ANDROID) |
659 #define MAYBE_FirstVisuallyNonEmptyPaint DISABLED_FirstVisuallyNonEmptyPaint | 657 #define MAYBE_FirstVisuallyNonEmptyPaint DISABLED_FirstVisuallyNonEmptyPaint |
660 #else | 658 #else |
661 // http://crbug.com/398471 | 659 // http://crbug.com/398471 |
662 #define MAYBE_FirstVisuallyNonEmptyPaint DISABLED_FirstVisuallyNonEmptyPaint | 660 #define MAYBE_FirstVisuallyNonEmptyPaint DISABLED_FirstVisuallyNonEmptyPaint |
663 #endif | 661 #endif |
664 IN_PROC_BROWSER_TEST_F(WebContentsImplBrowserTest, | 662 IN_PROC_BROWSER_TEST_F(WebContentsImplBrowserTest, |
665 MAYBE_FirstVisuallyNonEmptyPaint) { | 663 MAYBE_FirstVisuallyNonEmptyPaint) { |
666 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); | 664 ASSERT_TRUE(embedded_test_server()->Start()); |
667 scoped_ptr<FirstVisuallyNonEmptyPaintObserver> observer( | 665 scoped_ptr<FirstVisuallyNonEmptyPaintObserver> observer( |
668 new FirstVisuallyNonEmptyPaintObserver(shell())); | 666 new FirstVisuallyNonEmptyPaintObserver(shell())); |
669 | 667 |
670 NavigateToURL(shell(), embedded_test_server()->GetURL("/title1.html")); | 668 NavigateToURL(shell(), embedded_test_server()->GetURL("/title1.html")); |
671 | 669 |
672 observer->WaitForDidFirstVisuallyNonEmptyPaint(); | 670 observer->WaitForDidFirstVisuallyNonEmptyPaint(); |
673 ASSERT_TRUE(observer->did_fist_visually_non_empty_paint_); | 671 ASSERT_TRUE(observer->did_fist_visually_non_empty_paint_); |
674 } | 672 } |
675 | 673 |
676 namespace { | 674 namespace { |
677 | 675 |
678 class WebDisplayModeDelegate : public WebContentsDelegate { | 676 class WebDisplayModeDelegate : public WebContentsDelegate { |
679 public: | 677 public: |
680 explicit WebDisplayModeDelegate(blink::WebDisplayMode mode) : mode_(mode) { } | 678 explicit WebDisplayModeDelegate(blink::WebDisplayMode mode) : mode_(mode) { } |
681 ~WebDisplayModeDelegate() override { } | 679 ~WebDisplayModeDelegate() override { } |
682 | 680 |
683 blink::WebDisplayMode GetDisplayMode( | 681 blink::WebDisplayMode GetDisplayMode( |
684 const WebContents* source) const override { return mode_; } | 682 const WebContents* source) const override { return mode_; } |
685 void set_mode(blink::WebDisplayMode mode) { mode_ = mode; } | 683 void set_mode(blink::WebDisplayMode mode) { mode_ = mode; } |
686 private: | 684 private: |
687 blink::WebDisplayMode mode_; | 685 blink::WebDisplayMode mode_; |
688 | 686 |
689 DISALLOW_COPY_AND_ASSIGN(WebDisplayModeDelegate); | 687 DISALLOW_COPY_AND_ASSIGN(WebDisplayModeDelegate); |
690 }; | 688 }; |
691 | 689 |
692 } | 690 } |
693 | 691 |
694 IN_PROC_BROWSER_TEST_F(WebContentsImplBrowserTest, ChangeDisplayMode) { | 692 IN_PROC_BROWSER_TEST_F(WebContentsImplBrowserTest, ChangeDisplayMode) { |
695 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); | 693 ASSERT_TRUE(embedded_test_server()->Start()); |
696 WebDisplayModeDelegate delegate(blink::WebDisplayModeMinimalUi); | 694 WebDisplayModeDelegate delegate(blink::WebDisplayModeMinimalUi); |
697 shell()->web_contents()->SetDelegate(&delegate); | 695 shell()->web_contents()->SetDelegate(&delegate); |
698 | 696 |
699 NavigateToURL(shell(), GURL("about://blank")); | 697 NavigateToURL(shell(), GURL("about://blank")); |
700 | 698 |
701 ASSERT_TRUE(ExecuteScript(shell()->web_contents(), | 699 ASSERT_TRUE(ExecuteScript(shell()->web_contents(), |
702 "document.title = " | 700 "document.title = " |
703 " window.matchMedia('(display-mode:" | 701 " window.matchMedia('(display-mode:" |
704 " minimal-ui)').matches")); | 702 " minimal-ui)').matches")); |
705 EXPECT_EQ(base::ASCIIToUTF16("true"), shell()->web_contents()->GetTitle()); | 703 EXPECT_EQ(base::ASCIIToUTF16("true"), shell()->web_contents()->GetTitle()); |
706 | 704 |
707 delegate.set_mode(blink::WebDisplayModeFullscreen); | 705 delegate.set_mode(blink::WebDisplayModeFullscreen); |
708 // Simulate widget is entering fullscreen (changing size is enough). | 706 // Simulate widget is entering fullscreen (changing size is enough). |
709 shell()->web_contents()->GetRenderViewHost()->GetWidget()->WasResized(); | 707 shell()->web_contents()->GetRenderViewHost()->GetWidget()->WasResized(); |
710 | 708 |
711 ASSERT_TRUE(ExecuteScript(shell()->web_contents(), | 709 ASSERT_TRUE(ExecuteScript(shell()->web_contents(), |
712 "document.title = " | 710 "document.title = " |
713 " window.matchMedia('(display-mode:" | 711 " window.matchMedia('(display-mode:" |
714 " fullscreen)').matches")); | 712 " fullscreen)').matches")); |
715 EXPECT_EQ(base::ASCIIToUTF16("true"), shell()->web_contents()->GetTitle()); | 713 EXPECT_EQ(base::ASCIIToUTF16("true"), shell()->web_contents()->GetTitle()); |
716 } | 714 } |
717 | 715 |
718 IN_PROC_BROWSER_TEST_F(WebContentsImplBrowserTest, NewNamedWindow) { | 716 IN_PROC_BROWSER_TEST_F(WebContentsImplBrowserTest, NewNamedWindow) { |
719 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); | 717 ASSERT_TRUE(embedded_test_server()->Start()); |
720 | 718 |
721 GURL url = embedded_test_server()->GetURL("/click-noreferrer-links.html"); | 719 GURL url = embedded_test_server()->GetURL("/click-noreferrer-links.html"); |
722 EXPECT_TRUE(NavigateToURL(shell(), url)); | 720 EXPECT_TRUE(NavigateToURL(shell(), url)); |
723 | 721 |
724 { | 722 { |
725 ShellAddedObserver new_shell_observer; | 723 ShellAddedObserver new_shell_observer; |
726 | 724 |
727 // Open a new, named window. | 725 // Open a new, named window. |
728 EXPECT_TRUE(ExecuteScript(shell()->web_contents(), | 726 EXPECT_TRUE(ExecuteScript(shell()->web_contents(), |
729 "window.open('about:blank','new_window');")); | 727 "window.open('about:blank','new_window');")); |
(...skipping 27 matching lines...) Expand all Loading... |
757 Shell* new_shell = new_shell_observer.GetShell(); | 755 Shell* new_shell = new_shell_observer.GetShell(); |
758 WaitForLoadStop(new_shell->web_contents()); | 756 WaitForLoadStop(new_shell->web_contents()); |
759 | 757 |
760 EXPECT_EQ("foo", | 758 EXPECT_EQ("foo", |
761 static_cast<WebContentsImpl*>(new_shell->web_contents()) | 759 static_cast<WebContentsImpl*>(new_shell->web_contents()) |
762 ->GetFrameTree()->root()->frame_name()); | 760 ->GetFrameTree()->root()->frame_name()); |
763 } | 761 } |
764 } | 762 } |
765 | 763 |
766 } // namespace content | 764 } // namespace content |
OLD | NEW |