Update protocol descriptions

Change-Id: Iad20015c34c789b99c8ed85d839756beed2c0546
diff --git a/protocol/input-method.xml b/protocol/input-method.xml
index d397de9..c4ae5c4 100644
--- a/protocol/input-method.xml
+++ b/protocol/input-method.xml
@@ -2,6 +2,7 @@
 <protocol name="input_method">
   <copyright>
     Copyright © 2012 Intel Corporation
+    Copyright © 2013-2019 LG Electronics, Inc.
 
     Permission to use, copy, modify, distribute, and sell this
     software and its documentation for any purpose is hereby granted
@@ -25,7 +26,6 @@
     THIS SOFTWARE.
   </copyright>
 
-
   <interface name="input_method_context" version="1">
     <description summary="input method context">
       Corresponds to a text model on input method side. An input method context
@@ -34,28 +34,43 @@
       Input method contexts do not keep state after deactivation and should be
       destroyed after deactivation is handled.
     </description>
-    <request name="destroy" type="destructor"/>
+
+    <request name="destroy" type="destructor">
+      <description summary="destroy object">
+        Destroys the input method context object.
+      </description>
+    </request>
+
     <request name="commit_string">
       <description summary="commit string">
-        Send the commit string text to the applications text model.
+        Sends the commit string text to the applications text model.
       </description>
       <arg name="serial" type="uint"/>
       <arg name="text" type="string"/>
     </request>
+
     <request name="preedit_string">
       <description summary="pre-edit string">
-        Send the pre-edit string text to the applications text model.
+        Sends the pre-edit string text to the applications text model.
       </description>
       <arg name="serial" type="uint"/>
       <arg name="text" type="string"/>
       <arg name="commit" type="string"/>
     </request>
+
     <request name="preedit_styling">
+      <description summary="pre-edit styling">
+        Sets styling information on composing text. The style is applied for
+        length (in bytes) characters from index relative to the beginning of
+        the composing text (as byte index). Multiple styles can be applied
+        to a composing text.
+      </description>
       <arg name="serial" type="uint"/>
       <arg name="index" type="uint"/>
       <arg name="length" type="uint"/>
       <arg name="style" type="uint"/>
     </request>
+
     <request name="preedit_cursor">
       <description summary="pre-edit cursor">
         Sets the cursor position inside the composing text (as byte index)
@@ -64,22 +79,39 @@
       <arg name="serial" type="uint"/>
       <arg name="index" type="int"/>
     </request>
+
     <request name="delete_surrounding_text">
+      <description summary="delete surrounding text">
+        Deletes the surrounding text.
+      </description>
       <arg name="serial" type="uint"/>
       <arg name="index" type="int"/>
       <arg name="length" type="uint"/>
     </request>
+
     <request name="cursor_position">
+      <description summary="set cursor to new position">
+        Sets the cursor or anchor position.
+
+        Not implemented.
+      </description>
       <arg name="serial" type="uint"/>
       <arg name="index" type="int"/>
       <arg name="anchor" type="int"/>
     </request>
+
     <request name="modifiers_map">
+      <description summary="modifiers map">
+        Transfers an array of 0-terminated modifiers names. The position in
+        the array is the index of the modifier as used in the modifiers
+        bitmask in the keysym event.
+      </description>
       <arg name="map" type="array"/>
     </request>
+
     <request name="keysym">
       <description summary="keysym">
-        Notify when a key event was sent. Key events should not be used
+        Notifies when a key event was sent. Key events should not be used
         for normal text input operations, which should be done with
         commit_string, delete_surrounfing_text, etc. The key event follows
         the wl_keyboard key event convention. State is a XKB keysym, state a
@@ -91,28 +123,44 @@
       <arg name="state" type="uint"/>
       <arg name="modifiers" type="uint"/>
     </request>
+
     <request name="grab_keyboard">
       <description summary="grab hardware keyboard">
         Allows an input method to receive hardware keyboard input and process
-        key events to generate text events (with pre-edit) over the. This allows
-        input methods which compose multiple key events for inputting text
-        like it is done for CJK languages.
+        key events to generate text events (with pre-edit) over the wire. This
+        allows input methods which compose multiple key events for inputting
+        text like it is done for CJK languages.
       </description>
-       <arg name="keyboard" type="new_id" interface="wl_keyboard"/>
+      <arg name="keyboard" type="new_id" interface="wl_keyboard"/>
     </request>
+
     <request name="key">
+      <description summary="forward key event">
+        Forwards a wl_keyboard::key event to the client that was not processed
+        by the input method itself. Should be used when filtering key events
+        with grab_keyboard. The arguments should be the ones from the
+        wl_keyboard::key event.
+      </description>
       <arg name="serial" type="uint"/>
       <arg name="time" type="uint"/>
       <arg name="key" type="uint"/>
       <arg name="state" type="uint"/>
     </request>
+
     <request name="modifiers">
+      <description summary="forward modifiers event">
+        Forwards a wl_keyboard::modifiers event to the client that was not
+        processed by the input method itself.  Should be used when filtering
+        key events with grab_keyboard. The arguments should be the ones
+        from the wl_keyboard::modifiers event.
+      </description>
       <arg name="serial" type="uint"/>
       <arg name="mods_depressed" type="uint"/>
       <arg name="mods_latched" type="uint"/>
       <arg name="mods_locked" type="uint"/>
       <arg name="group" type="uint"/>
     </request>
+
     <event name="surrounding_text">
       <description summary="surrounding text event">
         The plain surrounding text around the input position. Cursor is the
@@ -124,27 +172,59 @@
       <arg name="cursor" type="uint"/>
       <arg name="anchor" type="uint"/>
     </event>
+
     <event name="reset">
+      <description summary="reset">
+        Resets the input state.
+      </description>
       <arg name="serial" type="uint"/>
     </event>
+
     <event name="content_type">
+      <description summary="set content purpose and hint">
+        Sets the content purpose and content hint.
+      </description>
       <arg name="hint" type="uint"/>
       <arg name="purpose" type="uint"/>
     </event>
+
     <event name="enter_key_type">
+      <description summary="set type of enter key">
+        Sets the type of the enter key on an input panel (virtual keyboard).
+      </description>
       <arg name="enter_key_type" type="uint"/>
     </event>
+
     <event name="invoke_action">
+      <description summary="invoke action">
+        Invokes a button action on a given position.
+
+        Not implemented.
+      </description>
       <arg name="button" type="uint"/>
       <arg name="index" type="uint"/>
     </event>
-    <event name="commit"/>
+
+    <event name="commit">
+      <description summary="commit state">
+        Requests to apply state changes sent so far.
+      </description>
+    </event>
+
     <event name="max_text_length">
+      <description summary="set max length of input field">
+        Notifies the maximum length of an input field.
+      </description>
       <arg name="length" type="uint"/>
     </event>
+
     <event name="platform_data">
+      <description summary="set platform specific data">
+        Notifies the platform specific data (text).
+      </description>
       <arg name="text" type="string"/>
     </event>
+
   </interface>
 
   <interface name="input_method" version="2">
@@ -154,6 +234,7 @@
       object per seat. On activate there is a new input method context object
       created which allows the input method to communicate with the text model.
     </description>
+
     <event name="activate">
       <description summary="activate event">
         A text model was activated. Creates an input method context object
@@ -162,6 +243,7 @@
       <arg name="id" type="new_id" interface="input_method_context"/>
       <arg name="serial" type="uint"/>
     </event>
+
     <event name="deactivate">
       <description summary="activate event">
         The text model corresponding to the context argument was deactivated.
@@ -170,21 +252,28 @@
       </description>
       <arg name="context" type="object" interface="input_method_context"/>
     </event>
+
     <event name="show_input_panel">
       <description summary="show input panel event">
-      The text model corresponding that the input panel sets showing
+        The text model corresponding that the input panel sets showing
       </description>
       <arg name="context" type="object" interface="input_method_context"/>
     </event>
+
     <event name="hide_input_panel">
       <description summary="hide input panel event">
-      The text model corresponding that the input panel sets hiding
+        The text model corresponding that the input panel sets hiding
       </description>
       <arg name="context" type="object" interface="input_method_context"/>
     </event>
+
     <request name="set_display_id">
+      <description summary="set display id">
+        Sets the id of the display corresponding.
+      </description>
       <arg name="id" type="uint" summary="display id"/>
     </request>
+
   </interface>
 
   <interface name="input_panel" version="1">
@@ -193,21 +282,32 @@
     </description>
 
     <request name="get_input_panel_surface">
+      <description summary="get input panel surface">
+        Returns the surface of the corresponding input panel.
+      </description>
       <arg name="id" type="new_id" interface="input_panel_surface"/>
       <arg name="surface" type="object" interface="wl_surface"/>
     </request>
+
   </interface>
 
   <interface name="input_panel_surface" version="1">
     <enum name="position">
