| 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 |