| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/navigation/navigation_manager_impl.h" | 5 #import "ios/web/navigation/navigation_manager_impl.h" |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "base/mac/bind_objc_block.h" | 8 #include "base/mac/bind_objc_block.h" |
| 9 #import "base/mac/scoped_nsobject.h" | |
| 10 #import "ios/web/navigation/crw_session_controller+private_constructors.h" | 9 #import "ios/web/navigation/crw_session_controller+private_constructors.h" |
| 11 #import "ios/web/navigation/navigation_manager_delegate.h" | 10 #import "ios/web/navigation/navigation_manager_delegate.h" |
| 12 #include "ios/web/public/navigation_item.h" | 11 #include "ios/web/public/navigation_item.h" |
| 13 #include "ios/web/public/test/fakes/test_browser_state.h" | 12 #include "ios/web/public/test/fakes/test_browser_state.h" |
| 14 #include "ios/web/test/test_url_constants.h" | 13 #include "ios/web/test/test_url_constants.h" |
| 15 #include "testing/gtest/include/gtest/gtest.h" | 14 #include "testing/gtest/include/gtest/gtest.h" |
| 16 #include "testing/platform_test.h" | 15 #include "testing/platform_test.h" |
| 17 #include "url/scheme_host_port.h" | 16 #include "url/scheme_host_port.h" |
| 18 #include "url/url_util.h" | 17 #include "url/url_util.h" |
| 19 | 18 |
| 19 #if !defined(__has_feature) || !__has_feature(objc_arc) |
| 20 #error "This file requires ARC support." |
| 21 #endif |
| 22 |
| 20 namespace web { | 23 namespace web { |
| 21 namespace { | 24 namespace { |
| 22 | 25 |
| 23 // URL scheme that will be rewritten by UrlRewriter installed in | 26 // URL scheme that will be rewritten by UrlRewriter installed in |
| 24 // NavigationManagerTest fixture. Scheme will be changed to kTestWebUIScheme. | 27 // NavigationManagerTest fixture. Scheme will be changed to kTestWebUIScheme. |
| 25 const char kSchemeToRewrite[] = "navigationmanagerschemetorewrite"; | 28 const char kSchemeToRewrite[] = "navigationmanagerschemetorewrite"; |
| 26 | 29 |
| 27 // Replaces |kSchemeToRewrite| scheme with |kTestWebUIScheme|. | 30 // Replaces |kSchemeToRewrite| scheme with |kTestWebUIScheme|. |
| 28 bool UrlRewriter(GURL* url, BrowserState* browser_state) { | 31 bool UrlRewriter(GURL* url, BrowserState* browser_state) { |
| 29 if (url->scheme() == kSchemeToRewrite) { | 32 if (url->scheme() == kSchemeToRewrite) { |
| (...skipping 26 matching lines...) Expand all Loading... |
| 56 // Test fixture for NavigationManagerImpl testing. | 59 // Test fixture for NavigationManagerImpl testing. |
| 57 class NavigationManagerTest : public PlatformTest { | 60 class NavigationManagerTest : public PlatformTest { |
| 58 protected: | 61 protected: |
| 59 NavigationManagerTest() : manager_(new NavigationManagerImpl()) { | 62 NavigationManagerTest() : manager_(new NavigationManagerImpl()) { |
| 60 // Setup rewriter. | 63 // Setup rewriter. |
| 61 BrowserURLRewriter::GetInstance()->AddURLRewriter(UrlRewriter); | 64 BrowserURLRewriter::GetInstance()->AddURLRewriter(UrlRewriter); |
| 62 url::AddStandardScheme(kSchemeToRewrite, url::SCHEME_WITHOUT_PORT); | 65 url::AddStandardScheme(kSchemeToRewrite, url::SCHEME_WITHOUT_PORT); |
| 63 | 66 |
| 64 manager_->SetDelegate(&delegate_); | 67 manager_->SetDelegate(&delegate_); |
| 65 manager_->SetBrowserState(&browser_state_); | 68 manager_->SetBrowserState(&browser_state_); |
| 66 controller_.reset( | 69 controller_ = |
| 67 [[CRWSessionController alloc] initWithBrowserState:&browser_state_]); | 70 [[CRWSessionController alloc] initWithBrowserState:&browser_state_]; |
| 68 manager_->SetSessionController(controller_.get()); | 71 manager_->SetSessionController(controller_); |
| 69 } | 72 } |
| 70 CRWSessionController* session_controller() { return controller_.get(); } | 73 CRWSessionController* session_controller() { return controller_; } |
| 71 NavigationManagerImpl* navigation_manager() { return manager_.get(); } | 74 NavigationManagerImpl* navigation_manager() { return manager_.get(); } |
| 72 TestNavigationManagerDelegate navigation_manager_delegate() { | 75 TestNavigationManagerDelegate navigation_manager_delegate() { |
| 73 return delegate_; | 76 return delegate_; |
| 74 } | 77 } |
| 75 | 78 |
| 76 private: | 79 private: |
| 77 TestBrowserState browser_state_; | 80 TestBrowserState browser_state_; |
| 78 TestNavigationManagerDelegate delegate_; | 81 TestNavigationManagerDelegate delegate_; |
| 79 std::unique_ptr<NavigationManagerImpl> manager_; | 82 std::unique_ptr<NavigationManagerImpl> manager_; |
| 80 base::scoped_nsobject<CRWSessionController> controller_; | 83 CRWSessionController* controller_; |
| 81 }; | 84 }; |
| 82 | 85 |
| 83 // Tests state of an empty navigation manager. | 86 // Tests state of an empty navigation manager. |
| 84 TEST_F(NavigationManagerTest, EmptyManager) { | 87 TEST_F(NavigationManagerTest, EmptyManager) { |
| 85 EXPECT_EQ(0, navigation_manager()->GetItemCount()); | 88 EXPECT_EQ(0, navigation_manager()->GetItemCount()); |
| 86 EXPECT_EQ(-1, navigation_manager()->GetLastCommittedItemIndex()); | 89 EXPECT_EQ(-1, navigation_manager()->GetLastCommittedItemIndex()); |
| 87 EXPECT_EQ(-1, navigation_manager()->GetLastCommittedItemIndex()); | 90 EXPECT_EQ(-1, navigation_manager()->GetLastCommittedItemIndex()); |
| 88 EXPECT_FALSE(navigation_manager()->GetPendingItem()); | 91 EXPECT_FALSE(navigation_manager()->GetPendingItem()); |
| 89 EXPECT_EQ(-1, navigation_manager()->GetPendingItemIndex()); | 92 EXPECT_EQ(-1, navigation_manager()->GetPendingItemIndex()); |
| 90 EXPECT_EQ(-1, navigation_manager()->GetIndexForOffset(0)); | 93 EXPECT_EQ(-1, navigation_manager()->GetIndexForOffset(0)); |
| (...skipping 1290 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1381 // Create an item that does not exist in the NavigationManagerImpl. | 1384 // Create an item that does not exist in the NavigationManagerImpl. |
| 1382 std::unique_ptr<web::NavigationItem> item_not_found = | 1385 std::unique_ptr<web::NavigationItem> item_not_found = |
| 1383 web::NavigationItem::Create(); | 1386 web::NavigationItem::Create(); |
| 1384 // Verify GetIndexOfItem() results. | 1387 // Verify GetIndexOfItem() results. |
| 1385 EXPECT_EQ(0, navigation_manager()->GetIndexOfItem(item0)); | 1388 EXPECT_EQ(0, navigation_manager()->GetIndexOfItem(item0)); |
| 1386 EXPECT_EQ(1, navigation_manager()->GetIndexOfItem(item1)); | 1389 EXPECT_EQ(1, navigation_manager()->GetIndexOfItem(item1)); |
| 1387 EXPECT_EQ(-1, navigation_manager()->GetIndexOfItem(item_not_found.get())); | 1390 EXPECT_EQ(-1, navigation_manager()->GetIndexOfItem(item_not_found.get())); |
| 1388 } | 1391 } |
| 1389 | 1392 |
| 1390 } // namespace web | 1393 } // namespace web |
| OLD | NEW |