public function __construct(Manager $manager, array $config) { parent::__construct($manager, $config); $this->dialogs = Manager::readConfig($config, self::CFG_ERROR_DIALOGS); $this->loading = Manager::readConfig($config, self::CFG_LOADING_ICON); $this->interval = intval(Manager::readConfig($config, self::CFG_CHECK_INTERVAL, self::DEFAULT_INTERVAL)); $this->timeout = intval(Manager::readConfig($config, self::CFG_TIMEOUT, self::DEFAULT_TIMEOUT)); if (!is_array($this->dialogs)) { throw new \InvalidArgumentException('Dialogs is not an array'); } array_walk($this->dialogs, [__CLASS__, 'assertDialogRule']); Screen::assertRules($this->loading); if ($this->interval <= 0) { $this->interval = self::DEFAULT_INTERVAL; $this->logger->warning('%s: Interval is not positive integer, use default value %u.', [__CLASS__, self::DEFAULT_INTERVAL]); } $this->delayOffset = intval($this->delay * 0.15); if ($this->timeout < $this->interval * 3) { $this->timeout = $this->interval * 3; $this->logger->warning('%s: Timeout is not science, use minimum value %u.', [__CLASS__, $this->timeout]); } $this->screen = Screen::instance($manager, $this->app); $this->delay = Delay::instance($manager, $this->app); $this->input = Input::instance($manager, $this->app); }
public function run(array $context = []) { $rectangles = Manager::readConfig($context, self::CFG_RECTANGLES); if (!is_array($rectangles) || ($count = count($rectangles)) === 0) { return Manager::RET_LOOP; } $delay = (int) Manager::readConfig($context, self::CFG_DELAY, self::DEFAULT_DELAY); if ($delay <= 0) { $delay = self::DEFAULT_DELAY; $this->logger->warning('%s: delay milliseconds should be positive integer. Use default value %u.', [__CLASS__, $delay]); } $delayOffset = intval($delay / 10); $this->logger->info('Tap screen for %u point(s) with delay %u-%u ms.', [$count, $delay, $delayOffset]); foreach ($rectangles as $rectangle) { $this->input->tapInRect($rectangle); $this->delay->delayOffset($delay, $delayOffset); } return Manager::RET_LOOP; }
public function __construct(Manager $manager, array $config) { parent::__construct($manager, $config); $config = $config + $manager->getBaseComponentConfig($this->app); $this->package = Manager::readConfig($config, self::CFG_PACKAGE_NAME); $this->adb = ADB::instance($manager, $this->app); $this->detector = LoadingDetection::instance($manager, $this->app); $this->screen = Screen::instance($manager, $this->app); $this->input = Input::instance($manager, $this->app); }