Commit a68deb93 authored by Kurt Horimoto's avatar Kurt Horimoto Committed by Commit Bot

[iOS][EG2] Convert JavaScriptDialogTestCase to EG2.

This involved updating the test fixture to use a different
mechanism because the execution of the JS script bodies via
ChromeEarlGrey injection hangs because of JS execution halts
while the dialogs are displayed.  Instead, there is now a
tappable link on the page that executes the dialog scripts
with a timeout so that the script execution can return while
the dialog is displayed.

Bug: 987646
Change-Id: Ifa90d923360ca03c686d662a7cc34575dff94037
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1883137
Commit-Queue: Kurt Horimoto <kkhorimoto@chromium.org>
Reviewed-by: default avatarEugene But <eugenebut@chromium.org>
Auto-Submit: Kurt Horimoto <kkhorimoto@chromium.org>
Cr-Commit-Position: refs/heads/master@{#710893}
parent 2380e028
...@@ -47,6 +47,14 @@ source_set("unit_tests") { ...@@ -47,6 +47,14 @@ source_set("unit_tests") {
configs += [ "//build/config/compiler:enable_arc" ] configs += [ "//build/config/compiler:enable_arc" ]
} }
source_set("constants") {
configs += [ "//build/config/compiler:enable_arc" ]
sources = [
"dialog_constants.h",
"dialog_constants.mm",
]
}
source_set("dialogs_internal") { source_set("dialogs_internal") {
configs += [ "//build/config/compiler:enable_arc" ] configs += [ "//build/config/compiler:enable_arc" ]
sources = [ sources = [
...@@ -63,6 +71,7 @@ source_set("dialogs_internal") { ...@@ -63,6 +71,7 @@ source_set("dialogs_internal") {
] ]
deps = [ deps = [
":completion_block_util", ":completion_block_util",
":constants",
":dialogs", ":dialogs",
"//base", "//base",
"//components/strings", "//components/strings",
...@@ -120,13 +129,14 @@ source_set("unit_tests_internal") { ...@@ -120,13 +129,14 @@ source_set("unit_tests_internal") {
} }
source_set("eg_tests") { source_set("eg_tests") {
defines = [ "CHROME_EARL_GREY_1" ]
configs += [ "//build/config/compiler:enable_arc" ] configs += [ "//build/config/compiler:enable_arc" ]
testonly = true testonly = true
sources = [ sources = [
"javascript_dialog_egtest.mm", "javascript_dialog_egtest.mm",
] ]
deps = [ deps = [
":dialogs_internal", ":constants",
"//base", "//base",
"//base/test:test_support", "//base/test:test_support",
"//components/strings", "//components/strings",
...@@ -151,3 +161,33 @@ source_set("eg_tests") { ...@@ -151,3 +161,33 @@ source_set("eg_tests") {
"XCTest.framework", "XCTest.framework",
] ]
} }
source_set("eg2_tests") {
defines = [ "CHROME_EARL_GREY_2" ]
configs += [
"//build/config/compiler:enable_arc",
"//build/config/ios:xctest_config",
]
testonly = true
sources = [
"javascript_dialog_egtest.mm",
]
deps = [
":constants",
"//base",
"//base/test:test_support",
"//components/strings",
"//components/url_formatter",
"//ios/chrome/app/strings",
"//ios/chrome/test:eg_test_support+eg2",
"//ios/chrome/test/earl_grey:eg_test_support+eg2",
"//ios/testing/earl_grey:eg_test_support+eg2",
"//ios/third_party/earl_grey2:test_lib",
"//ios/web/public/test:element_selector",
"//ios/web/public/test/http_server",
"//net:test_support",
"//ui/base",
"//url",
]
libs = [ "UIKit.framework" ]
}
// Copyright 2019 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.
#ifndef IOS_CHROME_BROWSER_UI_DIALOGS_DIALOG_CONSTANTS_H_
#define IOS_CHROME_BROWSER_UI_DIALOGS_DIALOG_CONSTANTS_H_
#import <Foundation/Foundation.h>
// Accessibility identifier added to the text field of JavaScript prompts.
extern NSString* const kJavaScriptDialogTextFieldAccessibiltyIdentifier;
#endif // IOS_CHROME_BROWSER_UI_DIALOGS_DIALOG_CONSTANTS_H_
// Copyright 2019 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/chrome/browser/ui/dialogs/dialog_constants.h"
#if !defined(__has_feature) || !__has_feature(objc_arc)
#error "This file requires ARC support."
#endif
// Externed accessibility identifier.
NSString* const kJavaScriptDialogTextFieldAccessibiltyIdentifier =
@"JavaScriptDialogTextFieldAccessibiltyIdentifier";
...@@ -13,9 +13,6 @@ ...@@ -13,9 +13,6 @@
class GURL; class GURL;
@class AlertCoordinator; @class AlertCoordinator;
// Accessibility identifier added to the text field of JavaScript prompts.
extern NSString* const kJavaScriptDialogTextFieldAccessibiltyIdentifier;
namespace web { namespace web {
class WebState; class WebState;
} }
......
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
#import "ios/chrome/browser/ui/alert_coordinator/alert_coordinator.h" #import "ios/chrome/browser/ui/alert_coordinator/alert_coordinator.h"
#import "ios/chrome/browser/ui/alert_coordinator/input_alert_coordinator.h" #import "ios/chrome/browser/ui/alert_coordinator/input_alert_coordinator.h"
#import "ios/chrome/browser/ui/dialogs/completion_block_util.h" #import "ios/chrome/browser/ui/dialogs/completion_block_util.h"
#import "ios/chrome/browser/ui/dialogs/dialog_constants.h"
#import "ios/chrome/browser/ui/dialogs/java_script_dialog_blocking_state.h" #import "ios/chrome/browser/ui/dialogs/java_script_dialog_blocking_state.h"
#import "ios/chrome/browser/ui/dialogs/nsurl_protection_space_util.h" #import "ios/chrome/browser/ui/dialogs/nsurl_protection_space_util.h"
#include "ios/chrome/browser/ui/util/ui_util.h" #include "ios/chrome/browser/ui/util/ui_util.h"
...@@ -38,10 +39,6 @@ using completion_block_util::GetSafeJavaScriptConfirmationCompletion; ...@@ -38,10 +39,6 @@ using completion_block_util::GetSafeJavaScriptConfirmationCompletion;
using completion_block_util::GetSafeJavaScriptPromptCompletion; using completion_block_util::GetSafeJavaScriptPromptCompletion;
using completion_block_util::GetSafeHTTPAuthCompletion; using completion_block_util::GetSafeHTTPAuthCompletion;
// Externed accessibility identifier.
NSString* const kJavaScriptDialogTextFieldAccessibiltyIdentifier =
@"JavaScriptDialogTextFieldAccessibiltyIdentifier";
@interface DialogPresenter () <CRWWebStateObserver> { @interface DialogPresenter () <CRWWebStateObserver> {
// Queue of WebStates which correspond to the keys in // Queue of WebStates which correspond to the keys in
// |_dialogCoordinatorsForWebStates|. // |_dialogCoordinatorsForWebStates|.
......
...@@ -68,6 +68,7 @@ chrome_ios_eg2_test("ios_chrome_ui_eg2tests_module") { ...@@ -68,6 +68,7 @@ chrome_ios_eg2_test("ios_chrome_ui_eg2tests_module") {
"//ios/chrome/browser/ui/autofill:eg2_tests", "//ios/chrome/browser/ui/autofill:eg2_tests",
"//ios/chrome/browser/ui/autofill/manual_fill:eg2_tests", "//ios/chrome/browser/ui/autofill/manual_fill:eg2_tests",
"//ios/chrome/browser/ui/content_suggestions:eg2_tests", "//ios/chrome/browser/ui/content_suggestions:eg2_tests",
"//ios/chrome/browser/ui/dialogs:eg2_tests",
"//ios/chrome/browser/ui/download:eg2_tests", "//ios/chrome/browser/ui/download:eg2_tests",
"//ios/chrome/browser/ui/integration_tests:eg2_tests", "//ios/chrome/browser/ui/integration_tests:eg2_tests",
"//ios/chrome/browser/ui/ntp:eg2_tests", "//ios/chrome/browser/ui/ntp:eg2_tests",
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment