OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 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 #import <Foundation/Foundation.h> | 5 #import <Foundation/Foundation.h> |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #import "base/mac/scoped_nsobject.h" | 8 #import "base/mac/scoped_nsobject.h" |
9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
10 #include "base/strings/sys_string_conversions.h" | 10 #include "base/strings/sys_string_conversions.h" |
(...skipping 819 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
830 "http://www.secondpage.com", @"Third")); | 830 "http://www.secondpage.com", @"Third")); |
831 base::scoped_nsobject<CRWSessionController> controller( | 831 base::scoped_nsobject<CRWSessionController> controller( |
832 [[CRWSessionController alloc] initWithNavigationItems:items.Pass() | 832 [[CRWSessionController alloc] initWithNavigationItems:items.Pass() |
833 currentIndex:0 | 833 currentIndex:0 |
834 browserState:&browser_state_]); | 834 browserState:&browser_state_]); |
835 | 835 |
836 GURL pushPageGurl1("http://www.firstpage.com/#push1"); | 836 GURL pushPageGurl1("http://www.firstpage.com/#push1"); |
837 NSString* stateObject1 = @"{'foo': 1}"; | 837 NSString* stateObject1 = @"{'foo': 1}"; |
838 [controller pushNewEntryWithURL:pushPageGurl1 stateObject:stateObject1]; | 838 [controller pushNewEntryWithURL:pushPageGurl1 stateObject:stateObject1]; |
839 CRWSessionEntry* pushedEntry = [controller currentEntry]; | 839 CRWSessionEntry* pushedEntry = [controller currentEntry]; |
| 840 web::NavigationItemImpl* pushedItem = pushedEntry.navigationItemImpl; |
840 NSUInteger expectedCount = 2; | 841 NSUInteger expectedCount = 2; |
841 EXPECT_EQ(expectedCount, controller.get().entries.count); | 842 EXPECT_EQ(expectedCount, controller.get().entries.count); |
842 EXPECT_EQ(pushPageGurl1, pushedEntry.navigationItem->GetURL()); | 843 EXPECT_EQ(pushPageGurl1, pushedEntry.navigationItem->GetURL()); |
843 EXPECT_TRUE(pushedEntry.createdFromPushState); | 844 EXPECT_TRUE(pushedItem->IsCreatedFromPushState()); |
844 EXPECT_NSEQ(stateObject1, pushedEntry.serializedStateObject); | 845 EXPECT_NSEQ(stateObject1, pushedItem->GetSerializedStateObject()); |
845 EXPECT_EQ(GURL("http://www.firstpage.com/"), | 846 EXPECT_EQ(GURL("http://www.firstpage.com/"), |
846 pushedEntry.navigationItem->GetReferrer().url); | 847 pushedEntry.navigationItem->GetReferrer().url); |
847 | 848 |
848 // Add another new entry and check size and fields again. | 849 // Add another new entry and check size and fields again. |
849 GURL pushPageGurl2("http://www.firstpage.com/push2"); | 850 GURL pushPageGurl2("http://www.firstpage.com/push2"); |
850 [controller pushNewEntryWithURL:pushPageGurl2 stateObject:nil]; | 851 [controller pushNewEntryWithURL:pushPageGurl2 stateObject:nil]; |
851 pushedEntry = [controller currentEntry]; | 852 pushedEntry = [controller currentEntry]; |
| 853 pushedItem = pushedEntry.navigationItemImpl; |
852 expectedCount = 3; | 854 expectedCount = 3; |
853 EXPECT_EQ(expectedCount, controller.get().entries.count); | 855 EXPECT_EQ(expectedCount, controller.get().entries.count); |
854 EXPECT_EQ(pushPageGurl2, pushedEntry.navigationItem->GetURL()); | 856 EXPECT_EQ(pushPageGurl2, pushedEntry.navigationItem->GetURL()); |
855 EXPECT_TRUE(pushedEntry.createdFromPushState); | 857 EXPECT_TRUE(pushedItem->IsCreatedFromPushState()); |
856 EXPECT_EQ(nil, pushedEntry.serializedStateObject); | 858 EXPECT_EQ(nil, pushedItem->GetSerializedStateObject()); |
857 EXPECT_EQ(pushPageGurl1, pushedEntry.navigationItem->GetReferrer().url); | 859 EXPECT_EQ(pushPageGurl1, pushedEntry.navigationItem->GetReferrer().url); |
858 } | 860 } |
859 | 861 |
860 TEST_F(CRWSessionControllerTest, IsPushStateNavigation) { | 862 TEST_F(CRWSessionControllerTest, IsPushStateNavigation) { |
861 ScopedVector<web::NavigationItem> items; | 863 ScopedVector<web::NavigationItem> items; |
862 items.push_back( | 864 items.push_back( |
863 CreateNavigationItem("http://foo.com", "http://google.com", @"First")); | 865 CreateNavigationItem("http://foo.com", "http://google.com", @"First")); |
864 // Push state navigation. | 866 // Push state navigation. |
865 items.push_back( | 867 items.push_back( |
866 CreateNavigationItem("http://foo.com#bar", "http://foo.com", @"Second")); | 868 CreateNavigationItem("http://foo.com#bar", "http://foo.com", @"Second")); |
(...skipping 10 matching lines...) Expand all Loading... |
877 base::scoped_nsobject<CRWSessionController> controller( | 879 base::scoped_nsobject<CRWSessionController> controller( |
878 [[CRWSessionController alloc] initWithNavigationItems:items.Pass() | 880 [[CRWSessionController alloc] initWithNavigationItems:items.Pass() |
879 currentIndex:0 | 881 currentIndex:0 |
880 browserState:&browser_state_]); | 882 browserState:&browser_state_]); |
881 CRWSessionEntry* entry0 = [controller.get().entries objectAtIndex:0]; | 883 CRWSessionEntry* entry0 = [controller.get().entries objectAtIndex:0]; |
882 CRWSessionEntry* entry1 = [controller.get().entries objectAtIndex:1]; | 884 CRWSessionEntry* entry1 = [controller.get().entries objectAtIndex:1]; |
883 CRWSessionEntry* entry2 = [controller.get().entries objectAtIndex:2]; | 885 CRWSessionEntry* entry2 = [controller.get().entries objectAtIndex:2]; |
884 CRWSessionEntry* entry3 = [controller.get().entries objectAtIndex:3]; | 886 CRWSessionEntry* entry3 = [controller.get().entries objectAtIndex:3]; |
885 CRWSessionEntry* entry4 = [controller.get().entries objectAtIndex:4]; | 887 CRWSessionEntry* entry4 = [controller.get().entries objectAtIndex:4]; |
886 CRWSessionEntry* entry5 = [controller.get().entries objectAtIndex:5]; | 888 CRWSessionEntry* entry5 = [controller.get().entries objectAtIndex:5]; |
887 entry1.createdFromPushState = YES; | 889 entry1.navigationItemImpl->SetIsCreatedFromPushState(true); |
888 entry4.createdFromPushState = YES; | 890 entry4.navigationItemImpl->SetIsCreatedFromPushState(true); |
889 entry5.createdFromPushState = YES; | 891 entry5.navigationItemImpl->SetIsCreatedFromPushState(true); |
890 | 892 |
891 EXPECT_TRUE( | 893 EXPECT_TRUE( |
892 [controller isPushStateNavigationBetweenEntry:entry0 andEntry:entry1]); | 894 [controller isPushStateNavigationBetweenEntry:entry0 andEntry:entry1]); |
893 EXPECT_TRUE( | 895 EXPECT_TRUE( |
894 [controller isPushStateNavigationBetweenEntry:entry5 andEntry:entry3]); | 896 [controller isPushStateNavigationBetweenEntry:entry5 andEntry:entry3]); |
895 EXPECT_TRUE( | 897 EXPECT_TRUE( |
896 [controller isPushStateNavigationBetweenEntry:entry4 andEntry:entry3]); | 898 [controller isPushStateNavigationBetweenEntry:entry4 andEntry:entry3]); |
897 EXPECT_FALSE( | 899 EXPECT_FALSE( |
898 [controller isPushStateNavigationBetweenEntry:entry1 andEntry:entry2]); | 900 [controller isPushStateNavigationBetweenEntry:entry1 andEntry:entry2]); |
899 EXPECT_FALSE( | 901 EXPECT_FALSE( |
(...skipping 16 matching lines...) Expand all Loading... |
916 browserState:&browser_state_]); | 918 browserState:&browser_state_]); |
917 | 919 |
918 GURL replacePageGurl1("http://www.firstpage.com/#replace1"); | 920 GURL replacePageGurl1("http://www.firstpage.com/#replace1"); |
919 NSString* stateObject1 = @"{'foo': 1}"; | 921 NSString* stateObject1 = @"{'foo': 1}"; |
920 | 922 |
921 // Replace current entry and check the size of history and fields of the | 923 // Replace current entry and check the size of history and fields of the |
922 // modified entry. | 924 // modified entry. |
923 [controller updateCurrentEntryWithURL:replacePageGurl1 | 925 [controller updateCurrentEntryWithURL:replacePageGurl1 |
924 stateObject:stateObject1]; | 926 stateObject:stateObject1]; |
925 CRWSessionEntry* replacedEntry = [controller currentEntry]; | 927 CRWSessionEntry* replacedEntry = [controller currentEntry]; |
| 928 web::NavigationItemImpl* replacedItem = replacedEntry.navigationItemImpl; |
926 NSUInteger expectedCount = 3; | 929 NSUInteger expectedCount = 3; |
927 EXPECT_EQ(expectedCount, controller.get().entries.count); | 930 EXPECT_EQ(expectedCount, controller.get().entries.count); |
928 EXPECT_EQ(replacePageGurl1, replacedEntry.navigationItem->GetURL()); | 931 EXPECT_EQ(replacePageGurl1, replacedEntry.navigationItem->GetURL()); |
929 EXPECT_FALSE(replacedEntry.createdFromPushState); | 932 EXPECT_FALSE(replacedItem->IsCreatedFromPushState()); |
930 EXPECT_NSEQ(stateObject1, replacedEntry.serializedStateObject); | 933 EXPECT_NSEQ(stateObject1, replacedItem->GetSerializedStateObject()); |
931 EXPECT_EQ(GURL("http://www.starturl.com/"), | 934 EXPECT_EQ(GURL("http://www.starturl.com/"), |
932 replacedEntry.navigationItem->GetReferrer().url); | 935 replacedEntry.navigationItem->GetReferrer().url); |
933 | 936 |
934 // Replace current entry and check size and fields again. | 937 // Replace current entry and check size and fields again. |
935 GURL replacePageGurl2("http://www.firstpage.com/#replace2"); | 938 GURL replacePageGurl2("http://www.firstpage.com/#replace2"); |
936 [controller.get() updateCurrentEntryWithURL:replacePageGurl2 stateObject:nil]; | 939 [controller.get() updateCurrentEntryWithURL:replacePageGurl2 stateObject:nil]; |
937 replacedEntry = [controller currentEntry]; | 940 replacedEntry = [controller currentEntry]; |
| 941 replacedItem = replacedEntry.navigationItemImpl; |
938 EXPECT_EQ(expectedCount, controller.get().entries.count); | 942 EXPECT_EQ(expectedCount, controller.get().entries.count); |
939 EXPECT_EQ(replacePageGurl2, replacedEntry.navigationItem->GetURL()); | 943 EXPECT_EQ(replacePageGurl2, replacedEntry.navigationItem->GetURL()); |
940 EXPECT_FALSE(replacedEntry.createdFromPushState); | 944 EXPECT_FALSE(replacedItem->IsCreatedFromPushState()); |
941 EXPECT_NSEQ(nil, replacedEntry.serializedStateObject); | 945 EXPECT_NSEQ(nil, replacedItem->GetSerializedStateObject()); |
942 EXPECT_EQ(GURL("http://www.starturl.com/"), | 946 EXPECT_EQ(GURL("http://www.starturl.com/"), |
943 replacedEntry.navigationItem->GetReferrer().url); | 947 replacedEntry.navigationItem->GetReferrer().url); |
944 } | 948 } |
945 | 949 |
946 TEST_F(CRWSessionControllerTest, TestBackwardForwardEntries) { | 950 TEST_F(CRWSessionControllerTest, TestBackwardForwardEntries) { |
947 [session_controller_ addPendingEntry:GURL("http://www.example.com/0") | 951 [session_controller_ addPendingEntry:GURL("http://www.example.com/0") |
948 referrer:MakeReferrer("http://www.example.com/a") | 952 referrer:MakeReferrer("http://www.example.com/a") |
949 transition:ui::PAGE_TRANSITION_LINK | 953 transition:ui::PAGE_TRANSITION_LINK |
950 rendererInitiated:NO]; | 954 rendererInitiated:NO]; |
951 [session_controller_ commitPendingEntry]; | 955 [session_controller_ commitPendingEntry]; |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1013 | 1017 |
1014 // Remove an entry and attempt to go it. Ensure it outlives the removal. | 1018 // Remove an entry and attempt to go it. Ensure it outlives the removal. |
1015 base::scoped_nsobject<CRWSessionEntry> entry3( | 1019 base::scoped_nsobject<CRWSessionEntry> entry3( |
1016 [[session_controller_.get().entries objectAtIndex:3] retain]); | 1020 [[session_controller_.get().entries objectAtIndex:3] retain]); |
1017 [session_controller_ removeEntryAtIndex:3]; | 1021 [session_controller_ removeEntryAtIndex:3]; |
1018 [session_controller_ goToEntry:entry3]; | 1022 [session_controller_ goToEntry:entry3]; |
1019 EXPECT_EQ(1, session_controller_.get().currentNavigationIndex); | 1023 EXPECT_EQ(1, session_controller_.get().currentNavigationIndex); |
1020 } | 1024 } |
1021 | 1025 |
1022 } // anonymous namespace | 1026 } // anonymous namespace |
OLD | NEW |