def __attrs_post_init__(self):
        # type: () -> None
        self._screenshot_type = update_screenshot_type(
            self._screenshot_type, self._image, self._driver
        )
        position_provider = eyes_selenium_utils.get_cur_position_provider(self._driver)

        if not self._driver.is_mobile_app:
            self._frame_chain = self._driver.frame_chain.clone()
            frame_size = self.get_frame_size(position_provider)
            self._current_frame_scroll_position = eyes_selenium_utils.get_updated_scroll_position(  # noqa
                position_provider
            )
            self.updated_frame_location_in_screenshot(
                self._frame_location_in_screenshot
            )
            logger.debug("Calculating frame window...")
            self.frame_window = Region.from_(
                self._frame_location_in_screenshot, frame_size
            )
        else:
            self._frame_chain = FrameChain()
            self._current_frame_scroll_position = Point.ZERO()
            self._frame_location_in_screenshot = Point.ZERO()
            self.frame_window = Region.from_(
                self._frame_location_in_screenshot, self.image
            )
        self.frame_window = self.frame_window.intersect(Region.from_(self.image))
    def __attrs_post_init__(self):
        # type: () -> None
        self._frame_chain = self._driver.frame_chain.clone()
        self._screenshot_type = update_screenshot_type(
            self._screenshot_type, self._image, self._driver
        )
        cur_frame_position_provider = self._driver.eyes.current_frame_position_provider
        if cur_frame_position_provider:
            position_provider = cur_frame_position_provider
        else:
            position_provider = self._driver.eyes.position_provider

        if self._current_frame_scroll_position is None:
            self._current_frame_scroll_position = get_updated_scroll_position(
                position_provider
            )
        self._frame_location_in_screenshot = self.get_updated_frame_location_in_screenshot(
            self._frame_location_in_screenshot
        )
        logger.debug("Calculating frame window...")

        if self.frame_window is None:
            frame_size = self.get_frame_size(position_provider)
            self.frame_window = Region.from_location_size(
                self._frame_location_in_screenshot, frame_size
            )
            self.frame_window.intersect(
                Region(0, 0, width=self.image.width, height=self.image.height)
            )
def cut_to_viewport_size_if_required(driver, image):
    # type: (EyesWebDriver, Image) -> Image
    # Some browsers return always full page screenshot (IE).
    # So we cut such images to viewport size
    position_provider = get_cur_position_provider(driver)
    curr_frame_scroll = get_updated_scroll_position(position_provider)
    screenshot_type = update_screenshot_type(None, image, driver)
    if screenshot_type != ScreenshotType.VIEWPORT:
        viewport_size = driver.eyes.viewport_size
        image = image_utils.crop_image(
            image,
            region_to_crop=Region(
                top=curr_frame_scroll.x,
                left=0,
                height=viewport_size["height"],
                width=viewport_size["width"],
            ),
        )
    return image