OLD | NEW |
1 // Copyright 2017 The Chromium Authors. All rights reserved. | 1 // Copyright 2017 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 "ios/web/public/crw_session_storage.h" | 5 #import "ios/web/public/crw_session_storage.h" |
6 | 6 |
7 #import "base/mac/scoped_nsobject.h" | 7 #import "base/mac/scoped_nsobject.h" |
8 #include "base/strings/sys_string_conversions.h" | 8 #include "base/strings/sys_string_conversions.h" |
9 #import "ios/web/navigation/navigation_item_impl.h" | 9 #import "ios/web/navigation/navigation_item_impl.h" |
10 #import "ios/web/navigation/navigation_item_storage_test_util.h" | 10 #import "ios/web/navigation/navigation_item_storage_test_util.h" |
(...skipping 30 matching lines...) Expand all Loading... |
41 return (data1 == nullptr) == (data2 == nullptr) && | 41 return (data1 == nullptr) == (data2 == nullptr) && |
42 (!data1 || [data1->data() isEqualToDictionary:data2->data()]); | 42 (!data1 || [data1->data() isEqualToDictionary:data2->data()]); |
43 } | 43 } |
44 // Checks for equality between |session1| and |session2|. | 44 // Checks for equality between |session1| and |session2|. |
45 BOOL SessionStoragesAreEqual(CRWSessionStorage* session1, | 45 BOOL SessionStoragesAreEqual(CRWSessionStorage* session1, |
46 CRWSessionStorage* session2) { | 46 CRWSessionStorage* session2) { |
47 // Check the rest of the properties. | 47 // Check the rest of the properties. |
48 NSArray* items1 = session1.itemStorages; | 48 NSArray* items1 = session1.itemStorages; |
49 NSArray* items2 = session2.itemStorages; | 49 NSArray* items2 = session2.itemStorages; |
50 return ItemStorageListsAreEqual(items1, items2) && | 50 return ItemStorageListsAreEqual(items1, items2) && |
51 [session1.openerID isEqual:session2.openerID] && | |
52 session1.openedByDOM == session2.openedByDOM && | 51 session1.openedByDOM == session2.openedByDOM && |
53 session1.openerNavigationIndex == session2.openerNavigationIndex && | |
54 [session1.windowName isEqual:session2.windowName] && | 52 [session1.windowName isEqual:session2.windowName] && |
55 session1.currentNavigationIndex == session2.currentNavigationIndex && | 53 session1.currentNavigationIndex == session2.currentNavigationIndex && |
56 session1.previousNavigationIndex == session2.previousNavigationIndex && | 54 session1.previousNavigationIndex == session2.previousNavigationIndex && |
57 session1.lastVisitedTimestamp == session2.lastVisitedTimestamp && | 55 session1.lastVisitedTimestamp == session2.lastVisitedTimestamp && |
58 UserDataAreEqual(session1.userData, session2.userData); | 56 UserDataAreEqual(session1.userData, session2.userData); |
59 } | 57 } |
60 } // namespace | 58 } // namespace |
61 | 59 |
62 class CRWNSessionStorageTest : public PlatformTest { | 60 class CRWNSessionStorageTest : public PlatformTest { |
63 protected: | 61 protected: |
64 CRWNSessionStorageTest() | 62 CRWNSessionStorageTest() |
65 : session_storage_([[CRWSessionStorage alloc] init]) { | 63 : session_storage_([[CRWSessionStorage alloc] init]) { |
66 // Set up |session_storage_|. | 64 // Set up |session_storage_|. |
67 [session_storage_ setOpenerID:@"openerID"]; | |
68 [session_storage_ setOpenedByDOM:YES]; | 65 [session_storage_ setOpenedByDOM:YES]; |
69 [session_storage_ setOpenerNavigationIndex:2]; | |
70 [session_storage_ setWindowName:@"windowName"]; | 66 [session_storage_ setWindowName:@"windowName"]; |
71 [session_storage_ setCurrentNavigationIndex:4]; | 67 [session_storage_ setCurrentNavigationIndex:4]; |
72 [session_storage_ setPreviousNavigationIndex:3]; | 68 [session_storage_ setPreviousNavigationIndex:3]; |
73 [session_storage_ setLastVisitedTimestamp:CFAbsoluteTimeGetCurrent()]; | 69 [session_storage_ setLastVisitedTimestamp:CFAbsoluteTimeGetCurrent()]; |
74 // Create an item storage. | 70 // Create an item storage. |
75 base::scoped_nsobject<CRWNavigationItemStorage> item_storage( | 71 base::scoped_nsobject<CRWNavigationItemStorage> item_storage( |
76 [[CRWNavigationItemStorage alloc] init]); | 72 [[CRWNavigationItemStorage alloc] init]); |
77 [item_storage setVirtualURL:GURL("http://init.test")]; | 73 [item_storage setVirtualURL:GURL("http://init.test")]; |
78 [item_storage setReferrer:web::Referrer(GURL("http://referrer.url"), | 74 [item_storage setReferrer:web::Referrer(GURL("http://referrer.url"), |
79 web::ReferrerPolicyDefault)]; | 75 web::ReferrerPolicyDefault)]; |
(...skipping 16 matching lines...) Expand all Loading... |
96 base::scoped_nsobject<CRWSessionStorage> session_storage_; | 92 base::scoped_nsobject<CRWSessionStorage> session_storage_; |
97 }; | 93 }; |
98 | 94 |
99 // Tests that unarchiving CRWSessionStorage data results in an equivalent | 95 // Tests that unarchiving CRWSessionStorage data results in an equivalent |
100 // storage. | 96 // storage. |
101 TEST_F(CRWNSessionStorageTest, EncodeDecode) { | 97 TEST_F(CRWNSessionStorageTest, EncodeDecode) { |
102 NSData* data = [NSKeyedArchiver archivedDataWithRootObject:session_storage_]; | 98 NSData* data = [NSKeyedArchiver archivedDataWithRootObject:session_storage_]; |
103 id decoded = [NSKeyedUnarchiver unarchiveObjectWithData:data]; | 99 id decoded = [NSKeyedUnarchiver unarchiveObjectWithData:data]; |
104 EXPECT_TRUE(SessionStoragesAreEqual(session_storage_, decoded)); | 100 EXPECT_TRUE(SessionStoragesAreEqual(session_storage_, decoded)); |
105 } | 101 } |
OLD | NEW |