<?php
// Copyright 2004-present Facebook. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

namespace Facebook\WebDriver;

/**
 * Used to locate a given frame or window.
 */
interface WebDriverTargetLocator
{
    /**
     * Switch to the main document if the page contains iframes. Otherwise, switch
     * to the first frame on the page.
     *
     * @return WebDriver The driver focused on the top window or the first frame.
     */
    public function defaultContent();

    /**
     * Switch to the iframe by its id or name.
     *
     * @param WebDriverElement|string $frame The WebDriverElement,
     *                                       the id or the name of the frame.
     * @return WebDriver The driver focused on the given frame.
     */
    public function frame($frame);

    /**
     * Switch the focus to another window by its handle.
     *
     * @param string $handle The handle of the window to be focused on.
     * @return WebDriver The driver focused on the given window.
     * @see WebDriver::getWindowHandles
     */
    public function window($handle);

    /**
     * Switch to the currently active modal dialog for this particular driver
     * instance.
     *
     * @return WebDriverAlert
     */
    public function alert();

    /**
     * Switches to the element that currently has focus within the document
     * currently "switched to", or the body element if this cannot be detected.
     *
     * @return WebDriverElement
     */
    public function activeElement();
}
