| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- /**
- * Copyright (c) 2015-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- */
- #import "XCUIApplication+FBTouchAction.h"
- #import "FBBaseActionsSynthesizer.h"
- #import "FBConfiguration.h"
- #import "FBExceptions.h"
- #import "FBLogger.h"
- #import "FBRunLoopSpinner.h"
- #import "FBW3CActionsSynthesizer.h"
- #import "FBXCTestDaemonsProxy.h"
- #import "XCEventGenerator.h"
- #import "XCUIElement+FBUtilities.h"
- #if !TARGET_OS_TV
- @implementation XCUIApplication (FBTouchAction)
- + (BOOL)handleEventSynthesWithError:(NSError *)error
- {
- if ([error.localizedDescription containsString:@"not visible"]) {
- [[NSException exceptionWithName:FBElementNotVisibleException
- reason:error.localizedDescription
- userInfo:error.userInfo] raise];
- }
- return NO;
- }
- - (BOOL)fb_performActionsWithSynthesizerType:(Class)synthesizerType
- actions:(NSArray *)actions
- elementCache:(FBElementCache *)elementCache
- error:(NSError **)error
- {
- FBBaseActionsSynthesizer *synthesizer = [[synthesizerType alloc] initWithActions:actions
- forApplication:self
- elementCache:elementCache
- error:error];
- if (nil == synthesizer) {
- return NO;
- }
- XCSynthesizedEventRecord *eventRecord = [synthesizer synthesizeWithError:error];
- if (nil == eventRecord) {
- return [self.class handleEventSynthesWithError:*error];
- }
- return [self fb_synthesizeEvent:eventRecord error:error];
- }
- - (BOOL)fb_performW3CActions:(NSArray *)actions
- elementCache:(FBElementCache *)elementCache
- error:(NSError **)error
- {
- if (![self fb_performActionsWithSynthesizerType:FBW3CActionsSynthesizer.class
- actions:actions
- elementCache:elementCache
- error:error]) {
- return NO;
- }
- [self fb_waitUntilStableWithTimeout:FBConfiguration.animationCoolOffTimeout];
- return YES;
- }
- - (BOOL)fb_synthesizeEvent:(XCSynthesizedEventRecord *)event error:(NSError *__autoreleasing*)error
- {
- return [FBXCTestDaemonsProxy synthesizeEventWithRecord:event error:error];
- }
- @end
- #endif
|