+      <description summary="position of input panel">
+        Position of an input panel.
+      </description>
       <entry name="center_bottom" value="0"/>
     </enum>
 
     <request name="set_toplevel">
       <description summary="set the surface type as a keyboard">
-	A keybaord surface is only shown, when a text model is active
+        An input panel surface is only shown, when a text model is active.
+
+        Not implemented.
       </description>
       <arg name="position" type="uint"/>
     </request>
+
   </interface>
+
 </protocol>
diff --git a/protocol/text.xml b/protocol/text.xml
index 11356f8..980d61f 100644
--- a/protocol/text.xml
+++ b/protocol/text.xml
@@ -3,6 +3,7 @@
 
   <copyright>
     Copyright © 2012 Intel Corporation
+    Copyright © 2013-2019 LG Electronics, Inc.
 
     Permission to use, copy, modify, distribute, and sell this
     software and its documentation for any purpose is hereby granted
@@ -37,6 +38,7 @@
       removes the need for applications to directly process hardware key events
       and compose text out of them.
     </description>
+
     <request name="set_surrounding_text">
       <description summary="sets the surrounding text">
         Sets the plain surrounding text around the input position. Cursor is the
@@ -48,6 +50,7 @@
       <arg name="cursor" type="uint"/>
       <arg name="anchor" type="uint"/>
     </request>
