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