<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Definitions SYSTEM "widlprocxml.dtd">
<Definitions>
  <Module name="AdFramework" id="::AdFramework">
    <webidl>module AdFramework {
    [NoInterfaceObject] interface AdFrameworkManagerObject {
        readonly attribute <ref>AdFrameworkManager</ref> adframework;

    };
    <ref>WebApi</ref> implements <ref>AdFrameworkManagerObject</ref>;

    [NoInterfaceObject] interface AdFrameworkManager {
        readonly attribute <ref>AdFrameworkCore</ref> core;

        readonly attribute <ref>AdFrameworkEvents</ref> events;

        readonly attribute <ref>AdFrameworkConfig</ref> config;

        readonly attribute <ref>AdFrameworkDisplayHandler</ref> displayhandler;

        readonly attribute <ref>AdFrameworkUtils</ref> utils;

    };

    [NoInterfaceObject] interface AdFrameworkCore {
        void initialize();

        void open(DOMString url, optional DOMString? params);

        void addPlayerListener(DOMString key, <ref>AdFrameworkCallback</ref> onevent);

        void insertAdBreak(DOMString url, <ref>Object</ref> params);

        void startPrerolls(long playhead);

        void setDisplayArea(long x, long Height, boolean fullscreenMode);

        void stop();

        boolean toggleMute();

        boolean setMute(boolean muteOn);

        boolean pause(optional boolean? isAdClick);

        boolean resume(optional boolean? isAdClick);

        void jumpForward(long seconds);

        void jumpBackward(long seconds);

        void volumeUp();

        void volumeDown();

        long getDuration();

        void appConfig(object config);

        void handleCompanionAdViewElementClick(DOMString priorityCompanionResource);

        void handleNonLinearTracking(DOMString nonLinearAdID, DOMString event);

        void handleNonLinearClose(DOMString nonLinearAdID);

        void setApplicationError(DOMString type, DOMString adBreakID, DOMString adID, long code, DOMString message, DOMString adAssetURI);

        void setBeforeContentStartListener(<ref>AdFrameworkCallback</ref> onevent);

        void setAfterContentStartListener(<ref>AdFrameworkCallback</ref> onevent);

        void setBeforeLinearAdStartListener(<ref>AdFrameworkCallback</ref> onevent);

        void setAfterLinearAdStartListener(<ref>AdFrameworkCallback</ref> onevent);

        void setContentPlayheadTime(long ms);

        void setOffsetContentPlayheadTime(long ms);

        void disableAdInsertion(optional boolean? allowCurrentAdbreakToFinish);

        void enableAdInsertion();

        void changeContentUrl(DOMString newURL);

        void setLinearAdUrlModifier(<ref>AdFrameworkUrlModifierCallback</ref> onmodify);

        long getContentPlayheadPosition();

    };

    [NoInterfaceObject] interface AdFrameworkEvents {
        void addListener(DOMString eventType, <ref>AdFrameworkCallback</ref> onevent, optional boolean? invokeOnce);

        void removeListener(DOMString eventType, <ref>AdFrameworkCallback</ref> onevent);

    };

    [NoInterfaceObject] interface AdFrameworkConfig {
        void set(DOMString key, long value);

        long get(DOMString key);

    };

    [NoInterfaceObject] interface AdFrameworkDisplayHandler {
        void init();

        void hideSkipButton();

    };

    [NoInterfaceObject] interface AdFrameworkUtils {
        DOMString getTimeString(long ms);

    };

    [Callback=FunctionOnly, NoInterfaceObject] interface AdFrameworkCallback {
        void onevent(optional any param);

    };

    [Callback=FunctionOnly, NoInterfaceObject] interface AdFrameworkUrlModifierCallback {
        DOMString onmodify(DOMString originalUrl);

    };

};</webidl>
    <descriptive>
        <brief>
 The module defines the functionalities of AdFramework which can be used to insert/schedule and play various ads during the normal video playback.
        </brief>
        <version>
 1.0
        </version>
    </descriptive>
    <Interface name="AdFrameworkManagerObject" id="::AdFramework::AdFrameworkManagerObject">
      <webidl>    [NoInterfaceObject] interface AdFrameworkManagerObject {
        readonly attribute <ref>AdFrameworkManager</ref> adframework;

    };</webidl>
      <descriptive>
          <brief>
 The interface defines what is instantiated by the WebApi object of Tizen-based Samsung TV Product API.
There will be a adframework object that allows access to the functionality of the AdFramework API
          </brief>
          <version>
 1.0
          </version>
      </descriptive>
      <ExtendedAttributeList>
        <ExtendedAttribute name="NoInterfaceObject">
          <webidl>NoInterfaceObject</webidl>
        </ExtendedAttribute>
      </ExtendedAttributeList>
      <Attribute readonly="readonly" name="adframework" id="::AdFramework::AdFrameworkManagerObject::adframework">
        <webidl>        readonly attribute <ref>AdFrameworkManager</ref> adframework;</webidl>
        <descriptive>
            <brief>
 Namespace for AdFramework API.
            </brief>
            <version>
 1.0
            </version>
        </descriptive>
        <Type name="AdFrameworkManager"/>
      </Attribute>
    </Interface>
    <Implements name1="WebApi" name2="AdFrameworkManagerObject">
      <webidl>    <ref>WebApi</ref> implements <ref>AdFrameworkManagerObject</ref>;</webidl>
    </Implements>
    <Interface name="AdFrameworkManager" id="::AdFramework::AdFrameworkManager">
      <webidl>    [NoInterfaceObject] interface AdFrameworkManager {
        readonly attribute <ref>AdFrameworkCore</ref> core;

        readonly attribute <ref>AdFrameworkEvents</ref> events;

        readonly attribute <ref>AdFrameworkConfig</ref> config;

        readonly attribute <ref>AdFrameworkDisplayHandler</ref> displayhandler;

        readonly attribute <ref>AdFrameworkUtils</ref> utils;

    };</webidl>
      <descriptive>
          <brief>
 This interface provides methods to use the AdFramework functionalities.
          </brief>
          <version>
 1.0
          </version>
      </descriptive>
      <ExtendedAttributeList>
        <ExtendedAttribute name="NoInterfaceObject">
          <webidl>NoInterfaceObject</webidl>
        </ExtendedAttribute>
      </ExtendedAttributeList>
      <Attribute readonly="readonly" name="core" id="::AdFramework::AdFrameworkManager::core">
        <webidl>        readonly attribute <ref>AdFrameworkCore</ref> core;</webidl>
        <descriptive>
            <brief>
 It provides the AdFrameworkCore class methods (described in Web API Information sheet)  to use the AdFramework functionalities like play,pause, stop etc.
            </brief>
            <version>
 1.0
            </version>
        </descriptive>
        <Type name="AdFrameworkCore"/>
      </Attribute>
      <Attribute readonly="readonly" name="events" id="::AdFramework::AdFrameworkManager::events">
        <webidl>        readonly attribute <ref>AdFrameworkEvents</ref> events;</webidl>
        <descriptive>
            <brief>
 It provides methods for adding/removing listeners for events to the application.
            </brief>
            <version>
 1.0
            </version>
        </descriptive>
        <Type name="AdFrameworkEvents"/>
      </Attribute>
      <Attribute readonly="readonly" name="config" id="::AdFramework::AdFrameworkManager::config">
        <webidl>        readonly attribute <ref>AdFrameworkConfig</ref> config;</webidl>
        <descriptive>
            <brief>
 It provides methods for setting/getting parameters and its values.
            </brief>
            <version>
 1.0
            </version>
        </descriptive>
        <Type name="AdFrameworkConfig"/>
      </Attribute>
      <Attribute readonly="readonly" name="displayhandler" id="::AdFramework::AdFrameworkManager::displayhandler">
        <webidl>        readonly attribute <ref>AdFrameworkDisplayHandler</ref> displayhandler;</webidl>
        <descriptive>
            <brief>
 It provides methods for showing/hiding buttons/screens.
            </brief>
            <version>
 1.0
            </version>
        </descriptive>
        <Type name="AdFrameworkDisplayHandler"/>
      </Attribute>
      <Attribute readonly="readonly" name="utils" id="::AdFramework::AdFrameworkManager::utils">
        <webidl>        readonly attribute <ref>AdFrameworkUtils</ref> utils;</webidl>
        <descriptive>
            <brief>
 It provides methods for time conversion from one format to another.
            </brief>
            <version>
 1.0
            </version>
        </descriptive>
        <Type name="AdFrameworkUtils"/>
      </Attribute>
    </Interface>
    <Interface name="AdFrameworkCore" id="::AdFramework::AdFrameworkCore">
      <webidl>    [NoInterfaceObject] interface AdFrameworkCore {
        void initialize();

        void open(DOMString url, optional DOMString? params);

        void addPlayerListener(DOMString key, <ref>AdFrameworkCallback</ref> onevent);

        void insertAdBreak(DOMString url, <ref>Object</ref> params);

        void startPrerolls(long playhead);

        void setDisplayArea(long x, long Height, boolean fullscreenMode);

        void stop();

        boolean toggleMute();

        boolean setMute(boolean muteOn);

        boolean pause(optional boolean? isAdClick);

        boolean resume(optional boolean? isAdClick);

        void jumpForward(long seconds);

        void jumpBackward(long seconds);

        void volumeUp();

        void volumeDown();

        long getDuration();

        void appConfig(object config);

        void handleCompanionAdViewElementClick(DOMString priorityCompanionResource);

        void handleNonLinearTracking(DOMString nonLinearAdID, DOMString event);

        void handleNonLinearClose(DOMString nonLinearAdID);

        void setApplicationError(DOMString type, DOMString adBreakID, DOMString adID, long code, DOMString message, DOMString adAssetURI);

        void setBeforeContentStartListener(<ref>AdFrameworkCallback</ref> onevent);

        void setAfterContentStartListener(<ref>AdFrameworkCallback</ref> onevent);

        void setBeforeLinearAdStartListener(<ref>AdFrameworkCallback</ref> onevent);

        void setAfterLinearAdStartListener(<ref>AdFrameworkCallback</ref> onevent);

        void setContentPlayheadTime(long ms);

        void setOffsetContentPlayheadTime(long ms);

        void disableAdInsertion(optional boolean? allowCurrentAdbreakToFinish);

        void enableAdInsertion();

        void changeContentUrl(DOMString newURL);

        void setLinearAdUrlModifier(<ref>AdFrameworkUrlModifierCallback</ref> onmodify);

        long getContentPlayheadPosition();

    };</webidl>
      <descriptive>
          <brief>
 It provides the AdFrameworkCore class methods (described in Web API Information sheet)  to use the AdFramework functionalities like play,pause, stop etc.
          </brief>
          <version>
 1.0
          </version>
      </descriptive>
      <ExtendedAttributeList>
        <ExtendedAttribute name="NoInterfaceObject">
          <webidl>NoInterfaceObject</webidl>
        </ExtendedAttribute>
      </ExtendedAttributeList>
      <Operation name="initialize" id="::AdFramework::AdFrameworkCore::initialize">
        <webidl>        void initialize();</webidl>
        <descriptive>
            <brief>
 API provided to application to create the TizneWRT instance, and initialize the adframework module.
            </brief>
            <version>
 1.0
            </version>
            <Code> webapis.adframework.core.initialize();
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
      </Operation>
      <Operation name="open" id="::AdFramework::AdFrameworkCore::open">
        <webidl>        void open(DOMString url, optional DOMString? params);</webidl>
        <descriptive>
            <brief>
 API provided to application to Initialize the player with Content URL and creates adbreak list.
            </brief>
            <version>
 1.0
            </version>
            <Code> var vodURL = &quot;http://107.109.221.136/Test/content/1920x1080_bunny.mp4&quot;;
 var mastURL = &quot;http://107.109.221.136/amit/TestingAll/mast/srid_mast_test1.xml&quot;;
 webapis.adframework.core.open(vodURL, mastURL);
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="url">
            <descriptive>
                <description><p>
 URL to content video
                </p></description>
            </descriptive>
            <Type type="DOMString"/>
          </Argument>
          <Argument optional="optional" name="params">
            <descriptive>
                <description><p>
 [optional][nullable] MAST/VMAP/VAST Url
                </p></description>
            </descriptive>
            <Type type="DOMString" nullable="nullable"/>
          </Argument>
        </ArgumentList>
      </Operation>
      <Operation name="addPlayerListener" id="::AdFramework::AdFrameworkCore::addPlayerListener">
        <webidl>        void addPlayerListener(DOMString key, <ref>AdFrameworkCallback</ref> onevent);</webidl>
        <descriptive>
            <brief>
 API provided to application to listen the player events like BUFFERING_START, BUFFERING_COMPLETE.
            </brief>
            <version>
 1.0
            </version>
            <Code> webapis.adframework.core.addPlayerListener(&quot;BUFFERING_START&quot;, function() {
     alert(&quot;BUFFERING_START&quot;);
 });
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="key">
            <descriptive>
                <description><p>
 Event type to listen for
                </p></description>
            </descriptive>
            <Type type="DOMString"/>
          </Argument>
          <Argument name="onevent">
            <descriptive>
                <description><p>
 Callback to be executed when event(like BUFFERING_START,BUFFERING_COMPLETE) fired.
                </p></description>
            </descriptive>
            <Type name="AdFrameworkCallback"/>
          </Argument>
        </ArgumentList>
      </Operation>
      <Operation name="insertAdBreak" id="::AdFramework::AdFrameworkCore::insertAdBreak">
        <webidl>        void insertAdBreak(DOMString url, <ref>Object</ref> params);</webidl>
        <descriptive>
            <brief>
 API provided to application to Insert ads based on the specification in params.
First parameter of this function will tell the URL of Ad/AdBreak which needs to be inserted.
Second Parameter is an object having time as its only variable. This time will tell the player to start the ad/adbreak at this particular time.
For example,  
timeToPlay 
{
time: 5000
}
            </brief>
            <version>
 1.0
            </version>
            <Code> var MastURL = &quot;http://107.109.221.136/amit/TestingAll/mast/srid_mast_test1.xml&quot;;
 webapis.adframework.core.insertAdBreak(MastURL, {
     time: 5000
 });
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="url">
            <descriptive>
                <description><p>
 URL to MAST/VMAP/VAST XML
                </p></description>
            </descriptive>
            <Type type="DOMString"/>
          </Argument>
          <Argument name="params">
            <descriptive>
                <description><p>
 Configuration of the ad break (can insert a custom time for ad break to start)
                </p></description>
            </descriptive>
            <Type name="Object"/>
          </Argument>
        </ArgumentList>
      </Operation>
      <Operation name="startPrerolls" id="::AdFramework::AdFrameworkCore::startPrerolls">
        <webidl>        void startPrerolls(long playhead);</webidl>
        <descriptive>
            <brief>
 API provided to application to Start prerolls before playback of main content
            </brief>
            <version>
 1.0
            </version>
            <Code> webapis.adframework.core.startPrerolls(0);
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="playhead">
            <descriptive>
                <description><p>
 Position in Milliseconds to start the main video content
                </p></description>
            </descriptive>
            <Type type="long"/>
          </Argument>
        </ArgumentList>
      </Operation>
      <Operation name="setDisplayArea" id="::AdFramework::AdFrameworkCore::setDisplayArea">
        <webidl>        void setDisplayArea(long x, long Height, boolean fullscreenMode);</webidl>
        <descriptive>
            <brief>
 API provided to application to change display area.
            </brief>
            <version>
 1.0
            </version>
            <Code> webapis.adframework.core.setDisplayArea(0, 0, 1920, 910, true, true);
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="x">
            <descriptive>
                <description><p>
 Display X Cordinate                                        ■ ylongDisplay Y Cordinate                                      ■ WidthlongDisplay Width
                </p></description>
            </descriptive>
            <Type type="long"/>
          </Argument>
          <Argument name="Height">
            <descriptive>
                <description><p>
 Display Width
                </p></description>
            </descriptive>
            <Type type="long"/>
          </Argument>
          <Argument name="fullscreenMode">
            <descriptive>
                <description><p>
 True/False for FullScreen/WindowScreen                                 ■ userbooleantrue when user changed Screen
                </p></description>
            </descriptive>
            <Type type="boolean"/>
          </Argument>
        </ArgumentList>
      </Operation>
      <Operation name="stop" id="::AdFramework::AdFrameworkCore::stop">
        <webidl>        void stop();</webidl>
        <descriptive>
            <brief>
 API provided to application to stop the current playing content
            </brief>
            <version>
 1.0
            </version>
            <Code> webapis.adframework.core.stop();
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
      </Operation>
      <Operation name="toggleMute" id="::AdFramework::AdFrameworkCore::toggleMute">
        <webidl>        boolean toggleMute();</webidl>
        <descriptive>
            <brief>
 API provided to application to  toggle current mute state.
            </brief>
            <version>
 1.0
            </version>
            <Code> webapis.adframework.core.toggleMute();
 </Code>
        </descriptive>
        <Type type="boolean">
          <descriptive>
              <description><p>
 boolean
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
      </Operation>
      <Operation name="setMute" id="::AdFramework::AdFrameworkCore::setMute">
        <webidl>        boolean setMute(boolean muteOn);</webidl>
        <descriptive>
            <brief>
 API provided to application to Mute/Unmute the current content
            </brief>
            <version>
 1.0
            </version>
            <Code> webapis.adframework.core.setMute(true);
 </Code>
        </descriptive>
        <Type type="boolean">
          <descriptive>
              <description><p>
 boolean
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="muteOn">
            <descriptive>
                <description><p>
 If true, mutes the TV. If false, unmutes the TV. If blank, will toggle current mute state.
                </p></description>
            </descriptive>
            <Type type="boolean"/>
          </Argument>
        </ArgumentList>
      </Operation>
      <Operation name="pause" id="::AdFramework::AdFrameworkCore::pause">
        <webidl>        boolean pause(optional boolean? isAdClick);</webidl>
        <descriptive>
            <brief>
 API provided to application to  pause the current content
            </brief>
            <version>
 1.0
            </version>
            <Code> webapis.adframework.core.pause();
 </Code>
        </descriptive>
        <Type type="boolean">
          <descriptive>
              <description><p>
 boolean
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument optional="optional" name="isAdClick">
            <descriptive>
                <description><p>
 [optional][nullable] It should be true when user has clicked on Companion/NonLinear ad.
                </p></description>
            </descriptive>
            <Type type="boolean" nullable="nullable"/>
          </Argument>
        </ArgumentList>
      </Operation>
      <Operation name="resume" id="::AdFramework::AdFrameworkCore::resume">
        <webidl>        boolean resume(optional boolean? isAdClick);</webidl>
        <descriptive>
            <brief>
 API provided to application to  resume the current content
            </brief>
            <version>
 1.0
            </version>
            <Code> webapis.adframework.core.resume();
 </Code>
        </descriptive>
        <Type type="boolean">
          <descriptive>
              <description><p>
 boolean
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument optional="optional" name="isAdClick">
            <descriptive>
                <description><p>
 [optional][nullable] It should be true when user has clicked on Companion/NonLinear ad.
                </p></description>
            </descriptive>
            <Type type="boolean" nullable="nullable"/>
          </Argument>
        </ArgumentList>
      </Operation>
      <Operation name="jumpForward" id="::AdFramework::AdFrameworkCore::jumpForward">
        <webidl>        void jumpForward(long seconds);</webidl>
        <descriptive>
            <brief>
 API provided to application to  skip the current content forward
            </brief>
            <version>
 1.0
            </version>
            <Code> webapis.adframework.core.jumpForward(10);
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="seconds">
            <descriptive>
                <description><p>
 Seconds to jump
                </p></description>
            </descriptive>
            <Type type="long"/>
          </Argument>
        </ArgumentList>
      </Operation>
      <Operation name="jumpBackward" id="::AdFramework::AdFrameworkCore::jumpBackward">
        <webidl>        void jumpBackward(long seconds);</webidl>
        <descriptive>
            <brief>
 API provided to application to  skip backwards.
            </brief>
            <version>
 1.0
            </version>
            <Code> webapis.adframework.core.jumpBackward(10);
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="seconds">
            <descriptive>
                <description><p>
 Seconds to jump
                </p></description>
            </descriptive>
            <Type type="long"/>
          </Argument>
        </ArgumentList>
      </Operation>
      <Operation name="volumeUp" id="::AdFramework::AdFrameworkCore::volumeUp">
        <webidl>        void volumeUp();</webidl>
        <descriptive>
            <brief>
 API provided to application to increase volume.
            </brief>
            <version>
 1.0
            </version>
            <Code> webapis.adframework.core.volumeUp();
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
      </Operation>
      <Operation name="volumeDown" id="::AdFramework::AdFrameworkCore::volumeDown">
        <webidl>        void volumeDown();</webidl>
        <descriptive>
            <brief>
 API provided to application to decrease volume.
            </brief>
            <version>
 1.0
            </version>
            <Code> webapis.adframework.core.volumeDown();
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
      </Operation>
      <Operation name="getDuration" id="::AdFramework::AdFrameworkCore::getDuration">
        <webidl>        long getDuration();</webidl>
        <descriptive>
            <brief>
 API provided to application to  get currently playing content's duration.
            </brief>
            <version>
 1.0
            </version>
            <Code> var duration = webapis.adframework.core.getDuration();
 </Code>
        </descriptive>
        <Type type="long">
          <descriptive>
              <description><p>
 long
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
      </Operation>
      <Operation name="appConfig" id="::AdFramework::AdFrameworkCore::appConfig">
        <webidl>        void appConfig(object config);</webidl>
        <descriptive>
            <brief>
 This API function is provided to application to set default dimensions/coordinates for Fullscreen and Small screen window.                                        (AdFramework stores the dimensions and display the fullscreen or small screen window according to the default saved dimensions)
            </brief>
            <version>
 1.0
            </version>
            <Code> var VideoArea = {
     fullscreenX: 0,
     fullscreenY: 0,
     fullscreenW: 1920,
     fullscreenH: 910,
     windowX: 60,
     windowY: 80,
     windowW: 553,
     windowH: 453
 };
 webapis.adframework.core.appConfig(VideoArea);
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="config">
            <descriptive>
                <description><p>
 fullscreenX: long fullscreen X cordinate,
                </p></description>
            </descriptive>
            <Type type="object"/>
          </Argument>
        </ArgumentList>
      </Operation>
      <Operation name="handleCompanionAdViewElementClick" id="::AdFramework::AdFrameworkCore::handleCompanionAdViewElementClick">
        <webidl>        void handleCompanionAdViewElementClick(DOMString priorityCompanionResource);</webidl>
        <descriptive>
            <brief>
 This API function is provided to application to handle the companion click.                                                 This function opens an Iframe to display the companion website link and send the &quot;click&quot; tracking event to ad server.                                                    Companion click event is received by application, so application can use this API function &quot;handleCompanionAdViewElementClick&quot; to show companion website content.
            </brief>
            <version>
 1.0
            </version>
            <Code> var uid = &quot;comp_001&quot;; //Companion id webapis.adframework.core.handleCompanionAdViewElementClick(uid);
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="priorityCompanionResource">
            <descriptive>
                <description><p>
 Id of companion ad clicked
                </p></description>
            </descriptive>
            <Type type="DOMString"/>
          </Argument>
        </ArgumentList>
      </Operation>
      <Operation name="handleNonLinearTracking" id="::AdFramework::AdFrameworkCore::handleNonLinearTracking">
        <webidl>        void handleNonLinearTracking(DOMString nonLinearAdID, DOMString event);</webidl>
        <descriptive>
            <brief>
 API provided to application to  handle Tracking events for Non Linear Ads
            </brief>
            <version>
 1.0
            </version>
            <Code> webapis.adframework.core.handleNonLinearTracking(&quot;abc_001&quot;, &quot;impression&quot;);
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="nonLinearAdID">
            <descriptive>
                <description><p>
 Id of non-linear ad
                </p></description>
            </descriptive>
            <Type type="DOMString"/>
          </Argument>
          <Argument name="event">
            <descriptive>
                <description><p>
 tracking event(i.e. impression)
                </p></description>
            </descriptive>
            <Type type="DOMString"/>
          </Argument>
        </ArgumentList>
      </Operation>
      <Operation name="handleNonLinearClose" id="::AdFramework::AdFrameworkCore::handleNonLinearClose">
        <webidl>        void handleNonLinearClose(DOMString nonLinearAdID);</webidl>
        <descriptive>
            <brief>
 API provided to application to  handle close for Non Linear Ad. When the NonLinear close button is clicked by user, this function is executed. Close the NonLinear creative and fire the close tracking event as well
            </brief>
            <version>
 1.0
            </version>
            <Code> webapis.adframework.core.handleNonLinearClose(&quot;nonLinearAdID_002&quot;);
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="nonLinearAdID">
            <descriptive>
                <description><p>
 Id of non-linear ad
                </p></description>
            </descriptive>
            <Type type="DOMString"/>
          </Argument>
        </ArgumentList>
      </Operation>
      <Operation name="setApplicationError" id="::AdFramework::AdFrameworkCore::setApplicationError">
        <webidl>        void setApplicationError(DOMString type, DOMString adBreakID, DOMString adID, long code, DOMString message, DOMString adAssetURI);</webidl>
        <descriptive>
            <brief>
 This API function is provided to application to handle error cases. If application is unable to show the non-linear image etc, application inform the same to adframework by using this API function.
            </brief>
            <version>
 1.0
            </version>
            <Code> webapis.adframework.core.setApplicationError(&quot;NONLINEAR_AD&quot;, &quot;AdBreakID&quot;, &quot;adID&quot;, 500, &quot;Rejecting NonLinear ad: A NonLinear ad is already being displayed.&quot;, &quot;http://nonlinearurl&quot;);
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="type">
            <descriptive>
                <description><p>
 type of ad
                </p></description>
            </descriptive>
            <Type type="DOMString"/>
          </Argument>
          <Argument name="adBreakID">
            <descriptive>
                <description><p>
 id of adBreak
                </p></description>
            </descriptive>
            <Type type="DOMString"/>
          </Argument>
          <Argument name="adID">
            <descriptive>
                <description><p>
 Id of ad
                </p></description>
            </descriptive>
            <Type type="DOMString"/>
          </Argument>
          <Argument name="code">
            <descriptive>
                <description><p>
 error code(i.e 504 etc)
                </p></description>
            </descriptive>
            <Type type="long"/>
          </Argument>
          <Argument name="message">
            <descriptive>
                <description><p>
 error message(i.e. Failed to fetch NonLinear ad)
                </p></description>
            </descriptive>
            <Type type="DOMString"/>
          </Argument>
          <Argument name="adAssetURI">
            <descriptive>
                <description><p>
 url of resource
                </p></description>
            </descriptive>
            <Type type="DOMString"/>
          </Argument>
        </ArgumentList>
      </Operation>
      <Operation name="setBeforeContentStartListener" id="::AdFramework::AdFrameworkCore::setBeforeContentStartListener">
        <webidl>        void setBeforeContentStartListener(<ref>AdFrameworkCallback</ref> onevent);</webidl>
        <descriptive>
            <brief>
 API provided to application to  add a function to execute each time before the main content starts.
            </brief>
            <version>
 1.0
            </version>
            <Code> webapis.adframework.core.setBeforeContentStartListener(function() {
     alert(&quot;beforeContentStart&quot;);
 });
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="onevent">
            <descriptive>
                <description><p>
 Callback to be executed before content starts.
                </p></description>
            </descriptive>
            <Type name="AdFrameworkCallback"/>
          </Argument>
        </ArgumentList>
      </Operation>
      <Operation name="setAfterContentStartListener" id="::AdFramework::AdFrameworkCore::setAfterContentStartListener">
        <webidl>        void setAfterContentStartListener(<ref>AdFrameworkCallback</ref> onevent);</webidl>
        <descriptive>
            <brief>
 API provided to application to  add a function to execute each time after the main content starts.
            </brief>
            <version>
 1.0
            </version>
            <Code> webapis.adframework.core.setAfterContentStartListener(function() {
     alert(&quot;afterContentStart&quot;);
 });
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="onevent">
            <descriptive>
                <description><p>
 Callback to be executed after content starts.
                </p></description>
            </descriptive>
            <Type name="AdFrameworkCallback"/>
          </Argument>
        </ArgumentList>
      </Operation>
      <Operation name="setBeforeLinearAdStartListener" id="::AdFramework::AdFrameworkCore::setBeforeLinearAdStartListener">
        <webidl>        void setBeforeLinearAdStartListener(<ref>AdFrameworkCallback</ref> onevent);</webidl>
        <descriptive>
            <brief>
 API provided to application to  add a function to execute each time before a linear ad starts.
            </brief>
            <version>
 1.0
            </version>
            <Code> webapis.adframework.core.setBeforeLinearAdStartListener(function() {
     alert(&quot;beforeLinearAdStart&quot;);
 });
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="onevent">
            <descriptive>
                <description><p>
 Callback to be executed before Ad starts.
                </p></description>
            </descriptive>
            <Type name="AdFrameworkCallback"/>
          </Argument>
        </ArgumentList>
      </Operation>
      <Operation name="setAfterLinearAdStartListener" id="::AdFramework::AdFrameworkCore::setAfterLinearAdStartListener">
        <webidl>        void setAfterLinearAdStartListener(<ref>AdFrameworkCallback</ref> onevent);</webidl>
        <descriptive>
            <brief>
 API provided to application to  add a function to execute each time after a linear ad starts.
            </brief>
            <version>
 1.0
            </version>
            <Code> webapis.adframework.core.setAfterLinearAdStartListener(function() {
     alert(&quot;afterLinearAdStart&quot;);
 });
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="onevent">
            <descriptive>
                <description><p>
 Callback to be executed after Ad starts.
                </p></description>
            </descriptive>
            <Type name="AdFrameworkCallback"/>
          </Argument>
        </ArgumentList>
      </Operation>
      <Operation name="setContentPlayheadTime" id="::AdFramework::AdFrameworkCore::setContentPlayheadTime">
        <webidl>        void setContentPlayheadTime(long ms);</webidl>
        <descriptive>
            <brief>
 API provided to application to  set the playhead time for the maincontent from where it should resume.
            </brief>
            <version>
 1.0
            </version>
            <Code> webapis.adframework.core.setContentPlayheadTime(10000);
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="ms">
            <descriptive>
                <description><p>
 set position of video content
                </p></description>
            </descriptive>
            <Type type="long"/>
          </Argument>
        </ArgumentList>
      </Operation>
      <Operation name="setOffsetContentPlayheadTime" id="::AdFramework::AdFrameworkCore::setOffsetContentPlayheadTime">
        <webidl>        void setOffsetContentPlayheadTime(long ms);</webidl>
        <descriptive>
            <brief>
 API provided to application to  set the offset by which the main content playhead will be skipped by N seconds.
            </brief>
            <version>
 1.0
            </version>
            <Code> webapis.adframework.core.setOffsetContentPlayheadTime(10000);
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="ms">
            <descriptive>
                <description><p>
 set position of video content
                </p></description>
            </descriptive>
            <Type type="long"/>
          </Argument>
        </ArgumentList>
      </Operation>
      <Operation name="disableAdInsertion" id="::AdFramework::AdFrameworkCore::disableAdInsertion">
        <webidl>        void disableAdInsertion(optional boolean? allowCurrentAdbreakToFinish);</webidl>
        <descriptive>
            <brief>
 API provided to application to  disable insertion of adbreaks.
            </brief>
            <version>
 1.0
            </version>
            <Code> webapis.adframework.core.disableAdInsertion();
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument optional="optional" name="allowCurrentAdbreakToFinish">
            <descriptive>
                <description><p>
 [optional][nullable] If true,allow current ad to play and cancel further. If false stop ad and resume main content. Default value is false.
                </p></description>
            </descriptive>
            <Type type="boolean" nullable="nullable"/>
          </Argument>
        </ArgumentList>
      </Operation>
      <Operation name="enableAdInsertion" id="::AdFramework::AdFrameworkCore::enableAdInsertion">
        <webidl>        void enableAdInsertion();</webidl>
        <descriptive>
            <brief>
 API provided to application to  enable insertion of adbreaks.
            </brief>
            <version>
 1.0
            </version>
            <Code> webapis.adframework.core.enableAdInsertion();
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
      </Operation>
      <Operation name="changeContentUrl" id="::AdFramework::AdFrameworkCore::changeContentUrl">
        <webidl>        void changeContentUrl(DOMString newURL);</webidl>
        <descriptive>
            <brief>
 API provided to application to  modify the main content's url whenever the next main content will be switched from ad state.
            </brief>
            <version>
 1.0
            </version>
            <Code> var url = &quot;http://107.109.221.136/amit/content/1920x1080_bunny.mp4&quot;;
 webapis.adframework.core.changeContentUrl(url);
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="newURL">
            <descriptive>
                <description><p>
 set new content url
                </p></description>
            </descriptive>
            <Type type="DOMString"/>
          </Argument>
        </ArgumentList>
      </Operation>
      <Operation name="setLinearAdUrlModifier" id="::AdFramework::AdFrameworkCore::setLinearAdUrlModifier">
        <webidl>        void setLinearAdUrlModifier(<ref>AdFrameworkUrlModifierCallback</ref> onmodify);</webidl>
        <descriptive>
            <brief>
 API provided to application to  modify linear ad url at runtime.
            </brief>
            <version>
 1.0
            </version>
            <Code> webapis.adframework.core.setLinearAdUrlModifier(function(url) {
     alert(&quot;modifying: &quot; + url);
     return url + &quot;|COOKIE={&quot;
     abc &quot;;}&quot;;
 });
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="onmodify">
            <descriptive>
                <description><p>
 Callback function used to modify the ad url.
                </p></description>
            </descriptive>
            <Type name="AdFrameworkUrlModifierCallback"/>
          </Argument>
        </ArgumentList>
      </Operation>
      <Operation name="getContentPlayheadPosition" id="::AdFramework::AdFrameworkCore::getContentPlayheadPosition">
        <webidl>        long getContentPlayheadPosition();</webidl>
        <descriptive>
            <brief>
 API provided to application to  get current playing content's position.
            </brief>
            <version>
 1.0
            </version>
            <Code> var playhead = webapis.adframework.core.getContentPlayheadPosition();
 </Code>
        </descriptive>
        <Type type="long">
          <descriptive>
              <description><p>
 long
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
      </Operation>
    </Interface>
    <Interface name="AdFrameworkEvents" id="::AdFramework::AdFrameworkEvents">
      <webidl>    [NoInterfaceObject] interface AdFrameworkEvents {
        void addListener(DOMString eventType, <ref>AdFrameworkCallback</ref> onevent, optional boolean? invokeOnce);

        void removeListener(DOMString eventType, <ref>AdFrameworkCallback</ref> onevent);

    };</webidl>
      <descriptive>
          <brief>
 It provides methods for adding/removing listeners for events to the application.
          </brief>
          <version>
 1.0
          </version>
      </descriptive>
      <ExtendedAttributeList>
        <ExtendedAttribute name="NoInterfaceObject">
          <webidl>NoInterfaceObject</webidl>
        </ExtendedAttribute>
      </ExtendedAttributeList>
      <Operation name="addListener" id="::AdFramework::AdFrameworkEvents::addListener">
        <webidl>        void addListener(DOMString eventType, <ref>AdFrameworkCallback</ref> onevent, optional boolean? invokeOnce);</webidl>
        <descriptive>
            <brief>
 Listens for a event, and executes the specified function each time that event occurs
            </brief>
            <version>
 1.0
            </version>
            <Code> var func = function() {
     alert(&quot;CONTENT_START&quot;);
 };
 webapis.adframework.events.addListener(&quot;CONTENT_START&quot;, func, false)
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="eventType">
            <descriptive>
                <description><p>
 Event type to listen for
                </p></description>
            </descriptive>
            <Type type="DOMString"/>
          </Argument>
          <Argument name="onevent">
            <descriptive>
                <description><p>
 Callback function
                </p></description>
            </descriptive>
            <Type name="AdFrameworkCallback"/>
          </Argument>
          <Argument optional="optional" name="invokeOnce">
            <descriptive>
                <description><p>
 [optional][nullable] If true, the handler(func) will only be executed on the next occurrence of the event
                </p></description>
            </descriptive>
            <Type type="boolean" nullable="nullable"/>
          </Argument>
        </ArgumentList>
      </Operation>
      <Operation name="removeListener" id="::AdFramework::AdFrameworkEvents::removeListener">
        <webidl>        void removeListener(DOMString eventType, <ref>AdFrameworkCallback</ref> onevent);</webidl>
        <descriptive>
            <brief>
 Removes an event listener
            </brief>
            <version>
 1.0
            </version>
            <Code> var func = function() {
     alert(&quot;CONTENT_START&quot;);
 };
 webapis.adframework.events.addListener(&quot;CONTENT_START&quot;, func, false)
 
 webapis.adframework.events.removeListener(&quot;CONTENT_START&quot;, func)
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="eventType">
            <descriptive>
                <description><p>
 Event type to remove handler
                </p></description>
            </descriptive>
            <Type type="DOMString"/>
          </Argument>
          <Argument name="onevent">
            <descriptive>
                <description><p>
 Callback function that is registered
                </p></description>
            </descriptive>
            <Type name="AdFrameworkCallback"/>
          </Argument>
        </ArgumentList>
      </Operation>
    </Interface>
    <Interface name="AdFrameworkConfig" id="::AdFramework::AdFrameworkConfig">
      <webidl>    [NoInterfaceObject] interface AdFrameworkConfig {
        void set(DOMString key, long value);

        long get(DOMString key);

    };</webidl>
      <descriptive>
          <brief>
 It provides methods for setting/getting parameters and its values.
          </brief>
          <version>
 1.0
          </version>
      </descriptive>
      <ExtendedAttributeList>
        <ExtendedAttribute name="NoInterfaceObject">
          <webidl>NoInterfaceObject</webidl>
        </ExtendedAttribute>
      </ExtendedAttributeList>
      <Operation name="set" id="::AdFramework::AdFrameworkConfig::set">
        <webidl>        void set(DOMString key, long value);</webidl>
        <descriptive>
            <brief>
 Sets the value of a configuration parameter.
            </brief>
            <version>
 1.0
            </version>
            <Code> webapis.adframework.config.set(&quot;AJAX_TIMEOUT&quot;, 10000)
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="key">
            <descriptive>
                <description><p>
 The configuration key.
                </p></description>
            </descriptive>
            <Type type="DOMString"/>
          </Argument>
          <Argument name="value">
            <descriptive>
                <description><p>
 The configuration value.
                </p></description>
            </descriptive>
            <Type type="long"/>
          </Argument>
        </ArgumentList>
      </Operation>
      <Operation name="get" id="::AdFramework::AdFrameworkConfig::get">
        <webidl>        long get(DOMString key);</webidl>
        <descriptive>
            <brief>
 Gets the value of a configuration parameter.
            </brief>
            <version>
 1.0
            </version>
            <Code> var timeoutMS = webapis.adframework.config.get(&quot;AJAX_TIMEOUT&quot;)
 </Code>
        </descriptive>
        <Type type="long">
          <descriptive>
              <description><p>
 long
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="key">
            <descriptive>
                <description><p>
 The configuration key whose value needs to be get
                </p></description>
            </descriptive>
            <Type type="DOMString"/>
          </Argument>
        </ArgumentList>
      </Operation>
    </Interface>
    <Interface name="AdFrameworkDisplayHandler" id="::AdFramework::AdFrameworkDisplayHandler">
      <webidl>    [NoInterfaceObject] interface AdFrameworkDisplayHandler {
        void init();

        void hideSkipButton();

    };</webidl>
      <descriptive>
          <brief>
 It provides methods for showing/hiding buttons/screens.
          </brief>
          <version>
 1.0
          </version>
      </descriptive>
      <ExtendedAttributeList>
        <ExtendedAttribute name="NoInterfaceObject">
          <webidl>NoInterfaceObject</webidl>
        </ExtendedAttribute>
      </ExtendedAttributeList>
      <Operation name="init" id="::AdFramework::AdFrameworkDisplayHandler::init">
        <webidl>        void init();</webidl>
        <descriptive>
            <brief>
 This API function is used to initialize  the display members like default skip UI button, Iframe etc.
            </brief>
            <version>
 1.0
            </version>
            <Code> if (webapis.adframework.displayhandler) {
     webapis.adframework.displayhandler.init();
 } //Enables default UI (skip UI, etc)
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
      </Operation>
      <Operation name="hideSkipButton" id="::AdFramework::AdFrameworkDisplayHandler::hideSkipButton">
        <webidl>        void hideSkipButton();</webidl>
        <descriptive>
            <brief>
 API provided for application to hide skip button.
            </brief>
            <version>
 1.0
            </version>
            <Code> if (webapis.adframework.displayhandler) {
     webapis.adframework.displayhandler.hideSkipButton();
 }
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
      </Operation>
    </Interface>
    <Interface name="AdFrameworkUtils" id="::AdFramework::AdFrameworkUtils">
      <webidl>    [NoInterfaceObject] interface AdFrameworkUtils {
        DOMString getTimeString(long ms);

    };</webidl>
      <descriptive>
          <brief>
 It provides methods for time conversion from one format to another.
          </brief>
          <version>
 1.0
          </version>
      </descriptive>
      <ExtendedAttributeList>
        <ExtendedAttribute name="NoInterfaceObject">
          <webidl>NoInterfaceObject</webidl>
        </ExtendedAttribute>
      </ExtendedAttributeList>
      <Operation name="getTimeString" id="::AdFramework::AdFrameworkUtils::getTimeString">
        <webidl>        DOMString getTimeString(long ms);</webidl>
        <descriptive>
            <brief>
 This API function converts milliseconds to &quot;HH:MM:SS.mmm&quot;.                                                 AdFramework may return the time in milliseconds,Application can use this function to show the timing in format like &quot;HH:MM:SS.mmm&quot;.
            </brief>
            <version>
 1.0
            </version>
            <Code> var elapsed = webapis.adframework.utils.getTimeString(3600);
 </Code>
        </descriptive>
        <Type type="DOMString">
          <descriptive>
              <description><p>
 DOMString
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="ms">
            <descriptive>
                <description><p>
 milliseconds need to be convert to string format
                </p></description>
            </descriptive>
            <Type type="long"/>
          </Argument>
        </ArgumentList>
      </Operation>
    </Interface>
    <Interface name="AdFrameworkCallback" id="::AdFramework::AdFrameworkCallback">
      <webidl>    [Callback=FunctionOnly, NoInterfaceObject] interface AdFrameworkCallback {
        void onevent(optional any param);

    };</webidl>
      <descriptive>
          <brief>
 This callback interface defines the callback listeners which will be called on particular events.
          </brief>
          <version>
 1.0
          </version>
      </descriptive>
      <ExtendedAttributeList>
        <ExtendedAttribute name="Callback" value="FunctionOnly">
          <webidl>Callback</webidl>
        </ExtendedAttribute>
        <ExtendedAttribute name="NoInterfaceObject">
          <webidl> NoInterfaceObject</webidl>
        </ExtendedAttribute>
      </ExtendedAttributeList>
      <Operation name="onevent" id="::AdFramework::AdFrameworkCallback::onevent">
        <webidl>        void onevent(optional any param);</webidl>
        <descriptive>
            <brief>
 This callback method will be invoked when particular event is occurred.
            </brief>
            <version>
 1.0
            </version>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument optional="optional" name="param">
            <descriptive>
                <description><p>
 [optional][nullable] Parameter can be passed for some particular event. Please refer to each events description.
                </p></description>
            </descriptive>
            <Type type="any"/>
          </Argument>
        </ArgumentList>
      </Operation>
    </Interface>
    <Interface name="AdFrameworkUrlModifierCallback" id="::AdFramework::AdFrameworkUrlModifierCallback">
      <webidl>    [Callback=FunctionOnly, NoInterfaceObject] interface AdFrameworkUrlModifierCallback {
        DOMString onmodify(DOMString originalUrl);

    };</webidl>
      <descriptive>
          <brief>
 This callback interface defines the modifier callback which will be called on modification of URL is allowed by AdFramework.
          </brief>
          <version>
 1.0
          </version>
      </descriptive>
      <ExtendedAttributeList>
        <ExtendedAttribute name="Callback" value="FunctionOnly">
          <webidl>Callback</webidl>
        </ExtendedAttribute>
        <ExtendedAttribute name="NoInterfaceObject">
          <webidl> NoInterfaceObject</webidl>
        </ExtendedAttribute>
      </ExtendedAttributeList>
      <Operation name="onmodify" id="::AdFramework::AdFrameworkUrlModifierCallback::onmodify">
        <webidl>        DOMString onmodify(DOMString originalUrl);</webidl>
        <descriptive>
            <brief>
 This callback method will be invoked when modification of URL is allowed from this framework. Return the modified URL string if you want to change from the passed original URL.
            </brief>
            <version>
 1.0
            </version>
        </descriptive>
        <Type type="DOMString">
          <descriptive>
              <description><p>
 DOMString
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="originalUrl">
            <descriptive>
                <description><p>
 The original URL.
                </p></description>
            </descriptive>
            <Type type="DOMString"/>
          </Argument>
        </ArgumentList>
      </Operation>
    </Interface>
  </Module>
  <Module name="AppCommon" id="::AppCommon">
    <webidl>module AppCommon {
    [NoInterfaceObject] interface AppCommonManagerObject {
        readonly attribute <ref>AppCommonManager</ref> appcommon;

    };
    <ref>WebApi</ref> implements <ref>AppCommonManagerObject</ref>;

    [NoInterfaceObject] interface AppCommonManager {
        attribute <ref>AppCommonScreenSaverState</ref> AppCommonScreenSaverState;

        DOMString getVersion();

        void setScreenSaver(unsigned short state, optional <ref>SuccessCallback</ref>? onsuccess, optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);

    };

    [NoInterfaceObject] interface AppCommonScreenSaverState {
        const unsigned short SCREEN_SAVER_OFF = 0;

        const unsigned short SCREEN_SAVER_ON = 1;

    };

};</webidl>
    <descriptive>
        <brief>
 The module defines the functionalities of getting information that are related application that are provides as the Tizen-based Samsung TV Product API.
        </brief>
        <version>
 1.0.0
        </version>
    </descriptive>
    <Interface name="AppCommonManagerObject" id="::AppCommon::AppCommonManagerObject">
      <webidl>    [NoInterfaceObject] interface AppCommonManagerObject {
        readonly attribute <ref>AppCommonManager</ref> appcommon;

    };</webidl>
      <descriptive>
          <brief>
 The interface defines what is instantiated by the WebApi object of Tizen-based Samsung TV Product API.
There will be a webapis.appcommon object that allows access to the functionality of the AppCommon API
          </brief>
          <version>
 1.0.0
          </version>
      </descriptive>
      <ExtendedAttributeList>
        <ExtendedAttribute name="NoInterfaceObject">
          <webidl>NoInterfaceObject</webidl>
        </ExtendedAttribute>
      </ExtendedAttributeList>
      <Attribute readonly="readonly" name="appcommon" id="::AppCommon::AppCommonManagerObject::appcommon">
        <webidl>        readonly attribute <ref>AppCommonManager</ref> appcommon;</webidl>
        <descriptive>
            <brief>
 Namespace for AppCommon API.
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type name="AppCommonManager"/>
      </Attribute>
    </Interface>
    <Implements name1="WebApi" name2="AppCommonManagerObject">
      <webidl>    <ref>WebApi</ref> implements <ref>AppCommonManagerObject</ref>;</webidl>
    </Implements>
    <Interface name="AppCommonManager" id="::AppCommon::AppCommonManager">
      <webidl>    [NoInterfaceObject] interface AppCommonManager {
        attribute <ref>AppCommonScreenSaverState</ref> AppCommonScreenSaverState;

        DOMString getVersion();

        void setScreenSaver(unsigned short state, optional <ref>SuccessCallback</ref>? onsuccess, optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);

    };</webidl>
      <descriptive>
          <brief>
 This interface provides methods to use the AppCommon functionalities.
          </brief>
          <version>
 1.0.0
          </version>
      </descriptive>
      <ExtendedAttributeList>
        <ExtendedAttribute name="NoInterfaceObject">
          <webidl>NoInterfaceObject</webidl>
        </ExtendedAttribute>
      </ExtendedAttributeList>
      <Attribute name="AppCommonScreenSaverState" id="::AppCommon::AppCommonManager::AppCommonScreenSaverState">
        <webidl>        attribute <ref>AppCommonScreenSaverState</ref> AppCommonScreenSaverState;</webidl>
        <descriptive>
            <brief>
 This attribute defines the state of screen saver.
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type name="AppCommonScreenSaverState"/>
      </Attribute>
      <Operation name="getVersion" id="::AppCommon::AppCommonManager::getVersion">
        <webidl>        DOMString getVersion();</webidl>
        <descriptive>
            <brief>
 This method get the plugin's version number.
            </brief>
            <version>
 1.0
            </version>
            <Code> try {
     var value = webapis.appcommon.getVersion();
     console.log(&quot; version value = &quot; + value);
 } catch (error) {
     console.log(&quot; error code = &quot; + error.code);
 }
 </Code>
        </descriptive>
        <Type type="DOMString">
          <descriptive>
              <description><p>
 DOMString
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
      </Operation>
      <Operation name="setScreenSaver" id="::AppCommon::AppCommonManager::setScreenSaver">
        <webidl>        void setScreenSaver(unsigned short state, optional <ref>SuccessCallback</ref>? onsuccess, optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method set screen saver according to ScreenSaver api.
            </brief>
            <version>
 1.0.0
            </version>
            <Code> function onsuccess(data) {
     console.log(&quot;setScreensavervalue = &quot; + data);
 }
 
 
 function onerror(error) {
     console.log(&quot;error code : &quot; + error.code);
 }
 
 try {
     webapis.appcommon.setScreenSaver(webapis.appcommon.AppCommonScreenSaverState.SCREEN_SAVER_OFF, onsuccess, onerror);
 } catch (error) {
     console.log(&quot; error code = &quot; + error.code);
 }
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="state">
            <descriptive>
                <description><p>
 State of screensaver
                </p></description>
            </descriptive>
            <Type type="unsigned short"/>
          </Argument>
          <Argument optional="optional" name="onsuccess">
            <descriptive>
                <description><p>
 [optional][nullable] 
                </p></description>
            </descriptive>
            <Type name="SuccessCallback" nullable="nullable"/>
          </Argument>
          <Argument optional="optional" name="onerror">
            <descriptive>
                <description><p>
 [optional][nullable] 
                </p></description>
            </descriptive>
            <Type name="ErrorCallback" nullable="nullable"/>
          </Argument>
        </ArgumentList>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type TypeMismatchError, if invalid ErrorCallback type passed for 'onerror' parameter
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
    </Interface>
    <Interface name="AppCommonScreenSaverState" id="::AppCommon::AppCommonScreenSaverState">
      <webidl>    [NoInterfaceObject] interface AppCommonScreenSaverState {
        const unsigned short SCREEN_SAVER_OFF = 0;

        const unsigned short SCREEN_SAVER_ON = 1;

    };</webidl>
      <descriptive>
          <brief>
 This interface defines the state of screen saver.
          </brief>
          <version>
 1.0.0
          </version>
      </descriptive>
      <ExtendedAttributeList>
        <ExtendedAttribute name="NoInterfaceObject">
          <webidl>NoInterfaceObject</webidl>
        </ExtendedAttribute>
      </ExtendedAttributeList>
      <Const name="SCREEN_SAVER_OFF" value="0" id="::AppCommon::AppCommonScreenSaverState::SCREEN_SAVER_OFF">
        <webidl>        const unsigned short SCREEN_SAVER_OFF = 0;</webidl>
        <descriptive>
            <brief>
 screen saver off
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="SCREEN_SAVER_ON" value="1" id="::AppCommon::AppCommonScreenSaverState::SCREEN_SAVER_ON">
        <webidl>        const unsigned short SCREEN_SAVER_ON = 1;</webidl>
        <descriptive>
            <brief>
 screen saver on
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
    </Interface>
  </Module>
  <Module name="AvInfo" id="::AvInfo">
    <webidl>module AvInfo {
    [NoInterfaceObject] interface AvInfoManagerObject {
        readonly attribute <ref>AvInfoManager</ref> avinfo;

    };
    <ref>WebApi</ref> implements <ref>AvInfoManagerObject</ref>;

    [NoInterfaceObject] interface AvInfoManager {
        DOMString getVersion();

        boolean setWideScreenMode(unsigned long desktopId, unsigned short screenMode) raises(<ref>WebAPIException</ref>);

        unsigned short getDolbyDigitalCompMode();

        boolean isHdrTvSupport();

    };

    [NoInterfaceObject] interface AvInfoScreenMode {
        const unsigned short SCREEN_MODE_WIDESCREEN = 0;

        const unsigned short SCREEN_MODE_SUPERWIDESCREEN = 1;

        const unsigned short SCREEN_MODE_PANORAMA = 2;

    };
    <ref>AvInfoManager</ref> implements <ref>AvInfoScreenMode</ref>;

    [NoInterfaceObject] interface AvInfoDigitalCompMode {
        const unsigned short DOLBY_DIGITAL_COMP_MODE_LINE = 0;

        const unsigned short DOLBY_DIGITAL_COMP_MODE_RF = 1;

    };
    <ref>AvInfoManager</ref> implements <ref>AvInfoDigitalCompMode</ref>;

};</webidl>
    <descriptive>
        <brief>
 The module defines the functionalities of TV settings value that are provides as the Tizen-based Samsung TV Product API.
        </brief>
        <version>
 1.0.0
        </version>
    </descriptive>
    <Interface name="AvInfoManagerObject" id="::AvInfo::AvInfoManagerObject">
      <webidl>    [NoInterfaceObject] interface AvInfoManagerObject {
        readonly attribute <ref>AvInfoManager</ref> avinfo;

    };</webidl>
      <descriptive>
          <brief>
 The interface defines what is instantiated by the WebApi object of Tizen-based Samsung TV Product API.
There will be a webapis.avinfo object that allows access to the functionality of the AvInfo API
          </brief>
          <version>
 1.0.0
          </version>
      </descriptive>
      <ExtendedAttributeList>
        <ExtendedAttribute name="NoInterfaceObject">
          <webidl>NoInterfaceObject</webidl>
        </ExtendedAttribute>
      </ExtendedAttributeList>
      <Attribute readonly="readonly" name="avinfo" id="::AvInfo::AvInfoManagerObject::avinfo">
        <webidl>        readonly attribute <ref>AvInfoManager</ref> avinfo;</webidl>
        <descriptive>
            <brief>
 Namespace for AvInfo API.
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type name="AvInfoManager"/>
      </Attribute>
    </Interface>
    <Implements name1="WebApi" name2="AvInfoManagerObject">
      <webidl>    <ref>WebApi</ref> implements <ref>AvInfoManagerObject</ref>;</webidl>
    </Implements>
    <Interface name="AvInfoManager" id="::AvInfo::AvInfoManager">
      <webidl>    [NoInterfaceObject] interface AvInfoManager {
        DOMString getVersion();

        boolean setWideScreenMode(unsigned long desktopId, unsigned short screenMode) raises(<ref>WebAPIException</ref>);

        unsigned short getDolbyDigitalCompMode();

        boolean isHdrTvSupport();

    };</webidl>
      <descriptive>
          <brief>
 This interface provides methods to use the AvInfo functionalities.
          </brief>
          <version>
 1.0.0
          </version>
      </descriptive>
      <ExtendedAttributeList>
        <ExtendedAttribute name="NoInterfaceObject">
          <webidl>NoInterfaceObject</webidl>
        </ExtendedAttribute>
      </ExtendedAttributeList>
      <Operation name="getVersion" id="::AvInfo::AvInfoManager::getVersion">
        <webidl>        DOMString getVersion();</webidl>
        <descriptive>
            <brief>
 This method get the plugin's version number.
            </brief>
            <version>
 1.0.0
            </version>
            <Code> try {
     var value = webapis.avinfo.getVersion();
     console.log(&quot; version value = &quot; + value);
 } catch (error) {
     console.log(&quot; error code = &quot; + error.code);
 }
 </Code>
        </descriptive>
        <Type type="DOMString">
          <descriptive>
              <description><p>
 DOMString
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
      </Operation>
      <Operation name="setWideScreenMode" id="::AvInfo::AvInfoManager::setWideScreenMode">
        <webidl>        boolean setWideScreenMode(unsigned long desktopId, unsigned short screenMode) raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method set widescreen mode.
            </brief>
            <version>
 1.0.0
            </version>
            <Code> try {
     var flag = webapis.avinfo.setWideScreenMode(2, webapis.avinfo.SCREEN_MODE_SUPERWIDESCREEN);
     console.log(&quot;flag = &quot; + flag);
 } catch (error) {
     console.log(&quot; error code = &quot; + error.code);
 }
 </Code>
        </descriptive>
        <Type type="boolean">
          <descriptive>
              <description><p>
 boolean
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="desktopId">
            <descriptive>
                <description><p>
 desktop Id
                </p></description>
            </descriptive>
            <Type type="unsigned long"/>
          </Argument>
          <Argument name="screenMode">
            <descriptive>
                <description><p>
 AvInfoScreenMode
                </p></description>
            </descriptive>
            <Type type="unsigned short"/>
          </Argument>
        </ArgumentList>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type TypeMismatchError, if invalid short type passed for 'screenMode' parameter
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
      <Operation name="getDolbyDigitalCompMode" id="::AvInfo::AvInfoManager::getDolbyDigitalCompMode">
        <webidl>        unsigned short getDolbyDigitalCompMode();</webidl>
        <descriptive>
            <brief>
 This method get dolby digital component mode.
            </brief>
            <version>
 1.0.0
            </version>
            <Code> try {
     var mode = webapis.avinfo.getDolbyDigitalCompMode();
     console.log(&quot; mode = &quot; + mode);
 } catch (error) {
     console.log(&quot; error code = &quot; + error.code);
 }
 </Code>
        </descriptive>
        <Type type="unsigned short">
          <descriptive>
              <description><p>
 unsigned short
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
      </Operation>
      <Operation name="isHdrTvSupport" id="::AvInfo::AvInfoManager::isHdrTvSupport">
        <webidl>        boolean isHdrTvSupport();</webidl>
        <descriptive>
            <brief>
 This method is to check whether the HDR is supported or not.
            </brief>
            <version>
 1.0.0
            </version>
            <Code> try {
     var nResult = webapis.avinfo.isHdrTvSupport();
     console.log(&quot; nResult = &quot; + nResult);
 } catch (error) {
     console.log(&quot; error code = &quot; + error.code);
 }
 </Code>
        </descriptive>
        <Type type="boolean">
          <descriptive>
              <description><p>
 boolean
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
      </Operation>
    </Interface>
    <Interface name="AvInfoScreenMode" id="::AvInfo::AvInfoScreenMode">
      <webidl>    [NoInterfaceObject] interface AvInfoScreenMode {
        const unsigned short SCREEN_MODE_WIDESCREEN = 0;

        const unsigned short SCREEN_MODE_SUPERWIDESCREEN = 1;

        const unsigned short SCREEN_MODE_PANORAMA = 2;

    };</webidl>
      <descriptive>
          <brief>
 This interface defines the ScreenMode
          </brief>
          <version>
 1.0.0
          </version>
      </descriptive>
      <ExtendedAttributeList>
        <ExtendedAttribute name="NoInterfaceObject">
          <webidl>NoInterfaceObject</webidl>
        </ExtendedAttribute>
      </ExtendedAttributeList>
      <Const name="SCREEN_MODE_WIDESCREEN" value="0" id="::AvInfo::AvInfoScreenMode::SCREEN_MODE_WIDESCREEN">
        <webidl>        const unsigned short SCREEN_MODE_WIDESCREEN = 0;</webidl>
        <descriptive>
            <brief>
 widescreen (16:9)
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="SCREEN_MODE_SUPERWIDESCREEN" value="1" id="::AvInfo::AvInfoScreenMode::SCREEN_MODE_SUPERWIDESCREEN">
        <webidl>        const unsigned short SCREEN_MODE_SUPERWIDESCREEN = 1;</webidl>
        <descriptive>
            <brief>
 super widescreen (21:9)
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="SCREEN_MODE_PANORAMA" value="2" id="::AvInfo::AvInfoScreenMode::SCREEN_MODE_PANORAMA">
        <webidl>        const unsigned short SCREEN_MODE_PANORAMA = 2;</webidl>
        <descriptive>
            <brief>
 panorama
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
    </Interface>
    <Implements name1="AvInfoManager" name2="AvInfoScreenMode">
      <webidl>    <ref>AvInfoManager</ref> implements <ref>AvInfoScreenMode</ref>;</webidl>
    </Implements>
    <Interface name="AvInfoDigitalCompMode" id="::AvInfo::AvInfoDigitalCompMode">
      <webidl>    [NoInterfaceObject] interface AvInfoDigitalCompMode {
        const unsigned short DOLBY_DIGITAL_COMP_MODE_LINE = 0;

        const unsigned short DOLBY_DIGITAL_COMP_MODE_RF = 1;

    };</webidl>
      <descriptive>
          <brief>
 This interface defines the digital mode
          </brief>
          <version>
 1.0.0
          </version>
      </descriptive>
      <ExtendedAttributeList>
        <ExtendedAttribute name="NoInterfaceObject">
          <webidl>NoInterfaceObject</webidl>
        </ExtendedAttribute>
      </ExtendedAttributeList>
      <Const name="DOLBY_DIGITAL_COMP_MODE_LINE" value="0" id="::AvInfo::AvInfoDigitalCompMode::DOLBY_DIGITAL_COMP_MODE_LINE">
        <webidl>        const unsigned short DOLBY_DIGITAL_COMP_MODE_LINE = 0;</webidl>
        <descriptive>
            <brief>
 line mode
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="DOLBY_DIGITAL_COMP_MODE_RF" value="1" id="::AvInfo::AvInfoDigitalCompMode::DOLBY_DIGITAL_COMP_MODE_RF">
        <webidl>        const unsigned short DOLBY_DIGITAL_COMP_MODE_RF = 1;</webidl>
        <descriptive>
            <brief>
 rf mode
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
    </Interface>
    <Implements name1="AvInfoManager" name2="AvInfoDigitalCompMode">
      <webidl>    <ref>AvInfoManager</ref> implements <ref>AvInfoDigitalCompMode</ref>;</webidl>
    </Implements>
  </Module>
  <Module name="AVPlay" id="::AVPlay">
    <webidl>module AVPlay {
    enum AVPlayPlayerState {&quot;NONE&quot;, &quot;IDLE&quot;, &quot;READY&quot;, &quot;PLAYING&quot;, &quot;PAUSED&quot;};

    enum AVPlayDisplayMethod {&quot;PLAYER_DISPLAY_MODE_LETTER_BOX&quot;, &quot;PLAYER_DISPLAY_MODE_ORIGIN_SIZE&quot;, &quot;PLAYER_DISPLAY_MODE_FULL_SCREEN&quot;, &quot;PLAYER_DISPLAY_MODE_CROPPED_FULL&quot;, &quot;PLAYER_DISPLAY_MODE_ZOOM_HALF&quot;, &quot;PLAYER_DISPLAY_MODE_ZOOM_THREE_QUARTERS&quot;, &quot;PLAYER_DISPLAY_MODE_ORIGIN_OR_LETTER&quot;, &quot;PLAYER_DISPLAY_MODE_DST_ROI&quot;, &quot;PLAYER_DISPLAY_MODE_ZOOM_16_9&quot;, &quot;PLAYER_DISPLAY_MODE_ZOOM&quot;, &quot;PLAYER_DISPLAY_MODE_ZOOM_CUSTOM&quot;};

    enum AVPlayStreamingPropertyType {&quot;COOKIE&quot;, &quot;USER_AGENT&quot;, &quot;PREBUFFER_MODE&quot;, &quot;ADAPTIVE_INFO&quot;, &quot;SET_MODE_3D&quot;, &quot;SET_MODE_4K&quot;, &quot;HD_AUDIO&quot;, &quot;WIDEVINE&quot;};

    enum AVPlayDrmType {&quot;PLAYREADY&quot;, &quot;MARLIN&quot;, &quot;VERIMATRIX&quot;, &quot;WIDEVINE_CLASSIC&quot;, &quot;SECUREMEDIA&quot;, &quot;SDRM&quot;};

    enum AVPlayDrmOperation {&quot;SETPROPERTIES&quot;, &quot;GENCHALLENGE&quot;, &quot;INSTALLLICENSE&quot;, &quot;DELETELLICENSE&quot;, &quot;PROCESSINITIATOR&quot;, &quot;GETVERSION&quot;};

    enum AVPlayStreamType {&quot;VIDEO&quot;, &quot;AUDIO&quot;, &quot;TEXT&quot;};

    [NoInterfaceObject] interface AVPlayManagerObject {
        readonly attribute <ref>AVPlayManager</ref> avplay;

    };
    <ref>WebApi</ref> implements <ref>AVPlayManagerObject</ref>;

    [NoInterfaceObject] interface AVPlayManager {
        void open(DOMString url) raises(<ref>WebAPIException</ref>);

        void close() raises(<ref>WebAPIException</ref>);

        void prepare() raises(<ref>WebAPIException</ref>);

        void prepareAsync(optional <ref>SuccessCallback</ref>? successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);

        void setDisplayRect(long x, long y, long width, long height) raises(<ref>WebAPIException</ref>);

        void play() raises(<ref>WebAPIException</ref>);

        void seekTo(long milliseconds, optional <ref>SuccessCallback</ref>? successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);

        void stop() raises(<ref>WebAPIException</ref>);

        <ref>AVPlayPlayerState</ref> getState() raises(<ref>WebAPIException</ref>);

        void pause() raises(<ref>WebAPIException</ref>);

        void jumpForward(long milliseconds, optional <ref>SuccessCallback</ref>? successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);

        void jumpBackward(long milliseconds, optional <ref>SuccessCallback</ref>? successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);

        unsigned long getDuration() raises(<ref>WebAPIException</ref>);

        unsigned long getCurrentTime() raises(<ref>WebAPIException</ref>);

        void setSpeed(long playbackSpeed) raises(<ref>WebAPIException</ref>);

        void setListener(<ref>AVPlayPlaybackCallback</ref> playbackCallback) raises(<ref>WebAPIException</ref>);

        void setTimeoutForBuffering(long initialTimeOutInSec) raises(<ref>WebAPIException</ref>);

        void setSoundAnalysisListener(<ref>AVPlaySoundAnalysisCallback</ref> soundAnalysisCallback) raises(<ref>WebAPIException</ref>);

        void unsetSoundAnalysisListener() raises(<ref>WebAPIException</ref>);

        void setSilentSubtitle(boolean onoff) raises(<ref>WebAPIException</ref>);

        void setExternalSubtitlePath(DOMString pFilePath) raises(<ref>WebAPIException</ref>);

        void setSubtitlePosition(unsigned long position) raises(<ref>WebAPIException</ref>);

        void setDisplayMethod(<ref>AVPlayDisplayMode</ref> displayMode) raises(<ref>WebAPIException</ref>);

        void setSelectTrack(<ref>AVPlayStreamType</ref> trackType, long trackIndex) raises(<ref>WebAPIException</ref>);

        <ref>AVPlayStreamInfo</ref> getCurrentStreamInfo() raises(<ref>WebAPIException</ref>);

        <ref>AVPlayStreamInfo</ref>[] getTotalTrackInfo() raises(<ref>WebAPIException</ref>);

        void setStreamingProperty(<ref>AVPlayStreamingPropertyType</ref> propertyType, <ref>Any</ref> propparam) raises(<ref>WebAPIException</ref>);

        <ref>Any</ref> getStreamingProperty(<ref>AVPlayStreamingPropertyType</ref> propertyType) raises(<ref>WebAPIException</ref>);

        DOMString getVersion() raises(<ref>WebAPIException</ref>);

    };

    [Callback, NoInterfaceObject] interface AVPlayPlaybackCallback {
        void onbufferingstart() raises(<ref>WebAPIException</ref>);

        void onbufferingprogress(unsigned long percent) raises(<ref>WebAPIException</ref>);

        void onbufferingcomplete() raises(<ref>WebAPIException</ref>);

        void oncurrentplaytime(unsigned long currentTime) raises(<ref>WebAPIException</ref>);

        void onstreamcompleted() raises(<ref>WebAPIException</ref>);

        void onevent(long eventid, DOMString data) raises(<ref>WebAPIException</ref>);

        void onerror(long eventid) raises(<ref>WebAPIException</ref>);

        void ondrmevent(<ref>AVPlayDrmType</ref> type, long eventid) raises(<ref>WebAPIException</ref>);

        void onsubtitlechange(unsigned long duration, DOMString subtitles, unsigned long type, unsigned long attriCount, <ref>AVPlaySubtitleAttribute</ref> attributes) raises(<ref>WebAPIException</ref>);

    };

    [Callback, NoInterfaceObject] interface AVPlaySoundAnalysisCallback {
        <ref>BasePlatformException</ref> ongetexception() raises(<ref>WebAPIException</ref>);

        void onsetexception(<ref>BasePlatformException</ref> err) raises(<ref>WebAPIException</ref>);

        long ongetbandsarray() raises(<ref>WebAPIException</ref>);

    };

};</webidl>
    <descriptive>
        <brief>
 The module defines the functionalities of player that are exposed which could be easily used by app or widget developer to support multimedia playback for audio or video that are provides as the Tizen-based Samsung TV Product API.
        </brief>
        <version>
 1.0
        </version>
    </descriptive>
    <Enum name="AVPlayPlayerState" id="::AVPlay::AVPlayPlayerState">
      <webidl>    enum AVPlayPlayerState {&quot;NONE&quot;, &quot;IDLE&quot;, &quot;READY&quot;, &quot;PLAYING&quot;, &quot;PAUSED&quot;};</webidl>
      <descriptive>
          <brief>
 This enumeration defines the state of the player.
The values defined by this enumerator are:
          </brief>
         <description>
          <ul>
            <li>
&quot;NONE&quot; - Indicates that the player is not created            </li>
            <li>
&quot;IDLE&quot; - Indicates that the player is created but not prepared            </li>
            <li>
&quot;READY&quot; - Indicates that the player is ready to play media            </li>
            <li>
&quot;PLAYING&quot; - Indicates that the player is paying media            </li>
            <li>
&quot;PAUSED&quot; - Indicates that the player is paused            </li>
          </ul>
         </description>
          <version>
 1.0
          </version>
      </descriptive>
      <EnumValue stringvalue="NONE">
        <webidl>&quot;NONE</webidl>
      </EnumValue>
      <EnumValue stringvalue="IDLE">
        <webidl> &quot;IDLE</webidl>
      </EnumValue>
      <EnumValue stringvalue="READY">
        <webidl> &quot;READY</webidl>
      </EnumValue>
      <EnumValue stringvalue="PLAYING">
        <webidl> &quot;PLAYING</webidl>
      </EnumValue>
      <EnumValue stringvalue="PAUSED">
        <webidl> &quot;PAUSED</webidl>
      </EnumValue>
    </Enum>
    <Enum name="AVPlayDisplayMethod" id="::AVPlay::AVPlayDisplayMethod">
      <webidl>    enum AVPlayDisplayMethod {&quot;PLAYER_DISPLAY_MODE_LETTER_BOX&quot;, &quot;PLAYER_DISPLAY_MODE_ORIGIN_SIZE&quot;, &quot;PLAYER_DISPLAY_MODE_FULL_SCREEN&quot;, &quot;PLAYER_DISPLAY_MODE_CROPPED_FULL&quot;, &quot;PLAYER_DISPLAY_MODE_ZOOM_HALF&quot;, &quot;PLAYER_DISPLAY_MODE_ZOOM_THREE_QUARTERS&quot;, &quot;PLAYER_DISPLAY_MODE_ORIGIN_OR_LETTER&quot;, &quot;PLAYER_DISPLAY_MODE_DST_ROI&quot;, &quot;PLAYER_DISPLAY_MODE_ZOOM_16_9&quot;, &quot;PLAYER_DISPLAY_MODE_ZOOM&quot;, &quot;PLAYER_DISPLAY_MODE_ZOOM_CUSTOM&quot;};</webidl>
      <descriptive>
          <brief>
 This enumeration defines the possible values for webapis.avplay.setDisplayMode() method
The values defined by this enumerator are:
          </brief>
         <description>
          <ul>
            <li>
&quot;PLAYER_DISPLAY_MODE_LETTER_BOX&quot; - Letter box            </li>
            <li>
&quot;PLAYER_DISPLAY_MODE_ORIGIN_SIZE&quot; - Origin size            </li>
            <li>
&quot;PLAYER_DISPLAY_MODE_FULL_SCREEN&quot; - full-screen            </li>
            <li>
&quot;PLAYER_DISPLAY_MODE_CROPPED_FULL&quot; - Cropped full-screen            </li>
            <li>
&quot;PLAYER_DISPLAY_MODE_ZOOM_HALF&quot; - zoom half            </li>
            <li>
&quot;PLAYER_DISPLAY_MODE_ZOOM_THREE_QUARTERS&quot; - zoom three quarters            </li>
            <li>
&quot;PLAYER_DISPLAY_MODE_ORIGIN_OR_LETTER&quot; - Origin size (if surface size is larger than video size(width/height)) or Letter box (if video size(width/height) is larger than surface size)            </li>
            <li>
&quot;PLAYER_DISPLAY_MODE_DST_ROI&quot; - Dst ROI mode            </li>
            <li>
&quot;PLAYER_DISPLAY_MODE_ZOOM_16_9&quot; - 16*9            </li>
            <li>
&quot;PLAYER_DISPLAY_MODE_ZOOM&quot; - WZOOM            </li>
            <li>
&quot;PLAYER_DISPLAY_MODE_ZOOM_CUSTOM&quot; - ZOOM CUSTOM            </li>
          </ul>
         </description>
          <version>
 1.0
          </version>
      </descriptive>
      <EnumValue stringvalue="PLAYER_DISPLAY_MODE_LETTER_BOX">
        <webidl>&quot;PLAYER_DISPLAY_MODE_LETTER_BOX</webidl>
      </EnumValue>
      <EnumValue stringvalue="PLAYER_DISPLAY_MODE_ORIGIN_SIZE">
        <webidl> &quot;PLAYER_DISPLAY_MODE_ORIGIN_SIZE</webidl>
      </EnumValue>
      <EnumValue stringvalue="PLAYER_DISPLAY_MODE_FULL_SCREEN">
        <webidl> &quot;PLAYER_DISPLAY_MODE_FULL_SCREEN</webidl>
      </EnumValue>
      <EnumValue stringvalue="PLAYER_DISPLAY_MODE_CROPPED_FULL">
        <webidl> &quot;PLAYER_DISPLAY_MODE_CROPPED_FULL</webidl>
      </EnumValue>
      <EnumValue stringvalue="PLAYER_DISPLAY_MODE_ZOOM_HALF">
        <webidl> &quot;PLAYER_DISPLAY_MODE_ZOOM_HALF</webidl>
      </EnumValue>
      <EnumValue stringvalue="PLAYER_DISPLAY_MODE_ZOOM_THREE_QUARTERS">
        <webidl> &quot;PLAYER_DISPLAY_MODE_ZOOM_THREE_QUARTERS</webidl>
      </EnumValue>
      <EnumValue stringvalue="PLAYER_DISPLAY_MODE_ORIGIN_OR_LETTER">
        <webidl> &quot;PLAYER_DISPLAY_MODE_ORIGIN_OR_LETTER</webidl>
      </EnumValue>
      <EnumValue stringvalue="PLAYER_DISPLAY_MODE_DST_ROI">
        <webidl> &quot;PLAYER_DISPLAY_MODE_DST_ROI</webidl>
      </EnumValue>
      <EnumValue stringvalue="PLAYER_DISPLAY_MODE_ZOOM_16_9">
        <webidl> &quot;PLAYER_DISPLAY_MODE_ZOOM_16_9</webidl>
      </EnumValue>
      <EnumValue stringvalue="PLAYER_DISPLAY_MODE_ZOOM">
        <webidl> &quot;PLAYER_DISPLAY_MODE_ZOOM</webidl>
      </EnumValue>
      <EnumValue stringvalue="PLAYER_DISPLAY_MODE_ZOOM_CUSTOM">
        <webidl> &quot;PLAYER_DISPLAY_MODE_ZOOM_CUSTOM</webidl>
      </EnumValue>
    </Enum>
    <Enum name="AVPlayStreamingPropertyType" id="::AVPlay::AVPlayStreamingPropertyType">
      <webidl>    enum AVPlayStreamingPropertyType {&quot;COOKIE&quot;, &quot;USER_AGENT&quot;, &quot;PREBUFFER_MODE&quot;, &quot;ADAPTIVE_INFO&quot;, &quot;SET_MODE_3D&quot;, &quot;SET_MODE_4K&quot;, &quot;HD_AUDIO&quot;, &quot;WIDEVINE&quot;};</webidl>
      <descriptive>
          <brief>
 This enumeration sets the value for specific Feature in the HTTP, MMS &#38; Streaming Engine (Smooth Streaming, HLS, DASH, DivX Plus Streaming, Widevine). When special setting is required in Streaming Engine for the Start Bitrate setting &#38;specific CP, the CUSTOM_MESSAGE Property can be set.
The values defined by this enumerator are:
          </brief>
         <description>
          <ul>
            <li>
&quot;COOKIE&quot; : sets  http cookie            </li>
            <li>
&quot;USER_AGENT&quot; : sets http user agent            </li>
            <li>
&quot;PREBUFFER_MODE&quot; : TRUE or FALSE            </li>
            <li>
&quot;ADAPTIVE_INFO&quot; : - &quot;BITRATES&quot; or &quot;STARTBITRATE&quot; or &quot;SKIPBITRATE&quot;            </li>
            <li>
&quot;SET_MODE_3D&quot; : for setting 3D mode            </li>
            <li>
&quot;SET_MODE_4K&quot;: for setting 4K mode            </li>
            <li>
&quot;HD_AUDIO&quot; : for HD audio            </li>
            <li>
&quot;WIDEVINE&quot; : for setting streaming type - WIDEVINE is an example string, this could be other DRM - refer DrmType            </li>
          </ul>
         </description>
          <version>
 1.0
          </version>
      </descriptive>
      <EnumValue stringvalue="COOKIE">
        <webidl>&quot;COOKIE</webidl>
      </EnumValue>
      <EnumValue stringvalue="USER_AGENT">
        <webidl> &quot;USER_AGENT</webidl>
      </EnumValue>
      <EnumValue stringvalue="PREBUFFER_MODE">
        <webidl> &quot;PREBUFFER_MODE</webidl>
      </EnumValue>
      <EnumValue stringvalue="ADAPTIVE_INFO">
        <webidl> &quot;ADAPTIVE_INFO</webidl>
      </EnumValue>
      <EnumValue stringvalue="SET_MODE_3D">
        <webidl> &quot;SET_MODE_3D</webidl>
      </EnumValue>
      <EnumValue stringvalue="SET_MODE_4K">
        <webidl> &quot;SET_MODE_4K</webidl>
      </EnumValue>
      <EnumValue stringvalue="HD_AUDIO">
        <webidl> &quot;HD_AUDIO</webidl>
      </EnumValue>
      <EnumValue stringvalue="WIDEVINE">
        <webidl> &quot;WIDEVINE</webidl>
      </EnumValue>
    </Enum>
    <Enum name="AVPlayDrmType" id="::AVPlay::AVPlayDrmType">
      <webidl>    enum AVPlayDrmType {&quot;PLAYREADY&quot;, &quot;MARLIN&quot;, &quot;VERIMATRIX&quot;, &quot;WIDEVINE_CLASSIC&quot;, &quot;SECUREMEDIA&quot;, &quot;SDRM&quot;};</webidl>
      <descriptive>
          <brief>
 This enumeration specifies the different DrmTypes defined by the player.
The values defined by this enumerator are:
          </brief>
         <description>
          <ul>
            <li>
&quot;PLAYREADY&quot; - indicates drm type is PlayReady            </li>
            <li>
&quot;MARLIN&quot; - indicates drm type is marlin            </li>
            <li>
&quot;VERIMATRIX&quot; - indicates drm type is verimatrix            </li>
            <li>
&quot;WIDEVINE_CLASSIC&quot; - indicates drm type is widevine classic            </li>
            <li>
&quot;SECUREMEDIA&quot; - indicates drm type is secure media            </li>
            <li>
&quot;SDRM&quot; - indicates drm type is sdrm            </li>
          </ul>
         </description>
          <version>
 1.0
          </version>
      </descriptive>
      <EnumValue stringvalue="PLAYREADY">
        <webidl>&quot;PLAYREADY</webidl>
      </EnumValue>
      <EnumValue stringvalue="MARLIN">
        <webidl> &quot;MARLIN</webidl>
      </EnumValue>
      <EnumValue stringvalue="VERIMATRIX">
        <webidl> &quot;VERIMATRIX</webidl>
      </EnumValue>
      <EnumValue stringvalue="WIDEVINE_CLASSIC">
        <webidl> &quot;WIDEVINE_CLASSIC</webidl>
      </EnumValue>
      <EnumValue stringvalue="SECUREMEDIA">
        <webidl> &quot;SECUREMEDIA</webidl>
      </EnumValue>
      <EnumValue stringvalue="SDRM">
        <webidl> &quot;SDRM</webidl>
      </EnumValue>
    </Enum>
    <Enum name="AVPlayDrmOperation" id="::AVPlay::AVPlayDrmOperation">
      <webidl>    enum AVPlayDrmOperation {&quot;SETPROPERTIES&quot;, &quot;GENCHALLENGE&quot;, &quot;INSTALLLICENSE&quot;, &quot;DELETELLICENSE&quot;, &quot;PROCESSINITIATOR&quot;, &quot;GETVERSION&quot;};</webidl>
      <descriptive>
          <brief>
 This enumeration defines the different DrmOperations by the player.
The values defined by this enumerator are:
          </brief>
         <description>
          <ul>
            <li>
&quot;SETPROPERTIES&quot; - Setting properties of a DRM instance            </li>
            <li>
&quot;GENCHALLENGE&quot; - Enabling challenge message instead of DRM’s connecting to a license server, if true. [ true/false] default is false.            </li>
            <li>
&quot;INSTALLLICENSE&quot; - Installing a license into a DRM instance.            </li>
            <li>
&quot;DELETELLICENSE&quot; - deleting a license into a DRM instance.            </li>
            <li>
&quot;PROCESSINITIATOR&quot; - requests key to DRM license server with the initiator information.            </li>
            <li>
&quot;GETVERSION&quot; - Querying the version of DRM            </li>
          </ul>
         </description>
          <version>
 1.0
          </version>
      </descriptive>
      <EnumValue stringvalue="SETPROPERTIES">
        <webidl>&quot;SETPROPERTIES</webidl>
      </EnumValue>
      <EnumValue stringvalue="GENCHALLENGE">
        <webidl> &quot;GENCHALLENGE</webidl>
      </EnumValue>
      <EnumValue stringvalue="INSTALLLICENSE">
        <webidl> &quot;INSTALLLICENSE</webidl>
      </EnumValue>
      <EnumValue stringvalue="DELETELLICENSE">
        <webidl> &quot;DELETELLICENSE</webidl>
      </EnumValue>
      <EnumValue stringvalue="PROCESSINITIATOR">
        <webidl> &quot;PROCESSINITIATOR</webidl>
      </EnumValue>
      <EnumValue stringvalue="GETVERSION">
        <webidl> &quot;GETVERSION</webidl>
      </EnumValue>
    </Enum>
    <Enum name="AVPlayStreamType" id="::AVPlay::AVPlayStreamType">
      <webidl>    enum AVPlayStreamType {&quot;VIDEO&quot;, &quot;AUDIO&quot;, &quot;TEXT&quot;};</webidl>
      <descriptive>
          <brief>
 This enumeration defines the Stream Types defined by the player.
The values defined by this enumerator are:
          </brief>
         <description>
          <ul>
            <li>
&quot;VIDEO&quot; - indicates video track.            </li>
            <li>
&quot;AUDIO&quot; - indicates audio trackk.            </li>
            <li>
&quot;TEXT&quot; - indicates audio track.            </li>
          </ul>
         </description>
          <version>
 1.0
          </version>
      </descriptive>
      <EnumValue stringvalue="VIDEO">
        <webidl>&quot;VIDEO</webidl>
      </EnumValue>
      <EnumValue stringvalue="AUDIO">
        <webidl> &quot;AUDIO</webidl>
      </EnumValue>
      <EnumValue stringvalue="TEXT">
        <webidl> &quot;TEXT</webidl>
      </EnumValue>
    </Enum>
    <Interface name="AVPlayManagerObject" id="::AVPlay::AVPlayManagerObject">
      <webidl>    [NoInterfaceObject] interface AVPlayManagerObject {
        readonly attribute <ref>AVPlayManager</ref> avplay;

    };</webidl>
      <descriptive>
          <brief>
 The interface defines what is instantiated by the WebApi object of Tizen-based Samsung TV Product API.
There will be a webapis object that allows access to the functionality of the AVPlay API
          </brief>
          <version>
 1.0
          </version>
      </descriptive>
      <ExtendedAttributeList>
        <ExtendedAttribute name="NoInterfaceObject">
          <webidl>NoInterfaceObject</webidl>
        </ExtendedAttribute>
      </ExtendedAttributeList>
      <Attribute readonly="readonly" name="avplay" id="::AVPlay::AVPlayManagerObject::avplay">
        <webidl>        readonly attribute <ref>AVPlayManager</ref> avplay;</webidl>
        <descriptive>
            <brief>
 Namespace for AVPlay API.
            </brief>
            <version>
 1.0
            </version>
        </descriptive>
        <Type name="AVPlayManager"/>
      </Attribute>
    </Interface>
    <Implements name1="WebApi" name2="AVPlayManagerObject">
      <webidl>    <ref>WebApi</ref> implements <ref>AVPlayManagerObject</ref>;</webidl>
    </Implements>
    <Interface name="AVPlayManager" id="::AVPlay::AVPlayManager">
      <webidl>    [NoInterfaceObject] interface AVPlayManager {
        void open(DOMString url) raises(<ref>WebAPIException</ref>);

        void close() raises(<ref>WebAPIException</ref>);

        void prepare() raises(<ref>WebAPIException</ref>);

        void prepareAsync(optional <ref>SuccessCallback</ref>? successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);

        void setDisplayRect(long x, long y, long width, long height) raises(<ref>WebAPIException</ref>);

        void play() raises(<ref>WebAPIException</ref>);

        void seekTo(long milliseconds, optional <ref>SuccessCallback</ref>? successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);

        void stop() raises(<ref>WebAPIException</ref>);

        <ref>AVPlayPlayerState</ref> getState() raises(<ref>WebAPIException</ref>);

        void pause() raises(<ref>WebAPIException</ref>);

        void jumpForward(long milliseconds, optional <ref>SuccessCallback</ref>? successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);

        void jumpBackward(long milliseconds, optional <ref>SuccessCallback</ref>? successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);

        unsigned long getDuration() raises(<ref>WebAPIException</ref>);

        unsigned long getCurrentTime() raises(<ref>WebAPIException</ref>);

        void setSpeed(long playbackSpeed) raises(<ref>WebAPIException</ref>);

        void setListener(<ref>AVPlayPlaybackCallback</ref> playbackCallback) raises(<ref>WebAPIException</ref>);

        void setTimeoutForBuffering(long initialTimeOutInSec) raises(<ref>WebAPIException</ref>);

        void setSoundAnalysisListener(<ref>AVPlaySoundAnalysisCallback</ref> soundAnalysisCallback) raises(<ref>WebAPIException</ref>);

        void unsetSoundAnalysisListener() raises(<ref>WebAPIException</ref>);

        void setSilentSubtitle(boolean onoff) raises(<ref>WebAPIException</ref>);

        void setExternalSubtitlePath(DOMString pFilePath) raises(<ref>WebAPIException</ref>);

        void setSubtitlePosition(unsigned long position) raises(<ref>WebAPIException</ref>);

        void setDisplayMethod(<ref>AVPlayDisplayMode</ref> displayMode) raises(<ref>WebAPIException</ref>);

        void setSelectTrack(<ref>AVPlayStreamType</ref> trackType, long trackIndex) raises(<ref>WebAPIException</ref>);

        <ref>AVPlayStreamInfo</ref> getCurrentStreamInfo() raises(<ref>WebAPIException</ref>);

        <ref>AVPlayStreamInfo</ref>[] getTotalTrackInfo() raises(<ref>WebAPIException</ref>);

        void setStreamingProperty(<ref>AVPlayStreamingPropertyType</ref> propertyType, <ref>Any</ref> propparam) raises(<ref>WebAPIException</ref>);

        <ref>Any</ref> getStreamingProperty(<ref>AVPlayStreamingPropertyType</ref> propertyType) raises(<ref>WebAPIException</ref>);

        DOMString getVersion() raises(<ref>WebAPIException</ref>);

    };</webidl>
      <descriptive>
          <brief>
 This interface provides methods to use the AVPlay functionalities.
          </brief>
          <version>
 1.0
          </version>
      </descriptive>
      <ExtendedAttributeList>
        <ExtendedAttribute name="NoInterfaceObject">
          <webidl>NoInterfaceObject</webidl>
        </ExtendedAttribute>
      </ExtendedAttributeList>
      <Operation name="open" id="::AVPlay::AVPlayManager::open">
        <webidl>        void open(DOMString url) raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method instantiates the player object and take input url as input paramter.
            </brief>
            <version>
 1.0
            </version>
            <Code> try {
     webapis.avplay.open(url);
 } catch (e) {
     logError(e);
 }
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="url">
            <descriptive>
                <description><p>
 The url of the Stream Server decided to be played. Basic Streaming. It is base URL. No other information needs to be concatenated to it. HTTP(S)/MMS
                </p></description>
            </descriptive>
            <Type type="DOMString"/>
          </Argument>
        </ArgumentList>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type UnknownError in any other error case.
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
      <Operation name="close" id="::AVPlay::AVPlayManager::close">
        <webidl>        void close() raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method destroys the avplay object.
            </brief>
            <version>
 1.0
            </version>
            <Code> try {
     webapis.avplay.close();
 } catch (e) {
     logError(e);
 }
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type UnknownError in any other error case.
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
      <Operation name="prepare" id="::AVPlay::AVPlayManager::prepare">
        <webidl>        void prepare() raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method prepare the media player for playback. Player must have been created before this with a valid URI.
            </brief>
            <version>
 1.0
            </version>
            <Code> try {
     webapis.avplay.prepare();
 } catch (e) {
     logError(e);
 }
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type UnknownError in any other error case.
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
      <Operation name="prepareAsync" id="::AVPlay::AVPlayManager::prepareAsync">
        <webidl>        void prepareAsync(optional <ref>SuccessCallback</ref>? successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method prepares the media player for playback, asynchronously. This API, would prepare the MM core module asynchronously. It means internal media elements will change the state asynchronously.
            </brief>
            <version>
 1.0
            </version>
            <Code> webapis.avplay.prepareAsync(successCallback, errorCallback);
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument optional="optional" name="successCallback">
            <descriptive>
                <description><p>
 [optional][nullable] Callback method to be invoked when this api success.
                </p></description>
            </descriptive>
            <Type name="SuccessCallback" nullable="nullable"/>
          </Argument>
          <Argument optional="optional" name="errorCallback">
            <descriptive>
                <description><p>
 [optional][nullable] Callback method to be invoked when an error occurs
                </p></description>
            </descriptive>
            <Type name="ErrorCallback" nullable="nullable"/>
          </Argument>
        </ArgumentList>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type UnknownError in any other error case.
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
      <Operation name="setDisplayRect" id="::AVPlay::AVPlayManager::setDisplayRect">
        <webidl>        void setDisplayRect(long x, long y, long width, long height) raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method sets the display area for playing video content on TV screen. It should be called for showing video after calling open method. When all the value set as rect are set as 0, the Video Screen in the App disappears. Hide Function replacement.
            </brief>
            <version>
 1.0
            </version>
            <Code> try {
     webapis.avplay.setDisplayRect(0, 0, 1100, 600);
 } catch (e) {
     logError(e);
 }
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="x">
            <descriptive>
                <description><p>
 Specifies the initial x-coordinate of display area in TV screen coordinates. This x value is smaller than TV screen width.
                </p></description>
            </descriptive>
            <Type type="long"/>
          </Argument>
          <Argument name="y">
            <descriptive>
                <description><p>
 Specifies the initial y-coordinate of display area in TV screen coordinates. This y value is smaller than TV screen height.
                </p></description>
            </descriptive>
            <Type type="long"/>
          </Argument>
          <Argument name="width">
            <descriptive>
                <description><p>
 The width of display area. This value is smaller than width of TV screen
                </p></description>
            </descriptive>
            <Type type="long"/>
          </Argument>
          <Argument name="height">
            <descriptive>
                <description><p>
 The height of display area from source image. This value is smaller than height of source image If all members of display_rect is 0, video is hided
                </p></description>
            </descriptive>
            <Type type="long"/>
          </Argument>
        </ArgumentList>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type UnknownError in any other error case.
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
      <Operation name="play" id="::AVPlay::AVPlayManager::play">
        <webidl>        void play() raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method starts the playback of the stream.
            </brief>
            <version>
 1.0
            </version>
            <Code> try {
     webapis.avplay.play();
 } catch (e) {
     logError(e);
 }
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type UnknownError in any other error case.
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
      <Operation name="seekTo" id="::AVPlay::AVPlayManager::seekTo">
        <webidl>        void seekTo(long milliseconds, optional <ref>SuccessCallback</ref>? successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method used for the seeking. If you give the seconds value, then it plays by jumping to the position desired to play. It fails when you input the value outside the total Playback Time scope
            </brief>
            <version>
 1.0
            </version>
            <Code> try {
     webapis.avplay.seekTo(10000, successCallback, errorCallback);
 } catch (e) {
     logError(e);
 }
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="milliseconds">
            <descriptive>
                <description><p>
 position relevant to the specific duration value
                </p></description>
            </descriptive>
            <Type type="long"/>
          </Argument>
          <Argument optional="optional" name="successCallback">
            <descriptive>
                <description><p>
 [optional][nullable] Callback method to be invoked when this api success.
                </p></description>
            </descriptive>
            <Type name="SuccessCallback" nullable="nullable"/>
          </Argument>
          <Argument optional="optional" name="errorCallback">
            <descriptive>
                <description><p>
 [optional][nullable] Callback method to be invoked when an error occurs
                </p></description>
            </descriptive>
            <Type name="ErrorCallback" nullable="nullable"/>
          </Argument>
        </ArgumentList>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type UnknownError in any other error case.
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
      <Operation name="stop" id="::AVPlay::AVPlayManager::stop">
        <webidl>        void stop() raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method stops the player and hence any video currently being played. Also this function should be called after the video completes playing.
            </brief>
            <version>
 1.0
            </version>
            <Code> try {
     webapis.avplay.stop();
 } catch (e) {
     logError(e);
 }
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type UnknownError in any other error case.
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
      <Operation name="getState" id="::AVPlay::AVPlayManager::getState">
        <webidl>        <ref>AVPlayPlayerState</ref> getState() raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method return the current state of underlying player which is associated with AVPLAY object.
            </brief>
            <version>
 1.0
            </version>
            <Code> var bRet = webapis.avplay.getState();
 </Code>
        </descriptive>
        <Type name="AVPlayPlayerState">
          <descriptive>
              <description><p>
 AVPlayPlayerState
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type UnknownError in any other error case.
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
      <Operation name="pause" id="::AVPlay::AVPlayManager::pause">
        <webidl>        void pause() raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method pauses the playback.
            </brief>
            <version>
 1.0
            </version>
            <Code> try {
     webapis.avplay.pause();
 } catch (e) {
     logError(e);
 }
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type UnknownError in any other error case.
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
      <Operation name="jumpForward" id="::AVPlay::AVPlayManager::jumpForward">
        <webidl>        void jumpForward(long milliseconds, optional <ref>SuccessCallback</ref>? successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method forwards the currently played video by the specified number of milliseconds. While playing maintaining the State mode, it plays again after the jumpfoward, and in the pause, it gets paused after the jumpfoward.
            </brief>
            <version>
 1.0
            </version>
            <Code> webapis.avplay.jumpForward(5000, successCallback, errorCallback);
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="milliseconds">
            <descriptive>
                <description><p>
 The number of milliseconds to be forwarded.
                </p></description>
            </descriptive>
            <Type type="long"/>
          </Argument>
          <Argument optional="optional" name="successCallback">
            <descriptive>
                <description><p>
 [optional][nullable] Callback method to be invoked when this api success.
                </p></description>
            </descriptive>
            <Type name="SuccessCallback" nullable="nullable"/>
          </Argument>
          <Argument optional="optional" name="errorCallback">
            <descriptive>
                <description><p>
 [optional][nullable] Callback method to be invoked when an error occurs
                </p></description>
            </descriptive>
            <Type name="ErrorCallback" nullable="nullable"/>
          </Argument>
        </ArgumentList>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type UnknownError in any other error case.
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
      <Operation name="jumpBackward" id="::AVPlay::AVPlayManager::jumpBackward">
        <webidl>        void jumpBackward(long milliseconds, optional <ref>SuccessCallback</ref>? successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method rewinds the currently played video by the specified number of milliseconds.
            </brief>
            <version>
 1.0
            </version>
            <Code> webapis.avplay.jumpBackward(5000, successCallback, errorCallback);
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="milliseconds">
            <descriptive>
                <description><p>
 The number of milliseconds to be backwarded.
                </p></description>
            </descriptive>
            <Type type="long"/>
          </Argument>
          <Argument optional="optional" name="successCallback">
            <descriptive>
                <description><p>
 [optional][nullable] Callback method to be invoked when this api success.
                </p></description>
            </descriptive>
            <Type name="SuccessCallback" nullable="nullable"/>
          </Argument>
          <Argument optional="optional" name="errorCallback">
            <descriptive>
                <description><p>
 [optional][nullable] Callback method to be invoked when an error occurs
                </p></description>
            </descriptive>
            <Type name="ErrorCallback" nullable="nullable"/>
          </Argument>
        </ArgumentList>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type UnknownError in any other error case.
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
      <Operation name="getDuration" id="::AVPlay::AVPlayManager::getDuration">
        <webidl>        unsigned long getDuration() raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method gets the duration time in milliseconds.
            </brief>
            <version>
 1.0
            </version>
            <Code> duration = calcPlaytime(webapis.avplay.getDuration())
 
 var calcPlaytime = function(totalMilisec) {
     var hours = Math.floor(totalMilisec / 3600000);
     var minutes = Math.floor((totalMilisec - (hours * 3600000)) / 60000);
     var seconds = Math.floor((totalMilisec - (hours * 3600000) - (minutes * 60000)) / 1000);
     var milisec = totalMilisec - (hours * 3600000) - (minutes * 60000) - (seconds * 1000);
     return {
         hours: hours,
         minutes: minutes,
         seconds: seconds,
         milisec: milisec,
         totalMilisec: totalMilisec
     }
 }
 </Code>
        </descriptive>
        <Type type="unsigned long">
          <descriptive>
              <description><p>
 unsigned long
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type UnknownError in any other error case.
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
      <Operation name="getCurrentTime" id="::AVPlay::AVPlayManager::getCurrentTime">
        <webidl>        unsigned long getCurrentTime() raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method returns the current play time in milliseconds.
            </brief>
            <version>
 1.0
            </version>
            <Code> var currentPlayTime = webapis.avplay.getCurrentTime();
 </Code>
        </descriptive>
        <Type type="unsigned long">
          <descriptive>
              <description><p>
 unsigned long
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type UnknownError in any other error case.
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
      <Operation name="setSpeed" id="::AVPlay::AVPlayManager::setSpeed">
        <webidl>        void setSpeed(long playbackSpeed) raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method sets the current playback speed. This value can be positive or negative. If the value is set to negative, the video starts playing in the reverse direction.
            </brief>
            <version>
 1.0
            </version>
            <Code> try {
     webapis.avplay.setSpeed(2)
 } catch (e) {
     logError(e);
 }
 
 ;
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="playbackSpeed">
            <descriptive>
                <description><p>
 -32x, -16x, -8x, -2x, -4x, -1x, 1x, 2x, 4x, 8x, 16x, 32x
                </p></description>
            </descriptive>
            <Type type="long"/>
          </Argument>
        </ArgumentList>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 limitation
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
      <Operation name="setListener" id="::AVPlay::AVPlayManager::setListener">
        <webidl>        void setListener(<ref>AVPlayPlaybackCallback</ref> playbackCallback) raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method is used in order to obtain the Buffering, Playback Time, Playback mode, DRM mode information etc., the Callback Function is registered. When the relevant Event is occurred, the relevant Callback Function gets called asynchronouly, Invoked during playback.
            </brief>
            <version>
 1.0
            </version>
            <Code> var listener = {
     onbufferingstart: function() {
         console.log(&quot;Buffering start.&quot;);
     },
     onbufferingprogress: function(percent) {
         console.log(&quot;Buffering progress data : &quot; + data1);
     },
     onbufferingcomplete: function() {
         console.log(&quot;Buffering complete.&quot;);
     },
     oncurrentplaytime: function(currentTime) {
         console.log(&quot;Current Playtime : &quot; + data1);
     },
     onbufferingcomplete: function() {
         console.log(&quot;Buffering complete.&quot;);
     },
     onevent: function(eventType, eventData) {
         console.log(&quot;event type error : &quot; + eventType + &quot;, data: &quot; + eventData);
     },
     onerror: function(eventType) {
         console.log(&quot;event type error : &quot; + eventType);
     },
     onsubtitlechange: function(duration, text, data3, data4) {
         console.log(&quot;Subtitle Changed.&quot;);
     },
     ondrmevent: function(drmEvent, drmData) {
         console.log(&quot;DRM callback: &quot; + drmEvent + &quot;, data: &quot; + drmData);
     },
     onstreamcompleted: function() {
         console.log(&quot;Stream Completed&quot;);
     }
 }
 
 webapis.avplay.setListener(listener);
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="playbackCallback">
            <descriptive>
                <description><p>
 
                </p></description>
            </descriptive>
            <Type name="AVPlayPlaybackCallback"/>
          </Argument>
        </ArgumentList>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type UnknownError in any other error case.
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
      <Operation name="setTimeoutForBuffering" id="::AVPlay::AVPlayManager::setTimeoutForBuffering">
        <webidl>        void setTimeoutForBuffering(long initialTimeOutInSec) raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method sets the streaming bufferring time of player. When the desired amount of Buffering completes before the time set as milliseconds, the success returns. if it is the time set in milliseconds even if the desired amount of Buffering is not done.
            </brief>
            <version>
 1.0
            </version>
            <Code> webapis.avplay.setTimeoutForBuffering(10000);
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="initialTimeOutInSec">
            <descriptive>
                <description><p>
 
                </p></description>
            </descriptive>
            <Type type="long"/>
          </Argument>
        </ArgumentList>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type UnknownError in any other error case.
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
      <Operation name="setSoundAnalysisListener" id="::AVPlay::AVPlayManager::setSoundAnalysisListener">
        <webidl>        void setSoundAnalysisListener(<ref>AVPlaySoundAnalysisCallback</ref> soundAnalysisCallback) raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method gets the analysis result of the playing Audio's Spectrum is called in a cycle of 30ms by using the CallbackFunction. It can be used in the Equalizer effect video or in the App for PartyTV. Bands return in 31 Arrays, and among the Bands Array, the Bands[14]~Bands[18] value is the area that occupies the Sound's effect most.
            </brief>
            <version>
 1.0
            </version>
            <Code> webapis.avplay.setSoundAnalysisListener(soundAnalysisListener);
 
 var soundAnalysisListener = function(dataArray) {
         var barHeight = 0;
         var absValue = 0;
         var threshold = 70;
         for (var i = 0; i dataArray.length; i++) {
             absValue = Math.abs(dataArray[i]);
             if (absValue > threshold) {
                 barHeight = Main.barContainerHeight;
             } else {
                 barHeight = Math.round((absValue / threshold) * Main.barContainerHeight);
             }
             if (barHeight == 0) barHeight = 1;
             document.getElementById('frequencyBar' + i).style.height = barHeight + 'px';
         }
         console.log(&quot;Sound analysis: &quot; + dataArray.toString());
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="soundAnalysisCallback">
            <descriptive>
                <description><p>
 
                </p></description>
            </descriptive>
            <Type name="AVPlaySoundAnalysisCallback"/>
          </Argument>
        </ArgumentList>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type UnknownError in any other error case.
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
      <Operation name="unsetSoundAnalysisListener" id="::AVPlay::AVPlayManager::unsetSoundAnalysisListener">
        <webidl>        void unsetSoundAnalysisListener() raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method unregister the soundAnalysisListener callback.
            </brief>
            <version>
 1.0
            </version>
            <Code> webapis.avplay.unsetSoundAnalysisListener();
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type UnknownError in any other error case.
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
      <Operation name="setSilentSubtitle" id="::AVPlay::AVPlayManager::setSilentSubtitle">
        <webidl>        void setSilentSubtitle(boolean onoff) raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method is used in the case of Stream with Subtitle when you want to show or hide the Subtitle. In the case of ExternalSubtitle, when the setExternalSubtitlePath Function is called, it is shown by default even if the setSilentSubtitle is not called
            </brief>
            <version>
 1.0
            </version>
            <Code> webapis.avplay.setSilentSubtitle(true);
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="onoff">
            <descriptive>
                <description><p>
 false Subtitle is shown. true It hides the playing Subtitle.
                </p></description>
            </descriptive>
            <Type type="boolean"/>
          </Argument>
        </ArgumentList>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type UnknownError in any other error case.
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
      <Operation name="setExternalSubtitlePath" id="::AVPlay::AVPlayManager::setExternalSubtitlePath">
        <webidl>        void setExternalSubtitlePath(DOMString pFilePath) raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method is used in the case of Stream that uses External Subtitle, you should put the Local URI having Subtitle File. In the case of URL, you should put the Local URL after downloading it by using the DOWNLOAD WebApi
            </brief>
            <version>
 1.0
            </version>
            <Code> webapis.avplay.setExternalSubtitlePath(uri);
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="pFilePath">
            <descriptive>
                <description><p>
 URI of Local File with Subtitle
                </p></description>
            </descriptive>
            <Type type="DOMString"/>
          </Argument>
        </ArgumentList>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type UnknownError in any other error case.
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
      <Operation name="setSubtitlePosition" id="::AVPlay::AVPlayManager::setSubtitlePosition">
        <webidl>        void setSubtitlePosition(unsigned long position) raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method is used for matching the A/V and sync when you play the ExternalSubtitle.
            </brief>
            <version>
 1.0
            </version>
            <Code> webapis.avplay.setSubtitlePosition(position_millisec, );
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="position">
            <descriptive>
                <description><p>
 The Subtitle output's timing is adjusted as much as the inputted time. (Positive, Negative)
                </p></description>
            </descriptive>
            <Type type="unsigned long"/>
          </Argument>
        </ArgumentList>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type UnknownError in any other error case.
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
      <Operation name="setDisplayMethod" id="::AVPlay::AVPlayManager::setDisplayMethod">
        <webidl>        void setDisplayMethod(<ref>AVPlayDisplayMode</ref> displayMode) raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method sets the Video Screen’s Mode within the given DISPLAY area.
            </brief>
            <version>
 1.0
            </version>
            <Code> webapis.avplay.setDisplayMethod(&quot;PLAYER_DISPLAY_MODE_FULL_SCREEN&quot;);
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="displayMode">
            <descriptive>
                <description><p>
 e.g. PLAYER_DISPLAY_MODE_FULL_SCREEN&quot;
                </p></description>
            </descriptive>
            <Type name="AVPlayDisplayMode"/>
          </Argument>
        </ArgumentList>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type UnknownError in any other error case.
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
      <Operation name="setSelectTrack" id="::AVPlay::AVPlayManager::setSelectTrack">
        <webidl>        void setSelectTrack(<ref>AVPlayStreamType</ref> trackType, long trackIndex) raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method is used in the case of Multi Audio/Subtitle and when you want to change the Audio&#38; Subtitle while playing. In the case of Video, it can’t be used.
            </brief>
            <version>
 1.0
            </version>
            <Code> webapis.avplay.setSelectTrack(Type, index);
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="trackType">
            <descriptive>
                <description><p>
 It may be AUDIO or TEXT value.
                </p></description>
            </descriptive>
            <Type name="AVPlayStreamType"/>
          </Argument>
          <Argument name="trackIndex">
            <descriptive>
                <description><p>
 It sets the index value of the AVPlayStreamInfo obtained through the webapis.avplay.getTrackInfo Function.
                </p></description>
            </descriptive>
            <Type type="long"/>
          </Argument>
        </ArgumentList>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type UnknownError in any other error case.
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
      <Operation name="getCurrentStreamInfo" id="::AVPlay::AVPlayManager::getCurrentStreamInfo">
        <webidl>        <ref>AVPlayStreamInfo</ref> getCurrentStreamInfo() raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method gets the currently playing Stream’s Video, Audio, Subtitle information. It informs that some Stream is playing.
            </brief>
            <version>
 1.0
            </version>
            <Code> var streamInfo = webapis.avplay.getCurrentStreamInfo();
 var text = '';
 for (var i = 0; i streamInfo.length; i++) {
     text += 'index: ' + streamInfo[i].index + '';
     text += 'type: ' + streamInfo[i].type + '';
     text += 'extra_info: ' + streamInfo[i].extra_info + '';
 }
 </Code>
        </descriptive>
        <Type name="AVPlayStreamInfo">
          <descriptive>
              <description><p>
 AVPlayStreamInfo
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type UnknownError in any other error case.
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
      <Operation name="getTotalTrackInfo" id="::AVPlay::AVPlayManager::getTotalTrackInfo">
        <webidl>        <ref>AVPlayStreamInfo</ref>[] getTotalTrackInfo() raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method gets the currently playing Stream’s information.
            </brief>
            <version>
 1.0
            </version>
            <Code> var trackInfo = webapis.avplay.getTotalTrackInfo();
 var text = 'type of track info: ' + typeof trackInfo + '';
 text += 'length: ' + trackInfo.length + '';
 for (var i = 0; i trackInfo.length; i++) {
     text += 'index: ' + trackInfo[i].index + '';
     text += 'type: ' + trackInfo[i].type + '';
     text += 'extra_info: ' + trackInfo[i].extra_info + '';
 }
 </Code>
        </descriptive>
        <Type type="array">
          <descriptive>
              <description><p>
 AVPlayStreamInfo[]
              </p></description>
          </descriptive>
          <Type name="AVPlayStreamInfo"/>
        </Type>
        <ArgumentList/>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type UnknownError in any other error case.
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
      <Operation name="setStreamingProperty" id="::AVPlay::AVPlayManager::setStreamingProperty">
        <webidl>        void setStreamingProperty(<ref>AVPlayStreamingPropertyType</ref> propertyType, <ref>Any</ref> propparam) raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method sets the value for specific Feature in the HTTP, MMS &#38; Streaming Engine (Smooth Streaming, HLS, DASH, DivX Plus Streaming, Widevine). When special setting is required in Streaming Engine for the Start Bitrate setting &#38;specific CP, the CUSTOM_MESSAGE Property can be set
            </brief>
            <version>
 1.0
            </version>
            <Code> Smooth Streaming example:
     webapis.avplay.setStreamingProperty(&quot;ADAPTIVE_INFO&quot;, &quot;|BITRATES=&quot; + 50000 + '~' + $('#BITRATE_TO').val() + '|STARTBITRATE=' + $('#START_BITRATE').val() +
         '|STARTBITRATE=' + $('#START_BITRATE').val() + '|SKIPBITRATE=' + $('#SKIP_BITRATE').val());
 
 b > Note: /b> streaming properties would be different for different kinds of streaming e.g. http, hls, dash etc.
 
 Widevine:
     webapis.avplay.setStreamingProperty(&quot;WIDEVINE&quot;, &quot;DEVICE_ID=null|DEVICET_TYPE_ID=60|DRM_URL=https://~~~|I_SEEK=TIME|CUR_TIME=PTS|PORTAL=~~&quot;);
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="propertyType">
            <descriptive>
                <description><p>
 &quot;COOKIE&quot;, &quot;USER_AGENT&quot;, &quot;PREBUFFER_MODE&quot;, &quot;ADAPTIVE_INFO&quot;, &quot;SET_MODE_3D&quot;, &quot;SET_MODE_4K&quot;, &quot;HD_AUDIO&quot;, &quot;WIDEVINE&quot;.
                </p></description>
            </descriptive>
            <Type name="AVPlayStreamingPropertyType"/>
          </Argument>
          <Argument name="propparam">
            <descriptive>
                <description><p>
 Value according to the propertyType. e.g. &quot;ADAPTIVE_INFO&quot; PropetyTypes are &quot;BITRATES&quot;,&quot;CUSTOM_MESSAGE&quot;, &quot;AD_MODE&quot;, &quot;STARTBITRATE&quot;, &quot;START_TIME&quot;, &quot;FAST_START&quot;, &quot;SKIPBITRATE&quot;.
                </p></description>
            </descriptive>
            <Type name="Any"/>
          </Argument>
        </ArgumentList>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type UnknownError in any other error case.
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
      <Operation name="getStreamingProperty" id="::AVPlay::AVPlayManager::getStreamingProperty">
        <webidl>        <ref>Any</ref> getStreamingProperty(<ref>AVPlayStreamingPropertyType</ref> propertyType) raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method gets the Specific Property value is obtained through the Streaming Engine (Smooth Streaming, HLS, DASH, DivX Plus Streaming, Widevine).
            </brief>
            <version>
 1.0
            </version>
            <Code> var text = 'AVAILABLE_BITRATE: ' + webapis.avplay.getStreamingProperty(&quot;AVAILABLE_BITRATE&quot;);
 text += 'CURRENT_BANDWIDTH: ' + webapis.avplay.getStreamingProperty(&quot;CURRENT_BANDWITH&quot;) + '';
 text += 'DURATION: ' + webapis.avplay.getStreamingProperty(&quot;DURATION&quot;) + '';
 text += 'BUFFER_SIZE: ' + webapis.avplay.getStreamingProperty(&quot;BUFFER_SIZE&quot;) + '';
 text += 'START_FRAGMENT: ' + webapis.avplay.getStreamingProperty(&quot;START_FRAGMENT&quot;) + '';
 text += 'COOKIE: ' + webapis.avplay.getStreamingProperty(&quot;COOKIE&quot;) + '';
 text += 'CUSTOM_MESSAGE: ' + webApis.avplay.getStreamingProperty(&quot;CUSTOM_MESSAGE&quot;);
 </Code>
        </descriptive>
        <Type name="Any">
          <descriptive>
              <description><p>
 Any
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="propertyType">
            <descriptive>
                <description><p>
 
                </p></description>
            </descriptive>
            <Type name="AVPlayStreamingPropertyType"/>
          </Argument>
        </ArgumentList>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type UnknownError in any other error case.
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
      <Operation name="getVersion" id="::AVPlay::AVPlayManager::getVersion">
        <webidl>        DOMString getVersion() raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method gets the version of avplay.
            </brief>
            <version>
 1.0
            </version>
            <Code> var version = webapis.avplay.getVersion();
 </Code>
        </descriptive>
        <Type type="DOMString">
          <descriptive>
              <description><p>
 DOMString
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type UnknownError in any other error case.
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
    </Interface>
    <Interface name="AVPlayPlaybackCallback" id="::AVPlay::AVPlayPlaybackCallback">
      <webidl>    [Callback, NoInterfaceObject] interface AVPlayPlaybackCallback {
        void onbufferingstart() raises(<ref>WebAPIException</ref>);

        void onbufferingprogress(unsigned long percent) raises(<ref>WebAPIException</ref>);

        void onbufferingcomplete() raises(<ref>WebAPIException</ref>);

        void oncurrentplaytime(unsigned long currentTime) raises(<ref>WebAPIException</ref>);

        void onstreamcompleted() raises(<ref>WebAPIException</ref>);

        void onevent(long eventid, DOMString data) raises(<ref>WebAPIException</ref>);

        void onerror(long eventid) raises(<ref>WebAPIException</ref>);

        void ondrmevent(<ref>AVPlayDrmType</ref> type, long eventid) raises(<ref>WebAPIException</ref>);

        void onsubtitlechange(unsigned long duration, DOMString subtitles, unsigned long type, unsigned long attriCount, <ref>AVPlaySubtitleAttribute</ref> attributes) raises(<ref>WebAPIException</ref>);

    };</webidl>
      <descriptive>
          <brief>
 This callback interface defines subscriptions for any notification on the buffering, playback.
          </brief>
          <version>
 1.0
          </version>
      </descriptive>
      <ExtendedAttributeList>
        <ExtendedAttribute name="Callback">
          <webidl>Callback</webidl>
        </ExtendedAttribute>
        <ExtendedAttribute name="NoInterfaceObject">
          <webidl> NoInterfaceObject</webidl>
        </ExtendedAttribute>
      </ExtendedAttributeList>
      <Operation name="onbufferingstart" id="::AVPlay::AVPlayPlaybackCallback::onbufferingstart">
        <webidl>        void onbufferingstart() raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method gets called async while the buffering starts.
            </brief>
            <version>
 1.0
            </version>
<!--
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/avplay
            </privilege>
 -->
            <Code> onbufferingstart: function() {
     console.log(&quot;Buffering start.&quot;);
 }
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type UnknownError in any other error case.
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
      <Operation name="onbufferingprogress" id="::AVPlay::AVPlayPlaybackCallback::onbufferingprogress">
        <webidl>        void onbufferingprogress(unsigned long percent) raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method gets called async while the buffering is in progress.
            </brief>
            <version>
 1.0
            </version>
 <!-- 
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
http://developer.samsung.com/privilege/avplay 
            </privilege>
-->
            <Code> onbufferingprogress: function(percent) {
     console.log(&quot;Buffering progress data : &quot; + percent);
 }
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="percent">
            <descriptive>
                <description><p>
 
                </p></description>
            </descriptive>
            <Type type="unsigned long"/>
          </Argument>
        </ArgumentList>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type UnknownError in any other error case.
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
      <Operation name="onbufferingcomplete" id="::AVPlay::AVPlayPlaybackCallback::onbufferingcomplete">
        <webidl>        void onbufferingcomplete() raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method gets called async when the buffering gets completed.
            </brief>
            <version>
 1.0
            </version>
 <!--
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/avplay
            </privilege>
-->
            <Code> onbufferingcomplete: function() {
     console.log(&quot;Buffering complete.&quot;);
 }
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type UnknownError in any other error case.
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
      <Operation name="oncurrentplaytime" id="::AVPlay::AVPlayPlaybackCallback::oncurrentplaytime">
        <webidl>        void oncurrentplaytime(unsigned long currentTime) raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method gets called async to provide the current playback time.
            </brief>
            <version>
 1.0
            </version>
 <!-- 
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
http://developer.samsung.com/privilege/avplay 
            </privilege>
-->
            <Code> oncurrentplaytime: function(currentTime) {
     console.log(&quot;Current playtime: &quot; + currentTime);
 }
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="currentTime">
            <descriptive>
                <description><p>
 
                </p></description>
            </descriptive>
            <Type type="unsigned long"/>
          </Argument>
        </ArgumentList>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type UnknownError in any other error case.
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
      <Operation name="onstreamcompleted" id="::AVPlay::AVPlayPlaybackCallback::onstreamcompleted">
        <webidl>        void onstreamcompleted() raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method gets called async while the playback gets completed.
            </brief>
            <version>
 1.0
            </version>
<!--
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
http://developer.samsung.com/privilege/avplay
            </privilege>
-->
            <Code> onstreamcompleted: function() {
     console.log(&quot;Stream Completed&quot;);
 }
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type UnknownError in any other error case.
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
      <Operation name="onevent" id="::AVPlay::AVPlayPlaybackCallback::onevent">
        <webidl>        void onevent(long eventid, DOMString data) raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method gets called async when some kind of event (other event) received from the player.
            </brief>
            <version>
 1.0
            </version>
 <!-- 
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
http://developer.samsung.com/privilege/avplay
            </privilege>
 -->
            <Code> onevent: function(eventType, eventData) {
     console.log(&quot;OnEvent Callback with eventType: &quot; + eventType);
 }
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="eventid">
            <descriptive>
                <description><p>
 
                </p></description>
            </descriptive>
            <Type type="long"/>
          </Argument>
          <Argument name="data">
            <descriptive>
                <description><p>
 
                </p></description>
            </descriptive>
            <Type type="DOMString"/>
          </Argument>
        </ArgumentList>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type UnknownError in any other error case.
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
      <Operation name="onerror" id="::AVPlay::AVPlayPlaybackCallback::onerror">
        <webidl>        void onerror(long eventid) raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method gets called when error event received from the player.
            </brief>
            <version>
 1.0
            </version>
 <!-- 
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
http://developer.samsung.com/privilege/avplay 
            </privilege>
-->
            <Code> onerror: function(eventType) {
     console.log(&quot;OnError Event Callback with eventType: &quot; + eventType);
 }
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="eventid">
            <descriptive>
                <description><p>
 
                </p></description>
            </descriptive>
            <Type type="long"/>
          </Argument>
        </ArgumentList>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type UnknownError in any other error case.
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
      <Operation name="ondrmevent" id="::AVPlay::AVPlayPlaybackCallback::ondrmevent">
        <webidl>        void ondrmevent(<ref>AVPlayDrmType</ref> type, long eventid) raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method gets aysnc called when the drm information notified from the player.
            </brief>
            <version>
 1.0
            </version>
 <!--
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/avplay 
            </privilege>
-->
            <Code> ondrmevent: function(drmEvent, drmData) {
     console.log(&quot;DRM callback: &quot; + drmEvent + &quot;, data: &quot; + drmData);
 }
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="type">
            <descriptive>
                <description><p>
 
                </p></description>
            </descriptive>
            <Type name="AVPlayDrmType"/>
          </Argument>
          <Argument name="eventid">
            <descriptive>
                <description><p>
 
                </p></description>
            </descriptive>
            <Type type="long"/>
          </Argument>
        </ArgumentList>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type UnknownError in any other error case.
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
      <Operation name="onsubtitlechange" id="::AVPlay::AVPlayPlaybackCallback::onsubtitlechange">
        <webidl>        void onsubtitlechange(unsigned long duration, DOMString subtitles, unsigned long type, unsigned long attriCount, <ref>AVPlaySubtitleAttribute</ref> attributes) raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method gets called async when the subtitle is updated.
            </brief>
            <version>
 1.0
            </version>
<!--
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
	http://developer.samsung.com/privilege/avplay
            </privilege>
-->
            <Code> onsubtitlechange: function(duration, text, data3, data4) {
     console.log(&quot;Subtitle Changed.&quot;);
 }
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="duration">
            <descriptive>
                <description><p>
 
                </p></description>
            </descriptive>
            <Type type="unsigned long"/>
          </Argument>
          <Argument name="subtitles">
            <descriptive>
                <description><p>
 
                </p></description>
            </descriptive>
            <Type type="DOMString"/>
          </Argument>
          <Argument name="type">
            <descriptive>
                <description><p>
 
                </p></description>
            </descriptive>
            <Type type="unsigned long"/>
          </Argument>
          <Argument name="attriCount">
            <descriptive>
                <description><p>
 
                </p></description>
            </descriptive>
            <Type type="unsigned long"/>
          </Argument>
          <Argument name="attributes">
            <descriptive>
                <description><p>
 
                </p></description>
            </descriptive>
            <Type name="AVPlaySubtitleAttribute"/>
          </Argument>
        </ArgumentList>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type UnknownError in any other error case.
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
    </Interface>
    <Interface name="AVPlaySoundAnalysisCallback" id="::AVPlay::AVPlaySoundAnalysisCallback">
      <webidl>    [Callback, NoInterfaceObject] interface AVPlaySoundAnalysisCallback {
        <ref>BasePlatformException</ref> ongetexception() raises(<ref>WebAPIException</ref>);

        void onsetexception(<ref>BasePlatformException</ref> err) raises(<ref>WebAPIException</ref>);

        long ongetbandsarray() raises(<ref>WebAPIException</ref>);

    };</webidl>
      <descriptive>
          <brief>
 This callback interface defines  subscriptions for any notification for sound Analysis.
          </brief>
          <version>
 1.0
          </version>
      </descriptive>
      <ExtendedAttributeList>
        <ExtendedAttribute name="Callback">
          <webidl>Callback</webidl>
        </ExtendedAttribute>
        <ExtendedAttribute name="NoInterfaceObject">
          <webidl> NoInterfaceObject</webidl>
        </ExtendedAttribute>
      </ExtendedAttributeList>
      <Operation name="ongetexception" id="::AVPlay::AVPlaySoundAnalysisCallback::ongetexception">
        <webidl>        <ref>BasePlatformException</ref> ongetexception() raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method gets called aysnc if any exception occurs in sound analysis.
            </brief>
            <version>
 1.0
            </version>
<!--
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/avplay
            </privilege>
-->
        </descriptive>
        <Type name="BasePlatformException">
          <descriptive>
              <description><p>
 BasePlatformException
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type UnknownError in any other error case.
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
      <Operation name="onsetexception" id="::AVPlay::AVPlaySoundAnalysisCallback::onsetexception">
        <webidl>        void onsetexception(<ref>BasePlatformException</ref> err) raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method specifies subscriptions for any notification for sound Analysis.
            </brief>
            <version>
 1.0
            </version>
<!--
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
 	http://developer.samsung.com/privilege/avplay
            </privilege>
-->
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="err">
            <descriptive>
                <description><p>
 
                </p></description>
            </descriptive>
            <Type name="BasePlatformException"/>
          </Argument>
        </ArgumentList>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type UnknownError in any other error case.
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
      <Operation name="ongetbandsarray" id="::AVPlay::AVPlaySoundAnalysisCallback::ongetbandsarray">
        <webidl>        long ongetbandsarray() raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method returns the Band Array[32] having sound effect information.
            </brief>
            <version>
 1.0
            </version>
<!--
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/avplay
            </privilege>
-->
        </descriptive>
        <Type type="long">
          <descriptive>
              <description><p>
 long
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type UnknownError in any other error case.
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
    </Interface>
  </Module>
  <Module name="DrmInfo" id="::DrmInfo">
    <webidl>module DrmInfo {
    [NoInterfaceObject] interface DrmInfoManagerObject {
        readonly attribute <ref>DrmInfoManager</ref> drminfo;

    };
    <ref>WebApi</ref> implements <ref>DrmInfoManagerObject</ref>;

    [NoInterfaceObject] interface DrmInfoManager {
        DOMString getVersion();

        DOMString getEsn(DOMString compName);

        DOMString getSdiId();

    };

};</webidl>
    <descriptive>
        <brief>
 The module defines the functionalities of getting DRM information that are provides as the Tizen-based Samsung TV Product API.
        </brief>
        <version>
 1.0
        </version>
    </descriptive>
    <Interface name="DrmInfoManagerObject" id="::DrmInfo::DrmInfoManagerObject">
      <webidl>    [NoInterfaceObject] interface DrmInfoManagerObject {
        readonly attribute <ref>DrmInfoManager</ref> drminfo;

    };</webidl>
      <descriptive>
          <brief>
 The interface defines what is instantiated by the WebApi object of Tizen-based Samsung TV Product API.
There will be a webapis.drminfo object that allows access to the functionality of the DrmInfo API
          </brief>
          <version>
 1.0
          </version>
      </descriptive>
      <ExtendedAttributeList>
        <ExtendedAttribute name="NoInterfaceObject">
          <webidl>NoInterfaceObject</webidl>
        </ExtendedAttribute>
      </ExtendedAttributeList>
      <Attribute readonly="readonly" name="drminfo" id="::DrmInfo::DrmInfoManagerObject::drminfo">
        <webidl>        readonly attribute <ref>DrmInfoManager</ref> drminfo;</webidl>
        <descriptive>
            <brief>
 Namespace for DrmInfo API.
            </brief>
            <version>
 1.0
            </version>
        </descriptive>
        <Type name="DrmInfoManager"/>
      </Attribute>
    </Interface>
    <Implements name1="WebApi" name2="DrmInfoManagerObject">
      <webidl>    <ref>WebApi</ref> implements <ref>DrmInfoManagerObject</ref>;</webidl>
    </Implements>
    <Interface name="DrmInfoManager" id="::DrmInfo::DrmInfoManager">
      <webidl>    [NoInterfaceObject] interface DrmInfoManager {
        DOMString getVersion();

        DOMString getEsn(DOMString compName);

        DOMString getSdiId();

    };</webidl>
      <descriptive>
          <brief>
 This interface provides methods to use the DrmInfo functionalities.
          </brief>
          <version>
 1.0
          </version>
      </descriptive>
      <ExtendedAttributeList>
        <ExtendedAttribute name="NoInterfaceObject">
          <webidl>NoInterfaceObject</webidl>
        </ExtendedAttribute>
      </ExtendedAttributeList>
      <Operation name="getVersion" id="::DrmInfo::DrmInfoManager::getVersion">
        <webidl>        DOMString getVersion();</webidl>
        <descriptive>
            <brief>
 This method get the plugin's version number.
            </brief>
            <version>
 1.0
            </version>
            <privilegelevel>
 Partner
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/drminfo
            </privilege>
            <Code> try {
     var value = webapis.drminfo.getVersion();
 
     console.log(&quot; version value = &quot; + value);
 } catch (error) {
     console.log(&quot; error code = &quot; + error.code);
 }
 </Code>
        </descriptive>
        <Type type="DOMString">
          <descriptive>
              <description><p>
 DOMString
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
      </Operation>
      <Operation name="getEsn" id="::DrmInfo::DrmInfoManager::getEsn">
        <webidl>        DOMString getEsn(DOMString compName);</webidl>
        <descriptive>
            <brief>
 This method  get the ESN data.
            </brief>
            <version>
 1.0
            </version>
            <privilegelevel>
 Partner
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/drminfo
            </privilege>
            <Code> try {
     var value = webapis.drminfo.getEsn(compName);
 
     console.log(&quot; Esn value = &quot; + value);
 } catch (error) {
     console.log(&quot; error code = &quot; + error.code);
 }
 </Code>
        </descriptive>
        <Type type="DOMString">
          <descriptive>
              <description><p>
 DOMString
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="compName">
            <descriptive>
                <description><p>
 Name of component
                </p></description>
            </descriptive>
            <Type type="DOMString"/>
          </Argument>
        </ArgumentList>
      </Operation>
      <Operation name="getSdiId" id="::DrmInfo::DrmInfoManager::getSdiId">
        <webidl>        DOMString getSdiId();</webidl>
        <descriptive>
            <brief>
 This method get the SDI ID. SDI(Samsung Device Identifier) ID is used by a few CPs to distinguish devices instead of DUID.
            </brief>
            <version>
 1.0
            </version>
            <privilegelevel>
 Partner
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/drminfo
            </privilege>
            <Code> try {
     var value = webapis.drminfo.getSdiId();
 
     console.log(&quot; SdiId value = &quot; + value);
 } catch (error) {
     console.log(&quot; error code = &quot; + error.code);
 }
 </Code>
        </descriptive>
        <Type type="DOMString">
          <descriptive>
              <description><p>
 DOMString
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
      </Operation>
    </Interface>
  </Module>
  <Module name="Microphone" id="::Microphone">
    <webidl>module Microphone {
    [NoInterfaceObject] interface MicrophoneManagerObject {
        readonly attribute <ref>MicrophoneManager</ref> microphone;

    };
    <ref>WebApi</ref> implements <ref>MicrophoneManagerObject</ref>;

    [NoInterfaceObject] interface MicrophoneManager {
        DOMString getVersion();

        boolean isConnected(DOMString uid) raises(<ref>WebAPIException</ref>);

        void getMicrophones(<ref>MicrophoneDeviceArraySuccessCallback</ref> onsuccess, optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);

        unsigned long addMicrophoneConnectListener(<ref>MicrophoneConnectCallback</ref> listener) raises(<ref>WebAPIException</ref>);

        void removeMicrophoneConnectListener(unsigned long listenerId) raises(<ref>WebAPIException</ref>);

    };

    [Callback=FunctionOnly, NoInterfaceObject] interface MicrophoneDeviceArraySuccessCallback {
        void onsuccess(<ref>MicrophoneDevice</ref> devices);

    };

    [Callback=FunctionOnly, NoInterfaceObject] interface MicrophoneConnectCallback {
        void onevent(<ref>MicrophoneConnectEvent</ref> event);

    };

    [NoInterfaceObject] interface MicrophoneConnectEvent {
        readonly attribute DOMString uid;

        readonly attribute DOMString name;

        readonly attribute unsigned short eventType;

    };
    <ref>MicrophoneManager</ref> implements <ref>MicrophoneConnectEvent</ref>;

    [NoInterfaceObject] interface MicrophoneConnectEventType {
        const unsigned short EVENT_DEVICE_CONNECT = 11;

        const unsigned short EVENT_DEVICE_DISCONNECT = 12;

    };
    <ref>MicrophoneManager</ref> implements <ref>MicrophoneConnectEventType</ref>;

    [NoInterfaceObject] interface MicrophoneDeviceAudioFormat {
        const unsigned long MICROPHONE_FORMAT_SIGNED_16BIT_LITTLE_ENDIAN = 0;

        const unsigned long MICROPHONE_FORMAT_SIGNED_16BIT_BIG_ENDIAN_FORMAT = 1;

    };
    <ref>MicrophoneManager</ref> implements <ref>MicrophoneDeviceAudioFormat</ref>;

    [NoInterfaceObject] interface MicrophoneSampleRateValue {
        const unsigned long MICROPHONE_SAMPLE_RATE_48000 = 48000;

        const unsigned long MICROPHONE_SAMPLE_RATE_44100 = 44100;

        const unsigned long MICROPHONE_SAMPLE_RATE_32000 = 32000;

        const unsigned long MICROPHONE_SAMPLE_RATE_16000 = 16000;

        const unsigned long MICROPHONE_SAMPLE_RATE_8000 = 8000;

    };
    <ref>MicrophoneManager</ref> implements <ref>MicrophoneSampleRateValue</ref>;

    [NoInterfaceObject] interface MicrophoneEffectValue {
        const unsigned long MICROPHONE_EFFECT_NONE = 0x00;

        const unsigned long MICROPHONE_EFFECT_REVERB = 0x01;

        const unsigned long MICROPHONE_EFFECT_FILTER = 0x10;

    };
    <ref>MicrophoneManager</ref> implements <ref>MicrophoneEffectValue</ref>;

    [NoInterfaceObject] interface MicrophoneStateValue {
        const unsigned long MICROPHONE_STATUS_STOP = 0x00000000;

        const unsigned long MICROPHONE_STATUS_PLAY = 0x00000001;

        const unsigned long MICROPHONE_STATUS_RECORD = 0x00000010;

        const unsigned long MICROPHONE_STATUS_FILTER = 0x00000100;

    };
    <ref>MicrophoneManager</ref> implements <ref>MicrophoneStateValue</ref>;

    [NoInterfaceObject] interface MicrophoneDevice {
        readonly attribute DOMString uid;

        readonly attribute DOMString name;

        readonly attribute long deviceId;

        readonly attribute long deviceType;

        DOMString getUniqueId();

        unsigned long getDeviceId();

        DOMString getName();

        boolean enableDevice(unsigned long format, unsigned long sampleRate) raises(<ref>WebAPIException</ref>);

        boolean disableDevice();

        boolean stop(optional unsigned long? state) raises(<ref>WebAPIException</ref>);

        boolean play(optional boolean? lockState) raises(<ref>WebAPIException</ref>);

        unsigned long getVolumeLevel();

        boolean setVolumeLevel(unsigned long volume) raises(<ref>WebAPIException</ref>);

        unsigned long getSupportedEffect();

        unsigned long getEnabledEffect();

        boolean setEffect(unsigned long effect, boolean enable, optional unsigned long? tempo, optional unsigned long? pitch, optional unsigned long? rate, optional unsigned long? threshold, optional unsigned long? noduration) raises(<ref>WebAPIException</ref>);

        unsigned long getFilterVolume();

        unsigned long addMicrophoneEventListener(<ref>MicrophoneEventCallback</ref> listener) raises(<ref>WebAPIException</ref>);

        void removeMicrophoneEventListener(unsigned long listenerId) raises(<ref>WebAPIException</ref>);

    };

    [NoInterfaceObject] interface MicrophoneAudioinputEvent {
        const unsigned long MICROPHONE_AUDIOINPUT_PLAY_FAIL = 400;

        const unsigned long MICROPHONE_AUDIOINPUT_DATA = 401;

        const unsigned long MICROPHONE_AUDIOINPUT_RECORD_FAIL = 402;

        const unsigned long MICROPHONE_AUDIOINPUT_RECORD_STOP = 403;

        const unsigned long MICROPHONE_AUDIOINPUT_FILTER_VOICE_DETECTED = 404;

        const unsigned long MICROPHONE_AUDIOINPUT_FILTER_PLAY_START = 405;

        const unsigned long MICROPHONE_AUDIOINPUT_FILTER_PLAY_STOP = 406;

        const unsigned long MICROPHONE_AUDIOINPUT_FILTER_SILENCE_DETECTED = 407;

        const unsigned long MICROPHONE_AUDIOINPUT_FILTER_PLAY_VOLUME = 450;

    };
    <ref>MicrophoneManager</ref> implements <ref>MicrophoneAudioinputEvent</ref>;

    [Callback=FunctionOnly, NoInterfaceObject] interface MicrophoneEventCallback {
        void onevent(unsigned long eventType);

    };

};</webidl>
    <descriptive>
        <brief>
 The module defines the functionalities of Microphone that are provides as the Tizen-based Samsung TV Product API.
        </brief>
        <version>
 1.0.0
        </version>
    </descriptive>
    <Interface name="MicrophoneManagerObject" id="::Microphone::MicrophoneManagerObject">
      <webidl>    [NoInterfaceObject] interface MicrophoneManagerObject {
        readonly attribute <ref>MicrophoneManager</ref> microphone;

    };</webidl>
      <descriptive>
          <brief>
 The interface defines what is instantiated by the WebApi object of Tizen-based Samsung TV Product API.
There will be a webapis.microphone object that allows access to the functionality of the Microphone API
          </brief>
          <version>
 1.0.0
          </version>
      </descriptive>
      <ExtendedAttributeList>
        <ExtendedAttribute name="NoInterfaceObject">
          <webidl>NoInterfaceObject</webidl>
        </ExtendedAttribute>
      </ExtendedAttributeList>
      <Attribute readonly="readonly" name="microphone" id="::Microphone::MicrophoneManagerObject::microphone">
        <webidl>        readonly attribute <ref>MicrophoneManager</ref> microphone;</webidl>
        <descriptive>
            <brief>
 Namespace for Microphone API.
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type name="MicrophoneManager"/>
      </Attribute>
    </Interface>
    <Implements name1="WebApi" name2="MicrophoneManagerObject">
      <webidl>    <ref>WebApi</ref> implements <ref>MicrophoneManagerObject</ref>;</webidl>
    </Implements>
    <Interface name="MicrophoneManager" id="::Microphone::MicrophoneManager">
      <webidl>    [NoInterfaceObject] interface MicrophoneManager {
        DOMString getVersion();

        boolean isConnected(DOMString uid) raises(<ref>WebAPIException</ref>);

        void getMicrophones(<ref>MicrophoneDeviceArraySuccessCallback</ref> onsuccess, optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);

        unsigned long addMicrophoneConnectListener(<ref>MicrophoneConnectCallback</ref> listener) raises(<ref>WebAPIException</ref>);

        void removeMicrophoneConnectListener(unsigned long listenerId) raises(<ref>WebAPIException</ref>);

    };</webidl>
      <descriptive>
          <brief>
 This interface provides methods to use the Microphone functionalities.
          </brief>
          <version>
 1.0.0
          </version>
      </descriptive>
      <ExtendedAttributeList>
        <ExtendedAttribute name="NoInterfaceObject">
          <webidl>NoInterfaceObject</webidl>
        </ExtendedAttribute>
      </ExtendedAttributeList>
      <Operation name="getVersion" id="::Microphone::MicrophoneManager::getVersion">
        <webidl>        DOMString getVersion();</webidl>
        <descriptive>
            <brief>
 This method get the plugin's version number.
            </brief>
            <version>
 1.0.0
            </version>
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/microphone
            </privilege>
            <Code> try {
     var value = webapis.microphone.getVersion();
     console.log(&quot; version value = &quot; + value);
 } catch (error) {
     console.log(&quot; error code = &quot; + error.code);
 }
 </Code>
        </descriptive>
        <Type type="DOMString">
          <descriptive>
              <description><p>
 DOMString
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
      </Operation>
      <Operation name="isConnected" id="::Microphone::MicrophoneManager::isConnected">
        <webidl>        boolean isConnected(DOMString uid) raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method get whether connect the microphone
            </brief>
            <version>
 1.0.0
            </version>
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/microphone
            </privilege>
            <Code> try {
     var flag = webapis.microphone.isConnected(&quot;uid&quot;);
     console.log(&quot; microphone connected = &quot; + flag);
 } catch (error) {
     console.log(&quot; error code = &quot; + error.code);
 }
 </Code>
        </descriptive>
        <Type type="boolean">
          <descriptive>
              <description><p>
 boolean
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="uid">
            <descriptive>
                <description><p>
 unique id of Microphone
                </p></description>
            </descriptive>
            <Type type="DOMString"/>
          </Argument>
        </ArgumentList>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type TypeMismatchError, if invalid DOMString type passed for 'uid' parameter
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
      <Operation name="getMicrophones" id="::Microphone::MicrophoneManager::getMicrophones">
        <webidl>        void getMicrophones(<ref>MicrophoneDeviceArraySuccessCallback</ref> onsuccess, optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 Get all the connected microphones
            </brief>
            <version>
 1.0.0
            </version>
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/microphone
            </privilege>
            <Code> function onsuccess(mics) {
     if (mics &#38;&#38; mics.length &#62; 0) {
         for (var i = 0; i  mics.length; i++) {
             if (mics[i] != null) {
                 console.log(i + &quot; &quot; + mics[i]);
             }
         }
     } else {
         console.log(&quot;No microphone found. If you are sure to hook up a microphone, please try again a few seconds.&quot;);
     }
 }
 
 
 try {
     webapis.microphone.getMicrophones(onsuccess);
 } catch (error) {
     console.log(&quot; error code = &quot; + error.code);
 }
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="onsuccess">
            <descriptive>
                <description><p>
 
                </p></description>
            </descriptive>
            <Type name="MicrophoneDeviceArraySuccessCallback"/>
          </Argument>
          <Argument optional="optional" name="onerror">
            <descriptive>
                <description><p>
 [optional][nullable] 
                </p></description>
            </descriptive>
            <Type name="ErrorCallback" nullable="nullable"/>
          </Argument>
        </ArgumentList>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type TypeMismatchError, if invalid ErrorCallback type passed for 'onerror' parameter
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
      <Operation name="addMicrophoneConnectListener" id="::Microphone::MicrophoneManager::addMicrophoneConnectListener">
        <webidl>        unsigned long addMicrophoneConnectListener(<ref>MicrophoneConnectCallback</ref> listener) raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method add the listener callback for the microphone change.
            </brief>
            <version>
 1.0.0
            </version>
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/microphone
            </privilege>
            <Code> var callback = function(deviceInfo) {
     console.log(&quot;device name is &quot; + deviceInfo.name);
     console.log(&quot;device uid is &quot; + deviceInfo.uid);
     console.log(&quot;device eventType is &quot; + deviceInfo.eventType);
 }
 
 try {
     var value = webapis.microphone.addMicrophoneConnectListener(callback);
     console.log(&quot;listener id = &quot; + value);
 } catch (error) {
     console.log(&quot; error code = &quot; + error.code);
 }
 </Code>
        </descriptive>
        <Type type="unsigned long">
          <descriptive>
              <description><p>
 unsigned long
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="listener">
            <descriptive>
                <description><p>
 Callback of MicrophoneConnectListener
                </p></description>
            </descriptive>
            <Type name="MicrophoneConnectCallback"/>
          </Argument>
        </ArgumentList>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type TypeMismatchError, if invalid fucntion type passed for 'listener' parameter
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
      <Operation name="removeMicrophoneConnectListener" id="::Microphone::MicrophoneManager::removeMicrophoneConnectListener">
        <webidl>        void removeMicrophoneConnectListener(unsigned long listenerId) raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method remove the listener which was added by addMicrophoneConnectListener
            </brief>
            <version>
 1.0.0
            </version>
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/microphone
            </privilege>
            <Code> try {
     webapis.microphone.removeMicrophoneConnectListener(listenerId);
     console.log(&quot;listener id = &quot; + value);
 } catch (error) {
     console.log(&quot; error code = &quot; + error.code);
 }
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="listenerId">
            <descriptive>
                <description><p>
 Id of MicrophoneConnectCallback
                </p></description>
            </descriptive>
            <Type type="unsigned long"/>
          </Argument>
        </ArgumentList>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type TypeMismatchError, if invalid long type passed for 'listenerId' parameter
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
    </Interface>
    <Interface name="MicrophoneDeviceArraySuccessCallback" id="::Microphone::MicrophoneDeviceArraySuccessCallback">
      <webidl>    [Callback=FunctionOnly, NoInterfaceObject] interface MicrophoneDeviceArraySuccessCallback {
        void onsuccess(<ref>MicrophoneDevice</ref> devices);

    };</webidl>
      <descriptive>
          <brief>
 This callback interface defines listener for get the return devices.
          </brief>
          <version>
 1.0.0
          </version>
      </descriptive>
      <ExtendedAttributeList>
        <ExtendedAttribute name="Callback" value="FunctionOnly">
          <webidl>Callback</webidl>
        </ExtendedAttribute>
        <ExtendedAttribute name="NoInterfaceObject">
          <webidl> NoInterfaceObject</webidl>
        </ExtendedAttribute>
      </ExtendedAttributeList>
      <Operation name="onsuccess" id="::Microphone::MicrophoneDeviceArraySuccessCallback::onsuccess">
        <webidl>        void onsuccess(<ref>MicrophoneDevice</ref> devices);</webidl>
        <descriptive>
            <brief>
 This callback interface defines listener for get the return devices.
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="devices">
            <descriptive>
                <description><p>
 
                </p></description>
            </descriptive>
            <Type name="MicrophoneDevice"/>
          </Argument>
        </ArgumentList>
      </Operation>
    </Interface>
    <Interface name="MicrophoneConnectCallback" id="::Microphone::MicrophoneConnectCallback">
      <webidl>    [Callback=FunctionOnly, NoInterfaceObject] interface MicrophoneConnectCallback {
        void onevent(<ref>MicrophoneConnectEvent</ref> event);

    };</webidl>
      <descriptive>
          <brief>
 This callback interface defines listener for notification of changes in the microphonemanager
          </brief>
          <version>
 1.0.0
          </version>
      </descriptive>
      <ExtendedAttributeList>
        <ExtendedAttribute name="Callback" value="FunctionOnly">
          <webidl>Callback</webidl>
        </ExtendedAttribute>
        <ExtendedAttribute name="NoInterfaceObject">
          <webidl> NoInterfaceObject</webidl>
        </ExtendedAttribute>
      </ExtendedAttributeList>
      <Operation name="onevent" id="::Microphone::MicrophoneConnectCallback::onevent">
        <webidl>        void onevent(<ref>MicrophoneConnectEvent</ref> event);</webidl>
        <descriptive>
            <brief>
 This callback interface defines listener for notification of changes in the microphonemanager
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="event">
            <descriptive>
                <description><p>
 
                </p></description>
            </descriptive>
            <Type name="MicrophoneConnectEvent"/>
          </Argument>
        </ArgumentList>
      </Operation>
    </Interface>
    <Interface name="MicrophoneConnectEvent" id="::Microphone::MicrophoneConnectEvent">
      <webidl>    [NoInterfaceObject] interface MicrophoneConnectEvent {
        readonly attribute DOMString uid;

        readonly attribute DOMString name;

        readonly attribute unsigned short eventType;

    };</webidl>
      <descriptive>
          <brief>
 This interface defines error of  event.
          </brief>
          <version>
 1.0.0
          </version>
      </descriptive>
      <ExtendedAttributeList>
        <ExtendedAttribute name="NoInterfaceObject">
          <webidl>NoInterfaceObject</webidl>
        </ExtendedAttribute>
      </ExtendedAttributeList>
      <Attribute readonly="readonly" name="uid" id="::Microphone::MicrophoneConnectEvent::uid">
        <webidl>        readonly attribute DOMString uid;</webidl>
        <descriptive>
            <brief>
 This attribute defines uid of microphone
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="DOMString"/>
      </Attribute>
      <Attribute readonly="readonly" name="name" id="::Microphone::MicrophoneConnectEvent::name">
        <webidl>        readonly attribute DOMString name;</webidl>
        <descriptive>
            <brief>
 This attribute defines name of microphone
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="DOMString"/>
      </Attribute>
      <Attribute readonly="readonly" name="eventType" id="::Microphone::MicrophoneConnectEvent::eventType">
        <webidl>        readonly attribute unsigned short eventType;</webidl>
        <descriptive>
            <brief>
 This attribute defines  event type of microphone
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Attribute>
    </Interface>
    <Implements name1="MicrophoneManager" name2="MicrophoneConnectEvent">
      <webidl>    <ref>MicrophoneManager</ref> implements <ref>MicrophoneConnectEvent</ref>;</webidl>
    </Implements>
    <Interface name="MicrophoneConnectEventType" id="::Microphone::MicrophoneConnectEventType">
      <webidl>    [NoInterfaceObject] interface MicrophoneConnectEventType {
        const unsigned short EVENT_DEVICE_CONNECT = 11;

        const unsigned short EVENT_DEVICE_DISCONNECT = 12;

    };</webidl>
      <descriptive>
          <brief>
 This interface defines constants that indicates the value of device event type.
          </brief>
          <version>
 1.0.0
          </version>
      </descriptive>
      <ExtendedAttributeList>
        <ExtendedAttribute name="NoInterfaceObject">
          <webidl>NoInterfaceObject</webidl>
        </ExtendedAttribute>
      </ExtendedAttributeList>
      <Const name="EVENT_DEVICE_CONNECT" value="11" id="::Microphone::MicrophoneConnectEventType::EVENT_DEVICE_CONNECT">
        <webidl>        const unsigned short EVENT_DEVICE_CONNECT = 11;</webidl>
        <descriptive>
            <brief>
 device connect
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="EVENT_DEVICE_DISCONNECT" value="12" id="::Microphone::MicrophoneConnectEventType::EVENT_DEVICE_DISCONNECT">
        <webidl>        const unsigned short EVENT_DEVICE_DISCONNECT = 12;</webidl>
        <descriptive>
            <brief>
 device disconnect
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
    </Interface>
    <Implements name1="MicrophoneManager" name2="MicrophoneConnectEventType">
      <webidl>    <ref>MicrophoneManager</ref> implements <ref>MicrophoneConnectEventType</ref>;</webidl>
    </Implements>
    <Interface name="MicrophoneDeviceAudioFormat" id="::Microphone::MicrophoneDeviceAudioFormat">
      <webidl>    [NoInterfaceObject] interface MicrophoneDeviceAudioFormat {
        const unsigned long MICROPHONE_FORMAT_SIGNED_16BIT_LITTLE_ENDIAN = 0;

        const unsigned long MICROPHONE_FORMAT_SIGNED_16BIT_BIG_ENDIAN_FORMAT = 1;

    };</webidl>
      <descriptive>
          <brief>
 This interface defines the format of microphone device.
          </brief>
          <version>
 1.0.0
          </version>
      </descriptive>
      <ExtendedAttributeList>
        <ExtendedAttribute name="NoInterfaceObject">
          <webidl>NoInterfaceObject</webidl>
        </ExtendedAttribute>
      </ExtendedAttributeList>
      <Const name="MICROPHONE_FORMAT_SIGNED_16BIT_LITTLE_ENDIAN" value="0" id="::Microphone::MicrophoneDeviceAudioFormat::MICROPHONE_FORMAT_SIGNED_16BIT_LITTLE_ENDIAN">
        <webidl>        const unsigned long MICROPHONE_FORMAT_SIGNED_16BIT_LITTLE_ENDIAN = 0;</webidl>
        <descriptive>
            <brief>
 little endian
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned long"/>
      </Const>
      <Const name="MICROPHONE_FORMAT_SIGNED_16BIT_BIG_ENDIAN_FORMAT" value="1" id="::Microphone::MicrophoneDeviceAudioFormat::MICROPHONE_FORMAT_SIGNED_16BIT_BIG_ENDIAN_FORMAT">
        <webidl>        const unsigned long MICROPHONE_FORMAT_SIGNED_16BIT_BIG_ENDIAN_FORMAT = 1;</webidl>
        <descriptive>
            <brief>
 big endian
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned long"/>
      </Const>
    </Interface>
    <Implements name1="MicrophoneManager" name2="MicrophoneDeviceAudioFormat">
      <webidl>    <ref>MicrophoneManager</ref> implements <ref>MicrophoneDeviceAudioFormat</ref>;</webidl>
    </Implements>
    <Interface name="MicrophoneSampleRateValue" id="::Microphone::MicrophoneSampleRateValue">
      <webidl>    [NoInterfaceObject] interface MicrophoneSampleRateValue {
        const unsigned long MICROPHONE_SAMPLE_RATE_48000 = 48000;

        const unsigned long MICROPHONE_SAMPLE_RATE_44100 = 44100;

        const unsigned long MICROPHONE_SAMPLE_RATE_32000 = 32000;

        const unsigned long MICROPHONE_SAMPLE_RATE_16000 = 16000;

        const unsigned long MICROPHONE_SAMPLE_RATE_8000 = 8000;

    };</webidl>
      <descriptive>
          <brief>
 This interface defines constants that indicates the value of sample rate value.
          </brief>
          <version>
 1.0.0
          </version>
      </descriptive>
      <ExtendedAttributeList>
        <ExtendedAttribute name="NoInterfaceObject">
          <webidl>NoInterfaceObject</webidl>
        </ExtendedAttribute>
      </ExtendedAttributeList>
      <Const name="MICROPHONE_SAMPLE_RATE_48000" value="48000" id="::Microphone::MicrophoneSampleRateValue::MICROPHONE_SAMPLE_RATE_48000">
        <webidl>        const unsigned long MICROPHONE_SAMPLE_RATE_48000 = 48000;</webidl>
        <descriptive>
            <brief>
 sample rate = 48k. CD quality.Default format of Audio Input Device
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned long"/>
      </Const>
      <Const name="MICROPHONE_SAMPLE_RATE_44100" value="44100" id="::Microphone::MicrophoneSampleRateValue::MICROPHONE_SAMPLE_RATE_44100">
        <webidl>        const unsigned long MICROPHONE_SAMPLE_RATE_44100 = 44100;</webidl>
        <descriptive>
            <brief>
 44100rate
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned long"/>
      </Const>
      <Const name="MICROPHONE_SAMPLE_RATE_32000" value="32000" id="::Microphone::MicrophoneSampleRateValue::MICROPHONE_SAMPLE_RATE_32000">
        <webidl>        const unsigned long MICROPHONE_SAMPLE_RATE_32000 = 32000;</webidl>
        <descriptive>
            <brief>
 32000rate
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned long"/>
      </Const>
      <Const name="MICROPHONE_SAMPLE_RATE_16000" value="16000" id="::Microphone::MicrophoneSampleRateValue::MICROPHONE_SAMPLE_RATE_16000">
        <webidl>        const unsigned long MICROPHONE_SAMPLE_RATE_16000 = 16000;</webidl>
        <descriptive>
            <brief>
 16000rate
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned long"/>
      </Const>
      <Const name="MICROPHONE_SAMPLE_RATE_8000" value="8000" id="::Microphone::MicrophoneSampleRateValue::MICROPHONE_SAMPLE_RATE_8000">
        <webidl>        const unsigned long MICROPHONE_SAMPLE_RATE_8000 = 8000;</webidl>
        <descriptive>
            <brief>
 8000rate
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned long"/>
      </Const>
    </Interface>
    <Implements name1="MicrophoneManager" name2="MicrophoneSampleRateValue">
      <webidl>    <ref>MicrophoneManager</ref> implements <ref>MicrophoneSampleRateValue</ref>;</webidl>
    </Implements>
    <Interface name="MicrophoneEffectValue" id="::Microphone::MicrophoneEffectValue">
      <webidl>    [NoInterfaceObject] interface MicrophoneEffectValue {
        const unsigned long MICROPHONE_EFFECT_NONE = 0x00;

        const unsigned long MICROPHONE_EFFECT_REVERB = 0x01;

        const unsigned long MICROPHONE_EFFECT_FILTER = 0x10;

    };</webidl>
      <descriptive>
          <brief>
 This interface defines constants that indicates the value of effect value.
          </brief>
          <version>
 1.0.0
          </version>
      </descriptive>
      <ExtendedAttributeList>
        <ExtendedAttribute name="NoInterfaceObject">
          <webidl>NoInterfaceObject</webidl>
        </ExtendedAttribute>
      </ExtendedAttributeList>
      <Const name="MICROPHONE_EFFECT_NONE" value="0x00" id="::Microphone::MicrophoneEffectValue::MICROPHONE_EFFECT_NONE">
        <webidl>        const unsigned long MICROPHONE_EFFECT_NONE = 0x00;</webidl>
        <descriptive>
            <brief>
 no effect
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned long"/>
      </Const>
      <Const name="MICROPHONE_EFFECT_REVERB" value="0x01" id="::Microphone::MicrophoneEffectValue::MICROPHONE_EFFECT_REVERB">
        <webidl>        const unsigned long MICROPHONE_EFFECT_REVERB = 0x01;</webidl>
        <descriptive>
            <brief>
 reverb effect
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned long"/>
      </Const>
      <Const name="MICROPHONE_EFFECT_FILTER" value="0x10" id="::Microphone::MicrophoneEffectValue::MICROPHONE_EFFECT_FILTER">
        <webidl>        const unsigned long MICROPHONE_EFFECT_FILTER = 0x10;</webidl>
        <descriptive>
            <brief>
 filter effect
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned long"/>
      </Const>
    </Interface>
    <Implements name1="MicrophoneManager" name2="MicrophoneEffectValue">
      <webidl>    <ref>MicrophoneManager</ref> implements <ref>MicrophoneEffectValue</ref>;</webidl>
    </Implements>
    <Interface name="MicrophoneStateValue" id="::Microphone::MicrophoneStateValue">
      <webidl>    [NoInterfaceObject] interface MicrophoneStateValue {
        const unsigned long MICROPHONE_STATUS_STOP = 0x00000000;

        const unsigned long MICROPHONE_STATUS_PLAY = 0x00000001;

        const unsigned long MICROPHONE_STATUS_RECORD = 0x00000010;

        const unsigned long MICROPHONE_STATUS_FILTER = 0x00000100;

    };</webidl>
      <descriptive>
          <brief>
 This interface defines constants that indicates the value of state value.
          </brief>
          <version>
 1.0.0
          </version>
      </descriptive>
      <ExtendedAttributeList>
        <ExtendedAttribute name="NoInterfaceObject">
          <webidl>NoInterfaceObject</webidl>
        </ExtendedAttribute>
      </ExtendedAttributeList>
      <Const name="MICROPHONE_STATUS_STOP" value="0x00000000" id="::Microphone::MicrophoneStateValue::MICROPHONE_STATUS_STOP">
        <webidl>        const unsigned long MICROPHONE_STATUS_STOP = 0x00000000;</webidl>
        <descriptive>
            <brief>
 stop status
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned long"/>
      </Const>
      <Const name="MICROPHONE_STATUS_PLAY" value="0x00000001" id="::Microphone::MicrophoneStateValue::MICROPHONE_STATUS_PLAY">
        <webidl>        const unsigned long MICROPHONE_STATUS_PLAY = 0x00000001;</webidl>
        <descriptive>
            <brief>
 play status
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned long"/>
      </Const>
      <Const name="MICROPHONE_STATUS_RECORD" value="0x00000010" id="::Microphone::MicrophoneStateValue::MICROPHONE_STATUS_RECORD">
        <webidl>        const unsigned long MICROPHONE_STATUS_RECORD = 0x00000010;</webidl>
        <descriptive>
            <brief>
 record status
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned long"/>
      </Const>
      <Const name="MICROPHONE_STATUS_FILTER" value="0x00000100" id="::Microphone::MicrophoneStateValue::MICROPHONE_STATUS_FILTER">
        <webidl>        const unsigned long MICROPHONE_STATUS_FILTER = 0x00000100;</webidl>
        <descriptive>
            <brief>
 filter status
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned long"/>
      </Const>
    </Interface>
    <Implements name1="MicrophoneManager" name2="MicrophoneStateValue">
      <webidl>    <ref>MicrophoneManager</ref> implements <ref>MicrophoneStateValue</ref>;</webidl>
    </Implements>
    <Interface name="MicrophoneDevice" id="::Microphone::MicrophoneDevice">
      <webidl>    [NoInterfaceObject] interface MicrophoneDevice {
        readonly attribute DOMString uid;

        readonly attribute DOMString name;

        readonly attribute long deviceId;

        readonly attribute long deviceType;

        DOMString getUniqueId();

        unsigned long getDeviceId();

        DOMString getName();

        boolean enableDevice(unsigned long format, unsigned long sampleRate) raises(<ref>WebAPIException</ref>);

        boolean disableDevice();

        boolean stop(optional unsigned long? state) raises(<ref>WebAPIException</ref>);

        boolean play(optional boolean? lockState) raises(<ref>WebAPIException</ref>);

        unsigned long getVolumeLevel();

        boolean setVolumeLevel(unsigned long volume) raises(<ref>WebAPIException</ref>);

        unsigned long getSupportedEffect();

        unsigned long getEnabledEffect();

        boolean setEffect(unsigned long effect, boolean enable, optional unsigned long? tempo, optional unsigned long? pitch, optional unsigned long? rate, optional unsigned long? threshold, optional unsigned long? noduration) raises(<ref>WebAPIException</ref>);

        unsigned long getFilterVolume();

        unsigned long addMicrophoneEventListener(<ref>MicrophoneEventCallback</ref> listener) raises(<ref>WebAPIException</ref>);

        void removeMicrophoneEventListener(unsigned long listenerId) raises(<ref>WebAPIException</ref>);

    };</webidl>
      <descriptive>
          <brief>
 This interface provides methods to use the Microphone device functionalities.
          </brief>
          <version>
 1.0.0
          </version>
      </descriptive>
      <ExtendedAttributeList>
        <ExtendedAttribute name="NoInterfaceObject">
          <webidl>NoInterfaceObject</webidl>
        </ExtendedAttribute>
      </ExtendedAttributeList>
      <Attribute readonly="readonly" name="uid" id="::Microphone::MicrophoneDevice::uid">
        <webidl>        readonly attribute DOMString uid;</webidl>
        <descriptive>
            <brief>
 This attribute defines uid of device
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="DOMString"/>
      </Attribute>
      <Attribute readonly="readonly" name="name" id="::Microphone::MicrophoneDevice::name">
        <webidl>        readonly attribute DOMString name;</webidl>
        <descriptive>
            <brief>
 This attribute defines name of device
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="DOMString"/>
      </Attribute>
      <Attribute readonly="readonly" name="deviceId" id="::Microphone::MicrophoneDevice::deviceId">
        <webidl>        readonly attribute long deviceId;</webidl>
        <descriptive>
            <brief>
 This attribute defines  device id of microphone
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="long"/>
      </Attribute>
      <Attribute readonly="readonly" name="deviceType" id="::Microphone::MicrophoneDevice::deviceType">
        <webidl>        readonly attribute long deviceType;</webidl>
        <descriptive>
            <brief>
 This attribute defines device type of microphone
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="long"/>
      </Attribute>
      <Operation name="getUniqueId" id="::Microphone::MicrophoneDevice::getUniqueId">
        <webidl>        DOMString getUniqueId();</webidl>
        <descriptive>
            <brief>
 This method use to get uniqueId
            </brief>
            <version>
 1.0.0
            </version>
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/microphone
            </privilege>
            <Code> webapis.microphone.getMicrophones(function(misc) {
     if (mics &#38;&#38; mics.length &#62; 0) {
         var device = miscs[0];
         try {
             var value = device.getUniqueId();
         } catch (error) {
             console.log(&quot; error code = &quot; + error.code);
         }
 
     }
 });
 </Code>
        </descriptive>
        <Type type="DOMString">
          <descriptive>
              <description><p>
 DOMString
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
      </Operation>
      <Operation name="getDeviceId" id="::Microphone::MicrophoneDevice::getDeviceId">
        <webidl>        unsigned long getDeviceId();</webidl>
        <descriptive>
            <brief>
 This method use to get deviceId
            </brief>
            <version>
 1.0.0
            </version>
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/microphone
            </privilege>
            <Code> webapis.microphone.getMicrophones(function(misc) {
     if (mics &#38;&#38; mics.length &#62; 0) {
         var device = miscs[0];
         try {
             var value = device.getDeviceId();
         } catch (error) {
             console.log(&quot; error code = &quot; + error.code);
         }
 
     }
 });
 </Code>
        </descriptive>
        <Type type="unsigned long">
          <descriptive>
              <description><p>
 unsigned long
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
      </Operation>
      <Operation name="getName" id="::Microphone::MicrophoneDevice::getName">
        <webidl>        DOMString getName();</webidl>
        <descriptive>
            <brief>
 This method use to get device Name
            </brief>
            <version>
 1.0.0
            </version>
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/microphone
            </privilege>
            <Code> webapis.microphone.getMicrophones(function(misc) {
     if (mics &#38;&#38; mics.length &#62; 0) {
         var device = miscs[0];
         try {
             var value = device.getName();
         } catch (error) {
             console.log(&quot; error code = &quot; + error.code);
         }
 
     }
 });
 </Code>
        </descriptive>
        <Type type="DOMString">
          <descriptive>
              <description><p>
 DOMString
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
      </Operation>
      <Operation name="enableDevice" id="::Microphone::MicrophoneDevice::enableDevice">
        <webidl>        boolean enableDevice(unsigned long format, unsigned long sampleRate) raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method use to enable device
            </brief>
            <version>
 1.0.0
            </version>
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/microphone
            </privilege>
            <Code> webapis.microphone.getMicrophones(function(misc) {
     if (mics &#38;&#38; mics.length &#62; 0) {
         var device = miscs[0];
         try {
             var value = device.enableDevice(webapis.microphone.MICROPHONE_FORMAT_SIGNED_16BIT_LITTLE_ENDIAN, webapis.microphone.MICROPHONE_SAMPLE_RATE_48000);
         } catch (error) {
             console.log(&quot; error code = &quot; + error.code);
         }
 
     }
 });
 </Code>
        </descriptive>
        <Type type="boolean">
          <descriptive>
              <description><p>
 boolean
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="format">
            <descriptive>
                <description><p>
 format of microphone
                </p></description>
            </descriptive>
            <Type type="unsigned long"/>
          </Argument>
          <Argument name="sampleRate">
            <descriptive>
                <description><p>
 sampleRate of microphone
                </p></description>
            </descriptive>
            <Type type="unsigned long"/>
          </Argument>
        </ArgumentList>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type TypeMismatchError, if invalid long type passed for 'sampleRate' parameter
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
      <Operation name="disableDevice" id="::Microphone::MicrophoneDevice::disableDevice">
        <webidl>        boolean disableDevice();</webidl>
        <descriptive>
            <brief>
 This method use to disable device
            </brief>
            <version>
 1.0.0
            </version>
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/microphone
            </privilege>
            <Code> webapis.microphone.getMicrophones(function(misc) {
     if (mics &#38;&#38; mics.length &#62; 0) {
         var device = miscs[0];
         try {
             var value = device.disableDevice();
         } catch (error) {
             console.log(&quot; error code = &quot; + error.code);
         }
 
     }
 });
 </Code>
        </descriptive>
        <Type type="boolean">
          <descriptive>
              <description><p>
 boolean
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
      </Operation>
      <Operation name="stop" id="::Microphone::MicrophoneDevice::stop">
        <webidl>        boolean stop(optional unsigned long? state) raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method use to stop
            </brief>
            <version>
 1.0.0
            </version>
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/microphone
            </privilege>
            <Code> webapis.microphone.getMicrophones(function(misc) {
     if (mics &#38;&#38; mics.length &#62; 0) {
         var device = miscs[0];
         try {
             var value = device.stop(webapis.microphone.MICROPHONE_STATUS_PLAY | webapis.microphone.MICROPHONE_STATUS_RECORD);
         } catch (error) {
             console.log(&quot; error code = &quot; + error.code);
         }
 
     }
 });
 </Code>
        </descriptive>
        <Type type="boolean">
          <descriptive>
              <description><p>
 boolean
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument optional="optional" name="state">
            <descriptive>
                <description><p>
 [optional][nullable] state of microphone
                </p></description>
            </descriptive>
            <Type type="unsigned long" nullable="nullable"/>
          </Argument>
        </ArgumentList>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type TypeMismatchError, if invalid long type passed for 'state' parameter
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
      <Operation name="play" id="::Microphone::MicrophoneDevice::play">
        <webidl>        boolean play(optional boolean? lockState) raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method use to play
            </brief>
            <version>
 1.0.0
            </version>
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/microphone
            </privilege>
            <Code> webapis.microphone.getMicrophones(function(misc) {
     if (mics &#38;&#38; mics.length &#62; 0) {
         var device = miscs[0];
         try {
             var value = device.play();
         } catch (error) {
             console.log(&quot; error code = &quot; + error.code);
         }
 
     }
 });
 </Code>
        </descriptive>
        <Type type="boolean">
          <descriptive>
              <description><p>
 boolean
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument optional="optional" name="lockState">
            <descriptive>
                <description><p>
 [optional][nullable] if tizen, ignore it.
                </p></description>
            </descriptive>
            <Type type="boolean" nullable="nullable"/>
          </Argument>
        </ArgumentList>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type TypeMismatchError, if invalid boolean type passed for 'lockState' parameter
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
      <Operation name="getVolumeLevel" id="::Microphone::MicrophoneDevice::getVolumeLevel">
        <webidl>        unsigned long getVolumeLevel();</webidl>
        <descriptive>
            <brief>
 This method use to get volume level
            </brief>
            <version>
 1.0.0
            </version>
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/microphone
            </privilege>
            <Code> webapis.microphone.getMicrophones(function(misc) {
     if (mics &#38;&#38; mics.length &#62; 0) {
         var device = miscs[0];
         try {
             var value = device.getVolumeLevel();
         } catch (error) {
             console.log(&quot; error code = &quot; + error.code);
         }
 
     }
 });
 </Code>
        </descriptive>
        <Type type="unsigned long">
          <descriptive>
              <description><p>
 unsigned long
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
      </Operation>
      <Operation name="setVolumeLevel" id="::Microphone::MicrophoneDevice::setVolumeLevel">
        <webidl>        boolean setVolumeLevel(unsigned long volume) raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method use to set volume level
            </brief>
            <version>
 1.0.0
            </version>
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/microphone
            </privilege>
            <Code> webapis.microphone.getMicrophones(function(misc) {
     if (mics &#38;&#38; mics.length &#62; 0) {
         var device = miscs[0];
         try {
             var volume = 50;
             var value = device.setVolumeLevel(volume);
         } catch (error) {
             console.log(&quot; error code = &quot; + error.code);
         }
 
     }
 });
 </Code>
        </descriptive>
        <Type type="boolean">
          <descriptive>
              <description><p>
 boolean
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="volume">
            <descriptive>
                <description><p>
 volume level
                </p></description>
            </descriptive>
            <Type type="unsigned long"/>
          </Argument>
        </ArgumentList>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type TypeMismatchError, if invalid long type passed for 'volume' parameter
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
      <Operation name="getSupportedEffect" id="::Microphone::MicrophoneDevice::getSupportedEffect">
        <webidl>        unsigned long getSupportedEffect();</webidl>
        <descriptive>
            <brief>
 This method use to get  supported effect
            </brief>
            <version>
 1.0.0
            </version>
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/microphone
            </privilege>
            <Code> webapis.microphone.getMicrophones(function(misc) {
     if (mics &#38;&#38; mics.length &#62; 0) {
         var device = miscs[0];
         try {
             var effects = device.getSupportedEffect();
             if (effects == webapis.microphone.MICROPHONE_EFFECT_NONE) {
                 console.log(&quot;No effects supported&quot;);
             } else {
                 if (effects &#38; webapis.microphone.MICROPHONE_EFFECT_REVERB) {
                     console.log(&quot;REVERB effect supported&quot;);
                 }
                 if (effects &#38; webapis.microphone.MICROPHONE_EFFECT_FILTER) {
                     console.log(&quot;FILTER effect supported&quot;);
                 }
             }
         } catch (error) {
             console.log(&quot;error code = &quot; + error.code);
         }
 
     }
 });
 </Code>
        </descriptive>
        <Type type="unsigned long">
          <descriptive>
              <description><p>
 unsigned long
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
      </Operation>
      <Operation name="getEnabledEffect" id="::Microphone::MicrophoneDevice::getEnabledEffect">
        <webidl>        unsigned long getEnabledEffect();</webidl>
        <descriptive>
            <brief>
 This method use to get enabled effect
            </brief>
            <version>
 1.0.0
            </version>
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/microphone
            </privilege>
            <Code> webapis.microphone.getMicrophones(function(misc) {
     if (mics &#38;&#38; mics.length &#62; 0) {
         var device = miscs[0];
         try {
             var effects = device.getEnabledEffect();
             if (effects == webapis.microphone.MICROPHONE_EFFECT_NONE) {
                 console.log(&quot;No effects enabled&quot;);
             } else {
                 if (effects &#38; webapis.microphone.MICROPHONE_EFFECT_REVERB) {
                     console.log(&quot;REVERB effect enableed&quot;);
                 }
                 if (effects &#38; webapis.microphone.MICROPHONE_EFFECT_FILTER) {
                     console.log(&quot;FILTER effect enableed&quot;);
                 }
             }
         } catch (error) {
             console.log(&quot;error code = &quot; + error.code);
         }
     }
 });
 </Code>
        </descriptive>
        <Type type="unsigned long">
          <descriptive>
              <description><p>
 unsigned long
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
      </Operation>
      <Operation name="setEffect" id="::Microphone::MicrophoneDevice::setEffect">
        <webidl>        boolean setEffect(unsigned long effect, boolean enable, optional unsigned long? tempo, optional unsigned long? pitch, optional unsigned long? rate, optional unsigned long? threshold, optional unsigned long? noduration) raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method use to set effect
            </brief>
            <version>
 1.0.0
            </version>
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/microphone
            </privilege>
            <Code> webapis.microphone.getMicrophones(function(misc) {
     if (mics &#38;&#38; mics.length &#62; 0) {
         var device = miscs[0];
         try {
             var flag = device.setEffect(webapis.microphone.MICROPHONE_EFFECT_FILTER, true, Number(tempo), Number(pitch), Number(rate), Number(threshold), Number(noduration));
         } catch (error) {
             console.log(&quot; error code = &quot; + error.code);
         }
     }
 });
 </Code>
        </descriptive>
        <Type type="boolean">
          <descriptive>
              <description><p>
 boolean
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="effect">
            <descriptive>
                <description><p>
 effect of microphone
                </p></description>
            </descriptive>
            <Type type="unsigned long"/>
          </Argument>
          <Argument name="enable">
            <descriptive>
                <description><p>
 if ture, enable the effect. otherwise, disable the effect.
                </p></description>
            </descriptive>
            <Type type="boolean"/>
          </Argument>
          <Argument optional="optional" name="tempo">
            <descriptive>
                <description><p>
 [optional][nullable] tempo of microphone, only for filter enabled case.
                </p></description>
            </descriptive>
            <Type type="unsigned long" nullable="nullable"/>
          </Argument>
          <Argument optional="optional" name="pitch">
            <descriptive>
                <description><p>
 [optional][nullable] pitch of microphone, only for filter enabled case.
                </p></description>
            </descriptive>
            <Type type="unsigned long" nullable="nullable"/>
          </Argument>
          <Argument optional="optional" name="rate">
            <descriptive>
                <description><p>
 [optional][nullable] rate of microphone , only for filter enabled case.
                </p></description>
            </descriptive>
            <Type type="unsigned long" nullable="nullable"/>
          </Argument>
          <Argument optional="optional" name="threshold">
            <descriptive>
                <description><p>
 [optional][nullable] if less than this threshold, ignore this sound.
                </p></description>
            </descriptive>
            <Type type="unsigned long" nullable="nullable"/>
          </Argument>
          <Argument optional="optional" name="noduration">
            <descriptive>
                <description><p>
 [optional][nullable] no sound duration, if the time of user stop speaking exceed the duration, it will play the filted voice.
                </p></description>
            </descriptive>
            <Type type="unsigned long" nullable="nullable"/>
          </Argument>
        </ArgumentList>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type TypeMismatchError, if invalid long type passed for 'noduration' parameter
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
      <Operation name="getFilterVolume" id="::Microphone::MicrophoneDevice::getFilterVolume">
        <webidl>        unsigned long getFilterVolume();</webidl>
        <descriptive>
            <brief>
 This method use to get filter volume
            </brief>
            <version>
 1.0.0
            </version>
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/microphone
            </privilege>
            <Code> webapis.microphone.getMicrophones(function(misc) {
     if (mics &#38;&#38; mics.length &#62; 0) {
         var device = miscs[0];
         try {
             var value = device.getFilterVolume();
         } catch (error) {
             console.log(&quot; error code = &quot; + error.code);
         }
 
     }
 });
 </Code>
        </descriptive>
        <Type type="unsigned long">
          <descriptive>
              <description><p>
 unsigned long
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
      </Operation>
      <Operation name="addMicrophoneEventListener" id="::Microphone::MicrophoneDevice::addMicrophoneEventListener">
        <webidl>        unsigned long addMicrophoneEventListener(<ref>MicrophoneEventCallback</ref> listener) raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method add the listener callback for the microphone event change.
            </brief>
            <version>
 1.0.0
            </version>
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/microphone
            </privilege>
            <Code> var onevent = function(eventType) {
     console.log(&quot;eventType is &quot; + eventType);
 }
 webapis.microphone.getMicrophones(function(misc) {
     if (mics &#38;&#38; mics.length &#62; 0) {
         var device = miscs[0];
         try {
             var listenerId = device.addMicrophoneEventListener(onevent);
             console.log(&quot;listener id = &quot; + listenerId);
         } catch (error) {
             console.log(&quot; error code = &quot; + error.code);
         }
     }
 });
 </Code>
        </descriptive>
        <Type type="unsigned long">
          <descriptive>
              <description><p>
 unsigned long
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="listener">
            <descriptive>
                <description><p>
 Callback of MicrophoneEventListener
                </p></description>
            </descriptive>
            <Type name="MicrophoneEventCallback"/>
          </Argument>
        </ArgumentList>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type TypeMismatchError, if invalid function type passed for 'listener' parameter
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
      <Operation name="removeMicrophoneEventListener" id="::Microphone::MicrophoneDevice::removeMicrophoneEventListener">
        <webidl>        void removeMicrophoneEventListener(unsigned long listenerId) raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method remove the listener which was added by addMicrophoneEventListener
            </brief>
            <version>
 1.0.0
            </version>
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/microphone
            </privilege>
            <Code> var onevent = function(eventType) {
     console.log(&quot;eventType is &quot; + eventType);
 }
 webapis.microphone.getMicrophones(function(misc) {
     if (mics &#38;&#38; mics.length &#62; 0) {
         var device = miscs[0];
         try {
             var listenerId = device.addMicrophoneEventListener(onevent);
             device.removeMicrophoneEventListener(listenerId);
         } catch (error) {
             console.log(&quot; error code = &quot; + error.code);
         }
     }
 });
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="listenerId">
            <descriptive>
                <description><p>
 Id of MicrophoneEventCallback
                </p></description>
            </descriptive>
            <Type type="unsigned long"/>
          </Argument>
        </ArgumentList>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type TypeMismatchError, if invalid long type passed for 'listenerId' parameter
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
    </Interface>
    <Interface name="MicrophoneAudioinputEvent" id="::Microphone::MicrophoneAudioinputEvent">
      <webidl>    [NoInterfaceObject] interface MicrophoneAudioinputEvent {
        const unsigned long MICROPHONE_AUDIOINPUT_PLAY_FAIL = 400;

        const unsigned long MICROPHONE_AUDIOINPUT_DATA = 401;

        const unsigned long MICROPHONE_AUDIOINPUT_RECORD_FAIL = 402;

        const unsigned long MICROPHONE_AUDIOINPUT_RECORD_STOP = 403;

        const unsigned long MICROPHONE_AUDIOINPUT_FILTER_VOICE_DETECTED = 404;

        const unsigned long MICROPHONE_AUDIOINPUT_FILTER_PLAY_START = 405;

        const unsigned long MICROPHONE_AUDIOINPUT_FILTER_PLAY_STOP = 406;

        const unsigned long MICROPHONE_AUDIOINPUT_FILTER_SILENCE_DETECTED = 407;

        const unsigned long MICROPHONE_AUDIOINPUT_FILTER_PLAY_VOLUME = 450;

    };</webidl>
      <descriptive>
          <brief>
 This interface defines constants that indicates the value of state value.
          </brief>
          <version>
 1.0.0
          </version>
      </descriptive>
      <ExtendedAttributeList>
        <ExtendedAttribute name="NoInterfaceObject">
          <webidl>NoInterfaceObject</webidl>
        </ExtendedAttribute>
      </ExtendedAttributeList>
      <Const name="MICROPHONE_AUDIOINPUT_PLAY_FAIL" value="400" id="::Microphone::MicrophoneAudioinputEvent::MICROPHONE_AUDIOINPUT_PLAY_FAIL">
        <webidl>        const unsigned long MICROPHONE_AUDIOINPUT_PLAY_FAIL = 400;</webidl>
        <descriptive>
            <brief>
 Event for Play-fail
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned long"/>
      </Const>
      <Const name="MICROPHONE_AUDIOINPUT_DATA" value="401" id="::Microphone::MicrophoneAudioinputEvent::MICROPHONE_AUDIOINPUT_DATA">
        <webidl>        const unsigned long MICROPHONE_AUDIOINPUT_DATA = 401;</webidl>
        <descriptive>
            <brief>
 Event for Read
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned long"/>
      </Const>
      <Const name="MICROPHONE_AUDIOINPUT_RECORD_FAIL" value="402" id="::Microphone::MicrophoneAudioinputEvent::MICROPHONE_AUDIOINPUT_RECORD_FAIL">
        <webidl>        const unsigned long MICROPHONE_AUDIOINPUT_RECORD_FAIL = 402;</webidl>
        <descriptive>
            <brief>
 Event for Record-fail
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned long"/>
      </Const>
      <Const name="MICROPHONE_AUDIOINPUT_RECORD_STOP" value="403" id="::Microphone::MicrophoneAudioinputEvent::MICROPHONE_AUDIOINPUT_RECORD_STOP">
        <webidl>        const unsigned long MICROPHONE_AUDIOINPUT_RECORD_STOP = 403;</webidl>
        <descriptive>
            <brief>
 Event for Record stop due to the effect setting
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned long"/>
      </Const>
      <Const name="MICROPHONE_AUDIOINPUT_FILTER_VOICE_DETECTED" value="404" id="::Microphone::MicrophoneAudioinputEvent::MICROPHONE_AUDIOINPUT_FILTER_VOICE_DETECTED">
        <webidl>        const unsigned long MICROPHONE_AUDIOINPUT_FILTER_VOICE_DETECTED = 404;</webidl>
        <descriptive>
            <brief>
 Event for voice detection
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned long"/>
      </Const>
      <Const name="MICROPHONE_AUDIOINPUT_FILTER_PLAY_START" value="405" id="::Microphone::MicrophoneAudioinputEvent::MICROPHONE_AUDIOINPUT_FILTER_PLAY_START">
        <webidl>        const unsigned long MICROPHONE_AUDIOINPUT_FILTER_PLAY_START = 405;</webidl>
        <descriptive>
            <brief>
 Event for filter play started
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned long"/>
      </Const>
      <Const name="MICROPHONE_AUDIOINPUT_FILTER_PLAY_STOP" value="406" id="::Microphone::MicrophoneAudioinputEvent::MICROPHONE_AUDIOINPUT_FILTER_PLAY_STOP">
        <webidl>        const unsigned long MICROPHONE_AUDIOINPUT_FILTER_PLAY_STOP = 406;</webidl>
        <descriptive>
            <brief>
 Event for filter play stopped
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned long"/>
      </Const>
      <Const name="MICROPHONE_AUDIOINPUT_FILTER_SILENCE_DETECTED" value="407" id="::Microphone::MicrophoneAudioinputEvent::MICROPHONE_AUDIOINPUT_FILTER_SILENCE_DETECTED">
        <webidl>        const unsigned long MICROPHONE_AUDIOINPUT_FILTER_SILENCE_DETECTED = 407;</webidl>
        <descriptive>
            <brief>
 Event for silence detection
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned long"/>
      </Const>
      <Const name="MICROPHONE_AUDIOINPUT_FILTER_PLAY_VOLUME" value="450" id="::Microphone::MicrophoneAudioinputEvent::MICROPHONE_AUDIOINPUT_FILTER_PLAY_VOLUME">
        <webidl>        const unsigned long MICROPHONE_AUDIOINPUT_FILTER_PLAY_VOLUME = 450;</webidl>
        <descriptive>
            <brief>
 Event for filter play volume
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned long"/>
      </Const>
    </Interface>
    <Implements name1="MicrophoneManager" name2="MicrophoneAudioinputEvent">
      <webidl>    <ref>MicrophoneManager</ref> implements <ref>MicrophoneAudioinputEvent</ref>;</webidl>
    </Implements>
    <Interface name="MicrophoneEventCallback" id="::Microphone::MicrophoneEventCallback">
      <webidl>    [Callback=FunctionOnly, NoInterfaceObject] interface MicrophoneEventCallback {
        void onevent(unsigned long eventType);

    };</webidl>
      <descriptive>
          <brief>
 This callback interface defines listener for get the event of devices.
          </brief>
          <version>
 1.0.0
          </version>
      </descriptive>
      <ExtendedAttributeList>
        <ExtendedAttribute name="Callback" value="FunctionOnly">
          <webidl>Callback</webidl>
        </ExtendedAttribute>
        <ExtendedAttribute name="NoInterfaceObject">
          <webidl> NoInterfaceObject</webidl>
        </ExtendedAttribute>
      </ExtendedAttributeList>
      <Operation name="onevent" id="::Microphone::MicrophoneEventCallback::onevent">
        <webidl>        void onevent(unsigned long eventType);</webidl>
        <descriptive>
            <brief>
 This callback interface defines listener for notification of changes in the microphoneevent
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="eventType">
            <descriptive>
                <description><p>
 
                </p></description>
            </descriptive>
            <Type type="unsigned long"/>
          </Argument>
        </ArgumentList>
      </Operation>
    </Interface>
  </Module>
  <Module name="Network" id="::Network">
    <webidl>module Network {
    enum NetworkIpMode {&quot;STATIC&quot;, &quot;DYNAMIC&quot;, &quot;AUTO&quot;, &quot;FIXED&quot;, &quot;UNKNOWN&quot;};

    enum NetworkActiveConnectionType {&quot;DISCONNECTED&quot;, &quot;WIFI&quot;, &quot;CELLULAR&quot;, &quot;ETHERNET&quot;};

    enum NetworkWiFiSecurityMode {&quot;WEP&quot;, &quot;PSK&quot;, &quot;WPA2_PSK&quot;, &quot;EAP&quot;, &quot;NONE&quot;, &quot;UNKNOWN&quot;};

    enum NetworkWiFiEncryptionType {&quot;WEP&quot;, &quot;TKIP&quot;, &quot;AES&quot;, &quot;TKIP_AES_MIXED&quot;, &quot;NONE&quot;, &quot;UNKNOWN&quot;};

    enum NetworkState {&quot;GATEWAY_CONNECTED&quot;, &quot;GATEWAY_DISCONNECTED&quot;};

    [NoInterfaceObject] interface NetworkManagerObject {
        readonly attribute <ref>NetworkManager</ref> network;

    };
    <ref>WebApi</ref> implements <ref>NetworkManagerObject</ref>;

    [NoInterfaceObject] interface NetworkManager {
        DOMString getVersion();

        <ref>bool</ref> isConnectedToGateway();

        <ref>NetworkIpMode</ref> getIpMode();

        DOMString getSubnetMask();

        DOMString getGateway();

        DOMString getMac();

        DOMString getDns();

        DOMString getIp();

        <ref>NetworkActiveConnectionType</ref> getActiveConnectionType();

        unsigned long addNetworkStateChangeListener(<ref>NetworkStateChangedCallback</ref> listener);

        void removeNetworkStateChangeListener(unsigned long listenerId);

        DOMString getWiFiSsid();

        short getWiFiSignalStrengthLevel();

        <ref>NetworkWiFiSecurityMode</ref> getWiFiSecurityMode();

        <ref>NetworkWiFiEncryptionType</ref> getWiFiEncryptionType();

    };

    [Callback=FunctionOnly, NoInterfaceObject] interface NetworkStateChangedCallback {
        void onchange(<ref>NetworkState</ref> state);

    };

};</webidl>
    <descriptive>
        <brief>
 The module defines the functionalities of getting network information that are provides as the Tizen-based Samsung TV Product API.
        </brief>
        <version>
 1.0
        </version>
    </descriptive>
    <Enum name="NetworkIpMode" id="::Network::NetworkIpMode">
      <webidl>    enum NetworkIpMode {&quot;STATIC&quot;, &quot;DYNAMIC&quot;, &quot;AUTO&quot;, &quot;FIXED&quot;, &quot;UNKNOWN&quot;};</webidl>
      <descriptive>
          <brief>
 This enumeration list the network ip configuration type in wired and wireless.
The values defined by this enumerator are:
          </brief>
         <description>
          <ul>
            <li>
&quot;STATIC&quot; - Wired / Wireless connected to IPv4 network via static ip configuration.            </li>
            <li>
&quot;DYNAMIC&quot; - Wired / Wireless connected to IPv6 network via dynamic ip configuration.            </li>
            <li>
&quot;AUTO&quot; - DHCP: Wired / Wireless connected to IPv4 network via auto ip configuration.            </li>
            <li>
&quot;FIXED&quot; - Cellullar connected to network via fixed ip configuration.            </li>
            <li>
&quot;UNKNOWN&quot; - Wired / Wireless configuration is not there.            </li>
          </ul>
         </description>
          <version>
 1.0
          </version>
      </descriptive>
      <EnumValue stringvalue="STATIC">
        <webidl>&quot;STATIC</webidl>
      </EnumValue>
      <EnumValue stringvalue="DYNAMIC">
        <webidl> &quot;DYNAMIC</webidl>
      </EnumValue>
      <EnumValue stringvalue="AUTO">
        <webidl> &quot;AUTO</webidl>
      </EnumValue>
      <EnumValue stringvalue="FIXED">
        <webidl> &quot;FIXED</webidl>
      </EnumValue>
      <EnumValue stringvalue="UNKNOWN">
        <webidl> &quot;UNKNOWN</webidl>
      </EnumValue>
    </Enum>
    <Enum name="NetworkActiveConnectionType" id="::Network::NetworkActiveConnectionType">
      <webidl>    enum NetworkActiveConnectionType {&quot;DISCONNECTED&quot;, &quot;WIFI&quot;, &quot;CELLULAR&quot;, &quot;ETHERNET&quot;};</webidl>
      <descriptive>
          <brief>
 This enumeration list the which connection type is active at current time.
The values defined by this enumerator are:
          </brief>
         <description>
          <ul>
            <li>
&quot;DISCONNECTED&quot; - No network is configured.            </li>
            <li>
&quot;WIFI&quot; - Tv is connected to the wifi network.            </li>
            <li>
&quot;CELLULAR&quot; - Tv is connected to the cellular network.            </li>
            <li>
&quot;ETHERNET&quot; - Tv is connected to the ethernet network.            </li>
          </ul>
         </description>
          <version>
 1.0
          </version>
      </descriptive>
      <EnumValue stringvalue="DISCONNECTED">
        <webidl>&quot;DISCONNECTED</webidl>
      </EnumValue>
      <EnumValue stringvalue="WIFI">
        <webidl> &quot;WIFI</webidl>
      </EnumValue>
      <EnumValue stringvalue="CELLULAR">
        <webidl> &quot;CELLULAR</webidl>
      </EnumValue>
      <EnumValue stringvalue="ETHERNET">
        <webidl> &quot;ETHERNET</webidl>
      </EnumValue>
    </Enum>
    <Enum name="NetworkWiFiSecurityMode" id="::Network::NetworkWiFiSecurityMode">
      <webidl>    enum NetworkWiFiSecurityMode {&quot;WEP&quot;, &quot;PSK&quot;, &quot;WPA2_PSK&quot;, &quot;EAP&quot;, &quot;NONE&quot;, &quot;UNKNOWN&quot;};</webidl>
      <descriptive>
          <brief>
 This enumeration list the current security mode configured in the tv by which it is connected to the router.
The values defined by this enumerator are:
          </brief>
         <description>
          <ul>
            <li>
&quot;WEP&quot; - Connected to router security type is &quot;WEP&quot;.            </li>
            <li>
&quot;PSK&quot; - Connected to router security type is &quot;PSK&quot;.            </li>
            <li>
&quot;WPA2_PSK&quot; - Connected to router security type is &quot;WPA2_PSK&quot;.            </li>
            <li>
&quot;EAP&quot; - Connected to router security type is &quot;EAP&quot;.            </li>
            <li>
&quot;NONE&quot; - Connected to router security type is &quot;NONE&quot;. So it is a open security type.            </li>
            <li>
&quot;UNKNOWN&quot; - Failed to get security mode.            </li>
          </ul>
         </description>
          <version>
 1.0
          </version>
      </descriptive>
      <EnumValue stringvalue="WEP">
        <webidl>&quot;WEP</webidl>
      </EnumValue>
      <EnumValue stringvalue="PSK">
        <webidl> &quot;PSK</webidl>
      </EnumValue>
      <EnumValue stringvalue="WPA2_PSK">
        <webidl> &quot;WPA2_PSK</webidl>
      </EnumValue>
      <EnumValue stringvalue="EAP">
        <webidl> &quot;EAP</webidl>
      </EnumValue>
      <EnumValue stringvalue="NONE">
        <webidl> &quot;NONE</webidl>
      </EnumValue>
      <EnumValue stringvalue="UNKNOWN">
        <webidl> &quot;UNKNOWN</webidl>
      </EnumValue>
    </Enum>
    <Enum name="NetworkWiFiEncryptionType" id="::Network::NetworkWiFiEncryptionType">
      <webidl>    enum NetworkWiFiEncryptionType {&quot;WEP&quot;, &quot;TKIP&quot;, &quot;AES&quot;, &quot;TKIP_AES_MIXED&quot;, &quot;NONE&quot;, &quot;UNKNOWN&quot;};</webidl>
      <descriptive>
          <brief>
 This enumeration list the current encryption mode configured in the tv by which it is connected to the router.
The values defined by this enumerator are:
          </brief>
         <description>
          <ul>
            <li>
&quot;WEP&quot; - Connected to router encryption type is &quot;WEP&quot;.            </li>
            <li>
&quot;TKIP&quot; - Connected to router encryption type is &quot;TKIP&quot;.            </li>
            <li>
&quot;AES&quot; - Connected to router encryption type is &quot;AES&quot;.            </li>
            <li>
&quot;TKIP_AES_MIXED&quot; - Connected to router encryption type is &quot;TKIP_AES_MIXED&quot;.            </li>
            <li>
&quot;NONE&quot; - Connected to router encryption type is &quot;NONE&quot;.            </li>
            <li>
&quot;UNKNOWN&quot; - Failed to get encryption mode.            </li>
          </ul>
         </description>
          <version>
 1.0
          </version>
      </descriptive>
      <EnumValue stringvalue="WEP">
        <webidl>&quot;WEP</webidl>
      </EnumValue>
      <EnumValue stringvalue="TKIP">
        <webidl> &quot;TKIP</webidl>
      </EnumValue>
      <EnumValue stringvalue="AES">
        <webidl> &quot;AES</webidl>
      </EnumValue>
      <EnumValue stringvalue="TKIP_AES_MIXED">
        <webidl> &quot;TKIP_AES_MIXED</webidl>
      </EnumValue>
      <EnumValue stringvalue="NONE">
        <webidl> &quot;NONE</webidl>
      </EnumValue>
      <EnumValue stringvalue="UNKNOWN">
        <webidl> &quot;UNKNOWN</webidl>
      </EnumValue>
    </Enum>
    <Enum name="NetworkState" id="::Network::NetworkState">
      <webidl>    enum NetworkState {&quot;GATEWAY_CONNECTED&quot;, &quot;GATEWAY_DISCONNECTED&quot;};</webidl>
      <descriptive>
          <brief>
 This enumeration list the current state of the gateway.
The values defined by this enumerator are:
          </brief>
         <description>
          <ul>
            <li>
&quot;GATEWAY_CONNECTED&quot; - On Ethernet / WiFi / Cellular connection establish till router. &quot;1&quot; will be triggered to apps.            </li>
            <li>
&quot;GATEWAY_DISCONNECTED&quot; - On Ethernet / WiFi / Cellular connection break with router. &quot;2&quot; will be triggered to apps.            </li>
          </ul>
         </description>
          <version>
 1.0
          </version>
      </descriptive>
      <EnumValue stringvalue="GATEWAY_CONNECTED">
        <webidl>&quot;GATEWAY_CONNECTED</webidl>
      </EnumValue>
      <EnumValue stringvalue="GATEWAY_DISCONNECTED">
        <webidl> &quot;GATEWAY_DISCONNECTED</webidl>
      </EnumValue>
    </Enum>
    <Interface name="NetworkManagerObject" id="::Network::NetworkManagerObject">
      <webidl>    [NoInterfaceObject] interface NetworkManagerObject {
        readonly attribute <ref>NetworkManager</ref> network;

    };</webidl>
      <descriptive>
          <brief>
 The interface defines what is instantiated by the WebApi object of Tizen-based Samsung TV Product API.
There will be a webapis.network object that allows access to the functionality of the Network API
          </brief>
          <version>
 1.0
          </version>
      </descriptive>
      <ExtendedAttributeList>
        <ExtendedAttribute name="NoInterfaceObject">
          <webidl>NoInterfaceObject</webidl>
        </ExtendedAttribute>
      </ExtendedAttributeList>
      <Attribute readonly="readonly" name="network" id="::Network::NetworkManagerObject::network">
        <webidl>        readonly attribute <ref>NetworkManager</ref> network;</webidl>
        <descriptive>
            <brief>
 Namespace for Network API.
            </brief>
            <version>
 1.0
            </version>
        </descriptive>
        <Type name="NetworkManager"/>
      </Attribute>
    </Interface>
    <Implements name1="WebApi" name2="NetworkManagerObject">
      <webidl>    <ref>WebApi</ref> implements <ref>NetworkManagerObject</ref>;</webidl>
    </Implements>
    <Interface name="NetworkManager" id="::Network::NetworkManager">
      <webidl>    [NoInterfaceObject] interface NetworkManager {
        DOMString getVersion();

        <ref>bool</ref> isConnectedToGateway();

        <ref>NetworkIpMode</ref> getIpMode();

        DOMString getSubnetMask();

        DOMString getGateway();

        DOMString getMac();

        DOMString getDns();

        DOMString getIp();

        <ref>NetworkActiveConnectionType</ref> getActiveConnectionType();

        unsigned long addNetworkStateChangeListener(<ref>NetworkStateChangedCallback</ref> listener);

        void removeNetworkStateChangeListener(unsigned long listenerId);

        DOMString getWiFiSsid();

        short getWiFiSignalStrengthLevel();

        <ref>NetworkWiFiSecurityMode</ref> getWiFiSecurityMode();

        <ref>NetworkWiFiEncryptionType</ref> getWiFiEncryptionType();

    };</webidl>
      <descriptive>
          <brief>
 This interface provides methods to use the Network functionalities.
          </brief>
          <version>
 1.0
          </version>
      </descriptive>
      <ExtendedAttributeList>
        <ExtendedAttribute name="NoInterfaceObject">
          <webidl>NoInterfaceObject</webidl>
        </ExtendedAttribute>
      </ExtendedAttributeList>
      <Operation name="getVersion" id="::Network::NetworkManager::getVersion">
        <webidl>        DOMString getVersion();</webidl>
        <descriptive>
            <brief>
 This method gets the value of the network module version which is used in the tv.
            </brief>
            <version>
 1.0
            </version>
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/network.public
            </privilege>
            <Code> function getVersion() {
     var version = null;
     try {
         version = webapis.network.getVersion();
     } catch (e) {
         addResult(&quot;getVersion exception [&quot; + e.code + &quot;] name: &quot; + e.name + &quot; message: &quot; + e.message);
     }
 
     if (null != version) {
         addResult(&quot;[getVersion] version: &quot; + version);
     }
 }
 </Code>
        </descriptive>
        <Type type="DOMString">
          <descriptive>
              <description><p>
 DOMString
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
      </Operation>
      <Operation name="isConnectedToGateway" id="::Network::NetworkManager::isConnectedToGateway">
        <webidl>        <ref>bool</ref> isConnectedToGateway();</webidl>
        <descriptive>
            <brief>
 This method gets the state of the wired/wireless network whether tv is connected to the router(gateway) or not.
            </brief>
            <version>
 1.0
            </version>
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/network.public
            </privilege>
            <Code> function isConnectedToGateway() {
     var gatewayStatus = null;
     try {
         gatewayStatus = webapis.network.isConnectedToGateway();
     } catch (e) {
         addResult(&quot;isConnectedToGateway exception [&quot; + e.code + &quot;] name: &quot; + e.name + &quot; message: &quot; + e.message);
     }
 
     if (null != name) {
         addResult(&quot;[isConnectedToGateway] gatewayStatus: &quot; + gatewayStatus);
     }
 }
 </Code>
        </descriptive>
        <Type name="bool">
          <descriptive>
              <description><p>
 bool
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
      </Operation>
      <Operation name="getIpMode" id="::Network::NetworkManager::getIpMode">
        <webidl>        <ref>NetworkIpMode</ref> getIpMode();</webidl>
        <descriptive>
            <brief>
 This method gets the ip configuration type of the tv. It can be of type Static/Dynamic/Auto/Fixed.
            </brief>
            <version>
 1.0
            </version>
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/network.public
            </privilege>
            <Code> function getIPMode() {
     var ipMode = null;
     try {
         ipMode = webapis.network.getIpMode();
     } catch (e) {
         addResult(&quot;getIPMode exception [&quot; + e.code + &quot;] name: &quot; + e.name + &quot; message: &quot; + e.message);
     }
 
     if (null != ipMode) {
         addResult(&quot;[getIPMode] ipMode: &quot; + ipMode);
     }
 }
 </Code>
        </descriptive>
        <Type name="NetworkIpMode">
          <descriptive>
              <description><p>
 NetworkIpMode
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
      </Operation>
      <Operation name="getSubnetMask" id="::Network::NetworkManager::getSubnetMask">
        <webidl>        DOMString getSubnetMask();</webidl>
        <descriptive>
            <brief>
 This method gets the configured subnetmask address value of the tv.
            </brief>
            <version>
 1.0
            </version>
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/network.public
            </privilege>
            <Code> function getSubnetMask() {
     var netMask = null;
     try {
         netMask = webapis.network.getSubnetMask();
     } catch (e) {
         addResult(&quot;getSubnetMask exception [&quot; + e.code + &quot;] name: &quot; + e.name + &quot; message: &quot; + e.message);
     }
 
     if (null != netMask) {
         addResult(&quot;[getSubnetMask] netMask: &quot; + netMask);
     }
 }
 </Code>
        </descriptive>
        <Type type="DOMString">
          <descriptive>
              <description><p>
 DOMString
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
      </Operation>
      <Operation name="getGateway" id="::Network::NetworkManager::getGateway">
        <webidl>        DOMString getGateway();</webidl>
        <descriptive>
            <brief>
 This method gets the configured gateway address value of the tv.
            </brief>
            <version>
 1.0
            </version>
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/network.public
            </privilege>
            <Code> function getGateway() {
     var gateway = null;
     try {
         gateway = webapis.network.getGateway();
     } catch (e) {
         addResult(&quot;getGateway exception [&quot; + e.code + &quot;] name: &quot; + e.name + &quot; message: &quot; + e.message);
     }
 
     if (null != gateway) {
         addResult(&quot;[getGateway] gateway: &quot; + gateway);
     }
 }
 </Code>
        </descriptive>
        <Type type="DOMString">
          <descriptive>
              <description><p>
 DOMString
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
      </Operation>
      <Operation name="getMac" id="::Network::NetworkManager::getMac">
        <webidl>        DOMString getMac();</webidl>
        <descriptive>
            <brief>
 This method gets the value of the mac address of a current active type.
            </brief>
            <version>
 1.0
            </version>
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/network.public
            </privilege>
            <Code> function getMAC() {
     var mac = null;
     try {
         mac = webapis.network.getMac();
     } catch (e) {
         addResult(&quot;getMAC exception [&quot; + e.code + &quot;] name: &quot; + e.name + &quot; message: &quot; + e.message);
     }
 
     if (null != mac) {
         addResult(&quot;[getMAC] mac: &quot; + mac);
     }
 }
 </Code>
        </descriptive>
        <Type type="DOMString">
          <descriptive>
              <description><p>
 DOMString
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
      </Operation>
      <Operation name="getDns" id="::Network::NetworkManager::getDns">
        <webidl>        DOMString getDns();</webidl>
        <descriptive>
            <brief>
 This method gets the configured dns address value of the tv.
            </brief>
            <version>
 1.0
            </version>
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/network.public
            </privilege>
            <Code> function getDNS() {
     var dns = null;
     try {
         dns = webapis.network.getDns();
     } catch (e) {
         addResult(&quot;getDNS exception [&quot; + e.code + &quot;] name: &quot; + e.name + &quot; message: &quot; + e.message);
     }
 
     if (null != dns) {
         addResult(&quot;[getDNS] dns: &quot; + dns);
     }
 }
 </Code>
        </descriptive>
        <Type type="DOMString">
          <descriptive>
              <description><p>
 DOMString
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
      </Operation>
      <Operation name="getIp" id="::Network::NetworkManager::getIp">
        <webidl>        DOMString getIp();</webidl>
        <descriptive>
            <brief>
 This method gets the configured ip address value of the tv.
            </brief>
            <version>
 1.0
            </version>
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/network.public
            </privilege>
            <Code> function getIP() {
     var ip = null;
     try {
         ip = webapis.network.getIp();
     } catch (e) {
         addResult(&quot;getIp exception [&quot; + e.code + &quot;] name: &quot; + e.name + &quot; message: &quot; + e.message);
     }
 
     if (null != ip) {
         addResult(&quot;[getIp] ip: &quot; + ip);
     }
 }
 </Code>
        </descriptive>
        <Type type="DOMString">
          <descriptive>
              <description><p>
 DOMString
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
      </Operation>
      <Operation name="getActiveConnectionType" id="::Network::NetworkManager::getActiveConnectionType">
        <webidl>        <ref>NetworkActiveConnectionType</ref> getActiveConnectionType();</webidl>
        <descriptive>
            <brief>
 This method gets the current active connection type of the tv.
            </brief>
            <version>
 1.0
            </version>
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/network.public
            </privilege>
            <Code> function getActiveConnectionType() {
     var connType = null;
     try {
         connType = webapis.network.getActiveConnectionType();
     } catch (e) {
         addResult(&quot;getActiveConnectionType exception [&quot; + e.code + &quot;] name: &quot; + e.name + &quot; message: &quot; + e.message);
     }
 
     if (null != connType) {
         addResult(&quot;[getActiveConnectionType] Active Connection Type: &quot; + connType);
     }
 }
 </Code>
        </descriptive>
        <Type name="NetworkActiveConnectionType">
          <descriptive>
              <description><p>
 NetworkActiveConnectionType
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
      </Operation>
      <Operation name="addNetworkStateChangeListener" id="::Network::NetworkManager::addNetworkStateChangeListener">
        <webidl>        unsigned long addNetworkStateChangeListener(<ref>NetworkStateChangedCallback</ref> listener);</webidl>
        <descriptive>
            <brief>
 This method add the async event listener to the module.
            </brief>
            <version>
 1.0
            </version>
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/network.public
            </privilege>
            <Code> function addNetworkStateChangeListener() {
 
     var onChange = function(data) {
         addResult(&quot;[NetworkStateChangedCallback] data :&quot; + data + &quot; changed&quot;);
     }
     try {
         listenerID = webapis.network.addNetworkStateChangeListener(onChange);
     } catch (e) {
         addResult(&quot;addNetworkStateChangeListener exception [&quot; + e.code + &quot;] name: &quot; + e.name + &quot; message: &quot; + e.message);
     }
     if (listenerID > -1) {
         addResult(&quot;addNetworkStateChangeListener success listener ID [&quot; + listenerID + &quot;] &quot;);
     }
 }
 </Code>
        </descriptive>
        <Type type="unsigned long">
          <descriptive>
              <description><p>
 unsigned long
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="listener">
            <descriptive>
                <description><p>
 callback function should be provided in this. Example: listenerID = network.addNetworkStateChangeListener(onChange);
                </p></description>
            </descriptive>
            <Type name="NetworkStateChangedCallback"/>
          </Argument>
        </ArgumentList>
      </Operation>
      <Operation name="removeNetworkStateChangeListener" id="::Network::NetworkManager::removeNetworkStateChangeListener">
        <webidl>        void removeNetworkStateChangeListener(unsigned long listenerId);</webidl>
        <descriptive>
            <brief>
 This method remove the async event listener to the module.
            </brief>
            <version>
 1.0
            </version>
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/network.public
            </privilege>
            <Code> function removeNetworkStateChangeListener() {
     try {
         addResult(&quot;begin removeNetworkStateChangeListener listenerID: &quot; + listenerID);
         webapis.network.removeNetworkStateChangeListener(listenerID);
     } catch (e) {
         addResult(&quot;removeNetworkStateChangeListener exception [&quot; + e.code + &quot;] name: &quot; + e.name + &quot; message: &quot; + e.message);
         return;
     }
     addResult(&quot;removeNetworkStateChangeListener success&quot;);
 }
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="listenerId">
            <descriptive>
                <description><p>
 Passed value listener will be removed from the async listener.
                </p></description>
            </descriptive>
            <Type type="unsigned long"/>
          </Argument>
        </ArgumentList>
      </Operation>
      <Operation name="getWiFiSsid" id="::Network::NetworkManager::getWiFiSsid">
        <webidl>        DOMString getWiFiSsid();</webidl>
        <descriptive>
            <brief>
 This method gets the connected wifi SSID value, This api only works when wifi connection is active.
            </brief>
            <version>
 1.0
            </version>
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/network.public
            </privilege>
            <Code> function getWiFiSSID() {
     var WiFiSSID = null;
     try {
         WiFiSSID = webapis.network.getWiFiSsid();
     } catch (e) {
         addResult(&quot;getWiFiSSID exception [&quot; + e.code + &quot;] name: &quot; + e.name + &quot; message: &quot; + e.message);
     }
 
     if (null != WiFiSSID) {
         addResult(&quot;[getWiFiSSID] WiFiSSID: &quot; + WiFiSSID);
     }
 }
 </Code>
        </descriptive>
        <Type type="DOMString">
          <descriptive>
              <description><p>
 DOMString
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
      </Operation>
      <Operation name="getWiFiSignalStrengthLevel" id="::Network::NetworkManager::getWiFiSignalStrengthLevel">
        <webidl>        short getWiFiSignalStrengthLevel();</webidl>
        <descriptive>
            <brief>
 This method gets the connected wifi signal strength value, This api only works when wifi connection is active.
            </brief>
            <version>
 1.0
            </version>
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/network.public
            </privilege>
            <Code> function getWiFiSignalStrengthLevel() {
     var WiFiSignalStrengthLevel = null;
     try {
         WiFiSignalStrengthLevel = webapis.network.getWiFiSignalStrengthLevel();
     } catch (e) {
         addResult(&quot;getWiFiSignalStrengthLevel exception [&quot; + e.code + &quot;] name: &quot; + e.name + &quot; message: &quot; + e.message);
     }
 
     if (null != WiFiSignalStrengthLevel) {
         addResult(&quot;[getWiFiSignalStrengthLevel] WiFiSignalStrengthLevel: &quot; + WiFiSignalStrengthLevel);
     }
 }
 </Code>
        </descriptive>
        <Type type="short">
          <descriptive>
              <description><p>
 short
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
      </Operation>
      <Operation name="getWiFiSecurityMode" id="::Network::NetworkManager::getWiFiSecurityMode">
        <webidl>        <ref>NetworkWiFiSecurityMode</ref> getWiFiSecurityMode();</webidl>
        <descriptive>
            <brief>
 This method gets the connected wifi security mode value, This api only works when wifi connection is active.
            </brief>
            <version>
 1.0
            </version>
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/network.public
            </privilege>
            <Code> function getWiFiSecurityMode() {
     var WiFiSecurityMode = null;
     try {
         WiFiSecurityMode = webapis.network.getWiFiSecurityMode();
     } catch (e) {
         addResult(&quot;getWiFiSecurityMode exception [&quot; + e.code + &quot;] name: &quot; + e.name + &quot; message: &quot; + e.message);
     }
 
     if (null != WiFiSecurityMode) {
         addResult(&quot;[getWiFiSecurityMode] WiFiSecurityMode: &quot; + WiFiSecurityMode);
     }
 }
 </Code>
        </descriptive>
        <Type name="NetworkWiFiSecurityMode">
          <descriptive>
              <description><p>
 NetworkWiFiSecurityMode
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
      </Operation>
      <Operation name="getWiFiEncryptionType" id="::Network::NetworkManager::getWiFiEncryptionType">
        <webidl>        <ref>NetworkWiFiEncryptionType</ref> getWiFiEncryptionType();</webidl>
        <descriptive>
            <brief>
 This method gets the connected wifi encryption type value, This api only works when wifi connection is active.
            </brief>
            <version>
 1.0
            </version>
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/network.public
            </privilege>
            <Code> function getWiFiEncryptionType() {
     var WiFiEncryptionType = null;
     try {
         WiFiEncryptionType = webapis.network.getWiFiEncryptionType();
     } catch (e) {
         addResult(&quot;getWiFiEncryptionType exception [&quot; + e.code + &quot;] name: &quot; + e.name + &quot; message: &quot; + e.message);
     }
 
     if (null != WiFiEncryptionType) {
         addResult(&quot;[getWiFiEncryptionType] WiFiEncryptionType: &quot; + WiFiEncryptionType);
     }
 }
 </Code>
        </descriptive>
        <Type name="NetworkWiFiEncryptionType">
          <descriptive>
              <description><p>
 NetworkWiFiEncryptionType
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
      </Operation>
    </Interface>
    <Interface name="NetworkStateChangedCallback" id="::Network::NetworkStateChangedCallback">
      <webidl>    [Callback=FunctionOnly, NoInterfaceObject] interface NetworkStateChangedCallback {
        void onchange(<ref>NetworkState</ref> state);

    };</webidl>
      <descriptive>
          <brief>
 This callback interface defines to get events GATEWAY_CONNECTED : 1  and GATEWAY_DISCONNECTED : 2.
          </brief>
          <version>
 1.0
          </version>
      </descriptive>
      <ExtendedAttributeList>
        <ExtendedAttribute name="Callback" value="FunctionOnly">
          <webidl>Callback</webidl>
        </ExtendedAttribute>
        <ExtendedAttribute name="NoInterfaceObject">
          <webidl> NoInterfaceObject</webidl>
        </ExtendedAttribute>
      </ExtendedAttributeList>
      <Operation name="onchange" id="::Network::NetworkStateChangedCallback::onchange">
        <webidl>        void onchange(<ref>NetworkState</ref> state);</webidl>
        <descriptive>
            <brief>
 This method is called when ever   &quot;GATEWAY_CONNECTED&quot;/  &quot;GATEWAY_DISCONNECTED&quot; event is received.
            </brief>
            <version>
 1.0
            </version>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="state">
            <descriptive>
                <description><p>
 it is a value for which this function should be called.
                </p></description>
            </descriptive>
            <Type name="NetworkState"/>
          </Argument>
        </ArgumentList>
      </Operation>
    </Interface>
  </Module>
  <Module name="ProductInfo" id="::ProductInfo">
    <webidl>module ProductInfo {
    [NoInterfaceObject] interface ProductInfoManagerObject {
        readonly attribute <ref>ProductInfoManager</ref> productinfo;

    };
    <ref>WebApi</ref> implements <ref>ProductInfoManagerObject</ref>;

    [NoInterfaceObject] interface ProductInfoManager {
        attribute <ref>ProductInfoConfigKey</ref> ProductInfoConfigKey;

        attribute <ref>ProductInfoNoGlass3dSupport</ref> ProductInfoNoGlass3dSupport;

        attribute <ref>ProductInfoSiServerType</ref> ProductInfoSiServerType;

        DOMString getVersion();

        DOMString getFirmware();

        DOMString getDuid();

        DOMString getModelCode();

        DOMString getRealModel();

        unsigned short getNoGlass3dSupport();

        DOMString getLocalSet();

        DOMString getSystemConfig(unsigned short key) raises(<ref>WebAPIException</ref>);

        void setSystemConfig(unsigned short key, DOMString value, optional <ref>SuccessCallback</ref>? onsuccess, optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);

        unsigned long addSystemConfigChangeListener(<ref>ProductInfoConfigChangeCallback</ref> listener, unsigned short key) raises(<ref>WebAPIException</ref>);

        void removeSystemConfigChangeListener(unsigned long listenerId) raises(<ref>WebAPIException</ref>);

        DOMString getModel();

        unsigned short getSmartTVServerType();

        DOMString getSmartTVServerVersion();

        DOMString getTunerEpop();

        boolean isSoccerModeEnabled();

        boolean isTtvSupported();

        boolean isUdPanelSupported();

    };

    [Callback=FunctionOnly, NoInterfaceObject] interface ProductInfoConfigChangeCallback {
        void onchange(unsigned short key);

    };

    [NoInterfaceObject] interface ProductInfoConfigKey {
        const unsigned short CONFIG_KEY_DATA_SERVICE = 0;

        const unsigned short CONFIG_KEY_SERVICE_COUNTRY = 1;

        const unsigned short CONFIG_KEY_SHOPLOGO = 2;

        const unsigned short CONFIG_KEY_CHANNELBOUND_APPS_TICKER = 3;

        const unsigned short CONFIG_KEY_SUPPORT_SOCCER_PANEL = 4;

        const unsigned short CONFIG_KEY_SUPPORT_ONTV_PANEL = 5;

        const unsigned short CONFIG_KEY_SUPPORT_NEWSON_PANEL = 6;

        const unsigned short CONFIG_KEY_SUPPORT_MYCONTENTS_PANEL = 7;

        const unsigned short CONFIG_KEY_SUPPORT_GAME_PANEL = 8;

        const unsigned short CONFIG_KEY_SUPPORT_CLIPS_PANEL = 9;

        const unsigned short CONFIG_KEY_SUPPORT_APPS_PANEL = 10;

        const unsigned short CONFIG_KEY_SYSTEM_PNP_COUNTRY = 11;

    };

    [NoInterfaceObject] interface ProductInfoNoGlass3dSupport {
        const unsigned short NO_GLASS_3D_NOT_SUPPORTED = 0;

        const unsigned short NO_GLASS_3D_SUPPORTED = 1;

    };

    [NoInterfaceObject] interface ProductInfoSiServerType {
        const unsigned short SI_TYPE_OPERATIING_SERVER = 0;

        const unsigned short SI_TYPE_DEVELOPMENT_SERVER = 1;

        const unsigned short SI_TYPE_DEVELOPING_SERVER = 2;

    };

};</webidl>
    <descriptive>
        <brief>
 The module defines the functionalities of getting product information that are provides as the Tizen-based Samsung TV Product API.
        </brief>
        <version>
 1.0.0
        </version>
    </descriptive>
    <Interface name="ProductInfoManagerObject" id="::ProductInfo::ProductInfoManagerObject">
      <webidl>    [NoInterfaceObject] interface ProductInfoManagerObject {
        readonly attribute <ref>ProductInfoManager</ref> productinfo;

    };</webidl>
      <descriptive>
          <brief>
 The interface defines what is instantiated by the WebApi object of Tizen-based Samsung TV Product API.
There will be a webapis.productinfo object that allows access to the functionality of the ProductInfo API
          </brief>
          <version>
 1.0.0
          </version>
      </descriptive>
      <ExtendedAttributeList>
        <ExtendedAttribute name="NoInterfaceObject">
          <webidl>NoInterfaceObject</webidl>
        </ExtendedAttribute>
      </ExtendedAttributeList>
      <Attribute readonly="readonly" name="productinfo" id="::ProductInfo::ProductInfoManagerObject::productinfo">
        <webidl>        readonly attribute <ref>ProductInfoManager</ref> productinfo;</webidl>
        <descriptive>
            <brief>
 Namespace for ProductInfo API.
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type name="ProductInfoManager"/>
      </Attribute>
    </Interface>
    <Implements name1="WebApi" name2="ProductInfoManagerObject">
      <webidl>    <ref>WebApi</ref> implements <ref>ProductInfoManagerObject</ref>;</webidl>
    </Implements>
    <Interface name="ProductInfoManager" id="::ProductInfo::ProductInfoManager">
      <webidl>    [NoInterfaceObject] interface ProductInfoManager {
        attribute <ref>ProductInfoConfigKey</ref> ProductInfoConfigKey;

        attribute <ref>ProductInfoNoGlass3dSupport</ref> ProductInfoNoGlass3dSupport;

        attribute <ref>ProductInfoSiServerType</ref> ProductInfoSiServerType;

        DOMString getVersion();

        DOMString getFirmware();

        DOMString getDuid();

        DOMString getModelCode();

        DOMString getRealModel();

        unsigned short getNoGlass3dSupport();

        DOMString getLocalSet();

        DOMString getSystemConfig(unsigned short key) raises(<ref>WebAPIException</ref>);

        void setSystemConfig(unsigned short key, DOMString value, optional <ref>SuccessCallback</ref>? onsuccess, optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);

        unsigned long addSystemConfigChangeListener(<ref>ProductInfoConfigChangeCallback</ref> listener, unsigned short key) raises(<ref>WebAPIException</ref>);

        void removeSystemConfigChangeListener(unsigned long listenerId) raises(<ref>WebAPIException</ref>);

        DOMString getModel();

        unsigned short getSmartTVServerType();

        DOMString getSmartTVServerVersion();

        DOMString getTunerEpop();

        boolean isSoccerModeEnabled();

        boolean isTtvSupported();

        boolean isUdPanelSupported();

    };</webidl>
      <descriptive>
          <brief>
 This interface provides methods to use the ProductInfo functionalities.
          </brief>
          <version>
 1.0.0
          </version>
      </descriptive>
      <ExtendedAttributeList>
        <ExtendedAttribute name="NoInterfaceObject">
          <webidl>NoInterfaceObject</webidl>
        </ExtendedAttribute>
      </ExtendedAttributeList>
      <Attribute name="ProductInfoConfigKey" id="::ProductInfo::ProductInfoManager::ProductInfoConfigKey">
        <webidl>        attribute <ref>ProductInfoConfigKey</ref> ProductInfoConfigKey;</webidl>
        <descriptive>
            <brief>
 This attribute defines the key of each Product Info config.
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type name="ProductInfoConfigKey"/>
      </Attribute>
      <Attribute name="ProductInfoNoGlass3dSupport" id="::ProductInfo::ProductInfoManager::ProductInfoNoGlass3dSupport">
        <webidl>        attribute <ref>ProductInfoNoGlass3dSupport</ref> ProductInfoNoGlass3dSupport;</webidl>
        <descriptive>
            <brief>
 This attribute defines the state of the No Glass 3D support.
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type name="ProductInfoNoGlass3dSupport"/>
      </Attribute>
      <Attribute name="ProductInfoSiServerType" id="::ProductInfo::ProductInfoManager::ProductInfoSiServerType">
        <webidl>        attribute <ref>ProductInfoSiServerType</ref> ProductInfoSiServerType;</webidl>
        <descriptive>
            <brief>
 This attribute defines the infolink server type.
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type name="ProductInfoSiServerType"/>
      </Attribute>
      <Operation name="getVersion" id="::ProductInfo::ProductInfoManager::getVersion">
        <webidl>        DOMString getVersion();</webidl>
        <descriptive>
            <brief>
 This method get the plugin's version number.
            </brief>
            <version>
 1.0
            </version>
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/productinfo
            </privilege>
            <Code> try {
     var value = webapis.productinfo.getVersion();
     console.log(&quot; version value = &quot; + value);
 } catch (error) {
     console.log(&quot; error code = &quot; + error.code);
 }
 </Code>
        </descriptive>
        <Type type="DOMString">
          <descriptive>
              <description><p>
 DOMString
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
      </Operation>
      <Operation name="getFirmware" id="::ProductInfo::ProductInfoManager::getFirmware">
        <webidl>        DOMString getFirmware();</webidl>
        <descriptive>
            <brief>
 This method get Firmware's information
            </brief>
            <version>
 1.0
            </version>
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/productinfo
            </privilege>
            <Code> try {
     var value = webapis.productinfo.getFirmware();
     console.log(&quot; Firmware value = &quot; + value);
 } catch (error) {
     console.log(&quot; error code = &quot; + error.code);
 }
 </Code>
        </descriptive>
        <Type type="DOMString">
          <descriptive>
              <description><p>
 DOMString
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
      </Operation>
      <Operation name="getDuid" id="::ProductInfo::ProductInfoManager::getDuid">
        <webidl>        DOMString getDuid();</webidl>
        <descriptive>
            <brief>
 This method get DUID.
            </brief>
            <version>
 1.0
            </version>
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/productinfo
            </privilege>
            <Code> try {
     var value = webapis.productinfo.getDuid();
     console.log(&quot; Duid value = &quot; + value);
 } catch (error) {
     console.log(&quot; error code = &quot; + error.code);
 }
 </Code>
        </descriptive>
        <Type type="DOMString">
          <descriptive>
              <description><p>
 DOMString
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
      </Operation>
      <Operation name="getModelCode" id="::ProductInfo::ProductInfoManager::getModelCode">
        <webidl>        DOMString getModelCode();</webidl>
        <descriptive>
            <brief>
 This method get Modelcode.
            </brief>
            <version>
 1.0
            </version>
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/productinfo
            </privilege>
            <Code> try {
     var value = webapis.productinfo.getModelCode();
     console.log(&quot; ModelCode value = &quot; + value);
 } catch (error) {
     console.log(&quot; error code = &quot; + error.code);
 }
 </Code>
        </descriptive>
        <Type type="DOMString">
          <descriptive>
              <description><p>
 DOMString
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
      </Operation>
      <Operation name="getRealModel" id="::ProductInfo::ProductInfoManager::getRealModel">
        <webidl>        DOMString getRealModel();</webidl>
        <descriptive>
            <brief>
 This method get real model name (e.g: UN65JS9500)
            </brief>
            <version>
 1.0
            </version>
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/productinfo
            </privilege>
            <Code> try {
     var value = webapis.productinfo.getRealModel();
     console.log(&quot; ModelName value = &quot; + value);
 } catch (error) {
     console.log(&quot; error code = &quot; + error.code);
 }
 </Code>
        </descriptive>
        <Type type="DOMString">
          <descriptive>
              <description><p>
 DOMString
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
      </Operation>
      <Operation name="getNoGlass3dSupport" id="::ProductInfo::ProductInfoManager::getNoGlass3dSupport">
        <webidl>        unsigned short getNoGlass3dSupport();</webidl>
        <descriptive>
            <brief>
 This method check whether support Noglass 3d.
            </brief>
            <version>
 1.0.0
            </version>
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/productinfo
            </privilege>
            <Code> try {
     var value = webapis.productinfo.getNoGlass3dSupport();
     console.log(&quot; 3dSupport value = &quot; + value);
 } catch (error) {
     console.log(&quot; error code = &quot; + error.code);
 }
 </Code>
        </descriptive>
        <Type type="unsigned short">
          <descriptive>
              <description><p>
 unsigned short
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
      </Operation>
      <Operation name="getLocalSet" id="::ProductInfo::ProductInfoManager::getLocalSet">
        <webidl>        DOMString getLocalSet();</webidl>
        <descriptive>
            <brief>
 This method get local set.
            </brief>
            <version>
 1.0
            </version>
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/productinfo
            </privilege>
            <Code> try {
     var value = webapis.productinfo.getLocalSet();
     console.log(&quot; LocalSet value = &quot; + value);
 } catch (error) {
     console.log(&quot; error code = &quot; + error.code);
 }
 </Code>
        </descriptive>
        <Type type="DOMString">
          <descriptive>
              <description><p>
 DOMString
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
      </Operation>
      <Operation name="getSystemConfig" id="::ProductInfo::ProductInfoManager::getSystemConfig">
        <webidl>        DOMString getSystemConfig(unsigned short key) raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method get system config which is specified by input parameter (e.g: service country code).
            </brief>
            <version>
 1.0.0
            </version>
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/productinfo
            </privilege>
            <Code> try {
     var value = webapis.productinfo.getSystemConfig(webapis.productinfo.ProductInfoConfigKey.CONFIG_KEY_DATA_SERVICE);
     console.log(&quot;SystemConfig value = &quot; + value);
 } catch (error) {
     console.log(&quot; error code = &quot; + error.code);
 }
 </Code>
        </descriptive>
        <Type type="DOMString">
          <descriptive>
              <description><p>
 DOMString
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="key">
            <descriptive>
                <description><p>
 Key of each Product Info config
                </p></description>
            </descriptive>
            <Type type="unsigned short"/>
          </Argument>
        </ArgumentList>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type TypeMismatchError, if invalid ProductInfoConfigKey type passed for 'key' parameter
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
      <Operation name="setSystemConfig" id="::ProductInfo::ProductInfoManager::setSystemConfig">
        <webidl>        void setSystemConfig(unsigned short key, DOMString value, optional <ref>SuccessCallback</ref>? onsuccess, optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method set system config which is specified by input parameter.
            </brief>
            <version>
 1.0.0
            </version>
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/productinfo
            </privilege>
            <Code> function onsuccess(data) {
     console.log(&quot;SystemConfig data = &quot; + data);
 }
 
 function onerror(error) {
     console.log(&quot;error code : &quot; + error.code);
 }
 try {
     webapis.productinfo.setSystemConfig(webapis.productinfo.ProductInfoConfigKey.CONFIG_KEY_DATA_SERVICE, value, onsuccess, onerror);
 } catch (error) {
     console.log(&quot; error code = &quot; + error.code);
 }
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="key">
            <descriptive>
                <description><p>
 Key of each Product Info config
                </p></description>
            </descriptive>
            <Type type="unsigned short"/>
          </Argument>
          <Argument name="value">
            <descriptive>
                <description><p>
 set value
                </p></description>
            </descriptive>
            <Type type="DOMString"/>
          </Argument>
          <Argument optional="optional" name="onsuccess">
            <descriptive>
                <description><p>
 [optional][nullable] 
                </p></description>
            </descriptive>
            <Type name="SuccessCallback" nullable="nullable"/>
          </Argument>
          <Argument optional="optional" name="onerror">
            <descriptive>
                <description><p>
 [optional][nullable] 
                </p></description>
            </descriptive>
            <Type name="ErrorCallback" nullable="nullable"/>
          </Argument>
        </ArgumentList>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type NotSupportedError, if CONFIG_KEY_SHOPLOGO' is readonly
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
      <Operation name="addSystemConfigChangeListener" id="::ProductInfo::ProductInfoManager::addSystemConfigChangeListener">
        <webidl>        unsigned long addSystemConfigChangeListener(<ref>ProductInfoConfigChangeCallback</ref> listener, unsigned short key) raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method add callback to listen the change of system config.
            </brief>
            <version>
 1.0.0
            </version>
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/productinfo
            </privilege>
            <Code> try {
     var value = webapis.productinfo.addSystemConfigChangeListener(listener, webapis.productinfo.ProductInfoConfigKey.CONFIG_KEY_DATA_SERVICE);
     console.log(&quot; add Listener value = &quot; + value);
 } catch (error) {
     console.log(&quot; error code = &quot; + error.code);
 }
 </Code>
        </descriptive>
        <Type type="unsigned long">
          <descriptive>
              <description><p>
 unsigned long
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="listener">
            <descriptive>
                <description><p>
 Listener of ProductInfoConfigChangeCallback
                </p></description>
            </descriptive>
            <Type name="ProductInfoConfigChangeCallback"/>
          </Argument>
          <Argument name="key">
            <descriptive>
                <description><p>
 Key of each Product Info config
                </p></description>
            </descriptive>
            <Type type="unsigned short"/>
          </Argument>
        </ArgumentList>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type TypeMismatchError, if invalid ChangeCallback type passed for 'onchange' parameter
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
      <Operation name="removeSystemConfigChangeListener" id="::ProductInfo::ProductInfoManager::removeSystemConfigChangeListener">
        <webidl>        void removeSystemConfigChangeListener(unsigned long listenerId) raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method remove callback which was added to listen the change of system config.
            </brief>
            <version>
 1.0
            </version>
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/productinfo
            </privilege>
            <Code> try {
     webapis.productinfo.removeSystemConfigChangeListener(listenerId);
     console.log(&quot; removedListener value &quot;);
 } catch (error) {
     console.log(&quot; error code = &quot; + error.code);
 }
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="listenerId">
            <descriptive>
                <description><p>
 Id of ProductInfoConfigChangeCallback
                </p></description>
            </descriptive>
            <Type type="unsigned long"/>
          </Argument>
        </ArgumentList>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type TypeMismatchError, if invalid DOMString type passed for 'a' parameter
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
      <Operation name="getModel" id="::ProductInfo::ProductInfoManager::getModel">
        <webidl>        DOMString getModel();</webidl>
        <descriptive>
            <brief>
 This method get Model.
            </brief>
            <version>
 1.0.0
            </version>
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/productinfo
            </privilege>
            <Code> try {
     var value = webapis.productinfo.getModel();
     console.log(&quot; Model value = &quot; + value);
 } catch (error) {
     console.log(&quot; error code = &quot; + error.code);
 }
 </Code>
        </descriptive>
        <Type type="DOMString">
          <descriptive>
              <description><p>
 DOMString
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
      </Operation>
      <Operation name="getSmartTVServerType" id="::ProductInfo::ProductInfoManager::getSmartTVServerType">
        <webidl>        unsigned short getSmartTVServerType();</webidl>
        <descriptive>
            <brief>
 This method get the infolink server type.
            </brief>
            <version>
 1.0.0
            </version>
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/productinfo
            </privilege>
            <Code> try {
     var value = webapis.productinfo.getSmartTVServerType();
     console.log(&quot; smart tv server type = &quot; + value);
 } catch (error) {
     console.log(&quot; error code = &quot; + error.code);
 }
 </Code>
        </descriptive>
        <Type type="unsigned short">
          <descriptive>
              <description><p>
 unsigned short
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
      </Operation>
      <Operation name="getSmartTVServerVersion" id="::ProductInfo::ProductInfoManager::getSmartTVServerVersion">
        <webidl>        DOMString getSmartTVServerVersion();</webidl>
        <descriptive>
            <brief>
 This method get the infolink server version, like T-INFOLINK2014-1002
            </brief>
            <version>
 1.0.0
            </version>
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/productinfo
            </privilege>
            <Code> try {
     var value = webapis.productinfo.getSmartTVServerVersion();
     console.log(&quot; smart tv server version = &quot; + value);
 } catch (error) {
     console.log(&quot; error code = &quot; + error.code);
 }
 </Code>
        </descriptive>
        <Type type="DOMString">
          <descriptive>
              <description><p>
 DOMString
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
      </Operation>
      <Operation name="getTunerEpop" id="::ProductInfo::ProductInfoManager::getTunerEpop">
        <webidl>        DOMString getTunerEpop();</webidl>
        <descriptive>
            <brief>
 This method get the tuner value via factory info.
            </brief>
            <version>
 1.0.0
            </version>
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/productinfo
            </privilege>
            <Code> try {
     var value = webapis.productinfo.getTunerEpop();
     console.log(&quot; Tuner Epop = &quot; + value);
 } catch (error) {
     console.log(&quot; error code = &quot; + error.code);
 }
 </Code>
        </descriptive>
        <Type type="DOMString">
          <descriptive>
              <description><p>
 DOMString
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
      </Operation>
      <Operation name="isSoccerModeEnabled" id="::ProductInfo::ProductInfoManager::isSoccerModeEnabled">
        <webidl>        boolean isSoccerModeEnabled();</webidl>
        <descriptive>
            <brief>
 This method check whether TV is on Soccer Mode.
            </brief>
            <version>
 1.0.0
            </version>
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/productinfo
            </privilege>
            <Code> try {
     var value = webapis.productinfo.isSoccerModeEnabled();
     console.log(&quot; SoccerMode = &quot; + value);
 } catch (error) {
     console.log(&quot; error code = &quot; + error.code);
 }
 </Code>
        </descriptive>
        <Type type="boolean">
          <descriptive>
              <description><p>
 boolean
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
      </Operation>
      <Operation name="isTtvSupported" id="::ProductInfo::ProductInfoManager::isTtvSupported">
        <webidl>        boolean isTtvSupported();</webidl>
        <descriptive>
            <brief>
 This method check whether Ttv is supported.
            </brief>
            <version>
 1.0.0
            </version>
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/productinfo
            </privilege>
            <Code> try {
     var value = webapis.productinfo.isTtvSupported();
     console.log(&quot; support = &quot; + value);
 } catch (error) {
     console.log(&quot; error code = &quot; + error.code);
 }
 </Code>
        </descriptive>
        <Type type="boolean">
          <descriptive>
              <description><p>
 boolean
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
      </Operation>
      <Operation name="isUdPanelSupported" id="::ProductInfo::ProductInfoManager::isUdPanelSupported">
        <webidl>        boolean isUdPanelSupported();</webidl>
        <descriptive>
            <brief>
 This method check whether UdPanel is supported.
            </brief>
            <version>
 1.0.0
            </version>
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/productinfo
            </privilege>
            <Code> try {
     var value = webapis.productinfo.isUdPanelSupported();
     console.log(&quot; support = &quot; + value);
 } catch (error) {
     console.log(&quot; error code = &quot; + error.code);
 }
 </Code>
        </descriptive>
        <Type type="boolean">
          <descriptive>
              <description><p>
 boolean
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
      </Operation>
    </Interface>
    <Interface name="ProductInfoConfigChangeCallback" id="::ProductInfo::ProductInfoConfigChangeCallback">
      <webidl>    [Callback=FunctionOnly, NoInterfaceObject] interface ProductInfoConfigChangeCallback {
        void onchange(unsigned short key);

    };</webidl>
      <descriptive>
          <brief>
 This callback interface defines listener for notification of changes in the Productinfo Config.
          </brief>
          <version>
 1.0.0
          </version>
      </descriptive>
      <ExtendedAttributeList>
        <ExtendedAttribute name="Callback" value="FunctionOnly">
          <webidl>Callback</webidl>
        </ExtendedAttribute>
        <ExtendedAttribute name="NoInterfaceObject">
          <webidl> NoInterfaceObject</webidl>
        </ExtendedAttribute>
      </ExtendedAttributeList>
      <Operation name="onchange" id="::ProductInfo::ProductInfoConfigChangeCallback::onchange">
        <webidl>        void onchange(unsigned short key);</webidl>
        <descriptive>
            <brief>
 This method defines listener for notification of changes in the Productinfo Config.
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="key">
            <descriptive>
                <description><p>
 
                </p></description>
            </descriptive>
            <Type type="unsigned short"/>
          </Argument>
        </ArgumentList>
      </Operation>
    </Interface>
    <Interface name="ProductInfoConfigKey" id="::ProductInfo::ProductInfoConfigKey">
      <webidl>    [NoInterfaceObject] interface ProductInfoConfigKey {
        const unsigned short CONFIG_KEY_DATA_SERVICE = 0;

        const unsigned short CONFIG_KEY_SERVICE_COUNTRY = 1;

        const unsigned short CONFIG_KEY_SHOPLOGO = 2;

        const unsigned short CONFIG_KEY_CHANNELBOUND_APPS_TICKER = 3;

        const unsigned short CONFIG_KEY_SUPPORT_SOCCER_PANEL = 4;

        const unsigned short CONFIG_KEY_SUPPORT_ONTV_PANEL = 5;

        const unsigned short CONFIG_KEY_SUPPORT_NEWSON_PANEL = 6;

        const unsigned short CONFIG_KEY_SUPPORT_MYCONTENTS_PANEL = 7;

        const unsigned short CONFIG_KEY_SUPPORT_GAME_PANEL = 8;

        const unsigned short CONFIG_KEY_SUPPORT_CLIPS_PANEL = 9;

        const unsigned short CONFIG_KEY_SUPPORT_APPS_PANEL = 10;

        const unsigned short CONFIG_KEY_SYSTEM_PNP_COUNTRY = 11;

    };</webidl>
      <descriptive>
          <brief>
 This interface defines the key of each Product Info config.
          </brief>
          <version>
 1.0.0
          </version>
      </descriptive>
      <ExtendedAttributeList>
        <ExtendedAttribute name="NoInterfaceObject">
          <webidl>NoInterfaceObject</webidl>
        </ExtendedAttribute>
      </ExtendedAttributeList>
      <Const name="CONFIG_KEY_DATA_SERVICE" value="0" id="::ProductInfo::ProductInfoConfigKey::CONFIG_KEY_DATA_SERVICE">
        <webidl>        const unsigned short CONFIG_KEY_DATA_SERVICE = 0;</webidl>
        <descriptive>
            <brief>
 Data service configuration
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CONFIG_KEY_SERVICE_COUNTRY" value="1" id="::ProductInfo::ProductInfoConfigKey::CONFIG_KEY_SERVICE_COUNTRY">
        <webidl>        const unsigned short CONFIG_KEY_SERVICE_COUNTRY = 1;</webidl>
        <descriptive>
            <brief>
 Service country , readonly
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CONFIG_KEY_SHOPLOGO" value="2" id="::ProductInfo::ProductInfoConfigKey::CONFIG_KEY_SHOPLOGO">
        <webidl>        const unsigned short CONFIG_KEY_SHOPLOGO = 2;</webidl>
        <descriptive>
            <brief>
 Shoplogo , readonly
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CONFIG_KEY_CHANNELBOUND_APPS_TICKER" value="3" id="::ProductInfo::ProductInfoConfigKey::CONFIG_KEY_CHANNELBOUND_APPS_TICKER">
        <webidl>        const unsigned short CONFIG_KEY_CHANNELBOUND_APPS_TICKER = 3;</webidl>
        <descriptive>
            <brief>
 Channel Bound Apps ticker
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CONFIG_KEY_SUPPORT_SOCCER_PANEL" value="4" id="::ProductInfo::ProductInfoConfigKey::CONFIG_KEY_SUPPORT_SOCCER_PANEL">
        <webidl>        const unsigned short CONFIG_KEY_SUPPORT_SOCCER_PANEL = 4;</webidl>
        <descriptive>
            <brief>
 Support Soccer panel , readonly
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CONFIG_KEY_SUPPORT_ONTV_PANEL" value="5" id="::ProductInfo::ProductInfoConfigKey::CONFIG_KEY_SUPPORT_ONTV_PANEL">
        <webidl>        const unsigned short CONFIG_KEY_SUPPORT_ONTV_PANEL = 5;</webidl>
        <descriptive>
            <brief>
 Support OnTV panel , readonly
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CONFIG_KEY_SUPPORT_NEWSON_PANEL" value="6" id="::ProductInfo::ProductInfoConfigKey::CONFIG_KEY_SUPPORT_NEWSON_PANEL">
        <webidl>        const unsigned short CONFIG_KEY_SUPPORT_NEWSON_PANEL = 6;</webidl>
        <descriptive>
            <brief>
 Support NewsOn panel , readonly
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CONFIG_KEY_SUPPORT_MYCONTENTS_PANEL" value="7" id="::ProductInfo::ProductInfoConfigKey::CONFIG_KEY_SUPPORT_MYCONTENTS_PANEL">
        <webidl>        const unsigned short CONFIG_KEY_SUPPORT_MYCONTENTS_PANEL = 7;</webidl>
        <descriptive>
            <brief>
 Support Mycontents panel , readonly
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CONFIG_KEY_SUPPORT_GAME_PANEL" value="8" id="::ProductInfo::ProductInfoConfigKey::CONFIG_KEY_SUPPORT_GAME_PANEL">
        <webidl>        const unsigned short CONFIG_KEY_SUPPORT_GAME_PANEL = 8;</webidl>
        <descriptive>
            <brief>
 Support Game panel , readonly
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CONFIG_KEY_SUPPORT_CLIPS_PANEL" value="9" id="::ProductInfo::ProductInfoConfigKey::CONFIG_KEY_SUPPORT_CLIPS_PANEL">
        <webidl>        const unsigned short CONFIG_KEY_SUPPORT_CLIPS_PANEL = 9;</webidl>
        <descriptive>
            <brief>
 Support Clips panel , readonly
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CONFIG_KEY_SUPPORT_APPS_PANEL" value="10" id="::ProductInfo::ProductInfoConfigKey::CONFIG_KEY_SUPPORT_APPS_PANEL">
        <webidl>        const unsigned short CONFIG_KEY_SUPPORT_APPS_PANEL = 10;</webidl>
        <descriptive>
            <brief>
 Support Apps panel , readonly
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CONFIG_KEY_SYSTEM_PNP_COUNTRY" value="11" id="::ProductInfo::ProductInfoConfigKey::CONFIG_KEY_SYSTEM_PNP_COUNTRY">
        <webidl>        const unsigned short CONFIG_KEY_SYSTEM_PNP_COUNTRY = 11;</webidl>
        <descriptive>
            <brief>
 Support system pnp country panel , readonly
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
    </Interface>
    <Interface name="ProductInfoNoGlass3dSupport" id="::ProductInfo::ProductInfoNoGlass3dSupport">
      <webidl>    [NoInterfaceObject] interface ProductInfoNoGlass3dSupport {
        const unsigned short NO_GLASS_3D_NOT_SUPPORTED = 0;

        const unsigned short NO_GLASS_3D_SUPPORTED = 1;

    };</webidl>
      <descriptive>
          <brief>
 This attribute defines the state of the No Glass 3D support.
          </brief>
          <version>
 1.0.0
          </version>
      </descriptive>
      <ExtendedAttributeList>
        <ExtendedAttribute name="NoInterfaceObject">
          <webidl>NoInterfaceObject</webidl>
        </ExtendedAttribute>
      </ExtendedAttributeList>
      <Const name="NO_GLASS_3D_NOT_SUPPORTED" value="0" id="::ProductInfo::ProductInfoNoGlass3dSupport::NO_GLASS_3D_NOT_SUPPORTED">
        <webidl>        const unsigned short NO_GLASS_3D_NOT_SUPPORTED = 0;</webidl>
        <descriptive>
            <brief>
 No glass 3d is not supported
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="NO_GLASS_3D_SUPPORTED" value="1" id="::ProductInfo::ProductInfoNoGlass3dSupport::NO_GLASS_3D_SUPPORTED">
        <webidl>        const unsigned short NO_GLASS_3D_SUPPORTED = 1;</webidl>
        <descriptive>
            <brief>
 No glass 3d is supported
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
    </Interface>
    <Interface name="ProductInfoSiServerType" id="::ProductInfo::ProductInfoSiServerType">
      <webidl>    [NoInterfaceObject] interface ProductInfoSiServerType {
        const unsigned short SI_TYPE_OPERATIING_SERVER = 0;

        const unsigned short SI_TYPE_DEVELOPMENT_SERVER = 1;

        const unsigned short SI_TYPE_DEVELOPING_SERVER = 2;

    };</webidl>
      <descriptive>
          <brief>
 This attribute defines the infolink server type.
          </brief>
          <version>
 1.0.0
          </version>
      </descriptive>
      <ExtendedAttributeList>
        <ExtendedAttribute name="NoInterfaceObject">
          <webidl>NoInterfaceObject</webidl>
        </ExtendedAttribute>
      </ExtendedAttributeList>
      <Const name="SI_TYPE_OPERATIING_SERVER" value="0" id="::ProductInfo::ProductInfoSiServerType::SI_TYPE_OPERATIING_SERVER">
        <webidl>        const unsigned short SI_TYPE_OPERATIING_SERVER = 0;</webidl>
        <descriptive>
            <brief>
 Operating
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="SI_TYPE_DEVELOPMENT_SERVER" value="1" id="::ProductInfo::ProductInfoSiServerType::SI_TYPE_DEVELOPMENT_SERVER">
        <webidl>        const unsigned short SI_TYPE_DEVELOPMENT_SERVER = 1;</webidl>
        <descriptive>
            <brief>
 Development
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="SI_TYPE_DEVELOPING_SERVER" value="2" id="::ProductInfo::ProductInfoSiServerType::SI_TYPE_DEVELOPING_SERVER">
        <webidl>        const unsigned short SI_TYPE_DEVELOPING_SERVER = 2;</webidl>
        <descriptive>
            <brief>
 Developing
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
    </Interface>
  </Module>
  <Module name="SmartController" id="::SmartController">
    <webidl>module SmartController {
    [NoInterfaceObject] interface SmartControllerManagerObject {
        readonly attribute <ref>SmartControllerManager</ref> smartcontroller;

    };
    <ref>WebApi</ref> implements <ref>SmartControllerManagerObject</ref>;

    [NoInterfaceObject] interface SmartControllerManager {
        DOMString getVersion() raises(<ref>WebAPIException</ref>);

        boolean isConnected() raises(<ref>WebAPIException</ref>);

        short setSixAxisListener(<ref>SmartControllerSixAxisDataCallback</ref> listener) raises(<ref>WebAPIException</ref>);

        void unsetSixAxisListener(short listenerId) raises(<ref>WebAPIException</ref>);

    };

    [NoInterfaceObject] interface SmartControllerSixAxisData {
        readonly attribute long samplingTime;

        readonly attribute long sensorType;

        readonly attribute long touchMode;

        readonly attribute long xAccel;

        readonly attribute long xGyro;

        readonly attribute long yAccel;

        readonly attribute long yGyro;

        readonly attribute long zAccel;

        readonly attribute long zGyro;

    };

    [Callback=FunctionOnly, NoInterfaceObject] interface SmartControllerSixAxisDataCallback {
        void onchange(<ref>SmartControllerSixAxisData</ref> eventData) raises(<ref>WebAPIException</ref>);

    };

};</webidl>
    <descriptive>
        <brief>
 The module defines the functionalities of getting six-axis data of smart controller that are provides as the Tizen-based Samsung TV Product API.
        </brief>
        <version>
 1.0
        </version>
    </descriptive>
    <Interface name="SmartControllerManagerObject" id="::SmartController::SmartControllerManagerObject">
      <webidl>    [NoInterfaceObject] interface SmartControllerManagerObject {
        readonly attribute <ref>SmartControllerManager</ref> smartcontroller;

    };</webidl>
      <descriptive>
          <brief>
 The interface defines what is instantiated by the WebApi object of Tizen-based Samsung TV Product API.
There will be a webapis.smartremocon object that allows access to the functionality of the SmartController API
          </brief>
          <version>
 1.0
          </version>
      </descriptive>
      <ExtendedAttributeList>
        <ExtendedAttribute name="NoInterfaceObject">
          <webidl>NoInterfaceObject</webidl>
        </ExtendedAttribute>
      </ExtendedAttributeList>
      <Attribute readonly="readonly" name="smartcontroller" id="::SmartController::SmartControllerManagerObject::smartcontroller">
        <webidl>        readonly attribute <ref>SmartControllerManager</ref> smartcontroller;</webidl>
        <descriptive>
            <brief>
 Namespace for SmartController API.
            </brief>
            <version>
 1.0
            </version>
        </descriptive>
        <Type name="SmartControllerManager"/>
      </Attribute>
    </Interface>
    <Implements name1="WebApi" name2="SmartControllerManagerObject">
      <webidl>    <ref>WebApi</ref> implements <ref>SmartControllerManagerObject</ref>;</webidl>
    </Implements>
    <Interface name="SmartControllerManager" id="::SmartController::SmartControllerManager">
      <webidl>    [NoInterfaceObject] interface SmartControllerManager {
        DOMString getVersion() raises(<ref>WebAPIException</ref>);

        boolean isConnected() raises(<ref>WebAPIException</ref>);

        short setSixAxisListener(<ref>SmartControllerSixAxisDataCallback</ref> listener) raises(<ref>WebAPIException</ref>);

        void unsetSixAxisListener(short listenerId) raises(<ref>WebAPIException</ref>);

    };</webidl>
      <descriptive>
          <brief>
 This interface provides methods to use the SmartController functionalities.
          </brief>
          <version>
 1.0
          </version>
      </descriptive>
      <ExtendedAttributeList>
        <ExtendedAttribute name="NoInterfaceObject">
          <webidl>NoInterfaceObject</webidl>
        </ExtendedAttribute>
      </ExtendedAttributeList>
      <Operation name="getVersion" id="::SmartController::SmartControllerManager::getVersion">
        <webidl>        DOMString getVersion() raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 Get the version of SmartController plugin.
            </brief>
            <version>
 1.0
            </version>
            <Code> var version = null;
 try {
     version = webapis.smartcontroller.getVersion();
 } catch (e) {
     console.error(&quot;getVersion exception [&quot; + e.code + &quot;] name: &quot; + e.name + &quot; message: &quot; + e.message);
 }
 
 if (null != version) {
     console.log(&quot;[getVersion] version: &quot; + version);
 }
 </Code>
        </descriptive>
        <Type type="DOMString">
          <descriptive>
              <description><p>
 DOMString
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type UnknownError in any other error case.
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
      <Operation name="isConnected" id="::SmartController::SmartControllerManager::isConnected">
        <webidl>        boolean isConnected() raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 Get connetion state of Smart Controller.
            </brief>
            <version>
 1.0
            </version>
            <Code> var bConnected = null;
 try {
     bConnected = webapis.smartcontroller.isConnected();
 } catch (e) {
     console.error(&quot;isConnected exception [&quot; + e.code + &quot;] name: &quot; + e.name + &quot; message: &quot; + e.message);
 }
 
 if (null != bConnected) {
     console.log(&quot;[isConnected] result: &quot; + res);
 }
 </Code>
        </descriptive>
        <Type type="boolean">
          <descriptive>
              <description><p>
 boolean
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type UnknownError in any other error case.
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
      <Operation name="setSixAxisListener" id="::SmartController::SmartControllerManager::setSixAxisListener">
        <webidl>        short setSixAxisListener(<ref>SmartControllerSixAxisDataCallback</ref> listener) raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 Register the listener of six-axis data changed for smart controller.
            </brief>
            <version>
 1.0
            </version>
            <Code> var onChange = function(data) {
     console.log(&quot;samplingTime:&quot; + data.samplingTime + &quot; sensorType:&quot; + data.sensorType + &quot;touchMode:&quot; + data.touchMode + &quot; xAccel:&quot; + data.xAccel + &quot; xGyro:&quot; + data.xGyro + &quot; yAccel:&quot; + data.yAccel + &quot; yGyro:&quot; + data.yGyro + &quot; zAccel:&quot; + data.zAccel + &quot; zGyro:&quot; + data.zGyro);
 }
 var listenerID = -1;
 try {
     var listenerID = webapis.smartcontroller.setSixAxisListener(onChange);
     if (listenerID > -1) {
         console.log(&quot;setSixAxisListener success listener ID [&quot; + listenerID + &quot;] &quot;);
     }
 } catch (e) {
     console.error(&quot;setSixAxisListener exception [&quot; + e.code + &quot;] name: &quot; + e.name + &quot; message: &quot; + e.message);
 }
 </Code>
        </descriptive>
        <Type type="short">
          <descriptive>
              <description><p>
 short
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="listener">
            <descriptive>
                <description><p>
 Callback to be invoked when there is change in six axis of smart remocon .
                </p></description>
            </descriptive>
            <Type name="SmartControllerSixAxisDataCallback"/>
          </Argument>
        </ArgumentList>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type UnknownError in any other error case.
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
      <Operation name="unsetSixAxisListener" id="::SmartController::SmartControllerManager::unsetSixAxisListener">
        <webidl>        void unsetSixAxisListener(short listenerId) raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 Un-Register the listener of six-axis data changed for smart controller, if registered.
            </brief>
            <version>
 1.0
            </version>
            <Code> try {
     console.log(&quot;begin unsetSixAxisListener listenerID: &quot; + listenerID);
     if (listenerID == -1) {
         console.log(&quot;First register before you deregister&quot;);
     } else {
         webapis.smartcontroller.unsetSixAxisListener(listenerID);
         listenerID = -1;
     }
 } catch (e) {
     console.error(&quot;unsetSixAxisListener exception [&quot; + e.code + &quot;] name: &quot; + e.name + &quot; message: &quot; + e.message);
 }
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="listenerId">
            <descriptive>
                <description><p>
 Listener id to be removed.
                </p></description>
            </descriptive>
            <Type type="short"/>
          </Argument>
        </ArgumentList>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type UnknownError in any other error case.
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
    </Interface>
    <Interface name="SmartControllerSixAxisData" id="::SmartController::SmartControllerSixAxisData">
      <webidl>    [NoInterfaceObject] interface SmartControllerSixAxisData {
        readonly attribute long samplingTime;

        readonly attribute long sensorType;

        readonly attribute long touchMode;

        readonly attribute long xAccel;

        readonly attribute long xGyro;

        readonly attribute long yAccel;

        readonly attribute long yGyro;

        readonly attribute long zAccel;

        readonly attribute long zGyro;

    };</webidl>
      <descriptive>
          <brief>
 This interface defines the data of smart contorller.
          </brief>
          <version>
 1.0
          </version>
      </descriptive>
      <ExtendedAttributeList>
        <ExtendedAttribute name="NoInterfaceObject">
          <webidl>NoInterfaceObject</webidl>
        </ExtendedAttribute>
      </ExtendedAttributeList>
      <Attribute readonly="readonly" name="samplingTime" id="::SmartController::SmartControllerSixAxisData::samplingTime">
        <webidl>        readonly attribute long samplingTime;</webidl>
        <descriptive>
            <brief>
 This attribute defines the sampling time.
            </brief>
            <version>
 1.0
            </version>
        </descriptive>
        <Type type="long"/>
      </Attribute>
      <Attribute readonly="readonly" name="sensorType" id="::SmartController::SmartControllerSixAxisData::sensorType">
        <webidl>        readonly attribute long sensorType;</webidl>
        <descriptive>
            <brief>
 This attribute defines the sensor type.
            </brief>
            <version>
 1.0
            </version>
        </descriptive>
        <Type type="long"/>
      </Attribute>
      <Attribute readonly="readonly" name="touchMode" id="::SmartController::SmartControllerSixAxisData::touchMode">
        <webidl>        readonly attribute long touchMode;</webidl>
        <descriptive>
            <brief>
 This attribute defines the touch mode.
            </brief>
            <version>
 1.0
            </version>
        </descriptive>
        <Type type="long"/>
      </Attribute>
      <Attribute readonly="readonly" name="xAccel" id="::SmartController::SmartControllerSixAxisData::xAccel">
        <webidl>        readonly attribute long xAccel;</webidl>
        <descriptive>
            <brief>
 This attribute defines x-axis accelartion value.
            </brief>
            <version>
 1.0
            </version>
        </descriptive>
        <Type type="long"/>
      </Attribute>
      <Attribute readonly="readonly" name="xGyro" id="::SmartController::SmartControllerSixAxisData::xGyro">
        <webidl>        readonly attribute long xGyro;</webidl>
        <descriptive>
            <brief>
 This attribute defines x-axis gyro value.
            </brief>
            <version>
 1.0
            </version>
        </descriptive>
        <Type type="long"/>
      </Attribute>
      <Attribute readonly="readonly" name="yAccel" id="::SmartController::SmartControllerSixAxisData::yAccel">
        <webidl>        readonly attribute long yAccel;</webidl>
        <descriptive>
            <brief>
 This attribute defines y-axis accelartion value.
            </brief>
            <version>
 1.0
            </version>
        </descriptive>
        <Type type="long"/>
      </Attribute>
      <Attribute readonly="readonly" name="yGyro" id="::SmartController::SmartControllerSixAxisData::yGyro">
        <webidl>        readonly attribute long yGyro;</webidl>
        <descriptive>
            <brief>
 This attribute defines y-axis gyro value.
            </brief>
            <version>
 1.0
            </version>
        </descriptive>
        <Type type="long"/>
      </Attribute>
      <Attribute readonly="readonly" name="zAccel" id="::SmartController::SmartControllerSixAxisData::zAccel">
        <webidl>        readonly attribute long zAccel;</webidl>
        <descriptive>
            <brief>
 This attribute defines z-axis accelartion value.
            </brief>
            <version>
 1.0
            </version>
        </descriptive>
        <Type type="long"/>
      </Attribute>
      <Attribute readonly="readonly" name="zGyro" id="::SmartController::SmartControllerSixAxisData::zGyro">
        <webidl>        readonly attribute long zGyro;</webidl>
        <descriptive>
            <brief>
 This attribute defines z-axis gyro value.
            </brief>
            <version>
 1.0
            </version>
        </descriptive>
        <Type type="long"/>
      </Attribute>
    </Interface>
    <Interface name="SmartControllerSixAxisDataCallback" id="::SmartController::SmartControllerSixAxisDataCallback">
      <webidl>    [Callback=FunctionOnly, NoInterfaceObject] interface SmartControllerSixAxisDataCallback {
        void onchange(<ref>SmartControllerSixAxisData</ref> eventData) raises(<ref>WebAPIException</ref>);

    };</webidl>
      <descriptive>
          <brief>
 This callback interface defines getting six-axis data of smart remocon.
          </brief>
          <version>
 1.0
          </version>
      </descriptive>
      <ExtendedAttributeList>
        <ExtendedAttribute name="Callback" value="FunctionOnly">
          <webidl>Callback</webidl>
        </ExtendedAttribute>
        <ExtendedAttribute name="NoInterfaceObject">
          <webidl> NoInterfaceObject</webidl>
        </ExtendedAttribute>
      </ExtendedAttributeList>
      <Operation name="onchange" id="::SmartController::SmartControllerSixAxisDataCallback::onchange">
        <webidl>        void onchange(<ref>SmartControllerSixAxisData</ref> eventData) raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method is the callback function will be provided by the application.
            </brief>
            <version>
 1.0
            </version>
            <Code> var onChange = function(eventData) {
     console.log(&quot;samplingTime: &quot; + eventData.samplingTime);
     console.log(&quot;sensorType: &quot; + eventData.sensorType);
     console.log(&quot;touchMode: &quot; + eventData.touchMode);
     console.log(&quot;xAccel: &quot; + eventData.xAccel);
     console.log(&quot;xGyro: &quot; + eventData.xGyro);
     console.log(&quot;yAccela: &quot; + eventData.yAccel);
     console.log(&quot;yGyro: &quot; + eventData.yGyro);
     console.log(&quot;zAccel: &quot; + eventData.zAccel);
     console.log(&quot;zGyro: &quot; + eventData.zGyro);
 };
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="eventData">
            <descriptive>
                <description><p>
 contains the six axis data
                </p></description>
            </descriptive>
            <Type name="SmartControllerSixAxisData"/>
          </Argument>
        </ArgumentList>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type UnknownError in any other error case.
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
    </Interface>
  </Module>
  <Module name="TvInfo" id="::TvInfo">
    <webidl>module TvInfo {
    [NoInterfaceObject] interface TvInfoManagerObject {
        readonly attribute <ref>TvInfoManager</ref> tvinfo;

    };
    <ref>WebApi</ref> implements <ref>TvInfoManagerObject</ref>;

    [NoInterfaceObject] interface TvInfoManager {
        attribute <ref>TvInfoMenuKey</ref> TvInfoMenuKey;

        attribute <ref>TvInfoMenuValue</ref> TvInfoMenuValue;

        DOMString getVersion();

        unsigned short getMenuValue(unsigned short key) raises(<ref>WebAPIException</ref>);

        unsigned long addCaptionChangeListener(<ref>TvInfoCaptionChangeCallback</ref> listener, unsigned short key) raises(<ref>WebAPIException</ref>);

        void removeCaptionChangeListener(unsigned long listenerId) raises(<ref>WebAPIException</ref>);

        boolean isTvsPicSizeResized();

    };

    [Callback=FunctionOnly, NoInterfaceObject] interface TvInfoCaptionChangeCallback {
        void onchange(unsigned short key);

    };

    [NoInterfaceObject] interface TvInfoMenuKey {
        const unsigned short CAPTION_ONOFF_KEY = 0;

        const unsigned short CAPTION_MODE_KEY = 1;

        const unsigned short CAPTION_FONT_SIZE_KEY = 2;

        const unsigned short CAPTION_FONT_STYLE_KEY = 3;

        const unsigned short CAPTION_FG_COLOR_KEY = 4;

        const unsigned short CAPTION_FG_OPACITY_KEY = 5;

        const unsigned short CAPTION_BG_COLOR_KEY = 6;

        const unsigned short CAPTION_BG_OPACITY_KEY = 7;

        const unsigned short CAPTION_EDGE_TYPE_KEY = 8;

        const unsigned short CAPTION_EDGE_COLOR_KEY = 9;

        const unsigned short CAPTION_WINDOW_COLOR_KEY = 10;

        const unsigned short CAPTION_WINDOW_OPACITY_KEY = 11;

    };

    [NoInterfaceObject] interface TvInfoMenuValue {
        const unsigned short CAPTION_OFF = 0;

        const unsigned short CAPTION_ON = 1;

        const unsigned short CAPTION_MODE_DEFAULT = 0;

        const unsigned short CAPTION_MODE_SERVICE1 = 1;

        const unsigned short CAPTION_MODE_SERVICE2 = 2;

        const unsigned short CAPTION_MODE_SERVICE3 = 3;

        const unsigned short CAPTION_MODE_SERVICE4 = 4;

        const unsigned short CAPTION_MODE_SERVICE5 = 5;

        const unsigned short CAPTION_MODE_SERVICE6 = 6;

        const unsigned short CAPTION_MODE_CC1 = 7;

        const unsigned short CAPTION_MODE_CC2 = 8;

        const unsigned short CAPTION_MODE_CC3 = 9;

        const unsigned short CAPTION_MODE_CC4 = 10;

        const unsigned short CAPTION_MODE_TEXT1 = 11;

        const unsigned short CAPTION_MODE_TEXT2 = 12;

        const unsigned short CAPTION_MODE_TEXT3 = 13;

        const unsigned short CAPTION_MODE_TEXT4 = 14;

        const unsigned short CAPTION_SIZE_DEFAULT = 0;

        const unsigned short CAPTION_SIZE_SMALL = 1;

        const unsigned short CAPTION_SIZE_STANDARD = 2;

        const unsigned short CAPTION_SIZE_LARGE = 3;

        const unsigned short CAPTION_SIZE_EXTRA_LARGE = 4;

        const unsigned short CAPTION_FONT_DEFAULT = 0;

        const unsigned short CAPTION_FONT_STYLE0 = 1;

        const unsigned short CAPTION_FONT_STYLE1 = 2;

        const unsigned short CAPTION_FONT_STYLE2 = 3;

        const unsigned short CAPTION_FONT_STYLE3 = 4;

        const unsigned short CAPTION_FONT_STYLE4 = 5;

        const unsigned short CAPTION_FONT_STYLE5 = 6;

        const unsigned short CAPTION_FONT_STYLE6 = 7;

        const unsigned short CAPTION_FONT_STYLE7 = 8;

        const unsigned short CAPTION_COLOR_DEFAULT = 0;

        const unsigned short CAPTION_COLOR_WHITE = 1;

        const unsigned short CAPTION_COLOR_BLACK = 2;

        const unsigned short CAPTION_COLOR_RED = 3;

        const unsigned short CAPTION_COLOR_GREEN = 4;

        const unsigned short CAPTION_COLOR_BLUE = 5;

        const unsigned short CAPTION_COLOR_YELLOW = 6;

        const unsigned short CAPTION_COLOR_MAGENTA = 7;

        const unsigned short CAPTION_COLOR_CYAN = 8;

        const unsigned short CAPTION_OPACITY_SOLID = 0;

        const unsigned short CAPTION_OPACITY_FLASHING = 1;

        const unsigned short CAPTION_OPACITY_TRANSLUCENT = 2;

        const unsigned short CAPTION_OPACITY_TRANSPARENT = 3;

        const unsigned short CAPTION_OPACITY_DEFAULT = 4;

        const unsigned short CAPTION_EDGE_NONE = 0;

        const unsigned short CAPTION_EDGE_RAISED = 1;

        const unsigned short CAPTION_EDGE_DEPRESSED = 2;

        const unsigned short CAPTION_EDGE_UNIFORM = 3;

        const unsigned short CAPTION_EDGE_DROP_SHADOWED = 4;

    };

};</webidl>
    <descriptive>
        <brief>
 The module defines the functionalities of TV settings value that are provides as the Tizen-based Samsung TV Product API.
        </brief>
        <version>
 1.0.0
        </version>
    </descriptive>
    <Interface name="TvInfoManagerObject" id="::TvInfo::TvInfoManagerObject">
      <webidl>    [NoInterfaceObject] interface TvInfoManagerObject {
        readonly attribute <ref>TvInfoManager</ref> tvinfo;

    };</webidl>
      <descriptive>
          <brief>
 The interface defines what is instantiated by the WebApi object of Tizen-based Samsung TV Product API.
There will be a webapis.tvinfo object that allows access to the functionality of the TvInfo API
          </brief>
          <version>
 1.0.0
          </version>
      </descriptive>
      <ExtendedAttributeList>
        <ExtendedAttribute name="NoInterfaceObject">
          <webidl>NoInterfaceObject</webidl>
        </ExtendedAttribute>
      </ExtendedAttributeList>
      <Attribute readonly="readonly" name="tvinfo" id="::TvInfo::TvInfoManagerObject::tvinfo">
        <webidl>        readonly attribute <ref>TvInfoManager</ref> tvinfo;</webidl>
        <descriptive>
            <brief>
 Namespace for TvInfo API.
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type name="TvInfoManager"/>
      </Attribute>
    </Interface>
    <Implements name1="WebApi" name2="TvInfoManagerObject">
      <webidl>    <ref>WebApi</ref> implements <ref>TvInfoManagerObject</ref>;</webidl>
    </Implements>
    <Interface name="TvInfoManager" id="::TvInfo::TvInfoManager">
      <webidl>    [NoInterfaceObject] interface TvInfoManager {
        attribute <ref>TvInfoMenuKey</ref> TvInfoMenuKey;

        attribute <ref>TvInfoMenuValue</ref> TvInfoMenuValue;

        DOMString getVersion();

        unsigned short getMenuValue(unsigned short key) raises(<ref>WebAPIException</ref>);

        unsigned long addCaptionChangeListener(<ref>TvInfoCaptionChangeCallback</ref> listener, unsigned short key) raises(<ref>WebAPIException</ref>);

        void removeCaptionChangeListener(unsigned long listenerId) raises(<ref>WebAPIException</ref>);

        boolean isTvsPicSizeResized();

    };</webidl>
      <descriptive>
          <brief>
 This interface provides methods to use the TvInfo functionalities.
          </brief>
          <version>
 1.0.0
          </version>
      </descriptive>
      <ExtendedAttributeList>
        <ExtendedAttribute name="NoInterfaceObject">
          <webidl>NoInterfaceObject</webidl>
        </ExtendedAttribute>
      </ExtendedAttributeList>
      <Attribute name="TvInfoMenuKey" id="::TvInfo::TvInfoManager::TvInfoMenuKey">
        <webidl>        attribute <ref>TvInfoMenuKey</ref> TvInfoMenuKey;</webidl>
        <descriptive>
            <brief>
 This attribute defines the key of each Caption Settings.
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type name="TvInfoMenuKey"/>
      </Attribute>
      <Attribute name="TvInfoMenuValue" id="::TvInfo::TvInfoManager::TvInfoMenuValue">
        <webidl>        attribute <ref>TvInfoMenuValue</ref> TvInfoMenuValue;</webidl>
        <descriptive>
            <brief>
 This attribute defines that indicates the value of menu settings.
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type name="TvInfoMenuValue"/>
      </Attribute>
      <Operation name="getVersion" id="::TvInfo::TvInfoManager::getVersion">
        <webidl>        DOMString getVersion();</webidl>
        <descriptive>
            <brief>
 This method get the plugin's version number.
            </brief>
            <version>
 1.0
            </version>
            <Code> try {
     var value = webapis.tvinfo.getVersion();
     console.log(&quot; version value = &quot; + value);
 } catch (error) {
     console.log(&quot; error code = &quot; + error.code);
 }
 </Code>
        </descriptive>
        <Type type="DOMString">
          <descriptive>
              <description><p>
 DOMString
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
      </Operation>
      <Operation name="getMenuValue" id="::TvInfo::TvInfoManager::getMenuValue">
        <webidl>        unsigned short getMenuValue(unsigned short key) raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method get the value of the TV caption menu which was selected by argument.
            </brief>
            <version>
 1.0.0
            </version>
            <Code> try {
     var value = webapis.tvinfo.getMenuValue(webapis.tvinfo.TvInfoMenuKey.CAPTION_ONOFF_KEY);
     console.log(&quot; menu value = &quot; + value);
 } catch (error) {
     console.log(&quot; error code = &quot; + error.code);
 }
 </Code>
        </descriptive>
        <Type type="unsigned short">
          <descriptive>
              <description><p>
 unsigned short
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="key">
            <descriptive>
                <description><p>
 Value of key about caption menu
                </p></description>
            </descriptive>
            <Type type="unsigned short"/>
          </Argument>
        </ArgumentList>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type TypeMismatchError, if invalid TvInfoMenuKey type passed for 'key' parameter
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
      <Operation name="addCaptionChangeListener" id="::TvInfo::TvInfoManager::addCaptionChangeListener">
        <webidl>        unsigned long addCaptionChangeListener(<ref>TvInfoCaptionChangeCallback</ref> listener, unsigned short key) raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method add the listener callback for the caption menu change.
            </brief>
            <version>
 1.0.0
            </version>
            <Code> var listener = function(key) {
     console.log(&quot; TVInfoCaptionChange &quot;);
 }
 
 try {
     var value = webapis.tvinfo.addCaptionChangeListener(listener, webapis.tvinfo.TvInfoMenuKey.CAPTION_ONOFF_KEY);
     console.log(&quot;listener id = &quot; + value);
 } catch (error) {
     console.log(&quot; error code = &quot; + error.code);
 }
 </Code>
        </descriptive>
        <Type type="unsigned long">
          <descriptive>
              <description><p>
 unsigned long
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="listener">
            <descriptive>
                <description><p>
 Listener of TvInfoCaptionChangeCallback
                </p></description>
            </descriptive>
            <Type name="TvInfoCaptionChangeCallback"/>
          </Argument>
          <Argument name="key">
            <descriptive>
                <description><p>
 Value of key about caption menu
                </p></description>
            </descriptive>
            <Type type="unsigned short"/>
          </Argument>
        </ArgumentList>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type TypeMismatchError, if iInvalid ChangeCallback type passed for 'onchange' parameter
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
      <Operation name="removeCaptionChangeListener" id="::TvInfo::TvInfoManager::removeCaptionChangeListener">
        <webidl>        void removeCaptionChangeListener(unsigned long listenerId) raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method remove the listener which was added by addCaptionChangeListener.
            </brief>
            <version>
 1.0
            </version>
            <Code> try {
     webapis.tvinfo.removeCaptionChangeListener(listenerId); // Defines listenerId before by addCaptionChangeListener
     console.log(&quot;listener id = &quot; + value);
 } catch (error) {
     console.log(&quot; error code = &quot; + error.code);
 }
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="listenerId">
            <descriptive>
                <description><p>
 Id of TvInfoCaptionChangeCallback
                </p></description>
            </descriptive>
            <Type type="unsigned long"/>
          </Argument>
        </ArgumentList>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type NotFoundError, if can not find Listener by this listenerId
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
      <Operation name="isTvsPicSizeResized" id="::TvInfo::TvInfoManager::isTvsPicSizeResized">
        <webidl>        boolean isTvsPicSizeResized();</webidl>
        <descriptive>
            <brief>
 This method check whether picture size resized.
            </brief>
            <version>
 1.0.0
            </version>
            <Code> try {
     var flag = webapis.tvinfo.isTvsPicSizeResized();
     console.log(&quot;flag = &quot; + flag);
 } catch (error) {
     console.log(&quot; error code = &quot; + error.code);
 }
 </Code>
        </descriptive>
        <Type type="boolean">
          <descriptive>
              <description><p>
 boolean
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
      </Operation>
    </Interface>
    <Interface name="TvInfoCaptionChangeCallback" id="::TvInfo::TvInfoCaptionChangeCallback">
      <webidl>    [Callback=FunctionOnly, NoInterfaceObject] interface TvInfoCaptionChangeCallback {
        void onchange(unsigned short key);

    };</webidl>
      <descriptive>
          <brief>
 This callback interface defines listener for notification of changes in the Caption Settings.
          </brief>
          <version>
 1.0.0
          </version>
      </descriptive>
      <ExtendedAttributeList>
        <ExtendedAttribute name="Callback" value="FunctionOnly">
          <webidl>Callback</webidl>
        </ExtendedAttribute>
        <ExtendedAttribute name="NoInterfaceObject">
          <webidl> NoInterfaceObject</webidl>
        </ExtendedAttribute>
      </ExtendedAttributeList>
      <Operation name="onchange" id="::TvInfo::TvInfoCaptionChangeCallback::onchange">
        <webidl>        void onchange(unsigned short key);</webidl>
        <descriptive>
            <brief>
 This method defines listener for notification of changes in the Caption Settings.
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="key">
            <descriptive>
                <description><p>
 
                </p></description>
            </descriptive>
            <Type type="unsigned short"/>
          </Argument>
        </ArgumentList>
      </Operation>
    </Interface>
    <Interface name="TvInfoMenuKey" id="::TvInfo::TvInfoMenuKey">
      <webidl>    [NoInterfaceObject] interface TvInfoMenuKey {
        const unsigned short CAPTION_ONOFF_KEY = 0;

        const unsigned short CAPTION_MODE_KEY = 1;

        const unsigned short CAPTION_FONT_SIZE_KEY = 2;

        const unsigned short CAPTION_FONT_STYLE_KEY = 3;

        const unsigned short CAPTION_FG_COLOR_KEY = 4;

        const unsigned short CAPTION_FG_OPACITY_KEY = 5;

        const unsigned short CAPTION_BG_COLOR_KEY = 6;

        const unsigned short CAPTION_BG_OPACITY_KEY = 7;

        const unsigned short CAPTION_EDGE_TYPE_KEY = 8;

        const unsigned short CAPTION_EDGE_COLOR_KEY = 9;

        const unsigned short CAPTION_WINDOW_COLOR_KEY = 10;

        const unsigned short CAPTION_WINDOW_OPACITY_KEY = 11;

    };</webidl>
      <descriptive>
          <brief>
 This interface definesthe key of each Caption Settings.
          </brief>
          <version>
 1.0.0
          </version>
      </descriptive>
      <ExtendedAttributeList>
        <ExtendedAttribute name="NoInterfaceObject">
          <webidl>NoInterfaceObject</webidl>
        </ExtendedAttribute>
      </ExtendedAttributeList>
      <Const name="CAPTION_ONOFF_KEY" value="0" id="::TvInfo::TvInfoMenuKey::CAPTION_ONOFF_KEY">
        <webidl>        const unsigned short CAPTION_ONOFF_KEY = 0;</webidl>
        <descriptive>
            <brief>
 Caption On/Off
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CAPTION_MODE_KEY" value="1" id="::TvInfo::TvInfoMenuKey::CAPTION_MODE_KEY">
        <webidl>        const unsigned short CAPTION_MODE_KEY = 1;</webidl>
        <descriptive>
            <brief>
 Caption mode defult ~ service 6
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CAPTION_FONT_SIZE_KEY" value="2" id="::TvInfo::TvInfoMenuKey::CAPTION_FONT_SIZE_KEY">
        <webidl>        const unsigned short CAPTION_FONT_SIZE_KEY = 2;</webidl>
        <descriptive>
            <brief>
 Caption font size
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CAPTION_FONT_STYLE_KEY" value="3" id="::TvInfo::TvInfoMenuKey::CAPTION_FONT_STYLE_KEY">
        <webidl>        const unsigned short CAPTION_FONT_STYLE_KEY = 3;</webidl>
        <descriptive>
            <brief>
 Caption font style defult ~ style 6
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CAPTION_FG_COLOR_KEY" value="4" id="::TvInfo::TvInfoMenuKey::CAPTION_FG_COLOR_KEY">
        <webidl>        const unsigned short CAPTION_FG_COLOR_KEY = 4;</webidl>
        <descriptive>
            <brief>
 FG color of caption text
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CAPTION_FG_OPACITY_KEY" value="5" id="::TvInfo::TvInfoMenuKey::CAPTION_FG_OPACITY_KEY">
        <webidl>        const unsigned short CAPTION_FG_OPACITY_KEY = 5;</webidl>
        <descriptive>
            <brief>
 FG opcacity of caption text
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CAPTION_BG_COLOR_KEY" value="6" id="::TvInfo::TvInfoMenuKey::CAPTION_BG_COLOR_KEY">
        <webidl>        const unsigned short CAPTION_BG_COLOR_KEY = 6;</webidl>
        <descriptive>
            <brief>
 Background color of caption text
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CAPTION_BG_OPACITY_KEY" value="7" id="::TvInfo::TvInfoMenuKey::CAPTION_BG_OPACITY_KEY">
        <webidl>        const unsigned short CAPTION_BG_OPACITY_KEY = 7;</webidl>
        <descriptive>
            <brief>
 Backgrount opacity of caption text
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CAPTION_EDGE_TYPE_KEY" value="8" id="::TvInfo::TvInfoMenuKey::CAPTION_EDGE_TYPE_KEY">
        <webidl>        const unsigned short CAPTION_EDGE_TYPE_KEY = 8;</webidl>
        <descriptive>
            <brief>
 Edge type of caption text
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CAPTION_EDGE_COLOR_KEY" value="9" id="::TvInfo::TvInfoMenuKey::CAPTION_EDGE_COLOR_KEY">
        <webidl>        const unsigned short CAPTION_EDGE_COLOR_KEY = 9;</webidl>
        <descriptive>
            <brief>
 Edge color of caption text
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CAPTION_WINDOW_COLOR_KEY" value="10" id="::TvInfo::TvInfoMenuKey::CAPTION_WINDOW_COLOR_KEY">
        <webidl>        const unsigned short CAPTION_WINDOW_COLOR_KEY = 10;</webidl>
        <descriptive>
            <brief>
 Window color of caption text
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CAPTION_WINDOW_OPACITY_KEY" value="11" id="::TvInfo::TvInfoMenuKey::CAPTION_WINDOW_OPACITY_KEY">
        <webidl>        const unsigned short CAPTION_WINDOW_OPACITY_KEY = 11;</webidl>
        <descriptive>
            <brief>
 Window opacity of caption text
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
    </Interface>
    <Interface name="TvInfoMenuValue" id="::TvInfo::TvInfoMenuValue">
      <webidl>    [NoInterfaceObject] interface TvInfoMenuValue {
        const unsigned short CAPTION_OFF = 0;

        const unsigned short CAPTION_ON = 1;

        const unsigned short CAPTION_MODE_DEFAULT = 0;

        const unsigned short CAPTION_MODE_SERVICE1 = 1;

        const unsigned short CAPTION_MODE_SERVICE2 = 2;

        const unsigned short CAPTION_MODE_SERVICE3 = 3;

        const unsigned short CAPTION_MODE_SERVICE4 = 4;

        const unsigned short CAPTION_MODE_SERVICE5 = 5;

        const unsigned short CAPTION_MODE_SERVICE6 = 6;

        const unsigned short CAPTION_MODE_CC1 = 7;

        const unsigned short CAPTION_MODE_CC2 = 8;

        const unsigned short CAPTION_MODE_CC3 = 9;

        const unsigned short CAPTION_MODE_CC4 = 10;

        const unsigned short CAPTION_MODE_TEXT1 = 11;

        const unsigned short CAPTION_MODE_TEXT2 = 12;

        const unsigned short CAPTION_MODE_TEXT3 = 13;

        const unsigned short CAPTION_MODE_TEXT4 = 14;

        const unsigned short CAPTION_SIZE_DEFAULT = 0;

        const unsigned short CAPTION_SIZE_SMALL = 1;

        const unsigned short CAPTION_SIZE_STANDARD = 2;

        const unsigned short CAPTION_SIZE_LARGE = 3;

        const unsigned short CAPTION_SIZE_EXTRA_LARGE = 4;

        const unsigned short CAPTION_FONT_DEFAULT = 0;

        const unsigned short CAPTION_FONT_STYLE0 = 1;

        const unsigned short CAPTION_FONT_STYLE1 = 2;

        const unsigned short CAPTION_FONT_STYLE2 = 3;

        const unsigned short CAPTION_FONT_STYLE3 = 4;

        const unsigned short CAPTION_FONT_STYLE4 = 5;

        const unsigned short CAPTION_FONT_STYLE5 = 6;

        const unsigned short CAPTION_FONT_STYLE6 = 7;

        const unsigned short CAPTION_FONT_STYLE7 = 8;

        const unsigned short CAPTION_COLOR_DEFAULT = 0;

        const unsigned short CAPTION_COLOR_WHITE = 1;

        const unsigned short CAPTION_COLOR_BLACK = 2;

        const unsigned short CAPTION_COLOR_RED = 3;

        const unsigned short CAPTION_COLOR_GREEN = 4;

        const unsigned short CAPTION_COLOR_BLUE = 5;

        const unsigned short CAPTION_COLOR_YELLOW = 6;

        const unsigned short CAPTION_COLOR_MAGENTA = 7;

        const unsigned short CAPTION_COLOR_CYAN = 8;

        const unsigned short CAPTION_OPACITY_SOLID = 0;

        const unsigned short CAPTION_OPACITY_FLASHING = 1;

        const unsigned short CAPTION_OPACITY_TRANSLUCENT = 2;

        const unsigned short CAPTION_OPACITY_TRANSPARENT = 3;

        const unsigned short CAPTION_OPACITY_DEFAULT = 4;

        const unsigned short CAPTION_EDGE_NONE = 0;

        const unsigned short CAPTION_EDGE_RAISED = 1;

        const unsigned short CAPTION_EDGE_DEPRESSED = 2;

        const unsigned short CAPTION_EDGE_UNIFORM = 3;

        const unsigned short CAPTION_EDGE_DROP_SHADOWED = 4;

    };</webidl>
      <descriptive>
          <brief>
 This interface defines constants that indicates the value of menu settings.
          </brief>
          <version>
 1.0.0
          </version>
      </descriptive>
      <ExtendedAttributeList>
        <ExtendedAttribute name="NoInterfaceObject">
          <webidl>NoInterfaceObject</webidl>
        </ExtendedAttribute>
      </ExtendedAttributeList>
      <Const name="CAPTION_OFF" value="0" id="::TvInfo::TvInfoMenuValue::CAPTION_OFF">
        <webidl>        const unsigned short CAPTION_OFF = 0;</webidl>
        <descriptive>
            <brief>
 Caption Off
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CAPTION_ON" value="1" id="::TvInfo::TvInfoMenuValue::CAPTION_ON">
        <webidl>        const unsigned short CAPTION_ON = 1;</webidl>
        <descriptive>
            <brief>
 Caption On
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CAPTION_MODE_DEFAULT" value="0" id="::TvInfo::TvInfoMenuValue::CAPTION_MODE_DEFAULT">
        <webidl>        const unsigned short CAPTION_MODE_DEFAULT = 0;</webidl>
        <descriptive>
            <brief>
 Default Mode
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CAPTION_MODE_SERVICE1" value="1" id="::TvInfo::TvInfoMenuValue::CAPTION_MODE_SERVICE1">
        <webidl>        const unsigned short CAPTION_MODE_SERVICE1 = 1;</webidl>
        <descriptive>
            <brief>
 Service 1
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CAPTION_MODE_SERVICE2" value="2" id="::TvInfo::TvInfoMenuValue::CAPTION_MODE_SERVICE2">
        <webidl>        const unsigned short CAPTION_MODE_SERVICE2 = 2;</webidl>
        <descriptive>
            <brief>
 Service 2
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CAPTION_MODE_SERVICE3" value="3" id="::TvInfo::TvInfoMenuValue::CAPTION_MODE_SERVICE3">
        <webidl>        const unsigned short CAPTION_MODE_SERVICE3 = 3;</webidl>
        <descriptive>
            <brief>
 Service 3
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CAPTION_MODE_SERVICE4" value="4" id="::TvInfo::TvInfoMenuValue::CAPTION_MODE_SERVICE4">
        <webidl>        const unsigned short CAPTION_MODE_SERVICE4 = 4;</webidl>
        <descriptive>
            <brief>
 Service 4
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CAPTION_MODE_SERVICE5" value="5" id="::TvInfo::TvInfoMenuValue::CAPTION_MODE_SERVICE5">
        <webidl>        const unsigned short CAPTION_MODE_SERVICE5 = 5;</webidl>
        <descriptive>
            <brief>
 Service 5
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CAPTION_MODE_SERVICE6" value="6" id="::TvInfo::TvInfoMenuValue::CAPTION_MODE_SERVICE6">
        <webidl>        const unsigned short CAPTION_MODE_SERVICE6 = 6;</webidl>
        <descriptive>
            <brief>
 Service 6
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CAPTION_MODE_CC1" value="7" id="::TvInfo::TvInfoMenuValue::CAPTION_MODE_CC1">
        <webidl>        const unsigned short CAPTION_MODE_CC1 = 7;</webidl>
        <descriptive>
            <brief>
 English(KOR Localset)
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CAPTION_MODE_CC2" value="8" id="::TvInfo::TvInfoMenuValue::CAPTION_MODE_CC2">
        <webidl>        const unsigned short CAPTION_MODE_CC2 = 8;</webidl>
        <descriptive>
            <brief>
 Korean(KOR Localset)
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CAPTION_MODE_CC3" value="9" id="::TvInfo::TvInfoMenuValue::CAPTION_MODE_CC3">
        <webidl>        const unsigned short CAPTION_MODE_CC3 = 9;</webidl>
        <descriptive>
            <brief>
 Only US Localset
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CAPTION_MODE_CC4" value="10" id="::TvInfo::TvInfoMenuValue::CAPTION_MODE_CC4">
        <webidl>        const unsigned short CAPTION_MODE_CC4 = 10;</webidl>
        <descriptive>
            <brief>
 Only US Localset
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CAPTION_MODE_TEXT1" value="11" id="::TvInfo::TvInfoMenuValue::CAPTION_MODE_TEXT1">
        <webidl>        const unsigned short CAPTION_MODE_TEXT1 = 11;</webidl>
        <descriptive>
            <brief>
 Text 1
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CAPTION_MODE_TEXT2" value="12" id="::TvInfo::TvInfoMenuValue::CAPTION_MODE_TEXT2">
        <webidl>        const unsigned short CAPTION_MODE_TEXT2 = 12;</webidl>
        <descriptive>
            <brief>
 Text 2
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CAPTION_MODE_TEXT3" value="13" id="::TvInfo::TvInfoMenuValue::CAPTION_MODE_TEXT3">
        <webidl>        const unsigned short CAPTION_MODE_TEXT3 = 13;</webidl>
        <descriptive>
            <brief>
 Text 3
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CAPTION_MODE_TEXT4" value="14" id="::TvInfo::TvInfoMenuValue::CAPTION_MODE_TEXT4">
        <webidl>        const unsigned short CAPTION_MODE_TEXT4 = 14;</webidl>
        <descriptive>
            <brief>
 Text 4
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CAPTION_SIZE_DEFAULT" value="0" id="::TvInfo::TvInfoMenuValue::CAPTION_SIZE_DEFAULT">
        <webidl>        const unsigned short CAPTION_SIZE_DEFAULT = 0;</webidl>
        <descriptive>
            <brief>
 Default
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CAPTION_SIZE_SMALL" value="1" id="::TvInfo::TvInfoMenuValue::CAPTION_SIZE_SMALL">
        <webidl>        const unsigned short CAPTION_SIZE_SMALL = 1;</webidl>
        <descriptive>
            <brief>
 Small
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CAPTION_SIZE_STANDARD" value="2" id="::TvInfo::TvInfoMenuValue::CAPTION_SIZE_STANDARD">
        <webidl>        const unsigned short CAPTION_SIZE_STANDARD = 2;</webidl>
        <descriptive>
            <brief>
 Starndard
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CAPTION_SIZE_LARGE" value="3" id="::TvInfo::TvInfoMenuValue::CAPTION_SIZE_LARGE">
        <webidl>        const unsigned short CAPTION_SIZE_LARGE = 3;</webidl>
        <descriptive>
            <brief>
 Large
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CAPTION_SIZE_EXTRA_LARGE" value="4" id="::TvInfo::TvInfoMenuValue::CAPTION_SIZE_EXTRA_LARGE">
        <webidl>        const unsigned short CAPTION_SIZE_EXTRA_LARGE = 4;</webidl>
        <descriptive>
            <brief>
 ExtraLarge
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CAPTION_FONT_DEFAULT" value="0" id="::TvInfo::TvInfoMenuValue::CAPTION_FONT_DEFAULT">
        <webidl>        const unsigned short CAPTION_FONT_DEFAULT = 0;</webidl>
        <descriptive>
            <brief>
 Default
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CAPTION_FONT_STYLE0" value="1" id="::TvInfo::TvInfoMenuValue::CAPTION_FONT_STYLE0">
        <webidl>        const unsigned short CAPTION_FONT_STYLE0 = 1;</webidl>
        <descriptive>
            <brief>
 Default
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CAPTION_FONT_STYLE1" value="2" id="::TvInfo::TvInfoMenuValue::CAPTION_FONT_STYLE1">
        <webidl>        const unsigned short CAPTION_FONT_STYLE1 = 2;</webidl>
        <descriptive>
            <brief>
 Style 0
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CAPTION_FONT_STYLE2" value="3" id="::TvInfo::TvInfoMenuValue::CAPTION_FONT_STYLE2">
        <webidl>        const unsigned short CAPTION_FONT_STYLE2 = 3;</webidl>
        <descriptive>
            <brief>
 Style 1
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CAPTION_FONT_STYLE3" value="4" id="::TvInfo::TvInfoMenuValue::CAPTION_FONT_STYLE3">
        <webidl>        const unsigned short CAPTION_FONT_STYLE3 = 4;</webidl>
        <descriptive>
            <brief>
 Style 2
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CAPTION_FONT_STYLE4" value="5" id="::TvInfo::TvInfoMenuValue::CAPTION_FONT_STYLE4">
        <webidl>        const unsigned short CAPTION_FONT_STYLE4 = 5;</webidl>
        <descriptive>
            <brief>
 Style 3
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CAPTION_FONT_STYLE5" value="6" id="::TvInfo::TvInfoMenuValue::CAPTION_FONT_STYLE5">
        <webidl>        const unsigned short CAPTION_FONT_STYLE5 = 6;</webidl>
        <descriptive>
            <brief>
 Style 4
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CAPTION_FONT_STYLE6" value="7" id="::TvInfo::TvInfoMenuValue::CAPTION_FONT_STYLE6">
        <webidl>        const unsigned short CAPTION_FONT_STYLE6 = 7;</webidl>
        <descriptive>
            <brief>
 Style 5
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CAPTION_FONT_STYLE7" value="8" id="::TvInfo::TvInfoMenuValue::CAPTION_FONT_STYLE7">
        <webidl>        const unsigned short CAPTION_FONT_STYLE7 = 8;</webidl>
        <descriptive>
            <brief>
 Style 6
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CAPTION_COLOR_DEFAULT" value="0" id="::TvInfo::TvInfoMenuValue::CAPTION_COLOR_DEFAULT">
        <webidl>        const unsigned short CAPTION_COLOR_DEFAULT = 0;</webidl>
        <descriptive>
            <brief>
 Default
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CAPTION_COLOR_WHITE" value="1" id="::TvInfo::TvInfoMenuValue::CAPTION_COLOR_WHITE">
        <webidl>        const unsigned short CAPTION_COLOR_WHITE = 1;</webidl>
        <descriptive>
            <brief>
 White
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CAPTION_COLOR_BLACK" value="2" id="::TvInfo::TvInfoMenuValue::CAPTION_COLOR_BLACK">
        <webidl>        const unsigned short CAPTION_COLOR_BLACK = 2;</webidl>
        <descriptive>
            <brief>
 Black
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CAPTION_COLOR_RED" value="3" id="::TvInfo::TvInfoMenuValue::CAPTION_COLOR_RED">
        <webidl>        const unsigned short CAPTION_COLOR_RED = 3;</webidl>
        <descriptive>
            <brief>
 Red
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CAPTION_COLOR_GREEN" value="4" id="::TvInfo::TvInfoMenuValue::CAPTION_COLOR_GREEN">
        <webidl>        const unsigned short CAPTION_COLOR_GREEN = 4;</webidl>
        <descriptive>
            <brief>
 Green
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CAPTION_COLOR_BLUE" value="5" id="::TvInfo::TvInfoMenuValue::CAPTION_COLOR_BLUE">
        <webidl>        const unsigned short CAPTION_COLOR_BLUE = 5;</webidl>
        <descriptive>
            <brief>
 Blue
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CAPTION_COLOR_YELLOW" value="6" id="::TvInfo::TvInfoMenuValue::CAPTION_COLOR_YELLOW">
        <webidl>        const unsigned short CAPTION_COLOR_YELLOW = 6;</webidl>
        <descriptive>
            <brief>
 Yellow
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CAPTION_COLOR_MAGENTA" value="7" id="::TvInfo::TvInfoMenuValue::CAPTION_COLOR_MAGENTA">
        <webidl>        const unsigned short CAPTION_COLOR_MAGENTA = 7;</webidl>
        <descriptive>
            <brief>
 Magenta
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CAPTION_COLOR_CYAN" value="8" id="::TvInfo::TvInfoMenuValue::CAPTION_COLOR_CYAN">
        <webidl>        const unsigned short CAPTION_COLOR_CYAN = 8;</webidl>
        <descriptive>
            <brief>
 Cyan
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CAPTION_OPACITY_SOLID" value="0" id="::TvInfo::TvInfoMenuValue::CAPTION_OPACITY_SOLID">
        <webidl>        const unsigned short CAPTION_OPACITY_SOLID = 0;</webidl>
        <descriptive>
            <brief>
 Solid
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CAPTION_OPACITY_FLASHING" value="1" id="::TvInfo::TvInfoMenuValue::CAPTION_OPACITY_FLASHING">
        <webidl>        const unsigned short CAPTION_OPACITY_FLASHING = 1;</webidl>
        <descriptive>
            <brief>
 Flashing
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CAPTION_OPACITY_TRANSLUCENT" value="2" id="::TvInfo::TvInfoMenuValue::CAPTION_OPACITY_TRANSLUCENT">
        <webidl>        const unsigned short CAPTION_OPACITY_TRANSLUCENT = 2;</webidl>
        <descriptive>
            <brief>
 Translucent
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CAPTION_OPACITY_TRANSPARENT" value="3" id="::TvInfo::TvInfoMenuValue::CAPTION_OPACITY_TRANSPARENT">
        <webidl>        const unsigned short CAPTION_OPACITY_TRANSPARENT = 3;</webidl>
        <descriptive>
            <brief>
 Transparent
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CAPTION_OPACITY_DEFAULT" value="4" id="::TvInfo::TvInfoMenuValue::CAPTION_OPACITY_DEFAULT">
        <webidl>        const unsigned short CAPTION_OPACITY_DEFAULT = 4;</webidl>
        <descriptive>
            <brief>
 Default
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CAPTION_EDGE_NONE" value="0" id="::TvInfo::TvInfoMenuValue::CAPTION_EDGE_NONE">
        <webidl>        const unsigned short CAPTION_EDGE_NONE = 0;</webidl>
        <descriptive>
            <brief>
 No Edge
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CAPTION_EDGE_RAISED" value="1" id="::TvInfo::TvInfoMenuValue::CAPTION_EDGE_RAISED">
        <webidl>        const unsigned short CAPTION_EDGE_RAISED = 1;</webidl>
        <descriptive>
            <brief>
 Raised
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CAPTION_EDGE_DEPRESSED" value="2" id="::TvInfo::TvInfoMenuValue::CAPTION_EDGE_DEPRESSED">
        <webidl>        const unsigned short CAPTION_EDGE_DEPRESSED = 2;</webidl>
        <descriptive>
            <brief>
 Depressed
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CAPTION_EDGE_UNIFORM" value="3" id="::TvInfo::TvInfoMenuValue::CAPTION_EDGE_UNIFORM">
        <webidl>        const unsigned short CAPTION_EDGE_UNIFORM = 3;</webidl>
        <descriptive>
            <brief>
 Uniform
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="CAPTION_EDGE_DROP_SHADOWED" value="4" id="::TvInfo::TvInfoMenuValue::CAPTION_EDGE_DROP_SHADOWED">
        <webidl>        const unsigned short CAPTION_EDGE_DROP_SHADOWED = 4;</webidl>
        <descriptive>
            <brief>
 Drop Shadow
            </brief>
            <version>
 1.0.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
    </Interface>
  </Module>
  <Module name="WebApi" id="::WebApi">
    <webidl>module WebApi {
    [NoInterfaceObject] interface WebApiObject {
        readonly attribute <ref>WebApi</ref> webapis;

    };
    <ref>Window</ref> implements <ref>WebApiObject</ref>;

    [NoInterfaceObject] interface WebApi {
    };

    [NoInterfaceObject] interface WebAPIException {
        const unsigned short INDEX_SIZE_ERR = 1;

        const unsigned short DOMSTRING_SIZE_ERR = 2;

        const unsigned short HIERARCHY_REQUEST_ERR = 3;

        const unsigned short WRONG_DOCUMENT_ERR = 4;

        const unsigned short INVALID_CHARACTER_ERR = 5;

        const unsigned short NO_DATA_ALLOWED_ERR = 6;

        const unsigned short NO_MODIFICATION_ALLOWED_ERR = 7;

        const unsigned short NOT_FOUND_ERR = 8;

        const unsigned short NOT_SUPPORTED_ERR = 9;

        const unsigned short INUSE_ATTRIBUTE_ERR = 10;

        const unsigned short INVALID_STATE_ERR = 11;

        const unsigned short SYNTAX_ERR = 12;

        const unsigned short INVALID_MODIFICATION_ERR = 13;

        const unsigned short NAMESPACE_ERR = 14;

        const unsigned short INVALID_ACCESS_ERR = 15;

        const unsigned short VALIDATION_ERR = 16;

        const unsigned short TYPE_MISMATCH_ERR = 17;

        const unsigned short SECURITY_ERR = 18;

        const unsigned short NETWORK_ERR = 19;

        const unsigned short ABORT_ERR = 20;

        const unsigned short URL_MISMATCH_ERR = 21;

        const unsigned short QUOTA_EXCEEDED_ERR = 22;

        const unsigned short TIMEOUT_ERR = 23;

        const unsigned short INVALID_NODE_TYPE_ERR = 24;

        const unsigned short DATA_CLONE_ERR = 25;

        const unsigned short INVALID_VALUES_ERR = 26;

        const unsigned short IO_ERR = 27;

        const unsigned short SERVICE_NOT_AVAILABLE_ERR = 28;

        const unsigned short UNKNOW_ERR = 9999;

        readonly attribute unsigned short code;

        readonly attribute DOMString name;

        readonly attribute DOMString message;

    };

    [NoInterfaceObject] interface WebAPIError {
        readonly attribute unsigned short code;

        readonly attribute DOMString name;

        readonly attribute DOMString message;

    };

    [Callback=FunctionOnly, NoInterfaceObject] interface SuccessCallback {
        void onsuccess();

    };

    [Callback=FunctionOnly, NoInterfaceObject] interface ErrorCallback {
        void onerror(<ref>WebAPIError</ref> error);

    };

};</webidl>
    <descriptive>
        <brief>
 The module defines the functionalities that are provides as the Tizen-based Samsung TV Product API. Additionally, this API specifies the location in the ECMAScript hierarchy in which the Tizen-based Samsung TV Product API is instantiated (window.webapis).
        </brief>
        <version>
 1.0
        </version>
    </descriptive>
    <Interface name="WebApiObject" id="::WebApi::WebApiObject">
      <webidl>    [NoInterfaceObject] interface WebApiObject {
        readonly attribute <ref>WebApi</ref> webapis;

    };</webidl>
      <descriptive>
          <brief>
 This interface defines the webapis interface as a part of the window global object.
          </brief>
          <version>
 1.0
          </version>
      </descriptive>
      <ExtendedAttributeList>
        <ExtendedAttribute name="NoInterfaceObject">
          <webidl>NoInterfaceObject</webidl>
        </ExtendedAttribute>
      </ExtendedAttributeList>
      <Attribute readonly="readonly" name="webapis" id="::WebApi::WebApiObject::webapis">
        <webidl>        readonly attribute <ref>WebApi</ref> webapis;</webidl>
        <descriptive>
            <brief>
 This attribute defines global namespace for Tizen-based Samsung TV Product API.
            </brief>
            <version>
 1.0
            </version>
        </descriptive>
        <Type name="WebApi"/>
      </Attribute>
    </Interface>
    <Implements name1="Window" name2="WebApiObject">
      <webidl>    <ref>Window</ref> implements <ref>WebApiObject</ref>;</webidl>
    </Implements>
    <Interface name="WebApi" id="::WebApi::WebApi">
      <webidl>    [NoInterfaceObject] interface WebApi {
    };</webidl>
      <descriptive>
          <brief>
 This interface defines the root of Product API.
          </brief>
          <version>
 1.0
          </version>
      </descriptive>
      <ExtendedAttributeList>
        <ExtendedAttribute name="NoInterfaceObject">
          <webidl>NoInterfaceObject</webidl>
        </ExtendedAttribute>
      </ExtendedAttributeList>
    </Interface>
    <Interface name="WebAPIException" id="::WebApi::WebAPIException">
      <webidl>    [NoInterfaceObject] interface WebAPIException {
        const unsigned short INDEX_SIZE_ERR = 1;

        const unsigned short DOMSTRING_SIZE_ERR = 2;

        const unsigned short HIERARCHY_REQUEST_ERR = 3;

        const unsigned short WRONG_DOCUMENT_ERR = 4;

        const unsigned short INVALID_CHARACTER_ERR = 5;

        const unsigned short NO_DATA_ALLOWED_ERR = 6;

        const unsigned short NO_MODIFICATION_ALLOWED_ERR = 7;

        const unsigned short NOT_FOUND_ERR = 8;

        const unsigned short NOT_SUPPORTED_ERR = 9;

        const unsigned short INUSE_ATTRIBUTE_ERR = 10;

        const unsigned short INVALID_STATE_ERR = 11;

        const unsigned short SYNTAX_ERR = 12;

        const unsigned short INVALID_MODIFICATION_ERR = 13;

        const unsigned short NAMESPACE_ERR = 14;

        const unsigned short INVALID_ACCESS_ERR = 15;

        const unsigned short VALIDATION_ERR = 16;

        const unsigned short TYPE_MISMATCH_ERR = 17;

        const unsigned short SECURITY_ERR = 18;

        const unsigned short NETWORK_ERR = 19;

        const unsigned short ABORT_ERR = 20;

        const unsigned short URL_MISMATCH_ERR = 21;

        const unsigned short QUOTA_EXCEEDED_ERR = 22;

        const unsigned short TIMEOUT_ERR = 23;

        const unsigned short INVALID_NODE_TYPE_ERR = 24;

        const unsigned short DATA_CLONE_ERR = 25;

        const unsigned short INVALID_VALUES_ERR = 26;

        const unsigned short IO_ERR = 27;

        const unsigned short SERVICE_NOT_AVAILABLE_ERR = 28;

        const unsigned short UNKNOW_ERR = 9999;

        readonly attribute unsigned short code;

        readonly attribute DOMString name;

        readonly attribute DOMString message;

    };</webidl>
      <descriptive>
          <brief>
 This interface defines Exception errors of  synchronous APIs.
          </brief>
          <version>
 1.0
          </version>
      </descriptive>
      <ExtendedAttributeList>
        <ExtendedAttribute name="NoInterfaceObject">
          <webidl>NoInterfaceObject</webidl>
        </ExtendedAttribute>
      </ExtendedAttributeList>
      <Const name="INDEX_SIZE_ERR" value="1" id="::WebApi::WebAPIException::INDEX_SIZE_ERR">
        <webidl>        const unsigned short INDEX_SIZE_ERR = 1;</webidl>
        <descriptive>
            <brief>
 INDEX_SIZE_ERR
            </brief>
            <version>
 1.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="DOMSTRING_SIZE_ERR" value="2" id="::WebApi::WebAPIException::DOMSTRING_SIZE_ERR">
        <webidl>        const unsigned short DOMSTRING_SIZE_ERR = 2;</webidl>
        <descriptive>
            <brief>
 DOMSTRING_SIZE_ERR
            </brief>
            <version>
 1.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="HIERARCHY_REQUEST_ERR" value="3" id="::WebApi::WebAPIException::HIERARCHY_REQUEST_ERR">
        <webidl>        const unsigned short HIERARCHY_REQUEST_ERR = 3;</webidl>
        <descriptive>
            <brief>
 HIERARCHY_REQUEST_ERR
            </brief>
            <version>
 1.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="WRONG_DOCUMENT_ERR" value="4" id="::WebApi::WebAPIException::WRONG_DOCUMENT_ERR">
        <webidl>        const unsigned short WRONG_DOCUMENT_ERR = 4;</webidl>
        <descriptive>
            <brief>
 WRONG_DOCUMENT_ERR
            </brief>
            <version>
 1.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="INVALID_CHARACTER_ERR" value="5" id="::WebApi::WebAPIException::INVALID_CHARACTER_ERR">
        <webidl>        const unsigned short INVALID_CHARACTER_ERR = 5;</webidl>
        <descriptive>
            <brief>
 INVALID_CHARACTER_ERR
            </brief>
            <version>
 1.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="NO_DATA_ALLOWED_ERR" value="6" id="::WebApi::WebAPIException::NO_DATA_ALLOWED_ERR">
        <webidl>        const unsigned short NO_DATA_ALLOWED_ERR = 6;</webidl>
        <descriptive>
            <brief>
 NO_DATA_ALLOWED_ERR
            </brief>
            <version>
 1.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="NO_MODIFICATION_ALLOWED_ERR" value="7" id="::WebApi::WebAPIException::NO_MODIFICATION_ALLOWED_ERR">
        <webidl>        const unsigned short NO_MODIFICATION_ALLOWED_ERR = 7;</webidl>
        <descriptive>
            <brief>
 NO_MODIFICATION_ALLOWED_ERR
            </brief>
            <version>
 1.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="NOT_FOUND_ERR" value="8" id="::WebApi::WebAPIException::NOT_FOUND_ERR">
        <webidl>        const unsigned short NOT_FOUND_ERR = 8;</webidl>
        <descriptive>
            <brief>
 NOT_FOUND_ERR
            </brief>
            <version>
 1.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="NOT_SUPPORTED_ERR" value="9" id="::WebApi::WebAPIException::NOT_SUPPORTED_ERR">
        <webidl>        const unsigned short NOT_SUPPORTED_ERR = 9;</webidl>
        <descriptive>
            <brief>
 NOT_SUPPORTED_ERR
            </brief>
            <version>
 1.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="INUSE_ATTRIBUTE_ERR" value="10" id="::WebApi::WebAPIException::INUSE_ATTRIBUTE_ERR">
        <webidl>        const unsigned short INUSE_ATTRIBUTE_ERR = 10;</webidl>
        <descriptive>
            <brief>
 INUSE_ATTRIBUTE_ERR
            </brief>
            <version>
 1.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="INVALID_STATE_ERR" value="11" id="::WebApi::WebAPIException::INVALID_STATE_ERR">
        <webidl>        const unsigned short INVALID_STATE_ERR = 11;</webidl>
        <descriptive>
            <brief>
 INVALID_STATE_ERR
            </brief>
            <version>
 1.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="SYNTAX_ERR" value="12" id="::WebApi::WebAPIException::SYNTAX_ERR">
        <webidl>        const unsigned short SYNTAX_ERR = 12;</webidl>
        <descriptive>
            <brief>
 SYNTAX_ERR
            </brief>
            <version>
 1.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="INVALID_MODIFICATION_ERR" value="13" id="::WebApi::WebAPIException::INVALID_MODIFICATION_ERR">
        <webidl>        const unsigned short INVALID_MODIFICATION_ERR = 13;</webidl>
        <descriptive>
            <brief>
 INVALID_MODIFICATION_ERR
            </brief>
            <version>
 1.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="NAMESPACE_ERR" value="14" id="::WebApi::WebAPIException::NAMESPACE_ERR">
        <webidl>        const unsigned short NAMESPACE_ERR = 14;</webidl>
        <descriptive>
            <brief>
 NAMESPACE_ERR
            </brief>
            <version>
 1.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="INVALID_ACCESS_ERR" value="15" id="::WebApi::WebAPIException::INVALID_ACCESS_ERR">
        <webidl>        const unsigned short INVALID_ACCESS_ERR = 15;</webidl>
        <descriptive>
            <brief>
 INVALID_ACCESS_ERR
            </brief>
            <version>
 1.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="VALIDATION_ERR" value="16" id="::WebApi::WebAPIException::VALIDATION_ERR">
        <webidl>        const unsigned short VALIDATION_ERR = 16;</webidl>
        <descriptive>
            <brief>
 VALIDATION_ERR
            </brief>
            <version>
 1.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="TYPE_MISMATCH_ERR" value="17" id="::WebApi::WebAPIException::TYPE_MISMATCH_ERR">
        <webidl>        const unsigned short TYPE_MISMATCH_ERR = 17;</webidl>
        <descriptive>
            <brief>
 TYPE_MISMATCH_ERR
            </brief>
            <version>
 1.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="SECURITY_ERR" value="18" id="::WebApi::WebAPIException::SECURITY_ERR">
        <webidl>        const unsigned short SECURITY_ERR = 18;</webidl>
        <descriptive>
            <brief>
 SECURITY_ERR
            </brief>
            <version>
 1.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="NETWORK_ERR" value="19" id="::WebApi::WebAPIException::NETWORK_ERR">
        <webidl>        const unsigned short NETWORK_ERR = 19;</webidl>
        <descriptive>
            <brief>
 NETWORK_ERR
            </brief>
            <version>
 1.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="ABORT_ERR" value="20" id="::WebApi::WebAPIException::ABORT_ERR">
        <webidl>        const unsigned short ABORT_ERR = 20;</webidl>
        <descriptive>
            <brief>
 ABORT_ERR
            </brief>
            <version>
 1.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="URL_MISMATCH_ERR" value="21" id="::WebApi::WebAPIException::URL_MISMATCH_ERR">
        <webidl>        const unsigned short URL_MISMATCH_ERR = 21;</webidl>
        <descriptive>
            <brief>
 URL_MISMATCH_ERR
            </brief>
            <version>
 1.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="QUOTA_EXCEEDED_ERR" value="22" id="::WebApi::WebAPIException::QUOTA_EXCEEDED_ERR">
        <webidl>        const unsigned short QUOTA_EXCEEDED_ERR = 22;</webidl>
        <descriptive>
            <brief>
 QUOTA_EXCEEDED_ERR
            </brief>
            <version>
 1.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="TIMEOUT_ERR" value="23" id="::WebApi::WebAPIException::TIMEOUT_ERR">
        <webidl>        const unsigned short TIMEOUT_ERR = 23;</webidl>
        <descriptive>
            <brief>
 TIMEOUT_ERR
            </brief>
            <version>
 1.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="INVALID_NODE_TYPE_ERR" value="24" id="::WebApi::WebAPIException::INVALID_NODE_TYPE_ERR">
        <webidl>        const unsigned short INVALID_NODE_TYPE_ERR = 24;</webidl>
        <descriptive>
            <brief>
 INVALID_NODE_TYPE_ERR
            </brief>
            <version>
 1.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="DATA_CLONE_ERR" value="25" id="::WebApi::WebAPIException::DATA_CLONE_ERR">
        <webidl>        const unsigned short DATA_CLONE_ERR = 25;</webidl>
        <descriptive>
            <brief>
 DATA_CLONE_ERR
            </brief>
            <version>
 1.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="INVALID_VALUES_ERR" value="26" id="::WebApi::WebAPIException::INVALID_VALUES_ERR">
        <webidl>        const unsigned short INVALID_VALUES_ERR = 26;</webidl>
        <descriptive>
            <brief>
 INVALID_VALUES_ERR
            </brief>
            <version>
 1.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="IO_ERR" value="27" id="::WebApi::WebAPIException::IO_ERR">
        <webidl>        const unsigned short IO_ERR = 27;</webidl>
        <descriptive>
            <brief>
 IO_ERR
            </brief>
            <version>
 1.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="SERVICE_NOT_AVAILABLE_ERR" value="28" id="::WebApi::WebAPIException::SERVICE_NOT_AVAILABLE_ERR">
        <webidl>        const unsigned short SERVICE_NOT_AVAILABLE_ERR = 28;</webidl>
        <descriptive>
            <brief>
 SERVICE_NOT_AVAILABLE_ERR
            </brief>
            <version>
 1.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Const name="UNKNOW_ERR" value="9999" id="::WebApi::WebAPIException::UNKNOW_ERR">
        <webidl>        const unsigned short UNKNOW_ERR = 9999;</webidl>
        <descriptive>
            <brief>
 UNKNOW_ERR
            </brief>
            <version>
 1.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Const>
      <Attribute readonly="readonly" name="code" id="::WebApi::WebAPIException::code">
        <webidl>        readonly attribute unsigned short code;</webidl>
        <descriptive>
            <brief>
 This attribute defines value of error code.
            </brief>
            <version>
 1.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Attribute>
      <Attribute readonly="readonly" name="name" id="::WebApi::WebAPIException::name">
        <webidl>        readonly attribute DOMString name;</webidl>
        <descriptive>
            <brief>
 This attribute defines value of error name. An error type.
            </brief>
            <version>
 1.0
            </version>
        </descriptive>
        <Type type="DOMString"/>
      </Attribute>
      <Attribute readonly="readonly" name="message" id="::WebApi::WebAPIException::message">
        <webidl>        readonly attribute DOMString message;</webidl>
        <descriptive>
            <brief>
 This attribute defines value of error message. An error message that describes the details of the error encountered.
            </brief>
            <version>
 1.0
            </version>
        </descriptive>
        <Type type="DOMString"/>
      </Attribute>
    </Interface>
    <Interface name="WebAPIError" id="::WebApi::WebAPIError">
      <webidl>    [NoInterfaceObject] interface WebAPIError {
        readonly attribute unsigned short code;

        readonly attribute DOMString name;

        readonly attribute DOMString message;

    };</webidl>
      <descriptive>
          <brief>
 This interface defines error of  asynchronous APIs.
          </brief>
          <version>
 1.0
          </version>
      </descriptive>
      <ExtendedAttributeList>
        <ExtendedAttribute name="NoInterfaceObject">
          <webidl>NoInterfaceObject</webidl>
        </ExtendedAttribute>
      </ExtendedAttributeList>
      <Attribute readonly="readonly" name="code" id="::WebApi::WebAPIError::code">
        <webidl>        readonly attribute unsigned short code;</webidl>
        <descriptive>
            <brief>
 This attribute defines value of error code.
            </brief>
            <version>
 1.0
            </version>
        </descriptive>
        <Type type="unsigned short"/>
      </Attribute>
      <Attribute readonly="readonly" name="name" id="::WebApi::WebAPIError::name">
        <webidl>        readonly attribute DOMString name;</webidl>
        <descriptive>
            <brief>
 This attribute defines value of error name. An error type.
            </brief>
            <version>
 1.0
            </version>
        </descriptive>
        <Type type="DOMString"/>
      </Attribute>
      <Attribute readonly="readonly" name="message" id="::WebApi::WebAPIError::message">
        <webidl>        readonly attribute DOMString message;</webidl>
        <descriptive>
            <brief>
 This attribute defines value of error message. An error message that describes the details of the error encountered.
            </brief>
            <version>
 1.0
            </version>
        </descriptive>
        <Type type="DOMString"/>
      </Attribute>
    </Interface>
    <Interface name="SuccessCallback" id="::WebApi::SuccessCallback">
      <webidl>    [Callback=FunctionOnly, NoInterfaceObject] interface SuccessCallback {
        void onsuccess();

    };</webidl>
      <descriptive>
          <brief>
 This callback interface is used in methods that do not require any return value in the success callback.
          </brief>
          <version>
 1.0
          </version>
      </descriptive>
      <ExtendedAttributeList>
        <ExtendedAttribute name="Callback" value="FunctionOnly">
          <webidl>Callback</webidl>
        </ExtendedAttribute>
        <ExtendedAttribute name="NoInterfaceObject">
          <webidl> NoInterfaceObject</webidl>
        </ExtendedAttribute>
      </ExtendedAttributeList>
      <Operation name="onsuccess" id="::WebApi::SuccessCallback::onsuccess">
        <webidl>        void onsuccess();</webidl>
        <descriptive>
            <brief>
 This callback interface is used in methods that do not require any return value in the success callback.
            </brief>
            <version>
 1.0
            </version>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
      </Operation>
    </Interface>
    <Interface name="ErrorCallback" id="::WebApi::ErrorCallback">
      <webidl>    [Callback=FunctionOnly, NoInterfaceObject] interface ErrorCallback {
        void onerror(<ref>WebAPIError</ref> error);

    };</webidl>
      <descriptive>
          <brief>
 This callback interface is used in methods that do not require any return value in the error callback.
          </brief>
          <version>
 1.0
          </version>
      </descriptive>
      <ExtendedAttributeList>
        <ExtendedAttribute name="Callback" value="FunctionOnly">
          <webidl>Callback</webidl>
        </ExtendedAttribute>
        <ExtendedAttribute name="NoInterfaceObject">
          <webidl> NoInterfaceObject</webidl>
        </ExtendedAttribute>
      </ExtendedAttributeList>
      <Operation name="onerror" id="::WebApi::ErrorCallback::onerror">
        <webidl>        void onerror(<ref>WebAPIError</ref> error);</webidl>
        <descriptive>
            <brief>
 This callback interface is used in methods that do not require any return value in the error callback.
            </brief>
            <version>
 1.0
            </version>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="error">
            <descriptive>
                <description><p>
 
                </p></description>
            </descriptive>
            <Type name="WebAPIError"/>
          </Argument>
        </ArgumentList>
      </Operation>
    </Interface>
  </Module>
  <Module name="WidgetData" id="::WidgetData">
    <webidl>module WidgetData {
    [NoInterfaceObject] interface WidgetDataManagerObject {
        readonly attribute <ref>WidgetDataManager</ref> widgetdata;

    };
    <ref>WebApi</ref> implements <ref>WidgetDataManagerObject</ref>;

    [NoInterfaceObject] interface WidgetDataManager {
        DOMString getVersion();

        void readWidgetData(DOMString password, long dataLength, DOMString widgetId, <ref>WidgetDataStringSuccessCallback</ref> onsuccess, optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);

        void removeWidgetData(DOMString widgetId, optional <ref>SuccessCallback</ref>? onsuccess, optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);

        void writeWidgetData(DOMString password, DOMString data, long dataLength, DOMString widgetId, optional <ref>SuccessCallback</ref>? onsuccess, optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);

    };

    [Callback, NoInterfaceObject] interface WidgetDataStringSuccessCallback {
    };

};</webidl>
    <descriptive>
        <brief>
 The module defines the functionalities of storing data in the application's secure storage that are provides as the Tizen-based Samsung TV Product API.
        </brief>
        <version>
 1.0
        </version>
    </descriptive>
    <Interface name="WidgetDataManagerObject" id="::WidgetData::WidgetDataManagerObject">
      <webidl>    [NoInterfaceObject] interface WidgetDataManagerObject {
        readonly attribute <ref>WidgetDataManager</ref> widgetdata;

    };</webidl>
      <descriptive>
          <brief>
 The interface defines what is instantiated by the WebApi object of Tizen-based Samsung TV Product API.
There will be a webapis.widgetdata object that allows access to the functionality of the WidgetData API
          </brief>
          <version>
 1.0
          </version>
      </descriptive>
      <ExtendedAttributeList>
        <ExtendedAttribute name="NoInterfaceObject">
          <webidl>NoInterfaceObject</webidl>
        </ExtendedAttribute>
      </ExtendedAttributeList>
      <Attribute readonly="readonly" name="widgetdata" id="::WidgetData::WidgetDataManagerObject::widgetdata">
        <webidl>        readonly attribute <ref>WidgetDataManager</ref> widgetdata;</webidl>
        <descriptive>
            <brief>
 Namespace for WidgetData API.
            </brief>
            <version>
 1.0
            </version>
        </descriptive>
        <Type name="WidgetDataManager"/>
      </Attribute>
    </Interface>
    <Implements name1="WebApi" name2="WidgetDataManagerObject">
      <webidl>    <ref>WebApi</ref> implements <ref>WidgetDataManagerObject</ref>;</webidl>
    </Implements>
    <Interface name="WidgetDataManager" id="::WidgetData::WidgetDataManager">
      <webidl>    [NoInterfaceObject] interface WidgetDataManager {
        DOMString getVersion();

        void readWidgetData(DOMString password, long dataLength, DOMString widgetId, <ref>WidgetDataStringSuccessCallback</ref> onsuccess, optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);

        void removeWidgetData(DOMString widgetId, optional <ref>SuccessCallback</ref>? onsuccess, optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);

        void writeWidgetData(DOMString password, DOMString data, long dataLength, DOMString widgetId, optional <ref>SuccessCallback</ref>? onsuccess, optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);

    };</webidl>
      <descriptive>
          <brief>
 This interface provides methods to use the WidgetData functionalities.
          </brief>
          <version>
 1.0
          </version>
      </descriptive>
      <ExtendedAttributeList>
        <ExtendedAttribute name="NoInterfaceObject">
          <webidl>NoInterfaceObject</webidl>
        </ExtendedAttribute>
      </ExtendedAttributeList>
      <Operation name="getVersion" id="::WidgetData::WidgetDataManager::getVersion">
        <webidl>        DOMString getVersion();</webidl>
        <descriptive>
            <brief>
 This method get the plugin's version number.
            </brief>
            <version>
 1.0
            </version>
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/widgetdata
            </privilege>
            <Code> try {
     var value = webapis.widgetdata.getVersion();
     console.log(&quot; version value = &quot; + value);
 } catch (error) {
     console.log(&quot; error code = &quot; + error.code);
 }
 </Code>
        </descriptive>
        <Type type="DOMString">
          <descriptive>
              <description><p>
 DOMString
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList/>
      </Operation>
      <Operation name="readWidgetData" id="::WidgetData::WidgetDataManager::readWidgetData">
        <webidl>        void readWidgetData(DOMString password, long dataLength, DOMString widgetId, <ref>WidgetDataStringSuccessCallback</ref> onsuccess, optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method read the encrypted data.
            </brief>
            <version>
 1.0
            </version>
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/widgetdata
            </privilege>
            <Code> function onsuccess(data) {
     console.log(&quot;readWidgetData data = &quot; + data);
 }
 
 function onerror(error) {
     console.log(&quot;error code : &quot; + error.code);
 }
 try {
     webapis.widgetdata.readWidgetData(password, dataLength, widgetId, onsuccess, onerror);
 } catch (error) {
     console.log(&quot; error code = &quot; + error.code);
 }
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="password">
            <descriptive>
                <description><p>
 Value of password
                </p></description>
            </descriptive>
            <Type type="DOMString"/>
          </Argument>
          <Argument name="dataLength">
            <descriptive>
                <description><p>
 Value of dataLength
                </p></description>
            </descriptive>
            <Type type="long"/>
          </Argument>
          <Argument name="widgetId">
            <descriptive>
                <description><p>
 Id of widget
                </p></description>
            </descriptive>
            <Type type="DOMString"/>
          </Argument>
          <Argument name="onsuccess">
            <descriptive>
                <description><p>
 
                </p></description>
            </descriptive>
            <Type name="WidgetDataStringSuccessCallback"/>
          </Argument>
          <Argument optional="optional" name="onerror">
            <descriptive>
                <description><p>
 [optional][nullable] 
                </p></description>
            </descriptive>
            <Type name="ErrorCallback" nullable="nullable"/>
          </Argument>
        </ArgumentList>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type TypeMismatchError, if invalid ErrorCallback type passed for 'onerror' parameter
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
      <Operation name="removeWidgetData" id="::WidgetData::WidgetDataManager::removeWidgetData">
        <webidl>        void removeWidgetData(DOMString widgetId, optional <ref>SuccessCallback</ref>? onsuccess, optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method remove the encrypted data.
            </brief>
            <version>
 1.0
            </version>
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/widgetdata
            </privilege>
            <Code> function onsuccess(data) {
     console.log(&quot;removeWidgetData data = &quot; + data);
 }
 
 function onerror(error) {
     console.log(&quot;error code : &quot; + error.code);
 }
 try {
     webapis.widgetdata.removeWidgetData(widgetId, onsuccess, onerror);
 } catch (error) {
     console.log(&quot; error code = &quot; + error.code);
 }
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="widgetId">
            <descriptive>
                <description><p>
 Id of widget
                </p></description>
            </descriptive>
            <Type type="DOMString"/>
          </Argument>
          <Argument optional="optional" name="onsuccess">
            <descriptive>
                <description><p>
 [optional][nullable] 
                </p></description>
            </descriptive>
            <Type name="SuccessCallback" nullable="nullable"/>
          </Argument>
          <Argument optional="optional" name="onerror">
            <descriptive>
                <description><p>
 [optional][nullable] 
                </p></description>
            </descriptive>
            <Type name="ErrorCallback" nullable="nullable"/>
          </Argument>
        </ArgumentList>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type TypeMismatchError, if invalid ErrorCallback type passed for 'onerror' parameter
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
      <Operation name="writeWidgetData" id="::WidgetData::WidgetDataManager::writeWidgetData">
        <webidl>        void writeWidgetData(DOMString password, DOMString data, long dataLength, DOMString widgetId, optional <ref>SuccessCallback</ref>? onsuccess, optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);</webidl>
        <descriptive>
            <brief>
 This method write the encrypted data.
            </brief>
            <version>
 1.0
            </version>
            <privilegelevel>
 Public
            </privilegelevel>
            <privilege>
 http://developer.samsung.com/privilege/widgetdata
            </privilege>
            <Code> function onsuccess(data) {
     console.log(&quot;writeWidgetData data = &quot; + data);
 }
 
 function onerror(error) {
     console.log(&quot;error code : &quot; + error.code);
 }
 try {
     webapis.widgetdata.writeWidgetData(password, data, dataLength, widgetId, onsuccess, onerror);
 } catch (error) {
     console.log(&quot; error code = &quot; + error.code);
 }
 </Code>
        </descriptive>
        <Type type="void">
          <descriptive>
              <description><p>
 void
              </p></description>
          </descriptive>
        </Type>
        <ArgumentList>
          <Argument name="password">
            <descriptive>
                <description><p>
 Value of password
                </p></description>
            </descriptive>
            <Type type="DOMString"/>
          </Argument>
          <Argument name="data">
            <descriptive>
                <description><p>
 Value of data
                </p></description>
            </descriptive>
            <Type type="DOMString"/>
          </Argument>
          <Argument name="dataLength">
            <descriptive>
                <description><p>
 Value of dataLength
                </p></description>
            </descriptive>
            <Type type="long"/>
          </Argument>
          <Argument name="widgetId">
            <descriptive>
                <description><p>
 Id of widget
                </p></description>
            </descriptive>
            <Type type="DOMString"/>
          </Argument>
          <Argument optional="optional" name="onsuccess">
            <descriptive>
                <description><p>
 [optional][nullable] 
                </p></description>
            </descriptive>
            <Type name="SuccessCallback" nullable="nullable"/>
          </Argument>
          <Argument optional="optional" name="onerror">
            <descriptive>
                <description><p>
 [optional][nullable] 
                </p></description>
            </descriptive>
            <Type name="ErrorCallback" nullable="nullable"/>
          </Argument>
        </ArgumentList>
        <Raises>
          <RaiseException name="WebAPIException">
            <descriptive>
                <description><p>
 with error type TypeMismatchError, if invalid ErrorCallback type passed for 'onerror' parameter
                </p></description>
            </descriptive>
          </RaiseException>
        </Raises>
      </Operation>
    </Interface>
    <Interface name="WidgetDataStringSuccessCallback" id="::WidgetData::WidgetDataStringSuccessCallback">
      <webidl>    [Callback, NoInterfaceObject] interface WidgetDataStringSuccessCallback {
    };</webidl>
      <descriptive>
          <brief>
 This callback interface is used in methods that do not require any return value in the success callback.
          </brief>
          <version>
 1.0
          </version>
      </descriptive>
      <ExtendedAttributeList>
        <ExtendedAttribute name="Callback">
          <webidl>Callback</webidl>
        </ExtendedAttribute>
        <ExtendedAttribute name="NoInterfaceObject">
          <webidl> NoInterfaceObject</webidl>
        </ExtendedAttribute>
      </ExtendedAttributeList>
    </Interface>
  </Module>
</Definitions>
