blob: de145f949139b6163d251f833208ab560f9cb5e3 [file] [log] [blame]
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#import "ios/web/navigation/navigation_item_storage_builder.h"
#import "ios/web/navigation/navigation_item_impl.h"
#import "ios/web/public/session/crw_navigation_item_storage.h"
#include "testing/gtest/include/gtest/gtest.h"
#import "testing/gtest_mac.h"
#include "testing/platform_test.h"
#include "url/gurl.h"
#if !defined(__has_feature) || !__has_feature(objc_arc)
#error "This file requires ARC support."
#endif
using NavigationItemStorageBuilderTest = PlatformTest;
namespace web {
TEST_F(NavigationItemStorageBuilderTest, DecodeDifferentScheme) {
NavigationItemStorageBuilder item_storage_builder;
CRWNavigationItemStorage* item_storage =
[[CRWNavigationItemStorage alloc] init];
// HTTP url.
[item_storage setURL:GURL("http://url.test")];
[item_storage setVirtualURL:GURL("http://virtual.test")];
ASSERT_NE(item_storage.URL, item_storage.virtualURL);
std::unique_ptr<NavigationItemImpl> navigation_item =
item_storage_builder.BuildNavigationItemImpl(item_storage);
ASSERT_EQ(item_storage.URL, navigation_item->GetURL());
ASSERT_EQ(item_storage.virtualURL, navigation_item->GetVirtualURL());
// File URL.
[item_storage setURL:GURL("file://myfile.test")];
ASSERT_NE(item_storage.URL, item_storage.virtualURL);
navigation_item = item_storage_builder.BuildNavigationItemImpl(item_storage);
ASSERT_EQ(item_storage.virtualURL, navigation_item->GetURL());
ASSERT_EQ(item_storage.virtualURL, navigation_item->GetVirtualURL());
// Blob URL.
[item_storage setURL:GURL("blob:myfile.test")];
ASSERT_NE(item_storage.URL, item_storage.virtualURL);
navigation_item = item_storage_builder.BuildNavigationItemImpl(item_storage);
ASSERT_EQ(item_storage.virtualURL, navigation_item->GetURL());
ASSERT_EQ(item_storage.virtualURL, navigation_item->GetVirtualURL());
}
} // namespace web