+
     <request name="activate">
       <description summary="request activation">
         Requests the model to be activated (typically when the text entry gets
@@ -60,6 +63,7 @@
       <arg name="seat" type="object" interface="wl_seat"/>
       <arg name="surface" type="object" interface="wl_surface"/>
     </request>
+
     <request name="deactivate">
       <description summary="request deactivation">
         Requests the model to be deactivated (typically when the text entry
@@ -68,23 +72,33 @@
       </description>
       <arg name="seat" type="object" interface="wl_seat"/>
     </request>
+
     <request name="reset">
       <description summary="reset">
         Should be called by an editor widget when the input state should
-        be reseted, for example after the text was changed outside of the
+        be reset, for example after the text was changed outside of the
         normal input method flow.
       </description>
       <arg name="serial" type="uint"/>
     </request>
+
     <request name="set_cursor_rectangle">
+      <description summary="set_cursor_rectangle">
+        Sets a rectangle for the cursor with x, y, width and height in surface
+        local coordinates.
+
+        Not implemented.
+      </description>
       <arg name="x" type="int"/>
       <arg name="y" type="int"/>
       <arg name="width" type="int"/>
       <arg name="height" type="int"/>
     </request>
+
     <enum name="content_hint">
       <description summary="content hint">
-        Content hint is a bitmask to allow to modify the behavior of the text input
+        Content hint is a bitmask to allow to modify the behavior of the text
+        input.
       </description>
       <entry name="none" value="0x0" summary="no special behaviour"/>
       <entry name="default" value="0x7" summary="auto completion, correction and capitalization"/>
@@ -100,12 +114,13 @@
       <entry name="latin" value="0x100" summary="just latin characters should be entered"/>
       <entry name="multiline" value="0x200" summary="the text input is multiline"/>
     </enum>
+
     <enum name="content_purpose">
       <description summary="content purpose">
         The content purpose allows to specify the primary purpose of a text input.
 
-	This allows an input method to show special purpose input panels with extra 
-	characters or to disallow some characters.
+        This allows an input method to show special purpose input panels with extra
+        characters or to disallow some characters.
       </description>
       <entry name="normal" value="0" summary="default input, allowing all characters"/>
       <entry name="alpha" value="1" summary="allow only alphabetic characters"/>
@@ -121,6 +136,7 @@
       <entry name="datetime" value="11" summary="input a date and time"/>
       <entry name="terminal" value="12" summary="input for a terminal"/>
     </enum>
+
     <request name="set_content_type">
       <description summary="set content purpose and hint">
         Sets the content purpose and content hint. While the purpose is the
@@ -137,8 +153,9 @@
 
     <enum name="enter_key_type">
       <description summary="enter key type">
-          The enter key type can be used to alter the appearance of the Enter key on an on screen keyboard.
-    </description>
+        The enter key type can be used to alter the appearance of the enter key
+        on an input panel (virtual keyboard).
+      </description>
       <entry name="default" value="0" summary="the default Enter key"/>
       <entry name="return" value="1" summary="show a Return button that inserts a new line"/>
       <entry name="done" value="2" summary="show a Done button"/>
@@ -148,38 +165,59 @@
       <entry name="next" value="6" summary="show a Next button"/>
       <entry name="previous" value="7" summary="show a Previous button"/>
     </enum>
+
     <request name="set_enter_key_type">
       <description summary="set type of enter key">
-        Set the type of enter.
+        Sets the type of the enter key on an input panel (virtual keyboard).
       </description>
       <arg name="enter_key_type" type="uint"/>
     </request>
 
     <request name="invoke_action">
+      <description summary="invoke action">
+        Invokes a button action on a given position.
+
+        Not implemented.
+      </description>
       <arg name="button" type="uint"/>
       <arg name="index" type="uint"/>
     </request>
+
     <request name="commit">
+      <description summary="commit state">
+        Requests to apply state changes sent so far.
+      </description>
     </request>
+
     <request name="set_max_text_length">
+      <description summary="set max length of input field">
+        Sets the maximum length of an input field.
+      </description>
       <arg name="length" type="uint"/>
     </request>
+
     <request name="set_platform_data">
+      <description summary="set platform specific data">
+        Sets the platform specific data (text).
+      </description>
       <arg name="text" type="string"/>
     </request>
+
     <request name="show_input_panel">
       <description summary="show input panels">
         Requests input panels (virtual keyboard) to show.
       </description>
     </request>
+
     <request name="hide_input_panel">
       <description summary="hide input panels">
         Requests input panels (virtual keyboard) to hide.
       </description>
     </request>
+
     <event name="commit_string">
-      <description summary="commit">
-        Notify when text should be inserted into the editor widget. The text
+      <description summary="text to commit">
+        Notifies when text should be inserted into the editor widget. The text
         to commit could be either just a single character after a key press
         or the result of some composing (pre-edit). It also sets the new
         cursor position (as byte index) relative to the inserted text.
@@ -189,9 +227,10 @@
       <arg name="serial" type="uint"/>
       <arg name="text" type="string"/>
     </event>
+
     <event name="preedit_string">
-      <description summary="pre-edit">
-        Notify when a new composing text (pre-edit) should be set around the
+      <description summary="pre-edit text">
+        Notifies when a new composing text (pre-edit) should be set around the
         current cursor position. Any previously set composing text should
         be removed.
 
@@ -202,9 +241,10 @@
       <arg name="text" type="string"/>
       <arg name="commit" type="string"/>
     </event>
+
     <event name="delete_surrounding_text">
       <description summary="delete surrounding text">
-        Notify when the text around the current cursor position should be
+        Notifies when the text around the current cursor position should be
         deleted. Index is relative to the current cursor (as byte index).
         Length is the length of deleted text (as bytes).
       </description>
@@ -212,16 +252,23 @@
       <arg name="index" type="int"/>
       <arg name="length" type="uint"/>
     </event>
+
     <event name="cursor_position">
       <description summary="set cursor to new position">
-        Notify when the cursor or anchor position should be modified. It
+        Notifies when the cursor or anchor position should be modified. It
         should take effect after the next commit_string event.
+
+        Not implemented.
       </description>
       <arg name="serial" type="uint"/>
       <arg name="index" type="int"/>
       <arg name="anchor" type="int"/>
     </event>
+
     <enum name="preedit_style">
+      <description summary="pre-edit style">
+        The style for a composing text text.
+      </description>
       <entry name="default" value="1"/>
       <entry name="active" value="2"/>
       <entry name="inactive" value="3"/>
@@ -230,6 +277,7 @@
       <entry name="selection" value="6"/>
       <entry name="incorrect" value="7"/>
     </enum>
+
     <event name="preedit_styling">
       <description summary="pre-edit styling">
         Sets styling information on composing text. The style is applied for
@@ -245,6 +293,7 @@
       <arg name="length" type="uint"/>
       <arg name="style" type="uint"/>
     </event>
+
     <event name="preedit_cursor">
       <description summary="pre-edit cursor">
         Sets the cursor position inside the composing text (as byte index)
@@ -256,19 +305,21 @@
       <arg name="serial" type="uint"/>
       <arg name="index" type="int"/>
     </event>
+
     <event name="modifiers_map">
       <description summary="modifiers map">
-        Transfer an array of 0-terminated modifiers names. The position in
+        Transfers an array of 0-terminated modifiers names. The position in
         the array is the index of the modifier as used in the modifiers
         bitmask in the keysym event.
       </description>
       <arg name="map" type="array"/>
     </event>
+
     <event name="keysym">
       <description summary="keysym">
-        Notify when a key event was sent. Key events should not be used
+        Notifies when a key event was sent. Key events should not be used
         for normal text input operations, which should be done with
-        commit_string, delete_surrounfing_text, etc. The key event follows
+        commit_string, delete_surrounding_text, etc. The key event follows
         the wl_keyboard key event convention. State is a XKB keysym, state a
         wl_keyboard key_state. Modifiers are a mask for effective modifiers
         (where the modfier indices are set by the modifiers_map event)
@@ -279,30 +330,35 @@
       <arg name="state" type="uint"/>
       <arg name="modifiers" type="uint"/>
     </event>
+
     <event name="enter">
       <description summary="enter event">
-        Notify the model when it is activated. Typically in response to an
-        activate request.
+        Notifies the model when it is activated on a given surface. Typically in
+        response to an activate request.
       </description>
       <arg name="surface" type="object" interface="wl_surface"/>
     </event>
+
     <event name="leave">
       <description summary="leave event">
-        Notify the model when it is deactivated. Either in response to a
+        Notifies the model when it is deactivated. Either in response to a
         deactivate request or when the assigned surface lost focus or was
         destroyed.
       </description>
     </event>
+
     <event name="input_panel_state">
       <description summary="state of the input panel">
-        Notify when the visibility state of the input panel changed.
+        Notifies when the visibility state of the input panel changed. The state
+        is either 0 (hidden) or 1 (shown).
       </description>
       <arg name="state" type="uint"/>
     </event>
 
     <event name="input_panel_rect">
       <description summary="rect of the input panel">
-        Notify when the geometry of the input panel changes.
+        Notifies when the geometry of the input panel changes in surface local
+        coordinates.
       </description>
       <arg name="x" type="int"/>
       <arg name="y" type="int"/>
@@ -312,7 +368,8 @@
 
     <request name="set_input_panel_rect">
       <description summary="set rect of the input panel">
-        Request the geometry of the input panel to change.
+        Requests the geometry of the input panel to change. The geometry should
+        be in surface local coordinates.
       </description>
       <arg name="x" type="int"/>
       <arg name="y" type="int"/>
@@ -322,20 +379,24 @@
 
     <request name="reset_input_panel_rect">
       <description summary="reset rect of the input panel">
-        Reset the geometry of the input panel requested.
+        Resets the geometry of the input panel requested.
       </description>
     </request>
+
   </interface>
 
   <interface name="text_model_factory" version="1">
     <description summary="text model factory">
       A factory for text models. This object is a singleton global.
     </description>
+
     <request name="create_text_model">
       <description summary="create text model">
         Creates a new text model object.
       </description>
       <arg name="id" type="new_id" interface="text_model"/>
     </request>
+
   </interface>
+
 </protocol>
diff --git a/protocol/webos-extension.xml b/protocol/webos-extension.xml
index d2edeaf..d01065f 100644
--- a/protocol/webos-extension.xml
+++ b/protocol/webos-extension.xml
@@ -1,94 +1,108 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <protocol name="webos-extension">
 
-    <copyright>
-      Copyright (c) 2013 LG Electronics, Inc.
+  <copyright>
+    Copyright (c) 2013-2019 LG Electronics, Inc.
 
-      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
+    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
+    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.
-    </copyright>
+    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.
 
+    SPDX-License-Identifier: Apache-2.0
+  </copyright>
 
-    <interface name="wl_webos_xinput" version="1">
-        <description summary="interface for adding extended inputs">
-            An extended input is something other than keyboard, mouse
-            or remote.
-        </description>
+  <interface name="wl_webos_xinput" version="1">
+    <description summary="interface for adding extended inputs">
+      xinput stands for an extended input which allows a client
+      to pass an input event to another client.
+    </description>
 
-        <enum name="keysym_type">
-            <description summary="The type for the symbol">
-                Describes the type of the symbol. The compositor will
-                do the necessary conversion before sending it the the
-                current fullscreen surface
-            </description>
-            <entry name="qt" value="1"/>
-            <entry name="native" value="2"/>
-        </enum>
+    <enum name="keysym_type">
+      <description summary="the type for the symbol">
+        Describes the type of the symbol. The compositor will
+        do the necessary conversion before sending it the the
+        current fullscreen surface
+      </description>
+      <entry name="qt" value="1"/>
+      <entry name="native" value="2"/>
+    </enum>
 
-        <enum name="event_type">
-            <description summary="The type of the event">
-                Describes the type of the event. "press_and_release"
-                means the compositor will send a released event after
-                a pressed event automatically.
-            </description>
-            <entry name="press_and_release" value="0"/>
-            <entry name="press" value="1"/>
-            <entry name="release" value="2"/>
-        </enum>
+    <enum name="event_type">
+      <description summary="the type of the event">
+        Describes the type of the event. "press_and_release"
+        means the compositor will send a released event after
+        a pressed event automatically.
+      </description>
+      <entry name="press_and_release" value="0"/>
+      <entry name="press" value="1"/>
+      <entry name="release" value="2"/>
+    </enum>
 
-        <request name="invoke_action">
-            <description summary="Invokes an action">
-                The keysym is value is described by the type argument
-            </description>
-            <arg name="keysym" type="uint"/>
-            <arg name="symbol_type" type="uint"/>
-            <arg name="event_type" type="uint"/>
-        </request>
+    <request name="invoke_action">
+      <description summary="invokes an action">
+        Requests to invoke an action by passing a keysym.
+      </description>
+      <arg name="keysym" type="uint"/>
+      <arg name="symbol_type" type="uint"/>
+      <arg name="event_type" type="uint"/>
+    </request>
 
-        <event name="activation_request">
-            <description summary="Requests activation">
-                Requests that the method matching the argument string
-                is activated. The method is responsible for replying
-                back with the activated request. Currently supported
-                methods are: "voice", "screen_remote", "hot_key_XXXX"
+    <event name="activation_request">
+      <description summary="requests activation">
+        Requests that the method matching the argument string
+        is activated. The method is responsible for replying
+        back with the activated request. Currently supported
+        methods are: "voice", "screen_remote", "hot_key_XXXX"
 
-                NOTE: All the registered methods will get the activation
-                request and thus the client is responsible for performing
-                filtering and activating itself when it knows that it can
-                handle the type.
-            </description>
+        NOTE: All the registered methods will get the activation
+        request and thus the client is responsible for performing
+        filtering and activating itself when it knows that it can
+        handle the type.
+      </description>
+      <arg name="type" type="string"/>
+    </event>
 
-            <arg name="type" type="string"/>
-        </event>
+    <event name="deactivated">
+      <description summary="request to deactivate">
+        Requests the client to deactivate this input.
+      </description>
+    </event>
 
-        <event name="deactivated">
-        </event>
+    <request name="activated">
+      <description summary="activated">
+        Notifies the compositor this input has been activated.
+      </description>
+      <arg name="type" type="string"/>
+    </request>
 
-        <request name="activated">
-            <description summary="This input has been activated"/>
-            <arg name="type" type="string"/>
-        </request>
+    <request name="deactivated">
+      <description summary="deactivated">
+        Notifies the compositor this input has been deactivated.
+      </description>
+    </request>
 
-        <request name="deactivated">
-            <description summary="This input has been deactivated"/>
-        </request>
+  </interface>
 
-    </interface>
+  <interface name="wl_webos_xinput_extension" version="1">
+    <description summary="interface for registering a new xinput extension">
+      This interface is used for registering a new xinput extension.
+    </description>
 
-    <interface name="wl_webos_xinput_extension" version="1">
+    <request name="register_input">
+      <description summary="register input">
+        Registers a new xinput.
+      </description>
+      <arg name="id" type="new_id" interface="wl_webos_xinput"/>
+    </request>
 
-        <request name="register_input">
-            <arg name="id" type="new_id" interface="wl_webos_xinput"/>
-        </request>
+  </interface>
 
-    </interface>
 </protocol>
diff --git a/protocol/webos-foreign.xml b/protocol/webos-foreign.xml
index e131bec..ac0423d 100644
--- a/protocol/webos-foreign.xml
+++ b/protocol/webos-foreign.xml
@@ -1,107 +1,167 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <protocol name="webos_foreign">
 
-    <copyright>
-      Copyright (c) 2018-2019 LG Electronics, Inc.
+  <copyright>
+    Copyright (c) 2018-2019 LG Electronics, Inc.
 
-      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
+    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
+    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.
-    </copyright>
+    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.
 
-    <interface name="wl_webos_foreign" version="1">
-      <description summary="entry point for webos_foreign"/>
+    SPDX-License-Identifier: Apache-2.0
+  </copyright>
 
-      <request name="destroy" type="destructor"/>
+  <interface name="wl_webos_foreign" version="1">
+    <description summary="interface for handling foreign surfaces">
+      This interface defines a way to associate one or more foreign surfaces from
+      different clients or a punch-through region to a surface that acts the main
+      window.
 
-      <enum name="webos_exported_type">
-        <description summary="type of webos_exported"/>
-        <entry name="video_object" value="0" summary="exported window for video object"/>
-        <entry name="subtitle_object" value="1" summary="exported window for subtitle object"/>
-      </enum>
+      You can set a region on the main window where a foreign surface or a
+      punch-through region can be placed. It is called "exported" region or window
+      in this protocol. Then you can request the compositor to punch through that
+      region or attach another surface as an "imported" content.
+    </description>
 
-      <request name="export_element">
-        <description summary="create webos_exported"/>
-        <arg name="id" type="new_id" interface="wl_webos_exported"/>
-        <arg name="surface" type="object" interface="wl_surface"/>
-        <arg name="exported_type" type="uint"/>
-      </request>
+    <request name="destroy" type="destructor">
+      <description summary="destroy object">
+        Destroys the foreign object.
+      </description>
+    </request>
 
-      <request name="import_element">
-        <description summary="create webos_imported"/>
-        <arg name="id" type="new_id" interface="wl_webos_imported"/>
-        <arg name="window_id" type="string" summary="window_id of associated exported window assigned by compositor"/>
-        <arg name="exported_type" type="uint"/>
-      </request>
-    </interface>
+    <enum name="webos_exported_type">
+      <description summary="type of webos_exported">
+        This indicates the type of the content that the exported window can show.
+      </description>
+      <entry name="video_object" value="0" summary="exported window for video object"/>
+      <entry name="subtitle_object" value="1" summary="exported window for subtitle object"/>
+    </enum>
 
-    <interface name="wl_webos_exported" version="1">
-        <description summary="exported window"/>
+    <request name="export_element">
+      <description summary="create webos_exported">
+        Requests to create an exported window on a given surface.
+      </description>
+      <arg name="id" type="new_id" interface="wl_webos_exported"/>
+      <arg name="surface" type="object" interface="wl_surface"/>
+      <arg name="exported_type" type="uint"/>
+    </request>
 
-        <request name="destroy" type="destructor"/>
+    <request name="import_element">
+      <description summary="create webos_imported">
+        Requests an import object that can be associated with a given exported window.
+      </description>
+      <arg name="id" type="new_id" interface="wl_webos_imported"/>
+      <arg name="window_id" type="string" summary="window_id of associated exported window assigned by compositor"/>
+      <arg name="exported_type" type="uint"/>
+    </request>
 
-        <request name="set_exported_window">
-            <description summary="set window to be exported"/>
-            <arg name="source_region" type="object" interface="wl_region" summary="source region of exported window"/>
-            <arg name="destination_region" type="object" interface="wl_region" summary="destination region of exported window"/>
-        </request>
+  </interface>
 
-        <event name="window_id_assigned">
-            <description summary="window is associated with this wl_webos_exported"/>
-            <arg name="window_id" type="string" summary="window_id of associated exported window"/>
-            <arg name="exported_type" type="uint"/>
-        </event>
+  <interface name="wl_webos_exported" version="1">
+    <description summary="interface for handling exported window">
+      This interface defines operations and notifications on an exported window.
+    </description>
 
-    </interface>
+    <request name="destroy" type="destructor">
+      <description summary="destroy object">
+        Destroys the exported object.
+      </description>
+    </request>
 
-    <interface name="wl_webos_imported" version="1">
-        <description summary="imported content or punchthrough to be placed in exported window"/>
+    <request name="set_exported_window">
+      <description summary="set window to be exported">
+        Sets the exported window with source and destination regions.
+      </description>
+      <arg name="source_region" type="object" interface="wl_region" summary="source region of exported window"/>
+      <arg name="destination_region" type="object" interface="wl_region" summary="destination region of exported window"/>
+    </request>
 
-        <enum name="surface_alignment" bitfield="true">
-            <entry name="stretch" value="0"/>
-            <entry name="north" value="1"/>
-            <entry name="west" value="2"/>
-            <entry name="south" value="4"/>
-            <entry name="east" value="8"/>
-            <entry name="center" value="16"/>
-        </enum>
+    <event name="window_id_assigned">
+      <description summary="window is associated with this wl_webos_exported">
+        Notifies window_id of the exported window.
+      </description>
+      <arg name="window_id" type="string" summary="window_id of associated exported window"/>
+      <arg name="exported_type" type="uint"/>
+    </event>
 
-        <request name="set_surface_alignment">
-          <arg name="format" type="uint" enum="surface_alignment" summary="alignment the texture onto export"/>
-        </request>
+  </interface>
 
-        <request name="destroy" type="destructor"/>
+  <interface name="wl_webos_imported" version="1">
+    <description summary="interface for imported content or punchthrough region">
+      This interface defines operations and notifications on an imported object.
+    </description>
 
-        <request name="attach_punchthrough">
-            <description summary="attach punchthrough to webos_imported"/>
-        </request>
+    <enum name="surface_alignment" bitfield="true">
+      <description summary="surface alignment">
+        The alignment of an imported surface on the associated exported window.
+      </description>
+      <entry name="stretch" value="0"/>
+      <entry name="north" value="1"/>
+      <entry name="west" value="2"/>
+      <entry name="south" value="4"/>
+      <entry name="east" value="8"/>
+      <entry name="center" value="16"/>
+    </enum>
 
-        <request name="detach_punchthrough">
-            <description summary="detach punchthrough from webos_imported"/>
-        </request>
+    <request name="set_surface_alignment">
+      <description summary="set surface alignment">
+        Sets the alignment of the imported surface.
+      </description>
+      <arg name="format" type="uint" enum="surface_alignment" summary="alignment the texture onto export"/>
+    </request>
 
-        <request name="attach_surface">
-            <description summary="attach surface to webos_imported"/>
-            <arg name="surface" type="object" interface="wl_surface"/>
-        </request>
+    <request name="destroy" type="destructor">
+      <description summary="destroy object">
+        Destroys the imported object.
+      </description>
+    </request>
 
-        <request name="detach_surface">
-          <description summary="detach surface from webos_imported"/>
-          <arg name="surface" type="object" interface="wl_surface"/>
-        </request>
+    <request name="attach_punchthrough">
+      <description summary="attach punchthrough">
+        Requests a punch-through on the exporetd window associated with
+        this import object.
+      </description>
+    </request>
 
-        <event name="destination_region_changed">
-            <description summary="destination region of associated exported window has changed"/>
-            <arg name="width" type="uint" summary="destination width of exported window"/>
-            <arg name="height" type="uint" summary="destination height of exported window"/>
-        </event>
-    </interface>
+    <request name="detach_punchthrough">
+      <description summary="detach punchthrough">
+        Requests to detatch the punch-through from the exported window
+        associated with this import object.
+      </description>
+    </request>
+
+    <request name="attach_surface">
+      <description summary="attach surface">
+        Requests to attach the surface as imported to the associated
+        exported window.
+      </description>
+      <arg name="surface" type="object" interface="wl_surface"/>
+    </request>
+
+    <request name="detach_surface">
+      <description summary="detach surface">
+        Requests to detach the surface as imported from the associated
+        exported window.
+      </description>
+      <arg name="surface" type="object" interface="wl_surface"/>
+    </request>
+
+    <event name="destination_region_changed">
+      <description summary="destination region changed">
+        Notifies the change of the destination region of associated exported window.
+      </description>
+      <arg name="width" type="uint" summary="destination width of exported window"/>
+      <arg name="height" type="uint" summary="destination height of exported window"/>
+    </event>
+
+  </interface>
+
 </protocol>
diff --git a/protocol/webos-input-manager.xml b/protocol/webos-input-manager.xml
index d7a33fa..bea7f3c 100644
--- a/protocol/webos-input-manager.xml
+++ b/protocol/webos-input-manager.xml
@@ -1,137 +1,148 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <protocol name="webos_input_manager">
 
-    <copyright>
-      Copyright (c) 2014 LG Electronics, Inc.
+  <copyright>
+    Copyright (c) 2014-2019 LG Electronics, Inc.
 
-      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
+    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
+    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.
-    </copyright>
+    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.
 
-    <interface name="wl_webos_input_manager" version="1">
-        <description summary="get additional input interface">
-            wl_webos_seat has more information than wl_seat. User can get it using get_webos_seat(seat)
-        </description>
+    SPDX-License-Identifier: Apache-2.0
+  </copyright>
 
-        <event name="cursor_visibility">
-            <description summary="Current Cursor visibility">
-                If the current cursor visibility is chagned, notify it.
-            </description>
-            <arg name="visibility" type="uint" summary="boolean vaule for visibility of current cursor"/>
-            <arg name="webos_seat" type="object" interface="wl_webos_seat" allow-null="true" summary="webos_seat cursor visibility changed, if this value is Null All cursors are hidden"/>
-        </event>
+  <interface name="wl_webos_input_manager" version="1">
+    <description summary="get additional input interface">
+      wl_webos_seat has more information than wl_seat. User can get it using
+      get_webos_seat(seat).
+    </description>
 
-        <request name="set_cursor_visibility">
-            <description summary="Set cursor visibility">
-                set cursor visibility
-            </description>
-            <arg name="visibility" type="uint" summary="boolean for the cursor visibility"/>
-        </request>
+    <event name="cursor_visibility">
+      <description summary="current cursor visibility">
+        If the current cursor visibility is chagned, notify it.
+      </description>
+      <arg name="visibility" type="uint" summary="boolean vaule for visibility of current cursor"/>
+      <arg name="webos_seat" type="object" interface="wl_webos_seat" allow-null="true" summary="webos_seat cursor visibility changed, if this value is Null All cursors are hidden"/>
+    </event>
 
-        <request name="get_webos_seat">
-            <description summary="Gets the webos seat">
-                return webos_seat associated with the seat
-            </description>
-            <arg name="id" type="new_id" interface="wl_webos_seat"/>
-            <arg name="seat" type="object" interface="wl_seat"/>
-        </request>
-    </interface>
+    <request name="set_cursor_visibility">
+      <description summary="set cursor visibility">
+        Sets the cursor visibility.
+      </description>
+      <arg name="visibility" type="uint" summary="boolean for the cursor visibility"/>
+    </request>
 
-    <interface name="wl_webos_seat" version="1">
-        <description summary="Interface for additional input data such as gyroscope or accelerometer">
-            WebOS extension for sensor data. If the seat has additional sensor data, user request it using get_*.
-        </description>
+    <request name="get_webos_seat">
+      <description summary="get webos seat">
+        Returns a webos_seat associated with the seat.
+      </description>
+      <arg name="id" type="new_id" interface="wl_webos_seat"/>
+      <arg name="seat" type="object" interface="wl_seat"/>
+    </request>
 
-        <enum name="capability">
-            <description summary="webos seat capability bitmask">
-                This is a bitmask of capabilities this webos seat has; if a member is
-                set, then it is present on the seat.
-            </description>
-            <entry name="default" value="0" summary="This seat does not provide additional input"/>
-            <entry name="gyroscope" value="1" summary="This seat can provide gyroscope data, wl_webos_gyroscope"/>
-            <entry name="accelerometer" value="2" summary="This seat can provide accelerometer data, wl_webos_accelerometer"/>
-        </enum>
+  </interface>
 
-        <event name="info">
-            <description summary="The info about the seat">
-                This event will be sent immediately after the client as requested the
-                webos seat from wl_webos_input_manager.
+  <interface name="wl_webos_seat" version="1">
+    <description summary="interface for additional input data">
+      This is a webOS extension for additional input data such as gyroscope or
+      accelerometer. If the seat has additional input data, user can request it
+      using get_*.
+    </description>
 
-                The designator [0, 1, ... N] indicates if this is the primary(=0),
-                secondary, etc seat.
-            </description>
-            <arg name="id" type="uint" summary="An unique identifier for the seat"/>
-            <arg name="name" type="string" summary="A human readable name for the seat"/>
-            <arg name="designator" type="uint" summary="A value for the designation of this seat"/>
-            <arg name="capabilities" type="uint"/>
-        </event>
+    <enum name="capability">
+      <description summary="webos seat capability bitmask">
+        This is a bitmask of capabilities this webOS seat has; if a member is
+        set, then it is present on the seat.
+      </description>
+      <entry name="default" value="0" summary="this seat does not provide additional input"/>
+      <entry name="gyroscope" value="1" summary="this seat can provide gyroscope data, wl_webos_gyroscope"/>
+      <entry name="accelerometer" value="2" summary="this seat can provide accelerometer data, wl_webos_accelerometer"/>
+    </enum>
 
-        <request name="get_gyroscope">
-            <description summary="get interface for gyroscope">
-                If the seat has gyroscope sensor, user can get this interface.
-            </description>
-            <arg name="id" type="new_id" interface="wl_webos_gyroscope"/>
-        </request>
+    <event name="info">
+      <description summary="info about the seat">
+        This event will be sent immediately after the client as requested the
+        webOS seat from wl_webos_input_manager.
 
-        <request name="get_accelerometer">
-            <description summary="get interface for accelerometer">
-                If the seat has accelerometer sensor, user can get this interface.
-            </description>
-            <arg name="id" type="new_id" interface="wl_webos_accelerometer"/>
-        </request>
-    </interface>
+        The designator [0, 1, ... N] indicates if this is the primary(=0),
+        secondary, etc seat.
+      </description>
+      <arg name="id" type="uint" summary="an unique identifier for the seat"/>
+      <arg name="name" type="string" summary="a human readable name for the seat"/>
+      <arg name="designator" type="uint" summary="a value for the designation of this seat"/>
+      <arg name="capabilities" type="uint"/>
+    </event>
 
-    <interface name="wl_webos_gyroscope" version="1">
-        <description summary="Interface for gyroscope device">
-            Interface for gyroscope device
-        </description>
-        <event name="sensor_data">
-            <description summary="Sensor data from the seat">
-                The gyroscope sensor data will be delivered onlyif the client explicitly requested it
-                via "requeest_data".
-            </description>
-            <arg name="x" type="fixed" summary="Data for x-axis"/>
-            <arg name="y" type="fixed" summary="Data for y-axis"/>
-            <arg name="z" type="fixed" summary="Data for z-axis"/>
-        </event>
+    <request name="get_gyroscope">
+      <description summary="get interface for gyroscope">
+        If the seat has gyroscope sensor, user can get this interface.
+      </description>
+      <arg name="id" type="new_id" interface="wl_webos_gyroscope"/>
+    </request>
 
-        <request name="request_data">
-            <description summary="Request sensor data">
-                Enable/disable sending data for gyroscope device
-            </description>
-            <arg name="enabled" type="uint" summary="Boolean to indicate if sensor data is needed"/>
-        </request>
-    </interface>
+    <request name="get_accelerometer">
+      <description summary="get interface for accelerometer">
+        If the seat has accelerometer sensor, user can get this interface.
+      </description>
+      <arg name="id" type="new_id" interface="wl_webos_accelerometer"/>
+    </request>
 
-    <interface name="wl_webos_accelerometer" version="1">
-        <description summary="Interface for accelerometer device">
-            Interface for accelerometer device
-        </description>
-        <event name="sensor_data">
-            <description summary="Sensor data from the seat">
-                The sensor data will be delivered onlyif the client explicitly requested it
-                via "request_data".
-            </description>
-            <arg name="x" type="fixed" summary="Data for x-axis"/>
-            <arg name="y" type="fixed" summary="Data for y-axis"/>
-            <arg name="z" type="fixed" summary="Data for z-axis"/>
-        </event>
+  </interface>
 
-        <request name="request_data">
-            <description summary="Request sensor data">
-                Enable/disable sending data for accelerometer device
-            </description>
-            <arg name="enabled" type="uint" summary="Boolean to indicate if sensor data is needed"/>
-        </request>
-    </interface>
+  <interface name="wl_webos_gyroscope" version="1">
+    <description summary="interface for gyroscope device">
+      This is an interface for gyroscope device.
+    </description>
+
+    <event name="sensor_data">
+      <description summary="sensor data from the seat">
+        The gyroscope sensor data will be delivered only if the client
+        explicitly requested it via "requeest_data".
+      </description>
+      <arg name="x" type="fixed" summary="data for x-axis"/>
+      <arg name="y" type="fixed" summary="data for y-axis"/>
+      <arg name="z" type="fixed" summary="data for z-axis"/>
+    </event>
+
+    <request name="request_data">
+      <description summary="request sensor data">
+        Requests to enable/disable sending data for gyroscope device.
+      </description>
+      <arg name="enabled" type="uint" summary="boolean to indicate if sensor data is needed"/>
+    </request>
+
+  </interface>
+
+  <interface name="wl_webos_accelerometer" version="1">
+    <description summary="interface for accelerometer device">
+      This is an interface for accelerometer device.
+    </description>
+
+    <event name="sensor_data">
+      <description summary="sensor data from the seat">
+        The accelerometer sensor data will be delivered only if the client
+        explicitly requested it via "request_data".
+      </description>
+      <arg name="x" type="fixed" summary="data for x-axis"/>
+      <arg name="y" type="fixed" summary="data for y-axis"/>
+      <arg name="z" type="fixed" summary="data for z-axis"/>
+    </event>
+
+    <request name="request_data">
+      <description summary="request sensor data">
+        Requests to enable/disable sending data for accelerometer device.
+      </description>
+      <arg name="enabled" type="uint" summary="boolean to indicate if sensor data is needed"/>
+    </request>
+
+  </interface>
 
 </protocol>
diff --git a/protocol/webos-shell.xml b/protocol/webos-shell.xml
index fc149e6..b93b057 100644
--- a/protocol/webos-shell.xml
+++ b/protocol/webos-shell.xml
@@ -1,200 +1,202 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <protocol name="webos_shell">
 
-    <copyright>
-      Copyright (c) 2013-2019 LG Electronics, Inc.
+  <copyright>
+    Copyright (c) 2013-2019 LG Electronics, Inc.
 
-      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
+    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
+    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.
-    </copyright>
+    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.
 
-    <interface name="wl_webos_shell" version="1">
-        <description summary="TODO">
-            TODO
-        </description>
+    SPDX-License-Identifier: Apache-2.0
+  </copyright>
 
-        <request name="get_system_pip">
-            <description summary="Deprecated request.">
-                This request is deprecated. If you want to create a new request,
-                you can reuse this one. FYI, in that case, you also need to modify
-                get_system_pip method in luna-surfacemanager as well.
-            </description>
-        </request>
+  <interface name="wl_webos_shell" version="1">
+    <description summary="interface for webOS shell">
+      This interface provides handlings on webOS shell surfaces.
+    </description>
 
-        <request name="get_shell_surface">
-            <description summary="create a shell surface from a surface">
-                Creates an webos shell surface for an existing surface.
-            </description>
-            <arg name="id" type="new_id" interface="wl_webos_shell_surface"/>
-            <arg name="surface" type="object" interface="wl_surface"/>
-        </request>
+    <request name="get_system_pip">
+      <description summary="deprecated request.">
+        This request is deprecated. If you want to create a new request,
+        you can reuse this one. FYI, in that case, you also need to modify
+        get_system_pip method in luna-surfacemanager as well.
+      </description>
+    </request>
+
+    <request name="get_shell_surface">
+      <description summary="get a webOS shell surface">
+        Creates an webOS shell surface for an existing surface.
+      </description>
+      <arg name="id" type="new_id" interface="wl_webos_shell_surface"/>
+      <arg name="surface" type="object" interface="wl_surface"/>
+      </request>
+
     </interface>
 
     <interface name="wl_webos_shell_surface" version="1">
-        <description summary="create a webos shell surface from a surface">
-            This allows the client to associate an normal surface with a
-            shell surface. The shell surface provides webos specific functionality
-            to surfaces
+      <description summary="interface to handle webos shell surfaces">
+        This allows the client to associate an normal surface with a
+        shell surface. The shell surface provides webOS specific functionality
+        to surfaces.
+      </description>
+
+      <request name="set_location_hint">
+        <description summary="sets the preferred location hint">
+          The location hint is a guideline to the compositor where
+          to place the surface. The compositor will do its best to
+          place it there, however this is not guaranteed. Currently
+          The location hint is only applied to _WEBOS_WINDOW_TYPE_POPUP
+          and _WEBOS_WINDOW_TYPE_SYSTEM_UI surfaces.
         </description>
+        <arg name="hint" type="uint"/>
+      </request>
 
-        <request name="set_location_hint">
-            <description summary="sets the preferred location hint">
-                The location hint is a guideline to the compositor where
-                to place the surface. The compositor will do its best to
-                place it there, however this is not guaranteed. Currently
-                The location hint is only applied to _WEBOS_WINDOW_TYPE_POPUP
-                and _WEBOS_WINDOW_TYPE_SYSTEM_UI surfaces.
-            </description>
-            <arg name="hint" type="uint"/>
-        </request>
+      <enum name="location_hint">
+        <description summary="location mask for the surface">
+          Using this mask the surface can be positioned onto
+          different locations on screen. By not using absolute
+          coordinates we can create greater flexibility in the
+          compositor and the clients.
+        </description>
+        <entry name="north" value="1"/>
+        <entry name="west" value="2"/>
+        <entry name="south" value="4"/>
+        <entry name="east" value="8"/>
+        <entry name="center" value="16"/>
+      </enum>
 
-        <enum name="location_hint">
-            <description summary="location mask for the surface">
-                Using this mask the surface can be positioned onto
-                different locations on screen. By not using absolute
-                coordinates we can create greater flexibility in the
-                compositor and the clients.
-            </description>
-            <entry name="north" value="1"/>
-            <entry name="west" value="2"/>
-            <entry name="south" value="4"/>
-            <entry name="east" value="8"/>
-            <entry name="center" value="16"/>
-        </enum>
+      <enum name="state">
+        <description summary="the state of the surface">
+          The state provides info to the client on how the compositor has placed
+          the surface.
 
-        <enum name="state">
-            <description summary="The state of the surface">
-                The state provides info to the client on how the compositor has placed
-                the surface.
+          The default state will indicate to the client that it is windowed. The
+          "position_changed" event will tell the position in screen coordinates
+          when the surface is in this state.
+        </description>
+        <entry name="default" value="0"/>
+        <entry name="minimized" value="1"/>
+        <entry name="maximized" value="2"/>
+        <entry name="fullscreen" value="3"/>
+      </enum>
 
-                The default state will indicate to the client that it is windowed. The
-                "position_changed" event will tell the position in screen coordinates
-                when the surface is in this state.
-            </description>
+      <request name="set_state">
+        <description summary="sets the surface state">
+          The client requests its surface state to the compositor.
+        </description>
+        <arg name="state" type="uint"/>
+      </request>
 
-            <entry name="default" value="0"/>
-            <entry name="minimized" value="1"/>
-            <entry name="maximized" value="2"/>
-            <entry name="fullscreen" value="3"/>
-        </enum>
+      <request name="set_property">
+        <description summary="sets the surface property">
+          The client sets the surface property to the compositor. The property
+          is given by a string pair (name, value).
+        </description>
+        <arg name="name" type="string"/>
+        <arg name="value" type="string"/>
+      </request>
 
-        <request name="set_state">
-            <description summary="sets the surface state">
-                The client requests its surface state to the compositor.
-            </description>
-            <arg name="state" type="uint"/>
-        </request>
+      <enum name="webos_key">
+        <description summary="the key that the surface handles">
+          The client uses wl_webos_shell_surface.set_key_mask to notify server
+          that it will handle specific keys only.
+        </description>
+        <entry name="home" value="1"/>
+        <entry name="back" value="2"/>
+        <entry name="exit" value="4"/>
+        <entry name="navigation_left" value="8"/>
+        <entry name="navigation_right" value="16"/>
+        <entry name="navigation_up" value="32"/>
+        <entry name="navigation_down" value="64"/>
+        <entry name="navigation_ok" value="128"/>
+        <entry name="numeric_keys" value="256"/>
+        <entry name="remote_color_red" value="512"/>
+        <entry name="remote_color_green" value="1024"/>
+        <entry name="remote_color_yellow" value="2048"/>
+        <entry name="remote_color_blue" value="4096"/>
+        <entry name="remote_programme_group" value="8192"/>
+        <entry name="remote_playback_group" value="16384"/>
+        <entry name="remote_teletext_group" value="32768"/>
+        <entry name="local_left" value="65536"/>
+        <entry name="local_right" value="131072"/>
+        <entry name="local_up" value="262144"/>
+        <entry name="local_down" value="524288"/>
+        <entry name="local_ok" value="1048576"/>
+        <entry name="remote_magnifier_group" value="2097152"/>
+        <entry name="minimal_playback_group" value="4194304"/>
+        <entry name="guide" value="8388608"/>
+        <entry name="default" value="0xFFFFFFF8"/>
+      </enum>
 
-        <request name="set_property">
-            <description summary="sets the surface property">
-                The client sets the surface property to the compositor. The property
-                is given by a string pair (name, value).
-            </description>
-            <arg name="name" type="string"/>
-            <arg name="value" type="string"/>
-        </request>
+      <request name="set_key_mask">
+        <description summary="sets the key mask for this surface">
+          A value of '1' in the mask indicates that the respective key event (both press and release)
+          will be delivered to the client. Bitwise XOR operation against the default mask value and
+          a supported individual values will result in that key not being delivered to the client.
+          Notice that the default value omits certain keys.
 
-        <enum name="webos_key">
-            <description summary="The key that the surface handels">
-                The client uses wl_webos_shell_surface.set_key_mask to notify server
-                that it will handle specific keys only.
-            </description>
+          The compositor is free to ignore certain keys even if set to '1' depending on the overall
+          system UI behaviour, most commonly this will mean the HOME key.
 
-            <entry name="home" value="1"/>
-            <entry name="back" value="2"/>
-            <entry name="exit" value="4"/>
-            <entry name="navigation_left" value="8"/>
-            <entry name="navigation_right" value="16"/>
-            <entry name="navigation_up" value="32"/>
-            <entry name="navigation_down" value="64"/>
-            <entry name="navigation_ok" value="128"/>
-            <entry name="numeric_keys" value="256"/>
-            <entry name="remote_color_red" value="512"/>
-            <entry name="remote_color_green" value="1024"/>
-            <entry name="remote_color_yellow" value="2048"/>
-            <entry name="remote_color_blue" value="4096"/>
-            <entry name="remote_programme_group" value="8192"/>
-            <entry name="remote_playback_group" value="16384"/>
-            <entry name="remote_teletext_group" value="32768"/>
-            <entry name="local_left" value="65536"/>
-            <entry name="local_right" value="131072"/>
-            <entry name="local_up" value="262144"/>
-            <entry name="local_down" value="524288"/>
-            <entry name="local_ok" value="1048576"/>
-            <entry name="remote_magnifier_group" value="2097152"/>
-            <entry name="minimal_playback_group" value="4194304"/>
-            <entry name="guide" value="8388608"/>
-            <entry name="default" value="0xFFFFFFF8"/>
-        </enum>
+          NOTE: This protocol will eventually replace the string property based key filtering.
+        </description>
+        <arg name="webos_key" type="uint"/>
+      </request>
 
-        <request name="set_key_mask">
-            <description summary="sets the key mask for this surface">
-                A value of '1' in the mask indicates that the respective key event (both press and release)
-                will be delivered to the client. Bitwise XOR operation against the default mask value and
-                a supported individual values will result in that key not being delivered to the client.
-                Notice that the default value omits certain keys.
+      <event name="state_changed">
+        <description summary="the surface state was changed">
+          The compositor or the user has taken action that has resulted in
+          this surface to change state.
+        </description>
+        <arg name="state" type="uint"/>
+      </event>
 
-                The compositor is free to ignore certain keys even if set to '1' depending on the overall
-                system UI behaviour, most commonly this will mean the HOME key.
+      <event name="position_changed">
+        <description summary="the surface position on screen changed">
+          This event will only be sent the surfaces that are in their default
+          state. It will be not sent for fullscreen surfaces nor for surfaces
+          that are minimized.
+        </description>
+        <arg name="x" type="int"/>
+        <arg name="y" type="int"/>
+      </event>
 
-                NOTE: This protocol will eventually replace the string property based key filtering
-            </description>
-            <arg name="webos_key" type="uint"/>
-        </request>
+      <event name="close">
+        <description summary="request closing of window">
+          The close event is sent when the compositor requests closing
+          of a window, e.g. through some gesture or other interaction,
+          without explicitly quitting or killing the client.
+        </description>
+      </event>
 
-        <event name="state_changed">
-            <description summary="The surface state was changed">
-                The compositor or the user has taken action that has resulted in
-                this surface to change state.
-            </description>
-            <arg name="state" type="uint"/>
-        </event>
+      <event name="exposed">
+        <description summary="indicates what areas are exposed">
+          The array contains non-overlapping rectangles that define
+          areas that are visible in this surface. The array elements
+          are a series of ints arranged as follows x,y,w,h,x,y,w,h,-1.
+          The values will not contain negative numbers and the -1 is
+          treated as a terminating marker.
+        </description>
+        <arg name="rectangles" type="array"/>
+      </event>
 
-        <event name="position_changed">
-            <description summary="The surface position on screen changed">
-                This event will only be sent the surfaces that are in their default
-                state. It will be not sent for fullscreen surfaces nor for surfaces
-                that are minimized.
-            </description>
-            <arg name="x" type="int"/>
-            <arg name="y" type="int"/>
-        </event>
+      <event name="state_about_to_change">
+        <description summary="the surface state is about to change">
+          Be sure that the actual state should not be changed with this.
+          Client can only prepare that state will be changed.
+        </description>
+        <arg name="state" type="uint"/>
+      </event>
 
-        <event name="close">
-            <description summary="request closing of window">
-                The close event is sent when the compositor requests closing
-                of a window, e.g. through some gesture or other interaction,
-                without explicitly quitting or killing the client.
-            </description>
-        </event>
-
-        <event name="exposed">
-            <description summary="Indicates what areas are exposed">
-                The array contains non-overlapping rectangles that define
-                areas that are visible in this surface. The array elements
-                are a series of ints arranged as follows x,y,w,h,x,y,w,h,-1.
-                The values will not contain negative numbers and the -1 is
-                treated as a terminating marker.
-            </description>
-            <arg name="rectangles" type="array" summary="The array"/>
-        </event>
-
-        <event name="state_about_to_change">
-            <description summary="The surface state is about to change">
-                Be sure that the actual state should not be changed with this.
-                Client can only prepare that state will be changed.
-            </description>
-            <arg name="state" type="uint"/>
-        </event>
     </interface>
 
 </protocol>
diff --git a/protocol/webos-surface-group.xml b/protocol/webos-surface-group.xml
index 74d5874..6f321f3 100644
--- a/protocol/webos-surface-group.xml
+++ b/protocol/webos-surface-group.xml
@@ -1,188 +1,210 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <protocol name="webos_surface_group">
 
-    <copyright>
-      Copyright (c) 2014-2015 LG Electronics, Inc.
-    </copyright>
+  <copyright>
+    Copyright (c) 2014-2019 LG Electronics, Inc.
 
-    <interface name="wl_webos_surface_group_compositor" version="1">
-        <description summary="A way to group multi client surfaces together">
-            A surface group is a mechanism to group surfaces together that are
-            not part of the same client, hence transiency, nor subsurfaces will
-            fit the bill. However the compositor will treat surfaces belonging
-            to a group very similarly as to surfaces that are transient.
+    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
 
-            The group will be controlled by the process that creates it. The group
-            will have a root surface and the grouped surfaces will be added as
-            layers on top or below it. The creator of the group will designate a z order
-            and a name for each layer. Other processes wanting to add their
-            surface into the group need to know the both the name of the group and
-            the name of the layer.
+    http://www.apache.org/licenses/LICENSE-2.0
 
-            A group can allow anonymous surfaces to be attached to them as well.
+    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.
 
-            Practical suggestion, the name of the group should match the appId of
-            parent surface.
-        </description>
+    SPDX-License-Identifier: Apache-2.0
+  </copyright>
 
-        <request name="create_surface_group">
-            <description summary="Creates a group">
-                The group will be identified by the 'name' parameter. If a group already
-                exists with the given name an error will be reported to the client.
-            </description>
-            <arg name="id" type="new_id" interface="wl_webos_surface_group"/>
-            <arg name="parent" type="object" interface="wl_surface"/>
-            <arg name="name" type="string"/>
-        </request>
+  <interface name="wl_webos_surface_group_compositor" version="1">
+    <description summary="a way to group multi client surfaces together">
+      A surface group is a mechanism to group surfaces together that are
+      not part of the same client, hence transiency, nor subsurfaces will
+      fit the bill. However the compositor will treat surfaces belonging
+      to a group very similarly as to surfaces that are transient.
 
-        <request name="get_surface_group">
-            <description summary="Return an existing surface group">
-                A handle to an existing group
-            </description>
-            <arg name="id" type="new_id" interface="wl_webos_surface_group"/>
-            <arg name="name" type="string"/>
-        </request>
+      The group will be controlled by the process that creates it. The group
+      will have a root surface and the grouped surfaces will be added as
+      layers on top or below it. The creator of the group will designate a z order
+      and a name for each layer. Other processes wanting to add their
+      surface into the group need to know the both the name of the group and
+      the name of the layer.
 
-   </interface>
+      A group can allow anonymous surfaces to be attached to them as well.
 
-    <interface name="wl_webos_surface_group" version="1">
-        <request name="create_layer">
-            <description summary="Creates a layer inside a group">
-                The layer will be identified by the 'name' parameter. The compositor
-                will place the layer in the given z-index relative to the root layer.
-                If negative z-indecies are provided they will be placed underneath the
-                root surface accordingly
+      Practical suggestion, the name of the group should match the appId of
+      parent surface.
+    </description>
 
-                The creator will get a handle 'wl_webos_surface_group_layer' to the
-                newly created group. The handle can be used to manipulate the layer.
+    <request name="create_surface_group">
+      <description summary="creates a group">
+        The group will be identified by the 'name' parameter. If a group already
+        exists with the given name an error will be reported to the client.
+      </description>
+      <arg name="id" type="new_id" interface="wl_webos_surface_group"/>
+      <arg name="parent" type="object" interface="wl_surface"/>
+      <arg name="name" type="string"/>
+    </request>
 
-                If a layer group already exists with the given parameters an error
-                will be reported to the client.
-            </description>
-            <arg name="id" type="new_id" interface="wl_webos_surface_group_layer"/>
-            <arg name="name" type="string"/>
-            <arg name="z_index" type="int"/>
-        </request>
+    <request name="get_surface_group">
+      <description summary="return an existing surface group">
+        A handle to an existing group.
+      </description>
+      <arg name="id" type="new_id" interface="wl_webos_surface_group"/>
+      <arg name="name" type="string"/>
+    </request>
 
-        <request name="attach">
-            <description summary="Attaches a surface to a named group and layer">
-                Processes that want to attach a surface to an existing group and layer
-                will call this function.
+  </interface>
 
-                An error will be reported if either the group, the layer or the layer
-                already has a surface attached to it.
-            </description>
-            <arg name="surface" type="object" interface="wl_surface"/>
-            <arg name="layer_name" type="string"/>
-        </request>
+  <interface name="wl_webos_surface_group" version="1">
+    <request name="create_layer">
+      <description summary="creates a layer inside a group">
+        The layer will be identified by the 'name' parameter. The compositor
+        will place the layer in the given z-index relative to the root layer.
+        If negative z-indecies are provided they will be placed underneath the
+        root surface accordingly
 
-        <enum name="z_hint">
-            <description summary="Hint for the z position of the anonymous surfaces">
-                The position of anonymous layer is always relative to the root element
-                and the named layers in this group.
+        The creator will get a handle 'wl_webos_surface_group_layer' to the
+        newly created group. The handle can be used to manipulate the layer.
 
-                If there are multiple entries with the same index designator they will
-                get positioned in the order of which they get attached.
-            </description>
-            <entry name="below" value="0" summary="Below the root surface and the lowest named layer"/>
-            <entry name="above" value="1" summary="Above the root surface and above the highest named layer"/>
-            <entry name="top" value="2" summary="Above all of the anonymous surfaces"/>
-        </enum>
+        If a layer group already exists with the given parameters an error
+        will be reported to the client.
+      </description>
+      <arg name="id" type="new_id" interface="wl_webos_surface_group_layer"/>
+      <arg name="name" type="string"/>
+      <arg name="z_index" type="int"/>
+    </request>
 
-        <request name="attach_anonymous">
-            <description summary="Tries to attach an anonymous surface to a named group">
-                Clients that have a "multi-purpose" surface that might apply to many use
-                cases can try to attach their surface to a named group. The group controls
-                if that is allowed or not.
+    <request name="attach">
+      <description summary="attaches a surface to a named group and layer">
+        Processes that want to attach a surface to an existing group and layer
+        will call this function.
 
-                An error will be reported if the group is not available or it does not
-                allow anonymous surfaces
-            </description>
-            <arg name="surface" type="object" interface="wl_surface"/>
-            <arg name="z_hint" type="uint" summary="The z index hint"/>
-        </request>
+        An error will be reported if either the group, the layer or the layer
+        already has a surface attached to it.
+      </description>
+      <arg name="surface" type="object" interface="wl_surface"/>
+      <arg name="layer_name" type="string"/>
+    </request>
 
-        <request name="allow_anonymous_layers">
-            <description summary="Allow anonymous layers to this group">
-                Anonymous layers are layers that do not belong to any named layer.
-                They do not enjoy the same benefits as named layers. Their actucal
-                z-index might change if there are named layers or a z index of a
-                named layer is updated.
-            </description>
-            <arg name="allow" type="uint" summary="A boolean to indicate if anonymous layers are accepted"/>
-        </request>
+    <enum name="z_hint">
+      <description summary="hint for the z position of the anonymous surfaces">
+        The position of anonymous layer is always relative to the root element
+        and the named layers in this group.
 
-        <request name="detach">
-            <description summary="Detaches a surface from this group">
-                When a client detaches from a group the compositor will treat is as any other surface.
-                In practice this means that if the client does not want the surface to appear "dangling"
-                or visible in recents the client should hide/destroy the surface, then detach it from
-                the group to avoid any unwanted behavior.
-            </description>
-            <arg name="surface" type="object" interface="wl_surface"/>
-        </request>
+        If there are multiple entries with the same index designator they will
+        get positioned in the order of which they get attached.
+      </description>
+      <entry name="below" value="0" summary="below the root surface and the lowest named layer"/>
+      <entry name="above" value="1" summary="above the root surface and above the highest named layer"/>
+      <entry name="top" value="2" summary="above all of the anonymous surfaces"/>
+    </enum>
 
-        <request name="focus_owner">
-            <description summary="Transfers keyboard focus to group owner surface">
-                Using "focus_owner" a surface-group-client or a surface-group-owner can transfer
-                keybord-focus to surface-group-owner.
-            </description>
-        </request>
+    <request name="attach_anonymous">
+      <description summary="tries to attach an anonymous surface to a named group">
+        Clients that have a "multi-purpose" surface that might apply to many use
+        cases can try to attach their surface to a named group. The group controls
+        if that is allowed or not.
 
-        <request name="focus_layer">
-        <description summary="Transfers keyboard focus to surface attached to layer">
-                Using "focus_layer" a surface-group-owner or a surface-group-client can transfer
-                keybord-focus to specific surface-group-client attached to surface-group-layer "layer".
-            </description>
-            <arg name="layer" type="string"/>
-        </request>
+        An error will be reported if the group is not available or it does not
+        allow anonymous surfaces
+      </description>
+      <arg name="surface" type="object" interface="wl_surface"/>
+      <arg name="z_hint" type="uint" summary="the z index hint"/>
+    </request>
 
-        <request name="destroy" type="destructor"/>
+    <request name="allow_anonymous_layers">
+      <description summary="allow anonymous layers to this group">
+        Anonymous layers are layers that do not belong to any named layer.
+        They do not enjoy the same benefits as named layers. Their actucal
+        z-index might change if there are named layers or a z index of a
+        named layer is updated.
+      </description>
+      <arg name="allow" type="uint" summary="a boolean to indicate if anonymous layers are accepted"/>
+    </request>
 
-        <event name="owner_destroyed">
-            <description summary="Sent to clients attached to this group">
-                If the owner crashes or normally destroys this group the attached
-                client will receive this notification.
+    <request name="detach">
+      <description summary="detaches a surface from this group">
+        When a client detaches from a group the compositor will treat is as any other surface.
+        In practice this means that if the client does not want the surface to appear "dangling"
+        or visible in recents the client should hide/destroy the surface, then detach it from
+        the group to avoid any unwanted behavior.
+      </description>
+      <arg name="surface" type="object" interface="wl_surface"/>
+    </request>
 
-                Since compositor does not know what to do with client surface still
-                attached to this group it will not show them. A well behaving client
-                will 'detach' from this group and release its assosicated resource
-            </description>
-        </event>
+    <request name="focus_owner">
+      <description summary="transfers keyboard focus to group owner surface">
+        Using "focus_owner" a surface-group-client or a surface-group-owner can transfer
+        keybord-focus to surface-group-owner.
+      </description>
+    </request>
 
-     </interface>
+    <request name="focus_layer">
+      <description summary="transfers keyboard focus to surface attached to layer">
+        Using "focus_layer" a surface-group-owner or a surface-group-client can transfer
+        keybord-focus to specific surface-group-client attached to surface-group-layer "layer".
+      </description>
+      <arg name="layer" type="string"/>
+    </request>
 
-    <interface name="wl_webos_surface_group_layer" version="1">
-        <description summary="The handle for the group owner to manipulate the layer">
-            The handle can be used to change the z order of a particular layer
-        </description>
+    <request name="destroy" type="destructor">
+      <description summary="destroy object">
+        Destroys the surface group object.
+      </description>
+    </request>
 
-        <request name="set_z_index">
-            <description summary="Update the z-index">
-                Updates the z index for this layer. The compositor will move the surface
-                attached to this layer accordingly. If no surface is attached to this
-                layer nothing will happen
-            </description>
-            <arg name="z_index" type="int"/>
-        </request>
+    <event name="owner_destroyed">
+      <description summary="sent to clients attached to this group">
+        If the owner crashes or normally destroys this group the attached
+        client will receive this notification.
 
-        <request name="destroy" type="destructor"/>
+        Since compositor does not know what to do with client surface still
+        attached to this group it will not show them. A well behaving client
+        will 'detach' from this group and release its assosicated resource
+      </description>
+    </event>
 
-        <event name="surface_attached">
-            <description summary="Notify surface-group-owner that surface is attached to this layer">
-                When any surafce is attached to this layer, the compositor needs to
-                notify surface-group-owner.
-            </description>
-        </event>
+  </interface>
 
-        <event name="surface_detached">
-            <description summary="Notify surface-group-owner that surface is detached from this layer">
-                When any surafce is detached from this layer, the compositor needs to
-                notify surface-group-owner. This will be usefull if surface attached to this layer
-                is destroyed by associated surface-group-client.
-            </description>
-        </event>
+  <interface name="wl_webos_surface_group_layer" version="1">
+    <description summary="the handle for the group owner to manipulate the layer">
+      The handle can be used to change the z order of a particular layer
+    </description>
 
-    </interface>
+    <request name="set_z_index">
+      <description summary="update the z-index">
+        Updates the z index for this layer. The compositor will move the surface
+        attached to this layer accordingly. If no surface is attached to this
+        layer nothing will happen
+      </description>
+      <arg name="z_index" type="int"/>
+    </request>
+
+    <request name="destroy" type="destructor">
+      <description summary="destroy object">
+        Destroys the surface group layer object.
+      </description>
+    </request>
+
+    <event name="surface_attached">
+      <description summary="notify surface-group-owner that surface is attached to this layer">
+        When any surafce is attached to this layer, the compositor needs to
+        notify surface-group-owner.
+      </description>
+    </event>
+
+    <event name="surface_detached">
+      <description summary="notify surface-group-owner that surface is detached from this layer">
+        When any surafce is detached from this layer, the compositor needs to
+        notify surface-group-owner. This will be usefull if surface attached to this layer
+        is destroyed by associated surface-group-client.
+      </description>
+    </event>
+
+  </interface>
 
 </protocol>