<?xml version="1.0" encoding="UTF-8"?>
<protocol name="weston_test">

  <copyright>
    Copyright © 2012 Intel Corporation

    Permission is hereby granted, free of charge, to any person obtaining a
    copy of this software and associated documentation files (the "Software"),
    to deal in the Software without restriction, including without limitation
    the rights to use, copy, modify, merge, publish, distribute, sublicense,
    and/or sell copies of the Software, and to permit persons to whom the
    Software is furnished to do so, subject to the following conditions:

    The above copyright notice and this permission notice (including the next
    paragraph) shall be included in all copies or substantial portions of the
    Software.

    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
    THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
    FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
    DEALINGS IN THE SOFTWARE.
  </copyright>

  <interface name="weston_test" version="1">
    <description summary="weston internal testing">
      Internal testing facilities for the weston compositor.

      It can't be stressed enough that these should never ever be used
      outside of running weston's tests.  The weston-test.so module should
      never be installed.

      These requests may allow clients to do very bad things.
    </description>
    <request name="move_surface">
      <arg name="surface" type="object" interface="wl_surface"/>
      <arg name="x" type="int"/>
      <arg name="y" type="int"/>
    </request>
    <request name="move_pointer">
      <arg name="x" type="int"/>
      <arg name="y" type="int"/>
    </request>
    <request name="send_button">
      <arg name="button" type="int"/>
      <arg name="state" type="uint"/>
    </request>
    <request name="activate_surface">
      <arg name="surface" type="object" interface="wl_surface" allow-null="true"/>
    </request>
    <request name="send_key">
      <arg name="key" type="uint"/>
      <arg name="state" type="uint"/>
    </request>
    <request name="device_release">
      <arg name="device" type="string"/>
    </request>
    <request name="device_add">
      <arg name="device" type="string"/>
    </request>
    <event name="pointer_position">
      <arg name="x" type="fixed"/>
      <arg name="y" type="fixed"/>
    </event>
    <request name="get_n_egl_buffers">
      <!-- causes a n_egl_buffers event to be sent which reports how many
           buffer objects are live for the client -->
    </request>
    <event name="n_egl_buffers">
      <arg name="n" type="uint"/>
    </event>
    <request name="capture_screenshot">
      <description summary="records current screen image">
        Records an image of what is currently displayed on a given
        display output, returning the image as an event.
      </description>
      <arg name="output" type="object" interface="wl_output"
           summary="output to capture from"/>
      <arg name="buffer" type="object" interface="wl_buffer"
           summary="buffer for returning screenshots to the test client"/>
    </request>
    <event name="capture_screenshot_done">
	  <description summary="screenshot capture is done">
		The capture_screenshot_done signal is sent when a screenshot has been copied into the
		provided buffer.
	  </description>
    </event>
  </interface>

  <interface name="weston_test_runner" version="1">
    <description summary="weston internal testing">
      This is a global singleton interface for Weston internal tests.

      This interface allows a test client to trigger compositor-side
      test procedures. This is useful for cases, where the actual tests
      are in compositor plugins, but they also require the presence of
      a particular client.

      This interface is implemented by the compositor plugins containing
      the testing code.

      A test client starts a test with the "run" request. It must not send
      another "run" request until receiving the "finished" event. If the
      compositor-side test succeeds, the "finished" event is sent. If the
      compositor-side test fails, the compositor should send the protocol
      error "test_failed", but it may also exit with an error (e.g. SEGV).

      Unknown test name will raise "unknown_test" protocol error.
    </description>

    <enum name="error">
      <entry name="test_failed" value="0" summary="compositor test failed"/>
      <entry name="unknown_test" value="1" summary="unrecognized test name"/>
    </enum>

    <request name="destroy" type="destructor"/>

    <request name="run">
      <arg name="test_name" type="string"/>
    </request>

    <event name="finished"/>
  </interface>
</protocol>
