Index: ios/chrome/browser/metrics/tab_usage_recorder_egtest.mm |
diff --git a/ios/chrome/browser/metrics/tab_usage_recorder_egtest.mm b/ios/chrome/browser/metrics/tab_usage_recorder_egtest.mm |
index 29e1a41696b3b59cf7a8af832f21e70b3d0d6f90..f8c0c588e14e5b4c65bdf88cdbffe4691952d449 100644 |
--- a/ios/chrome/browser/metrics/tab_usage_recorder_egtest.mm |
+++ b/ios/chrome/browser/metrics/tab_usage_recorder_egtest.mm |
@@ -2,9 +2,6 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-#import <EarlGrey/EarlGrey.h> |
-#import <XCTest/XCTest.h> |
- |
#include "base/mac/bind_objc_block.h" |
#include "base/memory/ptr_util.h" |
#include "base/strings/stringprintf.h" |
@@ -12,15 +9,13 @@ |
#include "base/strings/utf_string_conversions.h" |
#import "base/test/ios/wait_util.h" |
#include "components/strings/grit/components_strings.h" |
-#include "ios/chrome/browser/experimental_flags.h" |
#import "ios/chrome/browser/metrics/tab_usage_recorder.h" |
+#import "ios/chrome/browser/metrics/tab_usage_recorder_test_util.h" |
#import "ios/chrome/browser/ui/settings/privacy_collection_view_controller.h" |
#import "ios/chrome/browser/ui/settings/settings_collection_view_controller.h" |
#import "ios/chrome/browser/ui/toolbar/toolbar_controller.h" |
#include "ios/chrome/browser/ui/tools_menu/tools_menu_constants.h" |
-#include "ios/chrome/browser/ui/ui_util.h" |
#import "ios/chrome/browser/ui/uikit_ui_util.h" |
-#include "ios/chrome/grit/ios_strings.h" |
#import "ios/chrome/test/app/chrome_test_util.h" |
#import "ios/chrome/test/app/histogram_test_util.h" |
#include "ios/chrome/test/app/navigation_test_util.h" |
@@ -38,14 +33,16 @@ |
#import "ios/web/public/test/http_server_util.h" |
#include "ios/web/public/test/response_providers/delayed_response_provider.h" |
#include "ios/web/public/test/response_providers/html_response_provider.h" |
-#include "ui/base/l10n/l10n_util.h" |
#include "ui/base/l10n/l10n_util_mac.h" |
+#include "url/gurl.h" |
#if !defined(__has_feature) || !__has_feature(objc_arc) |
#error "This file requires ARC support." |
#endif |
using chrome_test_util::OpenLinkInNewTabButton; |
+using tab_usage_recorder_test_util::OpenNewIncognitoTabUsingUIAndEvictMainTabs; |
+using tab_usage_recorder_test_util::SwitchToNormalMode; |
namespace { |
@@ -123,24 +120,6 @@ void OpenNewMainTabUsingUIUnsynced() { |
chrome_test_util::AssertMainTabCount(nb_main_tab + 1); |
} |
-// Opens a new incognito tab using the UI and evicts any main tab model tabs. |
-void OpenNewIncognitoTabUsingUIAndEvictMainTabs() { |
- int nb_incognito_tab = chrome_test_util::GetIncognitoTabCount(); |
- [ChromeEarlGreyUI openToolsMenu]; |
- id<GREYMatcher> new_incognito_tab_button_matcher = |
- grey_accessibilityID(kToolsMenuNewIncognitoTabId); |
- [[EarlGrey selectElementWithMatcher:new_incognito_tab_button_matcher] |
- performAction:grey_tap()]; |
- chrome_test_util::AssertIncognitoTabCount(nb_incognito_tab + 1); |
- ConditionBlock condition = ^bool { |
- return chrome_test_util::IsIncognitoMode(); |
- }; |
- GREYAssert( |
- testing::WaitUntilConditionOrTimeout(kWaitElementTimeout, condition), |
- @"Waiting switch to incognito mode."); |
- chrome_test_util::EvictOtherTabModelTabs(); |
-} |
- |
// Closes a tab in the current tab model. Synchronize on tab number afterwards. |
void CloseTabAtIndexAndSync(NSUInteger i) { |
NSUInteger nb_main_tab = chrome_test_util::GetMainTabCount(); |
@@ -153,52 +132,6 @@ void CloseTabAtIndexAndSync(NSUInteger i) { |
@"Waiting for tab to close"); |
} |
-// Closes the tabs switcher. |
-void CloseTabSwitcher() { |
- id<GREYMatcher> matcher = chrome_test_util::ButtonWithAccessibilityLabelId( |
- IDS_IOS_TAB_STRIP_LEAVE_TAB_SWITCHER); |
- [[EarlGrey selectElementWithMatcher:matcher] performAction:grey_tap()]; |
-} |
- |
-// Swithches to normal mode using swith button (iPad) or stack view (iPhone). |
-// Assumes current mode is Incognito. |
-void SwitchToNormalMode() { |
- GREYAssertTrue(chrome_test_util::IsIncognitoMode(), |
- @"Switching to normal mode is only allowed from Incognito."); |
- if (IsIPadIdiom()) { |
- // Enter the tab switcher. |
- id<GREYMatcher> tabSwitcherEnterButton = grey_accessibilityLabel( |
- l10n_util::GetNSStringWithFixup(IDS_IOS_TAB_STRIP_ENTER_TAB_SWITCHER)); |
- [[EarlGrey selectElementWithMatcher:tabSwitcherEnterButton] |
- performAction:grey_tap()]; |
- |
- // Select the non incognito panel. |
- id<GREYMatcher> tabSwitcherHeaderPanelButton = |
- grey_accessibilityLabel(l10n_util::GetNSStringWithFixup( |
- IDS_IOS_TAB_SWITCHER_HEADER_NON_INCOGNITO_TABS)); |
- [[EarlGrey selectElementWithMatcher:tabSwitcherHeaderPanelButton] |
- performAction:grey_tap()]; |
- |
- // Leave the tab switcher. |
- CloseTabSwitcher(); |
- } else { |
- [[EarlGrey selectElementWithMatcher:chrome_test_util::ShowTabsButton()] |
- performAction:grey_tap()]; |
- [[EarlGrey selectElementWithMatcher: |
- chrome_test_util::ButtonWithAccessibilityLabelId( |
- IDS_IOS_TOOLS_MENU_NEW_INCOGNITO_TAB)] |
- performAction:grey_swipeSlowInDirection(kGREYDirectionRight)]; |
- [[EarlGrey selectElementWithMatcher:chrome_test_util::ShowTabsButton()] |
- performAction:grey_tap()]; |
- } |
- ConditionBlock condition = ^bool { |
- return !chrome_test_util::IsIncognitoMode(); |
- }; |
- GREYAssert( |
- testing::WaitUntilConditionOrTimeout(kWaitElementTimeout, condition), |
- @"Waiting switch to normal mode."); |
-} |
- |
// Open the settings submenu. Assumes that settings menu is visible. |
void OpenSettingsSubMenuUnsynced(int submenu) { |
id<GREYMatcher> settings_button_matcher = |
@@ -492,40 +425,6 @@ void SelectTabUsingUI(NSString* title) { |
histogramTester.ExpectTotalCount(kEvictedTabReloadTime, 1, failureBlock); |
} |
-// Verify correct recording of metrics when the reloading of an evicted tab |
-// fails. |
-- (void)testEvictedTabReloadFailure { |
-// TODO(crbug.com/709126): Evaluate and re-enable this test if necessary. |
-#if !TARGET_IPHONE_SIMULATOR |
- EARL_GREY_TEST_DISABLED(@"Test disabled on device."); |
-#endif |
- |
- web::test::SetUpFileBasedHttpServer(); |
- chrome_test_util::HistogramTester histogramTester; |
- FailureBlock failureBlock = ^(NSString* error) { |
- GREYFail(error); |
- }; |
- |
- // This URL is purposely invalid so it triggers a navigation error. |
- GURL invalidURL(kTestUrl1); |
- |
- chrome_test_util::OpenNewTab(); |
- [ChromeEarlGrey loadURL:invalidURL]; |
- [ChromeEarlGrey waitForErrorPage]; |
- OpenNewIncognitoTabUsingUIAndEvictMainTabs(); |
- |
- SwitchToNormalMode(); |
- [ChromeEarlGrey waitForErrorPage]; |
- |
- histogramTester.ExpectUniqueSample(kEvictedTabReloadSuccessRate, |
- TabUsageRecorder::LOAD_FAILURE, 1, |
- failureBlock); |
- histogramTester.ExpectUniqueSample(kDidUserWaitForEvictedTabReload, |
- TabUsageRecorder::USER_WAITED, 1, |
- failureBlock); |
- histogramTester.ExpectTotalCount(kEvictedTabReloadTime, 0, failureBlock); |
-} |
- |
// Test that USER_DID_NOT_WAIT is reported if the user does not wait for the |
// reload to be complete after eviction. |
- (void)testEvictedTabSlowReload { |