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.openedByDOM == session2.openedByDOM && | 51 session1.hasOpener == session2.hasOpener && |
52 session1.currentNavigationIndex == session2.currentNavigationIndex && | 52 session1.currentNavigationIndex == session2.currentNavigationIndex && |
53 session1.previousNavigationIndex == session2.previousNavigationIndex && | 53 session1.previousNavigationIndex == session2.previousNavigationIndex && |
54 UserDataAreEqual(session1.userData, session2.userData); | 54 UserDataAreEqual(session1.userData, session2.userData); |
55 } | 55 } |
56 } // namespace | 56 } // namespace |
57 | 57 |
58 class CRWNSessionStorageTest : public PlatformTest { | 58 class CRWNSessionStorageTest : public PlatformTest { |
59 protected: | 59 protected: |
60 CRWNSessionStorageTest() | 60 CRWNSessionStorageTest() |
61 : session_storage_([[CRWSessionStorage alloc] init]) { | 61 : session_storage_([[CRWSessionStorage alloc] init]) { |
62 // Set up |session_storage_|. | 62 // Set up |session_storage_|. |
63 [session_storage_ setOpenedByDOM:YES]; | 63 [session_storage_ setHasOpener:YES]; |
64 [session_storage_ setCurrentNavigationIndex:4]; | 64 [session_storage_ setCurrentNavigationIndex:4]; |
65 [session_storage_ setPreviousNavigationIndex:3]; | 65 [session_storage_ setPreviousNavigationIndex:3]; |
66 // Create an item storage. | 66 // Create an item storage. |
67 base::scoped_nsobject<CRWNavigationItemStorage> item_storage( | 67 base::scoped_nsobject<CRWNavigationItemStorage> item_storage( |
68 [[CRWNavigationItemStorage alloc] init]); | 68 [[CRWNavigationItemStorage alloc] init]); |
69 [item_storage setVirtualURL:GURL("http://init.test")]; | 69 [item_storage setVirtualURL:GURL("http://init.test")]; |
70 [item_storage setReferrer:web::Referrer(GURL("http://referrer.url"), | 70 [item_storage setReferrer:web::Referrer(GURL("http://referrer.url"), |
71 web::ReferrerPolicyDefault)]; | 71 web::ReferrerPolicyDefault)]; |
72 [item_storage setTimestamp:base::Time::Now()]; | 72 [item_storage setTimestamp:base::Time::Now()]; |
73 [item_storage setTitle:base::SysNSStringToUTF16(@"Title")]; | 73 [item_storage setTitle:base::SysNSStringToUTF16(@"Title")]; |
(...skipping 14 matching lines...) Expand all Loading... |
88 base::scoped_nsobject<CRWSessionStorage> session_storage_; | 88 base::scoped_nsobject<CRWSessionStorage> session_storage_; |
89 }; | 89 }; |
90 | 90 |
91 // Tests that unarchiving CRWSessionStorage data results in an equivalent | 91 // Tests that unarchiving CRWSessionStorage data results in an equivalent |
92 // storage. | 92 // storage. |
93 TEST_F(CRWNSessionStorageTest, EncodeDecode) { | 93 TEST_F(CRWNSessionStorageTest, EncodeDecode) { |
94 NSData* data = [NSKeyedArchiver archivedDataWithRootObject:session_storage_]; | 94 NSData* data = [NSKeyedArchiver archivedDataWithRootObject:session_storage_]; |
95 id decoded = [NSKeyedUnarchiver unarchiveObjectWithData:data]; | 95 id decoded = [NSKeyedUnarchiver unarchiveObjectWithData:data]; |
96 EXPECT_TRUE(SessionStoragesAreEqual(session_storage_, decoded)); | 96 EXPECT_TRUE(SessionStoragesAreEqual(session_storage_, decoded)); |
97 } | 97 } |
OLD | NEW |