| OLD | NEW |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 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/web_state/ui/crw_web_controller.h" | 5 #import "ios/web/web_state/ui/crw_web_controller.h" |
| 6 | 6 |
| 7 #import <WebKit/WebKit.h> | 7 #import <WebKit/WebKit.h> |
| 8 | 8 |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 43 #import "testing/gtest_mac.h" | 43 #import "testing/gtest_mac.h" |
| 44 #include "third_party/ocmock/OCMock/OCMock.h" | 44 #include "third_party/ocmock/OCMock/OCMock.h" |
| 45 #include "third_party/ocmock/gtest_support.h" | 45 #include "third_party/ocmock/gtest_support.h" |
| 46 #include "third_party/ocmock/ocmock_extensions.h" | 46 #include "third_party/ocmock/ocmock_extensions.h" |
| 47 #import "ui/base/test/ios/ui_view_test_utils.h" | 47 #import "ui/base/test/ios/ui_view_test_utils.h" |
| 48 | 48 |
| 49 using web::NavigationManagerImpl; | 49 using web::NavigationManagerImpl; |
| 50 | 50 |
| 51 @interface CRWWebController (PrivateAPI) | 51 @interface CRWWebController (PrivateAPI) |
| 52 @property(nonatomic, readwrite) web::PageDisplayState pageDisplayState; | 52 @property(nonatomic, readwrite) web::PageDisplayState pageDisplayState; |
| 53 - (GURL)URLForHistoryNavigationFromItem:(web::NavigationItem*)fromItem | 53 - (GURL)URLForHistoryNavigationToItem:(web::NavigationItem*)toItem |
| 54 toItem:(web::NavigationItem*)toItem; | 54 previousURL:(const GURL&)previousURL; |
| 55 @end | 55 @end |
| 56 | 56 |
| 57 // Used to mock CRWWebDelegate methods with C++ params. | 57 // Used to mock CRWWebDelegate methods with C++ params. |
| 58 @interface MockInteractionLoader : OCMockComplexTypeHelper | 58 @interface MockInteractionLoader : OCMockComplexTypeHelper |
| 59 @end | 59 @end |
| 60 | 60 |
| 61 @implementation MockInteractionLoader | 61 @implementation MockInteractionLoader |
| 62 | 62 |
| 63 typedef BOOL (^openExternalURLBlockType)(const GURL&); | 63 typedef BOOL (^openExternalURLBlockType)(const GURL&); |
| 64 | 64 |
| (...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 231 @"" | 231 @"" |
| 232 ]; | 232 ]; |
| 233 | 233 |
| 234 NSArray* fragments = @[ @"#", @"#bar" ]; | 234 NSArray* fragments = @[ @"#", @"#bar" ]; |
| 235 NSMutableArray* urlsWithFragments = [NSMutableArray array]; | 235 NSMutableArray* urlsWithFragments = [NSMutableArray array]; |
| 236 for (NSString* url in urlsNoFragments) { | 236 for (NSString* url in urlsNoFragments) { |
| 237 for (NSString* fragment in fragments) { | 237 for (NSString* fragment in fragments) { |
| 238 [urlsWithFragments addObject:[url stringByAppendingString:fragment]]; | 238 [urlsWithFragments addObject:[url stringByAppendingString:fragment]]; |
| 239 } | 239 } |
| 240 } | 240 } |
| 241 web::NavigationItemImpl fromItem; | 241 |
| 242 GURL previous_url; |
| 242 web::NavigationItemImpl toItem; | 243 web::NavigationItemImpl toItem; |
| 243 | 244 |
| 244 // No start fragment: the end url is never changed. | 245 // No start fragment: the end url is never changed. |
| 245 for (NSString* start in urlsNoFragments) { | 246 for (NSString* start in urlsNoFragments) { |
| 246 for (NSString* end in urlsWithFragments) { | 247 for (NSString* end in urlsWithFragments) { |
| 247 fromItem.SetURL(MAKE_URL(start)); | 248 previous_url = MAKE_URL(start); |
| 248 toItem.SetURL(MAKE_URL(end)); | 249 toItem.SetURL(MAKE_URL(end)); |
| 249 EXPECT_EQ(MAKE_URL(end), | 250 EXPECT_EQ(MAKE_URL(end), |
| 250 [web_controller() URLForHistoryNavigationFromItem:&fromItem | 251 [web_controller() URLForHistoryNavigationToItem:&toItem |
| 251 toItem:&toItem]); | 252 previousURL:previous_url]); |
| 252 } | 253 } |
| 253 } | 254 } |
| 254 // Both contain fragments: the end url is never changed. | 255 // Both contain fragments: the end url is never changed. |
| 255 for (NSString* start in urlsWithFragments) { | 256 for (NSString* start in urlsWithFragments) { |
| 256 for (NSString* end in urlsWithFragments) { | 257 for (NSString* end in urlsWithFragments) { |
| 257 fromItem.SetURL(MAKE_URL(start)); | 258 previous_url = MAKE_URL(start); |
| 258 toItem.SetURL(MAKE_URL(end)); | 259 toItem.SetURL(MAKE_URL(end)); |
| 259 EXPECT_EQ(MAKE_URL(end), | 260 EXPECT_EQ(MAKE_URL(end), |
| 260 [web_controller() URLForHistoryNavigationFromItem:&fromItem | 261 [web_controller() URLForHistoryNavigationToItem:&toItem |
| 261 toItem:&toItem]); | 262 previousURL:previous_url]); |
| 262 } | 263 } |
| 263 } | 264 } |
| 264 for (unsigned start_index = 0; start_index < [urlsWithFragments count]; | 265 for (unsigned start_index = 0; start_index < [urlsWithFragments count]; |
| 265 ++start_index) { | 266 ++start_index) { |
| 266 NSString* start = urlsWithFragments[start_index]; | 267 NSString* start = urlsWithFragments[start_index]; |
| 267 for (unsigned end_index = 0; end_index < [urlsNoFragments count]; | 268 for (unsigned end_index = 0; end_index < [urlsNoFragments count]; |
| 268 ++end_index) { | 269 ++end_index) { |
| 269 NSString* end = urlsNoFragments[end_index]; | 270 NSString* end = urlsNoFragments[end_index]; |
| 271 previous_url = MAKE_URL(start); |
| 270 if (start_index / 2 != end_index) { | 272 if (start_index / 2 != end_index) { |
| 271 // The URLs have nothing in common, they are left untouched. | 273 // The URLs have nothing in common, they are left untouched. |
| 272 fromItem.SetURL(MAKE_URL(start)); | |
| 273 toItem.SetURL(MAKE_URL(end)); | 274 toItem.SetURL(MAKE_URL(end)); |
| 274 EXPECT_EQ(MAKE_URL(end), | 275 EXPECT_EQ( |
| 275 [web_controller() URLForHistoryNavigationFromItem:&fromItem | 276 MAKE_URL(end), |
| 276 toItem:&toItem]); | 277 [web_controller() URLForHistoryNavigationToItem:&toItem |
| 278 previousURL:previous_url]); |
| 277 } else { | 279 } else { |
| 278 // Start contains a fragment and matches end: An empty fragment is | 280 // Start contains a fragment and matches end: An empty fragment is |
| 279 // added. | 281 // added. |
| 280 fromItem.SetURL(MAKE_URL(start)); | |
| 281 toItem.SetURL(MAKE_URL(end)); | 282 toItem.SetURL(MAKE_URL(end)); |
| 282 EXPECT_EQ(MAKE_URL([end stringByAppendingString:@"#"]), | 283 EXPECT_EQ( |
| 283 [web_controller() URLForHistoryNavigationFromItem:&fromItem | 284 MAKE_URL([end stringByAppendingString:@"#"]), |
| 284 toItem:&toItem]); | 285 [web_controller() URLForHistoryNavigationToItem:&toItem |
| 286 previousURL:previous_url]); |
| 285 } | 287 } |
| 286 } | 288 } |
| 287 } | 289 } |
| 288 } | 290 } |
| 289 | 291 |
| 290 // Tests that AllowCertificateError is called with correct arguments if | 292 // Tests that AllowCertificateError is called with correct arguments if |
| 291 // WKWebView fails to load a page with bad SSL cert. | 293 // WKWebView fails to load a page with bad SSL cert. |
| 292 TEST_F(CRWWebControllerTest, SslCertError) { | 294 TEST_F(CRWWebControllerTest, SslCertError) { |
| 293 // Last arguments passed to AllowCertificateError must be in default state. | 295 // Last arguments passed to AllowCertificateError must be in default state. |
| 294 ASSERT_FALSE(GetWebClient()->last_cert_error_code()); | 296 ASSERT_FALSE(GetWebClient()->last_cert_error_code()); |
| (...skipping 660 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 955 web::TestWebStateObserver* observer_ptr = &observer; | 957 web::TestWebStateObserver* observer_ptr = &observer; |
| 956 web::SimulateWKWebViewCrash(webView_); | 958 web::SimulateWKWebViewCrash(webView_); |
| 957 base::test::ios::WaitUntilCondition(^bool() { | 959 base::test::ios::WaitUntilCondition(^bool() { |
| 958 return observer_ptr->render_process_gone_info(); | 960 return observer_ptr->render_process_gone_info(); |
| 959 }); | 961 }); |
| 960 EXPECT_EQ(web_state(), observer.render_process_gone_info()->web_state); | 962 EXPECT_EQ(web_state(), observer.render_process_gone_info()->web_state); |
| 961 EXPECT_FALSE([web_controller() isViewAlive]); | 963 EXPECT_FALSE([web_controller() isViewAlive]); |
| 962 }; | 964 }; |
| 963 | 965 |
| 964 } // namespace | 966 } // namespace |
| OLD | NEW |