add the new pointer extension protocol

This is a manual cherry-pick from
Idd31441f0ce713f3d2300643c5dc950d10a563ca

Bug: 70666810, 80430459
Test: manually done
Change-Id: Iab8902ba3e0a591f007bc0df2d7abefeecb0caec
diff --git a/chromium.org/unstable/cursor-shapes/README b/chromium.org/unstable/cursor-shapes/README
new file mode 100644
index 0000000..d18a72a
--- /dev/null
+++ b/chromium.org/unstable/cursor-shapes/README
@@ -0,0 +1,4 @@
+Cursor shapes protocol
+
+Maintainers:
+Jun Mukai <mukai@chromium.org>
diff --git a/chromium.org/unstable/cursor-shapes/cursor-shapes-unstable-v1.xml b/chromium.org/unstable/cursor-shapes/cursor-shapes-unstable-v1.xml
new file mode 100644
index 0000000..f94a6b4
--- /dev/null
+++ b/chromium.org/unstable/cursor-shapes/cursor-shapes-unstable-v1.xml
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<protocol name="cursor_shapes_v1">
+
+  <copyright>
+    Copyright 2018 The Chromium Authors.
+
+    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="zcr_cursor_shapes_v1" version="1">
+    <description summary="Allows to set the cursor shape">
+      Allows to set the semantic cursor shape rather than a surface for a
+      pointer cursor.
+
+      Warning! The protocol described in this file is experimental and
+      backward incompatible changes may be made. Backward compatible changes
+      may be added together with the corresponding uinterface version bump.
+      Backward incompatible changes are done by bumping the version number in
+      the protocol and uinterface names and resetting the interface version.
+      Once the protocol is to be declared stable, the 'z' prefix and the
+      version number in the protocol and interface names are removed and the
+      interface version number is reset.
+    </description>
+
+    <enum name="error">
+      <entry name="invalid_shape" value="0"
+             summary="the specified shape value is invalid"/>
+    </enum>
+
+    <enum name="cursor_shape_type">
+      <description summary="the type of cursor shape"/>
+      <entry name="pointer" value="0"/>
+      <entry name="cross" value="1"/>
+      <entry name="hand" value="2"/>
+      <entry name="ibeam" value="3"/>
+      <entry name="wait" value="4"/>
+      <entry name="help" value="5"/>
+      <entry name="east_resize" value="6"/>
+      <entry name="north_resize" value="7"/>
+      <entry name="north_east_resize" value="8"/>
+      <entry name="north_west_resize" value="9"/>
+      <entry name="south_resize" value="10"/>
+      <entry name="south_east_resize" value="11"/>
+      <entry name="south_west_resize" value="12"/>
+      <entry name="west_resize" value="13"/>
+      <entry name="north_south_resize" value="14"/>
+      <entry name="east_west_resize" value="15"/>
+      <entry name="north_east_south_west_resize" value="16"/>
+      <entry name="north_west_south_east_resize" value="17"/>
+      <entry name="column_resize" value="18"/>
+      <entry name="row_resize" value="19"/>
+      <entry name="middle_panning" value="20"/>
+      <entry name="east_panning" value="21"/>
+      <entry name="north_panning" value="22"/>
+      <entry name="north_east_panning" value="23"/>
+      <entry name="north_west_panning" value="24"/>
+      <entry name="south_panning" value="25"/>
+      <entry name="south_east_panning" value="26"/>
+      <entry name="south_west_panning" value="27"/>
+      <entry name="west_panning" value="28"/>
+      <entry name="move" value="29"/>
+      <entry name="vertical_text" value="30"/>
+      <entry name="cell" value="31"/>
+      <entry name="context_menu" value="32"/>
+      <entry name="alias" value="33"/>
+      <entry name="progress" value="34"/>
+      <entry name="no_drop" value="35"/>
+      <entry name="copy" value="36"/>
+      <entry name="none" value="37"/>
+      <entry name="not_allowed" value="38"/>
+      <entry name="zoom_in" value="39"/>
+      <entry name="zoom_out" value="40"/>
+      <entry name="grab" value="41"/>
+      <entry name="grabbing" value="42"/>
+      <entry name="dnd_none" value="43"/>
+      <entry name="dnd_move" value="44"/>
+      <entry name="dnd_copy" value="45"/>
+      <entry name="dnd_link" value="46"/>
+    </enum>
+
+    <request name="set_cursor_shape">
+      <description summary="set pointer cursor to the shape">
+        Sets the pointer cursor to the specified shape. The server will change
+        the cursor graphics based on the specified shape and its graphic assets
+        and system condition.
+
+        The "shape" argument needs to be one of the values in cursor_shape_type
+        enum. Otherwise invalid_shape error is raised.
+
+        This is similar to wl_pointer::set_cursor request, but this accepts a
+        shape instead of contents in the form of a surface.
+
+        The client which do not know this protocol should work as-is, so
+        wl_pointer::set_cursor will change the cursor graphics even when it's
+        combined with this request; and another invocation of set_cursor_shape
+        will change the cursor shape again. This means the last invoked one will
+        be used for the actual cursor.
+      </description>
+      <arg name="pointer" type="object" interface="wl_pointer"/>
+      <arg name="shape" type="int"/>
+    </request>
+  </interface>
+</protocol>