OLD | NEW |
---|---|
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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/memory/ptr_util.h" | 5 #include "base/memory/ptr_util.h" |
6 #include "base/strings/string_number_conversions.h" | 6 #include "base/strings/string_number_conversions.h" |
7 #include "base/strings/sys_string_conversions.h" | 7 #include "base/strings/sys_string_conversions.h" |
8 #include "base/strings/utf_string_conversions.h" | 8 #include "base/strings/utf_string_conversions.h" |
9 #include "base/test/ios/wait_util.h" | 9 #include "base/test/ios/wait_util.h" |
10 #import "ios/web/navigation/navigation_item_impl.h" | 10 #import "ios/web/navigation/navigation_item_impl.h" |
(...skipping 321 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
332 navigation_manager()->GoForward(); | 332 navigation_manager()->GoForward(); |
333 }); | 333 }); |
334 ExecuteBlockAndWaitForLoad(state_operations_url(), ^{ | 334 ExecuteBlockAndWaitForLoad(state_operations_url(), ^{ |
335 navigation_manager()->GoBack(); | 335 navigation_manager()->GoBack(); |
336 }); | 336 }); |
337 ASSERT_TRUE(IsOnLoadTextVisible()); | 337 ASSERT_TRUE(IsOnLoadTextVisible()); |
338 base::test::ios::WaitUntilCondition(^bool { | 338 base::test::ios::WaitUntilCondition(^bool { |
339 return GetJavaScriptState() == new_state; | 339 return GetJavaScriptState() == new_state; |
340 }); | 340 }); |
341 } | 341 } |
342 | |
343 // Tests that calling window.history.pushState() creates a new NavigationItem | |
344 // and prunes trailing items. | |
345 TEST_F(HistoryStateOperationsTest, PushState) { | |
346 // Navigate to about:blank then navigate back to the test page. The created | |
347 // NavigationItem can be used later to verify that the state is replaced | |
348 // rather than pushed. | |
349 GURL about_blank("about:blank"); | |
350 LoadUrl(about_blank); | |
351 web::NavigationItem* about_blank_item = GetLastCommittedItem(); | |
352 ExecuteBlockAndWaitForLoad(state_operations_url(), ^{ | |
Eugene But (OOO till 7-30)
2017/01/24 19:26:37
Not related to this CL, but ExecuteBlockAndWaitFor
| |
353 navigation_manager()->GoBack(); | |
354 }); | |
355 ASSERT_EQ(state_operations_url(), GetLastCommittedItem()->GetURL()); | |
356 web::NavigationItem* non_pushed_item = GetLastCommittedItem(); | |
357 // Set up the state parameters and tap the replace state button. | |
358 std::string empty_state; | |
359 std::string empty_title; | |
360 GURL new_url = state_operations_url().Resolve("path"); | |
361 SetStateParams(empty_state, empty_title, new_url); | |
362 ASSERT_TRUE(web::test::TapWebViewElementWithId(web_state(), kPushStateId)); | |
363 // Verify that the url with the path is pushed. | |
364 base::test::ios::WaitUntilCondition(^bool { | |
365 return GetLastCommittedItem()->GetURL() == new_url; | |
366 }); | |
367 // Verify that a new NavigationItem was created and that the forward item was | |
368 // pruned. | |
369 EXPECT_EQ(GetIndexOfNavigationItem(non_pushed_item) + 1, | |
370 GetIndexOfNavigationItem(GetLastCommittedItem())); | |
371 EXPECT_EQ(NSNotFound, GetIndexOfNavigationItem(about_blank_item)); | |
372 } | |
OLD | NEW |