<?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="tv_sec_hi" type="uint"/>
      <arg name="tv_sec_lo" type="uint"/>
      <arg name="tv_nsec" type="uint"/>
      <arg name="x" type="int"/>
      <arg name="y" type="int"/>
    </request>
    <request name="send_button">
      <arg name="tv_sec_hi" type="uint"/>
      <arg name="tv_sec_lo" type="uint"/>
      <arg name="tv_nsec" type="uint"/>
      <arg name="button" type="int"/>
      <arg name="state" type="uint"/>
    </request>
    <request name="send_axis">
      <arg name="tv_sec_hi" type="uint"/>
      <arg name="tv_sec_lo" type="uint"/>
      <arg name="tv_nsec" type="uint"/>
      <arg name="axis" type="uint"/>
      <arg name="value" type="fixed"/>
    </request>
    <request name="activate_surface">
      <arg name="surface" type="object" interface="wl_surface" allow-null="true"/>
    </request>
    <request name="send_key">
      <arg name="tv_sec_hi" type="uint"/>
      <arg name="tv_sec_lo" type="uint"/>
      <arg name="tv_nsec" type="uint"/>
      <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="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>
    <request name="send_touch">
      <arg name="tv_sec_hi" type="uint"/>
      <arg name="tv_sec_lo" type="uint"/>
      <arg name="tv_nsec" type="uint"/>
      <arg name="touch_id" type="int"/>
      <arg name="x" type="fixed"/>
      <arg name="y" type="fixed"/>
      <arg name="touch_type" type="uint"/>
    </request>
  </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>
