| 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 <ChromeWebView/ChromeWebView.h> | 5 #import <ChromeWebView/ChromeWebView.h> |
| 6 #import <Foundation/Foundation.h> | 6 #import <Foundation/Foundation.h> |
| 7 | 7 |
| 8 #include "base/strings/stringprintf.h" | 8 #include "base/strings/stringprintf.h" |
| 9 #import "base/strings/sys_string_conversions.h" | 9 #import "base/strings/sys_string_conversions.h" |
| 10 #import "ios/testing/wait_util.h" | 10 #import "ios/testing/wait_util.h" |
| (...skipping 29 matching lines...) Expand all Loading... |
| 40 GURL page_3_url = GetUrlForPageWithTitle("Page 3"); | 40 GURL page_3_url = GetUrlForPageWithTitle("Page 3"); |
| 41 | 41 |
| 42 std::string page_2_html = | 42 std::string page_2_html = |
| 43 "<a id='link_2' href='" + page_3_url.spec() + "'>Link 2</a>"; | 43 "<a id='link_2' href='" + page_3_url.spec() + "'>Link 2</a>"; |
| 44 GURL page_2_url = GetUrlForPageWithHtmlBody(page_2_html); | 44 GURL page_2_url = GetUrlForPageWithHtmlBody(page_2_html); |
| 45 | 45 |
| 46 std::string page_1_html = | 46 std::string page_1_html = |
| 47 "<a id='link_1' href='" + page_2_url.spec() + "'>Link 1</a>"; | 47 "<a id='link_1' href='" + page_2_url.spec() + "'>Link 1</a>"; |
| 48 GURL page_1_url = GetUrlForPageWithHtmlBody(page_1_html); | 48 GURL page_1_url = GetUrlForPageWithHtmlBody(page_1_html); |
| 49 | 49 |
| 50 LoadUrl(web_view_, net::NSURLWithGURL(page_1_url)); | 50 ASSERT_TRUE(test::LoadUrl(web_view_, net::NSURLWithGURL(page_1_url))); |
| 51 // Loading initial URL should not affect back/forward navigation state. | 51 // Loading initial URL should not affect back/forward navigation state. |
| 52 EXPECT_FALSE([back_observer.lastValue boolValue]); | 52 EXPECT_FALSE([back_observer.lastValue boolValue]); |
| 53 EXPECT_FALSE([forward_observer.lastValue boolValue]); | 53 EXPECT_FALSE([forward_observer.lastValue boolValue]); |
| 54 | 54 |
| 55 // Navigate to page 2. | 55 // Navigate to page 2. |
| 56 EXPECT_TRUE(test::TapChromeWebViewElementWithId(web_view_, @"link_1")); | 56 EXPECT_TRUE(test::TapWebViewElementWithId(web_view_, @"link_1")); |
| 57 WaitForPageLoadCompletion(web_view_); | 57 ASSERT_TRUE(test::WaitForWebViewLoadCompletionOrTimeout(web_view_)); |
| 58 EXPECT_TRUE([back_observer.lastValue boolValue]); | 58 EXPECT_TRUE([back_observer.lastValue boolValue]); |
| 59 EXPECT_FALSE([forward_observer.lastValue boolValue]); | 59 EXPECT_FALSE([forward_observer.lastValue boolValue]); |
| 60 | 60 |
| 61 // Navigate back to page 1. | 61 // Navigate back to page 1. |
| 62 [web_view_ goBack]; | 62 [web_view_ goBack]; |
| 63 WaitForPageLoadCompletion(web_view_); | 63 ASSERT_TRUE(test::WaitForWebViewLoadCompletionOrTimeout(web_view_)); |
| 64 EXPECT_FALSE([back_observer.lastValue boolValue]); | 64 EXPECT_FALSE([back_observer.lastValue boolValue]); |
| 65 EXPECT_TRUE([forward_observer.lastValue boolValue]); | 65 EXPECT_TRUE([forward_observer.lastValue boolValue]); |
| 66 | 66 |
| 67 // Navigate forward to page 2. | 67 // Navigate forward to page 2. |
| 68 [web_view_ goForward]; | 68 [web_view_ goForward]; |
| 69 WaitForPageLoadCompletion(web_view_); | 69 ASSERT_TRUE(test::WaitForWebViewLoadCompletionOrTimeout(web_view_)); |
| 70 EXPECT_TRUE([back_observer.lastValue boolValue]); | 70 EXPECT_TRUE([back_observer.lastValue boolValue]); |
| 71 EXPECT_FALSE([forward_observer.lastValue boolValue]); | 71 EXPECT_FALSE([forward_observer.lastValue boolValue]); |
| 72 | 72 |
| 73 // Navigate to page 3. | 73 // Navigate to page 3. |
| 74 EXPECT_TRUE(test::TapChromeWebViewElementWithId(web_view_, @"link_2")); | 74 EXPECT_TRUE(test::TapWebViewElementWithId(web_view_, @"link_2")); |
| 75 WaitForPageLoadCompletion(web_view_); | 75 ASSERT_TRUE(test::WaitForWebViewLoadCompletionOrTimeout(web_view_)); |
| 76 EXPECT_TRUE([back_observer.lastValue boolValue]); | 76 EXPECT_TRUE([back_observer.lastValue boolValue]); |
| 77 EXPECT_FALSE([forward_observer.lastValue boolValue]); | 77 EXPECT_FALSE([forward_observer.lastValue boolValue]); |
| 78 | 78 |
| 79 // Navigate back to page 2. | 79 // Navigate back to page 2. |
| 80 [web_view_ goBack]; | 80 [web_view_ goBack]; |
| 81 WaitForPageLoadCompletion(web_view_); | 81 ASSERT_TRUE(test::WaitForWebViewLoadCompletionOrTimeout(web_view_)); |
| 82 EXPECT_TRUE([back_observer.lastValue boolValue]); | 82 EXPECT_TRUE([back_observer.lastValue boolValue]); |
| 83 EXPECT_TRUE([forward_observer.lastValue boolValue]); | 83 EXPECT_TRUE([forward_observer.lastValue boolValue]); |
| 84 } | 84 } |
| 85 | 85 |
| 86 // Tests that CWVWebView correctly reports current |title|. | 86 // Tests that CWVWebView correctly reports current |title|. |
| 87 TEST_F(ChromeWebViewKvoTest, Title) { | 87 TEST_F(ChromeWebViewKvoTest, Title) { |
| 88 Observer* observer = [[Observer alloc] init]; | 88 Observer* observer = [[Observer alloc] init]; |
| 89 [observer setObservedObject:web_view_ keyPath:@"title"]; | 89 [observer setObservedObject:web_view_ keyPath:@"title"]; |
| 90 | 90 |
| 91 NSString* page_2_title = @"Page 2"; | 91 NSString* page_2_title = @"Page 2"; |
| 92 GURL page_2_url = | 92 GURL page_2_url = |
| 93 GetUrlForPageWithTitle(base::SysNSStringToUTF8(page_2_title)); | 93 GetUrlForPageWithTitle(base::SysNSStringToUTF8(page_2_title)); |
| 94 | 94 |
| 95 NSString* page_1_title = @"Page 1"; | 95 NSString* page_1_title = @"Page 1"; |
| 96 std::string page_1_html = base::StringPrintf( | 96 std::string page_1_html = base::StringPrintf( |
| 97 "<a id='link_1' href='%s'>Link 1</a>", page_2_url.spec().c_str()); | 97 "<a id='link_1' href='%s'>Link 1</a>", page_2_url.spec().c_str()); |
| 98 GURL page_1_url = GetUrlForPageWithTitleAndBody( | 98 GURL page_1_url = GetUrlForPageWithTitleAndBody( |
| 99 base::SysNSStringToUTF8(page_1_title), page_1_html); | 99 base::SysNSStringToUTF8(page_1_title), page_1_html); |
| 100 | 100 |
| 101 LoadUrl(web_view_, net::NSURLWithGURL(page_1_url)); | 101 ASSERT_TRUE(test::LoadUrl(web_view_, net::NSURLWithGURL(page_1_url))); |
| 102 EXPECT_NSEQ(page_1_title, observer.lastValue); | 102 EXPECT_NSEQ(page_1_title, observer.lastValue); |
| 103 | 103 |
| 104 // Navigate to page 2. | 104 // Navigate to page 2. |
| 105 EXPECT_TRUE(test::TapChromeWebViewElementWithId(web_view_, @"link_1")); | 105 EXPECT_TRUE(test::TapWebViewElementWithId(web_view_, @"link_1")); |
| 106 WaitForPageLoadCompletion(web_view_); | 106 ASSERT_TRUE(test::WaitForWebViewLoadCompletionOrTimeout(web_view_)); |
| 107 EXPECT_NSEQ(page_2_title, observer.lastValue); | 107 EXPECT_NSEQ(page_2_title, observer.lastValue); |
| 108 | 108 |
| 109 // Navigate back to page 1. | 109 // Navigate back to page 1. |
| 110 [web_view_ goBack]; | 110 [web_view_ goBack]; |
| 111 WaitForPageLoadCompletion(web_view_); | 111 ASSERT_TRUE(test::WaitForWebViewLoadCompletionOrTimeout(web_view_)); |
| 112 EXPECT_NSEQ(page_1_title, observer.lastValue); | 112 EXPECT_NSEQ(page_1_title, observer.lastValue); |
| 113 } | 113 } |
| 114 | 114 |
| 115 // Tests that CWVWebView correctly reports |isLoading| value. | 115 // Tests that CWVWebView correctly reports |isLoading| value. |
| 116 TEST_F(ChromeWebViewKvoTest, Loading) { | 116 TEST_F(ChromeWebViewKvoTest, Loading) { |
| 117 Observer* observer = [[Observer alloc] init]; | 117 Observer* observer = [[Observer alloc] init]; |
| 118 [observer setObservedObject:web_view_ keyPath:@"loading"]; | 118 [observer setObservedObject:web_view_ keyPath:@"loading"]; |
| 119 | 119 |
| 120 GURL page_2_url = GetUrlForPageWithTitle("Page 2"); | 120 GURL page_2_url = GetUrlForPageWithTitle("Page 2"); |
| 121 | 121 |
| 122 std::string page_1_html = base::StringPrintf( | 122 std::string page_1_html = base::StringPrintf( |
| 123 "<a id='link_1' href='%s'>Link 1</a>", page_2_url.spec().c_str()); | 123 "<a id='link_1' href='%s'>Link 1</a>", page_2_url.spec().c_str()); |
| 124 GURL page_1_url = GetUrlForPageWithTitleAndBody("Page 1", page_1_html); | 124 GURL page_1_url = GetUrlForPageWithTitleAndBody("Page 1", page_1_html); |
| 125 | 125 |
| 126 LoadUrl(web_view_, net::NSURLWithGURL(page_1_url)); | 126 ASSERT_TRUE(test::LoadUrl(web_view_, net::NSURLWithGURL(page_1_url))); |
| 127 EXPECT_TRUE([observer.previousValue boolValue]); | 127 EXPECT_TRUE([observer.previousValue boolValue]); |
| 128 EXPECT_FALSE([observer.lastValue boolValue]); | 128 EXPECT_FALSE([observer.lastValue boolValue]); |
| 129 | 129 |
| 130 // Navigate to page 2. | 130 // Navigate to page 2. |
| 131 EXPECT_TRUE(test::TapChromeWebViewElementWithId(web_view_, @"link_1")); | 131 EXPECT_TRUE(test::TapWebViewElementWithId(web_view_, @"link_1")); |
| 132 WaitForPageLoadCompletion(web_view_); | 132 ASSERT_TRUE(test::WaitForWebViewLoadCompletionOrTimeout(web_view_)); |
| 133 EXPECT_TRUE([observer.previousValue boolValue]); | 133 EXPECT_TRUE([observer.previousValue boolValue]); |
| 134 EXPECT_FALSE([observer.lastValue boolValue]); | 134 EXPECT_FALSE([observer.lastValue boolValue]); |
| 135 | 135 |
| 136 // Navigate back to page 1. | 136 // Navigate back to page 1. |
| 137 [web_view_ goBack]; | 137 [web_view_ goBack]; |
| 138 WaitForPageLoadCompletion(web_view_); | 138 ASSERT_TRUE(test::WaitForWebViewLoadCompletionOrTimeout(web_view_)); |
| 139 EXPECT_TRUE([observer.previousValue boolValue]); | 139 EXPECT_TRUE([observer.previousValue boolValue]); |
| 140 EXPECT_FALSE([observer.lastValue boolValue]); | 140 EXPECT_FALSE([observer.lastValue boolValue]); |
| 141 } | 141 } |
| 142 | 142 |
| 143 // Tests that CWVWebView correctly reports |visibleURL| and |lastCommittedURL|. | 143 // Tests that CWVWebView correctly reports |visibleURL| and |lastCommittedURL|. |
| 144 TEST_F(ChromeWebViewKvoTest, URLs) { | 144 TEST_F(ChromeWebViewKvoTest, URLs) { |
| 145 Observer* last_committed_url_observer = [[Observer alloc] init]; | 145 Observer* last_committed_url_observer = [[Observer alloc] init]; |
| 146 [last_committed_url_observer setObservedObject:web_view_ | 146 [last_committed_url_observer setObservedObject:web_view_ |
| 147 keyPath:@"lastCommittedURL"]; | 147 keyPath:@"lastCommittedURL"]; |
| 148 | 148 |
| 149 Observer* visible_url_observer = [[Observer alloc] init]; | 149 Observer* visible_url_observer = [[Observer alloc] init]; |
| 150 [visible_url_observer setObservedObject:web_view_ keyPath:@"visibleURL"]; | 150 [visible_url_observer setObservedObject:web_view_ keyPath:@"visibleURL"]; |
| 151 | 151 |
| 152 GURL page_2 = GetUrlForPageWithTitle("Page 2"); | 152 GURL page_2 = GetUrlForPageWithTitle("Page 2"); |
| 153 NSURL* page_2_url = net::NSURLWithGURL(page_2); | 153 NSURL* page_2_url = net::NSURLWithGURL(page_2); |
| 154 | 154 |
| 155 std::string page_1_html = base::StringPrintf( | 155 std::string page_1_html = base::StringPrintf( |
| 156 "<a id='link_1' href='%s'>Link 1</a>", page_2.spec().c_str()); | 156 "<a id='link_1' href='%s'>Link 1</a>", page_2.spec().c_str()); |
| 157 NSURL* page_1_url = | 157 NSURL* page_1_url = |
| 158 net::NSURLWithGURL(GetUrlForPageWithTitleAndBody("Page 1", page_1_html)); | 158 net::NSURLWithGURL(GetUrlForPageWithTitleAndBody("Page 1", page_1_html)); |
| 159 | 159 |
| 160 [web_view_ loadRequest:[NSURLRequest requestWithURL:page_1_url]]; | 160 [web_view_ loadRequest:[NSURLRequest requestWithURL:page_1_url]]; |
| 161 | 161 |
| 162 // |visibleURL| will update immediately | 162 // |visibleURL| will update immediately |
| 163 EXPECT_NSEQ(page_1_url, visible_url_observer.lastValue); | 163 EXPECT_NSEQ(page_1_url, visible_url_observer.lastValue); |
| 164 | 164 |
| 165 WaitForPageLoadCompletion(web_view_); | 165 ASSERT_TRUE(test::WaitForWebViewLoadCompletionOrTimeout(web_view_)); |
| 166 EXPECT_NSEQ(page_1_url, last_committed_url_observer.lastValue); | 166 EXPECT_NSEQ(page_1_url, last_committed_url_observer.lastValue); |
| 167 EXPECT_NSEQ(page_1_url, visible_url_observer.lastValue); | 167 EXPECT_NSEQ(page_1_url, visible_url_observer.lastValue); |
| 168 | 168 |
| 169 // Navigate to page 2. | 169 // Navigate to page 2. |
| 170 EXPECT_TRUE(test::TapChromeWebViewElementWithId(web_view_, @"link_1")); | 170 EXPECT_TRUE(test::TapWebViewElementWithId(web_view_, @"link_1")); |
| 171 WaitForPageLoadCompletion(web_view_); | 171 ASSERT_TRUE(test::WaitForWebViewLoadCompletionOrTimeout(web_view_)); |
| 172 EXPECT_NSEQ(page_2_url, last_committed_url_observer.lastValue); | 172 EXPECT_NSEQ(page_2_url, last_committed_url_observer.lastValue); |
| 173 EXPECT_NSEQ(page_2_url, visible_url_observer.lastValue); | 173 EXPECT_NSEQ(page_2_url, visible_url_observer.lastValue); |
| 174 | 174 |
| 175 // Navigate back to page 1. | 175 // Navigate back to page 1. |
| 176 [web_view_ goBack]; | 176 [web_view_ goBack]; |
| 177 WaitForPageLoadCompletion(web_view_); | 177 ASSERT_TRUE(test::WaitForWebViewLoadCompletionOrTimeout(web_view_)); |
| 178 EXPECT_NSEQ(page_1_url, last_committed_url_observer.lastValue); | 178 EXPECT_NSEQ(page_1_url, last_committed_url_observer.lastValue); |
| 179 EXPECT_NSEQ(page_1_url, visible_url_observer.lastValue); | 179 EXPECT_NSEQ(page_1_url, visible_url_observer.lastValue); |
| 180 } | 180 } |
| 181 | 181 |
| 182 } // namespace ios_web_view | 182 } // namespace ios_web_view |
| OLD | NEW |