| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 <XCTest/XCTest.h> | 5 #import <XCTest/XCTest.h> |
| 6 #include <map> | 6 #include <map> |
| 7 #include <memory> | 7 #include <memory> |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "base/ios/ios_util.h" | 10 #include "base/ios/ios_util.h" |
| (...skipping 22 matching lines...) Expand all Loading... |
| 33 #include "ios/web/public/test/http_server/http_server_util.h" | 33 #include "ios/web/public/test/http_server/http_server_util.h" |
| 34 #include "net/http/http_response_headers.h" | 34 #include "net/http/http_response_headers.h" |
| 35 #include "ui/base/l10n/l10n_util.h" | 35 #include "ui/base/l10n/l10n_util.h" |
| 36 #include "url/gurl.h" | 36 #include "url/gurl.h" |
| 37 | 37 |
| 38 #if !defined(__has_feature) || !__has_feature(objc_arc) | 38 #if !defined(__has_feature) || !__has_feature(objc_arc) |
| 39 #error "This file requires ARC support." | 39 #error "This file requires ARC support." |
| 40 #endif | 40 #endif |
| 41 | 41 |
| 42 using chrome_test_util::OmniboxText; | 42 using chrome_test_util::OmniboxText; |
| 43 using chrome_test_util::WebViewContainingText; | |
| 44 | 43 |
| 45 namespace { | 44 namespace { |
| 46 | 45 |
| 47 // URL used for the reload test. | 46 // URL used for the reload test. |
| 48 const char kReloadTestUrl[] = "http://mock/reloadTest"; | 47 const char kReloadTestUrl[] = "http://mock/reloadTest"; |
| 49 | 48 |
| 50 // Returns the number of serviced requests in HTTP body. | 49 // Returns the number of serviced requests in HTTP body. |
| 51 class ReloadResponseProvider : public web::DataResponseProvider { | 50 class ReloadResponseProvider : public web::DataResponseProvider { |
| 52 public: | 51 public: |
| 53 ReloadResponseProvider() : request_number_(0) {} | 52 ReloadResponseProvider() : request_number_(0) {} |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 141 - (void)testReload { | 140 - (void)testReload { |
| 142 // Set up test HTTP server responses. | 141 // Set up test HTTP server responses. |
| 143 std::unique_ptr<web::DataResponseProvider> provider( | 142 std::unique_ptr<web::DataResponseProvider> provider( |
| 144 new ReloadResponseProvider()); | 143 new ReloadResponseProvider()); |
| 145 web::test::SetUpHttpServer(std::move(provider)); | 144 web::test::SetUpHttpServer(std::move(provider)); |
| 146 | 145 |
| 147 GURL URL = ReloadResponseProvider::GetReloadTestUrl(); | 146 GURL URL = ReloadResponseProvider::GetReloadTestUrl(); |
| 148 [ChromeEarlGrey loadURL:URL]; | 147 [ChromeEarlGrey loadURL:URL]; |
| 149 std::string expectedBodyBeforeReload( | 148 std::string expectedBodyBeforeReload( |
| 150 ReloadResponseProvider::GetResponseBody(0 /* request number */)); | 149 ReloadResponseProvider::GetResponseBody(0 /* request number */)); |
| 151 [[EarlGrey | 150 [ChromeEarlGrey waitForWebViewContainingText:expectedBodyBeforeReload]; |
| 152 selectElementWithMatcher:WebViewContainingText(expectedBodyBeforeReload)] | |
| 153 assertWithMatcher:grey_notNil()]; | |
| 154 | 151 |
| 155 [ChromeEarlGreyUI reload]; | 152 [ChromeEarlGreyUI reload]; |
| 156 std::string expectedBodyAfterReload( | 153 std::string expectedBodyAfterReload( |
| 157 ReloadResponseProvider::GetResponseBody(1 /* request_number */)); | 154 ReloadResponseProvider::GetResponseBody(1 /* request_number */)); |
| 158 [[EarlGrey | 155 [ChromeEarlGrey waitForWebViewContainingText:expectedBodyAfterReload]; |
| 159 selectElementWithMatcher:WebViewContainingText(expectedBodyAfterReload)] | |
| 160 assertWithMatcher:grey_notNil()]; | |
| 161 } | 156 } |
| 162 | 157 |
| 163 // Tests that a tab's title is based on the URL when no other information is | 158 // Tests that a tab's title is based on the URL when no other information is |
| 164 // available. | 159 // available. |
| 165 - (void)testBrowsingTabTitleSetFromURL { | 160 - (void)testBrowsingTabTitleSetFromURL { |
| 166 if (!IsIPadIdiom()) { | 161 if (!IsIPadIdiom()) { |
| 167 EARL_GREY_TEST_SKIPPED(@"Tab Title not displayed on handset."); | 162 EARL_GREY_TEST_SKIPPED(@"Tab Title not displayed on handset."); |
| 168 } | 163 } |
| 169 | 164 |
| 170 web::test::SetUpFileBasedHttpServer(); | 165 web::test::SetUpFileBasedHttpServer(); |
| (...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 427 | 422 |
| 428 [ChromeEarlGrey loadURL:URL]; | 423 [ChromeEarlGrey loadURL:URL]; |
| 429 | 424 |
| 430 // Tap on chrome://version link. | 425 // Tap on chrome://version link. |
| 431 [ChromeEarlGrey tapWebViewElementWithID:@"link"]; | 426 [ChromeEarlGrey tapWebViewElementWithID:@"link"]; |
| 432 | 427 |
| 433 // Verify that page did not change by checking its URL and message printed by | 428 // Verify that page did not change by checking its URL and message printed by |
| 434 // onclick event. | 429 // onclick event. |
| 435 [[EarlGrey selectElementWithMatcher:OmniboxText("chrome://version")] | 430 [[EarlGrey selectElementWithMatcher:OmniboxText("chrome://version")] |
| 436 assertWithMatcher:grey_nil()]; | 431 assertWithMatcher:grey_nil()]; |
| 437 [[EarlGrey selectElementWithMatcher:WebViewContainingText("Hello world!")] | 432 [ChromeEarlGrey waitForWebViewContainingText:"Hello world!"]; |
| 438 assertWithMatcher:grey_notNil()]; | |
| 439 | 433 |
| 440 // Verify that no new tabs were open which could load chrome://version. | 434 // Verify that no new tabs were open which could load chrome://version. |
| 441 chrome_test_util::AssertMainTabCount(1U); | 435 chrome_test_util::AssertMainTabCount(1U); |
| 442 } | 436 } |
| 443 | 437 |
| 444 // Tests that pressing the button on a POST-based form with same-page action | 438 // Tests that pressing the button on a POST-based form with same-page action |
| 445 // does not change the page and that the back button works as expected | 439 // does not change the page and that the back button works as expected |
| 446 // afterwards. | 440 // afterwards. |
| 447 - (void)testBrowsingPostToSamePage { | 441 - (void)testBrowsingPostToSamePage { |
| 448 // TODO(crbug.com/714303): Re-enable this test on devices. | 442 // TODO(crbug.com/714303): Re-enable this test on devices. |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 539 | 533 |
| 540 [ChromeEarlGrey loadURL:firstURL]; | 534 [ChromeEarlGrey loadURL:firstURL]; |
| 541 [ChromeEarlGrey loadURL:secondURL]; | 535 [ChromeEarlGrey loadURL:secondURL]; |
| 542 | 536 |
| 543 // Execute some JavaScript in the omnibox. | 537 // Execute some JavaScript in the omnibox. |
| 544 [[EarlGrey selectElementWithMatcher:chrome_test_util::Omnibox()] | 538 [[EarlGrey selectElementWithMatcher:chrome_test_util::Omnibox()] |
| 545 performAction:grey_typeText(@"javascript:document.write('foo')")]; | 539 performAction:grey_typeText(@"javascript:document.write('foo')")]; |
| 546 [[EarlGrey selectElementWithMatcher:grey_accessibilityID(@"Go")] | 540 [[EarlGrey selectElementWithMatcher:grey_accessibilityID(@"Go")] |
| 547 performAction:grey_tap()]; | 541 performAction:grey_tap()]; |
| 548 | 542 |
| 549 id<GREYMatcher> webView = chrome_test_util::WebViewContainingText("foo"); | 543 [ChromeEarlGrey waitForWebViewContainingText:"foo"]; |
| 550 [[EarlGrey selectElementWithMatcher:webView] assertWithMatcher:grey_notNil()]; | |
| 551 | 544 |
| 552 // Verify that the JavaScript did not affect history by going back and then | 545 // Verify that the JavaScript did not affect history by going back and then |
| 553 // forward again. | 546 // forward again. |
| 554 [self goBack]; | 547 [self goBack]; |
| 555 [[EarlGrey selectElementWithMatcher:OmniboxText(firstURL.GetContent())] | 548 [[EarlGrey selectElementWithMatcher:OmniboxText(firstURL.GetContent())] |
| 556 assertWithMatcher:grey_notNil()]; | 549 assertWithMatcher:grey_notNil()]; |
| 557 [self goForward]; | 550 [self goForward]; |
| 558 [[EarlGrey selectElementWithMatcher:OmniboxText(secondURL.GetContent())] | 551 [[EarlGrey selectElementWithMatcher:OmniboxText(secondURL.GetContent())] |
| 559 assertWithMatcher:grey_notNil()]; | 552 assertWithMatcher:grey_notNil()]; |
| 560 } | 553 } |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 632 "<form action='%s' method='post'>" | 625 "<form action='%s' method='post'>" |
| 633 "<input value='textfield' id='textfield' type='text'></label>" | 626 "<input value='textfield' id='textfield' type='text'></label>" |
| 634 "<input type='submit'></form>", | 627 "<input type='submit'></form>", |
| 635 destinationURL.spec().c_str()); | 628 destinationURL.spec().c_str()); |
| 636 // This is the page that should be showing at the end of the test. | 629 // This is the page that should be showing at the end of the test. |
| 637 responses[destinationURL] = "baz!"; | 630 responses[destinationURL] = "baz!"; |
| 638 web::test::SetUpSimpleHttpServer(responses); | 631 web::test::SetUpSimpleHttpServer(responses); |
| 639 | 632 |
| 640 // Open the URL, focus the textfield,and submit via keyboard. | 633 // Open the URL, focus the textfield,and submit via keyboard. |
| 641 [ChromeEarlGrey loadURL:URL]; | 634 [ChromeEarlGrey loadURL:URL]; |
| 642 [[EarlGrey selectElementWithMatcher:WebViewContainingText("hello!")] | 635 [ChromeEarlGrey waitForWebViewContainingText:"hello!"]; |
| 643 assertWithMatcher:grey_notNil()]; | |
| 644 | 636 |
| 645 [self submitFormUsingKeyboardGoButtonWithInputID:"textfield"]; | 637 [self submitFormUsingKeyboardGoButtonWithInputID:"textfield"]; |
| 646 | 638 |
| 647 // Verify that the browser navigates to the expected URL. | 639 // Verify that the browser navigates to the expected URL. |
| 648 [[EarlGrey selectElementWithMatcher:WebViewContainingText("baz!")] | 640 [ChromeEarlGrey waitForWebViewContainingText:"baz!"]; |
| 649 assertWithMatcher:grey_notNil()]; | |
| 650 [[EarlGrey selectElementWithMatcher:OmniboxText(destinationURL.GetContent())] | 641 [[EarlGrey selectElementWithMatcher:OmniboxText(destinationURL.GetContent())] |
| 651 assertWithMatcher:grey_notNil()]; | 642 assertWithMatcher:grey_notNil()]; |
| 652 | 643 |
| 653 // Go back and verify that the browser navigates to the original URL. | 644 // Go back and verify that the browser navigates to the original URL. |
| 654 [self goBack]; | 645 [self goBack]; |
| 655 [[EarlGrey selectElementWithMatcher:WebViewContainingText("hello!")] | 646 [ChromeEarlGrey waitForWebViewContainingText:"hello!"]; |
| 656 assertWithMatcher:grey_notNil()]; | |
| 657 [[EarlGrey selectElementWithMatcher:OmniboxText(URL.GetContent())] | 647 [[EarlGrey selectElementWithMatcher:OmniboxText(URL.GetContent())] |
| 658 assertWithMatcher:grey_notNil()]; | 648 assertWithMatcher:grey_notNil()]; |
| 659 } | 649 } |
| 660 | 650 |
| 661 @end | 651 @end |
| OLD | NEW |