// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#import "ios/chrome/browser/policy/model/policy_earl_grey_matchers.h"
#import "ios/chrome/test/earl_grey/chrome_earl_grey.h"
#import "ios/chrome/test/earl_grey/chrome_earl_grey_ui.h"
#import "ios/chrome/test/earl_grey/chrome_matchers.h"
#import "ios/chrome/test/earl_grey/chrome_test_case.h"
#import "ios/testing/earl_grey/earl_grey_test.h"
namespace policy {
namespace {
void AssertElementInCollectionWithMatcher(id<GREYMatcher> element_matcher,
id<GREYMatcher> assertion_matcher) {
[[EarlGrey
selectElementWithMatcher:grey_allOf(element_matcher,
grey_ancestor(grey_kindOfClassName(
@"UICollectionView")),
grey_sufficientlyVisible(), nil)]
assertWithMatcher:assertion_matcher];
}
} // namespace
void AssertButtonInCollectionEnabled(int label_id) {
AssertElementInCollectionWithMatcher(
chrome_test_util::ButtonWithAccessibilityLabelId(label_id),
grey_not(grey_accessibilityTrait(UIAccessibilityTraitNotEnabled)));
}
void AssertButtonInCollectionDisabled(int label_id) {
AssertElementInCollectionWithMatcher(
chrome_test_util::ButtonWithAccessibilityLabelId(label_id),
grey_accessibilityTrait(UIAccessibilityTraitNotEnabled));
}
void AssertContextMenuItemEnabled(int label_id) {
AssertElementInCollectionWithMatcher(
chrome_test_util::ContextMenuItemWithAccessibilityLabelId(label_id),
grey_not(grey_accessibilityTrait(UIAccessibilityTraitNotEnabled)));
}
void AssertContextMenuItemDisabled(int label_id) {
AssertElementInCollectionWithMatcher(
chrome_test_util::ContextMenuItemWithAccessibilityLabelId(label_id),
grey_accessibilityTrait(UIAccessibilityTraitNotEnabled));
}
void AssertOverflowMenuElementEnabled(NSString* accessibilityID) {
id<GREYMatcher> enabledMatcher =
[ChromeEarlGrey isNewOverflowMenuEnabled]
// TODO(crbug.com/40210654): grey_userInteractionEnabled doesn't work
// for SwiftUI views.
? grey_not(grey_accessibilityTrait(UIAccessibilityTraitNotEnabled))
: grey_userInteractionEnabled();
[[[EarlGrey selectElementWithMatcher:grey_accessibilityID(accessibilityID)]
usingSearchAction:grey_scrollInDirection(kGREYDirectionDown,
/*amount=*/200)
onElementWithMatcher:chrome_test_util::ToolsMenuView()]
assertWithMatcher:enabledMatcher];
}
void AssertOverflowMenuElementDisabled(NSString* accessibilityID) {
[[[EarlGrey selectElementWithMatcher:grey_accessibilityID(accessibilityID)]
usingSearchAction:grey_scrollInDirection(kGREYDirectionDown,
/*amount=*/200)
onElementWithMatcher:chrome_test_util::ToolsMenuView()]
assertWithMatcher:grey_accessibilityTrait(
UIAccessibilityTraitNotEnabled)];
}
} // namespace policy