Added new documentation; version up
[profile/ivi/sdk/web-ide-resources.git] / widlprocxmls / tizen.widlprocxml
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE Definitions SYSTEM "widlprocxml.dtd">
3 <Definitions>
4 <Module name="MediaServer" id="::MediaServer">
5   <webidl>  module MediaServer {
6   [NoInterfaceObject] interface MediaServerManagerObject {
7                 readonly attribute <ref>MediaServerManager</ref> mediaserver;
8 };
9  
10 <ref>Tizen</ref> implements <ref>MediaServerManagerObject</ref>;
11     
12 [NoInterfaceObject] interface MediaServerManager  { 
13             void scanNetwork(<ref>MediaServerFoundServerCallback</ref> successCallback, optional <ref>MediaServerErrorCallback</ref> errorCallback);
14 };    
15
16 [NoInterfaceObject] interface MediaServer {
17             readonly attribute DOMString id;
18             readonly attribute DOMString friendlyName;
19             readonly attribute object root;
20                                             
21             void browse(DOMString containerId, DOMString sortMode, unsigned long count, unsigned long offset, <ref>MediaServerBrowseFindCallback</ref> successCallback, optional <ref>MediaServerErrorCallback</ref> errorCallback);
22                 void find(DOMString containerId, DOMString searchFilter, DOMString sortMode, unsigned long count, unsigned long offset, <ref>MediaServerBrowseFindCallback</ref> successCallback, optional <ref>MediaServerErrorCallback</ref> errorCallback);
23 };
24             
25 [NoInterfaceObject] interface MediaServerError {
26              const unsigned short GENERIC = 1;
27              attribute unsigned short code;
28                  attribute DOMString message;
29 };
30
31 [Callback=FunctionOnly, NoInterfaceObject] interface MediaServerFoundServerCallback {
32             void onsuccess(<ref>MediaServer</ref> value);
33 };
34
35 [Callback=FunctionOnly, NoInterfaceObject] interface MediaServerBrowseFindCallback {
36     void onsuccess(sequence&lt; object > value);
37 };
38
39 [Callback=FunctionOnly, NoInterfaceObject] interface MediaServerErrorCallback {
40     void onfailure(<ref>MediaServerError</ref> error);
41 };</webidl>
42   <Interface name="MediaServerManagerObject" id="::MediaServerManagerObject">
43     <webidl>[NoInterfaceObject] interface MediaServerManagerObject {
44                 readonly attribute <ref>MediaServerManager</ref> mediaserver;
45 };</webidl>
46     <ExtendedAttributeList>
47       <ExtendedAttribute name="NoInterfaceObject">
48         <webidl>NoInterfaceObject</webidl>
49       </ExtendedAttribute>
50     </ExtendedAttributeList>
51     <Attribute readonly="readonly" name="mediaserver" id="::MediaServerManagerObject::mediaserver">
52       <webidl>                readonly attribute <ref>MediaServerManager</ref> mediaserver;</webidl>
53       <Type name="MediaServerManager"/>
54     </Attribute>
55   </Interface>
56   <Implements name1="Tizen" name2="MediaServerManagerObject">
57     <webidl><ref>Tizen</ref> implements <ref>MediaServerManagerObject</ref>;</webidl>
58   </Implements>
59   <Interface name="MediaServerManager" id="::MediaServerManager">
60     <webidl>[NoInterfaceObject] interface MediaServerManager  { 
61             void scanNetwork(<ref>MediaServerFoundServerCallback</ref> successCallback, optional <ref>MediaServerErrorCallback</ref> errorCallback);
62 };</webidl>
63     <ExtendedAttributeList>
64       <ExtendedAttribute name="NoInterfaceObject">
65         <webidl>NoInterfaceObject</webidl>
66       </ExtendedAttribute>
67     </ExtendedAttributeList>
68     <Operation name="scanNetwork" id="::MediaServerManager::scanNetwork">
69       <webidl>            void scanNetwork(<ref>MediaServerFoundServerCallback</ref> successCallback, optional <ref>MediaServerErrorCallback</ref> errorCallback);</webidl>
70       <Type type="void"/>
71       <ArgumentList>
72         <Argument name="successCallback">
73           <Type name="MediaServerFoundServerCallback"/>
74         </Argument>
75         <Argument optional="optional" name="errorCallback">
76           <Type name="MediaServerErrorCallback"/>
77         </Argument>
78       </ArgumentList>
79     </Operation>
80   </Interface>
81   <Interface name="MediaServer" id="::MediaServer">
82     <webidl>[NoInterfaceObject] interface MediaServer {
83             readonly attribute DOMString id;
84             readonly attribute DOMString friendlyName;
85             readonly attribute object root;
86                                             
87             void browse(DOMString containerId, DOMString sortMode, unsigned long count, unsigned long offset, <ref>MediaServerBrowseFindCallback</ref> successCallback, optional <ref>MediaServerErrorCallback</ref> errorCallback);
88                 void find(DOMString containerId, DOMString searchFilter, DOMString sortMode, unsigned long count, unsigned long offset, <ref>MediaServerBrowseFindCallback</ref> successCallback, optional <ref>MediaServerErrorCallback</ref> errorCallback);
89 };</webidl>
90     <ExtendedAttributeList>
91       <ExtendedAttribute name="NoInterfaceObject">
92         <webidl>NoInterfaceObject</webidl>
93       </ExtendedAttribute>
94     </ExtendedAttributeList>
95     <Attribute readonly="readonly" name="id" id="::MediaServer::id">
96       <webidl>            readonly attribute DOMString id;</webidl>
97       <Type type="DOMString"/>
98     </Attribute>
99     <Attribute readonly="readonly" name="friendlyName" id="::MediaServer::friendlyName">
100       <webidl>            readonly attribute DOMString friendlyName;</webidl>
101       <Type type="DOMString"/>
102     </Attribute>
103     <Attribute readonly="readonly" name="root" id="::MediaServer::root">
104       <webidl>            readonly attribute object root;</webidl>
105       <Type type="object"/>
106     </Attribute>
107     <Operation name="browse" id="::MediaServer::browse">
108       <webidl>            void browse(DOMString containerId, DOMString sortMode, unsigned long count, unsigned long offset, <ref>MediaServerBrowseFindCallback</ref> successCallback, optional <ref>MediaServerErrorCallback</ref> errorCallback);</webidl>
109       <Type type="void"/>
110       <ArgumentList>
111         <Argument name="containerId">
112           <Type type="DOMString"/>
113         </Argument>
114         <Argument name="sortMode">
115           <Type type="DOMString"/>
116         </Argument>
117         <Argument name="count">
118           <Type type="unsigned long"/>
119         </Argument>
120         <Argument name="offset">
121           <Type type="unsigned long"/>
122         </Argument>
123         <Argument name="successCallback">
124           <Type name="MediaServerBrowseFindCallback"/>
125         </Argument>
126         <Argument optional="optional" name="errorCallback">
127           <Type name="MediaServerErrorCallback"/>
128         </Argument>
129       </ArgumentList>
130     </Operation>
131     <Operation name="find" id="::MediaServer::find">
132       <webidl>                void find(DOMString containerId, DOMString searchFilter, DOMString sortMode, unsigned long count, unsigned long offset, <ref>MediaServerBrowseFindCallback</ref> successCallback, optional <ref>MediaServerErrorCallback</ref> errorCallback);</webidl>
133       <Type type="void"/>
134       <ArgumentList>
135         <Argument name="containerId">
136           <Type type="DOMString"/>
137         </Argument>
138         <Argument name="searchFilter">
139           <Type type="DOMString"/>
140         </Argument>
141         <Argument name="sortMode">
142           <Type type="DOMString"/>
143         </Argument>
144         <Argument name="count">
145           <Type type="unsigned long"/>
146         </Argument>
147         <Argument name="offset">
148           <Type type="unsigned long"/>
149         </Argument>
150         <Argument name="successCallback">
151           <Type name="MediaServerBrowseFindCallback"/>
152         </Argument>
153         <Argument optional="optional" name="errorCallback">
154           <Type name="MediaServerErrorCallback"/>
155         </Argument>
156       </ArgumentList>
157     </Operation>
158   </Interface>
159   <Interface name="MediaServerError" id="::MediaServerError">
160     <webidl>[NoInterfaceObject] interface MediaServerError {
161              const unsigned short GENERIC = 1;
162              attribute unsigned short code;
163                  attribute DOMString message;
164 };</webidl>
165     <ExtendedAttributeList>
166       <ExtendedAttribute name="NoInterfaceObject">
167         <webidl>NoInterfaceObject</webidl>
168       </ExtendedAttribute>
169     </ExtendedAttributeList>
170     <Const name="GENERIC" value="1" id="::MediaServerError::GENERIC">
171       <webidl>             const unsigned short GENERIC = 1;</webidl>
172       <Type type="unsigned short"/>
173     </Const>
174     <Attribute name="code" id="::MediaServerError::code">
175       <webidl>             attribute unsigned short code;</webidl>
176       <Type type="unsigned short"/>
177     </Attribute>
178     <Attribute name="message" id="::MediaServerError::message">
179       <webidl>                 attribute DOMString message;</webidl>
180       <Type type="DOMString"/>
181     </Attribute>
182   </Interface>
183   <Interface name="MediaServerFoundServerCallback" id="::MediaServerFoundServerCallback">
184     <webidl>[Callback=FunctionOnly, NoInterfaceObject] interface MediaServerFoundServerCallback {
185             void onsuccess(<ref>MediaServer</ref> value);
186 };</webidl>
187     <ExtendedAttributeList>
188       <ExtendedAttribute name="Callback" value="FunctionOnly">
189         <webidl>Callback</webidl>
190       </ExtendedAttribute>
191       <ExtendedAttribute name="NoInterfaceObject">
192         <webidl> NoInterfaceObject</webidl>
193       </ExtendedAttribute>
194     </ExtendedAttributeList>
195     <Operation name="onsuccess" id="::MediaServerFoundServerCallback::onsuccess">
196       <webidl>            void onsuccess(<ref>MediaServer</ref> value);</webidl>
197       <Type type="void"/>
198       <ArgumentList>
199         <Argument name="value">
200           <Type name="MediaServer"/>
201         </Argument>
202       </ArgumentList>
203     </Operation>
204   </Interface>
205   <Interface name="MediaServerBrowseFindCallback" id="::MediaServerBrowseFindCallback">
206     <webidl>[Callback=FunctionOnly, NoInterfaceObject] interface MediaServerBrowseFindCallback {
207     void onsuccess(sequence&lt; object > value);
208 };</webidl>
209     <ExtendedAttributeList>
210       <ExtendedAttribute name="Callback" value="FunctionOnly">
211         <webidl>Callback</webidl>
212       </ExtendedAttribute>
213       <ExtendedAttribute name="NoInterfaceObject">
214         <webidl> NoInterfaceObject</webidl>
215       </ExtendedAttribute>
216     </ExtendedAttributeList>
217     <Operation name="onsuccess" id="::MediaServerBrowseFindCallback::onsuccess">
218       <webidl>    void onsuccess(sequence&lt; object > value);</webidl>
219       <Type type="void"/>
220       <ArgumentList>
221         <Argument name="value">
222           <Type type="sequence">
223             <Type type="object"/>
224           </Type>
225         </Argument>
226       </ArgumentList>
227     </Operation>
228   </Interface>
229   <Interface name="MediaServerErrorCallback" id="::MediaServerErrorCallback">
230     <webidl>[Callback=FunctionOnly, NoInterfaceObject] interface MediaServerErrorCallback {
231     void onfailure(<ref>MediaServerError</ref> error);
232 };</webidl>
233     <ExtendedAttributeList>
234       <ExtendedAttribute name="Callback" value="FunctionOnly">
235         <webidl>Callback</webidl>
236       </ExtendedAttribute>
237       <ExtendedAttribute name="NoInterfaceObject">
238         <webidl> NoInterfaceObject</webidl>
239       </ExtendedAttribute>
240     </ExtendedAttributeList>
241     <Operation name="onfailure" id="::MediaServerErrorCallback::onfailure">
242       <webidl>    void onfailure(<ref>MediaServerError</ref> error);</webidl>
243       <Type type="void"/>
244       <ArgumentList>
245         <Argument name="error">
246           <Type name="MediaServerError"/>
247         </Argument>
248       </ArgumentList>
249     </Operation>
250   </Interface>
251 </Module>
252 <Module name="Locale" id="::Locale">
253   <webidl>  module Locale {
254   [NoInterfaceObject]
255 interface LocaleManagerObject {
256     readonly attribute <ref>Locale</ref> locale;
257 };
258
259 <ref>Tizen</ref> implements <ref>LocaleManagerObject</ref>;
260
261 callback LocaleChangedCallback = void (DOMString newLocale);
262
263
264 [NoInterfaceObject]
265 interface Locale  { 
266
267         void getLocale();
268         
269          void setLocale(DOMString newLocale);
270          
271          void localeChanged(<ref>LocaleChangedCallback</ref> cb);
272
273 };</webidl>
274   <Interface name="LocaleManagerObject" id="::LocaleManagerObject">
275     <webidl>[NoInterfaceObject]
276 interface LocaleManagerObject {
277     readonly attribute <ref>Locale</ref> locale;
278 };</webidl>
279     <descriptive>
280        <description>
281         <p>
282 Details. 
283         </p>
284         <p>
285 def-api-feature http://tizen.org/api/vehicle 
286 brief Allows access to the vehicle API
287         </p>
288        </description>
289     </descriptive>
290     <ExtendedAttributeList>
291       <ExtendedAttribute name="NoInterfaceObject">
292         <webidl>NoInterfaceObject</webidl>
293       </ExtendedAttribute>
294     </ExtendedAttributeList>
295     <Attribute readonly="readonly" name="locale" id="::LocaleManagerObject::locale">
296       <webidl>    readonly attribute <ref>Locale</ref> locale;</webidl>
297       <Type name="Locale"/>
298     </Attribute>
299   </Interface>
300   <Implements name1="Tizen" name2="LocaleManagerObject">
301     <webidl><ref>Tizen</ref> implements <ref>LocaleManagerObject</ref>;</webidl>
302   </Implements>
303   <Callback name="LocaleChangedCallback" id="::LocaleChangedCallback">
304     <webidl>callback LocaleChangedCallback = void (DOMString newLocale);</webidl>
305     <Type type="void"/>
306     <ArgumentList>
307       <Argument name="newLocale">
308         <Type type="DOMString"/>
309       </Argument>
310     </ArgumentList>
311   </Callback>
312   <Interface name="Locale" id="::Locale">
313     <webidl>[NoInterfaceObject]
314 interface Locale  { 
315
316         void getLocale();
317         
318          void setLocale(DOMString newLocale);
319          
320          void localeChanged(<ref>LocaleChangedCallback</ref> cb);
321
322 };</webidl>
323     <ExtendedAttributeList>
324       <ExtendedAttribute name="NoInterfaceObject">
325         <webidl>NoInterfaceObject</webidl>
326       </ExtendedAttribute>
327     </ExtendedAttributeList>
328     <Operation name="getLocale" id="::Locale::getLocale">
329       <webidl>        void getLocale();</webidl>
330       <descriptive>
331          <description>
332           <p>
333 brief gets the current locale
334 returns current locale in ISO 639-2 format (ie en_US for english US)
335           </p>
336          </description>
337       </descriptive>
338       <Type type="void"/>
339       <ArgumentList/>
340     </Operation>
341     <Operation name="setLocale" id="::Locale::setLocale">
342       <webidl>         void setLocale(DOMString newLocale);</webidl>
343       <descriptive>
344          <description>
345           <p>
346 brief sets the system locale
347 param newLocale locale to set in ISO 639-2 format
348           </p>
349          </description>
350       </descriptive>
351       <Type type="void"/>
352       <ArgumentList>
353         <Argument name="newLocale">
354           <Type type="DOMString"/>
355         </Argument>
356       </ArgumentList>
357     </Operation>
358     <Operation name="localeChanged" id="::Locale::localeChanged">
359       <webidl>         void localeChanged(<ref>LocaleChangedCallback</ref> cb);</webidl>
360       <descriptive>
361          <description>
362           <p>
363 brief subscribe to locale changes.
364 param cb callback to be called when this even occurs.
365           </p>
366          </description>
367       </descriptive>
368       <Type type="void"/>
369       <ArgumentList>
370         <Argument name="cb">
371           <Type name="LocaleChangedCallback"/>
372         </Argument>
373       </ArgumentList>
374     </Operation>
375   </Interface>
376 </Module>
377 <Module name="Vehicle" id="::Vehicle">
378   <webidl> module Vehicle {
379 [NoInterfaceObject]
380 interface VehicleManagerObject {
381     readonly attribute <ref>Vehicle</ref> vehicle;
382 };
383 <ref>Tizen</ref> implements <ref>VehicleManagerObject</ref>;
384
385
386 [NoInterfaceObject]
387 interface VehiclePropertyType: <ref>Event</ref> { 
388          attribute <ref>DOMTimeStamp</ref> time;
389          attribute short zone;
390          attribute DOMString source;
391 };
392
393 [NoInterfaceObject]
394 interface VehiclePropertyError   { 
395         const unsigned short PERMISSION_DENIED = 1; 
396         const unsigned short PROPERTY_UNAVAILABLE = 2; 
397         const unsigned short TIMEOUT = 3; 
398         const unsigned short UNKNOWN = 10;
399         
400          attribute unsigned short code;
401
402          attribute DOMString message;
403 };
404
405 callback VehiclePropertyCallback = void (<ref>VehiclePropertyType</ref> value); 
406
407 callback VehiclePropertyErrorCallback = void (<ref>VehiclePropertyError</ref> error); 
408
409 callback VehiclePropertyListCallback = void (sequence&lt;<ref>VehiclePropertyType</ref>> values); 
410
411 callback SupportedPropertiesCallback = void (sequence&lt;DOMString> properties);
412
413
414 [NoInterfaceObject]
415 interface Vehicle  { 
416
417         const unsigned short ZONE_None = 0;
418         const unsigned short ZONE_Front = 1;
419         const unsigned short ZONE_Middle = 0x10;
420         const unsigned short ZONE_Right = 0x100;
421         const unsigned short ZONE_Left = 0x1000;
422         const unsigned short ZONE_Rear = 0x10000;
423         const unsigned short ZONE_Center = 0x10000;
424
425         sequence&lt;DOMString> supported();
426
427         any get(DOMString objectType, optional short zone);
428
429
430         void subscribe(DOMString objectType, <ref>VehiclePropertyCallback</ref> successCallback, optional unsigned short zone, optional <ref>VehiclePropertyErrorCallback</ref> errorCallback);
431
432         void set(DOMString objectType, <ref>VehiclePropertyType</ref> value, optional <ref>VehiclePropertyErrorCallback</ref> errorCallback);
433
434         void getHistory(DOMString objectType, unsigned short zone, Date startTime, Date endTime, <ref>VehiclePropertyListCallback</ref> successCallback, optional <ref>VehiclePropertyErrorCallback</ref> errorCallback);
435
436         sequence&lt;unsigned short> listZones(DOMString objectType);
437 };
438
439 [NoInterfaceObject]
440 interface VehicleSpeed : <ref>VehiclePropertyType</ref>  { 
441
442          attribute unsigned long vehicleSpeed;
443 };
444
445 [NoInterfaceObject]
446 interface EngineSpeed : <ref>VehiclePropertyType</ref>  { 
447
448          attribute unsigned long engineSpeed;
449 };
450
451 [NoInterfaceObject]
452 interface VehiclePowerMode : <ref>VehiclePropertyType</ref>  { 
453         const unsigned short VEHICLEPOWERMODE_OFF = 0;
454         const unsigned short VEHICLEPOWERMODE_ACCESSORY1 = 1;
455         const unsigned short VEHICLEPOWERMODE_ACCESSORY2 = 2;
456         const unsigned short VEHICLEPOWERMODE_RUN = 3;
457
458          attribute octet vehiclePowerMode;
459 };
460
461 [NoInterfaceObject]
462 interface TripMeter : <ref>VehiclePropertyType</ref>  { 
463
464          attribute sequence&lt;unsigned long> tripMeters;
465 };
466
467 [NoInterfaceObject]
468 interface Acceleration : <ref>VehiclePropertyType</ref>  { 
469
470          attribute unsigned long x;
471
472          attribute unsigned long y;
473
474          attribute unsigned long z;
475 };
476
477 [NoInterfaceObject]
478 interface Transmission : <ref>VehiclePropertyType</ref>  { 
479         const unsigned short TRANSMISSIONPOSITION_NEUTRAL = 0;    
480         const unsigned short TRANSMISSIONPOSITION_FIRST = 1;    
481         const unsigned short TRANSMISSIONPOSITION_SECOND = 2;    
482         const unsigned short TRANSMISSIONPOSITION_THIRD = 3;    
483         const unsigned short TRANSMISSIONPOSITION_FORTH = 4;    
484         const unsigned short TRANSMISSIONPOSITION_FIFTH = 5;    
485         const unsigned short TRANSMISSIONPOSITION_SIXTH = 6;    
486         const unsigned short TRANSMISSIONPOSITION_SEVENTH = 7;    
487         const unsigned short TRANSMISSIONPOSITION_EIGHTH = 8;    
488         const unsigned short TRANSMISSIONPOSITION_NINTH = 9;    
489         const unsigned short TRANSMISSIONPOSITION_TENTH = 10;    
490         const unsigned short TRANSMISSIONPOSITION_CVT = 64;    
491         const unsigned short TRANSMISSIONPOSITION_REVERSE = 128;    
492         const unsigned short TRANSMISSIONPOSITION_PARK = 255;    
493         const unsigned short TRANSMISSIONMODE_NORMAL = 0;    
494         const unsigned short TRANSMISSIONMODE_SPORT = 1;    
495         const unsigned short TRANSMISSIONMODE_ECONOMY = 2;    
496         const unsigned short TRANSMISSIONMODE_OEMCUSTOM1 = 3;    
497         const unsigned short TRANSMISSIONMODE_OEMCUSTOM2 = 4;    
498
499          attribute octet gearPosition;
500
501          attribute octet mode;
502 };
503
504 [NoInterfaceObject]
505 interface CruiseControlStatus : <ref>VehiclePropertyType</ref>  { 
506
507          attribute boolean activated;
508
509          attribute unsigned short speed;
510 };
511
512 [NoInterfaceObject]
513 interface WheelBrake : <ref>VehiclePropertyType</ref>  { 
514
515          attribute boolean engaged;
516 };
517
518 [NoInterfaceObject]
519 interface LightStatus : <ref>VehiclePropertyType</ref>  { 
520
521          attribute boolean head;
522
523          attribute boolean rightTurn;
524
525          attribute boolean leftTurn;
526
527          attribute boolean brake;
528
529          attribute boolean fog;
530
531          attribute boolean hazard;
532
533          attribute boolean parking;
534
535          attribute boolean highBeam;
536 };
537
538 [NoInterfaceObject]
539 interface InteriorLightStatus : <ref>VehiclePropertyType</ref>  { 
540
541          attribute boolean passenger;
542
543          attribute boolean driver;
544
545          attribute boolean center;
546 };
547
548 [NoInterfaceObject]
549 interface Horn : <ref>VehiclePropertyType</ref>  { 
550
551          attribute boolean on;
552 };
553
554 [NoInterfaceObject]
555 interface Fuel : <ref>VehiclePropertyType</ref>  { 
556
557          attribute unsigned short level;
558
559          attribute unsigned short range;
560
561          attribute unsigned short instantConsumption;
562
563          attribute unsigned short instantEconomy;
564
565          attribute unsigned short averageEconomy;
566 };
567
568 [NoInterfaceObject]
569 interface EngineOil : <ref>VehiclePropertyType</ref>  { 
570
571          attribute unsigned short remaining;
572
573          attribute long temperature;
574
575          attribute unsigned short pressure;
576 };
577
578 [NoInterfaceObject]
579 interface Location : <ref>VehiclePropertyType</ref>  { 
580
581          attribute double latitude;
582
583          attribute double longitude;
584
585          attribute double altitude;
586
587          attribute unsigned short direction;
588 };
589
590 [NoInterfaceObject]
591 interface ExteriorBrightness : <ref>VehiclePropertyType</ref>  { 
592
593          attribute unsigned long exteriorBrightness;
594 };
595
596 [NoInterfaceObject]
597 interface Temperature : <ref>VehiclePropertyType</ref>  { 
598
599          attribute short interior;
600
601          attribute short exterior;
602 };
603
604 [NoInterfaceObject]
605 interface RainSensor : <ref>VehiclePropertyType</ref>  { 
606
607          attribute unsigned short rainSensor;
608 };
609
610 [NoInterfaceObject]
611 interface WindshieldWiper : <ref>VehiclePropertyType</ref>  { 
612         const unsigned short WIPERSPEED_OFF = 0;    
613         const unsigned short WIPERSPEED_SLOWEST= 1;    
614         const unsigned short WIPERSPEED_FASTEST = 5;    
615         const unsigned short WIPERSPEED_AUTO = 10;    
616
617          attribute unsigned short windshieldWiper;
618 };
619
620 dictionary DefrostDictionary {
621         unsigned short window;
622         boolean defrost;
623 };
624
625 [NoInterfaceObject]
626 interface HVAC : <ref>VehiclePropertyType</ref>  { 
627         const unsigned short AIRFLOWDIRECTION_FRONTPANEL = 0;
628         const unsigned short AIRFLOWDIRECTION_FLOORDUCT= 1;
629         const unsigned short AIRFLOWDIRECTION_FRONT = 0x02;
630         const unsigned short AIRFLOWDIRECTION_DEFROSTER = 0x04;
631
632         attribute unsigned short airflowDirection;
633
634         attribute unsigned short fanSpeed;
635
636         attribute unsigned short targetTemperature;
637
638         attribute boolean airConditioning;
639
640         attribute boolean airRecirculation;
641
642         attribute boolean heater;
643
644         attribute <ref>DefrostDictionary</ref> defrost;
645
646         attribute boolean steeringWheelHeater;
647
648         attribute boolean seatHeater;
649
650         attribute boolean seatCooler;
651 };
652
653 [NoInterfaceObject]
654 interface WindowStatus : <ref>VehiclePropertyType</ref>  { 
655         const unsigned short WINDOWLOCATION_DRIVER= 0;    
656         const unsigned short WINDOWLOCATION_PASSENGER = 1;    
657         const unsigned short WINDOWLOCATION_LEFTREAR = 2;    
658         const unsigned short WINDOWLOCATION_RIGHTREAR = 3;    
659         const unsigned short WINDOWLOCATION_REAR = 4;    
660
661         attribute object WindowStatus;
662 };
663
664 [NoInterfaceObject]
665 interface Sunroof : <ref>VehiclePropertyType</ref>  { 
666
667         attribute unsigned short openness;
668
669         attribute unsigned short tilt;
670 };
671
672 [NoInterfaceObject]
673 interface ConvertibleRoof : <ref>VehiclePropertyType</ref>  { 
674
675         attribute unsigned short openness;
676 };
677
678 [NoInterfaceObject]
679 interface VehicleId : <ref>VehiclePropertyType</ref>  { 
680
681          attribute DOMString WMI;
682
683          attribute DOMString VIN;
684 };
685
686 [NoInterfaceObject]
687 interface Size : <ref>VehiclePropertyType</ref>  { 
688
689          attribute unsigned long width;
690
691          attribute unsigned long height;
692
693          attribute unsigned long length;
694 };
695
696 [NoInterfaceObject]
697 interface FuelInfo : <ref>VehiclePropertyType</ref>  { 
698         const unsigned short FUELTYPE_GASOLINE = 0;    
699         const unsigned short FUELTYPE_HIGH_OCTANE= 1;    
700         const unsigned short FUELTYPE_DIESEL = 2;    
701         const unsigned short FUELTYPE_ELECTRIC = 3;    
702         const unsigned short FUELTYPE_HYDROGEN = 4;    
703         const unsigned short REFUELPOSITION_LEFT = 0;    
704         const unsigned short REFUELPOSITION_RIGHT= 1;    
705         const unsigned short REFUELPOSITION_FRONT = 2;    
706         const unsigned short REFUELPOSITION_REAR = 3;    
707
708          attribute unsigned short type;
709
710          attribute unsigned short refuelPosition;
711 };
712
713 [NoInterfaceObject]
714 interface VehicleType : <ref>VehiclePropertyType</ref>  { 
715         const unsigned short VEHICLETYPE_SEDAN = 0;    
716         const unsigned short VEHICLETYPE_COUPE= 1;    
717         const unsigned short VEHICLETYPE_CABRIOLE = 2;    
718         const unsigned short VEHICLETYPE_ROADSTER = 3;    
719         const unsigned short VEHICLETYPE_SUV = 4;    
720         const unsigned short VEHICLETYPE_TRUCK = 5;    
721
722          attribute unsigned short type;
723 };
724
725 [NoInterfaceObject]
726 interface Doors : <ref>VehiclePropertyType</ref>  { 
727
728          attribute sequence&lt;unsigned short> doorsPerRow;
729 };
730
731 [NoInterfaceObject]
732 interface TransmissionGearType : <ref>VehiclePropertyType</ref>  { 
733         const unsigned short TRANSMISSIONGEARTYPE_AUTO=0;    
734         const unsigned short TRANSMISSIONGEARTYPE_MANUAL=1;    
735         const unsigned short TRANSMISSIONGEARTYPE_CV=2;    
736
737          attribute unsigned short transmissionGearType;
738 };
739
740 [NoInterfaceObject]
741 interface WheelInformation : <ref>VehiclePropertyType</ref>  { 
742
743          attribute unsigned short frontWheelRadius;
744
745          attribute unsigned short rearWheelRadius;
746
747          attribute unsigned long wheelTrack;
748
749          attribute boolean ABS;
750 };
751
752 [NoInterfaceObject]
753 interface Odometer : <ref>VehiclePropertyType</ref>  { 
754
755          attribute unsigned long odometer;
756 };
757
758 [NoInterfaceObject]
759 interface Fluid : <ref>VehiclePropertyType</ref>  { 
760
761          attribute unsigned short transmission;
762
763          attribute unsigned short brake;
764
765          attribute unsigned short washer;
766 };
767
768 [NoInterfaceObject]
769 interface Battery : <ref>VehiclePropertyType</ref>  { 
770
771          attribute double voltage;
772
773          attribute double current;
774 };
775
776 [NoInterfaceObject]
777 interface TirePressure : <ref>VehiclePropertyType</ref>  { 
778
779          attribute double leftFront;
780
781          attribute double rightFront;
782
783          attribute double leftRear;
784
785          attribute double rightRear;
786 };
787
788 [NoInterfaceObject]
789 interface TireTemperature : <ref>VehiclePropertyType</ref>  { 
790
791          attribute double leftFront;
792
793          attribute double rightFront;
794
795          attribute double leftRear;
796
797          attribute double rightRear;
798 };
799
800 [NoInterfaceObject]
801 interface SecurityAlert : <ref>VehiclePropertyType</ref>  { 
802
803          attribute boolean securityAlert;
804 };
805
806 [NoInterfaceObject]
807 interface ParkingBrake : <ref>VehiclePropertyType</ref>  { 
808
809          attribute boolean parkingBrake;
810 };
811
812 [NoInterfaceObject]
813 interface ParkingLight : <ref>VehiclePropertyType</ref>  { 
814
815          attribute boolean parkingLight;
816 };
817
818 [NoInterfaceObject]
819 interface HazardLight : <ref>VehiclePropertyType</ref>  { 
820
821          attribute boolean hazardLight;
822 };
823
824 [NoInterfaceObject]
825 interface AntilockBrakingSystem : <ref>VehiclePropertyType</ref>  { 
826
827          attribute boolean antilockBrakingSystem;
828 };
829
830 [NoInterfaceObject]
831 interface TractionControlSystem : <ref>VehiclePropertyType</ref>  { 
832
833          attribute boolean tractionControlSystem;
834 };
835
836 [NoInterfaceObject]
837 interface VehicleTopSpeedLimit : <ref>VehiclePropertyType</ref>  { 
838
839          attribute unsigned short vehicleTopSpeedLimit;
840 };
841
842 [NoInterfaceObject]
843 interface AirbagStatus : <ref>VehiclePropertyType</ref>  { 
844         const unsigned short AIRBAGLOCATION_DRIVER = 0;    
845         const unsigned short AIRBAGLOCATION_PASSENGER= 1;    
846         const unsigned short AIRBAGLOCATION_LEFTSIDE = 2;    
847         const unsigned short AIRBAGLOCATION_RIGHTSIDE = 3;    
848         const unsigned short AIRBAGSTATUS_INACTIVE = 0;    
849         const unsigned short AIRBAGSTATUS_ACTIVE = 1;    
850         const unsigned short AIRBAGSTATUS_DEPLOYED = 2;    
851
852          attribute object airbagStatus;
853 };
854
855 [NoInterfaceObject]
856 interface DoorStatus : <ref>VehiclePropertyType</ref>  { 
857         const unsigned short DOORLOCATION_DRIVER= 0;    
858         const unsigned short DOORLOCATION_PASSENGER = 1;    
859         const unsigned short DOORLOCATION_LEFTREAR = 2;    
860         const unsigned short DOORLOCATION_RIGHTREAR = 3;    
861         const unsigned short DOORLOCATION_TRUNK = 4;    
862         const unsigned short DOORLOCATION_FUELCAP = 5;    
863         const unsigned short DOORLOCATION_HOOD = 6;    
864         const unsigned short DOORSTATUS_CLOSED = 0;    
865         const unsigned short DOORSTATUS_OPEN = 1;    
866         const unsigned short DOORSTATUS_AJAR = 2;    
867
868          attribute object doorStatus;
869
870          attribute object doorLockStatus;
871
872          attribute boolean childLockStatus;
873 };
874
875 [NoInterfaceObject]
876 interface SeatBeltStatus : <ref>VehiclePropertyType</ref>  { 
877         const unsigned short SEATBELTLOCATION_DRIVER= 0;    
878         const unsigned short SEATBELTLOCATION_MIDDLEFRONT = 1;    
879         const unsigned short SEATBELTLOCATION_PASSENGER = 2;    
880         const unsigned short SEATBELTLOCATION_LEFTREAR = 3;    
881         const unsigned short SEATBELTLOCATION_MIDDLEREAR = 4;    
882         const unsigned short SEATBELTLOCATION_RIGHTREAR = 5;    
883
884          attribute object seatBeltStatus;
885 };
886
887 [NoInterfaceObject]
888 interface OccupantStatus : <ref>VehiclePropertyType</ref>  { 
889         const unsigned short OCCUPANTLOCATION_DRIVER = 0;    
890         const unsigned short OCCUPANTLOCATION_FRONTMIDDLE = 1;    
891         const unsigned short OCCUPANTLOCATION_PASSENGER= 2;    
892         const unsigned short OCCUPANTLOCATION_LEFTREAR = 3;    
893         const unsigned short OCCUPANTLOCATION_MIDDLEREAR = 4;    
894         const unsigned short OCCUPANTLOCATION_RIGHTREAR = 5;    
895         const unsigned short OCCUPANTSTATUS_VACANT = 0;    
896         const unsigned short OCCUPANTSTATUS_CHILD = 1;    
897         const unsigned short OCCUPANTSTATUS_ADULT = 2;    
898
899          attribute object occupantStatus;
900 };
901
902 [NoInterfaceObject]
903 interface ObstacleDistance : <ref>VehiclePropertyType</ref>  { 
904         const unsigned short DISTANCESENSORLOCATION_LEFTFRONT = 0;    
905         const unsigned short DISTANCESENSORLOCATION_RIGHTFRONT = 1;    
906         const unsigned short DISTANCESENSORLOCATION_LEFTREAR = 2;    
907         const unsigned short DISTANCESENSORLOCATION_RIGHTREAR = 3;    
908         const unsigned short DISTANCESENSORLOCATION_LEFTBLINDSPOT = 4;    
909         const unsigned short DISTANCESENSORLOCATION_RIGHTBLINDSPOT = 5;    
910
911          attribute object obstacleDistance;
912 };
913 };</webidl>
914   <Interface name="VehicleManagerObject" id="::VehicleManagerObject">
915     <webidl>[NoInterfaceObject]
916 interface VehicleManagerObject {
917     readonly attribute <ref>Vehicle</ref> vehicle;
918 };</webidl>
919     <descriptive>
920        <description>
921         <p>
922 Details. 
923         </p>
924        </description>
925         <def-api-feature identifier="http://tizen.org/api/vehicle">
926           <descriptive>
927            <description>
928             <p>
929  
930             </p>
931            </description>
932             <brief>
933  Allows access to the vehicle API
934             </brief>
935           </descriptive>
936         </def-api-feature>
937     </descriptive>
938     <ExtendedAttributeList>
939       <ExtendedAttribute name="NoInterfaceObject">
940         <webidl>NoInterfaceObject</webidl>
941       </ExtendedAttribute>
942     </ExtendedAttributeList>
943     <Attribute readonly="readonly" name="vehicle" id="::VehicleManagerObject::vehicle">
944       <webidl>    readonly attribute <ref>Vehicle</ref> vehicle;</webidl>
945       <Type name="Vehicle"/>
946     </Attribute>
947   </Interface>
948   <Implements name1="Tizen" name2="VehicleManagerObject">
949     <webidl><ref>Tizen</ref> implements <ref>VehicleManagerObject</ref>;</webidl>
950   </Implements>
951   <Interface name="VehiclePropertyType" id="::VehiclePropertyType">
952     <webidl>[NoInterfaceObject]
953 interface VehiclePropertyType: <ref>Event</ref> { 
954          attribute <ref>DOMTimeStamp</ref> time;
955          attribute short zone;
956          attribute DOMString source;
957 };</webidl>
958     <ExtendedAttributeList>
959       <ExtendedAttribute name="NoInterfaceObject">
960         <webidl>NoInterfaceObject</webidl>
961       </ExtendedAttribute>
962     </ExtendedAttributeList>
963     <InterfaceInheritance>
964       <Name name="Event"/>
965     </InterfaceInheritance>
966     <Attribute name="time" id="::VehiclePropertyType::time">
967       <webidl>         attribute <ref>DOMTimeStamp</ref> time;</webidl>
968       <descriptive>
969          <description>
970           <p>
971 Time
972           </p>
973          </description>
974           <brief>
975  time at which the vehicle generated the property
976           </brief>
977       </descriptive>
978       <Type name="DOMTimeStamp"/>
979     </Attribute>
980     <Attribute name="zone" id="::VehiclePropertyType::zone">
981       <webidl>         attribute short zone;</webidl>
982       <Type type="short"/>
983     </Attribute>
984     <Attribute name="source" id="::VehiclePropertyType::source">
985       <webidl>         attribute DOMString source;</webidl>
986       <Type type="DOMString"/>
987     </Attribute>
988   </Interface>
989   <Interface name="VehiclePropertyError" id="::VehiclePropertyError">
990     <webidl>[NoInterfaceObject]
991 interface VehiclePropertyError   { 
992         const unsigned short PERMISSION_DENIED = 1; 
993         const unsigned short PROPERTY_UNAVAILABLE = 2; 
994         const unsigned short TIMEOUT = 3; 
995         const unsigned short UNKNOWN = 10;
996         
997          attribute unsigned short code;
998
999          attribute DOMString message;
1000 };</webidl>
1001     <ExtendedAttributeList>
1002       <ExtendedAttribute name="NoInterfaceObject">
1003         <webidl>NoInterfaceObject</webidl>
1004       </ExtendedAttribute>
1005     </ExtendedAttributeList>
1006     <Const name="PERMISSION_DENIED" value="1" id="::VehiclePropertyError::PERMISSION_DENIED">
1007       <webidl>        const unsigned short PERMISSION_DENIED = 1;</webidl>
1008       <Type type="unsigned short"/>
1009     </Const>
1010     <Const name="PROPERTY_UNAVAILABLE" value="2" id="::VehiclePropertyError::PROPERTY_UNAVAILABLE">
1011       <webidl>        const unsigned short PROPERTY_UNAVAILABLE = 2;</webidl>
1012       <Type type="unsigned short"/>
1013     </Const>
1014     <Const name="TIMEOUT" value="3" id="::VehiclePropertyError::TIMEOUT">
1015       <webidl>        const unsigned short TIMEOUT = 3;</webidl>
1016       <Type type="unsigned short"/>
1017     </Const>
1018     <Const name="UNKNOWN" value="10" id="::VehiclePropertyError::UNKNOWN">
1019       <webidl>        const unsigned short UNKNOWN = 10;</webidl>
1020       <Type type="unsigned short"/>
1021     </Const>
1022     <Attribute name="code" id="::VehiclePropertyError::code">
1023       <webidl>         attribute unsigned short code;</webidl>
1024       <descriptive>
1025          <description>
1026           <p>
1027 code
1028 MUST return error code. 
1029           </p>
1030          </description>
1031       </descriptive>
1032       <Type type="unsigned short"/>
1033     </Attribute>
1034     <Attribute name="message" id="::VehiclePropertyError::message">
1035       <webidl>         attribute DOMString message;</webidl>
1036       <descriptive>
1037          <description>
1038           <p>
1039 message
1040 MUST return error message 
1041           </p>
1042          </description>
1043       </descriptive>
1044       <Type type="DOMString"/>
1045     </Attribute>
1046   </Interface>
1047   <Callback name="VehiclePropertyCallback" id="::VehiclePropertyCallback">
1048     <webidl>callback VehiclePropertyCallback = void (<ref>VehiclePropertyType</ref> value);</webidl>
1049     <Type type="void"/>
1050     <ArgumentList>
1051       <Argument name="value">
1052         <Type name="VehiclePropertyType"/>
1053       </Argument>
1054     </ArgumentList>
1055   </Callback>
1056   <Callback name="VehiclePropertyErrorCallback" id="::VehiclePropertyErrorCallback">
1057     <webidl>callback VehiclePropertyErrorCallback = void (<ref>VehiclePropertyError</ref> error);</webidl>
1058     <Type type="void"/>
1059     <ArgumentList>
1060       <Argument name="error">
1061         <Type name="VehiclePropertyError"/>
1062       </Argument>
1063     </ArgumentList>
1064   </Callback>
1065   <Callback name="VehiclePropertyListCallback" id="::VehiclePropertyListCallback">
1066     <webidl>callback VehiclePropertyListCallback = void (sequence&lt;<ref>VehiclePropertyType</ref>> values);</webidl>
1067     <Type type="void"/>
1068     <ArgumentList>
1069       <Argument name="values">
1070         <Type type="sequence">
1071           <Type name="VehiclePropertyType"/>
1072         </Type>
1073       </Argument>
1074     </ArgumentList>
1075   </Callback>
1076   <Callback name="SupportedPropertiesCallback" id="::SupportedPropertiesCallback">
1077     <webidl>callback SupportedPropertiesCallback = void (sequence&lt;DOMString> properties);</webidl>
1078     <Type type="void"/>
1079     <ArgumentList>
1080       <Argument name="properties">
1081         <Type type="sequence">
1082           <Type type="DOMString"/>
1083         </Type>
1084       </Argument>
1085     </ArgumentList>
1086   </Callback>
1087   <Interface name="Vehicle" id="::Vehicle">
1088     <webidl>[NoInterfaceObject]
1089 interface Vehicle  { 
1090
1091         const unsigned short ZONE_None = 0;
1092         const unsigned short ZONE_Front = 1;
1093         const unsigned short ZONE_Middle = 0x10;
1094         const unsigned short ZONE_Right = 0x100;
1095         const unsigned short ZONE_Left = 0x1000;
1096         const unsigned short ZONE_Rear = 0x10000;
1097         const unsigned short ZONE_Center = 0x10000;
1098
1099         sequence&lt;DOMString> supported();
1100
1101         any get(DOMString objectType, optional short zone);
1102
1103
1104         void subscribe(DOMString objectType, <ref>VehiclePropertyCallback</ref> successCallback, optional unsigned short zone, optional <ref>VehiclePropertyErrorCallback</ref> errorCallback);
1105
1106         void set(DOMString objectType, <ref>VehiclePropertyType</ref> value, optional <ref>VehiclePropertyErrorCallback</ref> errorCallback);
1107
1108         void getHistory(DOMString objectType, unsigned short zone, Date startTime, Date endTime, <ref>VehiclePropertyListCallback</ref> successCallback, optional <ref>VehiclePropertyErrorCallback</ref> errorCallback);
1109
1110         sequence&lt;unsigned short> listZones(DOMString objectType);
1111 };</webidl>
1112     <ExtendedAttributeList>
1113       <ExtendedAttribute name="NoInterfaceObject">
1114         <webidl>NoInterfaceObject</webidl>
1115       </ExtendedAttribute>
1116     </ExtendedAttributeList>
1117     <Const name="ZONE_None" value="0" id="::Vehicle::ZONE_None">
1118       <webidl>        const unsigned short ZONE_None = 0;</webidl>
1119       <Type type="unsigned short"/>
1120     </Const>
1121     <Const name="ZONE_Front" value="1" id="::Vehicle::ZONE_Front">
1122       <webidl>        const unsigned short ZONE_Front = 1;</webidl>
1123       <Type type="unsigned short"/>
1124     </Const>
1125     <Const name="ZONE_Middle" value="0x10" id="::Vehicle::ZONE_Middle">
1126       <webidl>        const unsigned short ZONE_Middle = 0x10;</webidl>
1127       <Type type="unsigned short"/>
1128     </Const>
1129     <Const name="ZONE_Right" value="0x100" id="::Vehicle::ZONE_Right">
1130       <webidl>        const unsigned short ZONE_Right = 0x100;</webidl>
1131       <Type type="unsigned short"/>
1132     </Const>
1133     <Const name="ZONE_Left" value="0x1000" id="::Vehicle::ZONE_Left">
1134       <webidl>        const unsigned short ZONE_Left = 0x1000;</webidl>
1135       <Type type="unsigned short"/>
1136     </Const>
1137     <Const name="ZONE_Rear" value="0x10000" id="::Vehicle::ZONE_Rear">
1138       <webidl>        const unsigned short ZONE_Rear = 0x10000;</webidl>
1139       <Type type="unsigned short"/>
1140     </Const>
1141     <Const name="ZONE_Center" value="0x10000" id="::Vehicle::ZONE_Center">
1142       <webidl>        const unsigned short ZONE_Center = 0x10000;</webidl>
1143       <Type type="unsigned short"/>
1144     </Const>
1145     <Operation name="supported" id="::Vehicle::supported">
1146       <webidl>        sequence&lt;DOMString> supported();</webidl>
1147       <descriptive>
1148           <brief>
1149  returns supported object types
1150           </brief>
1151       </descriptive>
1152       <Type type="sequence">
1153         <Type type="DOMString"/>
1154       </Type>
1155       <ArgumentList/>
1156     </Operation>
1157     <Operation name="get" id="::Vehicle::get">
1158       <webidl>        any get(DOMString objectType, optional short zone);</webidl>
1159       <descriptive>
1160           <brief>
1161  fetch the current value for 'objectType'.  
1162           </brief>
1163       </descriptive>
1164       <Type type="any">
1165         <descriptive>
1166             <description><p>
1167  object representing the requested 'objectType'
1168             </p></description>
1169         </descriptive>
1170       </Type>
1171       <ArgumentList>
1172         <Argument name="objectType">
1173           <descriptive>
1174               <description><p>
1175  is the requested property to be retrieved.
1176               </p></description>
1177           </descriptive>
1178           <Type type="DOMString"/>
1179         </Argument>
1180         <Argument optional="optional" name="zone">
1181           <descriptive>
1182               <description><p>
1183  specify the zone in which this object type is in
1184               </p></description>
1185           </descriptive>
1186           <Type type="short"/>
1187         </Argument>
1188       </ArgumentList>
1189     </Operation>
1190     <Operation name="subscribe" id="::Vehicle::subscribe">
1191       <webidl>        void subscribe(DOMString objectType, <ref>VehiclePropertyCallback</ref> successCallback, optional unsigned short zone, optional <ref>VehiclePropertyErrorCallback</ref> errorCallback);</webidl>
1192       <descriptive>
1193           <brief>
1194  subscribe to the given property and get callbacks when it changes
1195           </brief>
1196       </descriptive>
1197       <Type type="void"/>
1198       <ArgumentList>
1199         <Argument name="objectType">
1200           <descriptive>
1201               <description><p>
1202  property to set
1203               </p></description>
1204           </descriptive>
1205           <Type type="DOMString"/>
1206         </Argument>
1207         <Argument name="successCallback">
1208           <descriptive>
1209               <description><p>
1210  callback will be called when the &quot;objectType&quot; changes
1211               </p></description>
1212           </descriptive>
1213           <Type name="VehiclePropertyCallback"/>
1214         </Argument>
1215         <Argument optional="optional" name="zone">
1216           <Type type="unsigned short"/>
1217         </Argument>
1218         <Argument optional="optional" name="errorCallback">
1219           <descriptive>
1220               <description><p>
1221  callback if error has been called.
1222               </p></description>
1223           </descriptive>
1224           <Type name="VehiclePropertyErrorCallback"/>
1225         </Argument>
1226       </ArgumentList>
1227     </Operation>
1228     <Operation name="set" id="::Vehicle::set">
1229       <webidl>        void set(DOMString objectType, <ref>VehiclePropertyType</ref> value, optional <ref>VehiclePropertyErrorCallback</ref> errorCallback);</webidl>
1230       <descriptive>
1231           <brief>
1232  set the given objectType to value
1233           </brief>
1234       </descriptive>
1235       <Type type="void"/>
1236       <ArgumentList>
1237         <Argument name="objectType">
1238           <descriptive>
1239               <description><p>
1240  object type to set
1241               </p></description>
1242           </descriptive>
1243           <Type type="DOMString"/>
1244         </Argument>
1245         <Argument name="value">
1246           <descriptive>
1247               <description><p>
1248  value to set, should contain zone information ie &quot;zone&quot; : 0
1249               </p></description>
1250           </descriptive>
1251           <Type name="VehiclePropertyType"/>
1252         </Argument>
1253         <Argument optional="optional" name="errorCallback">
1254           <descriptive>
1255               <description><p>
1256  callback if error has been called.
1257               </p></description>
1258           </descriptive>
1259           <Type name="VehiclePropertyErrorCallback"/>
1260         </Argument>
1261       </ArgumentList>
1262     </Operation>
1263     <Operation name="getHistory" id="::Vehicle::getHistory">
1264       <webidl>        void getHistory(DOMString objectType, unsigned short zone, Date startTime, Date endTime, <ref>VehiclePropertyListCallback</ref> successCallback, optional <ref>VehiclePropertyErrorCallback</ref> errorCallback);</webidl>
1265       <descriptive>
1266           <brief>
1267  get values for a given objectType within a certain past time period between 'startTime' and 'endTime'
1268           </brief>
1269       </descriptive>
1270       <Type type="void"/>
1271       <ArgumentList>
1272         <Argument name="objectType">
1273           <descriptive>
1274               <description><p>
1275  object type to request
1276               </p></description>
1277           </descriptive>
1278           <Type type="DOMString"/>
1279         </Argument>
1280         <Argument name="zone">
1281           <descriptive>
1282               <description><p>
1283  in which the objectType is located or 0 if no zone.
1284               </p></description>
1285           </descriptive>
1286           <Type type="unsigned short"/>
1287         </Argument>
1288         <Argument name="startTime">
1289           <descriptive>
1290               <description><p>
1291  starting period of time.
1292               </p></description>
1293           </descriptive>
1294           <Type type="Date"/>
1295         </Argument>
1296         <Argument name="endTime">
1297           <descriptive>
1298               <description><p>
1299  ending period of time.
1300               </p></description>
1301           </descriptive>
1302           <Type type="Date"/>
1303         </Argument>
1304         <Argument name="successCallback">
1305           <descriptive>
1306               <description><p>
1307  Callback with the result of the method call
1308               </p></description>
1309           </descriptive>
1310           <Type name="VehiclePropertyListCallback"/>
1311         </Argument>
1312         <Argument optional="optional" name="errorCallback">
1313           <descriptive>
1314               <description><p>
1315  Callback if an error has occurred.
1316               </p></description>
1317           </descriptive>
1318           <Type name="VehiclePropertyErrorCallback"/>
1319         </Argument>
1320       </ArgumentList>
1321     </Operation>
1322     <Operation name="listZones" id="::Vehicle::listZones">
1323       <webidl>        sequence&lt;unsigned short> listZones(DOMString objectType);</webidl>
1324       <Type type="sequence">
1325         <Type type="unsigned short"/>
1326       </Type>
1327       <ArgumentList>
1328         <Argument name="objectType">
1329           <Type type="DOMString"/>
1330         </Argument>
1331       </ArgumentList>
1332     </Operation>
1333   </Interface>
1334   <Interface name="VehicleSpeed" id="::VehicleSpeed">
1335     <webidl>[NoInterfaceObject]
1336 interface VehicleSpeed : <ref>VehiclePropertyType</ref>  { 
1337
1338          attribute unsigned long vehicleSpeed;
1339 };</webidl>
1340     <ExtendedAttributeList>
1341       <ExtendedAttribute name="NoInterfaceObject">
1342         <webidl>NoInterfaceObject</webidl>
1343       </ExtendedAttribute>
1344     </ExtendedAttributeList>
1345     <InterfaceInheritance>
1346       <Name name="VehiclePropertyType"/>
1347     </InterfaceInheritance>
1348     <Attribute name="vehicleSpeed" id="::VehicleSpeed::vehicleSpeed">
1349       <webidl>         attribute unsigned long vehicleSpeed;</webidl>
1350       <descriptive>
1351          <description>
1352           <p>
1353 VehicleSpeed
1354           </p>
1355          </description>
1356           <brief>
1357   Must return Vehicle Speed in kilometers per hour.
1358           </brief>
1359       </descriptive>
1360       <Type type="unsigned long"/>
1361     </Attribute>
1362   </Interface>
1363   <Interface name="EngineSpeed" id="::EngineSpeed">
1364     <webidl>[NoInterfaceObject]
1365 interface EngineSpeed : <ref>VehiclePropertyType</ref>  { 
1366
1367          attribute unsigned long engineSpeed;
1368 };</webidl>
1369     <ExtendedAttributeList>
1370       <ExtendedAttribute name="NoInterfaceObject">
1371         <webidl>NoInterfaceObject</webidl>
1372       </ExtendedAttribute>
1373     </ExtendedAttributeList>
1374     <InterfaceInheritance>
1375       <Name name="VehiclePropertyType"/>
1376     </InterfaceInheritance>
1377     <Attribute name="engineSpeed" id="::EngineSpeed::engineSpeed">
1378       <webidl>         attribute unsigned long engineSpeed;</webidl>
1379       <descriptive>
1380          <description>
1381           <p>
1382 EngineSpeed
1383           </p>
1384          </description>
1385           <brief>
1386   Must return Engine Speed in rotations per minute.
1387           </brief>
1388       </descriptive>
1389       <Type type="unsigned long"/>
1390     </Attribute>
1391   </Interface>
1392   <Interface name="VehiclePowerMode" id="::VehiclePowerMode">
1393     <webidl>[NoInterfaceObject]
1394 interface VehiclePowerMode : <ref>VehiclePropertyType</ref>  { 
1395         const unsigned short VEHICLEPOWERMODE_OFF = 0;
1396         const unsigned short VEHICLEPOWERMODE_ACCESSORY1 = 1;
1397         const unsigned short VEHICLEPOWERMODE_ACCESSORY2 = 2;
1398         const unsigned short VEHICLEPOWERMODE_RUN = 3;
1399
1400          attribute octet vehiclePowerMode;
1401 };</webidl>
1402     <ExtendedAttributeList>
1403       <ExtendedAttribute name="NoInterfaceObject">
1404         <webidl>NoInterfaceObject</webidl>
1405       </ExtendedAttribute>
1406     </ExtendedAttributeList>
1407     <InterfaceInheritance>
1408       <Name name="VehiclePropertyType"/>
1409     </InterfaceInheritance>
1410     <Const name="VEHICLEPOWERMODE_OFF" value="0" id="::VehiclePowerMode::VEHICLEPOWERMODE_OFF">
1411       <webidl>        const unsigned short VEHICLEPOWERMODE_OFF = 0;</webidl>
1412       <Type type="unsigned short"/>
1413     </Const>
1414     <Const name="VEHICLEPOWERMODE_ACCESSORY1" value="1" id="::VehiclePowerMode::VEHICLEPOWERMODE_ACCESSORY1">
1415       <webidl>        const unsigned short VEHICLEPOWERMODE_ACCESSORY1 = 1;</webidl>
1416       <Type type="unsigned short"/>
1417     </Const>
1418     <Const name="VEHICLEPOWERMODE_ACCESSORY2" value="2" id="::VehiclePowerMode::VEHICLEPOWERMODE_ACCESSORY2">
1419       <webidl>        const unsigned short VEHICLEPOWERMODE_ACCESSORY2 = 2;</webidl>
1420       <Type type="unsigned short"/>
1421     </Const>
1422     <Const name="VEHICLEPOWERMODE_RUN" value="3" id="::VehiclePowerMode::VEHICLEPOWERMODE_RUN">
1423       <webidl>        const unsigned short VEHICLEPOWERMODE_RUN = 3;</webidl>
1424       <Type type="unsigned short"/>
1425     </Const>
1426     <Attribute name="vehiclePowerMode" id="::VehiclePowerMode::vehiclePowerMode">
1427       <webidl>         attribute octet vehiclePowerMode;</webidl>
1428       <descriptive>
1429          <description>
1430           <p>
1431 VehiclePowerMode
1432           </p>
1433          </description>
1434           <brief>
1435   Must return Vehicle Power mode (see VEHICLEPOWERMODE)    
1436           </brief>
1437       </descriptive>
1438       <Type type="octet"/>
1439     </Attribute>
1440   </Interface>
1441   <Interface name="TripMeter" id="::TripMeter">
1442     <webidl>[NoInterfaceObject]
1443 interface TripMeter : <ref>VehiclePropertyType</ref>  { 
1444
1445          attribute sequence&lt;unsigned long> tripMeters;
1446 };</webidl>
1447     <ExtendedAttributeList>
1448       <ExtendedAttribute name="NoInterfaceObject">
1449         <webidl>NoInterfaceObject</webidl>
1450       </ExtendedAttribute>
1451     </ExtendedAttributeList>
1452     <InterfaceInheritance>
1453       <Name name="VehiclePropertyType"/>
1454     </InterfaceInheritance>
1455     <Attribute name="tripMeters" id="::TripMeter::tripMeters">
1456       <webidl>         attribute sequence&lt;unsigned long> tripMeters;</webidl>
1457       <descriptive>
1458          <description>
1459           <p>
1460 TripMeters
1461           </p>
1462          </description>
1463           <brief>
1464   Must return trip meters.  Changing any items in the array will reset the item's value to '0'.
1465           </brief>
1466       </descriptive>
1467       <Type type="sequence">
1468         <Type type="unsigned long"/>
1469       </Type>
1470     </Attribute>
1471   </Interface>
1472   <Interface name="Acceleration" id="::Acceleration">
1473     <webidl>[NoInterfaceObject]
1474 interface Acceleration : <ref>VehiclePropertyType</ref>  { 
1475
1476          attribute unsigned long x;
1477
1478          attribute unsigned long y;
1479
1480          attribute unsigned long z;
1481 };</webidl>
1482     <ExtendedAttributeList>
1483       <ExtendedAttribute name="NoInterfaceObject">
1484         <webidl>NoInterfaceObject</webidl>
1485       </ExtendedAttribute>
1486     </ExtendedAttributeList>
1487     <InterfaceInheritance>
1488       <Name name="VehiclePropertyType"/>
1489     </InterfaceInheritance>
1490     <Attribute name="x" id="::Acceleration::x">
1491       <webidl>         attribute unsigned long x;</webidl>
1492       <descriptive>
1493          <description>
1494           <p>
1495 X
1496           </p>
1497          </description>
1498           <brief>
1499   Must return acceleration on the &quot;X&quot; axis as 1/1000 G (gravitational force).    
1500           </brief>
1501       </descriptive>
1502       <Type type="unsigned long"/>
1503     </Attribute>
1504     <Attribute name="y" id="::Acceleration::y">
1505       <webidl>         attribute unsigned long y;</webidl>
1506       <descriptive>
1507          <description>
1508           <p>
1509 Y
1510           </p>
1511          </description>
1512           <brief>
1513   Must return acceleration on the &quot;Y&quot; axis as 1/1000 G (gravitational force).    
1514           </brief>
1515       </descriptive>
1516       <Type type="unsigned long"/>
1517     </Attribute>
1518     <Attribute name="z" id="::Acceleration::z">
1519       <webidl>         attribute unsigned long z;</webidl>
1520       <descriptive>
1521          <description>
1522           <p>
1523 Z
1524           </p>
1525          </description>
1526           <brief>
1527   Must return acceleration on the &quot;Z&quot; axis as 1/1000 G (gravitational force).    
1528           </brief>
1529       </descriptive>
1530       <Type type="unsigned long"/>
1531     </Attribute>
1532   </Interface>
1533   <Interface name="Transmission" id="::Transmission">
1534     <webidl>[NoInterfaceObject]
1535 interface Transmission : <ref>VehiclePropertyType</ref>  { 
1536         const unsigned short TRANSMISSIONPOSITION_NEUTRAL = 0;    
1537         const unsigned short TRANSMISSIONPOSITION_FIRST = 1;    
1538         const unsigned short TRANSMISSIONPOSITION_SECOND = 2;    
1539         const unsigned short TRANSMISSIONPOSITION_THIRD = 3;    
1540         const unsigned short TRANSMISSIONPOSITION_FORTH = 4;    
1541         const unsigned short TRANSMISSIONPOSITION_FIFTH = 5;    
1542         const unsigned short TRANSMISSIONPOSITION_SIXTH = 6;    
1543         const unsigned short TRANSMISSIONPOSITION_SEVENTH = 7;    
1544         const unsigned short TRANSMISSIONPOSITION_EIGHTH = 8;    
1545         const unsigned short TRANSMISSIONPOSITION_NINTH = 9;    
1546         const unsigned short TRANSMISSIONPOSITION_TENTH = 10;    
1547         const unsigned short TRANSMISSIONPOSITION_CVT = 64;    
1548         const unsigned short TRANSMISSIONPOSITION_REVERSE = 128;    
1549         const unsigned short TRANSMISSIONPOSITION_PARK = 255;    
1550         const unsigned short TRANSMISSIONMODE_NORMAL = 0;    
1551         const unsigned short TRANSMISSIONMODE_SPORT = 1;    
1552         const unsigned short TRANSMISSIONMODE_ECONOMY = 2;    
1553         const unsigned short TRANSMISSIONMODE_OEMCUSTOM1 = 3;    
1554         const unsigned short TRANSMISSIONMODE_OEMCUSTOM2 = 4;    
1555
1556          attribute octet gearPosition;
1557
1558          attribute octet mode;
1559 };</webidl>
1560     <ExtendedAttributeList>
1561       <ExtendedAttribute name="NoInterfaceObject">
1562         <webidl>NoInterfaceObject</webidl>
1563       </ExtendedAttribute>
1564     </ExtendedAttributeList>
1565     <InterfaceInheritance>
1566       <Name name="VehiclePropertyType"/>
1567     </InterfaceInheritance>
1568     <Const name="TRANSMISSIONPOSITION_NEUTRAL" value="0" id="::Transmission::TRANSMISSIONPOSITION_NEUTRAL">
1569       <webidl>        const unsigned short TRANSMISSIONPOSITION_NEUTRAL = 0;</webidl>
1570       <Type type="unsigned short"/>
1571     </Const>
1572     <Const name="TRANSMISSIONPOSITION_FIRST" value="1" id="::Transmission::TRANSMISSIONPOSITION_FIRST">
1573       <webidl>        const unsigned short TRANSMISSIONPOSITION_FIRST = 1;</webidl>
1574       <Type type="unsigned short"/>
1575     </Const>
1576     <Const name="TRANSMISSIONPOSITION_SECOND" value="2" id="::Transmission::TRANSMISSIONPOSITION_SECOND">
1577       <webidl>        const unsigned short TRANSMISSIONPOSITION_SECOND = 2;</webidl>
1578       <Type type="unsigned short"/>
1579     </Const>
1580     <Const name="TRANSMISSIONPOSITION_THIRD" value="3" id="::Transmission::TRANSMISSIONPOSITION_THIRD">
1581       <webidl>        const unsigned short TRANSMISSIONPOSITION_THIRD = 3;</webidl>
1582       <Type type="unsigned short"/>
1583     </Const>
1584     <Const name="TRANSMISSIONPOSITION_FORTH" value="4" id="::Transmission::TRANSMISSIONPOSITION_FORTH">
1585       <webidl>        const unsigned short TRANSMISSIONPOSITION_FORTH = 4;</webidl>
1586       <Type type="unsigned short"/>
1587     </Const>
1588     <Const name="TRANSMISSIONPOSITION_FIFTH" value="5" id="::Transmission::TRANSMISSIONPOSITION_FIFTH">
1589       <webidl>        const unsigned short TRANSMISSIONPOSITION_FIFTH = 5;</webidl>
1590       <Type type="unsigned short"/>
1591     </Const>
1592     <Const name="TRANSMISSIONPOSITION_SIXTH" value="6" id="::Transmission::TRANSMISSIONPOSITION_SIXTH">
1593       <webidl>        const unsigned short TRANSMISSIONPOSITION_SIXTH = 6;</webidl>
1594       <Type type="unsigned short"/>
1595     </Const>
1596     <Const name="TRANSMISSIONPOSITION_SEVENTH" value="7" id="::Transmission::TRANSMISSIONPOSITION_SEVENTH">
1597       <webidl>        const unsigned short TRANSMISSIONPOSITION_SEVENTH = 7;</webidl>
1598       <Type type="unsigned short"/>
1599     </Const>
1600     <Const name="TRANSMISSIONPOSITION_EIGHTH" value="8" id="::Transmission::TRANSMISSIONPOSITION_EIGHTH">
1601       <webidl>        const unsigned short TRANSMISSIONPOSITION_EIGHTH = 8;</webidl>
1602       <Type type="unsigned short"/>
1603     </Const>
1604     <Const name="TRANSMISSIONPOSITION_NINTH" value="9" id="::Transmission::TRANSMISSIONPOSITION_NINTH">
1605       <webidl>        const unsigned short TRANSMISSIONPOSITION_NINTH = 9;</webidl>
1606       <Type type="unsigned short"/>
1607     </Const>
1608     <Const name="TRANSMISSIONPOSITION_TENTH" value="10" id="::Transmission::TRANSMISSIONPOSITION_TENTH">
1609       <webidl>        const unsigned short TRANSMISSIONPOSITION_TENTH = 10;</webidl>
1610       <Type type="unsigned short"/>
1611     </Const>
1612     <Const name="TRANSMISSIONPOSITION_CVT" value="64" id="::Transmission::TRANSMISSIONPOSITION_CVT">
1613       <webidl>        const unsigned short TRANSMISSIONPOSITION_CVT = 64;</webidl>
1614       <Type type="unsigned short"/>
1615     </Const>
1616     <Const name="TRANSMISSIONPOSITION_REVERSE" value="128" id="::Transmission::TRANSMISSIONPOSITION_REVERSE">
1617       <webidl>        const unsigned short TRANSMISSIONPOSITION_REVERSE = 128;</webidl>
1618       <Type type="unsigned short"/>
1619     </Const>
1620     <Const name="TRANSMISSIONPOSITION_PARK" value="255" id="::Transmission::TRANSMISSIONPOSITION_PARK">
1621       <webidl>        const unsigned short TRANSMISSIONPOSITION_PARK = 255;</webidl>
1622       <Type type="unsigned short"/>
1623     </Const>
1624     <Const name="TRANSMISSIONMODE_NORMAL" value="0" id="::Transmission::TRANSMISSIONMODE_NORMAL">
1625       <webidl>        const unsigned short TRANSMISSIONMODE_NORMAL = 0;</webidl>
1626       <Type type="unsigned short"/>
1627     </Const>
1628     <Const name="TRANSMISSIONMODE_SPORT" value="1" id="::Transmission::TRANSMISSIONMODE_SPORT">
1629       <webidl>        const unsigned short TRANSMISSIONMODE_SPORT = 1;</webidl>
1630       <Type type="unsigned short"/>
1631     </Const>
1632     <Const name="TRANSMISSIONMODE_ECONOMY" value="2" id="::Transmission::TRANSMISSIONMODE_ECONOMY">
1633       <webidl>        const unsigned short TRANSMISSIONMODE_ECONOMY = 2;</webidl>
1634       <Type type="unsigned short"/>
1635     </Const>
1636     <Const name="TRANSMISSIONMODE_OEMCUSTOM1" value="3" id="::Transmission::TRANSMISSIONMODE_OEMCUSTOM1">
1637       <webidl>        const unsigned short TRANSMISSIONMODE_OEMCUSTOM1 = 3;</webidl>
1638       <Type type="unsigned short"/>
1639     </Const>
1640     <Const name="TRANSMISSIONMODE_OEMCUSTOM2" value="4" id="::Transmission::TRANSMISSIONMODE_OEMCUSTOM2">
1641       <webidl>        const unsigned short TRANSMISSIONMODE_OEMCUSTOM2 = 4;</webidl>
1642       <Type type="unsigned short"/>
1643     </Const>
1644     <Attribute name="gearPosition" id="::Transmission::gearPosition">
1645       <webidl>         attribute octet gearPosition;</webidl>
1646       <descriptive>
1647          <description>
1648           <p>
1649 GearPosition
1650           </p>
1651          </description>
1652           <brief>
1653   Must return transmission gear position (see TRANSMISSIONPOSITION)    
1654           </brief>
1655       </descriptive>
1656       <Type type="octet"/>
1657     </Attribute>
1658     <Attribute name="mode" id="::Transmission::mode">
1659       <webidl>         attribute octet mode;</webidl>
1660       <descriptive>
1661          <description>
1662           <p>
1663 Mode
1664           </p>
1665          </description>
1666           <brief>
1667   Must return transmission Mode (see 
1668           </brief>
1669       </descriptive>
1670       <Type type="octet"/>
1671     </Attribute>
1672   </Interface>
1673   <Interface name="CruiseControlStatus" id="::CruiseControlStatus">
1674     <webidl>[NoInterfaceObject]
1675 interface CruiseControlStatus : <ref>VehiclePropertyType</ref>  { 
1676
1677          attribute boolean activated;
1678
1679          attribute unsigned short speed;
1680 };</webidl>
1681     <ExtendedAttributeList>
1682       <ExtendedAttribute name="NoInterfaceObject">
1683         <webidl>NoInterfaceObject</webidl>
1684       </ExtendedAttribute>
1685     </ExtendedAttributeList>
1686     <InterfaceInheritance>
1687       <Name name="VehiclePropertyType"/>
1688     </InterfaceInheritance>
1689     <Attribute name="activated" id="::CruiseControlStatus::activated">
1690       <webidl>         attribute boolean activated;</webidl>
1691       <descriptive>
1692          <description>
1693           <p>
1694 Activated
1695           </p>
1696          </description>
1697           <brief>
1698   Must return whether or not the Cruise Control system is active (true) or inactive (false)    
1699           </brief>
1700       </descriptive>
1701       <Type type="boolean"/>
1702     </Attribute>
1703     <Attribute name="speed" id="::CruiseControlStatus::speed">
1704       <webidl>         attribute unsigned short speed;</webidl>
1705       <descriptive>
1706          <description>
1707           <p>
1708 Speed
1709           </p>
1710          </description>
1711           <brief>
1712   Must return target Cruise Control speed in kilometers per hour (kph).    
1713           </brief>
1714       </descriptive>
1715       <Type type="unsigned short"/>
1716     </Attribute>
1717   </Interface>
1718   <Interface name="WheelBrake" id="::WheelBrake">
1719     <webidl>[NoInterfaceObject]
1720 interface WheelBrake : <ref>VehiclePropertyType</ref>  { 
1721
1722          attribute boolean engaged;
1723 };</webidl>
1724     <ExtendedAttributeList>
1725       <ExtendedAttribute name="NoInterfaceObject">
1726         <webidl>NoInterfaceObject</webidl>
1727       </ExtendedAttribute>
1728     </ExtendedAttributeList>
1729     <InterfaceInheritance>
1730       <Name name="VehiclePropertyType"/>
1731     </InterfaceInheritance>
1732     <Attribute name="engaged" id="::WheelBrake::engaged">
1733       <webidl>         attribute boolean engaged;</webidl>
1734       <descriptive>
1735          <description>
1736           <p>
1737 Engaged
1738           </p>
1739          </description>
1740           <brief>
1741   Must return Wheel Brake status: Engaged = true, disengaged = false    
1742           </brief>
1743       </descriptive>
1744       <Type type="boolean"/>
1745     </Attribute>
1746   </Interface>
1747   <Interface name="LightStatus" id="::LightStatus">
1748     <webidl>[NoInterfaceObject]
1749 interface LightStatus : <ref>VehiclePropertyType</ref>  { 
1750
1751          attribute boolean head;
1752
1753          attribute boolean rightTurn;
1754
1755          attribute boolean leftTurn;
1756
1757          attribute boolean brake;
1758
1759          attribute boolean fog;
1760
1761          attribute boolean hazard;
1762
1763          attribute boolean parking;
1764
1765          attribute boolean highBeam;
1766 };</webidl>
1767     <ExtendedAttributeList>
1768       <ExtendedAttribute name="NoInterfaceObject">
1769         <webidl>NoInterfaceObject</webidl>
1770       </ExtendedAttribute>
1771     </ExtendedAttributeList>
1772     <InterfaceInheritance>
1773       <Name name="VehiclePropertyType"/>
1774     </InterfaceInheritance>
1775     <Attribute name="head" id="::LightStatus::head">
1776       <webidl>         attribute boolean head;</webidl>
1777       <descriptive>
1778          <description>
1779           <p>
1780 Head
1781           </p>
1782          </description>
1783           <brief>
1784   Must return headlight status: on = true, off = false.    
1785           </brief>
1786       </descriptive>
1787       <Type type="boolean"/>
1788     </Attribute>
1789     <Attribute name="rightTurn" id="::LightStatus::rightTurn">
1790       <webidl>         attribute boolean rightTurn;</webidl>
1791       <descriptive>
1792          <description>
1793           <p>
1794 RightTurn
1795           </p>
1796          </description>
1797           <brief>
1798   Must return right turn signal status: on = true, off = false.    
1799           </brief>
1800       </descriptive>
1801       <Type type="boolean"/>
1802     </Attribute>
1803     <Attribute name="leftTurn" id="::LightStatus::leftTurn">
1804       <webidl>         attribute boolean leftTurn;</webidl>
1805       <descriptive>
1806          <description>
1807           <p>
1808 LeftTurn
1809           </p>
1810          </description>
1811           <brief>
1812   Must return left turn signal status: on = true, off = false.    
1813           </brief>
1814       </descriptive>
1815       <Type type="boolean"/>
1816     </Attribute>
1817     <Attribute name="brake" id="::LightStatus::brake">
1818       <webidl>         attribute boolean brake;</webidl>
1819       <descriptive>
1820          <description>
1821           <p>
1822 Brake
1823           </p>
1824          </description>
1825           <brief>
1826   Must return  brake signal light status: on = true, off = false.    
1827           </brief>
1828       </descriptive>
1829       <Type type="boolean"/>
1830     </Attribute>
1831     <Attribute name="fog" id="::LightStatus::fog">
1832       <webidl>         attribute boolean fog;</webidl>
1833       <descriptive>
1834          <description>
1835           <p>
1836 Fog
1837           </p>
1838          </description>
1839           <brief>
1840   Must return fog light status: on = true, off = false.    
1841           </brief>
1842       </descriptive>
1843       <Type type="boolean"/>
1844     </Attribute>
1845     <Attribute name="hazard" id="::LightStatus::hazard">
1846       <webidl>         attribute boolean hazard;</webidl>
1847       <descriptive>
1848          <description>
1849           <p>
1850 Hazard
1851           </p>
1852          </description>
1853           <brief>
1854   Must return hazard light status: on = true, off = false.    
1855           </brief>
1856       </descriptive>
1857       <Type type="boolean"/>
1858     </Attribute>
1859     <Attribute name="parking" id="::LightStatus::parking">
1860       <webidl>         attribute boolean parking;</webidl>
1861       <descriptive>
1862          <description>
1863           <p>
1864 Parking
1865           </p>
1866          </description>
1867           <brief>
1868   Must return parking light status: on = true, off = false.    
1869           </brief>
1870       </descriptive>
1871       <Type type="boolean"/>
1872     </Attribute>
1873     <Attribute name="highBeam" id="::LightStatus::highBeam">
1874       <webidl>         attribute boolean highBeam;</webidl>
1875       <descriptive>
1876          <description>
1877           <p>
1878 HighBeam
1879           </p>
1880          </description>
1881           <brief>
1882   Must return high beam status: on = true, off = false.    
1883           </brief>
1884       </descriptive>
1885       <Type type="boolean"/>
1886     </Attribute>
1887   </Interface>
1888   <Interface name="InteriorLightStatus" id="::InteriorLightStatus">
1889     <webidl>[NoInterfaceObject]
1890 interface InteriorLightStatus : <ref>VehiclePropertyType</ref>  { 
1891
1892          attribute boolean passenger;
1893
1894          attribute boolean driver;
1895
1896          attribute boolean center;
1897 };</webidl>
1898     <ExtendedAttributeList>
1899       <ExtendedAttribute name="NoInterfaceObject">
1900         <webidl>NoInterfaceObject</webidl>
1901       </ExtendedAttribute>
1902     </ExtendedAttributeList>
1903     <InterfaceInheritance>
1904       <Name name="VehiclePropertyType"/>
1905     </InterfaceInheritance>
1906     <Attribute name="passenger" id="::InteriorLightStatus::passenger">
1907       <webidl>         attribute boolean passenger;</webidl>
1908       <descriptive>
1909          <description>
1910           <p>
1911 Passenger
1912           </p>
1913          </description>
1914           <brief>
1915   Must return passenger interior light status: on = true, off = false    
1916           </brief>
1917       </descriptive>
1918       <Type type="boolean"/>
1919     </Attribute>
1920     <Attribute name="driver" id="::InteriorLightStatus::driver">
1921       <webidl>         attribute boolean driver;</webidl>
1922       <descriptive>
1923          <description>
1924           <p>
1925 Driver
1926           </p>
1927          </description>
1928           <brief>
1929   Must return driver interior light status: on = true, off = false    
1930           </brief>
1931       </descriptive>
1932       <Type type="boolean"/>
1933     </Attribute>
1934     <Attribute name="center" id="::InteriorLightStatus::center">
1935       <webidl>         attribute boolean center;</webidl>
1936       <descriptive>
1937          <description>
1938           <p>
1939 Center
1940           </p>
1941          </description>
1942           <brief>
1943   Must return center interior light status: on = true, off = false    
1944           </brief>
1945       </descriptive>
1946       <Type type="boolean"/>
1947     </Attribute>
1948   </Interface>
1949   <Interface name="Horn" id="::Horn">
1950     <webidl>[NoInterfaceObject]
1951 interface Horn : <ref>VehiclePropertyType</ref>  { 
1952
1953          attribute boolean on;
1954 };</webidl>
1955     <ExtendedAttributeList>
1956       <ExtendedAttribute name="NoInterfaceObject">
1957         <webidl>NoInterfaceObject</webidl>
1958       </ExtendedAttribute>
1959     </ExtendedAttributeList>
1960     <InterfaceInheritance>
1961       <Name name="VehiclePropertyType"/>
1962     </InterfaceInheritance>
1963     <Attribute name="on" id="::Horn::on">
1964       <webidl>         attribute boolean on;</webidl>
1965       <descriptive>
1966          <description>
1967           <p>
1968 On
1969           </p>
1970          </description>
1971           <brief>
1972   Must return horn status: on = true, off = false    
1973           </brief>
1974       </descriptive>
1975       <Type type="boolean"/>
1976     </Attribute>
1977   </Interface>
1978   <Interface name="Fuel" id="::Fuel">
1979     <webidl>[NoInterfaceObject]
1980 interface Fuel : <ref>VehiclePropertyType</ref>  { 
1981
1982          attribute unsigned short level;
1983
1984          attribute unsigned short range;
1985
1986          attribute unsigned short instantConsumption;
1987
1988          attribute unsigned short instantEconomy;
1989
1990          attribute unsigned short averageEconomy;
1991 };</webidl>
1992     <ExtendedAttributeList>
1993       <ExtendedAttribute name="NoInterfaceObject">
1994         <webidl>NoInterfaceObject</webidl>
1995       </ExtendedAttribute>
1996     </ExtendedAttributeList>
1997     <InterfaceInheritance>
1998       <Name name="VehiclePropertyType"/>
1999     </InterfaceInheritance>
2000     <Attribute name="level" id="::Fuel::level">
2001       <webidl>         attribute unsigned short level;</webidl>
2002       <descriptive>
2003          <description>
2004           <p>
2005 Level
2006           </p>
2007          </description>
2008           <brief>
2009   Must return fuel level as a percentage of fullness.    
2010           </brief>
2011       </descriptive>
2012       <Type type="unsigned short"/>
2013     </Attribute>
2014     <Attribute name="range" id="::Fuel::range">
2015       <webidl>         attribute unsigned short range;</webidl>
2016       <descriptive>
2017          <description>
2018           <p>
2019 Range
2020           </p>
2021          </description>
2022           <brief>
2023   Must return estimated fuel range in kilometers.    
2024           </brief>
2025       </descriptive>
2026       <Type type="unsigned short"/>
2027     </Attribute>
2028     <Attribute name="instantConsumption" id="::Fuel::instantConsumption">
2029       <webidl>         attribute unsigned short instantConsumption;</webidl>
2030       <descriptive>
2031          <description>
2032           <p>
2033 InstantConsumption
2034           </p>
2035          </description>
2036           <brief>
2037   Must return instant fuel consumption in milliliters of fuel per second.    
2038           </brief>
2039       </descriptive>
2040       <Type type="unsigned short"/>
2041     </Attribute>
2042     <Attribute name="instantEconomy" id="::Fuel::instantEconomy">
2043       <webidl>         attribute unsigned short instantEconomy;</webidl>
2044       <descriptive>
2045          <description>
2046           <p>
2047 InstantEconomy
2048           </p>
2049          </description>
2050           <brief>
2051   Must return instant fuel 'economy' in kilometers per liter of fuel.    
2052           </brief>
2053       </descriptive>
2054       <Type type="unsigned short"/>
2055     </Attribute>
2056     <Attribute name="averageEconomy" id="::Fuel::averageEconomy">
2057       <webidl>         attribute unsigned short averageEconomy;</webidl>
2058       <descriptive>
2059          <description>
2060           <p>
2061 AverageEconomy
2062           </p>
2063          </description>
2064           <brief>
2065   Must return average fuel 'economy' in kilometers per liter of fuel since last reset.  Setting this to any value should reset the counter to '0'    
2066           </brief>
2067       </descriptive>
2068       <Type type="unsigned short"/>
2069     </Attribute>
2070   </Interface>
2071   <Interface name="EngineOil" id="::EngineOil">
2072     <webidl>[NoInterfaceObject]
2073 interface EngineOil : <ref>VehiclePropertyType</ref>  { 
2074
2075          attribute unsigned short remaining;
2076
2077          attribute long temperature;
2078
2079          attribute unsigned short pressure;
2080 };</webidl>
2081     <ExtendedAttributeList>
2082       <ExtendedAttribute name="NoInterfaceObject">
2083         <webidl>NoInterfaceObject</webidl>
2084       </ExtendedAttribute>
2085     </ExtendedAttributeList>
2086     <InterfaceInheritance>
2087       <Name name="VehiclePropertyType"/>
2088     </InterfaceInheritance>
2089     <Attribute name="remaining" id="::EngineOil::remaining">
2090       <webidl>         attribute unsigned short remaining;</webidl>
2091       <descriptive>
2092          <description>
2093           <p>
2094 Remaining
2095           </p>
2096          </description>
2097           <brief>
2098   Must return remaining engine oil as percentage of fullness.    
2099           </brief>
2100       </descriptive>
2101       <Type type="unsigned short"/>
2102     </Attribute>
2103     <Attribute name="temperature" id="::EngineOil::temperature">
2104       <webidl>         attribute long temperature;</webidl>
2105       <descriptive>
2106          <description>
2107           <p>
2108 Temperature
2109           </p>
2110          </description>
2111           <brief>
2112   Must return Engine Oil Temperature in Celcius.    
2113           </brief>
2114       </descriptive>
2115       <Type type="long"/>
2116     </Attribute>
2117     <Attribute name="pressure" id="::EngineOil::pressure">
2118       <webidl>         attribute unsigned short pressure;</webidl>
2119       <descriptive>
2120          <description>
2121           <p>
2122 Pressure
2123           </p>
2124          </description>
2125           <brief>
2126   Must return Engine Oil Pressure in kPa.    
2127           </brief>
2128       </descriptive>
2129       <Type type="unsigned short"/>
2130     </Attribute>
2131   </Interface>
2132   <Interface name="Location" id="::Location">
2133     <webidl>[NoInterfaceObject]
2134 interface Location : <ref>VehiclePropertyType</ref>  { 
2135
2136          attribute double latitude;
2137
2138          attribute double longitude;
2139
2140          attribute double altitude;
2141
2142          attribute unsigned short direction;
2143 };</webidl>
2144     <ExtendedAttributeList>
2145       <ExtendedAttribute name="NoInterfaceObject">
2146         <webidl>NoInterfaceObject</webidl>
2147       </ExtendedAttribute>
2148     </ExtendedAttributeList>
2149     <InterfaceInheritance>
2150       <Name name="VehiclePropertyType"/>
2151     </InterfaceInheritance>
2152     <Attribute name="latitude" id="::Location::latitude">
2153       <webidl>         attribute double latitude;</webidl>
2154       <descriptive>
2155          <description>
2156           <p>
2157 Latitude
2158           </p>
2159          </description>
2160           <brief>
2161   Must return latitude in Deg.Min (-180, +180)    
2162           </brief>
2163       </descriptive>
2164       <Type type="double"/>
2165     </Attribute>
2166     <Attribute name="longitude" id="::Location::longitude">
2167       <webidl>         attribute double longitude;</webidl>
2168       <descriptive>
2169          <description>
2170           <p>
2171 Longitude
2172           </p>
2173          </description>
2174           <brief>
2175   Must return longitude in Deg.Min (-90, +90)    
2176           </brief>
2177       </descriptive>
2178       <Type type="double"/>
2179     </Attribute>
2180     <Attribute name="altitude" id="::Location::altitude">
2181       <webidl>         attribute double altitude;</webidl>
2182       <descriptive>
2183          <description>
2184           <p>
2185 Altitude
2186           </p>
2187          </description>
2188           <brief>
2189   Must return altitude in meters above sea-level (0).    
2190           </brief>
2191       </descriptive>
2192       <Type type="double"/>
2193     </Attribute>
2194     <Attribute name="direction" id="::Location::direction">
2195       <webidl>         attribute unsigned short direction;</webidl>
2196       <descriptive>
2197          <description>
2198           <p>
2199 Direction
2200           </p>
2201          </description>
2202           <brief>
2203   Must return direction in Degrees  (0-360)    
2204           </brief>
2205       </descriptive>
2206       <Type type="unsigned short"/>
2207     </Attribute>
2208   </Interface>
2209   <Interface name="ExteriorBrightness" id="::ExteriorBrightness">
2210     <webidl>[NoInterfaceObject]
2211 interface ExteriorBrightness : <ref>VehiclePropertyType</ref>  { 
2212
2213          attribute unsigned long exteriorBrightness;
2214 };</webidl>
2215     <ExtendedAttributeList>
2216       <ExtendedAttribute name="NoInterfaceObject">
2217         <webidl>NoInterfaceObject</webidl>
2218       </ExtendedAttribute>
2219     </ExtendedAttributeList>
2220     <InterfaceInheritance>
2221       <Name name="VehiclePropertyType"/>
2222     </InterfaceInheritance>
2223     <Attribute name="exteriorBrightness" id="::ExteriorBrightness::exteriorBrightness">
2224       <webidl>         attribute unsigned long exteriorBrightness;</webidl>
2225       <descriptive>
2226          <description>
2227           <p>
2228 ExteriorBrightness
2229           </p>
2230          </description>
2231           <brief>
2232  Must return the brightness outside the vehicle in lux.    
2233           </brief>
2234       </descriptive>
2235       <Type type="unsigned long"/>
2236     </Attribute>
2237   </Interface>
2238   <Interface name="Temperature" id="::Temperature">
2239     <webidl>[NoInterfaceObject]
2240 interface Temperature : <ref>VehiclePropertyType</ref>  { 
2241
2242          attribute short interior;
2243
2244          attribute short exterior;
2245 };</webidl>
2246     <ExtendedAttributeList>
2247       <ExtendedAttribute name="NoInterfaceObject">
2248         <webidl>NoInterfaceObject</webidl>
2249       </ExtendedAttribute>
2250     </ExtendedAttributeList>
2251     <InterfaceInheritance>
2252       <Name name="VehiclePropertyType"/>
2253     </InterfaceInheritance>
2254     <Attribute name="interior" id="::Temperature::interior">
2255       <webidl>         attribute short interior;</webidl>
2256       <descriptive>
2257          <description>
2258           <p>
2259 Interior
2260           </p>
2261          </description>
2262           <brief>
2263  Must return the temperature of the interior of the vehicle in celcius.    
2264           </brief>
2265       </descriptive>
2266       <Type type="short"/>
2267     </Attribute>
2268     <Attribute name="exterior" id="::Temperature::exterior">
2269       <webidl>         attribute short exterior;</webidl>
2270       <descriptive>
2271          <description>
2272           <p>
2273 Exterior
2274           </p>
2275          </description>
2276           <brief>
2277  Must return the temperature of the exterior of the vehicle in celcius.    
2278           </brief>
2279       </descriptive>
2280       <Type type="short"/>
2281     </Attribute>
2282   </Interface>
2283   <Interface name="RainSensor" id="::RainSensor">
2284     <webidl>[NoInterfaceObject]
2285 interface RainSensor : <ref>VehiclePropertyType</ref>  { 
2286
2287          attribute unsigned short rainSensor;
2288 };</webidl>
2289     <ExtendedAttributeList>
2290       <ExtendedAttribute name="NoInterfaceObject">
2291         <webidl>NoInterfaceObject</webidl>
2292       </ExtendedAttribute>
2293     </ExtendedAttributeList>
2294     <InterfaceInheritance>
2295       <Name name="VehiclePropertyType"/>
2296     </InterfaceInheritance>
2297     <Attribute name="rainSensor" id="::RainSensor::rainSensor">
2298       <webidl>         attribute unsigned short rainSensor;</webidl>
2299       <descriptive>
2300          <description>
2301           <p>
2302 RainSensor
2303           </p>
2304          </description>
2305           <brief>
2306  Must return level of rain intensity 0: No Rain - 10: Heaviest Rain.    
2307           </brief>
2308       </descriptive>
2309       <Type type="unsigned short"/>
2310     </Attribute>
2311   </Interface>
2312   <Interface name="WindshieldWiper" id="::WindshieldWiper">
2313     <webidl>[NoInterfaceObject]
2314 interface WindshieldWiper : <ref>VehiclePropertyType</ref>  { 
2315         const unsigned short WIPERSPEED_OFF = 0;    
2316         const unsigned short WIPERSPEED_SLOWEST= 1;    
2317         const unsigned short WIPERSPEED_FASTEST = 5;    
2318         const unsigned short WIPERSPEED_AUTO = 10;    
2319
2320          attribute unsigned short windshieldWiper;
2321 };</webidl>
2322     <ExtendedAttributeList>
2323       <ExtendedAttribute name="NoInterfaceObject">
2324         <webidl>NoInterfaceObject</webidl>
2325       </ExtendedAttribute>
2326     </ExtendedAttributeList>
2327     <InterfaceInheritance>
2328       <Name name="VehiclePropertyType"/>
2329     </InterfaceInheritance>
2330     <Const name="WIPERSPEED_OFF" value="0" id="::WindshieldWiper::WIPERSPEED_OFF">
2331       <webidl>        const unsigned short WIPERSPEED_OFF = 0;</webidl>
2332       <Type type="unsigned short"/>
2333     </Const>
2334     <Const name="WIPERSPEED_SLOWEST" value="1" id="::WindshieldWiper::WIPERSPEED_SLOWEST">
2335       <webidl>        const unsigned short WIPERSPEED_SLOWEST= 1;</webidl>
2336       <Type type="unsigned short"/>
2337     </Const>
2338     <Const name="WIPERSPEED_FASTEST" value="5" id="::WindshieldWiper::WIPERSPEED_FASTEST">
2339       <webidl>        const unsigned short WIPERSPEED_FASTEST = 5;</webidl>
2340       <Type type="unsigned short"/>
2341     </Const>
2342     <Const name="WIPERSPEED_AUTO" value="10" id="::WindshieldWiper::WIPERSPEED_AUTO">
2343       <webidl>        const unsigned short WIPERSPEED_AUTO = 10;</webidl>
2344       <Type type="unsigned short"/>
2345     </Const>
2346     <Attribute name="windshieldWiper" id="::WindshieldWiper::windshieldWiper">
2347       <webidl>         attribute unsigned short windshieldWiper;</webidl>
2348       <descriptive>
2349          <description>
2350           <p>
2351 WindshieldWiper
2352           </p>
2353          </description>
2354           <brief>
2355  Must return Level of windshield whiper speed (see WIPERSPEED)    
2356           </brief>
2357       </descriptive>
2358       <Type type="unsigned short"/>
2359     </Attribute>
2360   </Interface>
2361   <Dictionary name="DefrostDictionary" id="::DefrostDictionary">
2362     <webidl>dictionary DefrostDictionary {
2363         unsigned short window;
2364         boolean defrost;
2365 };</webidl>
2366     <DictionaryMember name="window" id="::DefrostDictionary::window">
2367       <webidl>        unsigned short window;</webidl>
2368       <Type type="unsigned short"/>
2369     </DictionaryMember>
2370     <DictionaryMember name="defrost" id="::DefrostDictionary::defrost">
2371       <webidl>        boolean defrost;</webidl>
2372       <Type type="boolean"/>
2373     </DictionaryMember>
2374   </Dictionary>
2375   <Interface name="HVAC" id="::HVAC">
2376     <webidl>[NoInterfaceObject]
2377 interface HVAC : <ref>VehiclePropertyType</ref>  { 
2378         const unsigned short AIRFLOWDIRECTION_FRONTPANEL = 0;
2379         const unsigned short AIRFLOWDIRECTION_FLOORDUCT= 1;
2380         const unsigned short AIRFLOWDIRECTION_FRONT = 0x02;
2381         const unsigned short AIRFLOWDIRECTION_DEFROSTER = 0x04;
2382
2383         attribute unsigned short airflowDirection;
2384
2385         attribute unsigned short fanSpeed;
2386
2387         attribute unsigned short targetTemperature;
2388
2389         attribute boolean airConditioning;
2390
2391         attribute boolean airRecirculation;
2392
2393         attribute boolean heater;
2394
2395         attribute <ref>DefrostDictionary</ref> defrost;
2396
2397         attribute boolean steeringWheelHeater;
2398
2399         attribute boolean seatHeater;
2400
2401         attribute boolean seatCooler;
2402 };</webidl>
2403     <ExtendedAttributeList>
2404       <ExtendedAttribute name="NoInterfaceObject">
2405         <webidl>NoInterfaceObject</webidl>
2406       </ExtendedAttribute>
2407     </ExtendedAttributeList>
2408     <InterfaceInheritance>
2409       <Name name="VehiclePropertyType"/>
2410     </InterfaceInheritance>
2411     <Const name="AIRFLOWDIRECTION_FRONTPANEL" value="0" id="::HVAC::AIRFLOWDIRECTION_FRONTPANEL">
2412       <webidl>        const unsigned short AIRFLOWDIRECTION_FRONTPANEL = 0;</webidl>
2413       <Type type="unsigned short"/>
2414     </Const>
2415     <Const name="AIRFLOWDIRECTION_FLOORDUCT" value="1" id="::HVAC::AIRFLOWDIRECTION_FLOORDUCT">
2416       <webidl>        const unsigned short AIRFLOWDIRECTION_FLOORDUCT= 1;</webidl>
2417       <Type type="unsigned short"/>
2418     </Const>
2419     <Const name="AIRFLOWDIRECTION_FRONT" value="0x02" id="::HVAC::AIRFLOWDIRECTION_FRONT">
2420       <webidl>        const unsigned short AIRFLOWDIRECTION_FRONT = 0x02;</webidl>
2421       <Type type="unsigned short"/>
2422     </Const>
2423     <Const name="AIRFLOWDIRECTION_DEFROSTER" value="0x04" id="::HVAC::AIRFLOWDIRECTION_DEFROSTER">
2424       <webidl>        const unsigned short AIRFLOWDIRECTION_DEFROSTER = 0x04;</webidl>
2425       <Type type="unsigned short"/>
2426     </Const>
2427     <Attribute name="airflowDirection" id="::HVAC::airflowDirection">
2428       <webidl>        attribute unsigned short airflowDirection;</webidl>
2429       <descriptive>
2430          <description>
2431           <p>
2432 AirflowDirection
2433           </p>
2434          </description>
2435           <brief>
2436  Must return airflow direction.  See 
2437           </brief>
2438       </descriptive>
2439       <Type type="unsigned short"/>
2440     </Attribute>
2441     <Attribute name="fanSpeed" id="::HVAC::fanSpeed">
2442       <webidl>        attribute unsigned short fanSpeed;</webidl>
2443       <descriptive>
2444          <description>
2445           <p>
2446 FanSpeed
2447           </p>
2448          </description>
2449           <brief>
2450  Must return speed of the fan (0-7)    
2451           </brief>
2452       </descriptive>
2453       <Type type="unsigned short"/>
2454     </Attribute>
2455     <Attribute name="targetTemperature" id="::HVAC::targetTemperature">
2456       <webidl>        attribute unsigned short targetTemperature;</webidl>
2457       <descriptive>
2458          <description>
2459           <p>
2460 TargetTemperature
2461           </p>
2462          </description>
2463           <brief>
2464  Must return target desired temperature in celcius.    
2465           </brief>
2466       </descriptive>
2467       <Type type="unsigned short"/>
2468     </Attribute>
2469     <Attribute name="airConditioning" id="::HVAC::airConditioning">
2470       <webidl>        attribute boolean airConditioning;</webidl>
2471       <descriptive>
2472          <description>
2473           <p>
2474 AirConditioning
2475           </p>
2476          </description>
2477           <brief>
2478  Must return air conditioning on (true) / off (false).    
2479           </brief>
2480       </descriptive>
2481       <Type type="boolean"/>
2482     </Attribute>
2483     <Attribute name="airRecirculation" id="::HVAC::airRecirculation">
2484       <webidl>        attribute boolean airRecirculation;</webidl>
2485       <descriptive>
2486          <description>
2487           <p>
2488 AirRecirculation
2489           </p>
2490          </description>
2491           <brief>
2492  Must return air recirculation on (true) / off (false).    
2493           </brief>
2494       </descriptive>
2495       <Type type="boolean"/>
2496     </Attribute>
2497     <Attribute name="heater" id="::HVAC::heater">
2498       <webidl>        attribute boolean heater;</webidl>
2499       <descriptive>
2500          <description>
2501           <p>
2502 Heater
2503           </p>
2504          </description>
2505           <brief>
2506  Must return heater on (true) / off (false).    
2507           </brief>
2508       </descriptive>
2509       <Type type="boolean"/>
2510     </Attribute>
2511     <Attribute name="defrost" id="::HVAC::defrost">
2512       <webidl>        attribute <ref>DefrostDictionary</ref> defrost;</webidl>
2513       <descriptive>
2514          <description>
2515           <p>
2516 Defrost
2517           </p>
2518          </description>
2519           <brief>
2520  Must return the defrost status of all windows equiped with defrosters.  This will return a dictionary of DefrostDictionary that represents    
2521           </brief>
2522           <brief>
2523  each window and its defrost status.    
2524           </brief>
2525       </descriptive>
2526       <Type name="DefrostDictionary"/>
2527     </Attribute>
2528     <Attribute name="steeringWheelHeater" id="::HVAC::steeringWheelHeater">
2529       <webidl>        attribute boolean steeringWheelHeater;</webidl>
2530       <descriptive>
2531          <description>
2532           <p>
2533 SteeringWheelHeater
2534           </p>
2535          </description>
2536           <brief>
2537  Must return air recirculation on (true) / off (false).    
2538           </brief>
2539       </descriptive>
2540       <Type type="boolean"/>
2541     </Attribute>
2542     <Attribute name="seatHeater" id="::HVAC::seatHeater">
2543       <webidl>        attribute boolean seatHeater;</webidl>
2544       <descriptive>
2545          <description>
2546           <p>
2547 SeatHeater
2548           </p>
2549          </description>
2550           <brief>
2551  Must return seat heater status: on (true) / off (false).    
2552           </brief>
2553       </descriptive>
2554       <Type type="boolean"/>
2555     </Attribute>
2556     <Attribute name="seatCooler" id="::HVAC::seatCooler">
2557       <webidl>        attribute boolean seatCooler;</webidl>
2558       <descriptive>
2559          <description>
2560           <p>
2561 SeatCooler
2562           </p>
2563          </description>
2564           <brief>
2565  Must return seat heater status: on (true) / off (false).    
2566           </brief>
2567       </descriptive>
2568       <Type type="boolean"/>
2569     </Attribute>
2570   </Interface>
2571   <Interface name="WindowStatus" id="::WindowStatus">
2572     <webidl>[NoInterfaceObject]
2573 interface WindowStatus : <ref>VehiclePropertyType</ref>  { 
2574         const unsigned short WINDOWLOCATION_DRIVER= 0;    
2575         const unsigned short WINDOWLOCATION_PASSENGER = 1;    
2576         const unsigned short WINDOWLOCATION_LEFTREAR = 2;    
2577         const unsigned short WINDOWLOCATION_RIGHTREAR = 3;    
2578         const unsigned short WINDOWLOCATION_REAR = 4;    
2579
2580         attribute object WindowStatus;
2581 };</webidl>
2582     <ExtendedAttributeList>
2583       <ExtendedAttribute name="NoInterfaceObject">
2584         <webidl>NoInterfaceObject</webidl>
2585       </ExtendedAttribute>
2586     </ExtendedAttributeList>
2587     <InterfaceInheritance>
2588       <Name name="VehiclePropertyType"/>
2589     </InterfaceInheritance>
2590     <Const name="WINDOWLOCATION_DRIVER" value="0" id="::WindowStatus::WINDOWLOCATION_DRIVER">
2591       <webidl>        const unsigned short WINDOWLOCATION_DRIVER= 0;</webidl>
2592       <Type type="unsigned short"/>
2593     </Const>
2594     <Const name="WINDOWLOCATION_PASSENGER" value="1" id="::WindowStatus::WINDOWLOCATION_PASSENGER">
2595       <webidl>        const unsigned short WINDOWLOCATION_PASSENGER = 1;</webidl>
2596       <Type type="unsigned short"/>
2597     </Const>
2598     <Const name="WINDOWLOCATION_LEFTREAR" value="2" id="::WindowStatus::WINDOWLOCATION_LEFTREAR">
2599       <webidl>        const unsigned short WINDOWLOCATION_LEFTREAR = 2;</webidl>
2600       <Type type="unsigned short"/>
2601     </Const>
2602     <Const name="WINDOWLOCATION_RIGHTREAR" value="3" id="::WindowStatus::WINDOWLOCATION_RIGHTREAR">
2603       <webidl>        const unsigned short WINDOWLOCATION_RIGHTREAR = 3;</webidl>
2604       <Type type="unsigned short"/>
2605     </Const>
2606     <Const name="WINDOWLOCATION_REAR" value="4" id="::WindowStatus::WINDOWLOCATION_REAR">
2607       <webidl>        const unsigned short WINDOWLOCATION_REAR = 4;</webidl>
2608       <Type type="unsigned short"/>
2609     </Const>
2610     <Attribute name="WindowStatus" id="::WindowStatus::WindowStatus">
2611       <webidl>        attribute object WindowStatus;</webidl>
2612       <descriptive>
2613          <description>
2614           <p>
2615 WindowStatus
2616           </p>
2617          </description>
2618           <brief>
2619  Must return window status for each window location.  object returned is a    
2620 dictionary { unsigned short windowlocation, unsigned short percentage opened }    
2621           </brief>
2622       </descriptive>
2623       <Type type="object"/>
2624     </Attribute>
2625   </Interface>
2626   <Interface name="Sunroof" id="::Sunroof">
2627     <webidl>[NoInterfaceObject]
2628 interface Sunroof : <ref>VehiclePropertyType</ref>  { 
2629
2630         attribute unsigned short openness;
2631
2632         attribute unsigned short tilt;
2633 };</webidl>
2634     <ExtendedAttributeList>
2635       <ExtendedAttribute name="NoInterfaceObject">
2636         <webidl>NoInterfaceObject</webidl>
2637       </ExtendedAttribute>
2638     </ExtendedAttributeList>
2639     <InterfaceInheritance>
2640       <Name name="VehiclePropertyType"/>
2641     </InterfaceInheritance>
2642     <Attribute name="openness" id="::Sunroof::openness">
2643       <webidl>        attribute unsigned short openness;</webidl>
2644       <descriptive>
2645          <description>
2646           <p>
2647 Openness
2648           </p>
2649          </description>
2650           <brief>
2651  Must return window status for sunroof openness percentage.    
2652           </brief>
2653       </descriptive>
2654       <Type type="unsigned short"/>
2655     </Attribute>
2656     <Attribute name="tilt" id="::Sunroof::tilt">
2657       <webidl>        attribute unsigned short tilt;</webidl>
2658       <descriptive>
2659          <description>
2660           <p>
2661 Tilt
2662           </p>
2663          </description>
2664           <brief>
2665  Must return tilt status for sunroof percentage.    
2666           </brief>
2667       </descriptive>
2668       <Type type="unsigned short"/>
2669     </Attribute>
2670   </Interface>
2671   <Interface name="ConvertibleRoof" id="::ConvertibleRoof">
2672     <webidl>[NoInterfaceObject]
2673 interface ConvertibleRoof : <ref>VehiclePropertyType</ref>  { 
2674
2675         attribute unsigned short openness;
2676 };</webidl>
2677     <ExtendedAttributeList>
2678       <ExtendedAttribute name="NoInterfaceObject">
2679         <webidl>NoInterfaceObject</webidl>
2680       </ExtendedAttribute>
2681     </ExtendedAttributeList>
2682     <InterfaceInheritance>
2683       <Name name="VehiclePropertyType"/>
2684     </InterfaceInheritance>
2685     <Attribute name="openness" id="::ConvertibleRoof::openness">
2686       <webidl>        attribute unsigned short openness;</webidl>
2687       <descriptive>
2688          <description>
2689           <p>
2690 Openness
2691           </p>
2692          </description>
2693           <brief>
2694  Must return window status for sunroof openness percentage.    
2695           </brief>
2696       </descriptive>
2697       <Type type="unsigned short"/>
2698     </Attribute>
2699   </Interface>
2700   <Interface name="VehicleId" id="::VehicleId">
2701     <webidl>[NoInterfaceObject]
2702 interface VehicleId : <ref>VehiclePropertyType</ref>  { 
2703
2704          attribute DOMString WMI;
2705
2706          attribute DOMString VIN;
2707 };</webidl>
2708     <ExtendedAttributeList>
2709       <ExtendedAttribute name="NoInterfaceObject">
2710         <webidl>NoInterfaceObject</webidl>
2711       </ExtendedAttribute>
2712     </ExtendedAttributeList>
2713     <InterfaceInheritance>
2714       <Name name="VehiclePropertyType"/>
2715     </InterfaceInheritance>
2716     <Attribute name="WMI" id="::VehicleId::WMI">
2717       <webidl>         attribute DOMString WMI;</webidl>
2718       <descriptive>
2719          <description>
2720           <p>
2721 WMI
2722           </p>
2723          </description>
2724           <brief>
2725  MUST return World Manufacturer Identifier (WMI)    
2726 WMI is defined by SAE ISO 3780:2009.  3 characters.    
2727           </brief>
2728       </descriptive>
2729       <Type type="DOMString"/>
2730     </Attribute>
2731     <Attribute name="VIN" id="::VehicleId::VIN">
2732       <webidl>         attribute DOMString VIN;</webidl>
2733       <descriptive>
2734          <description>
2735           <p>
2736 VIN
2737           </p>
2738          </description>
2739           <brief>
2740  MUST return Vehicle Identification Number (VIN) as defined by ISO 3779. 17 characters.    
2741           </brief>
2742       </descriptive>
2743       <Type type="DOMString"/>
2744     </Attribute>
2745   </Interface>
2746   <Interface name="Size" id="::Size">
2747     <webidl>[NoInterfaceObject]
2748 interface Size : <ref>VehiclePropertyType</ref>  { 
2749
2750          attribute unsigned long width;
2751
2752          attribute unsigned long height;
2753
2754          attribute unsigned long length;
2755 };</webidl>
2756     <ExtendedAttributeList>
2757       <ExtendedAttribute name="NoInterfaceObject">
2758         <webidl>NoInterfaceObject</webidl>
2759       </ExtendedAttribute>
2760     </ExtendedAttributeList>
2761     <InterfaceInheritance>
2762       <Name name="VehiclePropertyType"/>
2763     </InterfaceInheritance>
2764     <Attribute name="width" id="::Size::width">
2765       <webidl>         attribute unsigned long width;</webidl>
2766       <descriptive>
2767          <description>
2768           <p>
2769 Width
2770           </p>
2771          </description>
2772           <brief>
2773  MUST return width of vehicle in mm    
2774           </brief>
2775       </descriptive>
2776       <Type type="unsigned long"/>
2777     </Attribute>
2778     <Attribute name="height" id="::Size::height">
2779       <webidl>         attribute unsigned long height;</webidl>
2780       <descriptive>
2781          <description>
2782           <p>
2783 Height
2784           </p>
2785          </description>
2786           <brief>
2787  MUST return height of vehicle in mm    
2788           </brief>
2789       </descriptive>
2790       <Type type="unsigned long"/>
2791     </Attribute>
2792     <Attribute name="length" id="::Size::length">
2793       <webidl>         attribute unsigned long length;</webidl>
2794       <descriptive>
2795          <description>
2796           <p>
2797 Length
2798           </p>
2799          </description>
2800           <brief>
2801  MUST return length of vehicle in mm    
2802           </brief>
2803       </descriptive>
2804       <Type type="unsigned long"/>
2805     </Attribute>
2806   </Interface>
2807   <Interface name="FuelInfo" id="::FuelInfo">
2808     <webidl>[NoInterfaceObject]
2809 interface FuelInfo : <ref>VehiclePropertyType</ref>  { 
2810         const unsigned short FUELTYPE_GASOLINE = 0;    
2811         const unsigned short FUELTYPE_HIGH_OCTANE= 1;    
2812         const unsigned short FUELTYPE_DIESEL = 2;    
2813         const unsigned short FUELTYPE_ELECTRIC = 3;    
2814         const unsigned short FUELTYPE_HYDROGEN = 4;    
2815         const unsigned short REFUELPOSITION_LEFT = 0;    
2816         const unsigned short REFUELPOSITION_RIGHT= 1;    
2817         const unsigned short REFUELPOSITION_FRONT = 2;    
2818         const unsigned short REFUELPOSITION_REAR = 3;    
2819
2820          attribute unsigned short type;
2821
2822          attribute unsigned short refuelPosition;
2823 };</webidl>
2824     <ExtendedAttributeList>
2825       <ExtendedAttribute name="NoInterfaceObject">
2826         <webidl>NoInterfaceObject</webidl>
2827       </ExtendedAttribute>
2828     </ExtendedAttributeList>
2829     <InterfaceInheritance>
2830       <Name name="VehiclePropertyType"/>
2831     </InterfaceInheritance>
2832     <Const name="FUELTYPE_GASOLINE" value="0" id="::FuelInfo::FUELTYPE_GASOLINE">
2833       <webidl>        const unsigned short FUELTYPE_GASOLINE = 0;</webidl>
2834       <Type type="unsigned short"/>
2835     </Const>
2836     <Const name="FUELTYPE_HIGH_OCTANE" value="1" id="::FuelInfo::FUELTYPE_HIGH_OCTANE">
2837       <webidl>        const unsigned short FUELTYPE_HIGH_OCTANE= 1;</webidl>
2838       <Type type="unsigned short"/>
2839     </Const>
2840     <Const name="FUELTYPE_DIESEL" value="2" id="::FuelInfo::FUELTYPE_DIESEL">
2841       <webidl>        const unsigned short FUELTYPE_DIESEL = 2;</webidl>
2842       <Type type="unsigned short"/>
2843     </Const>
2844     <Const name="FUELTYPE_ELECTRIC" value="3" id="::FuelInfo::FUELTYPE_ELECTRIC">
2845       <webidl>        const unsigned short FUELTYPE_ELECTRIC = 3;</webidl>
2846       <Type type="unsigned short"/>
2847     </Const>
2848     <Const name="FUELTYPE_HYDROGEN" value="4" id="::FuelInfo::FUELTYPE_HYDROGEN">
2849       <webidl>        const unsigned short FUELTYPE_HYDROGEN = 4;</webidl>
2850       <Type type="unsigned short"/>
2851     </Const>
2852     <Const name="REFUELPOSITION_LEFT" value="0" id="::FuelInfo::REFUELPOSITION_LEFT">
2853       <webidl>        const unsigned short REFUELPOSITION_LEFT = 0;</webidl>
2854       <Type type="unsigned short"/>
2855     </Const>
2856     <Const name="REFUELPOSITION_RIGHT" value="1" id="::FuelInfo::REFUELPOSITION_RIGHT">
2857       <webidl>        const unsigned short REFUELPOSITION_RIGHT= 1;</webidl>
2858       <Type type="unsigned short"/>
2859     </Const>
2860     <Const name="REFUELPOSITION_FRONT" value="2" id="::FuelInfo::REFUELPOSITION_FRONT">
2861       <webidl>        const unsigned short REFUELPOSITION_FRONT = 2;</webidl>
2862       <Type type="unsigned short"/>
2863     </Const>
2864     <Const name="REFUELPOSITION_REAR" value="3" id="::FuelInfo::REFUELPOSITION_REAR">
2865       <webidl>        const unsigned short REFUELPOSITION_REAR = 3;</webidl>
2866       <Type type="unsigned short"/>
2867     </Const>
2868     <Attribute name="type" id="::FuelInfo::type">
2869       <webidl>         attribute unsigned short type;</webidl>
2870       <descriptive>
2871          <description>
2872           <p>
2873 Type
2874           </p>
2875          </description>
2876           <brief>
2877  MUST return type of fuel.  integer 0-4 (see 
2878           </brief>
2879       </descriptive>
2880       <Type type="unsigned short"/>
2881     </Attribute>
2882     <Attribute name="refuelPosition" id="::FuelInfo::refuelPosition">
2883       <webidl>         attribute unsigned short refuelPosition;</webidl>
2884       <descriptive>
2885          <description>
2886           <p>
2887 RefuelPosition
2888           </p>
2889          </description>
2890           <brief>
2891  MUST return position of refuling (see 
2892           </brief>
2893       </descriptive>
2894       <Type type="unsigned short"/>
2895     </Attribute>
2896   </Interface>
2897   <Interface name="VehicleType" id="::VehicleType">
2898     <webidl>[NoInterfaceObject]
2899 interface VehicleType : <ref>VehiclePropertyType</ref>  { 
2900         const unsigned short VEHICLETYPE_SEDAN = 0;    
2901         const unsigned short VEHICLETYPE_COUPE= 1;    
2902         const unsigned short VEHICLETYPE_CABRIOLE = 2;    
2903         const unsigned short VEHICLETYPE_ROADSTER = 3;    
2904         const unsigned short VEHICLETYPE_SUV = 4;    
2905         const unsigned short VEHICLETYPE_TRUCK = 5;    
2906
2907          attribute unsigned short type;
2908 };</webidl>
2909     <ExtendedAttributeList>
2910       <ExtendedAttribute name="NoInterfaceObject">
2911         <webidl>NoInterfaceObject</webidl>
2912       </ExtendedAttribute>
2913     </ExtendedAttributeList>
2914     <InterfaceInheritance>
2915       <Name name="VehiclePropertyType"/>
2916     </InterfaceInheritance>
2917     <Const name="VEHICLETYPE_SEDAN" value="0" id="::VehicleType::VEHICLETYPE_SEDAN">
2918       <webidl>        const unsigned short VEHICLETYPE_SEDAN = 0;</webidl>
2919       <Type type="unsigned short"/>
2920     </Const>
2921     <Const name="VEHICLETYPE_COUPE" value="1" id="::VehicleType::VEHICLETYPE_COUPE">
2922       <webidl>        const unsigned short VEHICLETYPE_COUPE= 1;</webidl>
2923       <Type type="unsigned short"/>
2924     </Const>
2925     <Const name="VEHICLETYPE_CABRIOLE" value="2" id="::VehicleType::VEHICLETYPE_CABRIOLE">
2926       <webidl>        const unsigned short VEHICLETYPE_CABRIOLE = 2;</webidl>
2927       <Type type="unsigned short"/>
2928     </Const>
2929     <Const name="VEHICLETYPE_ROADSTER" value="3" id="::VehicleType::VEHICLETYPE_ROADSTER">
2930       <webidl>        const unsigned short VEHICLETYPE_ROADSTER = 3;</webidl>
2931       <Type type="unsigned short"/>
2932     </Const>
2933     <Const name="VEHICLETYPE_SUV" value="4" id="::VehicleType::VEHICLETYPE_SUV">
2934       <webidl>        const unsigned short VEHICLETYPE_SUV = 4;</webidl>
2935       <Type type="unsigned short"/>
2936     </Const>
2937     <Const name="VEHICLETYPE_TRUCK" value="5" id="::VehicleType::VEHICLETYPE_TRUCK">
2938       <webidl>        const unsigned short VEHICLETYPE_TRUCK = 5;</webidl>
2939       <Type type="unsigned short"/>
2940     </Const>
2941     <Attribute name="type" id="::VehicleType::type">
2942       <webidl>         attribute unsigned short type;</webidl>
2943       <descriptive>
2944          <description>
2945           <p>
2946 Type
2947           </p>
2948          </description>
2949           <brief>
2950  MUST return type of Vehicle.  Integer 0-5 (see 
2951           </brief>
2952       </descriptive>
2953       <Type type="unsigned short"/>
2954     </Attribute>
2955   </Interface>
2956   <Interface name="Doors" id="::Doors">
2957     <webidl>[NoInterfaceObject]
2958 interface Doors : <ref>VehiclePropertyType</ref>  { 
2959
2960          attribute sequence&lt;unsigned short> doorsPerRow;
2961 };</webidl>
2962     <ExtendedAttributeList>
2963       <ExtendedAttribute name="NoInterfaceObject">
2964         <webidl>NoInterfaceObject</webidl>
2965       </ExtendedAttribute>
2966     </ExtendedAttributeList>
2967     <InterfaceInheritance>
2968       <Name name="VehiclePropertyType"/>
2969     </InterfaceInheritance>
2970     <Attribute name="doorsPerRow" id="::Doors::doorsPerRow">
2971       <webidl>         attribute sequence&lt;unsigned short> doorsPerRow;</webidl>
2972       <descriptive>
2973          <description>
2974           <p>
2975 DoorsPerRow
2976           </p>
2977          </description>
2978           <brief>
2979  MUST return Number of doors in each row.  The index represents the row.  Position '0'    
2980 represents the first row, '1' the second row etc.    
2981 Example a common mini-van may have Doors[0] = 2 doors,    
2982 Doors[1] = 1 (side door), Doors[2] = 1 (trunk).    
2983           </brief>
2984       </descriptive>
2985       <Type type="sequence">
2986         <Type type="unsigned short"/>
2987       </Type>
2988     </Attribute>
2989   </Interface>
2990   <Interface name="TransmissionGearType" id="::TransmissionGearType">
2991     <webidl>[NoInterfaceObject]
2992 interface TransmissionGearType : <ref>VehiclePropertyType</ref>  { 
2993         const unsigned short TRANSMISSIONGEARTYPE_AUTO=0;    
2994         const unsigned short TRANSMISSIONGEARTYPE_MANUAL=1;    
2995         const unsigned short TRANSMISSIONGEARTYPE_CV=2;    
2996
2997          attribute unsigned short transmissionGearType;
2998 };</webidl>
2999     <ExtendedAttributeList>
3000       <ExtendedAttribute name="NoInterfaceObject">
3001         <webidl>NoInterfaceObject</webidl>
3002       </ExtendedAttribute>
3003     </ExtendedAttributeList>
3004     <InterfaceInheritance>
3005       <Name name="VehiclePropertyType"/>
3006     </InterfaceInheritance>
3007     <Const name="TRANSMISSIONGEARTYPE_AUTO" value="0" id="::TransmissionGearType::TRANSMISSIONGEARTYPE_AUTO">
3008       <webidl>        const unsigned short TRANSMISSIONGEARTYPE_AUTO=0;</webidl>
3009       <Type type="unsigned short"/>
3010     </Const>
3011     <Const name="TRANSMISSIONGEARTYPE_MANUAL" value="1" id="::TransmissionGearType::TRANSMISSIONGEARTYPE_MANUAL">
3012       <webidl>        const unsigned short TRANSMISSIONGEARTYPE_MANUAL=1;</webidl>
3013       <Type type="unsigned short"/>
3014     </Const>
3015     <Const name="TRANSMISSIONGEARTYPE_CV" value="2" id="::TransmissionGearType::TRANSMISSIONGEARTYPE_CV">
3016       <webidl>        const unsigned short TRANSMISSIONGEARTYPE_CV=2;</webidl>
3017       <Type type="unsigned short"/>
3018     </Const>
3019     <Attribute name="transmissionGearType" id="::TransmissionGearType::transmissionGearType">
3020       <webidl>         attribute unsigned short transmissionGearType;</webidl>
3021       <descriptive>
3022          <description>
3023           <p>
3024 TransmissionGearType
3025           </p>
3026          </description>
3027           <brief>
3028  MUST return transmission gear type of either Automatic, Manual or Constant Variable (CV).  See 
3029           </brief>
3030       </descriptive>
3031       <Type type="unsigned short"/>
3032     </Attribute>
3033   </Interface>
3034   <Interface name="WheelInformation" id="::WheelInformation">
3035     <webidl>[NoInterfaceObject]
3036 interface WheelInformation : <ref>VehiclePropertyType</ref>  { 
3037
3038          attribute unsigned short frontWheelRadius;
3039
3040          attribute unsigned short rearWheelRadius;
3041
3042          attribute unsigned long wheelTrack;
3043
3044          attribute boolean ABS;
3045 };</webidl>
3046     <ExtendedAttributeList>
3047       <ExtendedAttribute name="NoInterfaceObject">
3048         <webidl>NoInterfaceObject</webidl>
3049       </ExtendedAttribute>
3050     </ExtendedAttributeList>
3051     <InterfaceInheritance>
3052       <Name name="VehiclePropertyType"/>
3053     </InterfaceInheritance>
3054     <Attribute name="frontWheelRadius" id="::WheelInformation::frontWheelRadius">
3055       <webidl>         attribute unsigned short frontWheelRadius;</webidl>
3056       <descriptive>
3057          <description>
3058           <p>
3059 FrontWheelRadius
3060           </p>
3061          </description>
3062           <brief>
3063  MUST return Radius of Front Wheel(s) in mm.    
3064           </brief>
3065       </descriptive>
3066       <Type type="unsigned short"/>
3067     </Attribute>
3068     <Attribute name="rearWheelRadius" id="::WheelInformation::rearWheelRadius">
3069       <webidl>         attribute unsigned short rearWheelRadius;</webidl>
3070       <descriptive>
3071          <description>
3072           <p>
3073 RearWheelRadius
3074           </p>
3075          </description>
3076           <brief>
3077  MUST return Radius of Rear Wheel(s) in mm.    
3078           </brief>
3079       </descriptive>
3080       <Type type="unsigned short"/>
3081     </Attribute>
3082     <Attribute name="wheelTrack" id="::WheelInformation::wheelTrack">
3083       <webidl>         attribute unsigned long wheelTrack;</webidl>
3084       <descriptive>
3085          <description>
3086           <p>
3087 WheelTrack
3088           </p>
3089          </description>
3090           <brief>
3091  MUST return Wheel Track in mm.    
3092           </brief>
3093       </descriptive>
3094       <Type type="unsigned long"/>
3095     </Attribute>
3096     <Attribute name="ABS" id="::WheelInformation::ABS">
3097       <webidl>         attribute boolean ABS;</webidl>
3098       <descriptive>
3099          <description>
3100           <p>
3101 ABS
3102           </p>
3103          </description>
3104           <brief>
3105  MUST return Antilock Brake System status: on = true, off = false.    
3106           </brief>
3107       </descriptive>
3108       <Type type="boolean"/>
3109     </Attribute>
3110   </Interface>
3111   <Interface name="Odometer" id="::Odometer">
3112     <webidl>[NoInterfaceObject]
3113 interface Odometer : <ref>VehiclePropertyType</ref>  { 
3114
3115          attribute unsigned long odometer;
3116 };</webidl>
3117     <ExtendedAttributeList>
3118       <ExtendedAttribute name="NoInterfaceObject">
3119         <webidl>NoInterfaceObject</webidl>
3120       </ExtendedAttribute>
3121     </ExtendedAttributeList>
3122     <InterfaceInheritance>
3123       <Name name="VehiclePropertyType"/>
3124     </InterfaceInheritance>
3125     <Attribute name="odometer" id="::Odometer::odometer">
3126       <webidl>         attribute unsigned long odometer;</webidl>
3127       <descriptive>
3128          <description>
3129           <p>
3130 Odometer
3131           </p>
3132          </description>
3133           <brief>
3134  MUST return Distance traveled in km    
3135           </brief>
3136       </descriptive>
3137       <Type type="unsigned long"/>
3138     </Attribute>
3139   </Interface>
3140   <Interface name="Fluid" id="::Fluid">
3141     <webidl>[NoInterfaceObject]
3142 interface Fluid : <ref>VehiclePropertyType</ref>  { 
3143
3144          attribute unsigned short transmission;
3145
3146          attribute unsigned short brake;
3147
3148          attribute unsigned short washer;
3149 };</webidl>
3150     <ExtendedAttributeList>
3151       <ExtendedAttribute name="NoInterfaceObject">
3152         <webidl>NoInterfaceObject</webidl>
3153       </ExtendedAttribute>
3154     </ExtendedAttributeList>
3155     <InterfaceInheritance>
3156       <Name name="VehiclePropertyType"/>
3157     </InterfaceInheritance>
3158     <Attribute name="transmission" id="::Fluid::transmission">
3159       <webidl>         attribute unsigned short transmission;</webidl>
3160       <descriptive>
3161          <description>
3162           <p>
3163 Transmission
3164           </p>
3165          </description>
3166           <brief>
3167  MUST return Transmission fluid level percentage. 0-100.    
3168           </brief>
3169       </descriptive>
3170       <Type type="unsigned short"/>
3171     </Attribute>
3172     <Attribute name="brake" id="::Fluid::brake">
3173       <webidl>         attribute unsigned short brake;</webidl>
3174       <descriptive>
3175          <description>
3176           <p>
3177 Brake
3178           </p>
3179          </description>
3180           <brief>
3181  MUST return Brake fluid level percentage. 0-100.    
3182           </brief>
3183       </descriptive>
3184       <Type type="unsigned short"/>
3185     </Attribute>
3186     <Attribute name="washer" id="::Fluid::washer">
3187       <webidl>         attribute unsigned short washer;</webidl>
3188       <descriptive>
3189          <description>
3190           <p>
3191 Washer
3192           </p>
3193          </description>
3194           <brief>
3195  MUST return Washer fluid level percentage. 0-100.    
3196           </brief>
3197       </descriptive>
3198       <Type type="unsigned short"/>
3199     </Attribute>
3200   </Interface>
3201   <Interface name="Battery" id="::Battery">
3202     <webidl>[NoInterfaceObject]
3203 interface Battery : <ref>VehiclePropertyType</ref>  { 
3204
3205          attribute double voltage;
3206
3207          attribute double current;
3208 };</webidl>
3209     <ExtendedAttributeList>
3210       <ExtendedAttribute name="NoInterfaceObject">
3211         <webidl>NoInterfaceObject</webidl>
3212       </ExtendedAttribute>
3213     </ExtendedAttributeList>
3214     <InterfaceInheritance>
3215       <Name name="VehiclePropertyType"/>
3216     </InterfaceInheritance>
3217     <Attribute name="voltage" id="::Battery::voltage">
3218       <webidl>         attribute double voltage;</webidl>
3219       <descriptive>
3220          <description>
3221           <p>
3222 Voltage
3223           </p>
3224          </description>
3225           <brief>
3226  MUST return battery voltage.    
3227           </brief>
3228       </descriptive>
3229       <Type type="double"/>
3230     </Attribute>
3231     <Attribute name="current" id="::Battery::current">
3232       <webidl>         attribute double current;</webidl>
3233       <descriptive>
3234          <description>
3235           <p>
3236 Current
3237           </p>
3238          </description>
3239           <brief>
3240  MUST return battery current in Amperes    
3241           </brief>
3242       </descriptive>
3243       <Type type="double"/>
3244     </Attribute>
3245   </Interface>
3246   <Interface name="TirePressure" id="::TirePressure">
3247     <webidl>[NoInterfaceObject]
3248 interface TirePressure : <ref>VehiclePropertyType</ref>  { 
3249
3250          attribute double leftFront;
3251
3252          attribute double rightFront;
3253
3254          attribute double leftRear;
3255
3256          attribute double rightRear;
3257 };</webidl>
3258     <ExtendedAttributeList>
3259       <ExtendedAttribute name="NoInterfaceObject">
3260         <webidl>NoInterfaceObject</webidl>
3261       </ExtendedAttribute>
3262     </ExtendedAttributeList>
3263     <InterfaceInheritance>
3264       <Name name="VehiclePropertyType"/>
3265     </InterfaceInheritance>
3266     <Attribute name="leftFront" id="::TirePressure::leftFront">
3267       <webidl>         attribute double leftFront;</webidl>
3268       <descriptive>
3269          <description>
3270           <p>
3271 LeftFront
3272           </p>
3273          </description>
3274           <brief>
3275  MUST return left front tire pressure in kPa.    
3276           </brief>
3277       </descriptive>
3278       <Type type="double"/>
3279     </Attribute>
3280     <Attribute name="rightFront" id="::TirePressure::rightFront">
3281       <webidl>         attribute double rightFront;</webidl>
3282       <descriptive>
3283          <description>
3284           <p>
3285 RightFront
3286           </p>
3287          </description>
3288           <brief>
3289  MUST return right front tire pressure in kPa.    
3290           </brief>
3291       </descriptive>
3292       <Type type="double"/>
3293     </Attribute>
3294     <Attribute name="leftRear" id="::TirePressure::leftRear">
3295       <webidl>         attribute double leftRear;</webidl>
3296       <descriptive>
3297          <description>
3298           <p>
3299 LeftRear
3300           </p>
3301          </description>
3302           <brief>
3303  MUST return left rear tire pressure in kPa.    
3304           </brief>
3305       </descriptive>
3306       <Type type="double"/>
3307     </Attribute>
3308     <Attribute name="rightRear" id="::TirePressure::rightRear">
3309       <webidl>         attribute double rightRear;</webidl>
3310       <descriptive>
3311          <description>
3312           <p>
3313 RightRear
3314           </p>
3315          </description>
3316           <brief>
3317  MUST return right rear tire pressure in kPa.    
3318           </brief>
3319       </descriptive>
3320       <Type type="double"/>
3321     </Attribute>
3322   </Interface>
3323   <Interface name="TireTemperature" id="::TireTemperature">
3324     <webidl>[NoInterfaceObject]
3325 interface TireTemperature : <ref>VehiclePropertyType</ref>  { 
3326
3327          attribute double leftFront;
3328
3329          attribute double rightFront;
3330
3331          attribute double leftRear;
3332
3333          attribute double rightRear;
3334 };</webidl>
3335     <ExtendedAttributeList>
3336       <ExtendedAttribute name="NoInterfaceObject">
3337         <webidl>NoInterfaceObject</webidl>
3338       </ExtendedAttribute>
3339     </ExtendedAttributeList>
3340     <InterfaceInheritance>
3341       <Name name="VehiclePropertyType"/>
3342     </InterfaceInheritance>
3343     <Attribute name="leftFront" id="::TireTemperature::leftFront">
3344       <webidl>         attribute double leftFront;</webidl>
3345       <descriptive>
3346          <description>
3347           <p>
3348 LeftFront
3349           </p>
3350          </description>
3351           <brief>
3352  MUST return left front tire temperature in Celcius.    
3353           </brief>
3354       </descriptive>
3355       <Type type="double"/>
3356     </Attribute>
3357     <Attribute name="rightFront" id="::TireTemperature::rightFront">
3358       <webidl>         attribute double rightFront;</webidl>
3359       <descriptive>
3360          <description>
3361           <p>
3362 RightFront
3363           </p>
3364          </description>
3365           <brief>
3366  MUST return right front tire temperature in Celcius.    
3367           </brief>
3368       </descriptive>
3369       <Type type="double"/>
3370     </Attribute>
3371     <Attribute name="leftRear" id="::TireTemperature::leftRear">
3372       <webidl>         attribute double leftRear;</webidl>
3373       <descriptive>
3374          <description>
3375           <p>
3376 LeftRear
3377           </p>
3378          </description>
3379           <brief>
3380  MUST return left rear tire temperature in Celcius.    
3381           </brief>
3382       </descriptive>
3383       <Type type="double"/>
3384     </Attribute>
3385     <Attribute name="rightRear" id="::TireTemperature::rightRear">
3386       <webidl>         attribute double rightRear;</webidl>
3387       <descriptive>
3388          <description>
3389           <p>
3390 RightRear
3391           </p>
3392          </description>
3393           <brief>
3394  MUST return right rear tire temperature in Celcius.    
3395           </brief>
3396       </descriptive>
3397       <Type type="double"/>
3398     </Attribute>
3399   </Interface>
3400   <Interface name="SecurityAlert" id="::SecurityAlert">
3401     <webidl>[NoInterfaceObject]
3402 interface SecurityAlert : <ref>VehiclePropertyType</ref>  { 
3403
3404          attribute boolean securityAlert;
3405 };</webidl>
3406     <ExtendedAttributeList>
3407       <ExtendedAttribute name="NoInterfaceObject">
3408         <webidl>NoInterfaceObject</webidl>
3409       </ExtendedAttribute>
3410     </ExtendedAttributeList>
3411     <InterfaceInheritance>
3412       <Name name="VehiclePropertyType"/>
3413     </InterfaceInheritance>
3414     <Attribute name="securityAlert" id="::SecurityAlert::securityAlert">
3415       <webidl>         attribute boolean securityAlert;</webidl>
3416       <descriptive>
3417          <description>
3418           <p>
3419 SecurityAlert
3420           </p>
3421          </description>
3422           <brief>
3423  MUST return    
3424           </brief>
3425       </descriptive>
3426       <Type type="boolean"/>
3427     </Attribute>
3428   </Interface>
3429   <Interface name="ParkingBrake" id="::ParkingBrake">
3430     <webidl>[NoInterfaceObject]
3431 interface ParkingBrake : <ref>VehiclePropertyType</ref>  { 
3432
3433          attribute boolean parkingBrake;
3434 };</webidl>
3435     <ExtendedAttributeList>
3436       <ExtendedAttribute name="NoInterfaceObject">
3437         <webidl>NoInterfaceObject</webidl>
3438       </ExtendedAttribute>
3439     </ExtendedAttributeList>
3440     <InterfaceInheritance>
3441       <Name name="VehiclePropertyType"/>
3442     </InterfaceInheritance>
3443     <Attribute name="parkingBrake" id="::ParkingBrake::parkingBrake">
3444       <webidl>         attribute boolean parkingBrake;</webidl>
3445       <descriptive>
3446          <description>
3447           <p>
3448 ParkingBrake
3449 must return status of parking brake:  Engaged = true, Disengaged = false.    
3450           </p>
3451          </description>
3452       </descriptive>
3453       <Type type="boolean"/>
3454     </Attribute>
3455   </Interface>
3456   <Interface name="ParkingLight" id="::ParkingLight">
3457     <webidl>[NoInterfaceObject]
3458 interface ParkingLight : <ref>VehiclePropertyType</ref>  { 
3459
3460          attribute boolean parkingLight;
3461 };</webidl>
3462     <ExtendedAttributeList>
3463       <ExtendedAttribute name="NoInterfaceObject">
3464         <webidl>NoInterfaceObject</webidl>
3465       </ExtendedAttribute>
3466     </ExtendedAttributeList>
3467     <InterfaceInheritance>
3468       <Name name="VehiclePropertyType"/>
3469     </InterfaceInheritance>
3470     <Attribute name="parkingLight" id="::ParkingLight::parkingLight">
3471       <webidl>         attribute boolean parkingLight;</webidl>
3472       <descriptive>
3473          <description>
3474           <p>
3475 ParkingLight
3476 must return status of parking light:  Engaged = true, Disengaged = false.    
3477           </p>
3478          </description>
3479       </descriptive>
3480       <Type type="boolean"/>
3481     </Attribute>
3482   </Interface>
3483   <Interface name="HazardLight" id="::HazardLight">
3484     <webidl>[NoInterfaceObject]
3485 interface HazardLight : <ref>VehiclePropertyType</ref>  { 
3486
3487          attribute boolean hazardLight;
3488 };</webidl>
3489     <ExtendedAttributeList>
3490       <ExtendedAttribute name="NoInterfaceObject">
3491         <webidl>NoInterfaceObject</webidl>
3492       </ExtendedAttribute>
3493     </ExtendedAttributeList>
3494     <InterfaceInheritance>
3495       <Name name="VehiclePropertyType"/>
3496     </InterfaceInheritance>
3497     <Attribute name="hazardLight" id="::HazardLight::hazardLight">
3498       <webidl>         attribute boolean hazardLight;</webidl>
3499       <descriptive>
3500          <description>
3501           <p>
3502 HazardLight
3503 must return status of hazard light:  Engaged = true, Disengaged = false.    
3504           </p>
3505          </description>
3506       </descriptive>
3507       <Type type="boolean"/>
3508     </Attribute>
3509   </Interface>
3510   <Interface name="AntilockBrakingSystem" id="::AntilockBrakingSystem">
3511     <webidl>[NoInterfaceObject]
3512 interface AntilockBrakingSystem : <ref>VehiclePropertyType</ref>  { 
3513
3514          attribute boolean antilockBrakingSystem;
3515 };</webidl>
3516     <ExtendedAttributeList>
3517       <ExtendedAttribute name="NoInterfaceObject">
3518         <webidl>NoInterfaceObject</webidl>
3519       </ExtendedAttribute>
3520     </ExtendedAttributeList>
3521     <InterfaceInheritance>
3522       <Name name="VehiclePropertyType"/>
3523     </InterfaceInheritance>
3524     <Attribute name="antilockBrakingSystem" id="::AntilockBrakingSystem::antilockBrakingSystem">
3525       <webidl>         attribute boolean antilockBrakingSystem;</webidl>
3526       <descriptive>
3527          <description>
3528           <p>
3529 AntilockBrakingSystem
3530           </p>
3531          </description>
3532           <brief>
3533  MUST return whether Antilock Braking System is Idle (false) or Engaged (true)    
3534           </brief>
3535       </descriptive>
3536       <Type type="boolean"/>
3537     </Attribute>
3538   </Interface>
3539   <Interface name="TractionControlSystem" id="::TractionControlSystem">
3540     <webidl>[NoInterfaceObject]
3541 interface TractionControlSystem : <ref>VehiclePropertyType</ref>  { 
3542
3543          attribute boolean tractionControlSystem;
3544 };</webidl>
3545     <ExtendedAttributeList>
3546       <ExtendedAttribute name="NoInterfaceObject">
3547         <webidl>NoInterfaceObject</webidl>
3548       </ExtendedAttribute>
3549     </ExtendedAttributeList>
3550     <InterfaceInheritance>
3551       <Name name="VehiclePropertyType"/>
3552     </InterfaceInheritance>
3553     <Attribute name="tractionControlSystem" id="::TractionControlSystem::tractionControlSystem">
3554       <webidl>         attribute boolean tractionControlSystem;</webidl>
3555       <descriptive>
3556          <description>
3557           <p>
3558 TractionControlSystem
3559           </p>
3560          </description>
3561           <brief>
3562  MUST return whether Traction Control System is Off (false) or On (true)    
3563           </brief>
3564       </descriptive>
3565       <Type type="boolean"/>
3566     </Attribute>
3567   </Interface>
3568   <Interface name="VehicleTopSpeedLimit" id="::VehicleTopSpeedLimit">
3569     <webidl>[NoInterfaceObject]
3570 interface VehicleTopSpeedLimit : <ref>VehiclePropertyType</ref>  { 
3571
3572          attribute unsigned short vehicleTopSpeedLimit;
3573 };</webidl>
3574     <ExtendedAttributeList>
3575       <ExtendedAttribute name="NoInterfaceObject">
3576         <webidl>NoInterfaceObject</webidl>
3577       </ExtendedAttribute>
3578     </ExtendedAttributeList>
3579     <InterfaceInheritance>
3580       <Name name="VehiclePropertyType"/>
3581     </InterfaceInheritance>
3582     <Attribute name="vehicleTopSpeedLimit" id="::VehicleTopSpeedLimit::vehicleTopSpeedLimit">
3583       <webidl>         attribute unsigned short vehicleTopSpeedLimit;</webidl>
3584       <descriptive>
3585          <description>
3586           <p>
3587 VehicleTopSpeedLimit
3588           </p>
3589          </description>
3590           <brief>
3591  MUST returns top rated speed in km/h. 0 = no limit    
3592           </brief>
3593       </descriptive>
3594       <Type type="unsigned short"/>
3595     </Attribute>
3596   </Interface>
3597   <Interface name="AirbagStatus" id="::AirbagStatus">
3598     <webidl>[NoInterfaceObject]
3599 interface AirbagStatus : <ref>VehiclePropertyType</ref>  { 
3600         const unsigned short AIRBAGLOCATION_DRIVER = 0;    
3601         const unsigned short AIRBAGLOCATION_PASSENGER= 1;    
3602         const unsigned short AIRBAGLOCATION_LEFTSIDE = 2;    
3603         const unsigned short AIRBAGLOCATION_RIGHTSIDE = 3;    
3604         const unsigned short AIRBAGSTATUS_INACTIVE = 0;    
3605         const unsigned short AIRBAGSTATUS_ACTIVE = 1;    
3606         const unsigned short AIRBAGSTATUS_DEPLOYED = 2;    
3607
3608          attribute object airbagStatus;
3609 };</webidl>
3610     <ExtendedAttributeList>
3611       <ExtendedAttribute name="NoInterfaceObject">
3612         <webidl>NoInterfaceObject</webidl>
3613       </ExtendedAttribute>
3614     </ExtendedAttributeList>
3615     <InterfaceInheritance>
3616       <Name name="VehiclePropertyType"/>
3617     </InterfaceInheritance>
3618     <Const name="AIRBAGLOCATION_DRIVER" value="0" id="::AirbagStatus::AIRBAGLOCATION_DRIVER">
3619       <webidl>        const unsigned short AIRBAGLOCATION_DRIVER = 0;</webidl>
3620       <Type type="unsigned short"/>
3621     </Const>
3622     <Const name="AIRBAGLOCATION_PASSENGER" value="1" id="::AirbagStatus::AIRBAGLOCATION_PASSENGER">
3623       <webidl>        const unsigned short AIRBAGLOCATION_PASSENGER= 1;</webidl>
3624       <Type type="unsigned short"/>
3625     </Const>
3626     <Const name="AIRBAGLOCATION_LEFTSIDE" value="2" id="::AirbagStatus::AIRBAGLOCATION_LEFTSIDE">
3627       <webidl>        const unsigned short AIRBAGLOCATION_LEFTSIDE = 2;</webidl>
3628       <Type type="unsigned short"/>
3629     </Const>
3630     <Const name="AIRBAGLOCATION_RIGHTSIDE" value="3" id="::AirbagStatus::AIRBAGLOCATION_RIGHTSIDE">
3631       <webidl>        const unsigned short AIRBAGLOCATION_RIGHTSIDE = 3;</webidl>
3632       <Type type="unsigned short"/>
3633     </Const>
3634     <Const name="AIRBAGSTATUS_INACTIVE" value="0" id="::AirbagStatus::AIRBAGSTATUS_INACTIVE">
3635       <webidl>        const unsigned short AIRBAGSTATUS_INACTIVE = 0;</webidl>
3636       <Type type="unsigned short"/>
3637     </Const>
3638     <Const name="AIRBAGSTATUS_ACTIVE" value="1" id="::AirbagStatus::AIRBAGSTATUS_ACTIVE">
3639       <webidl>        const unsigned short AIRBAGSTATUS_ACTIVE = 1;</webidl>
3640       <Type type="unsigned short"/>
3641     </Const>
3642     <Const name="AIRBAGSTATUS_DEPLOYED" value="2" id="::AirbagStatus::AIRBAGSTATUS_DEPLOYED">
3643       <webidl>        const unsigned short AIRBAGSTATUS_DEPLOYED = 2;</webidl>
3644       <Type type="unsigned short"/>
3645     </Const>
3646     <Attribute name="airbagStatus" id="::AirbagStatus::airbagStatus">
3647       <webidl>         attribute object airbagStatus;</webidl>
3648       <descriptive>
3649          <description>
3650           <p>
3651 AirbagStatus
3652           </p>
3653          </description>
3654           <brief>
3655  MUST returns a dictionary of Airbag (byte) and Status (byte) (see 
3656           </brief>
3657       </descriptive>
3658       <Type type="object"/>
3659     </Attribute>
3660   </Interface>
3661   <Interface name="DoorStatus" id="::DoorStatus">
3662     <webidl>[NoInterfaceObject]
3663 interface DoorStatus : <ref>VehiclePropertyType</ref>  { 
3664         const unsigned short DOORLOCATION_DRIVER= 0;    
3665         const unsigned short DOORLOCATION_PASSENGER = 1;    
3666         const unsigned short DOORLOCATION_LEFTREAR = 2;    
3667         const unsigned short DOORLOCATION_RIGHTREAR = 3;    
3668         const unsigned short DOORLOCATION_TRUNK = 4;    
3669         const unsigned short DOORLOCATION_FUELCAP = 5;    
3670         const unsigned short DOORLOCATION_HOOD = 6;    
3671         const unsigned short DOORSTATUS_CLOSED = 0;    
3672         const unsigned short DOORSTATUS_OPEN = 1;    
3673         const unsigned short DOORSTATUS_AJAR = 2;    
3674
3675          attribute object doorStatus;
3676
3677          attribute object doorLockStatus;
3678
3679          attribute boolean childLockStatus;
3680 };</webidl>
3681     <ExtendedAttributeList>
3682       <ExtendedAttribute name="NoInterfaceObject">
3683         <webidl>NoInterfaceObject</webidl>
3684       </ExtendedAttribute>
3685     </ExtendedAttributeList>
3686     <InterfaceInheritance>
3687       <Name name="VehiclePropertyType"/>
3688     </InterfaceInheritance>
3689     <Const name="DOORLOCATION_DRIVER" value="0" id="::DoorStatus::DOORLOCATION_DRIVER">
3690       <webidl>        const unsigned short DOORLOCATION_DRIVER= 0;</webidl>
3691       <Type type="unsigned short"/>
3692     </Const>
3693     <Const name="DOORLOCATION_PASSENGER" value="1" id="::DoorStatus::DOORLOCATION_PASSENGER">
3694       <webidl>        const unsigned short DOORLOCATION_PASSENGER = 1;</webidl>
3695       <Type type="unsigned short"/>
3696     </Const>
3697     <Const name="DOORLOCATION_LEFTREAR" value="2" id="::DoorStatus::DOORLOCATION_LEFTREAR">
3698       <webidl>        const unsigned short DOORLOCATION_LEFTREAR = 2;</webidl>
3699       <Type type="unsigned short"/>
3700     </Const>
3701     <Const name="DOORLOCATION_RIGHTREAR" value="3" id="::DoorStatus::DOORLOCATION_RIGHTREAR">
3702       <webidl>        const unsigned short DOORLOCATION_RIGHTREAR = 3;</webidl>
3703       <Type type="unsigned short"/>
3704     </Const>
3705     <Const name="DOORLOCATION_TRUNK" value="4" id="::DoorStatus::DOORLOCATION_TRUNK">
3706       <webidl>        const unsigned short DOORLOCATION_TRUNK = 4;</webidl>
3707       <Type type="unsigned short"/>
3708     </Const>
3709     <Const name="DOORLOCATION_FUELCAP" value="5" id="::DoorStatus::DOORLOCATION_FUELCAP">
3710       <webidl>        const unsigned short DOORLOCATION_FUELCAP = 5;</webidl>
3711       <Type type="unsigned short"/>
3712     </Const>
3713     <Const name="DOORLOCATION_HOOD" value="6" id="::DoorStatus::DOORLOCATION_HOOD">
3714       <webidl>        const unsigned short DOORLOCATION_HOOD = 6;</webidl>
3715       <Type type="unsigned short"/>
3716     </Const>
3717     <Const name="DOORSTATUS_CLOSED" value="0" id="::DoorStatus::DOORSTATUS_CLOSED">
3718       <webidl>        const unsigned short DOORSTATUS_CLOSED = 0;</webidl>
3719       <Type type="unsigned short"/>
3720     </Const>
3721     <Const name="DOORSTATUS_OPEN" value="1" id="::DoorStatus::DOORSTATUS_OPEN">
3722       <webidl>        const unsigned short DOORSTATUS_OPEN = 1;</webidl>
3723       <Type type="unsigned short"/>
3724     </Const>
3725     <Const name="DOORSTATUS_AJAR" value="2" id="::DoorStatus::DOORSTATUS_AJAR">
3726       <webidl>        const unsigned short DOORSTATUS_AJAR = 2;</webidl>
3727       <Type type="unsigned short"/>
3728     </Const>
3729     <Attribute name="doorStatus" id="::DoorStatus::doorStatus">
3730       <webidl>         attribute object doorStatus;</webidl>
3731       <descriptive>
3732          <description>
3733           <p>
3734 DoorStatus
3735           </p>
3736          </description>
3737           <brief>
3738  MUST returns dictionary of Door (byte) and Status (byte).  See 
3739           </brief>
3740       </descriptive>
3741       <Type type="object"/>
3742     </Attribute>
3743     <Attribute name="doorLockStatus" id="::DoorStatus::doorLockStatus">
3744       <webidl>         attribute object doorLockStatus;</webidl>
3745       <descriptive>
3746          <description>
3747           <p>
3748 DoorLockStatus
3749           </p>
3750          </description>
3751           <brief>
3752  MUST returns dictionary of Door (byte) and Status (bool locked = true, unlocked = false).  See 
3753           </brief>
3754       </descriptive>
3755       <Type type="object"/>
3756     </Attribute>
3757     <Attribute name="childLockStatus" id="::DoorStatus::childLockStatus">
3758       <webidl>         attribute boolean childLockStatus;</webidl>
3759       <descriptive>
3760          <description>
3761           <p>
3762 ChildLockStatus
3763           </p>
3764          </description>
3765           <brief>
3766  MUST returns Child lock status of rear doors.  active = true, inactive = false.    
3767 Setting this to 'true' will prevent the rear doors from being opened    
3768 from the inside.    
3769           </brief>
3770       </descriptive>
3771       <Type type="boolean"/>
3772     </Attribute>
3773   </Interface>
3774   <Interface name="SeatBeltStatus" id="::SeatBeltStatus">
3775     <webidl>[NoInterfaceObject]
3776 interface SeatBeltStatus : <ref>VehiclePropertyType</ref>  { 
3777         const unsigned short SEATBELTLOCATION_DRIVER= 0;    
3778         const unsigned short SEATBELTLOCATION_MIDDLEFRONT = 1;    
3779         const unsigned short SEATBELTLOCATION_PASSENGER = 2;    
3780         const unsigned short SEATBELTLOCATION_LEFTREAR = 3;    
3781         const unsigned short SEATBELTLOCATION_MIDDLEREAR = 4;    
3782         const unsigned short SEATBELTLOCATION_RIGHTREAR = 5;    
3783
3784          attribute object seatBeltStatus;
3785 };</webidl>
3786     <ExtendedAttributeList>
3787       <ExtendedAttribute name="NoInterfaceObject">
3788         <webidl>NoInterfaceObject</webidl>
3789       </ExtendedAttribute>
3790     </ExtendedAttributeList>
3791     <InterfaceInheritance>
3792       <Name name="VehiclePropertyType"/>
3793     </InterfaceInheritance>
3794     <Const name="SEATBELTLOCATION_DRIVER" value="0" id="::SeatBeltStatus::SEATBELTLOCATION_DRIVER">
3795       <webidl>        const unsigned short SEATBELTLOCATION_DRIVER= 0;</webidl>
3796       <Type type="unsigned short"/>
3797     </Const>
3798     <Const name="SEATBELTLOCATION_MIDDLEFRONT" value="1" id="::SeatBeltStatus::SEATBELTLOCATION_MIDDLEFRONT">
3799       <webidl>        const unsigned short SEATBELTLOCATION_MIDDLEFRONT = 1;</webidl>
3800       <Type type="unsigned short"/>
3801     </Const>
3802     <Const name="SEATBELTLOCATION_PASSENGER" value="2" id="::SeatBeltStatus::SEATBELTLOCATION_PASSENGER">
3803       <webidl>        const unsigned short SEATBELTLOCATION_PASSENGER = 2;</webidl>
3804       <Type type="unsigned short"/>
3805     </Const>
3806     <Const name="SEATBELTLOCATION_LEFTREAR" value="3" id="::SeatBeltStatus::SEATBELTLOCATION_LEFTREAR">
3807       <webidl>        const unsigned short SEATBELTLOCATION_LEFTREAR = 3;</webidl>
3808       <Type type="unsigned short"/>
3809     </Const>
3810     <Const name="SEATBELTLOCATION_MIDDLEREAR" value="4" id="::SeatBeltStatus::SEATBELTLOCATION_MIDDLEREAR">
3811       <webidl>        const unsigned short SEATBELTLOCATION_MIDDLEREAR = 4;</webidl>
3812       <Type type="unsigned short"/>
3813     </Const>
3814     <Const name="SEATBELTLOCATION_RIGHTREAR" value="5" id="::SeatBeltStatus::SEATBELTLOCATION_RIGHTREAR">
3815       <webidl>        const unsigned short SEATBELTLOCATION_RIGHTREAR = 5;</webidl>
3816       <Type type="unsigned short"/>
3817     </Const>
3818     <Attribute name="seatBeltStatus" id="::SeatBeltStatus::seatBeltStatus">
3819       <webidl>         attribute object seatBeltStatus;</webidl>
3820       <descriptive>
3821          <description>
3822           <p>
3823 SeatBeltStatus
3824           </p>
3825          </description>
3826           <brief>
3827  MUST returns dictionary of Seat Belt (byte, see SEATBELTLOCATION) and Status (bool: Fasten = true, Unfastened = false)    
3828           </brief>
3829       </descriptive>
3830       <Type type="object"/>
3831     </Attribute>
3832   </Interface>
3833   <Interface name="OccupantStatus" id="::OccupantStatus">
3834     <webidl>[NoInterfaceObject]
3835 interface OccupantStatus : <ref>VehiclePropertyType</ref>  { 
3836         const unsigned short OCCUPANTLOCATION_DRIVER = 0;    
3837         const unsigned short OCCUPANTLOCATION_FRONTMIDDLE = 1;    
3838         const unsigned short OCCUPANTLOCATION_PASSENGER= 2;    
3839         const unsigned short OCCUPANTLOCATION_LEFTREAR = 3;    
3840         const unsigned short OCCUPANTLOCATION_MIDDLEREAR = 4;    
3841         const unsigned short OCCUPANTLOCATION_RIGHTREAR = 5;    
3842         const unsigned short OCCUPANTSTATUS_VACANT = 0;    
3843         const unsigned short OCCUPANTSTATUS_CHILD = 1;    
3844         const unsigned short OCCUPANTSTATUS_ADULT = 2;    
3845
3846          attribute object occupantStatus;
3847 };</webidl>
3848     <ExtendedAttributeList>
3849       <ExtendedAttribute name="NoInterfaceObject">
3850         <webidl>NoInterfaceObject</webidl>
3851       </ExtendedAttribute>
3852     </ExtendedAttributeList>
3853     <InterfaceInheritance>
3854       <Name name="VehiclePropertyType"/>
3855     </InterfaceInheritance>
3856     <Const name="OCCUPANTLOCATION_DRIVER" value="0" id="::OccupantStatus::OCCUPANTLOCATION_DRIVER">
3857       <webidl>        const unsigned short OCCUPANTLOCATION_DRIVER = 0;</webidl>
3858       <Type type="unsigned short"/>
3859     </Const>
3860     <Const name="OCCUPANTLOCATION_FRONTMIDDLE" value="1" id="::OccupantStatus::OCCUPANTLOCATION_FRONTMIDDLE">
3861       <webidl>        const unsigned short OCCUPANTLOCATION_FRONTMIDDLE = 1;</webidl>
3862       <Type type="unsigned short"/>
3863     </Const>
3864     <Const name="OCCUPANTLOCATION_PASSENGER" value="2" id="::OccupantStatus::OCCUPANTLOCATION_PASSENGER">
3865       <webidl>        const unsigned short OCCUPANTLOCATION_PASSENGER= 2;</webidl>
3866       <Type type="unsigned short"/>
3867     </Const>
3868     <Const name="OCCUPANTLOCATION_LEFTREAR" value="3" id="::OccupantStatus::OCCUPANTLOCATION_LEFTREAR">
3869       <webidl>        const unsigned short OCCUPANTLOCATION_LEFTREAR = 3;</webidl>
3870       <Type type="unsigned short"/>
3871     </Const>
3872     <Const name="OCCUPANTLOCATION_MIDDLEREAR" value="4" id="::OccupantStatus::OCCUPANTLOCATION_MIDDLEREAR">
3873       <webidl>        const unsigned short OCCUPANTLOCATION_MIDDLEREAR = 4;</webidl>
3874       <Type type="unsigned short"/>
3875     </Const>
3876     <Const name="OCCUPANTLOCATION_RIGHTREAR" value="5" id="::OccupantStatus::OCCUPANTLOCATION_RIGHTREAR">
3877       <webidl>        const unsigned short OCCUPANTLOCATION_RIGHTREAR = 5;</webidl>
3878       <Type type="unsigned short"/>
3879     </Const>
3880     <Const name="OCCUPANTSTATUS_VACANT" value="0" id="::OccupantStatus::OCCUPANTSTATUS_VACANT">
3881       <webidl>        const unsigned short OCCUPANTSTATUS_VACANT = 0;</webidl>
3882       <Type type="unsigned short"/>
3883     </Const>
3884     <Const name="OCCUPANTSTATUS_CHILD" value="1" id="::OccupantStatus::OCCUPANTSTATUS_CHILD">
3885       <webidl>        const unsigned short OCCUPANTSTATUS_CHILD = 1;</webidl>
3886       <Type type="unsigned short"/>
3887     </Const>
3888     <Const name="OCCUPANTSTATUS_ADULT" value="2" id="::OccupantStatus::OCCUPANTSTATUS_ADULT">
3889       <webidl>        const unsigned short OCCUPANTSTATUS_ADULT = 2;</webidl>
3890       <Type type="unsigned short"/>
3891     </Const>
3892     <Attribute name="occupantStatus" id="::OccupantStatus::occupantStatus">
3893       <webidl>         attribute object occupantStatus;</webidl>
3894       <descriptive>
3895          <description>
3896           <p>
3897 OccupantStatus
3898           </p>
3899          </description>
3900           <brief>
3901  MUST returns dictionary of Occupant (byte see OCCUPANTLOCATION) and Status (byte, see 
3902           </brief>
3903       </descriptive>
3904       <Type type="object"/>
3905     </Attribute>
3906   </Interface>
3907   <Interface name="ObstacleDistance" id="::ObstacleDistance">
3908     <webidl>[NoInterfaceObject]
3909 interface ObstacleDistance : <ref>VehiclePropertyType</ref>  { 
3910         const unsigned short DISTANCESENSORLOCATION_LEFTFRONT = 0;    
3911         const unsigned short DISTANCESENSORLOCATION_RIGHTFRONT = 1;    
3912         const unsigned short DISTANCESENSORLOCATION_LEFTREAR = 2;    
3913         const unsigned short DISTANCESENSORLOCATION_RIGHTREAR = 3;    
3914         const unsigned short DISTANCESENSORLOCATION_LEFTBLINDSPOT = 4;    
3915         const unsigned short DISTANCESENSORLOCATION_RIGHTBLINDSPOT = 5;    
3916
3917          attribute object obstacleDistance;
3918 };</webidl>
3919     <ExtendedAttributeList>
3920       <ExtendedAttribute name="NoInterfaceObject">
3921         <webidl>NoInterfaceObject</webidl>
3922       </ExtendedAttribute>
3923     </ExtendedAttributeList>
3924     <InterfaceInheritance>
3925       <Name name="VehiclePropertyType"/>
3926     </InterfaceInheritance>
3927     <Const name="DISTANCESENSORLOCATION_LEFTFRONT" value="0" id="::ObstacleDistance::DISTANCESENSORLOCATION_LEFTFRONT">
3928       <webidl>        const unsigned short DISTANCESENSORLOCATION_LEFTFRONT = 0;</webidl>
3929       <Type type="unsigned short"/>
3930     </Const>
3931     <Const name="DISTANCESENSORLOCATION_RIGHTFRONT" value="1" id="::ObstacleDistance::DISTANCESENSORLOCATION_RIGHTFRONT">
3932       <webidl>        const unsigned short DISTANCESENSORLOCATION_RIGHTFRONT = 1;</webidl>
3933       <Type type="unsigned short"/>
3934     </Const>
3935     <Const name="DISTANCESENSORLOCATION_LEFTREAR" value="2" id="::ObstacleDistance::DISTANCESENSORLOCATION_LEFTREAR">
3936       <webidl>        const unsigned short DISTANCESENSORLOCATION_LEFTREAR = 2;</webidl>
3937       <Type type="unsigned short"/>
3938     </Const>
3939     <Const name="DISTANCESENSORLOCATION_RIGHTREAR" value="3" id="::ObstacleDistance::DISTANCESENSORLOCATION_RIGHTREAR">
3940       <webidl>        const unsigned short DISTANCESENSORLOCATION_RIGHTREAR = 3;</webidl>
3941       <Type type="unsigned short"/>
3942     </Const>
3943     <Const name="DISTANCESENSORLOCATION_LEFTBLINDSPOT" value="4" id="::ObstacleDistance::DISTANCESENSORLOCATION_LEFTBLINDSPOT">
3944       <webidl>        const unsigned short DISTANCESENSORLOCATION_LEFTBLINDSPOT = 4;</webidl>
3945       <Type type="unsigned short"/>
3946     </Const>
3947     <Const name="DISTANCESENSORLOCATION_RIGHTBLINDSPOT" value="5" id="::ObstacleDistance::DISTANCESENSORLOCATION_RIGHTBLINDSPOT">
3948       <webidl>        const unsigned short DISTANCESENSORLOCATION_RIGHTBLINDSPOT = 5;</webidl>
3949       <Type type="unsigned short"/>
3950     </Const>
3951     <Attribute name="obstacleDistance" id="::ObstacleDistance::obstacleDistance">
3952       <webidl>         attribute object obstacleDistance;</webidl>
3953       <descriptive>
3954          <description>
3955           <p>
3956 ObstacleDistance
3957           </p>
3958          </description>
3959           <brief>
3960  MUST returns dictionary of Distance Sensor (byte, see DISTANCESENSORLOCATION) and distance (double) in m.    
3961           </brief>
3962       </descriptive>
3963       <Type type="object"/>
3964     </Attribute>
3965   </Interface>
3966 </Module>
3967 <Module name="Speech" id="::Speech">
3968   <webidl>  module Speech {
3969   [NoInterfaceObject]
3970    interface SpeechManagerObject {
3971                readonly attribute <ref>SpeechManager</ref> speech;
3972    };
3973    <ref>Tizen</ref> implements <ref>SpeechManagerObject</ref>;
3974
3975
3976    [NoInterfaceObject]
3977    interface SpeechManager { 
3978                    void vocalizeString(DOMString speakString);
3979    };
3980
3981    [Constructor]
3982     interface SpeechRecognition : <ref>EventTarget</ref> {
3983         attribute <ref>SpeechGrammarList</ref> grammars;
3984         attribute DOMString lang;
3985         attribute boolean continuous;
3986         attribute boolean interimResults;
3987         attribute unsigned long maxAlternatives;
3988         attribute DOMString serviceURI;
3989
3990         void start();
3991         void stop();
3992         void abort();
3993
3994         attribute <ref>EventHandler</ref> onaudiostart;
3995         attribute <ref>EventHandler</ref> onsoundstart;
3996         attribute <ref>EventHandler</ref> onspeechstart;
3997         attribute <ref>EventHandler</ref> onspeechend;
3998         attribute <ref>EventHandler</ref> onsoundend;
3999         attribute <ref>EventHandler</ref> onaudioend;
4000         attribute <ref>EventHandler</ref> onresult;
4001         attribute <ref>EventHandler</ref> onnomatch;
4002         attribute <ref>EventHandler</ref> onerror;
4003         attribute <ref>EventHandler</ref> onstart;
4004         attribute <ref>EventHandler</ref> onend;
4005     };
4006
4007         enum ErrorCode {
4008           &quot;no-speech&quot;,
4009           &quot;aborted&quot;,
4010           &quot;audio-capture&quot;,
4011           &quot;network&quot;,
4012           &quot;not-allowed&quot;,
4013           &quot;service-not-allowed&quot;,
4014           &quot;bad-grammar&quot;,
4015           &quot;language-not-supported&quot;
4016         };
4017
4018     interface SpeechRecognitionError : <ref>Event</ref> {
4019         readonly attribute <ref>ErrorCode</ref> error;
4020         readonly attribute DOMString message;
4021     };
4022
4023     interface SpeechRecognitionAlternative {
4024         readonly attribute DOMString transcript;
4025         readonly attribute float confidence;
4026     };
4027
4028     interface SpeechRecognitionResult {
4029         readonly attribute unsigned long length;
4030         getter <ref>SpeechRecognitionAlternative</ref> item(unsigned long index);
4031         readonly attribute boolean final;
4032     };
4033
4034     interface SpeechRecognitionResultList {
4035         readonly attribute unsigned long length;
4036         getter <ref>SpeechRecognitionResult</ref> item(unsigned long index);
4037     };
4038
4039     interface SpeechRecognitionEvent : <ref>Event</ref> {
4040         readonly attribute unsigned long resultIndex;
4041         readonly attribute <ref>SpeechRecognitionResultList</ref> results;
4042         readonly attribute any interpretation;
4043         readonly attribute <ref>Document</ref> emma;
4044     };
4045
4046     [Constructor]
4047     interface SpeechGrammar {
4048         attribute DOMString src;
4049         attribute float weight;
4050     };
4051
4052     [Constructor]
4053     interface SpeechGrammarList {
4054         readonly attribute unsigned long length;
4055         getter <ref>SpeechGrammar</ref> item(unsigned long index);
4056         void addFromURI(DOMString src, optional float weight);
4057         void addFromString(DOMString string, optional float weight);
4058     };
4059 };</webidl>
4060   <Interface name="SpeechManagerObject" id="::SpeechManagerObject">
4061     <webidl>   [NoInterfaceObject]
4062    interface SpeechManagerObject {
4063                readonly attribute <ref>SpeechManager</ref> speech;
4064    };</webidl>
4065     <ExtendedAttributeList>
4066       <ExtendedAttribute name="NoInterfaceObject">
4067         <webidl>NoInterfaceObject</webidl>
4068       </ExtendedAttribute>
4069     </ExtendedAttributeList>
4070     <Attribute readonly="readonly" name="speech" id="::SpeechManagerObject::speech">
4071       <webidl>               readonly attribute <ref>SpeechManager</ref> speech;</webidl>
4072       <Type name="SpeechManager"/>
4073     </Attribute>
4074   </Interface>
4075   <Implements name1="Tizen" name2="SpeechManagerObject">
4076     <webidl>   <ref>Tizen</ref> implements <ref>SpeechManagerObject</ref>;</webidl>
4077   </Implements>
4078   <Interface name="SpeechManager" id="::SpeechManager">
4079     <webidl>   [NoInterfaceObject]
4080    interface SpeechManager { 
4081                    void vocalizeString(DOMString speakString);
4082    };</webidl>
4083     <ExtendedAttributeList>
4084       <ExtendedAttribute name="NoInterfaceObject">
4085         <webidl>NoInterfaceObject</webidl>
4086       </ExtendedAttribute>
4087     </ExtendedAttributeList>
4088     <Operation name="vocalizeString" id="::SpeechManager::vocalizeString">
4089       <webidl>                   void vocalizeString(DOMString speakString);</webidl>
4090       <Type type="void"/>
4091       <ArgumentList>
4092         <Argument name="speakString">
4093           <Type type="DOMString"/>
4094         </Argument>
4095       </ArgumentList>
4096     </Operation>
4097   </Interface>
4098   <Interface name="SpeechRecognition" id="::SpeechRecognition">
4099     <webidl>   [Constructor]
4100     interface SpeechRecognition : <ref>EventTarget</ref> {
4101         attribute <ref>SpeechGrammarList</ref> grammars;
4102         attribute DOMString lang;
4103         attribute boolean continuous;
4104         attribute boolean interimResults;
4105         attribute unsigned long maxAlternatives;
4106         attribute DOMString serviceURI;
4107
4108         void start();
4109         void stop();
4110         void abort();
4111
4112         attribute <ref>EventHandler</ref> onaudiostart;
4113         attribute <ref>EventHandler</ref> onsoundstart;
4114         attribute <ref>EventHandler</ref> onspeechstart;
4115         attribute <ref>EventHandler</ref> onspeechend;
4116         attribute <ref>EventHandler</ref> onsoundend;
4117         attribute <ref>EventHandler</ref> onaudioend;
4118         attribute <ref>EventHandler</ref> onresult;
4119         attribute <ref>EventHandler</ref> onnomatch;
4120         attribute <ref>EventHandler</ref> onerror;
4121         attribute <ref>EventHandler</ref> onstart;
4122         attribute <ref>EventHandler</ref> onend;
4123     };</webidl>
4124     <ExtendedAttributeList>
4125       <ExtendedAttribute name="Constructor">
4126         <webidl>Constructor</webidl>
4127       </ExtendedAttribute>
4128     </ExtendedAttributeList>
4129     <InterfaceInheritance>
4130       <Name name="EventTarget"/>
4131     </InterfaceInheritance>
4132     <Attribute name="grammars" id="::SpeechRecognition::grammars">
4133       <webidl>        attribute <ref>SpeechGrammarList</ref> grammars;</webidl>
4134       <Type name="SpeechGrammarList"/>
4135     </Attribute>
4136     <Attribute name="lang" id="::SpeechRecognition::lang">
4137       <webidl>        attribute DOMString lang;</webidl>
4138       <Type type="DOMString"/>
4139     </Attribute>
4140     <Attribute name="continuous" id="::SpeechRecognition::continuous">
4141       <webidl>        attribute boolean continuous;</webidl>
4142       <Type type="boolean"/>
4143     </Attribute>
4144     <Attribute name="interimResults" id="::SpeechRecognition::interimResults">
4145       <webidl>        attribute boolean interimResults;</webidl>
4146       <Type type="boolean"/>
4147     </Attribute>
4148     <Attribute name="maxAlternatives" id="::SpeechRecognition::maxAlternatives">
4149       <webidl>        attribute unsigned long maxAlternatives;</webidl>
4150       <Type type="unsigned long"/>
4151     </Attribute>
4152     <Attribute name="serviceURI" id="::SpeechRecognition::serviceURI">
4153       <webidl>        attribute DOMString serviceURI;</webidl>
4154       <Type type="DOMString"/>
4155     </Attribute>
4156     <Operation name="start" id="::SpeechRecognition::start">
4157       <webidl>        void start();</webidl>
4158       <Type type="void"/>
4159       <ArgumentList/>
4160     </Operation>
4161     <Operation name="stop" id="::SpeechRecognition::stop">
4162       <webidl>        void stop();</webidl>
4163       <Type type="void"/>
4164       <ArgumentList/>
4165     </Operation>
4166     <Operation name="abort" id="::SpeechRecognition::abort">
4167       <webidl>        void abort();</webidl>
4168       <Type type="void"/>
4169       <ArgumentList/>
4170     </Operation>
4171     <Attribute name="onaudiostart" id="::SpeechRecognition::onaudiostart">
4172       <webidl>        attribute <ref>EventHandler</ref> onaudiostart;</webidl>
4173       <Type name="EventHandler"/>
4174     </Attribute>
4175     <Attribute name="onsoundstart" id="::SpeechRecognition::onsoundstart">
4176       <webidl>        attribute <ref>EventHandler</ref> onsoundstart;</webidl>
4177       <Type name="EventHandler"/>
4178     </Attribute>
4179     <Attribute name="onspeechstart" id="::SpeechRecognition::onspeechstart">
4180       <webidl>        attribute <ref>EventHandler</ref> onspeechstart;</webidl>
4181       <Type name="EventHandler"/>
4182     </Attribute>
4183     <Attribute name="onspeechend" id="::SpeechRecognition::onspeechend">
4184       <webidl>        attribute <ref>EventHandler</ref> onspeechend;</webidl>
4185       <Type name="EventHandler"/>
4186     </Attribute>
4187     <Attribute name="onsoundend" id="::SpeechRecognition::onsoundend">
4188       <webidl>        attribute <ref>EventHandler</ref> onsoundend;</webidl>
4189       <Type name="EventHandler"/>
4190     </Attribute>
4191     <Attribute name="onaudioend" id="::SpeechRecognition::onaudioend">
4192       <webidl>        attribute <ref>EventHandler</ref> onaudioend;</webidl>
4193       <Type name="EventHandler"/>
4194     </Attribute>
4195     <Attribute name="onresult" id="::SpeechRecognition::onresult">
4196       <webidl>        attribute <ref>EventHandler</ref> onresult;</webidl>
4197       <Type name="EventHandler"/>
4198     </Attribute>
4199     <Attribute name="onnomatch" id="::SpeechRecognition::onnomatch">
4200       <webidl>        attribute <ref>EventHandler</ref> onnomatch;</webidl>
4201       <Type name="EventHandler"/>
4202     </Attribute>
4203     <Attribute name="onerror" id="::SpeechRecognition::onerror">
4204       <webidl>        attribute <ref>EventHandler</ref> onerror;</webidl>
4205       <Type name="EventHandler"/>
4206     </Attribute>
4207     <Attribute name="onstart" id="::SpeechRecognition::onstart">
4208       <webidl>        attribute <ref>EventHandler</ref> onstart;</webidl>
4209       <Type name="EventHandler"/>
4210     </Attribute>
4211     <Attribute name="onend" id="::SpeechRecognition::onend">
4212       <webidl>        attribute <ref>EventHandler</ref> onend;</webidl>
4213       <Type name="EventHandler"/>
4214     </Attribute>
4215   </Interface>
4216   <Enum name="ErrorCode" id="::ErrorCode">
4217     <webidl>        enum ErrorCode {
4218           &quot;no-speech&quot;,
4219           &quot;aborted&quot;,
4220           &quot;audio-capture&quot;,
4221           &quot;network&quot;,
4222           &quot;not-allowed&quot;,
4223           &quot;service-not-allowed&quot;,
4224           &quot;bad-grammar&quot;,
4225           &quot;language-not-supported&quot;
4226         };</webidl>
4227     <EnumValue stringvalue="no-speech">
4228       <webidl>          &quot;no-speech</webidl>
4229     </EnumValue>
4230     <EnumValue stringvalue="aborted">
4231       <webidl>          &quot;aborted</webidl>
4232     </EnumValue>
4233     <EnumValue stringvalue="audio-capture">
4234       <webidl>          &quot;audio-capture</webidl>
4235     </EnumValue>
4236     <EnumValue stringvalue="network">
4237       <webidl>          &quot;network</webidl>
4238     </EnumValue>
4239     <EnumValue stringvalue="not-allowed">
4240       <webidl>          &quot;not-allowed</webidl>
4241     </EnumValue>
4242     <EnumValue stringvalue="service-not-allowed">
4243       <webidl>          &quot;service-not-allowed</webidl>
4244     </EnumValue>
4245     <EnumValue stringvalue="bad-grammar">
4246       <webidl>          &quot;bad-grammar</webidl>
4247     </EnumValue>
4248     <EnumValue stringvalue="language-not-supported">
4249       <webidl>          &quot;language-not-supported</webidl>
4250     </EnumValue>
4251   </Enum>
4252   <Interface name="SpeechRecognitionError" id="::SpeechRecognitionError">
4253     <webidl>    interface SpeechRecognitionError : <ref>Event</ref> {
4254         readonly attribute <ref>ErrorCode</ref> error;
4255         readonly attribute DOMString message;
4256     };</webidl>
4257     <InterfaceInheritance>
4258       <Name name="Event"/>
4259     </InterfaceInheritance>
4260     <Attribute readonly="readonly" name="error" id="::SpeechRecognitionError::error">
4261       <webidl>        readonly attribute <ref>ErrorCode</ref> error;</webidl>
4262       <Type name="ErrorCode"/>
4263     </Attribute>
4264     <Attribute readonly="readonly" name="message" id="::SpeechRecognitionError::message">
4265       <webidl>        readonly attribute DOMString message;</webidl>
4266       <Type type="DOMString"/>
4267     </Attribute>
4268   </Interface>
4269   <Interface name="SpeechRecognitionAlternative" id="::SpeechRecognitionAlternative">
4270     <webidl>    interface SpeechRecognitionAlternative {
4271         readonly attribute DOMString transcript;
4272         readonly attribute float confidence;
4273     };</webidl>
4274     <Attribute readonly="readonly" name="transcript" id="::SpeechRecognitionAlternative::transcript">
4275       <webidl>        readonly attribute DOMString transcript;</webidl>
4276       <Type type="DOMString"/>
4277     </Attribute>
4278     <Attribute readonly="readonly" name="confidence" id="::SpeechRecognitionAlternative::confidence">
4279       <webidl>        readonly attribute float confidence;</webidl>
4280       <Type type="float"/>
4281     </Attribute>
4282   </Interface>
4283   <Interface name="SpeechRecognitionResult" id="::SpeechRecognitionResult">
4284     <webidl>    interface SpeechRecognitionResult {
4285         readonly attribute unsigned long length;
4286         getter <ref>SpeechRecognitionAlternative</ref> item(unsigned long index);
4287         readonly attribute boolean final;
4288     };</webidl>
4289     <Attribute readonly="readonly" name="length" id="::SpeechRecognitionResult::length">
4290       <webidl>        readonly attribute unsigned long length;</webidl>
4291       <Type type="unsigned long"/>
4292     </Attribute>
4293     <Operation getter="getter" name="item" id="::SpeechRecognitionResult::item">
4294       <webidl>        getter <ref>SpeechRecognitionAlternative</ref> item(unsigned long index);</webidl>
4295       <Type name="SpeechRecognitionAlternative"/>
4296       <ArgumentList>
4297         <Argument name="index">
4298           <Type type="unsigned long"/>
4299         </Argument>
4300       </ArgumentList>
4301     </Operation>
4302     <Attribute readonly="readonly" name="final" id="::SpeechRecognitionResult::final">
4303       <webidl>        readonly attribute boolean final;</webidl>
4304       <Type type="boolean"/>
4305     </Attribute>
4306   </Interface>
4307   <Interface name="SpeechRecognitionResultList" id="::SpeechRecognitionResultList">
4308     <webidl>    interface SpeechRecognitionResultList {
4309         readonly attribute unsigned long length;
4310         getter <ref>SpeechRecognitionResult</ref> item(unsigned long index);
4311     };</webidl>
4312     <Attribute readonly="readonly" name="length" id="::SpeechRecognitionResultList::length">
4313       <webidl>        readonly attribute unsigned long length;</webidl>
4314       <Type type="unsigned long"/>
4315     </Attribute>
4316     <Operation getter="getter" name="item" id="::SpeechRecognitionResultList::item">
4317       <webidl>        getter <ref>SpeechRecognitionResult</ref> item(unsigned long index);</webidl>
4318       <Type name="SpeechRecognitionResult"/>
4319       <ArgumentList>
4320         <Argument name="index">
4321           <Type type="unsigned long"/>
4322         </Argument>
4323       </ArgumentList>
4324     </Operation>
4325   </Interface>
4326   <Interface name="SpeechRecognitionEvent" id="::SpeechRecognitionEvent">
4327     <webidl>    interface SpeechRecognitionEvent : <ref>Event</ref> {
4328         readonly attribute unsigned long resultIndex;
4329         readonly attribute <ref>SpeechRecognitionResultList</ref> results;
4330         readonly attribute any interpretation;
4331         readonly attribute <ref>Document</ref> emma;
4332     };</webidl>
4333     <InterfaceInheritance>
4334       <Name name="Event"/>
4335     </InterfaceInheritance>
4336     <Attribute readonly="readonly" name="resultIndex" id="::SpeechRecognitionEvent::resultIndex">
4337       <webidl>        readonly attribute unsigned long resultIndex;</webidl>
4338       <Type type="unsigned long"/>
4339     </Attribute>
4340     <Attribute readonly="readonly" name="results" id="::SpeechRecognitionEvent::results">
4341       <webidl>        readonly attribute <ref>SpeechRecognitionResultList</ref> results;</webidl>
4342       <Type name="SpeechRecognitionResultList"/>
4343     </Attribute>
4344     <Attribute readonly="readonly" name="interpretation" id="::SpeechRecognitionEvent::interpretation">
4345       <webidl>        readonly attribute any interpretation;</webidl>
4346       <Type type="any"/>
4347     </Attribute>
4348     <Attribute readonly="readonly" name="emma" id="::SpeechRecognitionEvent::emma">
4349       <webidl>        readonly attribute <ref>Document</ref> emma;</webidl>
4350       <Type name="Document"/>
4351     </Attribute>
4352   </Interface>
4353   <Interface name="SpeechGrammar" id="::SpeechGrammar">
4354     <webidl>    [Constructor]
4355     interface SpeechGrammar {
4356         attribute DOMString src;
4357         attribute float weight;
4358     };</webidl>
4359     <ExtendedAttributeList>
4360       <ExtendedAttribute name="Constructor">
4361         <webidl>Constructor</webidl>
4362       </ExtendedAttribute>
4363     </ExtendedAttributeList>
4364     <Attribute name="src" id="::SpeechGrammar::src">
4365       <webidl>        attribute DOMString src;</webidl>
4366       <Type type="DOMString"/>
4367     </Attribute>
4368     <Attribute name="weight" id="::SpeechGrammar::weight">
4369       <webidl>        attribute float weight;</webidl>
4370       <Type type="float"/>
4371     </Attribute>
4372   </Interface>
4373   <Interface name="SpeechGrammarList" id="::SpeechGrammarList">
4374     <webidl>    [Constructor]
4375     interface SpeechGrammarList {
4376         readonly attribute unsigned long length;
4377         getter <ref>SpeechGrammar</ref> item(unsigned long index);
4378         void addFromURI(DOMString src, optional float weight);
4379         void addFromString(DOMString string, optional float weight);
4380     };</webidl>
4381     <ExtendedAttributeList>
4382       <ExtendedAttribute name="Constructor">
4383         <webidl>Constructor</webidl>
4384       </ExtendedAttribute>
4385     </ExtendedAttributeList>
4386     <Attribute readonly="readonly" name="length" id="::SpeechGrammarList::length">
4387       <webidl>        readonly attribute unsigned long length;</webidl>
4388       <Type type="unsigned long"/>
4389     </Attribute>
4390     <Operation getter="getter" name="item" id="::SpeechGrammarList::item">
4391       <webidl>        getter <ref>SpeechGrammar</ref> item(unsigned long index);</webidl>
4392       <Type name="SpeechGrammar"/>
4393       <ArgumentList>
4394         <Argument name="index">
4395           <Type type="unsigned long"/>
4396         </Argument>
4397       </ArgumentList>
4398     </Operation>
4399     <Operation name="addFromURI" id="::SpeechGrammarList::addFromURI">
4400       <webidl>        void addFromURI(DOMString src, optional float weight);</webidl>
4401       <Type type="void"/>
4402       <ArgumentList>
4403         <Argument name="src">
4404           <Type type="DOMString"/>
4405         </Argument>
4406         <Argument optional="optional" name="weight">
4407           <Type type="float"/>
4408         </Argument>
4409       </ArgumentList>
4410     </Operation>
4411     <Operation name="addFromString" id="::SpeechGrammarList::addFromString">
4412       <webidl>        void addFromString(DOMString string, optional float weight);</webidl>
4413       <Type type="void"/>
4414       <ArgumentList>
4415         <Argument name="string">
4416           <Type type="DOMString"/>
4417         </Argument>
4418         <Argument optional="optional" name="weight">
4419           <Type type="float"/>
4420         </Argument>
4421       </ArgumentList>
4422     </Operation>
4423   </Interface>
4424 </Module>
4425 <Module name="MediaServer" id="::MediaServer">
4426     <webidl>module MediaServer {
4427
4428
4429
4430 partial interface Navigator   {
4431          readonly attribute <ref>MediaServerManager</ref> mediaserver;
4432 };
4433
4434
4435
4436 [NoInterfaceObject]
4437 interface MediaServerManager  {
4438
4439         <ref>scanNetwork</ref>(<ref>MediaServerFoundServerCallback</ref> successCallback, optional <ref>MediaServerErrorCallback</ref> errorCallback);
4440 };
4441
4442
4443
4444 [NoInterfaceObject]
4445 interface MediaServer  {
4446
4447          readonly attribute DOMString id;
4448
4449          readonly attribute DOMString friendlyName;
4450
4451          readonly attribute object root;
4452
4453         <ref>browse</ref>(DOMString containerId, DOMString sortMode, unsigned long count, unsigned long offset, <ref>MediaServerBrowseFindCallback</ref> successCallback, optional <ref>MediaServerErrorCallback</ref> errorCallback);
4454
4455         <ref>find</ref>(DOMString containerId, DOMString searchFilter, DOMString sortMode, unsigned long count, unsigned long offset, <ref>MediaServerBrowseFindCallback</ref> successCallback, optional <ref>MediaServerErrorCallback</ref> errorCallback);
4456 };
4457
4458
4459
4460 [NoInterfaceObject]
4461 interface MediaServerError   {
4462         const unsigned short GENERIC = 1;
4463
4464          attribute unsigned short code;
4465
4466          attribute DOMString message;
4467 };
4468
4469
4470
4471 callback MediaServerFoundServerCallback = void (<ref>MediaServer</ref> value);
4472
4473 callback MediaServerBrowseFindCallback = void (sequence&lt;object> value);
4474
4475 callback MediaServerErrorCallback = void (<ref>MediaServerError</ref> error);
4476
4477 };</webidl>
4478     <descriptive>
4479        <description>
4480         <p>
4481 Details.
4482         </p>
4483        </description>
4484         <def-api-feature identifier="http://tizen.org/api/mediaserver">
4485           <descriptive>
4486             <brief>
4487  Allows access to the mediaserver API
4488             </brief>
4489           </descriptive>
4490         </def-api-feature>
4491     </descriptive>
4492     <Interface name="Navigator" partial="partial" id="::MediaServer::Navigator">
4493       <webidl>partial interface Navigator   {
4494          readonly attribute <ref>MediaServerManager</ref> mediaserver;
4495 };</webidl>
4496       <Attribute readonly="readonly" name="mediaserver" id="::MediaServer::Navigator::mediaserver">
4497         <webidl>         readonly attribute <ref>MediaServerManager</ref> mediaserver;</webidl>
4498         <Type name="MediaServerManager"/>
4499       </Attribute>
4500     </Interface>
4501     <Interface name="MediaServerManager" id="::MediaServer::MediaServerManager">
4502       <webidl>[NoInterfaceObject]
4503 interface MediaServerManager  {
4504
4505         <ref>scanNetwork</ref>(<ref>MediaServerFoundServerCallback</ref> successCallback, optional <ref>MediaServerErrorCallback</ref> errorCallback);
4506 };</webidl>
4507       <ExtendedAttributeList>
4508         <ExtendedAttribute name="NoInterfaceObject">
4509           <webidl>NoInterfaceObject</webidl>
4510         </ExtendedAttribute>
4511       </ExtendedAttributeList>
4512       <Operation>
4513         <webidl>        <ref>scanNetwork</ref>(<ref>MediaServerFoundServerCallback</ref> successCallback, optional <ref>MediaServerErrorCallback</ref> errorCallback);</webidl>
4514         <descriptive>
4515             <brief>
4516  Scans local network for MediaServers.
4517             </brief>
4518         </descriptive>
4519         <Type name="scanNetwork"/>
4520         <ArgumentList>
4521           <Argument name="successCallback">
4522             <descriptive>
4523                 <description><p>
4524  callback invoqued for each MediaServer discovered.
4525                 </p></description>
4526             </descriptive>
4527             <Type name="MediaServerFoundServerCallback"/>
4528           </Argument>
4529           <Argument optional="optional" name="errorCallback">
4530             <descriptive>
4531                 <description><p>
4532                 </p></description>
4533             </descriptive>
4534             <Type name="MediaServerErrorCallback"/>
4535           </Argument>
4536         </ArgumentList>
4537       </Operation>
4538     </Interface>
4539     <Interface name="MediaServer" id="::MediaServer::MediaServer">
4540       <webidl>[NoInterfaceObject]
4541 interface MediaServer  {
4542
4543          readonly attribute DOMString id;
4544
4545          readonly attribute DOMString friendlyName;
4546
4547          readonly attribute object root;
4548
4549         <ref>browse</ref>(DOMString containerId, DOMString sortMode, unsigned long count, unsigned long offset, <ref>MediaServerBrowseFindCallback</ref> successCallback, optional <ref>MediaServerErrorCallback</ref> errorCallback);
4550
4551         <ref>find</ref>(DOMString containerId, DOMString searchFilter, DOMString sortMode, unsigned long count, unsigned long offset, <ref>MediaServerBrowseFindCallback</ref> successCallback, optional <ref>MediaServerErrorCallback</ref> errorCallback);
4552 };</webidl>
4553       <ExtendedAttributeList>
4554         <ExtendedAttribute name="NoInterfaceObject">
4555           <webidl>NoInterfaceObject</webidl>
4556         </ExtendedAttribute>
4557       </ExtendedAttributeList>
4558       <Attribute readonly="readonly" name="id" id="::MediaServer::MediaServer::id">
4559         <webidl>         readonly attribute DOMString id;</webidl>
4560         <descriptive>
4561            <description>
4562             <p>
4563 id
4564             </p>
4565            </description>
4566             <brief>
4567  An opaque unique ID.
4568             </brief>
4569         </descriptive>
4570         <Type type="DOMString"/>
4571       </Attribute>
4572       <Attribute readonly="readonly" name="friendlyName" id="::MediaServer::MediaServer::friendlyName">
4573         <webidl>         readonly attribute DOMString friendlyName;</webidl>
4574         <descriptive>
4575            <description>
4576             <p>
4577 friendlyName
4578             </p>
4579            </description>
4580             <brief>
4581  A user-friendly name for the device.
4582             </brief>
4583         </descriptive>
4584         <Type type="DOMString"/>
4585       </Attribute>
4586       <Attribute readonly="readonly" name="root" id="::MediaServer::MediaServer::root">
4587         <webidl>         readonly attribute object root;</webidl>
4588         <descriptive>
4589            <description>
4590             <p>
4591 root
4592             </p>
4593            </description>
4594             <brief>
4595  Media Server root folder.
4596             </brief>
4597         </descriptive>
4598         <Type type="object"/>
4599       </Attribute>
4600       <Operation>
4601         <webidl>        <ref>browse</ref>(DOMString containerId, DOMString sortMode, unsigned long count, unsigned long offset, <ref>MediaServerBrowseFindCallback</ref> successCallback, optional <ref>MediaServerErrorCallback</ref> errorCallback);</webidl>
4602         <descriptive>
4603             <brief>
4604  Browses for media item under a given MediaContainer.
4605             </brief>
4606         </descriptive>
4607         <Type name="browse"/>
4608         <ArgumentList>
4609           <Argument name="containerId">
4610             <descriptive>
4611                 <description><p>
4612                 </p></description>
4613             </descriptive>
4614             <Type type="DOMString"/>
4615           </Argument>
4616           <Argument name="sortMode">
4617             <descriptive>
4618                 <description><p>
4619                 </p></description>
4620             </descriptive>
4621             <Type type="DOMString"/>
4622           </Argument>
4623           <Argument name="count">
4624             <descriptive>
4625                 <description><p>
4626                 </p></description>
4627             </descriptive>
4628             <Type type="unsigned long"/>
4629           </Argument>
4630           <Argument name="offset">
4631             <descriptive>
4632                 <description><p>
4633                 </p></description>
4634             </descriptive>
4635             <Type type="unsigned long"/>
4636           </Argument>
4637           <Argument name="successCallback">
4638             <descriptive>
4639                 <description><p>
4640                 </p></description>
4641             </descriptive>
4642             <Type name="MediaServerBrowseFindCallback"/>
4643           </Argument>
4644           <Argument optional="optional" name="errorCallback">
4645             <descriptive>
4646                 <description><p>
4647                 </p></description>
4648             </descriptive>
4649             <Type name="MediaServerErrorCallback"/>
4650           </Argument>
4651         </ArgumentList>
4652       </Operation>
4653       <Operation>
4654         <webidl>        <ref>find</ref>(DOMString containerId, DOMString searchFilter, DOMString sortMode, unsigned long count, unsigned long offset, <ref>MediaServerBrowseFindCallback</ref> successCallback, optional <ref>MediaServerErrorCallback</ref> errorCallback);</webidl>
4655         <descriptive>
4656             <brief>
4657  Searches for media item under a given MediaContainer.
4658             </brief>
4659         </descriptive>
4660         <Type name="find"/>
4661         <ArgumentList>
4662           <Argument name="containerId">
4663             <descriptive>
4664                 <description><p>
4665                 </p></description>
4666             </descriptive>
4667             <Type type="DOMString"/>
4668           </Argument>
4669           <Argument name="searchFilter">
4670             <descriptive>
4671                 <description><p>
4672                 </p></description>
4673             </descriptive>
4674             <Type type="DOMString"/>
4675           </Argument>
4676           <Argument name="sortMode">
4677             <descriptive>
4678                 <description><p>
4679                 </p></description>
4680             </descriptive>
4681             <Type type="DOMString"/>
4682           </Argument>
4683           <Argument name="count">
4684             <descriptive>
4685                 <description><p>
4686                 </p></description>
4687             </descriptive>
4688             <Type type="unsigned long"/>
4689           </Argument>
4690           <Argument name="offset">
4691             <descriptive>
4692                 <description><p>
4693                 </p></description>
4694             </descriptive>
4695             <Type type="unsigned long"/>
4696           </Argument>
4697           <Argument name="successCallback">
4698             <descriptive>
4699                 <description><p>
4700                 </p></description>
4701             </descriptive>
4702             <Type name="MediaServerBrowseFindCallback"/>
4703           </Argument>
4704           <Argument optional="optional" name="errorCallback">
4705             <descriptive>
4706                 <description><p>
4707                 </p></description>
4708             </descriptive>
4709             <Type name="MediaServerErrorCallback"/>
4710           </Argument>
4711         </ArgumentList>
4712       </Operation>
4713     </Interface>
4714     <Interface name="MediaServerError" id="::MediaServer::MediaServerError">
4715       <webidl>[NoInterfaceObject]
4716 interface MediaServerError   {
4717         const unsigned short GENERIC = 1;
4718
4719          attribute unsigned short code;
4720
4721          attribute DOMString message;
4722 };</webidl>
4723       <ExtendedAttributeList>
4724         <ExtendedAttribute name="NoInterfaceObject">
4725           <webidl>NoInterfaceObject</webidl>
4726         </ExtendedAttribute>
4727       </ExtendedAttributeList>
4728       <Const name="GENERIC" value="1" id="::MediaServer::MediaServerError::GENERIC">
4729         <webidl>        const unsigned short GENERIC = 1;</webidl>
4730         <Type type="unsigned short"/>
4731       </Const>
4732       <Attribute name="code" id="::MediaServer::MediaServerError::code">
4733         <webidl>         attribute unsigned short code;</webidl>
4734         <descriptive>
4735            <description>
4736             <p>
4737 code
4738 MUST return error code.
4739             </p>
4740            </description>
4741         </descriptive>
4742         <Type type="unsigned short"/>
4743       </Attribute>
4744       <Attribute name="message" id="::MediaServer::MediaServerError::message">
4745         <webidl>         attribute DOMString message;</webidl>
4746         <descriptive>
4747            <description>
4748             <p>
4749 message
4750 MUST return error message
4751             </p>
4752            </description>
4753         </descriptive>
4754         <Type type="DOMString"/>
4755       </Attribute>
4756     </Interface>
4757     <Callback name="MediaServerFoundServerCallback" id="::MediaServer::MediaServerFoundServerCallback">
4758       <webidl>callback MediaServerFoundServerCallback = void (<ref>MediaServer</ref> value);</webidl>
4759       <Type type="void"/>
4760       <ArgumentList>
4761         <Argument name="value">
4762           <Type name="MediaServer"/>
4763         </Argument>
4764       </ArgumentList>
4765     </Callback>
4766     <Callback name="MediaServerBrowseFindCallback" id="::MediaServer::MediaServerBrowseFindCallback">
4767       <webidl>callback MediaServerBrowseFindCallback = void (sequence&lt;object> value);</webidl>
4768       <Type type="void"/>
4769       <ArgumentList>
4770         <Argument name="value">
4771           <Type type="sequence">
4772             <Type type="object"/>
4773           </Type>
4774         </Argument>
4775       </ArgumentList>
4776     </Callback>
4777     <Callback name="MediaServerErrorCallback" id="::MediaServer::MediaServerErrorCallback">
4778       <webidl>callback MediaServerErrorCallback = void (<ref>MediaServerError</ref> error);</webidl>
4779       <Type type="void"/>
4780       <ArgumentList>
4781         <Argument name="error">
4782           <Type name="MediaServerError"/>
4783         </Argument>
4784       </ArgumentList>
4785     </Callback>
4786   </Module>
4787   <Module name="Alarm" id="::Alarm">
4788     <webidl>module Alarm {&#13;
4789 &#13;
4790     typedef DOMString AlarmId;&#13;
4791 &#13;
4792 &#13;
4793 &#13;
4794     [NoInterfaceObject] interface AlarmManagerObject {&#13;
4795         readonly attribute <ref>AlarmManager</ref> alarm;&#13;
4796     };&#13;
4797     <ref>Tizen</ref> implements <ref>AlarmManagerObject</ref>;&#13;
4798 &#13;
4799 &#13;
4800     [NoInterfaceObject] interface AlarmManager {&#13;
4801 &#13;
4802         const long PERIOD_MINUTE = 60;&#13;
4803         &#13;
4804 &#13;
4805         const long PERIOD_HOUR = 3600;&#13;
4806          &#13;
4807 &#13;
4808         const long PERIOD_DAY = 86400;&#13;
4809         &#13;
4810 &#13;
4811         const long PERIOD_WEEK = 604800;&#13;
4812 &#13;
4813 &#13;
4814         void add(<ref>Alarm</ref> alarm, <ref>ApplicationId</ref> applicationId, optional <ref>ApplicationControl</ref>? appControl) raises(<ref>WebAPIException</ref>);&#13;
4815 &#13;
4816 &#13;
4817         void remove(<ref>AlarmId</ref> id) raises(<ref>WebAPIException</ref>);&#13;
4818 &#13;
4819 &#13;
4820         void removeAll() raises(<ref>WebAPIException</ref>);&#13;
4821 &#13;
4822 &#13;
4823         <ref>Alarm</ref> get(<ref>AlarmId</ref> id) raises(<ref>WebAPIException</ref>);&#13;
4824 &#13;
4825 &#13;
4826         <ref>Alarm</ref>[] getAll() raises(<ref>WebAPIException</ref>);&#13;
4827     };&#13;
4828 &#13;
4829 &#13;
4830     [NoInterfaceObject] interface Alarm {&#13;
4831 &#13;
4832         readonly attribute <ref>AlarmId</ref>? id;&#13;
4833     };&#13;
4834  &#13;
4835     [Constructor(long delay, optional long? period)]&#13;
4836 &#13;
4837     interface AlarmRelative : <ref>Alarm</ref> {&#13;
4838 &#13;
4839         readonly attribute long delay;&#13;
4840         &#13;
4841 &#13;
4842         readonly attribute long? period;&#13;
4843 &#13;
4844 &#13;
4845         long? getRemainingSeconds() raises(<ref>WebAPIException</ref>);&#13;
4846     };&#13;
4847 &#13;
4848     [Constructor(Date date),&#13;
4849 &#13;
4850      Constructor(Date date, <ref>ByDayValue</ref>[] daysOfTheWeek),&#13;
4851 &#13;
4852      Constructor(Date date, long period)]&#13;
4853 &#13;
4854     interface AlarmAbsolute : <ref>Alarm</ref> {&#13;
4855 &#13;
4856         readonly attribute Date date;&#13;
4857 &#13;
4858 &#13;
4859         readonly attribute long? period;&#13;
4860 &#13;
4861 &#13;
4862         readonly attribute <ref>ByDayValue</ref>[] daysOfTheWeek;&#13;
4863 &#13;
4864 &#13;
4865         Date? getNextScheduledDate() raises(<ref>WebAPIException</ref>);&#13;
4866     };&#13;
4867 };</webidl>
4868     <descriptive>
4869         <brief>
4870  This API provides the functionality for scheduling the system alarm. 
4871 It allows you to run other applications and have them perform operations at the specific time. 
4872 You can schedule an alarm to go off once or to repeat at specific intervals. 
4873         </brief>
4874        <description>
4875         <p>
4876 Each application has its own individual alarm storage, that is, applications cannot view or edit alarms set by other applications.
4877         </p>
4878         <p>
4879 Once an alarm goes off, it will be removed from the alarm storage automatically.
4880 <em>AlarmManager</em> provides methods to manage alarms such as adding and removing. 
4881 For more information on the Alarm features, see <a href="../../org.tizen.web.appprogramming/html/guide/app_guide/alarm.htm">Alarm Guide</a>.
4882         </p>
4883        </description>
4884         <version>
4885  1.0
4886         </version>
4887     </descriptive>
4888     <Typedef name="AlarmId" id="::Alarm::AlarmId">
4889       <webidl>    typedef DOMString AlarmId;</webidl>
4890       <descriptive>
4891           <brief>
4892  An alarm identifier.
4893           </brief>
4894           <version>
4895  1.0
4896           </version>
4897       </descriptive>
4898       <Type type="DOMString"/>
4899     </Typedef>
4900     <Interface name="AlarmManagerObject" id="::Alarm::AlarmManagerObject">
4901       <webidl>    [NoInterfaceObject] interface AlarmManagerObject {&#13;
4902         readonly attribute <ref>AlarmManager</ref> alarm;&#13;
4903     };</webidl>
4904       <descriptive>
4905           <brief>
4906  This interface defines what is instantiated by the <em>Tizen </em>object from the Tizen Platform.
4907 There will be a <em>tizen.alarm </em>object that allows access to the functionality of the Alarm API.
4908           </brief>
4909           <version>
4910  1.0
4911           </version>
4912       </descriptive>
4913       <ExtendedAttributeList>
4914         <ExtendedAttribute name="NoInterfaceObject">
4915           <webidl>NoInterfaceObject</webidl>
4916         </ExtendedAttribute>
4917       </ExtendedAttributeList>
4918       <Attribute readonly="readonly" name="alarm" id="::Alarm::AlarmManagerObject::alarm">
4919         <webidl>        readonly attribute <ref>AlarmManager</ref> alarm;</webidl>
4920         <Type name="AlarmManager"/>
4921       </Attribute>
4922     </Interface>
4923     <Implements name1="Tizen" name2="AlarmManagerObject">
4924       <webidl>    <ref>Tizen</ref> implements <ref>AlarmManagerObject</ref>;</webidl>
4925     </Implements>
4926     <Interface name="AlarmManager" id="::Alarm::AlarmManager">
4927       <webidl>    [NoInterfaceObject] interface AlarmManager {&#13;
4928 &#13;
4929         const long PERIOD_MINUTE = 60;&#13;
4930         &#13;
4931 &#13;
4932         const long PERIOD_HOUR = 3600;&#13;
4933          &#13;
4934 &#13;
4935         const long PERIOD_DAY = 86400;&#13;
4936         &#13;
4937 &#13;
4938         const long PERIOD_WEEK = 604800;&#13;
4939 &#13;
4940 &#13;
4941         void add(<ref>Alarm</ref> alarm, <ref>ApplicationId</ref> applicationId, optional <ref>ApplicationControl</ref>? appControl) raises(<ref>WebAPIException</ref>);&#13;
4942 &#13;
4943 &#13;
4944         void remove(<ref>AlarmId</ref> id) raises(<ref>WebAPIException</ref>);&#13;
4945 &#13;
4946 &#13;
4947         void removeAll() raises(<ref>WebAPIException</ref>);&#13;
4948 &#13;
4949 &#13;
4950         <ref>Alarm</ref> get(<ref>AlarmId</ref> id) raises(<ref>WebAPIException</ref>);&#13;
4951 &#13;
4952 &#13;
4953         <ref>Alarm</ref>[] getAll() raises(<ref>WebAPIException</ref>);&#13;
4954     };</webidl>
4955       <descriptive>
4956           <brief>
4957  This interface provides methods to manage alarms.
4958           </brief>
4959           <version>
4960  1.0
4961           </version>
4962       </descriptive>
4963       <ExtendedAttributeList>
4964         <ExtendedAttribute name="NoInterfaceObject">
4965           <webidl>NoInterfaceObject</webidl>
4966         </ExtendedAttribute>
4967       </ExtendedAttributeList>
4968       <Const name="PERIOD_MINUTE" value="60" id="::Alarm::AlarmManager::PERIOD_MINUTE">
4969         <webidl>        const long PERIOD_MINUTE = 60;</webidl>
4970         <descriptive>
4971             <brief>
4972  The period of a minute.
4973 It defines the number of seconds per minute.
4974             </brief>
4975             <version>
4976  1.0
4977             </version>
4978         </descriptive>
4979         <Type type="long"/>
4980       </Const>
4981       <Const name="PERIOD_HOUR" value="3600" id="::Alarm::AlarmManager::PERIOD_HOUR">
4982         <webidl>        const long PERIOD_HOUR = 3600;</webidl>
4983         <descriptive>
4984             <brief>
4985  The period of an hour.
4986 It defines the number of seconds per hour.
4987             </brief>
4988             <version>
4989  1.0
4990             </version>
4991         </descriptive>
4992         <Type type="long"/>
4993       </Const>
4994       <Const name="PERIOD_DAY" value="86400" id="::Alarm::AlarmManager::PERIOD_DAY">
4995         <webidl>        const long PERIOD_DAY = 86400;</webidl>
4996         <descriptive>
4997             <brief>
4998  The period of a day.
4999 It defines the number of seconds per day.
5000             </brief>
5001             <version>
5002  1.0
5003             </version>
5004         </descriptive>
5005         <Type type="long"/>
5006       </Const>
5007       <Const name="PERIOD_WEEK" value="604800" id="::Alarm::AlarmManager::PERIOD_WEEK">
5008         <webidl>        const long PERIOD_WEEK = 604800;</webidl>
5009         <descriptive>
5010             <brief>
5011  The period of a week.
5012 It defines the number of seconds in a week.
5013             </brief>
5014             <version>
5015  1.0
5016             </version>
5017         </descriptive>
5018         <Type type="long"/>
5019       </Const>
5020       <Operation name="add" id="::Alarm::AlarmManager::add">
5021         <webidl>        void add(<ref>Alarm</ref> alarm, <ref>ApplicationId</ref> applicationId, optional <ref>ApplicationControl</ref>? appControl) raises(<ref>WebAPIException</ref>);</webidl>
5022         <descriptive>
5023             <brief>
5024  Adds an alarm to the storage.
5025             </brief>
5026            <description>
5027             <p>
5028 Set an alarm with the application ID to be run. You should definitely provide the application ID to run 
5029 and the <a href=" ../../org.tizen.web.appprogramming/html/guide/app_guide/application_service.htm">application control </a>information if it is necessary. 
5030 For more information about the application contorl, see <a href="../../org.tizen.web.device.apireference/tizen/application.html">The Application API</a>.
5031             </p>
5032            </description>
5033             <version>
5034  1.0
5035             </version>
5036             <privilegelevel>
5037  public
5038             </privilegelevel>
5039             <privilege>
5040  http://tizen.org/privilege/alarm
5041             </privilege>
5042             <Code> // Triggers an alarm on a given date/time
5043  var alarm = new tizen.AlarmAbsolute(new Date(2014, 10, 4, 8, 0));
5044  var appControl = new tizen.ApplicationControl(&quot;http://tizen.org/appcontrol/operation/view&quot;);
5045  tizen.alarm.add(alarm, tizen.application.getCurrentApplication().appInfo.id, appControl);
5046  console.log(&quot;Alarm added with id: &quot; + alarm.id);
5047  </Code>
5048         </descriptive>
5049         <Type type="void"/>
5050         <ArgumentList>
5051           <Argument name="alarm">
5052             <descriptive>
5053                 <description><p>
5054  An alarm to add. It can be either <em>AlarmRelative </em> or <em>AlarmAbsolute</em>.
5055                 </p></description>
5056             </descriptive>
5057             <Type name="Alarm"/>
5058           </Argument>
5059           <Argument name="applicationId">
5060             <descriptive>
5061                 <description><p>
5062  The application ID to run when the alarm is triggered.
5063                 </p></description>
5064             </descriptive>
5065             <Type name="ApplicationId"/>
5066           </Argument>
5067           <Argument optional="optional" name="appControl">
5068             <descriptive>
5069                 <description><p>
5070  The data structure describing application control details.
5071                 </p></description>
5072             </descriptive>
5073             <Type name="ApplicationControl" nullable="nullable"/>
5074           </Argument>
5075         </ArgumentList>
5076         <Raises>
5077           <RaiseException name="WebAPIException">
5078             <descriptive>
5079                 <description><p>
5080  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
5081                 </p></description>
5082                 <description><p>
5083  with error type InvalidValuesError, if any input parameter does not contain a valid value.
5084                 </p></description>
5085                 <description><p>
5086  with error type SecurityError, if the application does not have the privilege to call this method.
5087                 </p></description>
5088                 <description><p>
5089  with error type UnknownError, if any other error occurs.
5090                 </p></description>
5091             </descriptive>
5092           </RaiseException>
5093         </Raises>
5094       </Operation>
5095       <Operation name="remove" id="::Alarm::AlarmManager::remove">
5096         <webidl>        void remove(<ref>AlarmId</ref> id) raises(<ref>WebAPIException</ref>);</webidl>
5097         <descriptive>
5098             <brief>
5099  Removes an alarm from the storage.
5100             </brief>
5101            <description>
5102             <p>
5103 If an alarm goes off, it will be removed from the storage automatically.
5104             </p>
5105            </description>
5106             <version>
5107  1.0
5108             </version>
5109             <privilegelevel>
5110  public
5111             </privilegelevel>
5112             <privilege>
5113  http://tizen.org/privilege/alarm
5114             </privilege>
5115             <Code> var alarms = tizen.alarm.getAll();
5116
5117  // Removes the first alarm
5118  if (alarms.length > 0) {
5119    try {
5120      tizen.alarm.remove(alarms[0].id);
5121      console.log(&quot;Successfully removed the first alarm.&quot;);
5122    } catch(error) {
5123      console.log(&quot;Failed to remove the first alarm.&quot;);
5124    }
5125  }
5126  </Code>
5127         </descriptive>
5128         <Type type="void"/>
5129         <ArgumentList>
5130           <Argument name="id">
5131             <descriptive>
5132                 <description><p>
5133  The ID of the alarm to remove
5134                 </p></description>
5135             </descriptive>
5136             <Type name="AlarmId"/>
5137           </Argument>
5138         </ArgumentList>
5139         <Raises>
5140           <RaiseException name="WebAPIException">
5141             <descriptive>
5142                 <description><p>
5143  with error type NotFoundError, if this alarm identifier cannot be found in the storage.
5144                 </p></description>
5145                 <description><p>
5146  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
5147                 </p></description>
5148                 <description><p>
5149  with error type InvalidValuesError, if any input parameter does not contain a valid value.
5150                 </p></description>
5151                 <description><p>
5152  with error type SecurityError, if the application does not have the privilege to call this method.
5153                 </p></description>
5154                 <description><p>
5155  with error type UnknownError, if the method cannot be completed because of an unknown error.
5156                 </p></description>
5157             </descriptive>
5158           </RaiseException>
5159         </Raises>
5160       </Operation>
5161       <Operation name="removeAll" id="::Alarm::AlarmManager::removeAll">
5162         <webidl>        void removeAll() raises(<ref>WebAPIException</ref>);</webidl>
5163         <descriptive>
5164             <brief>
5165  Removes all alarms added by an application.
5166             </brief>
5167            <description>
5168             <p>
5169 Because each application has its own alarm storage, this method removes alarms only added by the calling application.
5170             </p>
5171            </description>
5172             <version>
5173  1.0
5174             </version>
5175             <privilegelevel>
5176  public
5177             </privilegelevel>
5178             <privilege>
5179  http://tizen.org/privilege/alarm
5180             </privilege>
5181             <Code> tizen.alarm.removeAll();
5182  console.log(&quot;remove all registered alarms in the storage.&quot;);
5183  </Code>
5184         </descriptive>
5185         <Type type="void"/>
5186         <ArgumentList/>
5187         <Raises>
5188           <RaiseException name="WebAPIException">
5189             <descriptive>
5190                 <description><p>
5191  with error type SecurityError, if the application does not have the privilege to call this method.
5192                 </p></description>
5193                 <description><p>
5194  with error type UnknownError, if the method cannot be completed because of an unknown error.
5195                 </p></description>
5196             </descriptive>
5197           </RaiseException>
5198         </Raises>
5199       </Operation>
5200       <Operation name="get" id="::Alarm::AlarmManager::get">
5201         <webidl>        <ref>Alarm</ref> get(<ref>AlarmId</ref> id) raises(<ref>WebAPIException</ref>);</webidl>
5202         <descriptive>
5203             <brief>
5204  Returns an alarm as per the specified identifier.
5205             </brief>
5206             <version>
5207  1.0
5208             </version>
5209             <Code> // Sets an alarm
5210  var date = new Date();
5211  date.setHours(date.getHours()+1);
5212  var abs_alarm = new tizen.AlarmAbsolute(date);
5213
5214  // Adds an alarm
5215  tizen.alarm.add(abs_alarm, tizen.application.getCurrentApplication().appInfo.id);
5216
5217  // Gets an alarm
5218  var alarm = tizen.alarm.get(abs_alarm.id);
5219  console.log(&quot;The alarm will trigger at &quot; + alarm.getNextScheduledDate());
5220  </Code>
5221         </descriptive>
5222         <Type name="Alarm">
5223           <descriptive>
5224               <description><p>
5225  Alarm An alarm object with the specified ID.
5226               </p></description>
5227           </descriptive>
5228         </Type>
5229         <ArgumentList>
5230           <Argument name="id">
5231             <descriptive>
5232                 <description><p>
5233  The alarm ID to retrieve.
5234                 </p></description>
5235             </descriptive>
5236             <Type name="AlarmId"/>
5237           </Argument>
5238         </ArgumentList>
5239         <Raises>
5240           <RaiseException name="WebAPIException">
5241             <descriptive>
5242                 <description><p>
5243  with error type NotFoundError, if this alarm identifier cannot be found in the storage.
5244                 </p></description>
5245                 <description><p>
5246  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
5247                 </p></description>
5248                 <description><p>
5249  with error type InvalidValuesError, if any input parameter does not contain a valid value.
5250                 </p></description>
5251                 <description><p>
5252  with error type UnknownError, if the method cannot be completed because of an unknown error.
5253                 </p></description>
5254             </descriptive>
5255           </RaiseException>
5256         </Raises>
5257       </Operation>
5258       <Operation name="getAll" id="::Alarm::AlarmManager::getAll">
5259         <webidl>        <ref>Alarm</ref>[] getAll() raises(<ref>WebAPIException</ref>);</webidl>
5260         <descriptive>
5261             <brief>
5262  Retrieves all alarms in an application storage.. 
5263             </brief>
5264            <description>
5265             <p>
5266 Alarms that have already been triggered are removed automatically from the storage.
5267             </p>
5268            </description>
5269             <version>
5270  1.0
5271             </version>
5272             <Code> var alarms = tizen.alarm.getAll();
5273  console.log(alarms.length + &quot; alarms present in the storage.&quot;);
5274  </Code>
5275         </descriptive>
5276         <Type type="array">
5277           <descriptive>
5278               <description><p>
5279  Alarm[] All Alarm objects.
5280               </p></description>
5281           </descriptive>
5282           <Type name="Alarm"/>
5283         </Type>
5284         <ArgumentList/>
5285         <Raises>
5286           <RaiseException name="WebAPIException">
5287             <descriptive>
5288                 <description><p>
5289  with error type UnknownError, if the method cannot be completed because of an unknown error.
5290                 </p></description>
5291             </descriptive>
5292           </RaiseException>
5293         </Raises>
5294       </Operation>
5295     </Interface>
5296     <Interface name="Alarm" id="::Alarm::Alarm">
5297       <webidl>    [NoInterfaceObject] interface Alarm {&#13;
5298 &#13;
5299         readonly attribute <ref>AlarmId</ref>? id;&#13;
5300     };</webidl>
5301       <descriptive>
5302           <brief>
5303  This interface is an abstract interface for alarm types.
5304           </brief>
5305           <version>
5306  1.0
5307           </version>
5308       </descriptive>
5309       <ExtendedAttributeList>
5310         <ExtendedAttribute name="NoInterfaceObject">
5311           <webidl>NoInterfaceObject</webidl>
5312         </ExtendedAttribute>
5313       </ExtendedAttributeList>
5314       <Attribute readonly="readonly" name="id" id="::Alarm::Alarm::id">
5315         <webidl>        readonly attribute <ref>AlarmId</ref>? id;</webidl>
5316         <descriptive>
5317             <brief>
5318  The alarm identifier.
5319             </brief>
5320             <version>
5321  1.0
5322             </version>
5323         </descriptive>
5324         <Type name="AlarmId" nullable="nullable"/>
5325       </Attribute>
5326     </Interface>
5327     <Interface name="AlarmRelative" id="::Alarm::AlarmRelative">
5328       <webidl>    [Constructor(long delay, optional long? period)]&#13;
5329 &#13;
5330     interface AlarmRelative : <ref>Alarm</ref> {&#13;
5331 &#13;
5332         readonly attribute long delay;&#13;
5333         &#13;
5334 &#13;
5335         readonly attribute long? period;&#13;
5336 &#13;
5337 &#13;
5338         long? getRemainingSeconds() raises(<ref>WebAPIException</ref>);&#13;
5339     };</webidl>
5340       <descriptive>
5341           <brief>
5342  This interface provides the relative alarm, which occurs at a fixed interval in future.
5343           </brief>
5344          <description>
5345           <p>
5346 This alarm triggers after a duration mentioned in <em>delay</em> attribute from the moment the alarm is added. 
5347 If a <em>period</em> is provided, the alarm keeps triggering for the given interval.
5348           </p>
5349          </description>
5350           <version>
5351  1.0
5352           </version>
5353           <Code> // Gets the current application id.
5354  var appId = tizen.application.getCurrentApplication().appInfo.id;
5355
5356  // Sets an alarm in 3 hours from now
5357  var alarm1 = new tizen.AlarmRelative(3 * tizen.alarm.PERIOD_HOUR);
5358  tizen.alarm.add(alarm1, appId);
5359
5360  // Sets an alarm in one hour, recurring after every 2 minutes
5361  var alarm2 = new tizen.AlarmRelative(tizen.alarm.PERIOD_HOUR, 2 * tizen.alarm.PERIOD_MINUTE);
5362  tizen.alarm.add(alarm2, appId);
5363  </Code>
5364       </descriptive>
5365       <ExtendedAttributeList>
5366         <ExtendedAttribute name="Constructor">
5367           <webidl>Constructor(long delay, optional long? period)</webidl>
5368           <ArgumentList>
5369             <Argument name="delay">
5370               <Type type="long"/>
5371             </Argument>
5372             <Argument optional="optional" name="period">
5373               <Type type="long" nullable="nullable"/>
5374             </Argument>
5375           </ArgumentList>
5376         </ExtendedAttribute>
5377       </ExtendedAttributeList>
5378       <InterfaceInheritance>
5379         <Name name="Alarm"/>
5380       </InterfaceInheritance>
5381       <Attribute readonly="readonly" name="delay" id="::Alarm::AlarmRelative::delay">
5382         <webidl>        readonly attribute long delay;</webidl>
5383         <descriptive>
5384             <brief>
5385  An attribute to store the difference in time (in seconds) between when an alarm is added and it is triggered.
5386             </brief>
5387             <version>
5388  1.0
5389             </version>
5390         </descriptive>
5391         <Type type="long"/>
5392       </Attribute>
5393       <Attribute readonly="readonly" name="period" id="::Alarm::AlarmRelative::period">
5394         <webidl>        readonly attribute long? period;</webidl>
5395         <descriptive>
5396             <brief>
5397  An attribute to store the duration in seconds between each trigger of an alarm.
5398 By default, this attribute is set to <var>null</var>, indicating that this alarm does not repeat.
5399             </brief>
5400             <version>
5401  1.0
5402             </version>
5403         </descriptive>
5404         <Type type="long" nullable="nullable"/>
5405       </Attribute>
5406       <Operation name="getRemainingSeconds" id="::Alarm::AlarmRelative::getRemainingSeconds">
5407         <webidl>        long? getRemainingSeconds() raises(<ref>WebAPIException</ref>);</webidl>
5408         <descriptive>
5409             <brief>
5410  Returns duration in seconds before the next alarm is triggered.
5411             </brief>
5412            <description>
5413             <p>
5414 If the alarm has expired, this method returns <var>null</var>.
5415             </p>
5416            </description>
5417             <version>
5418  1.0
5419             </version>
5420             <Code> // Gets the current application id.
5421  var appId = tizen.application.getCurrentApplication().appInfo.id; 
5422
5423  // Sets an alarm in 3 hours from now
5424  var alarm = new tizen.AlarmRelative(3 * tizen.alarm.PERIOD_HOUR);
5425  tizen.alarm.add(alarm, appId);
5426  
5427  var sec = alarm.getRemainingSeconds();
5428  console.log(&quot;remaining time is &quot; + sec);
5429  </Code>
5430         </descriptive>
5431         <Type type="long" nullable="nullable">
5432           <descriptive>
5433               <description><p>
5434  long The duration before the next alarm trigger.
5435               </p></description>
5436           </descriptive>
5437         </Type>
5438         <ArgumentList/>
5439         <Raises>
5440           <RaiseException name="WebAPIException">
5441             <descriptive>
5442                 <description><p>
5443  with error type UnknownError, if the method cannot be completed because of an unknown error.
5444                 </p></description>
5445             </descriptive>
5446           </RaiseException>
5447         </Raises>
5448       </Operation>
5449     </Interface>
5450     <Interface name="AlarmAbsolute" id="::Alarm::AlarmAbsolute">
5451       <webidl>    [Constructor(Date date),&#13;
5452 &#13;
5453      Constructor(Date date, <ref>ByDayValue</ref>[] daysOfTheWeek),&#13;
5454 &#13;
5455      Constructor(Date date, long period)]&#13;
5456 &#13;
5457     interface AlarmAbsolute : <ref>Alarm</ref> {&#13;
5458 &#13;
5459         readonly attribute Date date;&#13;
5460 &#13;
5461 &#13;
5462         readonly attribute long? period;&#13;
5463 &#13;
5464 &#13;
5465         readonly attribute <ref>ByDayValue</ref>[] daysOfTheWeek;&#13;
5466 &#13;
5467 &#13;
5468         Date? getNextScheduledDate() raises(<ref>WebAPIException</ref>);&#13;
5469     };</webidl>
5470       <descriptive>
5471           <brief>
5472  This interface provides an absolute alarm, which triggers at a specified absolute date.
5473           </brief>
5474          <description>
5475           <p>
5476 If a <em>period</em> is provided, the alarm keeps triggering for the given interval. If the <em>daysOfTheWeek</em> array is not empty, the alarm triggers every week, for the given days, at the time defined by <em>date</em> attribute.
5477           </p>
5478          </description>
5479           <version>
5480  1.0
5481           </version>
5482           <Code> // Gets the current application id.
5483  var appId = tizen.application.getCurrentApplication().appInfo.id;
5484
5485  // Sets an alarm on January 1st 2014 08:00
5486  var date = new Date(2014, 0, 1, 8, 0);
5487  var alarm1 = new tizen.AlarmAbsolute(date);
5488  tizen.alarm.add(alarm1, appId);
5489
5490  // Sets an alarm on January 1st 2014 08:00, repeating every 2 days
5491  var alarm2 = new tizen.AlarmAbsolute(date, 2 * tizen.alarm.PERIOD_DAY);
5492  tizen.alarm.add(alarm2, appId);
5493
5494  // Sets an alarm occurring on every Saturday and Sunday, at 08:00, starting from January 1st 2014
5495  var alarm3 = new tizen.AlarmAbsolute(date, [&quot;SA&quot;, &quot;SU&quot;]);
5496  tizen.alarm.add(alarm3, appId);
5497  </Code>
5498       </descriptive>
5499       <ExtendedAttributeList>
5500         <ExtendedAttribute name="Constructor">
5501           <webidl>Constructor(Date date)</webidl>
5502           <ArgumentList>
5503             <Argument name="date">
5504               <Type type="Date"/>
5505             </Argument>
5506           </ArgumentList>
5507         </ExtendedAttribute>
5508         <ExtendedAttribute name="Constructor">
5509           <webidl>     Constructor(Date date, <ref>ByDayValue</ref>[] daysOfTheWeek)</webidl>
5510           <ArgumentList>
5511             <Argument name="date">
5512               <Type type="Date"/>
5513             </Argument>
5514             <Argument name="daysOfTheWeek">
5515               <Type type="array">
5516                 <Type name="ByDayValue"/>
5517               </Type>
5518             </Argument>
5519           </ArgumentList>
5520         </ExtendedAttribute>
5521         <ExtendedAttribute name="Constructor">
5522           <webidl>     Constructor(Date date, long period)</webidl>
5523           <ArgumentList>
5524             <Argument name="date">
5525               <Type type="Date"/>
5526             </Argument>
5527             <Argument name="period">
5528               <Type type="long"/>
5529             </Argument>
5530           </ArgumentList>
5531         </ExtendedAttribute>
5532       </ExtendedAttributeList>
5533       <InterfaceInheritance>
5534         <Name name="Alarm"/>
5535       </InterfaceInheritance>
5536       <Attribute readonly="readonly" name="date" id="::Alarm::AlarmAbsolute::date">
5537         <webidl>        readonly attribute Date date;</webidl>
5538         <descriptive>
5539             <brief>
5540  An attribute to store the absolute date/time when the alarm is initially triggered.
5541             </brief>
5542            <description>
5543             <p>
5544 This attribute is precise to the second. Milliseconds will be ignored.
5545             </p>
5546            </description>
5547             <version>
5548  1.0
5549             </version>
5550         </descriptive>
5551         <Type type="Date"/>
5552       </Attribute>
5553       <Attribute readonly="readonly" name="period" id="::Alarm::AlarmAbsolute::period">
5554         <webidl>        readonly attribute long? period;</webidl>
5555         <descriptive>
5556             <brief>
5557  An attribute to store the duration in seconds between each trigger of the alarm.
5558             </brief>
5559            <description>
5560             <p>
5561 By default, this attribute is set to <var>null</var>, indicating that this alarm does not repeat.
5562 The <em>period</em> and <em>daysOfTheWeek</em> attributes are mutually exclusive.
5563             </p>
5564            </description>
5565             <version>
5566  1.0
5567             </version>
5568         </descriptive>
5569         <Type type="long" nullable="nullable"/>
5570       </Attribute>
5571       <Attribute readonly="readonly" name="daysOfTheWeek" id="::Alarm::AlarmAbsolute::daysOfTheWeek">
5572         <webidl>        readonly attribute <ref>ByDayValue</ref>[] daysOfTheWeek;</webidl>
5573         <descriptive>
5574             <brief>
5575  An attribute to store the days of the week associated with the recurrence rule.
5576             </brief>
5577            <description>
5578             <p>
5579 By default, this attribute is set to an empty array.
5580 The <em>period</em> and <em>daysOfTheWeek</em> attributes are mutually exclusive.
5581             </p>
5582            </description>
5583             <version>
5584  1.0
5585             </version>
5586         </descriptive>
5587         <Type type="array">
5588           <Type name="ByDayValue"/>
5589         </Type>
5590       </Attribute>
5591       <Operation name="getNextScheduledDate" id="::Alarm::AlarmAbsolute::getNextScheduledDate">
5592         <webidl>        Date? getNextScheduledDate() raises(<ref>WebAPIException</ref>);</webidl>
5593         <descriptive>
5594             <brief>
5595  Returns the date / time of the next alarm trigger.
5596             </brief>
5597            <description>
5598             <p>
5599 If the alarm has expired, this method returns <var>null</var>. The returned date is precise to the second.
5600             </p>
5601            </description>
5602             <version>
5603  1.0
5604             </version>
5605             <Code> // Gets the current application id.
5606  var appId = tizen.application.getCurrentApplication().appInfo.id;
5607
5608  // Sets an alarm on January 1st 2014 08:00
5609  var date = new Date(2014, 0, 1, 8, 0);
5610  var alarm1 = new tizen.AlarmAbsolute(date);
5611  tizen.alarm.add(alarm1, appId);
5612  
5613  var date = alarm1.getNextScheduledDate();
5614  console.log(&quot;next scheduled time is &quot; + date);
5615  </Code>
5616         </descriptive>
5617         <Type type="Date" nullable="nullable">
5618           <descriptive>
5619               <description><p>
5620  Date The date/time of the next alarm trigger.
5621               </p></description>
5622           </descriptive>
5623         </Type>
5624         <ArgumentList/>
5625         <Raises>
5626           <RaiseException name="WebAPIException">
5627             <descriptive>
5628                 <description><p>
5629  with error type UnknownError, if the method cannot be completed because of an unknown error.    
5630                 </p></description>
5631             </descriptive>
5632           </RaiseException>
5633         </Raises>
5634       </Operation>
5635     </Interface>
5636   </Module>
5637   <Module name="Application" id="::Application">
5638     <webidl>module Application {
5639
5640   typedef DOMString ApplicationId;
5641
5642   typedef DOMString ApplicationContextId;
5643
5644   [NoInterfaceObject] interface ApplicationManagerObject {
5645     readonly attribute <ref>ApplicationManager</ref> application;
5646   };
5647   <ref>Tizen</ref> implements <ref>ApplicationManagerObject</ref>;
5648
5649   [NoInterfaceObject] interface ApplicationManager {
5650
5651     <ref>Application</ref> getCurrentApplication() raises(<ref>WebAPIException</ref>);
5652         
5653     void kill(<ref>ApplicationContextId</ref> contextId,
5654               optional <ref>SuccessCallback</ref>? successCallback,
5655               optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
5656         
5657     void launch(<ref>ApplicationId</ref> id,
5658                 optional <ref>SuccessCallback</ref>? successCallback,
5659                 optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
5660
5661     void launchAppControl(<ref>ApplicationControl</ref> appControl,
5662                           optional <ref>ApplicationId</ref>? id,
5663                           optional <ref>SuccessCallback</ref>? successCallback,
5664                           optional <ref>ErrorCallback</ref>? errorCallback,
5665                           optional <ref>ApplicationControlDataArrayReplyCallback</ref>? replyCallback) raises(<ref>WebAPIException</ref>);
5666
5667     void findAppControl(<ref>ApplicationControl</ref> appControl,
5668                         <ref>FindAppControlSuccessCallback</ref> successCallback,
5669                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
5670
5671     void getAppsContext(<ref>ApplicationContextArraySuccessCallback</ref> successCallback,
5672                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
5673
5674     <ref>ApplicationContext</ref> getAppContext(optional <ref>ApplicationContextId</ref>? contextId) raises(<ref>WebAPIException</ref>);
5675
5676     void getAppsInfo(<ref>ApplicationInformationArraySuccessCallback</ref> successCallback,
5677                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
5678
5679     <ref>ApplicationInformation</ref> getAppInfo(optional <ref>ApplicationId</ref>? id) raises(<ref>WebAPIException</ref>);
5680
5681     <ref>ApplicationCertificate</ref>[] getAppCerts(optional <ref>ApplicationId</ref>? id) raises(<ref>WebAPIException</ref>);
5682
5683     DOMString getAppSharedURI(optional <ref>ApplicationId</ref>? id) raises(<ref>WebAPIException</ref>);
5684
5685     <ref>ApplicationMetaData</ref>[] getAppMetaData(optional <ref>ApplicationId</ref>? id) raises(<ref>WebAPIException</ref>);
5686
5687     long addAppInfoEventListener(<ref>ApplicationInformationEventCallback</ref> eventCallback) raises(<ref>WebAPIException</ref>);
5688
5689     void removeAppInfoEventListener(long watchId) raises(<ref>WebAPIException</ref>);
5690
5691   };
5692
5693   [NoInterfaceObject] interface Application {
5694
5695     readonly attribute <ref>ApplicationInformation</ref> appInfo;
5696
5697     readonly attribute <ref>ApplicationContextId</ref> contextId;
5698
5699     void exit() raises(<ref>WebAPIException</ref>);
5700
5701     void hide() raises(<ref>WebAPIException</ref>);
5702
5703     <ref>RequestedApplicationControl</ref> getRequestedAppControl() raises(<ref>WebAPIException</ref>);
5704   };
5705
5706
5707   [NoInterfaceObject] interface ApplicationInformation {
5708
5709     readonly attribute <ref>ApplicationId</ref> id;
5710
5711     readonly attribute DOMString name;
5712
5713     readonly attribute DOMString iconPath;
5714
5715     readonly attribute DOMString version;
5716
5717     readonly attribute boolean show;
5718
5719     readonly attribute DOMString[] categories;
5720
5721     readonly attribute Date installDate;
5722
5723     readonly attribute long size raises(<ref>WebAPIException</ref>);
5724
5725     readonly attribute <ref>PackageId</ref> packageId;
5726   };
5727
5728   [NoInterfaceObject] interface ApplicationContext {
5729
5730     readonly attribute <ref>ApplicationContextId</ref> id;
5731
5732     readonly attribute <ref>ApplicationId</ref> appId;
5733
5734   };
5735
5736   [Constructor(DOMString key, DOMString[] value)]
5737   interface ApplicationControlData {
5738
5739     attribute DOMString key;
5740
5741     attribute DOMString[] value;
5742
5743   };
5744
5745   [Constructor(DOMString operation, optional DOMString? uri,
5746                optional DOMString? mime, optional DOMString? category,
5747                optional <ref>ApplicationControlData</ref>[]? data)]
5748   interface ApplicationControl {
5749
5750     attribute DOMString operation;
5751
5752     attribute DOMString? uri;
5753
5754     attribute DOMString? mime;
5755
5756     attribute DOMString? category;
5757
5758     attribute <ref>ApplicationControlData</ref>[] data;
5759
5760   };
5761
5762   [NoInterfaceObject] interface RequestedApplicationControl {
5763
5764     readonly attribute <ref>ApplicationControl</ref> appControl;
5765
5766     readonly attribute <ref>ApplicationId</ref> callerAppId;
5767
5768     void replyResult(optional <ref>ApplicationControlData</ref>[]? data) raises(<ref>WebAPIException</ref>);
5769
5770     void replyFailure() raises(<ref>WebAPIException</ref>);
5771
5772   };
5773
5774   
5775   [NoInterfaceObject] interface ApplicationCertificate {
5776
5777     readonly attribute DOMString type;
5778
5779     readonly attribute DOMString value;
5780
5781   };
5782   
5783
5784   [NoInterfaceObject] interface ApplicationMetaData {
5785
5786     readonly attribute DOMString key;
5787
5788     readonly attribute DOMString value;
5789
5790   };
5791
5792
5793   [Callback=FunctionOnly, NoInterfaceObject] interface ApplicationInformationArraySuccessCallback {
5794     void onsuccess(<ref>ApplicationInformation</ref>[] informationArray);
5795   };
5796
5797   [Callback=FunctionOnly, NoInterfaceObject] interface FindAppControlSuccessCallback {
5798     void onsuccess(<ref>ApplicationInformation</ref>[] informationArray, <ref>ApplicationControl</ref> appControl);
5799   };
5800
5801   [Callback=FunctionOnly, NoInterfaceObject] interface ApplicationContextArraySuccessCallback {
5802     void onsuccess(<ref>ApplicationContext</ref>[] contexts);
5803   };
5804
5805   [Callback, NoInterfaceObject] interface ApplicationControlDataArrayReplyCallback {
5806     void onsuccess(optional <ref>ApplicationControlData</ref>[]? data);
5807
5808     void onfailure();
5809   };
5810
5811   [Callback, NoInterfaceObject] interface ApplicationInformationEventCallback {
5812     void oninstalled(<ref>ApplicationInformation</ref> info);
5813
5814     void onupdated(<ref>ApplicationInformation</ref> info);
5815
5816     void onuninstalled(<ref>ApplicationId</ref> id);
5817   };
5818
5819 };</webidl>
5820     <descriptive>
5821         <brief>
5822  This API provides a way to launch other applications and access
5823 application management.
5824         </brief>
5825        <description>
5826         <p>
5827 The <em>ApplicationManager</em> interface also provides methods to launch other applications
5828 explicitly and implicitly through the <em>ApplicationControl</em> interface.
5829 The <em>ApplicationControl</em> interface consists of an operation, URI, and MIME type
5830 and also describes an action to be performed by other
5831 applications and can carry the result from the subsequent application.
5832 The <em>ApplicationManager</em> interface also provides methods to handle the application
5833 lifecycle, to access the installed applications on the device, and to let
5834 an application be notified of a change in the application list.
5835         </p>
5836         <p>
5837 The <em>Application</em> interface defines the current application's information and
5838 the basic operations for current application such as exit or hide.
5839         </p>
5840         <p>
5841 For more information on the Application features, see <a href="../../org.tizen.web.appprogramming/html/guide/app_guide/application.htm">Application Guide</a>.
5842         </p>
5843        </description>
5844         <version>
5845  1.0
5846         </version>
5847     </descriptive>
5848     <Typedef name="ApplicationId" id="::Application::ApplicationId">
5849       <webidl>  typedef DOMString ApplicationId;</webidl>
5850       <descriptive>
5851           <brief>
5852  The unique ID for an installed application.
5853           </brief>
5854           <version>
5855  1.0
5856           </version>
5857       </descriptive>
5858       <Type type="DOMString"/>
5859     </Typedef>
5860     <Typedef name="ApplicationContextId" id="::Application::ApplicationContextId">
5861       <webidl>  typedef DOMString ApplicationContextId;</webidl>
5862       <descriptive>
5863           <brief>
5864  The unique ID for a running application.
5865           </brief>
5866           <version>
5867  1.0
5868           </version>
5869       </descriptive>
5870       <Type type="DOMString"/>
5871     </Typedef>
5872     <Interface name="ApplicationManagerObject" id="::Application::ApplicationManagerObject">
5873       <webidl>  [NoInterfaceObject] interface ApplicationManagerObject {
5874     readonly attribute <ref>ApplicationManager</ref> application;
5875   };</webidl>
5876       <descriptive>
5877           <brief>
5878  This interface defines what is instantiated by the <em>Tizen </em>object by the Tizen Platform.
5879           </brief>
5880          <description>
5881           <p>
5882 There will be a <em>tizen.application </em>object that allows access to Application API functionality.
5883           </p>
5884          </description>
5885           <version>
5886  2.0
5887           </version>
5888       </descriptive>
5889       <ExtendedAttributeList>
5890         <ExtendedAttribute name="NoInterfaceObject">
5891           <webidl>NoInterfaceObject</webidl>
5892         </ExtendedAttribute>
5893       </ExtendedAttributeList>
5894       <Attribute readonly="readonly" name="application" id="::Application::ApplicationManagerObject::application">
5895         <webidl>    readonly attribute <ref>ApplicationManager</ref> application;</webidl>
5896         <Type name="ApplicationManager"/>
5897       </Attribute>
5898     </Interface>
5899     <Implements name1="Tizen" name2="ApplicationManagerObject">
5900       <webidl>  <ref>Tizen</ref> implements <ref>ApplicationManagerObject</ref>;</webidl>
5901     </Implements>
5902     <Interface name="ApplicationManager" id="::Application::ApplicationManager">
5903       <webidl>  [NoInterfaceObject] interface ApplicationManager {
5904
5905     <ref>Application</ref> getCurrentApplication() raises(<ref>WebAPIException</ref>);
5906         
5907     void kill(<ref>ApplicationContextId</ref> contextId,
5908               optional <ref>SuccessCallback</ref>? successCallback,
5909               optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
5910         
5911     void launch(<ref>ApplicationId</ref> id,
5912                 optional <ref>SuccessCallback</ref>? successCallback,
5913                 optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
5914
5915     void launchAppControl(<ref>ApplicationControl</ref> appControl,
5916                           optional <ref>ApplicationId</ref>? id,
5917                           optional <ref>SuccessCallback</ref>? successCallback,
5918                           optional <ref>ErrorCallback</ref>? errorCallback,
5919                           optional <ref>ApplicationControlDataArrayReplyCallback</ref>? replyCallback) raises(<ref>WebAPIException</ref>);
5920
5921     void findAppControl(<ref>ApplicationControl</ref> appControl,
5922                         <ref>FindAppControlSuccessCallback</ref> successCallback,
5923                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
5924
5925     void getAppsContext(<ref>ApplicationContextArraySuccessCallback</ref> successCallback,
5926                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
5927
5928     <ref>ApplicationContext</ref> getAppContext(optional <ref>ApplicationContextId</ref>? contextId) raises(<ref>WebAPIException</ref>);
5929
5930     void getAppsInfo(<ref>ApplicationInformationArraySuccessCallback</ref> successCallback,
5931                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
5932
5933     <ref>ApplicationInformation</ref> getAppInfo(optional <ref>ApplicationId</ref>? id) raises(<ref>WebAPIException</ref>);
5934
5935     <ref>ApplicationCertificate</ref>[] getAppCerts(optional <ref>ApplicationId</ref>? id) raises(<ref>WebAPIException</ref>);
5936
5937     DOMString getAppSharedURI(optional <ref>ApplicationId</ref>? id) raises(<ref>WebAPIException</ref>);
5938
5939     <ref>ApplicationMetaData</ref>[] getAppMetaData(optional <ref>ApplicationId</ref>? id) raises(<ref>WebAPIException</ref>);
5940
5941     long addAppInfoEventListener(<ref>ApplicationInformationEventCallback</ref> eventCallback) raises(<ref>WebAPIException</ref>);
5942
5943     void removeAppInfoEventListener(long watchId) raises(<ref>WebAPIException</ref>);
5944
5945   };</webidl>
5946       <descriptive>
5947           <brief>
5948  This section defines the application manager interface.
5949           </brief>
5950           <version>
5951  2.0
5952           </version>
5953       </descriptive>
5954       <ExtendedAttributeList>
5955         <ExtendedAttribute name="NoInterfaceObject">
5956           <webidl>NoInterfaceObject</webidl>
5957         </ExtendedAttribute>
5958       </ExtendedAttributeList>
5959       <Operation name="getCurrentApplication" id="::Application::ApplicationManager::getCurrentApplication">
5960         <webidl>    <ref>Application</ref> getCurrentApplication() raises(<ref>WebAPIException</ref>);</webidl>
5961         <descriptive>
5962             <brief>
5963  Gets the <em>Application </em>object defining the current application.
5964             </brief>
5965             <version>
5966  2.0
5967             </version>
5968             <Code> var app = tizen.application.getCurrentApplication();
5969  console.log(&quot;Current application's app id is &quot; + app.appInfo.id);
5970  </Code>
5971         </descriptive>
5972         <Type name="Application">
5973           <descriptive>
5974               <description><p>
5975  Application The data structure that defines current application.
5976               </p></description>
5977           </descriptive>
5978         </Type>
5979         <ArgumentList/>
5980         <Raises>
5981           <RaiseException name="WebAPIException">
5982             <descriptive>
5983                 <description><p>
5984  with error type UnknownError, if the application cannot be retrieved because of an unknown error.
5985                 </p></description>
5986             </descriptive>
5987           </RaiseException>
5988         </Raises>
5989       </Operation>
5990       <Operation name="kill" id="::Application::ApplicationManager::kill">
5991         <webidl>    void kill(<ref>ApplicationContextId</ref> contextId,
5992               optional <ref>SuccessCallback</ref>? successCallback,
5993               optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
5994         <descriptive>
5995             <brief>
5996  Kills an application with the specified application context ID.
5997             </brief>
5998            <description>
5999             <p>
6000 The <em>ErrorCallback() </em>is launched with these error types:
6001             </p>
6002             <ul>
6003               <li>
6004 NotFoundError - If the context is not found with specified context ID.              </li>
6005               <li>
6006 InvalidValuesError - If any of the input parameters contain an invalid value
6007 or if the specified context ID matches the context ID of the calling application.              </li>
6008               <li>
6009 UnknownError - If any other error occurs.              </li>
6010             </ul>
6011            </description>
6012             <version>
6013  2.0
6014             </version>
6015             <privilegelevel>
6016  partner
6017             </privilegelevel>
6018             <privilege>
6019  http://tizen.org/privilege/appmanager.kill
6020             </privilege>
6021             <Code> function onKillSuccess() {
6022      console.log(&quot;Application terminated successfully&quot;);
6023  }
6024
6025  function onRunningAppsContext(contexts) {
6026     // let's assume that the application &quot;targetApp0.main&quot; has been installed.
6027     var targetId = &quot;targetApp0.main&quot;;
6028
6029     for (var i = 0; i &#60; contexts.length; i++) {
6030         if (contexts[i].appId == targetId) {
6031             tizen.application.kill(contexts[i].id, onKillSuccess);
6032         }
6033     }
6034  }
6035
6036  tizen.application.getAppsContext(onRunningAppsContext);
6037  </Code>
6038         </descriptive>
6039         <Type type="void"/>
6040         <ArgumentList>
6041           <Argument name="contextId">
6042             <descriptive>
6043                 <description><p>
6044  The identifier of the application to kill
6045                 </p></description>
6046             </descriptive>
6047             <Type name="ApplicationContextId"/>
6048           </Argument>
6049           <Argument optional="optional" name="successCallback">
6050             <descriptive>
6051                 <description><p>
6052  The method to invoke when an application is killed successfully.
6053                 </p></description>
6054             </descriptive>
6055             <Type name="SuccessCallback" nullable="nullable"/>
6056           </Argument>
6057           <Argument optional="optional" name="errorCallback">
6058             <descriptive>
6059                 <description><p>
6060  The method to invoke when an error occurs.
6061                 </p></description>
6062             </descriptive>
6063             <Type name="ErrorCallback" nullable="nullable"/>
6064           </Argument>
6065         </ArgumentList>
6066         <Raises>
6067           <RaiseException name="WebAPIException">
6068             <descriptive>
6069                 <description><p>
6070  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
6071                 </p></description>
6072                 <description><p>
6073  with error type SecurityError, if the application does not have the privilege to call this method.
6074                 </p></description>
6075             </descriptive>
6076           </RaiseException>
6077         </Raises>
6078       </Operation>
6079       <Operation name="launch" id="::Application::ApplicationManager::launch">
6080         <webidl>    void launch(<ref>ApplicationId</ref> id,
6081                 optional <ref>SuccessCallback</ref>? successCallback,
6082                 optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
6083         <descriptive>
6084             <brief>
6085  Launches an application with the given application ID.
6086             </brief>
6087            <description>
6088             <p>
6089 The <em>ErrorCallback()</em> is launched with these error types:
6090             </p>
6091             <ul>
6092               <li>
6093 NotFoundError - If the application is not found with given ID.              </li>
6094               <li>
6095 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
6096               <li>
6097 UnknownError - If any other error occurs.              </li>
6098             </ul>
6099            </description>
6100             <version>
6101  2.0
6102             </version>
6103             <privilegelevel>
6104  public
6105             </privilegelevel>
6106             <privilege>
6107  http://tizen.org/privilege/application.launch
6108             </privilege>
6109             <Code> function onsuccess() {
6110      console.log(&quot;The application has launched successfully&quot;);
6111  }
6112
6113  // let's assume that application &quot;targetApp0.main&quot; has been installed
6114  tizen.application.launch(&quot;targetApp0.main&quot;, onsuccess);
6115  </Code>
6116         </descriptive>
6117         <Type type="void"/>
6118         <ArgumentList>
6119           <Argument name="id">
6120             <descriptive>
6121                 <description><p>
6122  A unique string representing application ID.
6123                 </p></description>
6124             </descriptive>
6125             <Type name="ApplicationId"/>
6126           </Argument>
6127           <Argument optional="optional" name="successCallback">
6128             <descriptive>
6129                 <description><p>
6130  The method to call when the invocation ends successfully.
6131                 </p></description>
6132             </descriptive>
6133             <Type name="SuccessCallback" nullable="nullable"/>
6134           </Argument>
6135           <Argument optional="optional" name="errorCallback">
6136             <descriptive>
6137                 <description><p>
6138  The method to call when an error occurs.
6139                 </p></description>
6140             </descriptive>
6141             <Type name="ErrorCallback" nullable="nullable"/>
6142           </Argument>
6143         </ArgumentList>
6144         <Raises>
6145           <RaiseException name="WebAPIException">
6146             <descriptive>
6147                 <description><p>
6148  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
6149                 </p></description>
6150                 <description><p>
6151  with error type SecurityError, if the application does not have the privilege to call this method.
6152                 </p></description>
6153             </descriptive>
6154           </RaiseException>
6155         </Raises>
6156       </Operation>
6157       <Operation name="launchAppControl" id="::Application::ApplicationManager::launchAppControl">
6158         <webidl>    void launchAppControl(<ref>ApplicationControl</ref> appControl,
6159                           optional <ref>ApplicationId</ref>? id,
6160                           optional <ref>SuccessCallback</ref>? successCallback,
6161                           optional <ref>ErrorCallback</ref>? errorCallback,
6162                           optional <ref>ApplicationControlDataArrayReplyCallback</ref>? replyCallback) raises(<ref>WebAPIException</ref>);</webidl>
6163         <descriptive>
6164             <brief>
6165  Launches an application with the specified application control.
6166             </brief>
6167            <description>
6168             <p>
6169 An application can launch other applications with the application control,
6170 and get back the results from the launched applications.
6171             </p>
6172             <p>
6173 The application control consists of an operation, URI, and MIME type, and describes
6174 the request to be performed by the newly launched application. The
6175 application control is passed to the <em>launchAppControl()</em> method to launch an
6176 application. The system tries to find the proper application
6177 to perform the requested application control, then launches the selected application.
6178             </p>
6179             <p>
6180 The application control request is passed to the newly launched application
6181 and it can be accessed by <em>getRequestedAppControl() </em>method. The passed
6182 application control contains the reason the application was launched and
6183 information about what the application is doing. The launched application
6184 can send a result to the caller application with the <em>replyResult() </em>method of
6185 <em>RequestedApplicationControl</em> interface.
6186             </p>
6187             <p>
6188 The <em>ErrorCallback() </em>is launched with these error types:
6189             </p>
6190             <ul>
6191               <li>
6192 NotFoundError - If system cannot find the application that matches the specified application control.              </li>
6193               <li>
6194 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
6195               <li>
6196 UnknownError: If any other error occurs.              </li>
6197             </ul>
6198            </description>
6199             <version>
6200  2.0
6201             </version>
6202             <privilegelevel>
6203  public
6204             </privilegelevel>
6205             <privilege>
6206  http://tizen.org/privilege/application.launch
6207             </privilege>
6208             <Code> var appControl = new tizen.ApplicationControl(
6209      &quot;http://tizen.org/appcontrol/operation/pick&quot;,
6210      null,
6211      &quot;image/jpeg&quot;,
6212      null);
6213
6214  var appControlReplyCallback = {
6215      // callee sent a reply
6216      onsuccess: function(data) {
6217          for (var i = 0; i &#60; data.length; i++) {
6218              if (data[i].key == &quot;http://tizen.org/appcontrol/data/selected&quot;) {
6219                  console.log('Selected image is ' + data[i].value[0]);
6220              }
6221          }
6222      },
6223      // callee returned failure
6224      onfailure: function() {
6225          console.log('The launch application control failed');
6226      }
6227  }
6228
6229  tizen.application.launchAppControl(
6230      appControl,
6231      null,
6232      function() {console.log(&quot;launch application control succeed&quot;); },
6233      function(e) {console.log(&quot;launch application control failed. reason: &quot; + e.message); },
6234      appControlReplyCallback );
6235  </Code>
6236         </descriptive>
6237         <Type type="void"/>
6238         <ArgumentList>
6239           <Argument name="appControl">
6240             <descriptive>
6241                 <description><p>
6242  The data structure describing application control details.
6243                 </p></description>
6244             </descriptive>
6245             <Type name="ApplicationControl"/>
6246           </Argument>
6247           <Argument optional="optional" name="id">
6248             <descriptive>
6249                 <description><p>
6250  An identifier of the application to be launched. If the ID is <var>null </var>or not specified, then the system tries to find the application to be launched for the requested application control.
6251                 </p></description>
6252             </descriptive>
6253             <Type name="ApplicationId" nullable="nullable"/>
6254           </Argument>
6255           <Argument optional="optional" name="successCallback">
6256             <descriptive>
6257                 <description><p>
6258  The method to call when the invocation ends successfully.
6259                 </p></description>
6260             </descriptive>
6261             <Type name="SuccessCallback" nullable="nullable"/>
6262           </Argument>
6263           <Argument optional="optional" name="errorCallback">
6264             <descriptive>
6265                 <description><p>
6266  The method to invoke when an error occurs.
6267                 </p></description>
6268             </descriptive>
6269             <Type name="ErrorCallback" nullable="nullable"/>
6270           </Argument>
6271           <Argument optional="optional" name="replyCallback">
6272             <descriptive>
6273                 <description><p>
6274  The method to invoke when the application gets back results from the launched application.
6275                 </p></description>
6276             </descriptive>
6277             <Type name="ApplicationControlDataArrayReplyCallback" nullable="nullable"/>
6278           </Argument>
6279         </ArgumentList>
6280         <Raises>
6281           <RaiseException name="WebAPIException">
6282             <descriptive>
6283                 <description><p>
6284  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
6285                 </p></description>
6286                 <description><p>
6287  with error type SecurityError, if the application does not have the privilege to call this method.
6288                 </p></description>
6289             </descriptive>
6290           </RaiseException>
6291         </Raises>
6292       </Operation>
6293       <Operation name="findAppControl" id="::Application::ApplicationManager::findAppControl">
6294         <webidl>    void findAppControl(<ref>ApplicationControl</ref> appControl,
6295                         <ref>FindAppControlSuccessCallback</ref> successCallback,
6296                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
6297         <descriptive>
6298             <brief>
6299  Finds application information can be launched with the given application control.
6300             </brief>
6301            <description>
6302             <p>
6303 An application can get a list of other applications can be launched with the application control.
6304             </p>
6305             <p>
6306 The <em>ErrorCallback()<em> is launched with these error types:
6307 </em></em>            </p>
6308             <ul>
6309               <li>
6310 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
6311               <li>
6312 UnknownError - If any other error occurs.              </li>
6313             </ul>
6314            </description>
6315             <version>
6316  2.0
6317             </version>
6318             <Code> var appControl = new tizen.ApplicationControl(
6319      &quot;http://tizen.org/appcontrol/operation/pick&quot;,
6320      null,
6321      &quot;image/jpeg&quot;,
6322      null);
6323
6324  function successCB(appInfos, appControl)
6325  {
6326      // em>appControl/em> is same object with the value passed as first parameter to em>findAppControl()/em>
6327      var appControlReplyCallback = {
6328          // callee sent a reply
6329          onsuccess: function(data) {
6330              for (var i = 0; i &#60; data.length; i++) {
6331                  if (data[i].key == &quot;http://tizen.org/appcontrol/data/selected&quot;) {
6332                      console.log('Selected image is ' + data[i].value[0]);
6333                  }
6334              }
6335          },
6336          // callee returned failure
6337          onfailure: function() {
6338              console.log('The launch application control failed');
6339          }
6340      }
6341
6342      var appId = appInfos[0].id; // select first app's id
6343
6344      tizen.application.launchAppControl(
6345          appControl, 
6346          appId,
6347          function() {console.log(&quot;launch application control succeed&quot;); },
6348         function(e) {console.log(&quot;launch application control failed. reason: &quot; + e.message); },
6349         appControlReplyCallback );
6350  }
6351
6352  tizen.application.findAppControl(appControl, successCB);
6353  </Code>
6354         </descriptive>
6355         <Type type="void"/>
6356         <ArgumentList>
6357           <Argument name="appControl">
6358             <descriptive>
6359                 <description><p>
6360  A data structure describing application control details.
6361                 </p></description>
6362             </descriptive>
6363             <Type name="ApplicationControl"/>
6364           </Argument>
6365           <Argument name="successCallback">
6366             <descriptive>
6367                 <description><p>
6368  The method to call that returns a list of application information.
6369                 </p></description>
6370             </descriptive>
6371             <Type name="FindAppControlSuccessCallback"/>
6372           </Argument>
6373           <Argument optional="optional" name="errorCallback">
6374             <descriptive>
6375                 <description><p>
6376  The method to call when an error occurs.
6377                 </p></description>
6378             </descriptive>
6379             <Type name="ErrorCallback" nullable="nullable"/>
6380           </Argument>
6381         </ArgumentList>
6382         <Raises>
6383           <RaiseException name="WebAPIException">
6384             <descriptive>
6385                 <description><p>
6386  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
6387                 </p></description>
6388             </descriptive>
6389           </RaiseException>
6390         </Raises>
6391       </Operation>
6392       <Operation name="getAppsContext" id="::Application::ApplicationManager::getAppsContext">
6393         <webidl>    void getAppsContext(<ref>ApplicationContextArraySuccessCallback</ref> successCallback,
6394                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
6395         <descriptive>
6396             <brief>
6397  Gets a list of application contexts for applications that are currently running on a device.
6398 The information contained for each application corresponds to the application state at the time when the list was generated.
6399             </brief>
6400            <description>
6401             <p>
6402 The <em>errorCallback()</em> is launched with this error type:
6403             </p>
6404             <ul>
6405               <li>
6406 UnknownError - If an unknown error occurs.              </li>
6407             </ul>
6408            </description>
6409             <version>
6410  2.0
6411             </version>
6412             <Code> function onRunningAppsContext(contexts) {
6413      for (var i = 0; i &#60; contexts.length; i++)
6414          console.log(&quot;ID : &quot; + contexts[i].id);
6415  }
6416
6417  tizen.application.getAppsContext(onRunningAppsContext);
6418  </Code>
6419         </descriptive>
6420         <Type type="void"/>
6421         <ArgumentList>
6422           <Argument name="successCallback">
6423             <descriptive>
6424                 <description><p>
6425  The method to call when the invocation ends successfully.
6426                 </p></description>
6427             </descriptive>
6428             <Type name="ApplicationContextArraySuccessCallback"/>
6429           </Argument>
6430           <Argument optional="optional" name="errorCallback">
6431             <descriptive>
6432                 <description><p>
6433  The method to call when an error occurs.
6434                 </p></description>
6435             </descriptive>
6436             <Type name="ErrorCallback" nullable="nullable"/>
6437           </Argument>
6438         </ArgumentList>
6439         <Raises>
6440           <RaiseException name="WebAPIException">
6441             <descriptive>
6442                 <description><p>
6443  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
6444                 </p></description>
6445             </descriptive>
6446           </RaiseException>
6447         </Raises>
6448       </Operation>
6449       <Operation name="getAppContext" id="::Application::ApplicationManager::getAppContext">
6450         <webidl>    <ref>ApplicationContext</ref> getAppContext(optional <ref>ApplicationContextId</ref>? contextId) raises(<ref>WebAPIException</ref>);</webidl>
6451         <descriptive>
6452             <brief>
6453  Gets the application context for the specified application context ID.
6454 If the ID is set to<var> null</var> or is not set at all, the method returns the application context of the current application.
6455 The list of running applications and their application IDs is obtained with <em>getAppsContext()</em>.
6456             </brief>
6457             <version>
6458  2.0
6459             </version>
6460             <Code> var appContext = tizen.application.getAppContext(null);
6461  console.log(&quot;Application context retrieved for app &quot; + appContext.appId);
6462  </Code>
6463         </descriptive>
6464         <Type name="ApplicationContext">
6465           <descriptive>
6466               <description><p>
6467  ApplicationContext A data structure that lists running application details.
6468               </p></description>
6469           </descriptive>
6470         </Type>
6471         <ArgumentList>
6472           <Argument optional="optional" name="contextId">
6473             <descriptive>
6474                 <description><p>
6475  A string representing an application context ID. If the ID is not provided, the application context of the calling application will be returned.
6476                 </p></description>
6477             </descriptive>
6478             <Type name="ApplicationContextId" nullable="nullable"/>
6479           </Argument>
6480         </ArgumentList>
6481         <Raises>
6482           <RaiseException name="WebAPIException">
6483             <descriptive>
6484                 <description><p>
6485  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
6486                 </p></description>
6487                 <description><p>
6488  with error type NotFoundError, if the application context is not found with provided ID.
6489                 </p></description>
6490                 <description><p>
6491  with error type UnknownError, if the application context cannot be retrieved because of an unknown error.
6492                 </p></description>
6493             </descriptive>
6494           </RaiseException>
6495         </Raises>
6496       </Operation>
6497       <Operation name="getAppsInfo" id="::Application::ApplicationManager::getAppsInfo">
6498         <webidl>    void getAppsInfo(<ref>ApplicationInformationArraySuccessCallback</ref> successCallback,
6499                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
6500         <descriptive>
6501             <brief>
6502  Gets the list of installed application's information on a device.
6503 The information contained on each application corresponds to the application state at the moment when the list was generated.
6504             </brief>
6505            <description>
6506             <p>
6507 The <em>errorCallback()</em> is launched with this error type:
6508             </p>
6509             <ul>
6510               <li>
6511 UnknownError - If an unknown error occurs.              </li>
6512             </ul>
6513            </description>
6514             <version>
6515  2.0
6516             </version>
6517             <Code> function onListInstalledApps(applications) {
6518      for (var i = 0; i &#60; applications.length; i++)
6519          console.log(&quot;ID : &quot; + applications[i].id);
6520  }
6521
6522  tizen.application.getAppsInfo(onListInstalledApps);
6523  </Code>
6524         </descriptive>
6525         <Type type="void"/>
6526         <ArgumentList>
6527           <Argument name="successCallback">
6528             <descriptive>
6529                 <description><p>
6530  The method to call when the invocation ends successfully.
6531                 </p></description>
6532             </descriptive>
6533             <Type name="ApplicationInformationArraySuccessCallback"/>
6534           </Argument>
6535           <Argument optional="optional" name="errorCallback">
6536             <descriptive>
6537                 <description><p>
6538  The method to call when an error occurs.
6539                 </p></description>
6540             </descriptive>
6541             <Type name="ErrorCallback" nullable="nullable"/>
6542           </Argument>
6543         </ArgumentList>
6544         <Raises>
6545           <RaiseException name="WebAPIException">
6546             <descriptive>
6547                 <description><p>
6548  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
6549                 </p></description>
6550             </descriptive>
6551           </RaiseException>
6552         </Raises>
6553       </Operation>
6554       <Operation name="getAppInfo" id="::Application::ApplicationManager::getAppInfo">
6555         <webidl>    <ref>ApplicationInformation</ref> getAppInfo(optional <ref>ApplicationId</ref>? id) raises(<ref>WebAPIException</ref>);</webidl>
6556         <descriptive>
6557             <brief>
6558  Gets application information for a specified application ID.
6559             </brief>
6560            <description>
6561             <p>
6562 If the ID is set to <var>null</var> or not set at all, it returns application information for the current application.
6563 The list of installed applications and their application IDs is obtained with <em>getAppsInfo()</em>.
6564             </p>
6565            </description>
6566             <version>
6567  2.0
6568             </version>
6569             <Code> var appInfo = tizen.application.getAppInfo(null);
6570  console.log(&quot;Current application name : &quot; + appInfo.name);
6571  </Code>
6572         </descriptive>
6573         <Type name="ApplicationInformation">
6574           <descriptive>
6575               <description><p>
6576  ApplicationInformation The information of an application.
6577               </p></description>
6578           </descriptive>
6579         </Type>
6580         <ArgumentList>
6581           <Argument optional="optional" name="id">
6582             <descriptive>
6583                 <description><p>
6584  A string representing application ID. If the ID is not provided, the application information of the calling application will be returned.
6585                 </p></description>
6586             </descriptive>
6587             <Type name="ApplicationId" nullable="nullable"/>
6588           </Argument>
6589         </ArgumentList>
6590         <Raises>
6591           <RaiseException name="WebAPIException">
6592             <descriptive>
6593                 <description><p>
6594  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
6595                 </p></description>
6596                 <description><p>
6597  with error type NotFoundError, if the application is not found with specified ID.
6598                 </p></description>
6599                 <description><p>
6600  with error type UnknownError, if the application cannot be retrieved because of an unknown error.
6601                 </p></description>
6602             </descriptive>
6603           </RaiseException>
6604         </Raises>
6605       </Operation>
6606       <Operation name="getAppCerts" id="::Application::ApplicationManager::getAppCerts">
6607         <webidl>    <ref>ApplicationCertificate</ref>[] getAppCerts(optional <ref>ApplicationId</ref>? id) raises(<ref>WebAPIException</ref>);</webidl>
6608         <descriptive>
6609             <brief>
6610  Gets application certificates for a specified application ID.
6611             </brief>
6612            <description>
6613             <p>
6614 If the ID is set to <var>null</var> or not set at all, it returns application certificates for the current application.
6615             </p>
6616             <p>
6617 The certificate types are listed below
6618             </p>
6619             <ul>
6620               <li>
6621  AUTHOR_ROOT - Author Root Certificate               </li>
6622               <li>
6623  AUTHOR_INTERMEDIATE - Author Intermediate Certificate               </li>
6624               <li>
6625  AUTHOR_SIGNER - Author Signer Certificate               </li>
6626               <li>
6627  DISTRIBUTOR_ROOT - Distributor Root Certificate               </li>
6628               <li>
6629  DISTRIBUTOR_INTERMEDIATE - Distributor Intermediate Certificate               </li>
6630               <li>
6631  DISTRIBUTOR_SIGNER - Distributor Signer Certificate               </li>
6632               <li>
6633  DISTRIBUTOR2_ROOT - Distributor2 Root Certificate               </li>
6634               <li>
6635  DISTRIBUTOR2_INTERMEDIATE - Distributor2 Intermediate Certificate               </li>
6636               <li>
6637  DISTRIBUTOR2_SIGNER - Distributor2 Signer Certificate               </li>
6638             </ul>
6639            </description>
6640             <version>
6641  2.0
6642             </version>
6643             <privilegelevel>
6644  partner
6645             </privilegelevel>
6646             <privilege>
6647  http://tizen.org/privilege/appmanager.certificate
6648             </privilege>
6649             <Code> var appCerts = tizen.application.getAppCerts(null);
6650
6651  for (var i = 0; i &#60; appCerts.length; i++) {
6652     console.log(&quot;#&quot; + i + &quot; type:&quot; + appCerts[i].type);
6653     console.log(&quot;#&quot; + i + &quot; value:&quot; + appCerts[i].value);
6654  }
6655  </Code>
6656         </descriptive>
6657         <Type type="array">
6658           <descriptive>
6659               <description><p>
6660  ApplicationCertificate[] Array of certificate information of a specified application
6661               </p></description>
6662           </descriptive>
6663           <Type name="ApplicationCertificate"/>
6664         </Type>
6665         <ArgumentList>
6666           <Argument optional="optional" name="id">
6667             <descriptive>
6668                 <description><p>
6669  A string representing application ID. If the ID is not provided, the application certificate of the calling application will be returned.
6670                 </p></description>
6671             </descriptive>
6672             <Type name="ApplicationId" nullable="nullable"/>
6673           </Argument>
6674         </ArgumentList>
6675         <Raises>
6676           <RaiseException name="WebAPIException">
6677             <descriptive>
6678                 <description><p>
6679  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
6680                 </p></description>
6681                 <description><p>
6682  with error type SecurityError, if the application does not have the privilege to call this method.
6683                 </p></description>
6684                 <description><p>
6685  with error type NotFoundError, if the application is not found with specified ID.
6686                 </p></description>
6687                 <description><p>
6688  with error type UnknownError, if the application cannot be retrieved because of an unknown error.
6689                 </p></description>
6690             </descriptive>
6691           </RaiseException>
6692         </Raises>
6693       </Operation>
6694       <Operation name="getAppSharedURI" id="::Application::ApplicationManager::getAppSharedURI">
6695         <webidl>    DOMString getAppSharedURI(optional <ref>ApplicationId</ref>? id) raises(<ref>WebAPIException</ref>);</webidl>
6696         <descriptive>
6697             <brief>
6698  Gets URI of read-only shared directory of application for a specified application ID.
6699             </brief>
6700            <description>
6701             <p>
6702 The shared directory is used to export data to other applications.
6703 If the ID is set to <var>null</var> or not set at all, it returns shared directory URI for the current application.
6704             </p>
6705            </description>
6706             <version>
6707  2.1
6708             </version>
6709             <Code> var sharedDir = tizen.application.getAppSharedURI(null);
6710  console.log(&quot;shared directory : &quot; + sharedDir);
6711  </Code>
6712         </descriptive>
6713         <Type type="DOMString">
6714           <descriptive>
6715               <description><p>
6716  DOMString The shared directory URI of application
6717               </p></description>
6718           </descriptive>
6719         </Type>
6720         <ArgumentList>
6721           <Argument optional="optional" name="id">
6722             <descriptive>
6723                 <description><p>
6724  A string representing application ID. If the ID is not provided, the shared directory URI of the calling application will be returned.
6725                 </p></description>
6726             </descriptive>
6727             <Type name="ApplicationId" nullable="nullable"/>
6728           </Argument>
6729         </ArgumentList>
6730         <Raises>
6731           <RaiseException name="WebAPIException">
6732             <descriptive>
6733                 <description><p>
6734  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
6735                 </p></description>
6736                 <description><p>
6737  with error type NotFoundError, if the application is not found with specified ID.
6738                 </p></description>
6739                 <description><p>
6740  with error type UnknownError, if the application cannot be retrieved because of an unknown error.
6741                 </p></description>
6742             </descriptive>
6743           </RaiseException>
6744         </Raises>
6745       </Operation>
6746       <Operation name="getAppMetaData" id="::Application::ApplicationManager::getAppMetaData">
6747         <webidl>    <ref>ApplicationMetaData</ref>[] getAppMetaData(optional <ref>ApplicationId</ref>? id) raises(<ref>WebAPIException</ref>);</webidl>
6748         <descriptive>
6749             <brief>
6750  Gets application meta data array for a specified application ID.
6751             </brief>
6752            <description>
6753             <p>
6754 If the ID is set to <var>null</var> or not set at all, it returns application meta data array for the current application.
6755             </p>
6756            </description>
6757             <version>
6758  2.2
6759             </version>
6760             <privilegelevel>
6761  public
6762             </privilegelevel>
6763             <privilege>
6764  http://tizen.org/privilege/application.info
6765             </privilege>
6766             <Code> var metaDataArray = tizen.application.getAppMetaData(null);
6767  console.log(&quot;size of metadata : &quot; + metaDataArray.length);
6768
6769  </Code>
6770         </descriptive>
6771         <Type type="array">
6772           <descriptive>
6773               <description><p>
6774  ApplicationMetaData[] Array of meta data of a specified application. If there are no meta data for a specified application, 
6775 empty array will be returned
6776               </p></description>
6777           </descriptive>
6778           <Type name="ApplicationMetaData"/>
6779         </Type>
6780         <ArgumentList>
6781           <Argument optional="optional" name="id">
6782             <descriptive>
6783                 <description><p>
6784  A string representing application ID. If the ID is not provided, the application metadata array of the calling application will be returned.
6785                 </p></description>
6786             </descriptive>
6787             <Type name="ApplicationId" nullable="nullable"/>
6788           </Argument>
6789         </ArgumentList>
6790         <Raises>
6791           <RaiseException name="WebAPIException">
6792             <descriptive>
6793                 <description><p>
6794  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
6795                 </p></description>
6796                 <description><p>
6797  with error type SecurityError, if the application does not have the privilege to call this method.
6798                 </p></description>
6799                 <description><p>
6800  with error type NotFoundError, if the application is not found with specified ID.
6801                 </p></description>
6802                 <description><p>
6803  with error type UnknownError, if the application cannot be retrieved because of an unknown error.
6804                 </p></description>
6805             </descriptive>
6806           </RaiseException>
6807         </Raises>
6808       </Operation>
6809       <Operation name="addAppInfoEventListener" id="::Application::ApplicationManager::addAppInfoEventListener">
6810         <webidl>    long addAppInfoEventListener(<ref>ApplicationInformationEventCallback</ref> eventCallback) raises(<ref>WebAPIException</ref>);</webidl>
6811         <descriptive>
6812             <brief>
6813  Adds a listener for receiving any notification for changes in the list of the installed applications
6814 on a device.
6815             </brief>
6816            <description>
6817             <p>
6818 It install a callback that is triggered every time a change occurs on
6819 the list of installed applications on a device. This change may
6820 be occurred by a new installation, uninstallation, or update of an application.
6821             </p>
6822             <p>
6823 When executed, the implementation must immediately return a listener
6824 ID that identifies the listener. After returning the ID, the change
6825 detection operation is started asynchronously.
6826             </p>
6827             <p>
6828 The <em>ApplicationInformationEventCallback </em>must be invoked every time a new
6829 application is installed, removed, or updated.
6830             </p>
6831             <p>
6832 The change detection must continue until the <em>removeAppInfoEventListener()</em> method is called
6833 with the corresponding listener identifier.
6834             </p>
6835            </description>
6836             <version>
6837  2.0
6838             </version>
6839             <Code> var appEventCallback = {
6840     oninstalled: function(appInfo) {
6841        console.log('The application ' + appInfo.name + ' is installed');
6842     },
6843     onupdated: function(appInfo) {
6844        console.log('The application ' + appInfo.name + ' is updated');
6845     },
6846     onuninstalled: function(appid) {
6847        console.log('The application ' + appid + ' is uninstalled');
6848     }
6849  };
6850  var watchId = tizen.application.addAppInfoEventListener(appEventCallback);
6851  </Code>
6852         </descriptive>
6853         <Type type="long">
6854           <descriptive>
6855               <description><p>
6856  long ID of the listener that can be used to remove the listener later.
6857               </p></description>
6858           </descriptive>
6859         </Type>
6860         <ArgumentList>
6861           <Argument name="eventCallback">
6862             <descriptive>
6863                 <description><p>
6864  The method to call when a change on the installed applications is made.
6865                 </p></description>
6866             </descriptive>
6867             <Type name="ApplicationInformationEventCallback"/>
6868           </Argument>
6869         </ArgumentList>
6870         <Raises>
6871           <RaiseException name="WebAPIException">
6872             <descriptive>
6873                 <description><p>
6874  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
6875                 </p></description>
6876                 <description><p>
6877  with error type UnknownError, if fails to add listener because of an unknown error.
6878                 </p></description>
6879             </descriptive>
6880           </RaiseException>
6881         </Raises>
6882       </Operation>
6883       <Operation name="removeAppInfoEventListener" id="::Application::ApplicationManager::removeAppInfoEventListener">
6884         <webidl>    void removeAppInfoEventListener(long watchId) raises(<ref>WebAPIException</ref>);</webidl>
6885         <descriptive>
6886             <brief>
6887  Removes the listener to stop receiving notifications for changes on the list of installed
6888 applications on a device.
6889             </brief>
6890             <version>
6891  2.0
6892             </version>
6893             <Code> tizen.application.removeAppInfoEventListener(watchId);
6894  </Code>
6895         </descriptive>
6896         <Type type="void"/>
6897         <ArgumentList>
6898           <Argument name="watchId">
6899             <descriptive>
6900                 <description><p>
6901  An ID that identifies the listener.
6902                 </p></description>
6903             </descriptive>
6904             <Type type="long"/>
6905           </Argument>
6906         </ArgumentList>
6907         <Raises>
6908           <RaiseException name="WebAPIException">
6909             <descriptive>
6910                 <description><p>
6911  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
6912                 </p></description>
6913                 <description><p>
6914  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
6915                 </p></description>
6916                 <description><p>
6917  with error type NotFoundError, if the listener is not found with specified ID.
6918                 </p></description>
6919                 <description><p>
6920  with error type UnknownError, if fails to remove listener because of an unknown error.
6921                 </p></description>
6922             </descriptive>
6923           </RaiseException>
6924         </Raises>
6925       </Operation>
6926     </Interface>
6927     <Interface name="Application" id="::Application::Application">
6928       <webidl>  [NoInterfaceObject] interface Application {
6929
6930     readonly attribute <ref>ApplicationInformation</ref> appInfo;
6931
6932     readonly attribute <ref>ApplicationContextId</ref> contextId;
6933
6934     void exit() raises(<ref>WebAPIException</ref>);
6935
6936     void hide() raises(<ref>WebAPIException</ref>);
6937
6938     <ref>RequestedApplicationControl</ref> getRequestedAppControl() raises(<ref>WebAPIException</ref>);
6939   };</webidl>
6940       <descriptive>
6941           <brief>
6942  This interface defines the current application's information and 
6943 the basic operations (such as exit or hide) for the current application .
6944           </brief>
6945           <version>
6946  2.0
6947           </version>
6948       </descriptive>
6949       <ExtendedAttributeList>
6950         <ExtendedAttribute name="NoInterfaceObject">
6951           <webidl>NoInterfaceObject</webidl>
6952         </ExtendedAttribute>
6953       </ExtendedAttributeList>
6954       <Attribute readonly="readonly" name="appInfo" id="::Application::Application::appInfo">
6955         <webidl>    readonly attribute <ref>ApplicationInformation</ref> appInfo;</webidl>
6956         <descriptive>
6957             <brief>
6958  An attribute to store the application information for the current application.
6959             </brief>
6960             <version>
6961  2.0
6962             </version>
6963         </descriptive>
6964         <Type name="ApplicationInformation"/>
6965       </Attribute>
6966       <Attribute readonly="readonly" name="contextId" id="::Application::Application::contextId">
6967         <webidl>    readonly attribute <ref>ApplicationContextId</ref> contextId;</webidl>
6968         <descriptive>
6969             <brief>
6970  An attribute to store the ID of a running application.
6971             </brief>
6972             <version>
6973  2.0
6974             </version>
6975         </descriptive>
6976         <Type name="ApplicationContextId"/>
6977       </Attribute>
6978       <Operation name="exit" id="::Application::Application::exit">
6979         <webidl>    void exit() raises(<ref>WebAPIException</ref>);</webidl>
6980         <descriptive>
6981             <brief>
6982  Exits the current application.
6983             </brief>
6984             <version>
6985  2.0
6986             </version>
6987             <Code> var app = tizen.application.getCurrentApplication();
6988
6989  app.exit();
6990  </Code>
6991         </descriptive>
6992         <Type type="void"/>
6993         <ArgumentList/>
6994         <Raises>
6995           <RaiseException name="WebAPIException">
6996             <descriptive>
6997                 <description><p>
6998  with error type UnknownError, if any other error occurs.
6999                 </p></description>
7000             </descriptive>
7001           </RaiseException>
7002         </Raises>
7003       </Operation>
7004       <Operation name="hide" id="::Application::Application::hide">
7005         <webidl>    void hide() raises(<ref>WebAPIException</ref>);</webidl>
7006         <descriptive>
7007             <brief>
7008  Hides the current application.
7009             </brief>
7010             <version>
7011  2.0
7012             </version>
7013             <Code> var app = tizen.application.getCurrentApplication();
7014
7015  app.hide();
7016  </Code>
7017         </descriptive>
7018         <Type type="void"/>
7019         <ArgumentList/>
7020         <Raises>
7021           <RaiseException name="WebAPIException">
7022             <descriptive>
7023                 <description><p>
7024  with error type UnknownError, if any other error occurs.
7025                 </p></description>
7026             </descriptive>
7027           </RaiseException>
7028         </Raises>
7029       </Operation>
7030       <Operation name="getRequestedAppControl" id="::Application::Application::getRequestedAppControl">
7031         <webidl>    <ref>RequestedApplicationControl</ref> getRequestedAppControl() raises(<ref>WebAPIException</ref>);</webidl>
7032         <descriptive>
7033             <brief>
7034  Gets the requested application control passed to the current application.
7035             </brief>
7036            <description>
7037             <p>
7038 Gets the requested application control that contains the application control
7039 passed by the <em>launchAppControl()</em> method from the calling application.
7040 The requested application control contains the reason the application
7041 was launched and what it has to perform. For example, an application
7042 might be launched to display an image on a page by other
7043 application's request. In all of these cases, the application is
7044 responsible for checking the contents of the application control and responding
7045 appropriately when it is launched.
7046             </p>
7047            </description>
7048             <version>
7049  2.0
7050             </version>
7051             <Code> var reqAppControl = tizen.application.getCurrentApplication().getRequestedAppControl();
7052
7053  if (reqAppControl) {
7054      console.log(&quot;Requester AppID : &quot; + reqAppControl.callerAppId);
7055  }
7056  </Code>
7057         </descriptive>
7058         <Type name="RequestedApplicationControl">
7059           <descriptive>
7060               <description><p>
7061  RequestedApplicationControl The details of an requested application control
7062               </p></description>
7063           </descriptive>
7064         </Type>
7065         <ArgumentList/>
7066         <Raises>
7067           <RaiseException name="WebAPIException">
7068             <descriptive>
7069                 <description><p>
7070  with error type UnknownError, if the application control cannot be retrieved because of an unknown error.
7071                 </p></description>
7072             </descriptive>
7073           </RaiseException>
7074         </Raises>
7075       </Operation>
7076     </Interface>
7077     <Interface name="ApplicationInformation" id="::Application::ApplicationInformation">
7078       <webidl>  [NoInterfaceObject] interface ApplicationInformation {
7079
7080     readonly attribute <ref>ApplicationId</ref> id;
7081
7082     readonly attribute DOMString name;
7083
7084     readonly attribute DOMString iconPath;
7085
7086     readonly attribute DOMString version;
7087
7088     readonly attribute boolean show;
7089
7090     readonly attribute DOMString[] categories;
7091
7092     readonly attribute Date installDate;
7093
7094     readonly attribute long size raises(<ref>WebAPIException</ref>);
7095
7096     readonly attribute <ref>PackageId</ref> packageId;
7097   };</webidl>
7098       <descriptive>
7099           <brief>
7100  This interface defines the general information available to an installed application.
7101           </brief>
7102           <version>
7103  1.0
7104           </version>
7105       </descriptive>
7106       <ExtendedAttributeList>
7107         <ExtendedAttribute name="NoInterfaceObject">
7108           <webidl>NoInterfaceObject</webidl>
7109         </ExtendedAttribute>
7110       </ExtendedAttributeList>
7111       <Attribute readonly="readonly" name="id" id="::Application::ApplicationInformation::id">
7112         <webidl>    readonly attribute <ref>ApplicationId</ref> id;</webidl>
7113         <descriptive>
7114             <brief>
7115  An attribute to store the identifier of an application for application management.
7116             </brief>
7117             <version>
7118  1.0
7119             </version>
7120         </descriptive>
7121         <Type name="ApplicationId"/>
7122       </Attribute>
7123       <Attribute readonly="readonly" name="name" id="::Application::ApplicationInformation::name">
7124         <webidl>    readonly attribute DOMString name;</webidl>
7125         <descriptive>
7126             <brief>
7127  An attribute to store the name of an application.
7128             </brief>
7129             <version>
7130  1.0
7131             </version>
7132         </descriptive>
7133         <Type type="DOMString"/>
7134       </Attribute>
7135       <Attribute readonly="readonly" name="iconPath" id="::Application::ApplicationInformation::iconPath">
7136         <webidl>    readonly attribute DOMString iconPath;</webidl>
7137         <descriptive>
7138             <brief>
7139  An attribute to store the icon path of an application.
7140             </brief>
7141             <version>
7142  1.0
7143             </version>
7144         </descriptive>
7145         <Type type="DOMString"/>
7146       </Attribute>
7147       <Attribute readonly="readonly" name="version" id="::Application::ApplicationInformation::version">
7148         <webidl>    readonly attribute DOMString version;</webidl>
7149         <descriptive>
7150             <brief>
7151  An attribute to store the version of an application.
7152             </brief>
7153             <version>
7154  1.0
7155             </version>
7156         </descriptive>
7157         <Type type="DOMString"/>
7158       </Attribute>
7159       <Attribute readonly="readonly" name="show" id="::Application::ApplicationInformation::show">
7160         <webidl>    readonly attribute boolean show;</webidl>
7161         <descriptive>
7162             <brief>
7163  An attribute that determines whether the application information should
7164 be shown (such as in the menus) or not.
7165             </brief>
7166             <version>
7167  1.0
7168             </version>
7169         </descriptive>
7170         <Type type="boolean"/>
7171       </Attribute>
7172       <Attribute readonly="readonly" name="categories" id="::Application::ApplicationInformation::categories">
7173         <webidl>    readonly attribute DOMString[] categories;</webidl>
7174         <descriptive>
7175             <brief>
7176  An array of attributes to store the categories that the app belongs to.
7177             </brief>
7178             <version>
7179  2.0
7180             </version>
7181         </descriptive>
7182         <Type type="array">
7183           <Type type="DOMString"/>
7184         </Type>
7185       </Attribute>
7186       <Attribute readonly="readonly" name="installDate" id="::Application::ApplicationInformation::installDate">
7187         <webidl>    readonly attribute Date installDate;</webidl>
7188         <descriptive>
7189             <brief>
7190  An attribute to store the application install/update time.
7191             </brief>
7192             <version>
7193  2.0
7194             </version>
7195         </descriptive>
7196         <Type type="Date"/>
7197       </Attribute>
7198       <Attribute readonly="readonly" name="size" id="::Application::ApplicationInformation::size">
7199         <webidl>    readonly attribute long size raises(<ref>WebAPIException</ref>);</webidl>
7200         <descriptive>
7201             <brief>
7202  An attribute to store the application size (installed space).
7203             </brief>
7204             <version>
7205  2.0
7206             </version>
7207             <privilegelevel>
7208  public
7209             </privilegelevel>
7210             <privilege>
7211  http://tizen.org/privilege/application.info
7212             </privilege>
7213         </descriptive>
7214         <Type type="long"/>
7215         <Raises>
7216           <RaiseException name="WebAPIException">
7217             <descriptive>
7218                 <description><p>
7219  with error type SecurityError, if this attribute is not allowed.
7220                 </p></description>
7221             </descriptive>
7222           </RaiseException>
7223         </Raises>
7224       </Attribute>
7225       <Attribute readonly="readonly" name="packageId" id="::Application::ApplicationInformation::packageId">
7226         <webidl>    readonly attribute <ref>PackageId</ref> packageId;</webidl>
7227         <descriptive>
7228             <brief>
7229  An attribute to store the package ID of application.
7230             </brief>
7231             <version>
7232  2.1
7233             </version>
7234         </descriptive>
7235         <Type name="PackageId"/>
7236       </Attribute>
7237     </Interface>
7238     <Interface name="ApplicationContext" id="::Application::ApplicationContext">
7239       <webidl>  [NoInterfaceObject] interface ApplicationContext {
7240
7241     readonly attribute <ref>ApplicationContextId</ref> id;
7242
7243     readonly attribute <ref>ApplicationId</ref> appId;
7244
7245   };</webidl>
7246       <descriptive>
7247           <brief>
7248  This interface defines the information available about a running
7249 application.
7250           </brief>
7251           <version>
7252  1.0
7253           </version>
7254       </descriptive>
7255       <ExtendedAttributeList>
7256         <ExtendedAttribute name="NoInterfaceObject">
7257           <webidl>NoInterfaceObject</webidl>
7258         </ExtendedAttribute>
7259       </ExtendedAttributeList>
7260       <Attribute readonly="readonly" name="id" id="::Application::ApplicationContext::id">
7261         <webidl>    readonly attribute <ref>ApplicationContextId</ref> id;</webidl>
7262         <descriptive>
7263             <brief>
7264  An attribute to store the ID of a running application.
7265             </brief>
7266             <version>
7267  1.0
7268             </version>
7269         </descriptive>
7270         <Type name="ApplicationContextId"/>
7271       </Attribute>
7272       <Attribute readonly="readonly" name="appId" id="::Application::ApplicationContext::appId">
7273         <webidl>    readonly attribute <ref>ApplicationId</ref> appId;</webidl>
7274         <descriptive>
7275             <brief>
7276  An attribute to store the ID of an installed application.
7277             </brief>
7278             <version>
7279  1.0
7280             </version>
7281         </descriptive>
7282         <Type name="ApplicationId"/>
7283       </Attribute>
7284     </Interface>
7285     <Interface name="ApplicationControlData" id="::Application::ApplicationControlData">
7286       <webidl>  [Constructor(DOMString key, DOMString[] value)]
7287   interface ApplicationControlData {
7288
7289     attribute DOMString key;
7290
7291     attribute DOMString[] value;
7292
7293   };</webidl>
7294       <descriptive>
7295           <brief>
7296  This interface defines a key/value pair used to pass data
7297 between applications through the <em>ApplicationControl </em>interface.
7298           </brief>
7299           <version>
7300  2.0
7301           </version>
7302           <Code> var appControlData = new tizen.ApplicationControlData(&quot;image&quot;, [imagedata1]);
7303  </Code>
7304       </descriptive>
7305       <ExtendedAttributeList>
7306         <ExtendedAttribute name="Constructor">
7307           <webidl>Constructor(DOMString key, DOMString[] value)</webidl>
7308           <ArgumentList>
7309             <Argument name="key">
7310               <Type type="DOMString"/>
7311             </Argument>
7312             <Argument name="value">
7313               <Type type="array">
7314                 <Type type="DOMString"/>
7315               </Type>
7316             </Argument>
7317           </ArgumentList>
7318         </ExtendedAttribute>
7319       </ExtendedAttributeList>
7320       <Attribute name="key" id="::Application::ApplicationControlData::key">
7321         <webidl>    attribute DOMString key;</webidl>
7322         <descriptive>
7323             <brief>
7324  An attribute to store the name of a key.
7325             </brief>
7326             <version>
7327  2.0
7328             </version>
7329         </descriptive>
7330         <Type type="DOMString"/>
7331       </Attribute>
7332       <Attribute name="value" id="::Application::ApplicationControlData::value">
7333         <webidl>    attribute DOMString[] value;</webidl>
7334         <descriptive>
7335             <brief>
7336  An attribute to store the value associated with a key.
7337             </brief>
7338             <version>
7339  2.0
7340             </version>
7341         </descriptive>
7342         <Type type="array">
7343           <Type type="DOMString"/>
7344         </Type>
7345       </Attribute>
7346     </Interface>
7347     <Interface name="ApplicationControl" id="::Application::ApplicationControl">
7348       <webidl>  [Constructor(DOMString operation, optional DOMString? uri,
7349                optional DOMString? mime, optional DOMString? category,
7350                optional <ref>ApplicationControlData</ref>[]? data)]
7351   interface ApplicationControl {
7352
7353     attribute DOMString operation;
7354
7355     attribute DOMString? uri;
7356
7357     attribute DOMString? mime;
7358
7359     attribute DOMString? category;
7360
7361     attribute <ref>ApplicationControlData</ref>[] data;
7362
7363   };</webidl>
7364       <descriptive>
7365           <brief>
7366  This interface consists of an operation, URI, MIME type,
7367 and data. It describes an action to be performed by other applications
7368 and is passed to launch other applications.
7369 If the system gets the application control request, it finds
7370 the corresponding application to be launched with the delivered application control
7371 and launches the selected application.
7372           </brief>
7373           <version>
7374  2.0
7375           </version>
7376           <Code> var appControl =
7377        new tizen.ApplicationControl(
7378                   &quot;http://tizen.org/appcontrol/operation/view&quot;,
7379                   null,
7380                   &quot;image/jpeg&quot;,
7381                   null,
7382                   [new tizen.ApplicationControlData(&quot;images&quot;,
7383                                                     [imagedata1, imagedata2])] );
7384  </Code>
7385       </descriptive>
7386       <ExtendedAttributeList>
7387         <ExtendedAttribute name="Constructor">
7388           <webidl>Constructor(DOMString operation, optional DOMString? uri,
7389                optional DOMString? mime, optional DOMString? category,
7390                optional <ref>ApplicationControlData</ref>[]? data)</webidl>
7391           <ArgumentList>
7392             <Argument name="operation">
7393               <Type type="DOMString"/>
7394             </Argument>
7395             <Argument optional="optional" name="uri">
7396               <Type type="DOMString" nullable="nullable"/>
7397             </Argument>
7398             <Argument optional="optional" name="mime">
7399               <Type type="DOMString" nullable="nullable"/>
7400             </Argument>
7401             <Argument optional="optional" name="category">
7402               <Type type="DOMString" nullable="nullable"/>
7403             </Argument>
7404             <Argument optional="optional" name="data">
7405               <Type type="array" nullable="nullable">
7406                 <Type name="ApplicationControlData"/>
7407               </Type>
7408             </Argument>
7409           </ArgumentList>
7410         </ExtendedAttribute>
7411       </ExtendedAttributeList>
7412       <Attribute name="operation" id="::Application::ApplicationControl::operation">
7413         <webidl>    attribute DOMString operation;</webidl>
7414         <descriptive>
7415             <brief>
7416  An attribute to store the string that defines the action to be
7417 performed by an application control.
7418             </brief>
7419             <version>
7420  2.0
7421             </version>
7422         </descriptive>
7423         <Type type="DOMString"/>
7424       </Attribute>
7425       <Attribute name="uri" id="::Application::ApplicationControl::uri">
7426         <webidl>    attribute DOMString? uri;</webidl>
7427         <descriptive>
7428             <brief>
7429  An attribute to store the URI needed by application control.
7430             </brief>
7431             <version>
7432  2.0
7433             </version>
7434         </descriptive>
7435         <Type type="DOMString" nullable="nullable"/>
7436       </Attribute>
7437       <Attribute name="mime" id="::Application::ApplicationControl::mime">
7438         <webidl>    attribute DOMString? mime;</webidl>
7439         <descriptive>
7440             <brief>
7441  An attribute to store the MIME type of a content.
7442             </brief>
7443             <version>
7444  2.0
7445             </version>
7446         </descriptive>
7447         <Type type="DOMString" nullable="nullable"/>
7448       </Attribute>
7449       <Attribute name="category" id="::Application::ApplicationControl::category">
7450         <webidl>    attribute DOMString? category;</webidl>
7451         <descriptive>
7452             <brief>
7453  An attribute to store the category of the application to be launched.
7454             </brief>
7455             <version>
7456  2.0
7457             </version>
7458         </descriptive>
7459         <Type type="DOMString" nullable="nullable"/>
7460       </Attribute>
7461       <Attribute name="data" id="::Application::ApplicationControl::data">
7462         <webidl>    attribute <ref>ApplicationControlData</ref>[] data;</webidl>
7463         <descriptive>
7464             <brief>
7465  An array of attributes to store the data needed for an application control.
7466             </brief>
7467             <version>
7468  2.0
7469             </version>
7470         </descriptive>
7471         <Type type="array">
7472           <Type name="ApplicationControlData"/>
7473         </Type>
7474       </Attribute>
7475     </Interface>
7476     <Interface name="RequestedApplicationControl" id="::Application::RequestedApplicationControl">
7477       <webidl>  [NoInterfaceObject] interface RequestedApplicationControl {
7478
7479     readonly attribute <ref>ApplicationControl</ref> appControl;
7480
7481     readonly attribute <ref>ApplicationId</ref> callerAppId;
7482
7483     void replyResult(optional <ref>ApplicationControlData</ref>[]? data) raises(<ref>WebAPIException</ref>);
7484
7485     void replyFailure() raises(<ref>WebAPIException</ref>);
7486
7487   };</webidl>
7488       <descriptive>
7489           <brief>
7490  This interface has an application control information requested and passed 
7491 from other application and is passed to launch other applications. The newly 
7492 launched application can get the requested application control through <em>getRequestedAppControl()</em> method, and send the results
7493 to the calling application through the <em>replyResult()</em> method after performing the
7494 required action requested the calling application.
7495           </brief>
7496           <version>
7497  2.0
7498           </version>
7499           <Code> var reqAppControl = tizen.application.getCurrentApplication().getRequestedAppControl();
7500  if (reqAppControl) {
7501      console.log(&quot;Requester AppID : &quot; + reqAppControl.callerAppId);
7502
7503      var appControl = reqAppControl.appControl;
7504      if (appControl.operation == &quot;http://tizen.org/appcontrol/operation/pick&quot;) {
7505          var data = new tizen.ApplicationControlData(&quot;http://tizen.org/appcontrol/data/selected&quot;, [&quot;Image1.jpg&quot;]);
7506          reqAppControl.replyResult([data]);
7507      }
7508  }
7509  </Code>
7510       </descriptive>
7511       <ExtendedAttributeList>
7512         <ExtendedAttribute name="NoInterfaceObject">
7513           <webidl>NoInterfaceObject</webidl>
7514         </ExtendedAttribute>
7515       </ExtendedAttributeList>
7516       <Attribute readonly="readonly" name="appControl" id="::Application::RequestedApplicationControl::appControl">
7517         <webidl>    readonly attribute <ref>ApplicationControl</ref> appControl;</webidl>
7518         <descriptive>
7519             <brief>
7520  An attribute to store the application control object that describes caller application's request.
7521 It contains the information that the calling application passed to <em>launchAppControl</em>.
7522             </brief>
7523             <version>
7524  2.0
7525             </version>
7526         </descriptive>
7527         <Type name="ApplicationControl"/>
7528       </Attribute>
7529       <Attribute readonly="readonly" name="callerAppId" id="::Application::RequestedApplicationControl::callerAppId">
7530         <webidl>    readonly attribute <ref>ApplicationId</ref> callerAppId;</webidl>
7531         <descriptive>
7532             <brief>
7533  An attribute to store the caller application's ID
7534             </brief>
7535             <version>
7536  2.1
7537             </version>
7538         </descriptive>
7539         <Type name="ApplicationId"/>
7540       </Attribute>
7541       <Operation name="replyResult" id="::Application::RequestedApplicationControl::replyResult">
7542         <webidl>    void replyResult(optional <ref>ApplicationControlData</ref>[]? data) raises(<ref>WebAPIException</ref>);</webidl>
7543         <descriptive>
7544             <brief>
7545  Sends the results to the caller application.
7546             </brief>
7547             <version>
7548  2.0
7549             </version>
7550         </descriptive>
7551         <Type type="void"/>
7552         <ArgumentList>
7553           <Argument optional="optional" name="data">
7554             <descriptive>
7555                 <description><p>
7556  An array of ApplicationControlData objects.     
7557                 </p></description>
7558             </descriptive>
7559             <Type type="array" nullable="nullable">
7560               <Type name="ApplicationControlData"/>
7561             </Type>
7562           </Argument>
7563         </ArgumentList>
7564         <Raises>
7565           <RaiseException name="WebAPIException">
7566             <descriptive>
7567                 <description><p>
7568  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
7569                 </p></description>
7570                 <description><p>
7571  with error type NotFoundError, if the caller app is not alive or there is no response from the caller app
7572                 </p></description>
7573                 <description><p>
7574  with error type UnknownError, if the reply request fails because of an unknown error
7575                 </p></description>
7576             </descriptive>
7577           </RaiseException>
7578         </Raises>
7579       </Operation>
7580       <Operation name="replyFailure" id="::Application::RequestedApplicationControl::replyFailure">
7581         <webidl>    void replyFailure() raises(<ref>WebAPIException</ref>);</webidl>
7582         <descriptive>
7583             <brief>
7584  Notifies the calling application that the application failed
7585 to perform the requested action.
7586             </brief>
7587             <version>
7588  2.0
7589             </version>
7590         </descriptive>
7591         <Type type="void"/>
7592         <ArgumentList/>
7593         <Raises>
7594           <RaiseException name="WebAPIException">
7595             <descriptive>
7596                 <description><p>
7597  with error type NotFoundError, if the caller app is not alive or there is no response from the caller app
7598                 </p></description>
7599                 <description><p>
7600  with error type UnknownError, if the reply request fails because of an unknown error
7601                 </p></description>
7602             </descriptive>
7603           </RaiseException>
7604         </Raises>
7605       </Operation>
7606     </Interface>
7607     <Interface name="ApplicationCertificate" id="::Application::ApplicationCertificate">
7608       <webidl>  [NoInterfaceObject] interface ApplicationCertificate {
7609
7610     readonly attribute DOMString type;
7611
7612     readonly attribute DOMString value;
7613
7614   };</webidl>
7615       <descriptive>
7616           <brief>
7617  This interface defines the certificate information of an installed application.
7618           </brief>
7619           <version>
7620  2.0
7621           </version>
7622       </descriptive>
7623       <ExtendedAttributeList>
7624         <ExtendedAttribute name="NoInterfaceObject">
7625           <webidl>NoInterfaceObject</webidl>
7626         </ExtendedAttribute>
7627       </ExtendedAttributeList>
7628       <Attribute readonly="readonly" name="type" id="::Application::ApplicationCertificate::type">
7629         <webidl>    readonly attribute DOMString type;</webidl>
7630         <descriptive>
7631             <brief>
7632  An attribute to store the type of the application certificate.
7633             </brief>
7634             <version>
7635  2.0
7636             </version>
7637         </descriptive>
7638         <Type type="DOMString"/>
7639       </Attribute>
7640       <Attribute readonly="readonly" name="value" id="::Application::ApplicationCertificate::value">
7641         <webidl>    readonly attribute DOMString value;</webidl>
7642         <descriptive>
7643             <brief>
7644  An attribute to store the value of the application certificate.
7645             </brief>
7646             <version>
7647  2.0
7648             </version>
7649         </descriptive>
7650         <Type type="DOMString"/>
7651       </Attribute>
7652     </Interface>
7653     <Interface name="ApplicationMetaData" id="::Application::ApplicationMetaData">
7654       <webidl>  [NoInterfaceObject] interface ApplicationMetaData {
7655
7656     readonly attribute DOMString key;
7657
7658     readonly attribute DOMString value;
7659
7660   };</webidl>
7661       <descriptive>
7662           <brief>
7663  This interface defines the meta data of an installed application.
7664           </brief>
7665           <version>
7666  2.2
7667           </version>
7668       </descriptive>
7669       <ExtendedAttributeList>
7670         <ExtendedAttribute name="NoInterfaceObject">
7671           <webidl>NoInterfaceObject</webidl>
7672         </ExtendedAttribute>
7673       </ExtendedAttributeList>
7674       <Attribute readonly="readonly" name="key" id="::Application::ApplicationMetaData::key">
7675         <webidl>    readonly attribute DOMString key;</webidl>
7676         <descriptive>
7677             <brief>
7678  An attribute to store the key of the application meta data.
7679             </brief>
7680             <version>
7681  2.2
7682             </version>
7683         </descriptive>
7684         <Type type="DOMString"/>
7685       </Attribute>
7686       <Attribute readonly="readonly" name="value" id="::Application::ApplicationMetaData::value">
7687         <webidl>    readonly attribute DOMString value;</webidl>
7688         <descriptive>
7689             <brief>
7690  An attribute to store the value of the application meta data.
7691             </brief>
7692             <version>
7693  2.2
7694             </version>
7695         </descriptive>
7696         <Type type="DOMString"/>
7697       </Attribute>
7698     </Interface>
7699     <Interface name="ApplicationInformationArraySuccessCallback" id="::Application::ApplicationInformationArraySuccessCallback">
7700       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface ApplicationInformationArraySuccessCallback {
7701     void onsuccess(<ref>ApplicationInformation</ref>[] informationArray);
7702   };</webidl>
7703       <descriptive>
7704           <brief>
7705  This interface invokes the success callback that is invoked when the installed application list is retrieved.
7706           </brief>
7707          <description>
7708           <p>
7709 This callback interface specifies a success method with an array of
7710 <em>ApplicationInformation </em>objects as an input parameter. It is used in <em>ApplicationManager.getAppsInfo()</em>.
7711           </p>
7712          </description>
7713           <version>
7714  1.0
7715           </version>
7716       </descriptive>
7717       <ExtendedAttributeList>
7718         <ExtendedAttribute name="Callback" value="FunctionOnly">
7719           <webidl>Callback</webidl>
7720         </ExtendedAttribute>
7721         <ExtendedAttribute name="NoInterfaceObject">
7722           <webidl> NoInterfaceObject</webidl>
7723         </ExtendedAttribute>
7724       </ExtendedAttributeList>
7725       <Operation name="onsuccess" id="::Application::ApplicationInformationArraySuccessCallback::onsuccess">
7726         <webidl>    void onsuccess(<ref>ApplicationInformation</ref>[] informationArray);</webidl>
7727         <descriptive>
7728             <brief>
7729  Called when the asynchronous call completes successfully.
7730             </brief>
7731             <version>
7732  1.0
7733             </version>
7734         </descriptive>
7735         <Type type="void"/>
7736         <ArgumentList>
7737           <Argument name="informationArray">
7738             <descriptive>
7739                 <description><p>
7740  A list of installed applications.
7741                 </p></description>
7742             </descriptive>
7743             <Type type="array">
7744               <Type name="ApplicationInformation"/>
7745             </Type>
7746           </Argument>
7747         </ArgumentList>
7748       </Operation>
7749     </Interface>
7750     <Interface name="FindAppControlSuccessCallback" id="::Application::FindAppControlSuccessCallback">
7751       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface FindAppControlSuccessCallback {
7752     void onsuccess(<ref>ApplicationInformation</ref>[] informationArray, <ref>ApplicationControl</ref> appControl);
7753   };</webidl>
7754       <descriptive>
7755           <brief>
7756  This interface specified a success callback that is invoked when system finished searching applications which is matched by specific application control .
7757           </brief>
7758          <description>
7759           <p>
7760 This callback interface specifies a success method with an array of
7761 <em>ApplicationInformation </em>objects and application control as an input parameter.
7762 It is used in <em>ApplicationManager.findAppControl()</em>.
7763           </p>
7764          </description>
7765           <version>
7766  2.0
7767           </version>
7768       </descriptive>
7769       <ExtendedAttributeList>
7770         <ExtendedAttribute name="Callback" value="FunctionOnly">
7771           <webidl>Callback</webidl>
7772         </ExtendedAttribute>
7773         <ExtendedAttribute name="NoInterfaceObject">
7774           <webidl> NoInterfaceObject</webidl>
7775         </ExtendedAttribute>
7776       </ExtendedAttributeList>
7777       <Operation name="onsuccess" id="::Application::FindAppControlSuccessCallback::onsuccess">
7778         <webidl>    void onsuccess(<ref>ApplicationInformation</ref>[] informationArray, <ref>ApplicationControl</ref> appControl);</webidl>
7779         <descriptive>
7780             <brief>
7781  Called when the asynchronous call completes successfully.
7782             </brief>
7783             <version>
7784  2.0
7785             </version>
7786         </descriptive>
7787         <Type type="void"/>
7788         <ArgumentList>
7789           <Argument name="informationArray">
7790             <descriptive>
7791                 <description><p>
7792  A list of installed applications.
7793                 </p></description>
7794             </descriptive>
7795             <Type type="array">
7796               <Type name="ApplicationInformation"/>
7797             </Type>
7798           </Argument>
7799           <Argument name="appControl">
7800             <descriptive>
7801                 <description><p>
7802  The application control which were passed on <em>ApplicationManager.findAppControl()</em>.
7803                 </p></description>
7804             </descriptive>
7805             <Type name="ApplicationControl"/>
7806           </Argument>
7807         </ArgumentList>
7808       </Operation>
7809     </Interface>
7810     <Interface name="ApplicationContextArraySuccessCallback" id="::Application::ApplicationContextArraySuccessCallback">
7811       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface ApplicationContextArraySuccessCallback {
7812     void onsuccess(<ref>ApplicationContext</ref>[] contexts);
7813   };</webidl>
7814       <descriptive>
7815           <brief>
7816  This callback interface that specifies the success callback that is invoked when the list of running applications is retrieved.
7817           </brief>
7818          <description>
7819           <p>
7820 This callback interface specifies a success method with
7821 an array of <em>ApplicationContext </em>objects as an input parameter. It is used in <em>ApplicationManager.getAppsContext()</em>.
7822           </p>
7823          </description>
7824           <version>
7825  1.0
7826           </version>
7827       </descriptive>
7828       <ExtendedAttributeList>
7829         <ExtendedAttribute name="Callback" value="FunctionOnly">
7830           <webidl>Callback</webidl>
7831         </ExtendedAttribute>
7832         <ExtendedAttribute name="NoInterfaceObject">
7833           <webidl> NoInterfaceObject</webidl>
7834         </ExtendedAttribute>
7835       </ExtendedAttributeList>
7836       <Operation name="onsuccess" id="::Application::ApplicationContextArraySuccessCallback::onsuccess">
7837         <webidl>    void onsuccess(<ref>ApplicationContext</ref>[] contexts);</webidl>
7838         <descriptive>
7839             <brief>
7840  Called when <em>ApplicationManager.getAppsContext() </em>completes successfully.
7841             </brief>
7842             <version>
7843  1.0
7844             </version>
7845         </descriptive>
7846         <Type type="void"/>
7847         <ArgumentList>
7848           <Argument name="contexts">
7849             <descriptive>
7850                 <description><p>
7851  A list of running applications.
7852                 </p></description>
7853             </descriptive>
7854             <Type type="array">
7855               <Type name="ApplicationContext"/>
7856             </Type>
7857           </Argument>
7858         </ArgumentList>
7859       </Operation>
7860     </Interface>
7861     <Interface name="ApplicationControlDataArrayReplyCallback" id="::Application::ApplicationControlDataArrayReplyCallback">
7862       <webidl>  [Callback, NoInterfaceObject] interface ApplicationControlDataArrayReplyCallback {
7863     void onsuccess(optional <ref>ApplicationControlData</ref>[]? data);
7864
7865     void onfailure();
7866   };</webidl>
7867       <descriptive>
7868           <brief>
7869  This callback interface specifies success callbacks that are invoked as a reply from the requested application control within the application control requester.
7870           </brief>
7871          <description>
7872           <p>
7873 This callback interface specifies two methods:
7874           </p>
7875           <ul>
7876             <li>
7877  <em>onsuccess()</em> - Invoked by the callee application calls <em>RequestedApplicationControl.replyResult()</em>.            </li>
7878             <li>
7879  <em>onfailure()</em> - Invoked if the callee application calls <em>RequestedApplicationControl.replyFailure()</em>.            </li>
7880           </ul>
7881          </description>
7882           <version>
7883  2.0
7884           </version>
7885       </descriptive>
7886       <ExtendedAttributeList>
7887         <ExtendedAttribute name="Callback">
7888           <webidl>Callback</webidl>
7889         </ExtendedAttribute>
7890         <ExtendedAttribute name="NoInterfaceObject">
7891           <webidl> NoInterfaceObject</webidl>
7892         </ExtendedAttribute>
7893       </ExtendedAttributeList>
7894       <Operation name="onsuccess" id="::Application::ApplicationControlDataArrayReplyCallback::onsuccess">
7895         <webidl>    void onsuccess(optional <ref>ApplicationControlData</ref>[]? data);</webidl>
7896         <descriptive>
7897             <brief>
7898  Called when the callee application calls <em>RequestedApplicationControl.replyResult()</em>.
7899             </brief>
7900             <version>
7901  2.0
7902             </version>
7903         </descriptive>
7904         <Type type="void"/>
7905         <ArgumentList>
7906           <Argument optional="optional" name="data">
7907             <descriptive>
7908                 <description><p>
7909  An array of <em>ApplicationControlData </em>objects.
7910                 </p></description>
7911             </descriptive>
7912             <Type type="array" nullable="nullable">
7913               <Type name="ApplicationControlData"/>
7914             </Type>
7915           </Argument>
7916         </ArgumentList>
7917       </Operation>
7918       <Operation name="onfailure" id="::Application::ApplicationControlDataArrayReplyCallback::onfailure">
7919         <webidl>    void onfailure();</webidl>
7920         <descriptive>
7921             <brief>
7922  Called when the callee application calls <em>RequestedApplicationControl.replyFailure()</em>.
7923             </brief>
7924             <version>
7925  2.0
7926             </version>
7927         </descriptive>
7928         <Type type="void"/>
7929         <ArgumentList/>
7930       </Operation>
7931     </Interface>
7932     <Interface name="ApplicationInformationEventCallback" id="::Application::ApplicationInformationEventCallback">
7933       <webidl>  [Callback, NoInterfaceObject] interface ApplicationInformationEventCallback {
7934     void oninstalled(<ref>ApplicationInformation</ref> info);
7935
7936     void onupdated(<ref>ApplicationInformation</ref> info);
7937
7938     void onuninstalled(<ref>ApplicationId</ref> id);
7939   };</webidl>
7940       <descriptive>
7941           <brief>
7942  The callback interface to specify for subscribing for notification of changes in the list of installed
7943 applications on a device.
7944           </brief>
7945          <description>
7946           <p>
7947 This callback interface specifies methods that will be invoked when
7948 an application is installed, updated, or uninstalled.
7949           </p>
7950          </description>
7951           <version>
7952  1.0
7953           </version>
7954       </descriptive>
7955       <ExtendedAttributeList>
7956         <ExtendedAttribute name="Callback">
7957           <webidl>Callback</webidl>
7958         </ExtendedAttribute>
7959         <ExtendedAttribute name="NoInterfaceObject">
7960           <webidl> NoInterfaceObject</webidl>
7961         </ExtendedAttribute>
7962       </ExtendedAttributeList>
7963       <Operation name="oninstalled" id="::Application::ApplicationInformationEventCallback::oninstalled">
7964         <webidl>    void oninstalled(<ref>ApplicationInformation</ref> info);</webidl>
7965         <descriptive>
7966             <brief>
7967  Called when an application is installed.
7968             </brief>
7969             <version>
7970  1.0
7971             </version>
7972         </descriptive>
7973         <Type type="void"/>
7974         <ArgumentList>
7975           <Argument name="info">
7976             <descriptive>
7977                 <description><p>
7978  The application information of the installed application.
7979                 </p></description>
7980             </descriptive>
7981             <Type name="ApplicationInformation"/>
7982           </Argument>
7983         </ArgumentList>
7984       </Operation>
7985       <Operation name="onupdated" id="::Application::ApplicationInformationEventCallback::onupdated">
7986         <webidl>    void onupdated(<ref>ApplicationInformation</ref> info);</webidl>
7987         <descriptive>
7988             <brief>
7989  Called when an application is updated.
7990             </brief>
7991             <version>
7992  1.0
7993             </version>
7994         </descriptive>
7995         <Type type="void"/>
7996         <ArgumentList>
7997           <Argument name="info">
7998             <descriptive>
7999                 <description><p>
8000  The application information of the updated application.
8001                 </p></description>
8002             </descriptive>
8003             <Type name="ApplicationInformation"/>
8004           </Argument>
8005         </ArgumentList>
8006       </Operation>
8007       <Operation name="onuninstalled" id="::Application::ApplicationInformationEventCallback::onuninstalled">
8008         <webidl>    void onuninstalled(<ref>ApplicationId</ref> id);</webidl>
8009         <descriptive>
8010             <brief>
8011  Called when an application is uninstalled.
8012             </brief>
8013             <version>
8014  1.0
8015             </version>
8016         </descriptive>
8017         <Type type="void"/>
8018         <ArgumentList>
8019           <Argument name="id">
8020             <descriptive>
8021                 <description><p>
8022  The ID of the uninstalled application.
8023                 </p></description>
8024             </descriptive>
8025             <Type name="ApplicationId"/>
8026           </Argument>
8027         </ArgumentList>
8028       </Operation>
8029     </Interface>
8030   </Module>
8031   <Module name="Bluetooth" id="::Bluetooth">
8032     <webidl>module Bluetooth {
8033     typedef DOMString BluetoothAddress;
8034     
8035     typedef DOMString BluetoothUUID;
8036     
8037     enum BluetoothSocketState { &quot;CLOSED&quot;, &quot;OPEN&quot; };
8038
8039     enum BluetoothProfileType { &quot;HEALTH&quot; };
8040         
8041     enum BluetoothHealthChannelType { &quot;RELIABLE&quot;, &quot;STREAMING&quot; };
8042     
8043     [NoInterfaceObject] interface BluetoothManagerObject {
8044         readonly attribute <ref>BluetoothManager</ref> bluetooth;
8045     };
8046     <ref>Tizen</ref> implements <ref>BluetoothManagerObject</ref>;
8047
8048     [NoInterfaceObject] interface BluetoothManager {
8049         readonly attribute <ref>BluetoothClassDeviceMajor</ref> deviceMajor;
8050         readonly attribute <ref>BluetoothClassDeviceMinor</ref> deviceMinor;
8051         readonly attribute <ref>BluetoothClassDeviceService</ref> deviceService;
8052         <ref>BluetoothAdapter</ref> getDefaultAdapter() raises(<ref>WebAPIException</ref>);
8053     };
8054
8055
8056     [NoInterfaceObject] interface BluetoothAdapter {
8057         readonly attribute DOMString name;
8058         readonly attribute <ref>BluetoothAddress</ref> address;
8059         readonly attribute boolean powered; 
8060         readonly attribute boolean visible;
8061
8062         void setName(DOMString name,
8063                      optional <ref>SuccessCallback</ref>? successCallback, 
8064                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8065  
8066         void setPowered(boolean state,
8067                         optional <ref>SuccessCallback</ref>? successCallback, 
8068                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);     
8069         
8070         void setVisible(boolean mode,
8071                         optional <ref>SuccessCallback</ref>? successCallback, 
8072                         optional <ref>ErrorCallback</ref>? errorCallback,
8073                         optional unsigned short? timeout) raises(<ref>WebAPIException</ref>);
8074
8075         void setChangeListener(<ref>BluetoothAdapterChangeCallback</ref> listener) raises(<ref>WebAPIException</ref>);
8076
8077         void unsetChangeListener() raises(<ref>WebAPIException</ref>);
8078
8079         void discoverDevices(<ref>BluetoothDiscoverDevicesSuccessCallback</ref> successCallback, 
8080                              optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8081
8082         void stopDiscovery(optional <ref>SuccessCallback</ref>? successCallback, 
8083                            optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8084
8085         void getKnownDevices(<ref>BluetoothDeviceArraySuccessCallback</ref> successCallback, 
8086                              optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8087
8088
8089
8090
8091         void getDevice(<ref>BluetoothAddress</ref> address,
8092                        <ref>BluetoothDeviceSuccessCallback</ref> successCallback, 
8093                        optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8094
8095
8096
8097
8098         void createBonding(<ref>BluetoothAddress</ref> address,
8099                            <ref>BluetoothDeviceSuccessCallback</ref> successCallback, 
8100                            optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8101
8102         void destroyBonding(<ref>BluetoothAddress</ref> address,
8103                             optional <ref>SuccessCallback</ref>? successCallback, 
8104                             optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8105
8106
8107
8108         void registerRFCOMMServiceByUUID(<ref>BluetoothUUID</ref> uuid,
8109                                          DOMString name,
8110                                          <ref>BluetoothServiceSuccessCallback</ref> successCallback, 
8111                                          optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8112
8113         <ref>BluetoothProfileHandler</ref> getBluetoothProfileHandler(<ref>BluetoothProfileType</ref> profileType) raises(<ref>WebAPIException</ref>);
8114
8115              };
8116     [NoInterfaceObject] interface BluetoothDevice {
8117         readonly attribute DOMString name;
8118         readonly attribute <ref>BluetoothAddress</ref> address;
8119         readonly attribute <ref>BluetoothClass</ref> deviceClass;
8120         readonly attribute boolean isBonded;
8121         readonly attribute boolean isTrusted;
8122         readonly attribute boolean isConnected;
8123         readonly attribute <ref>BluetoothUUID</ref>[] uuids;
8124
8125         void connectToServiceByUUID(<ref>BluetoothUUID</ref> uuid,
8126                                     <ref>BluetoothSocketSuccessCallback</ref> successCallback, 
8127                                     optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8128     };
8129     [NoInterfaceObject] interface BluetoothSocket {
8130         readonly attribute <ref>BluetoothUUID</ref> uuid;
8131         readonly attribute <ref>BluetoothSocketState</ref> state;
8132         readonly attribute <ref>BluetoothDevice</ref> peer;
8133         [TreatNonCallableAsNull] attribute <ref>SuccessCallback</ref>? onmessage raises(<ref>WebAPIException</ref>);
8134         [TreatNonCallableAsNull] attribute <ref>SuccessCallback</ref>? onclose raises(<ref>WebAPIException</ref>);
8135         unsigned long writeData(byte[] data) raises(<ref>WebAPIException</ref>);
8136
8137
8138         byte[] readData() raises(<ref>WebAPIException</ref>);
8139
8140
8141         void close() raises(<ref>WebAPIException</ref>);
8142     };
8143
8144     [NoInterfaceObject] interface BluetoothClass {
8145         readonly attribute octet major;
8146         
8147         readonly attribute octet minor;
8148         
8149         readonly attribute unsigned short [] services ;
8150         
8151         boolean hasService(unsigned short service) raises(<ref>WebAPIException</ref>);
8152     };
8153
8154     [NoInterfaceObject] interface BluetoothClassDeviceMajor {
8155
8156         const octet MISC = 0x00;
8157         const octet COMPUTER = 0x01;
8158         const octet PHONE = 0x02;
8159         const octet NETWORK = 0x03;
8160         const octet AUDIO_VIDEO = 0x04;
8161         const octet PERIPHERAL = 0x05;
8162         const octet IMAGING = 0x06;
8163         const octet WEARABLE = 0x07;
8164         const octet TOY = 0x08;
8165         const octet HEALTH = 0x09;
8166         const octet UNCATEGORIZED = 0x1F;
8167     };
8168
8169     [NoInterfaceObject] interface BluetoothClassDeviceMinor {
8170         const octet COMPUTER_UNCATEGORIZED = 0x00;
8171         const octet COMPUTER_DESKTOP = 0x01;
8172         const octet COMPUTER_SERVER = 0x02;
8173         const octet COMPUTER_LAPTOP = 0x03;
8174         const octet COMPUTER_HANDHELD_PC_OR_PDA = 0x04;
8175         const octet COMPUTER_PALM_PC_OR_PDA = 0x05;
8176         const octet COMPUTER_WEARABLE = 0x06;
8177
8178         const octet PHONE_UNCATEGORIZED = 0x00;
8179         const octet PHONE_CELLULAR = 0x01;
8180         const octet PHONE_CORDLESS = 0x02;
8181         const octet PHONE_SMARTPHONE = 0x03;
8182         const octet PHONE_MODEM_OR_GATEWAY = 0x04;
8183         const octet PHONE_ISDN = 0x05;
8184
8185         const octet AV_UNRECOGNIZED = 0x00;
8186         const octet AV_WEARABLE_HEADSET = 0x01;
8187         const octet AV_HANDSFREE = 0x02;
8188         const octet AV_MICROPHONE = 0x04;
8189         const octet AV_LOUDSPEAKER = 0x05;
8190         const octet AV_HEADPHONES = 0x06;
8191         const octet AV_PORTABLE_AUDIO = 0x07;
8192         const octet AV_CAR_AUDIO = 0x08;
8193         const octet AV_SETTOP_BOX = 0x09;
8194         const octet AV_HIFI = 0x0a;
8195         const octet AV_VCR = 0x0b;
8196         const octet AV_VIDEO_CAMERA = 0x0c;
8197         const octet AV_CAMCORDER = 0x0d;
8198         const octet AV_MONITOR = 0x0e;
8199         const octet AV_DISPLAY_AND_LOUDSPEAKER = 0x0f;
8200         const octet AV_VIDEO_CONFERENCING = 0x10;
8201         const octet AV_GAMING_TOY = 0x12;
8202
8203         const octet PERIPHERAL_UNCATEGORIZED = 0;
8204         const octet PERIPHERAL_KEYBOARD = 0x10;
8205         const octet PERIPHERAL_POINTING_DEVICE = 0x20;
8206         const octet PERIPHERAL_KEYBOARD_AND_POINTING_DEVICE = 0x30;
8207         const octet PERIPHERAL_JOYSTICK = 0x01;
8208         const octet PERIPHERAL_GAMEPAD = 0x02;
8209         const octet PERIPHERAL_REMOTE_CONTROL = 0x03;
8210         const octet PERIPHERAL_SENSING_DEVICE = 0x04;
8211         const octet PERIPHERAL_DEGITIZER_TABLET = 0x05;
8212         const octet PERIPHERAL_CARD_READER = 0x06;
8213         const octet PERIPHERAL_DIGITAL_PEN = 0x07;
8214         const octet PERIPHERAL_HANDHELD_SCANNER = 0x08;
8215         const octet PERIPHERAL_HANDHELD_INPUT_DEVICE = 0x09;
8216
8217         const octet IMAGING_UNCATEGORIZED = 0x00;
8218         const octet IMAGING_DISPLAY = 0x04;
8219         const octet IMAGING_CAMERA = 0x08;
8220         const octet IMAGING_SCANNER = 0x10;
8221         const octet IMAGING_PRINTER = 0x20;
8222
8223         const octet WEARABLE_WRITST_WATCH = 0x01;
8224         const octet WEARABLE_PAGER = 0x02;
8225         const octet WEARABLE_JACKET = 0x03;
8226         const octet WEARABLE_HELMET = 0x04;
8227         const octet WEARABLE_GLASSES = 0x05;
8228
8229         const octet TOY_ROBOT = 0x01;
8230         const octet TOY_VEHICLE = 0x02;
8231         const octet TOY_DOLL = 0x03;
8232         const octet TOY_CONTROLLER = 0x04;
8233         const octet TOY_GAME = 0x05;
8234
8235         const octet HEALTH_UNDEFINED = 0x00;
8236         const octet HEALTH_BLOOD_PRESSURE_MONITOR = 0x01;
8237         const octet HEALTH_THERMOMETER = 0x02;
8238         const octet HEALTH_WEIGHING_SCALE = 0x03;
8239         const octet HEALTH_GLUCOSE_METER = 0x04;
8240         const octet HEALTH_PULSE_OXIMETER = 0x05;
8241         const octet HEALTH_PULSE_RATE_MONITOR = 0x06;
8242         const octet HEALTH_DATA_DISPLAY = 0x07;
8243         const octet HEALTH_STEP_COUNTER = 0x08;
8244         const octet HEALTH_BODY_COMPOSITION_ANALYZER = 0x09;
8245         const octet HEALTH_PEAK_FLOW_MONITOR = 0x0a;
8246         const octet HEALTH_MEDICATION_MONITOR = 0x0b;
8247         const octet HEALTH_KNEE_PROSTHESIS = 0x0c;
8248         const octet HEALTH_ANKLE_PROSTHESIS = 0x0d;
8249     };
8250
8251     [NoInterfaceObject] interface BluetoothClassDeviceService {
8252         const unsigned short LIMITED_DISCOVERABILITY = 0x0001;
8253         const unsigned short POSITIONING = 0x0008; 
8254         const unsigned short NETWORKING = 0x0010; 
8255         const unsigned short RENDERING = 0x0020; 
8256         const unsigned short CAPTURING = 0x0040;
8257         const unsigned short OBJECT_TRANSFER = 0x0080; 
8258         const unsigned short AUDIO = 0x0100;
8259         const unsigned short TELEPHONY = 0x0200;
8260         const unsigned short INFORMATION = 0x0400;
8261     };
8262
8263     [NoInterfaceObject] interface BluetoothServiceHandler {
8264         readonly attribute <ref>BluetoothUUID</ref> uuid;
8265         readonly attribute DOMString name;
8266         readonly attribute boolean isConnected;
8267         [TreatNonCallableAsNull] attribute <ref>BluetoothSocketSuccessCallback</ref>? onconnect raises(<ref>WebAPIException</ref>);
8268
8269         void unregister(optional <ref>SuccessCallback</ref>? successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8270     };
8271
8272     [NoInterfaceObject] interface BluetoothProfileHandler {
8273         
8274         readonly attribute <ref>BluetoothProfileType</ref> profileType;
8275                 
8276     };
8277                 
8278
8279     [NoInterfaceObject] interface BluetoothHealthProfileHandler : <ref>BluetoothProfileHandler</ref> {
8280         
8281         void registerSinkApplication(unsigned short dataType, DOMString name, <ref>BluetoothHealthApplicationSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8282
8283         void connectToSource(<ref>BluetoothDevice</ref> peer, <ref>BluetoothHealthApplication</ref> application, <ref>BluetoothHealthChannelSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8284
8285         };              
8286
8287
8288     [NoInterfaceObject] interface BluetoothHealthApplication {
8289
8290         readonly attribute unsigned short dataType;
8291                 
8292         readonly attribute DOMString name;
8293
8294         [TreatNonCallableAsNull] attribute <ref>BluetoothHealthChannelSuccessCallback</ref>? onconnect raises(<ref>WebAPIException</ref>);
8295                 
8296         void unregister(optional <ref>SuccessCallback</ref>? successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8297                 
8298     };          
8299         
8300         
8301     [NoInterfaceObject] interface BluetoothHealthChannel {
8302
8303         readonly attribute <ref>BluetoothDevice</ref> peer;
8304                 
8305         readonly attribute <ref>BluetoothHealthChannelType</ref> channelType;
8306
8307         readonly attribute <ref>BluetoothHealthApplication</ref> application;
8308                 
8309         readonly attribute boolean isConnected;
8310
8311         void close() raises(<ref>WebAPIException</ref>);
8312
8313         unsigned long sendData(byte[] data) raises(<ref>WebAPIException</ref>);
8314
8315         void setListener(<ref>BluetoothHealthChannelChangeCallback</ref> listener) raises(<ref>WebAPIException</ref>); 
8316  
8317         void unsetListener() raises(<ref>WebAPIException</ref>);
8318                 
8319     };
8320         
8321
8322     [Callback, NoInterfaceObject] interface BluetoothAdapterChangeCallback {
8323         void onstatechanged(boolean powered);
8324         void onnamechanged(DOMString name);
8325         void onvisibilitychanged(boolean visible);
8326     };
8327
8328     [Callback=FunctionOnly, NoInterfaceObject] interface BluetoothDeviceSuccessCallback {
8329         void onsuccess(<ref>BluetoothDevice</ref> device);
8330     };
8331
8332     [Callback=FunctionOnly, NoInterfaceObject] interface BluetoothDeviceArraySuccessCallback {
8333         void onsuccess(<ref>BluetoothDevice</ref>[] devices);
8334     };
8335
8336     [Callback, NoInterfaceObject] interface BluetoothDiscoverDevicesSuccessCallback {
8337         void onstarted();
8338         void ondevicefound(<ref>BluetoothDevice</ref> device);
8339         void ondevicedisappeared(<ref>BluetoothAddress</ref> address);
8340         void onfinished(<ref>BluetoothDevice</ref>[] foundDevices);
8341     };
8342
8343     [Callback=FunctionOnly, NoInterfaceObject] interface BluetoothSocketSuccessCallback {
8344         void onsuccess(<ref>BluetoothSocket</ref> socket);
8345     };
8346
8347     [Callback=FunctionOnly, NoInterfaceObject] interface BluetoothServiceSuccessCallback {
8348         void onsuccess(<ref>BluetoothServiceHandler</ref> handler);
8349     };
8350
8351     [Callback=FunctionOnly, NoInterfaceObject] interface BluetoothHealthApplicationSuccessCallback {
8352         void onsuccess(<ref>BluetoothHealthApplication</ref> application);
8353     };
8354
8355         
8356     [Callback=FunctionOnly, NoInterfaceObject] interface BluetoothHealthChannelSuccessCallback {
8357         void onsuccess(<ref>BluetoothHealthChannel</ref> channel);
8358     };
8359
8360     [Callback, NoInterfaceObject] interface BluetoothHealthChannelChangeCallback {
8361         void onmessage(byte[] data);
8362                 
8363         void onclose(); 
8364     };
8365
8366 };</webidl>
8367     <descriptive>
8368         <brief>
8369  This specification defines interfaces and methods to manage Bluetooth.
8370         </brief>
8371        <description>
8372         <p>
8373 The following Bluetooth functionalities are provided:
8374         </p>
8375         <ul>
8376           <li>
8377 Controls local Bluetooth device, that is, turn Bluetooth on/off, etc.          </li>
8378           <li>
8379 Sets visibility          </li>
8380           <li>
8381 Discovers nearby Bluetooth devices (Device discovery).          </li>
8382           <li>
8383 Gets bonded devices information.          </li>
8384           <li>
8385 Controls bonding.          </li>
8386           <li>
8387 Connects to a service on a remote device and exchanges data.          </li>
8388           <li>
8389 Registers a service (RFCOMM) on a local device, which can be consumed by remote devices to exchange data.          </li>
8390         </ul>
8391         <p>
8392 For more information on the Bluetooth features, see <a href="../../org.tizen.web.appprogramming/html/guide/communication_guide/bluetooth.htm">Bluetooth Guide</a>.
8393         </p>
8394        </description>
8395         <version>
8396  1.0
8397         </version>
8398         <def-api-feature identifier="http://tizen.org/feature/network.bluetooth">
8399           <descriptive>
8400            <description>
8401             <p>
8402 To guarantee this application running on a device with Bluetooth feature, define below in the config file: 
8403             </p>
8404            </description>
8405           </descriptive>
8406         </def-api-feature>
8407     </descriptive>
8408     <Typedef name="BluetoothAddress" id="::Bluetooth::BluetoothAddress">
8409       <webidl>    typedef DOMString BluetoothAddress;</webidl>
8410       <descriptive>
8411           <brief>
8412  The address of a Bluetooth device.
8413           </brief>
8414           <version>
8415  1.0
8416           </version>
8417       </descriptive>
8418       <Type type="DOMString"/>
8419     </Typedef>
8420     <Typedef name="BluetoothUUID" id="::Bluetooth::BluetoothUUID">
8421       <webidl>    typedef DOMString BluetoothUUID;</webidl>
8422       <descriptive>
8423           <brief>
8424  The UUID of a Bluetooth service.
8425           </brief>
8426           <version>
8427  1.0
8428           </version>
8429       </descriptive>
8430       <Type type="DOMString"/>
8431     </Typedef>
8432     <Enum name="BluetoothSocketState" id="::Bluetooth::BluetoothSocketState">
8433       <webidl>    enum BluetoothSocketState { &quot;CLOSED&quot;, &quot;OPEN&quot; };</webidl>
8434       <descriptive>
8435           <brief>
8436  The Bluetooth socket state.
8437           </brief>
8438           <version>
8439  1.0
8440           </version>
8441       </descriptive>
8442       <EnumValue stringvalue="CLOSED">
8443         <webidl> &quot;CLOSED</webidl>
8444       </EnumValue>
8445       <EnumValue stringvalue="OPEN">
8446         <webidl> &quot;OPEN</webidl>
8447       </EnumValue>
8448     </Enum>
8449     <Enum name="BluetoothProfileType" id="::Bluetooth::BluetoothProfileType">
8450       <webidl>    enum BluetoothProfileType { &quot;HEALTH&quot; };</webidl>
8451       <descriptive>
8452           <brief>
8453  The Bluetooth profile.
8454           </brief>
8455           <version>
8456  2.2
8457           </version>
8458       </descriptive>
8459       <EnumValue stringvalue="HEALTH">
8460         <webidl> &quot;HEALTH</webidl>
8461       </EnumValue>
8462     </Enum>
8463     <Enum name="BluetoothHealthChannelType" id="::Bluetooth::BluetoothHealthChannelType">
8464       <webidl>    enum BluetoothHealthChannelType { &quot;RELIABLE&quot;, &quot;STREAMING&quot; };</webidl>
8465       <descriptive>
8466           <brief>
8467  The channel type of health device profile.
8468           </brief>
8469           <version>
8470  2.2
8471           </version>
8472       </descriptive>
8473       <EnumValue stringvalue="RELIABLE">
8474         <webidl> &quot;RELIABLE</webidl>
8475       </EnumValue>
8476       <EnumValue stringvalue="STREAMING">
8477         <webidl> &quot;STREAMING</webidl>
8478       </EnumValue>
8479     </Enum>
8480     <Interface name="BluetoothManagerObject" id="::Bluetooth::BluetoothManagerObject">
8481       <webidl>    [NoInterfaceObject] interface BluetoothManagerObject {
8482         readonly attribute <ref>BluetoothManager</ref> bluetooth;
8483     };</webidl>
8484       <descriptive>
8485           <brief>
8486  This interface defines what is instantiated by the <em>Tizen</em> object from the Tizen platform.
8487           </brief>
8488          <description>
8489           <p>
8490 There is a <em>tizen.bluetooth</em> object that allows access to the Bluetooth API.
8491           </p>
8492          </description>
8493           <version>
8494  1.0
8495           </version>
8496       </descriptive>
8497       <ExtendedAttributeList>
8498         <ExtendedAttribute name="NoInterfaceObject">
8499           <webidl>NoInterfaceObject</webidl>
8500         </ExtendedAttribute>
8501       </ExtendedAttributeList>
8502       <Attribute readonly="readonly" name="bluetooth" id="::Bluetooth::BluetoothManagerObject::bluetooth">
8503         <webidl>        readonly attribute <ref>BluetoothManager</ref> bluetooth;</webidl>
8504         <Type name="BluetoothManager"/>
8505       </Attribute>
8506     </Interface>
8507     <Implements name1="Tizen" name2="BluetoothManagerObject">
8508       <webidl>    <ref>Tizen</ref> implements <ref>BluetoothManagerObject</ref>;</webidl>
8509     </Implements>
8510     <Interface name="BluetoothManager" id="::Bluetooth::BluetoothManager">
8511       <webidl>    [NoInterfaceObject] interface BluetoothManager {
8512         readonly attribute <ref>BluetoothClassDeviceMajor</ref> deviceMajor;
8513         readonly attribute <ref>BluetoothClassDeviceMinor</ref> deviceMinor;
8514         readonly attribute <ref>BluetoothClassDeviceService</ref> deviceService;
8515         <ref>BluetoothAdapter</ref> getDefaultAdapter() raises(<ref>WebAPIException</ref>);
8516     };</webidl>
8517       <descriptive>
8518           <brief>
8519  This interface provides access to the <em>BluetoothAdapter</em> object.
8520           </brief>
8521           <version>
8522  1.0
8523           </version>
8524       </descriptive>
8525       <ExtendedAttributeList>
8526         <ExtendedAttribute name="NoInterfaceObject">
8527           <webidl>NoInterfaceObject</webidl>
8528         </ExtendedAttribute>
8529       </ExtendedAttributeList>
8530       <Attribute readonly="readonly" name="deviceMajor" id="::Bluetooth::BluetoothManager::deviceMajor">
8531         <webidl>        readonly attribute <ref>BluetoothClassDeviceMajor</ref> deviceMajor;</webidl>
8532         <descriptive>
8533             <brief>
8534  An attribute to access to a major device class identifiers of Bluetooth class of device (CoD).
8535             </brief>
8536             <version>
8537  1.0
8538             </version>
8539         </descriptive>
8540         <Type name="BluetoothClassDeviceMajor"/>
8541       </Attribute>
8542       <Attribute readonly="readonly" name="deviceMinor" id="::Bluetooth::BluetoothManager::deviceMinor">
8543         <webidl>        readonly attribute <ref>BluetoothClassDeviceMinor</ref> deviceMinor;</webidl>
8544         <descriptive>
8545             <brief>
8546  An attribute to access to a minor device class identifiers of Bluetooth class of device (CoD).
8547             </brief>
8548             <version>
8549  1.0
8550             </version>
8551         </descriptive>
8552         <Type name="BluetoothClassDeviceMinor"/>
8553       </Attribute>
8554       <Attribute readonly="readonly" name="deviceService" id="::Bluetooth::BluetoothManager::deviceService">
8555         <webidl>        readonly attribute <ref>BluetoothClassDeviceService</ref> deviceService;</webidl>
8556         <descriptive>
8557             <brief>
8558  Accessor to major service class identifiers of Bluetooth class of device (CoD).
8559             </brief>
8560             <version>
8561  1.0
8562             </version>
8563         </descriptive>
8564         <Type name="BluetoothClassDeviceService"/>
8565       </Attribute>
8566       <Operation name="getDefaultAdapter" id="::Bluetooth::BluetoothManager::getDefaultAdapter">
8567         <webidl>        <ref>BluetoothAdapter</ref> getDefaultAdapter() raises(<ref>WebAPIException</ref>);</webidl>
8568         <descriptive>
8569             <brief>
8570  Gets the default local Bluetooth adapter.
8571             </brief>
8572             <version>
8573  1.0
8574             </version>
8575             <privilegelevel>
8576  public
8577             </privilegelevel>
8578             <privilege>
8579  http://tizen.org/privilege/bluetooth.gap
8580             </privilege>
8581             <Code> try {
8582   var adapter = tizen.bluetooth.getDefaultAdapter() ;
8583  } catch (err) {
8584   console.log (err.name +&quot;: &quot; + err.message);
8585  }
8586  </Code>
8587         </descriptive>
8588         <Type name="BluetoothAdapter">
8589           <descriptive>
8590               <description><p>
8591  BluetoothAdapter The local <em>BluetoothAdapter </em>object.
8592               </p></description>
8593           </descriptive>
8594         </Type>
8595         <ArgumentList/>
8596         <Raises>
8597           <RaiseException name="WebAPIException">
8598             <descriptive>
8599                 <description><p>
8600  with error type SecurityError, if the application does not have the privilege to call this method.
8601                 </p></description>
8602                 <description><p>
8603  with error type NotSupportedError, if this feature is not supported.
8604                 </p></description>
8605                 <description><p>
8606  with error type UnknownError, if any other error occurs.
8607                 </p></description>
8608             </descriptive>
8609           </RaiseException>
8610         </Raises>
8611       </Operation>
8612     </Interface>
8613     <Interface name="BluetoothAdapter" id="::Bluetooth::BluetoothAdapter">
8614       <webidl>    [NoInterfaceObject] interface BluetoothAdapter {
8615         readonly attribute DOMString name;
8616         readonly attribute <ref>BluetoothAddress</ref> address;
8617         readonly attribute boolean powered; 
8618         readonly attribute boolean visible;
8619
8620         void setName(DOMString name,
8621                      optional <ref>SuccessCallback</ref>? successCallback, 
8622                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8623  
8624         void setPowered(boolean state,
8625                         optional <ref>SuccessCallback</ref>? successCallback, 
8626                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);     
8627         
8628         void setVisible(boolean mode,
8629                         optional <ref>SuccessCallback</ref>? successCallback, 
8630                         optional <ref>ErrorCallback</ref>? errorCallback,
8631                         optional unsigned short? timeout) raises(<ref>WebAPIException</ref>);
8632
8633         void setChangeListener(<ref>BluetoothAdapterChangeCallback</ref> listener) raises(<ref>WebAPIException</ref>);
8634
8635         void unsetChangeListener() raises(<ref>WebAPIException</ref>);
8636
8637         void discoverDevices(<ref>BluetoothDiscoverDevicesSuccessCallback</ref> successCallback, 
8638                              optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8639
8640         void stopDiscovery(optional <ref>SuccessCallback</ref>? successCallback, 
8641                            optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8642
8643         void getKnownDevices(<ref>BluetoothDeviceArraySuccessCallback</ref> successCallback, 
8644                              optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8645
8646
8647
8648
8649         void getDevice(<ref>BluetoothAddress</ref> address,
8650                        <ref>BluetoothDeviceSuccessCallback</ref> successCallback, 
8651                        optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8652
8653
8654
8655
8656         void createBonding(<ref>BluetoothAddress</ref> address,
8657                            <ref>BluetoothDeviceSuccessCallback</ref> successCallback, 
8658                            optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8659
8660         void destroyBonding(<ref>BluetoothAddress</ref> address,
8661                             optional <ref>SuccessCallback</ref>? successCallback, 
8662                             optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8663
8664
8665
8666         void registerRFCOMMServiceByUUID(<ref>BluetoothUUID</ref> uuid,
8667                                          DOMString name,
8668                                          <ref>BluetoothServiceSuccessCallback</ref> successCallback, 
8669                                          optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8670
8671         <ref>BluetoothProfileHandler</ref> getBluetoothProfileHandler(<ref>BluetoothProfileType</ref> profileType) raises(<ref>WebAPIException</ref>);
8672
8673              };</webidl>
8674       <descriptive>
8675           <brief>
8676  This interface provides access to control the device's Bluetooth adapter.
8677           </brief>
8678          <description>
8679           <p>
8680 This interface offers methods to control local Bluetooth behavior, such as:
8681           </p>
8682           <ul>
8683             <li>
8684 Turning on/off Bluetooth radio            </li>
8685             <li>
8686 Changing device visibility            </li>
8687             <li>
8688 Scanning for remote devices            </li>
8689             <li>
8690 Accessing known devices            </li>
8691             <li>
8692 Registering a service in the device service database            </li>
8693           </ul>
8694          </description>
8695           <version>
8696  1.0
8697           </version>
8698       </descriptive>
8699       <ExtendedAttributeList>
8700         <ExtendedAttribute name="NoInterfaceObject">
8701           <webidl>NoInterfaceObject</webidl>
8702         </ExtendedAttribute>
8703       </ExtendedAttributeList>
8704       <Attribute readonly="readonly" name="name" id="::Bluetooth::BluetoothAdapter::name">
8705         <webidl>        readonly attribute DOMString name;</webidl>
8706         <descriptive>
8707             <brief>
8708  An attribute to store the readable name of the Bluetooth adapter.
8709             </brief>
8710             <version>
8711  1.0
8712             </version>
8713             <Code> 
8714  // Access adapter name
8715  var adapter = tizen.bluetooth.getDefaultAdapter();
8716  console.log (&quot;Bluetooth adapter name: &quot; + adapter.name);
8717  </Code>
8718         </descriptive>
8719         <Type type="DOMString"/>
8720       </Attribute>
8721       <Attribute readonly="readonly" name="address" id="::Bluetooth::BluetoothAdapter::address">
8722         <webidl>        readonly attribute <ref>BluetoothAddress</ref> address;</webidl>
8723         <descriptive>
8724             <brief>
8725  An attribute to store the unique hardware address of the Bluetooth adapter, also known as the MAC address.
8726             </brief>
8727             <version>
8728  1.0
8729             </version>
8730             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
8731  console.log(&quot;Bluetooth device address: &quot; + adapter.address);
8732  </Code>
8733         </descriptive>
8734         <Type name="BluetoothAddress"/>
8735       </Attribute>
8736       <Attribute readonly="readonly" name="powered" id="::Bluetooth::BluetoothAdapter::powered">
8737         <webidl>        readonly attribute boolean powered;</webidl>
8738         <descriptive>
8739             <brief>
8740  An attribute to indicate the current state of the Bluetooth adapter.
8741 This attribute holds one of the following 2 values:
8742             </brief>
8743            <description>
8744             <ul>
8745               <li>
8746 <var>true</var> - If Bluetooth adapter is currently on              </li>
8747               <li>
8748 <var>false</var> - If Bluetooth adapter is currently off              </li>
8749             </ul>
8750            </description>
8751             <version>
8752  1.0
8753             </version>
8754             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
8755  console.log(&quot;Bluetooth state: &quot; + (adapter.powered ? &quot;On&quot; : &quot;Off&quot;));
8756  </Code>
8757         </descriptive>
8758         <Type type="boolean"/>
8759       </Attribute>
8760       <Attribute readonly="readonly" name="visible" id="::Bluetooth::BluetoothAdapter::visible">
8761         <webidl>        readonly attribute boolean visible;</webidl>
8762         <descriptive>
8763             <brief>
8764  An attribute to indicate the current visibility state of the Bluetooth adapter, that is, whether the local device is discoverable by remote devices or not.
8765             </brief>
8766             <version>
8767  1.0
8768             </version>
8769             <Code> // Queries current visible state
8770  var adapter = tizen.bluetooth.getDefaultAdapter();
8771  console.log (&quot;Bluetooth Visibility: &quot; + (adapter.visible ? &quot;On&quot; : &quot;Off&quot;));
8772  </Code>
8773         </descriptive>
8774         <Type type="boolean"/>
8775       </Attribute>
8776       <Operation name="setName" id="::Bluetooth::BluetoothAdapter::setName">
8777         <webidl>        void setName(DOMString name,
8778                      optional <ref>SuccessCallback</ref>? successCallback, 
8779                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
8780         <descriptive>
8781             <brief>
8782  Sets the local Bluetooth adapter name.
8783             </brief>
8784            <description>
8785             <p>
8786 Sends a request to Bluetooth hardware to change the name of the local Bluetooth adapter to <em>name</em>.
8787             </p>
8788             <p>
8789 The ErrorCallback is launched with these error types:
8790             </p>
8791             <ul>
8792               <li>
8793  InvalidValuesError: If any of the input parameters contain an invalid value.              </li>
8794               <li>
8795  ServiceNotAvailableError: If a Bluetooth device is turned off.               </li>
8796               <li>
8797  UnknownError: In any other error case.               </li>
8798             </ul>
8799            </description>
8800             <version>
8801  1.0
8802             </version>
8803             <privilegelevel>
8804  public
8805             </privilegelevel>
8806             <privilege>
8807  http://tizen.org/privilege/bluetooth.admin
8808             </privilege>
8809             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
8810  
8811  function changeName(newName) 
8812  {  
8813       if(adapter.name != newName) {
8814            // initiate change name
8815            adapter.setName(newName, function() {
8816                console.log(&quot;Adapter name changed to &quot; + adapter.name);
8817            },
8818            function(e) {
8819                console.log(&quot;Failed to change name: &quot; + e.message);
8820            });
8821       }
8822  }
8823
8824  changeName(&quot;myDevice&quot;);
8825  </Code>
8826         </descriptive>
8827         <Type type="void"/>
8828         <ArgumentList>
8829           <Argument name="name">
8830             <descriptive>
8831                 <description><p>
8832  The name to set.
8833                 </p></description>
8834             </descriptive>
8835             <Type type="DOMString"/>
8836           </Argument>
8837           <Argument optional="optional" name="successCallback">
8838             <descriptive>
8839                 <description><p>
8840  The method to invoke when the asynchronous call completes successfully.
8841                 </p></description>
8842             </descriptive>
8843             <Type name="SuccessCallback" nullable="nullable"/>
8844           </Argument>
8845           <Argument optional="optional" name="errorCallback">
8846             <descriptive>
8847                 <description><p>
8848  The method to invoke when an error occurs.
8849                 </p></description>
8850             </descriptive>
8851             <Type name="ErrorCallback" nullable="nullable"/>
8852           </Argument>
8853         </ArgumentList>
8854         <Raises>
8855           <RaiseException name="WebAPIException">
8856             <descriptive>
8857                 <description><p>
8858  with error type TypeMismatchError, if any of the input parameter is not compatible with the expected type for that parameter.
8859                 </p></description>
8860                 <description><p>
8861  with error type SecurityError, if the application does not have the privilege to call this method.
8862                 </p></description>
8863                 <description><p>
8864  with error type NotSupportedError, if this feature is not supported.
8865                 </p></description>
8866             </descriptive>
8867           </RaiseException>
8868         </Raises>
8869       </Operation>
8870       <Operation name="setPowered" id="::Bluetooth::BluetoothAdapter::setPowered">
8871         <webidl>        void setPowered(boolean state,
8872                         optional <ref>SuccessCallback</ref>? successCallback, 
8873                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
8874         <descriptive>
8875             <brief>
8876  Sets the state of a Bluetooth adapter to on or off by sending a request to Bluetooth hardware to change the power state.
8877 For most Bluetooth actions, the Bluetooth adapter must be powered on.
8878             </brief>
8879            <description>
8880             <p>
8881 The ErrorCallback is launched with these error names:
8882             </p>
8883             <ul>
8884               <li>
8885  ServiceNotAvailableError - If a Bluetooth device is busy.              </li>
8886               <li>
8887  UnknownError - If any other error occurs.              </li>
8888             </ul>
8889            </description>
8890             <version>
8891  1.0
8892             </version>
8893             <privilegelevel>
8894  public
8895             </privilegelevel>
8896             <privilege>
8897  http://tizen.org/privilege/bluetooth.admin
8898             </privilege>
8899             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
8900  
8901  function powerOn() 
8902  {
8903       // If adapter is not powered on 
8904       if(!adapter.powered) {
8905            // Initiates power on
8906            adapter.setPowered(true, function() {
8907                console.log(&quot;Bluetooth powered on success.&quot;);
8908            },
8909            function(e) {
8910                console.log(&quot;Failed to power on Bluetooth: &quot; + e.message);
8911            });
8912       }
8913  }
8914
8915  function powerOff()
8916  {
8917       // If powered on
8918       if(adapter.powered) {
8919            // Initiates power off
8920            adapter.setPowered(false, function() {
8921                console.log(&quot;Bluetooth powered off successfully.&quot;);
8922            },
8923            function(e) {
8924                console.log(&quot;Failed to power off Bluetooth: &quot; + e.message);
8925            });
8926       }
8927  }
8928  </Code>
8929         </descriptive>
8930         <Type type="void"/>
8931         <ArgumentList>
8932           <Argument name="state">
8933             <descriptive>
8934                 <description><p>
8935  The state to set: <var>true</var> to power on Bluetooth, <var>false</var> to power it off.
8936                 </p></description>
8937             </descriptive>
8938             <Type type="boolean"/>
8939           </Argument>
8940           <Argument optional="optional" name="successCallback">
8941             <descriptive>
8942                 <description><p>
8943  The method to invoke on successful Bluetooth activation/deactivation.
8944                 </p></description>
8945             </descriptive>
8946             <Type name="SuccessCallback" nullable="nullable"/>
8947           </Argument>
8948           <Argument optional="optional" name="errorCallback">
8949             <descriptive>
8950                 <description><p>
8951  The method to invoke on failure of a Bluetooth activation/deactivation.
8952                 </p></description>
8953             </descriptive>
8954             <Type name="ErrorCallback" nullable="nullable"/>
8955           </Argument>
8956         </ArgumentList>
8957         <Raises>
8958           <RaiseException name="WebAPIException">
8959             <descriptive>
8960                 <description><p>
8961  with error type TypeMismatchError, if any of the input parameter is not compatible with the expected type for that parameter.
8962                 </p></description>
8963                 <description><p>
8964  with error type SecurityError, if the application does not have the privilege to call this method.
8965                 </p></description>
8966                 <description><p>
8967  with error type NotSupportedError, if this feature is not supported.
8968                 </p></description>
8969             </descriptive>
8970           </RaiseException>
8971         </Raises>
8972       </Operation>
8973       <Operation name="setVisible" id="::Bluetooth::BluetoothAdapter::setVisible">
8974         <webidl>        void setVisible(boolean mode,
8975                         optional <ref>SuccessCallback</ref>? successCallback, 
8976                         optional <ref>ErrorCallback</ref>? errorCallback,
8977                         optional unsigned short? timeout) raises(<ref>WebAPIException</ref>);</webidl>
8978         <descriptive>
8979             <brief>
8980  Sets the local device visibility by sending a request to a Bluetooth hardware to change the device visible state to <em>mode</em>.
8981 If <em>mode</em> is <var>true</var>, then the device is visible to other devices, that is, it responds to inquiry calls from remote devices for time period defined (in seconds) by <em>timeout</em>. After the timeout, the device will become invisible.
8982             </brief>
8983            <description>
8984             <p>
8985 If <em>timeout</em> is not passed or an invalid parameter is passed, the <em>timeout </em>defaults to <var>180 </var>seconds (3 minutes). A <em>timeout</em> of <var>0</var> is considered unlimited.
8986             </p>
8987             <p>
8988 The ErrorCallback is launched with these error types:
8989             </p>
8990             <ul>
8991               <li>
8992  InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
8993               <li>
8994  ServiceNotAvailableError - If a Bluetooth device is turned off.              </li>
8995               <li>
8996  UnknownError - If any other error case occurs.              </li>
8997             </ul>
8998            </description>
8999             <version>
9000  1.0
9001             </version>
9002             <privilegelevel>
9003  platform
9004             </privilegelevel>
9005             <privilege>
9006  http://tizen.org/privilege/bluetoothmanager
9007             </privilege>
9008             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
9009  
9010  function showMe()
9011  {
9012       if (adapter.visible == false) {
9013           //Shows device
9014           adapter.setVisible(true, 
9015                              function() { console.log ('Device is visible to other devices for 3 minutes.'); },
9016                              function(e) { console.log ('Error: ' + e.message + '(' + e.name + ')'); });
9017       }
9018       else {
9019            console.log(&quot;Device is already in discoverable mode.&quot;);
9020       }
9021  }
9022
9023  function hideMe() 
9024  {
9025      if (adapter.visible) {
9026           // Hides device
9027           adapter.setVisible(false,
9028                              function() { console.log('Device is in-visible now.'); },
9029                              function(e) { console.log ('Error: ' + e.message + '(' + e.name + ')'); });
9030      }
9031      else {
9032           console.log(&quot;Device is already in invisible mode.&quot;);
9033      }
9034  }
9035  </Code>
9036         </descriptive>
9037         <Type type="void"/>
9038         <ArgumentList>
9039           <Argument name="mode">
9040             <descriptive>
9041                 <description><p>
9042  The boolean value to set visibility.
9043 It can either be set to: <var>true</var> - to show the device or <var>false</var> - to hide the device.
9044                 </p></description>
9045             </descriptive>
9046             <Type type="boolean"/>
9047           </Argument>
9048           <Argument optional="optional" name="successCallback">
9049             <descriptive>
9050                 <description><p>
9051  The method to invoke when an asynchronous call completes successfully.
9052                 </p></description>
9053             </descriptive>
9054             <Type name="SuccessCallback" nullable="nullable"/>
9055           </Argument>
9056           <Argument optional="optional" name="errorCallback">
9057             <descriptive>
9058                 <description><p>
9059  The method to invoke when an error occurs.
9060                 </p></description>
9061             </descriptive>
9062             <Type name="ErrorCallback" nullable="nullable"/>
9063           </Argument>
9064           <Argument optional="optional" name="timeout">
9065             <descriptive>
9066                 <description><p>
9067  The visible timeout in seconds, used only when <em>mode</em> is <var>true</var>.
9068                 </p></description>
9069             </descriptive>
9070             <Type type="unsigned short" nullable="nullable"/>
9071           </Argument>
9072         </ArgumentList>
9073         <Raises>
9074           <RaiseException name="WebAPIException">
9075             <descriptive>
9076                 <description><p>
9077  with error type TypeMismatchError, if any of the input parameter is not compatible with the expected type for that parameter.
9078                 </p></description>
9079                 <description><p>
9080  with error type SecurityError, if the application does not have the privilege to call this method.
9081                 </p></description>
9082                 <description><p>
9083  with error type NotSupportedError, if this feature is not supported.
9084                 </p></description>
9085             </descriptive>
9086           </RaiseException>
9087         </Raises>
9088       </Operation>
9089       <Operation name="setChangeListener" id="::Bluetooth::BluetoothAdapter::setChangeListener">
9090         <webidl>        void setChangeListener(<ref>BluetoothAdapterChangeCallback</ref> listener) raises(<ref>WebAPIException</ref>);</webidl>
9091         <descriptive>
9092             <brief>
9093  Sets the listener to receive notifications about changes of Bluetooth adapter.
9094             </brief>
9095             <version>
9096  2.2
9097             </version>
9098             <Code> var changeListener = {
9099       onstatechanged: function(powered) {
9100           console.log (&quot;Power state is changed into: &quot; + powered);
9101       },
9102       onnamechanged: function(name) {
9103           console.log(&quot;Name is changed to: &quot; + name);
9104       },
9105       onvisibilitychanged: function(visible) {
9106           console.log(&quot;Visibility is changed into: &quot; + visible);
9107       }
9108  };
9109
9110  var adapter = tizen.bluetooth.getDefaultAdapter();
9111  adapter.setChangeListener(changeListener);
9112  </Code>
9113         </descriptive>
9114         <Type type="void"/>
9115         <ArgumentList>
9116           <Argument name="listener">
9117             <descriptive>
9118                 <description><p>
9119  The Bluetooth Adapter event listener to set.
9120                 </p></description>
9121             </descriptive>
9122             <Type name="BluetoothAdapterChangeCallback"/>
9123           </Argument>
9124         </ArgumentList>
9125         <Raises>
9126           <RaiseException name="WebAPIException">
9127             <descriptive>
9128                 <description><p>
9129  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
9130                 </p></description>
9131                 <description><p>
9132  with error type SecurityError, if this functionality is not allowed.
9133                 </p></description>
9134                 <description><p>
9135  with error type UnknownError, if any other error occurs.
9136                 </p></description>
9137             </descriptive>
9138           </RaiseException>
9139         </Raises>
9140       </Operation>
9141       <Operation name="unsetChangeListener" id="::Bluetooth::BluetoothAdapter::unsetChangeListener">
9142         <webidl>        void unsetChangeListener() raises(<ref>WebAPIException</ref>);</webidl>
9143         <descriptive>
9144             <brief>
9145  Unsets the listener, so stop receiving notifications about changes of Bluetooth adapter.
9146             </brief>
9147             <version>
9148  2.2
9149             </version>
9150             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
9151
9152  var changeListener = {
9153       onstatechanged: function(powered) {
9154           console.log (&quot;Power state is changed into: &quot; + powered);
9155           if(!powered)
9156               adapter.unsetChangeListener();
9157       },
9158       onnamechanged: function(name) {
9159           console.log(&quot;Name is changed to: &quot; + name);
9160       },
9161       onvisibilitychanged: function(visible) {
9162           console.log(&quot;Visibility is changed into: &quot; + visible);
9163       }
9164  };
9165
9166  adapter.setChangeListener(changeListener);
9167  </Code>
9168         </descriptive>
9169         <Type type="void"/>
9170         <ArgumentList/>
9171         <Raises>
9172           <RaiseException name="WebAPIException">
9173             <descriptive>
9174                 <description><p>
9175  with error type SecurityError, if this functionality is not allowed.
9176                 </p></description>
9177                 <description><p>
9178  with error type UnknownError, if any other error occurs.
9179                 </p></description>
9180             </descriptive>
9181           </RaiseException>
9182         </Raises>
9183       </Operation>
9184       <Operation name="discoverDevices" id="::Bluetooth::BluetoothAdapter::discoverDevices">
9185         <webidl>        void discoverDevices(<ref>BluetoothDiscoverDevicesSuccessCallback</ref> successCallback, 
9186                              optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
9187         <descriptive>
9188             <brief>
9189  Discovers nearby Bluetooth devices if any, that is, devices within proximity to the local device.
9190             </brief>
9191            <description>
9192             <p>
9193 This method initiates the device discovery process. Depending on the progress of this process the following methods are invoked:
9194             </p>
9195             <ul>
9196               <li>
9197 <em>BluetoothDiscoverDevicesSuccessCallback.onstarted()</em> - when a discovery process starts successfully.              </li>
9198               <li>
9199 <em>BluetoothDiscoverDevicesSuccessCallback.ondevicefound() </em>- when any device is found in the process and this method is invoked with the device information. If no device is found, this method will never be invoked.              </li>
9200               <li>
9201 <em>BluetoothDiscoverDevicesSuccessCallback.ondevicedisappeared()</em> - when a device goes out of proximity and this method is invoked with the address of the device.              </li>
9202               <li>
9203 <em>BluetoothDiscoverDevicesSuccessCallback.onfinished()</em> - when a discovery process is completed.              </li>
9204             </ul>
9205             <p>
9206 A discovery process can be canceled anytime, by calling <em>stopDiscovery() </em>on the <em>BluetoothAdapter</em>.
9207             </p>
9208             <p>
9209 The ErrorCallback is launched with these error types:
9210             </p>
9211             <ul>
9212               <li>
9213  ServiceNotAvailableError - If a Bluetooth device is turned off.              </li>
9214               <li>
9215  UnknownError - If any other error occurs.              </li>
9216             </ul>
9217            </description>
9218             <version>
9219  1.0
9220             </version>
9221             <privilegelevel>
9222  public
9223             </privilegelevel>
9224             <privilege>
9225  http://tizen.org/privilege/bluetooth.gap
9226             </privilege>
9227             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
9228  
9229  function startDiscovery() {
9230
9231   var discoverDevicesSuccessCallback = {
9232       onstarted: function() { 
9233           console.log (&quot;Device discovery started...&quot;);
9234       },
9235       ondevicefound: function(device) { 
9236           console.log(&quot;Found device - name: &quot; + device.name + &quot;, Address: &quot;+ device.address); 
9237       },
9238       ondevicedisappeared: function(address) { 
9239           console.log(&quot;Device disappeared: &quot; + address); 
9240       },
9241       onfinished: function(devices) { 
9242           console.log(&quot;Found Devices&quot;);
9243           for (var i = 0; i &#60; devices.length; i++) {
9244               console.log(&quot;Name: &quot; + devices[i].name + &quot;, Address: &quot; + devices[i].address);
9245           }
9246           console.log(&quot;Total: &quot; + devices.length);
9247       }
9248   };
9249  
9250   // Starts searching for nearby devices, for about 12 sec.
9251   adapter.discoverDevices(discoverDevicesSuccessCallback, function(e){
9252       console.log (&quot;Failed to search devices: &quot; + e.message + &quot;(&quot; + e.name + &quot;)&quot;);
9253   });
9254  }
9255
9256  function onSetPoweredError(e) {
9257      console.log (&quot;Could not turn on device, reason: &quot; + e.message + &quot;(&quot; + e.name + &quot;)&quot;);
9258  }
9259
9260  adapter.setPowered(true, startDiscovery, onSetPoweredError);
9261  </Code>
9262         </descriptive>
9263         <Type type="void"/>
9264         <ArgumentList>
9265           <Argument name="successCallback">
9266             <descriptive>
9267                 <description><p>
9268  The method to invoke when an asynchronous call completes successfully.
9269                 </p></description>
9270             </descriptive>
9271             <Type name="BluetoothDiscoverDevicesSuccessCallback"/>
9272           </Argument>
9273           <Argument optional="optional" name="errorCallback">
9274             <descriptive>
9275                 <description><p>
9276  The method to invoke when an error occurs.
9277                 </p></description>
9278             </descriptive>
9279             <Type name="ErrorCallback" nullable="nullable"/>
9280           </Argument>
9281         </ArgumentList>
9282         <Raises>
9283           <RaiseException name="WebAPIException">
9284             <descriptive>
9285                 <description><p>
9286  with error type TypeMismatchError, if any of the input parameter is not compatible with the expected type for that parameter.
9287                 </p></description>
9288                 <description><p>
9289  with error type SecurityError, if the application does not have the privilege to call this method.
9290                 </p></description>
9291                 <description><p>
9292  with error type NotSupportedError, if this feature is not supported.
9293                 </p></description>
9294             </descriptive>
9295           </RaiseException>
9296         </Raises>
9297       </Operation>
9298       <Operation name="stopDiscovery" id="::Bluetooth::BluetoothAdapter::stopDiscovery">
9299         <webidl>        void stopDiscovery(optional <ref>SuccessCallback</ref>? successCallback, 
9300                            optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
9301         <descriptive>
9302             <brief>
9303  Stops an active device discovery session.
9304             </brief>
9305            <description>
9306             <p>
9307 Device discovery is a heavyweight procedure, hence we recommend stopping discovery as soon as required device is found. This method cancels an active discovery session.
9308             </p>
9309             <p>
9310 The ErrorCallback is launched with these error types:
9311             </p>
9312             <ul>
9313               <li>
9314  ServiceNotAvailableError - If a Bluetooth device is turned off.              </li>
9315               <li>
9316  UnknownError - If any other error occurs.              </li>
9317             </ul>
9318            </description>
9319             <version>
9320  1.0
9321             </version>
9322             <privilegelevel>
9323  public
9324             </privilegelevel>
9325             <privilege>
9326  http://tizen.org/privilege/bluetooth.gap
9327             </privilege>
9328             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
9329  
9330  // Calls this method whenever user finds one of the device
9331  function cancelDiscovery() {
9332     adapter.stopDiscovery(function() {
9333         console.log(&quot;Stop discovery success.&quot;);
9334     },
9335     function (e) {
9336         console.log(&quot;Error while stopDiscovery:&quot; + e.message);
9337     });
9338  }
9339
9340  function startDiscovery() {
9341
9342   var discoverDevicesSuccessCallback = {
9343       onstarted: function() { 
9344           console.log (&quot;Device discovery started...&quot;) ;
9345       },
9346       ondevicefound: function(device) {
9347           console.log(&quot;Found device - name: &quot; + device.name + &quot;, Address: &quot;+ device.address);
9348           // Shows the device to user to check if this is the device user is looking for.
9349           // For example, add this to list view.
9350
9351           cancelDiscovery();
9352       },
9353       ondevicedisappeared: function(address) { 
9354           console.log(&quot;Device disappeared: &quot; + address);
9355           // Removes from list, as it is no longer valid.
9356       },
9357       onfinished: function(devices) { 
9358           console.log(&quot;Found Devices&quot;);
9359           for (var i = 0; i &#60; devices.length; i++) {
9360               console.log(&quot;Name: &quot; + devices[i].name + &quot;, Address: &quot; + devices[i].address);
9361           }
9362           console.log(&quot;Total: &quot; + devices.length);
9363       }
9364   };
9365  
9366   // Starts searching for nearby devices, for about 12 sec.
9367   adapter.discoverDevices(discoverDevicesSuccessCallback, function(e){
9368       console.log (&quot;Failed to search devices: &quot; + e.message + &quot;(&quot; + e.name + &quot;)&quot;);
9369   });
9370  }
9371
9372  function onSetPoweredError(e) {
9373      console.log (&quot;Could not turn on device, reason: &quot; + e.message + &quot;(&quot; + e.name + &quot;)&quot;);
9374  }
9375
9376  adapter.setPowered(true, startDiscovery, onSetPoweredError);
9377  </Code>
9378         </descriptive>
9379         <Type type="void"/>
9380         <ArgumentList>
9381           <Argument optional="optional" name="successCallback">
9382             <descriptive>
9383                 <description><p>
9384  The method to invoke when an asynchronous call completes successfully.
9385                 </p></description>
9386             </descriptive>
9387             <Type name="SuccessCallback" nullable="nullable"/>
9388           </Argument>
9389           <Argument optional="optional" name="errorCallback">
9390             <descriptive>
9391                 <description><p>
9392  The method to invoke when an error occurs.
9393                 </p></description>
9394             </descriptive>
9395             <Type name="ErrorCallback" nullable="nullable"/>
9396           </Argument>
9397         </ArgumentList>
9398         <Raises>
9399           <RaiseException name="WebAPIException">
9400             <descriptive>
9401                 <description><p>
9402  with error type TypeMismatchError, if any of the input parameter is not compatible with the expected type for that parameter.
9403                 </p></description>
9404                 <description><p>
9405  with error type SecurityError, if the application does not have the privilege to call this method.
9406                 </p></description>
9407                 <description><p>
9408  with error type NotSupportedError, if this feature is not supported.
9409                 </p></description>
9410             </descriptive>
9411           </RaiseException>
9412         </Raises>
9413       </Operation>
9414       <Operation name="getKnownDevices" id="::Bluetooth::BluetoothAdapter::getKnownDevices">
9415         <webidl>        void getKnownDevices(<ref>BluetoothDeviceArraySuccessCallback</ref> successCallback, 
9416                              optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
9417         <descriptive>
9418             <brief>
9419  Gets all the known devices that have information stored in the local Bluetooth adapter.
9420             </brief>
9421            <description>
9422             <p>
9423 A known device is one of the following:
9424             </p>
9425             <ul>
9426               <li>
9427 a bonded device              </li>
9428               <li>
9429 a device found in last inquiry process              </li>
9430             </ul>
9431             <p>
9432 On success, it returns the list of currently known devices through <em>BluetoothDeviceArraySuccessCallback</em>.
9433             </p>
9434             <p>
9435 The ErrorCallback is launched with these error types:
9436             </p>
9437             <ul>
9438               <li>
9439  ServiceNotAvailableError - If a Bluetooth device is turned off.              </li>
9440               <li>
9441  UnknownError - If any other error occurs.              </li>
9442             </ul>
9443            </description>
9444             <version>
9445  1.0
9446             </version>
9447             <privilegelevel>
9448  public
9449             </privilegelevel>
9450             <privilege>
9451  http://tizen.org/privilege/bluetooth.gap
9452             </privilege>
9453             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
9454  
9455  function onGotDevices(devices) {
9456     console.log(&quot;Devices&quot;);
9457     for (var i = 0; i &#60; devices.length; i++) {
9458         console.log(&quot; Name: &quot; + devices[i].name + &quot;, Address: &quot; + devices[i].address);
9459     }
9460     console.log(&quot;Total: &quot; + devices.length);
9461  }
9462
9463  function onError(e) {
9464    console.log (&quot;Error: &quot; + e.message);
9465  }
9466
9467  function onBluetoothsetPowered() {
9468     adapter.getKnownDevices(onGotDevices, onError);
9469  }
9470  
9471  // Turns on Bluetooth
9472  adapter.setPowered(true, onBluetoothsetPowered);
9473  </Code>
9474         </descriptive>
9475         <Type type="void"/>
9476         <ArgumentList>
9477           <Argument name="successCallback">
9478             <descriptive>
9479                 <description><p>
9480  The method to invoke at retrieval of a list of Bluetooth devices that were bonded (paired) to the local Bluetooth adapter.
9481                 </p></description>
9482             </descriptive>
9483             <Type name="BluetoothDeviceArraySuccessCallback"/>
9484           </Argument>
9485           <Argument optional="optional" name="errorCallback">
9486             <descriptive>
9487                 <description><p>
9488  The method to invoke in case of failure in finding any bonded devices.
9489                 </p></description>
9490             </descriptive>
9491             <Type name="ErrorCallback" nullable="nullable"/>
9492           </Argument>
9493         </ArgumentList>
9494         <Raises>
9495           <RaiseException name="WebAPIException">
9496             <descriptive>
9497                 <description><p>
9498  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter
9499                 </p></description>
9500                 <description><p>
9501  with error type SecurityError, if the application does not have the privilege to call this method.
9502                 </p></description>
9503                 <description><p>
9504  with error type NotSupportedError, if this feature is not supported.
9505                 </p></description>
9506             </descriptive>
9507           </RaiseException>
9508         </Raises>
9509       </Operation>
9510       <Operation name="getDevice" id="::Bluetooth::BluetoothAdapter::getDevice">
9511         <webidl>        void getDevice(<ref>BluetoothAddress</ref> address,
9512                        <ref>BluetoothDeviceSuccessCallback</ref> successCallback, 
9513                        optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
9514         <descriptive>
9515             <brief>
9516  Gets the <em>BluetoothDevice</em> object for a given device hardware address.
9517             </brief>
9518            <description>
9519             <p>
9520 This method returns device information stored in the local Bluetooth adapter for the specified device <em>address</em> through 
9521 BluetoothDeviceSuccessCallback.
9522 A valid hardware address must be passed, such as &quot;35:F4:59:D1:7A:03&quot;.
9523             </p>
9524             <p>
9525 The ErrorCallback is launched with these error types:
9526             </p>
9527             <ul>
9528               <li>
9529  NotFoundError - If there is no device with the given address.              </li>
9530               <li>
9531  ServiceNotAvailableError - If a Bluetooth device is turned off.              </li>
9532               <li>
9533  UnknownError - If any other error occurs.              </li>
9534             </ul>
9535            </description>
9536             <version>
9537  1.0
9538             </version>
9539             <privilegelevel>
9540  public
9541             </privilegelevel>
9542             <privilege>
9543  http://tizen.org/privilege/bluetooth.gap
9544             </privilege>
9545             <Code> function gotDeviceInfo(device) {
9546     console.log(&quot;Device Name: &quot; + device.name);
9547     console.log(&quot;Device Address: &quot; + device.address);
9548     console.log(&quot;Device Class: &quot; + device.deviceClass.major);
9549     console.log(&quot;Is Bonded: &quot; + (device.isBonded ? &quot;Yes&quot; : &quot;No&quot;));
9550  }
9551
9552  function onError(e) {
9553     console.log (&quot;Could not get device info:&quot; + e.message);
9554  }
9555
9556  var adapter = tizen.bluetooth.getDefaultAdapter();
9557  adapter.getDevice(&quot;35:F4:59:D1:7A:03&quot;, gotDeviceInfo, onError);
9558  </Code>
9559         </descriptive>
9560         <Type type="void"/>
9561         <ArgumentList>
9562           <Argument name="address">
9563             <descriptive>
9564                 <description><p>
9565  The address of a remote Bluetooth device to get.
9566                 </p></description>
9567             </descriptive>
9568             <Type name="BluetoothAddress"/>
9569           </Argument>
9570           <Argument name="successCallback">
9571             <descriptive>
9572                 <description><p>
9573  The method to invoke when an asynchronous call completes successfully.
9574                 </p></description>
9575             </descriptive>
9576             <Type name="BluetoothDeviceSuccessCallback"/>
9577           </Argument>
9578           <Argument optional="optional" name="errorCallback">
9579             <descriptive>
9580                 <description><p>
9581  The method to invoke when an error occurs.
9582                 </p></description>
9583             </descriptive>
9584             <Type name="ErrorCallback" nullable="nullable"/>
9585           </Argument>
9586         </ArgumentList>
9587         <Raises>
9588           <RaiseException name="WebAPIException">
9589             <descriptive>
9590                 <description><p>
9591  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter
9592                 </p></description>
9593                 <description><p>
9594  with error type SecurityError, if the application does not have the privilege to call this method.
9595                 </p></description>
9596                 <description><p>
9597  with error type NotSupportedError, if this feature is not supported.
9598                 </p></description>
9599             </descriptive>
9600           </RaiseException>
9601         </Raises>
9602       </Operation>
9603       <Operation name="createBonding" id="::Bluetooth::BluetoothAdapter::createBonding">
9604         <webidl>        void createBonding(<ref>BluetoothAddress</ref> address,
9605                            <ref>BluetoothDeviceSuccessCallback</ref> successCallback, 
9606                            optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
9607         <descriptive>
9608             <brief>
9609  Creates a bond with a remote device by initiating the bonding process with peer device, using the given MAC address. The remote device must be bonded with the local device in order to connect to services of the remote device and then exchange data with each other.
9610             </brief>
9611            <description>
9612             <p>
9613 If the bonding process is successful, the device information is sent in <em>successCallback</em>.
9614             </p>
9615             <p>
9616 The ErrorCallback is launched with these error types:
9617             </p>
9618             <ul>
9619               <li>
9620  NotFoundError - If there is no device with the given address.              </li>
9621               <li>
9622  ServiceNotAvailableError - If a Bluetooth device is turned off.              </li>
9623               <li>
9624  UnknownError - If any other error occurs.              </li>
9625             </ul>
9626            </description>
9627             <version>
9628  1.0
9629             </version>
9630             <privilegelevel>
9631  public
9632             </privilegelevel>
9633             <privilege>
9634  http://tizen.org/privilege/bluetooth.gap
9635             </privilege>
9636             <Code> function onBondingSuccess(device) {
9637     console.log(&quot;Device Name:&quot; + device.name);
9638     console.log(&quot;Device Address:&quot; + device.address);
9639     console.log(&quot;Device Service UUIDs:&quot; + device.uuids.join(&quot;\n&quot;));
9640  }
9641
9642  function onError(e) {
9643     console.log (&quot;Could not create bonding, reason:&quot; + e.message);
9644  }
9645
9646  var adapter = tizen.bluetooth.getDefaultAdapter();
9647  adapter.createBonding(&quot;35:F4:59:D1:7A:03&quot;, onBondingSuccess, onError);
9648  </Code>
9649         </descriptive>
9650         <Type type="void"/>
9651         <ArgumentList>
9652           <Argument name="address">
9653             <descriptive>
9654                 <description><p>
9655  The MAC address of remote Bluetooth address to bond with.
9656                 </p></description>
9657             </descriptive>
9658             <Type name="BluetoothAddress"/>
9659           </Argument>
9660           <Argument name="successCallback">
9661             <descriptive>
9662                 <description><p>
9663  The method to invoke when an asynchronous call completes successfully.
9664                 </p></description>
9665             </descriptive>
9666             <Type name="BluetoothDeviceSuccessCallback"/>
9667           </Argument>
9668           <Argument optional="optional" name="errorCallback">
9669             <descriptive>
9670                 <description><p>
9671  The method to invoke when an error occurs.
9672                 </p></description>
9673             </descriptive>
9674             <Type name="ErrorCallback" nullable="nullable"/>
9675           </Argument>
9676         </ArgumentList>
9677         <Raises>
9678           <RaiseException name="WebAPIException">
9679             <descriptive>
9680                 <description><p>
9681  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
9682                 </p></description>
9683                 <description><p>
9684  with error type SecurityError, if the application does not have the privilege to call this method.
9685                 </p></description>
9686                 <description><p>
9687  with error type NotSupportedError, if this feature is not supported.
9688                 </p></description>
9689             </descriptive>
9690           </RaiseException>
9691         </Raises>
9692       </Operation>
9693       <Operation name="destroyBonding" id="::Bluetooth::BluetoothAdapter::destroyBonding">
9694         <webidl>        void destroyBonding(<ref>BluetoothAddress</ref> address,
9695                             optional <ref>SuccessCallback</ref>? successCallback, 
9696                             optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
9697         <descriptive>
9698             <brief>
9699  Destroys the bond with a remote device, that is, this method initiates the process of removing the specified <em>address</em> from the list of bonded devices.
9700             </brief>
9701            <description>
9702             <p>
9703 The ErrorCallback is launched with these error types:
9704             </p>
9705             <ul>
9706               <li>
9707  NotFoundError - If there is no device with the given address.              </li>
9708               <li>
9709  ServiceNotAvailableError - If a Bluetooth device is turned off.              </li>
9710               <li>
9711  UnknownError - If any other error occurs.              </li>
9712             </ul>
9713            </description>
9714             <version>
9715  1.0
9716             </version>
9717             <privilegelevel>
9718  public
9719             </privilegelevel>
9720             <privilege>
9721  http://tizen.org/privilege/bluetooth.gap
9722             </privilege>
9723             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
9724  
9725  function gotDevice(device) {
9726     if (device.isBonded) {
9727       // Initiates destroying bonding
9728       adapter.destroyBonding(device.address, function() { 
9729            console.log(&quot;Succeeded to destroy the bond success with:&quot; + device.address);
9730        },
9731        function(e) { 
9732            console.log(&quot;Failed to destroy the bond with &quot; + device.address + &quot;, reason: &quot; + e.message); 
9733        });
9734     }
9735  }
9736
9737  var deviceAddress = &quot;35:F4:59:D1:7A:03&quot;;
9738  adapter.getDevice(deviceAddress, gotDevice, function(e) { 
9739              console.log(&quot;Failed to get device info for &quot; + deviceAddress + &quot;, reason: &quot; + e.message); 
9740  } );
9741  </Code>
9742         </descriptive>
9743         <Type type="void"/>
9744         <ArgumentList>
9745           <Argument name="address">
9746             <descriptive>
9747                 <description><p>
9748  The address of a bonded device.
9749                 </p></description>
9750             </descriptive>
9751             <Type name="BluetoothAddress"/>
9752           </Argument>
9753           <Argument optional="optional" name="successCallback">
9754             <descriptive>
9755                 <description><p>
9756  The method to invoke when an asynchronous call completes successfully.
9757                 </p></description>
9758             </descriptive>
9759             <Type name="SuccessCallback" nullable="nullable"/>
9760           </Argument>
9761           <Argument optional="optional" name="errorCallback">
9762             <descriptive>
9763                 <description><p>
9764  The method to invoke when an error occurs.
9765                 </p></description>
9766             </descriptive>
9767             <Type name="ErrorCallback" nullable="nullable"/>
9768           </Argument>
9769         </ArgumentList>
9770         <Raises>
9771           <RaiseException name="WebAPIException">
9772             <descriptive>
9773                 <description><p>
9774  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter
9775                 </p></description>
9776                 <description><p>
9777  with error type SecurityError, if the application does not have the privilege to call this method.
9778                 </p></description>
9779                 <description><p>
9780  with error type NotSupportedError, if this feature is not supported.
9781                 </p></description>
9782             </descriptive>
9783           </RaiseException>
9784         </Raises>
9785       </Operation>
9786       <Operation name="registerRFCOMMServiceByUUID" id="::Bluetooth::BluetoothAdapter::registerRFCOMMServiceByUUID">
9787         <webidl>        void registerRFCOMMServiceByUUID(<ref>BluetoothUUID</ref> uuid,
9788                                          DOMString name,
9789                                          <ref>BluetoothServiceSuccessCallback</ref> successCallback, 
9790                                          optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
9791         <descriptive>
9792             <brief>
9793  Registers a service record in the device service record database with the specified <em>uuid</em>, <em>name</em>.
9794             </brief>
9795            <description>
9796             <p>
9797 On success of the service registration, it returns a <em>BluetoothServiceHandler</em> object as the first parameter of <em>successCallback</em>, and listens for client connections. 
9798 The service handler can be used to be notified on client connections or to unregister the service.
9799 User interaction is mandatory to connect to a registered service.
9800             </p>
9801             <p>
9802 If any client(remote device) connects to this service, then <em>BluetoothServiceHandler.onconnect()</em> is invoked with <em>BluetoothSocket</em> object.
9803             </p>
9804             <p>
9805 <em>BluetoothServiceHandler.unregister()</em> can be used to unregister the service record from the device service database and stop listening for client connections.
9806             </p>
9807             <p>
9808 The ErrorCallback is launched with these error types:
9809             </p>
9810             <ul>
9811               <li>
9812  InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
9813               <li>
9814  ServiceNotAvailableError - If a Bluetooth device is turned off.              </li>
9815               <li>
9816  UnknownError - If any other error occurs.              </li>
9817             </ul>
9818            </description>
9819             <version>
9820  1.0
9821             </version>
9822             <privilegelevel>
9823  public
9824             </privilegelevel>
9825             <privilege>
9826  http://tizen.org/privilege/bluetooth.spp
9827             </privilege>
9828             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
9829  // Holds currently registered service record
9830  var chatServiceHandler = null;
9831  // Holds currently open socket
9832  var serviceSocket = null;
9833
9834  function chatServiceSuccessCb(recordHandler) {
9835     console.log(&quot;Chat service registration succeeds!&quot;);
9836     chatServiceHandler = recordHandler;
9837     recordHandler.onconnect = function(socket) {
9838         console.log(&quot;Client connected: &quot; + socket.peer.name + &quot;,&quot; + socket.peer.address);
9839         serviceSocket = socket;
9840         // Messages received from remote device
9841         socket.onmessage = function() {
9842              var data = socket.readData();
9843              // Handles message code goes here
9844              
9845         };
9846         
9847         socket.onclose = function() {
9848             console.log('The socket is closed.');
9849             serviceSocket = null;
9850         };
9851     };
9852  };
9853
9854  function publishChatService()
9855  {
9856     var CHAT_SERVICE_UUID = &quot;5BCE9431-6C75-32AB-AFE0-2EC108A30860&quot;;
9857     adapter.registerRFCOMMServiceByUUID(CHAT_SERVICE_UUID, &quot;Chat service&quot;, chatServiceSuccessCb,
9858       // Error handler
9859       function(e) {
9860            console.log( &quot;Could not register service record, Error: &quot; + e.message);
9861       });
9862  }
9863  
9864  function unregisterChatService()
9865  {
9866       if (chatServiceHandler != null) {
9867           chatServiceHandler.unregister(function() {
9868                console.log(&quot;Chat service is unregistered&quot;);
9869                chatServiceHandler = null;
9870            }, function(e) {
9871                console.log(&quot;Failed to unregister service: &quot; + e.message);
9872            });
9873       }
9874  }
9875  </Code>
9876         </descriptive>
9877         <Type type="void"/>
9878         <ArgumentList>
9879           <Argument name="uuid">
9880             <descriptive>
9881                 <description><p>
9882  The UUID of the service, to which clients connects.
9883                 </p></description>
9884             </descriptive>
9885             <Type name="BluetoothUUID"/>
9886           </Argument>
9887           <Argument name="name">
9888             <descriptive>
9889                 <description><p>
9890  The Name of a service.
9891                 </p></description>
9892             </descriptive>
9893             <Type type="DOMString"/>
9894           </Argument>
9895           <Argument name="successCallback">
9896             <descriptive>
9897                 <description><p>
9898  The method to invoke on successful service registration.
9899                 </p></description>
9900             </descriptive>
9901             <Type name="BluetoothServiceSuccessCallback"/>
9902           </Argument>
9903           <Argument optional="optional" name="errorCallback">
9904             <descriptive>
9905                 <description><p>
9906  The method to invoke when an error occurs.
9907                 </p></description>
9908             </descriptive>
9909             <Type name="ErrorCallback" nullable="nullable"/>
9910           </Argument>
9911         </ArgumentList>
9912         <Raises>
9913           <RaiseException name="WebAPIException">
9914             <descriptive>
9915                 <description><p>
9916  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
9917                 </p></description>
9918                 <description><p>
9919  with error type SecurityError, if the application does not have the privilege to call this method.
9920                 </p></description>
9921                 <description><p>
9922  with error type NotSupportedError, if this feature is not supported.
9923                 </p></description>
9924             </descriptive>
9925           </RaiseException>
9926         </Raises>
9927       </Operation>
9928       <Operation name="getBluetoothProfileHandler" id="::Bluetooth::BluetoothAdapter::getBluetoothProfileHandler">
9929         <webidl>        <ref>BluetoothProfileHandler</ref> getBluetoothProfileHandler(<ref>BluetoothProfileType</ref> profileType) raises(<ref>WebAPIException</ref>);</webidl>
9930         <descriptive>
9931             <brief>
9932  Gets the profile handler for the given type.
9933             </brief>
9934             <version>
9935  2.2
9936             </version>
9937             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
9938  var healthProfileHandler = adapter.getBluetoothProfileHandler(&quot;HEALTH&quot;);
9939  </Code>
9940         </descriptive>
9941         <Type name="BluetoothProfileHandler"/>
9942         <ArgumentList>
9943           <Argument name="profileType">
9944             <descriptive>
9945                 <description><p>
9946  The type of Bluetooth Profile.
9947                 </p></description>
9948             </descriptive>
9949             <Type name="BluetoothProfileType"/>
9950           </Argument>
9951         </ArgumentList>
9952         <Raises>
9953           <RaiseException name="WebAPIException">
9954             <descriptive>
9955                 <description><p>
9956  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
9957                 </p></description>
9958                 <description><p>
9959  with error type NotSupportedError, if this feature is not supported.
9960                 </p></description>
9961                 <description><p>
9962  with error type UnknownError, if any other error occurs.
9963                 </p></description>
9964             </descriptive>
9965           </RaiseException>
9966         </Raises>
9967       </Operation>
9968     </Interface>
9969     <Interface name="BluetoothDevice" id="::Bluetooth::BluetoothDevice">
9970       <webidl>    [NoInterfaceObject] interface BluetoothDevice {
9971         readonly attribute DOMString name;
9972         readonly attribute <ref>BluetoothAddress</ref> address;
9973         readonly attribute <ref>BluetoothClass</ref> deviceClass;
9974         readonly attribute boolean isBonded;
9975         readonly attribute boolean isTrusted;
9976         readonly attribute boolean isConnected;
9977         readonly attribute <ref>BluetoothUUID</ref>[] uuids;
9978
9979         void connectToServiceByUUID(<ref>BluetoothUUID</ref> uuid,
9980                                     <ref>BluetoothSocketSuccessCallback</ref> successCallback, 
9981                                     optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
9982     };</webidl>
9983       <descriptive>
9984           <brief>
9985  This interface represents a remote Bluetooth device.
9986           </brief>
9987          <description>
9988           <p>
9989 A <em>BluetoothDevice</em> object can be retrieved using one of the following APIs:
9990           </p>
9991           <ul>
9992             <li>
9993  BluetoothAdapter.getDevice()            </li>
9994             <li>
9995  BluetoothAdapter.getKnownDevices()             </li>
9996             <li>
9997  BluetoothAdapter.discoverDevices()             </li>
9998             <li>
9999  BluetoothAdapter.createBonding()             </li>
10000           </ul>
10001          </description>
10002           <version>
10003  1.0
10004           </version>
10005       </descriptive>
10006       <ExtendedAttributeList>
10007         <ExtendedAttribute name="NoInterfaceObject">
10008           <webidl>NoInterfaceObject</webidl>
10009         </ExtendedAttribute>
10010       </ExtendedAttributeList>
10011       <Attribute readonly="readonly" name="name" id="::Bluetooth::BluetoothDevice::name">
10012         <webidl>        readonly attribute DOMString name;</webidl>
10013         <descriptive>
10014             <brief>
10015  An attribute to store the readable name of this remote device.
10016             </brief>
10017             <version>
10018  1.0
10019             </version>
10020             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
10021  adapter.getDevice(&quot;11:22:33:44:55:66&quot;, function(device) {
10022     console.log(&quot;Device Name: &quot; + device.name);
10023  });
10024  </Code>
10025         </descriptive>
10026         <Type type="DOMString"/>
10027       </Attribute>
10028       <Attribute readonly="readonly" name="address" id="::Bluetooth::BluetoothDevice::address">
10029         <webidl>        readonly attribute <ref>BluetoothAddress</ref> address;</webidl>
10030         <descriptive>
10031             <brief>
10032  An attribute to store the hardware address of this remote device.
10033             </brief>
10034             <version>
10035  1.0
10036             </version>
10037             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
10038  adapter.getDevice(&quot;11:22:33:44:55:66&quot;, function(device) {
10039     console.log(&quot;Device Address: &quot; + device.address);
10040  });
10041  </Code>
10042         </descriptive>
10043         <Type name="BluetoothAddress"/>
10044       </Attribute>
10045       <Attribute readonly="readonly" name="deviceClass" id="::Bluetooth::BluetoothDevice::deviceClass">
10046         <webidl>        readonly attribute <ref>BluetoothClass</ref> deviceClass;</webidl>
10047         <descriptive>
10048             <brief>
10049  An attribute to indicate a device class, which represents the type of the device and the services it provides.
10050             </brief>
10051             <version>
10052  1.0
10053             </version>
10054             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
10055  adapter.getDevice(&quot;11:22:33:44:55:66&quot;, function(device) {
10056     console.log(&quot;Device Major Class: &quot; + device.deviceClass.major);
10057  });
10058  </Code>
10059         </descriptive>
10060         <Type name="BluetoothClass"/>
10061       </Attribute>
10062       <Attribute readonly="readonly" name="isBonded" id="::Bluetooth::BluetoothDevice::isBonded">
10063         <webidl>        readonly attribute boolean isBonded;</webidl>
10064         <descriptive>
10065             <brief>
10066  An attribute to check the bond state of this remote device with the local device.
10067             </brief>
10068             <version>
10069  1.0
10070             </version>
10071             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
10072  adapter.getDevice(&quot;11:22:33:44:55:66&quot;, function(device) {
10073     console.log(&quot;Is bonded: &quot; + (device.isBonded ? &quot;Yes&quot; : &quot;No&quot;));
10074  });
10075  </Code>
10076         </descriptive>
10077         <Type type="boolean"/>
10078       </Attribute>
10079       <Attribute readonly="readonly" name="isTrusted" id="::Bluetooth::BluetoothDevice::isTrusted">
10080         <webidl>        readonly attribute boolean isTrusted;</webidl>
10081         <descriptive>
10082             <brief>
10083  An attribute to check whether the local device recognizes this remote device as a trusted device or not.
10084             </brief>
10085             <version>
10086  1.0
10087             </version>
10088             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
10089  adapter.getDevice(&quot;11:22:33:44:55:66&quot;, function(device) {
10090     console.log(&quot;Is trusted: &quot; + (device.isTrusted ? &quot;Yes&quot; : &quot;No&quot;));
10091  });
10092  </Code>
10093         </descriptive>
10094         <Type type="boolean"/>
10095       </Attribute>
10096       <Attribute readonly="readonly" name="isConnected" id="::Bluetooth::BluetoothDevice::isConnected">
10097         <webidl>        readonly attribute boolean isConnected;</webidl>
10098         <descriptive>
10099             <brief>
10100  An attribute to check the connection state of this remote device with the local device.
10101             </brief>
10102             <version>
10103  1.0
10104             </version>
10105             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
10106  adapter.getDevice(&quot;11:22:33:44:55:66&quot;, function(device) {
10107     console.log(&quot;Is connected: &quot; + (device.isConnected ? &quot;Yes&quot; : &quot;No&quot;));
10108  });
10109  </Code>
10110         </descriptive>
10111         <Type type="boolean"/>
10112       </Attribute>
10113       <Attribute readonly="readonly" name="uuids" id="::Bluetooth::BluetoothDevice::uuids">
10114         <webidl>        readonly attribute <ref>BluetoothUUID</ref>[] uuids;</webidl>
10115         <descriptive>
10116             <brief>
10117  An attribute to store the list of 128 bit service UUIDs available on this remote device.
10118             </brief>
10119             <version>
10120  1.0
10121             </version>
10122             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
10123  var CHAT_SERVICE_UUID = &quot;5BCE9431-6C75-32AB-AFE0-2EC108A30860&quot;;
10124  adapter.getDevice(&quot;11:22:33:44:55:66&quot;, function(device) {
10125     var uuids = device.uuids;
10126     var services = &quot;&quot;;
10127     for (var i = 0; i &#60; uuids.length; i++) {
10128         services += uuids[i] + &quot;\n&quot;;
10129     }
10130     console.log (&quot;Services found: &quot; + services);
10131     if (uuids.indexOf(CHAT_SERVICE_UUID) != -1) {
10132         // Connects to service
10133         device.connectToServiceByUUID(CHAT_SERVICE_UUID, function(socket) {
10134             //
10135             // Connected to service, handle socket
10136             //
10137         }, function (e) {
10138             console.log(&quot;Could not connect to chat service !!!. Error: &quot; + e.message);
10139         });
10140     }
10141  });
10142  </Code>
10143         </descriptive>
10144         <Type type="array">
10145           <Type name="BluetoothUUID"/>
10146         </Type>
10147       </Attribute>
10148       <Operation name="connectToServiceByUUID" id="::Bluetooth::BluetoothDevice::connectToServiceByUUID">
10149         <webidl>        void connectToServiceByUUID(<ref>BluetoothUUID</ref> uuid,
10150                                     <ref>BluetoothSocketSuccessCallback</ref> successCallback, 
10151                                     optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
10152         <descriptive>
10153             <brief>
10154  Connects to a specified service identified by <em>uuid</em> on this remote device.
10155             </brief>
10156            <description>
10157             <p>
10158 If opening a connection is successful, then a <em>BluetoothSocket</em> object with open state is sent using <em>successCallback</em>, through which data can be exchanged by both devices.
10159             </p>
10160             <p>
10161 The ErrorCallback is launched with these error types:
10162             </p>
10163             <ul>
10164               <li>
10165  NotFoundError - If there is no service with the specified <em>uuid</em>.              </li>
10166               <li>
10167  InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
10168               <li>
10169  UnknownError - If any other error occurs.              </li>
10170             </ul>
10171            </description>
10172             <version>
10173  1.0
10174             </version>
10175             <privilegelevel>
10176  public
10177             </privilegelevel>
10178             <privilege>
10179  http://tizen.org/privilege/bluetooth.spp
10180             </privilege>
10181             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
10182  var clientSocket = null;
10183
10184  // Calls a method that is invoked when user wants to send a message to a remote device
10185  function sendMessage(msg) {
10186     // Validates socket state, if everything is ok.
10187     if (clientSocket != null &amp;&amp; clientSocket.state == &quot;OPEN&quot;) {
10188         // Sends the message
10189         clientSocket.writeData(msg);
10190     }
10191  }
10192
10193  // Calls a method that is invoked when a socket is open
10194  function onSocketConnected(socket) {
10195     clientSocket = socket;
10196     console.log(&quot;Opening a socket successfully!!!&quot;);
10197     socket.onmessage = function () {
10198         var data = socket.readData();
10199         var recvmsg = &quot;&quot;;
10200         for (var i = 0; i &#60; data.length; i++)
10201         {
10202            recvmsg += String.fromCharCode(data[i]);
10203         }
10204         console.log(&quot;server msg >> &quot; + recvmsg);
10205     };
10206
10207     socket.onclose = function() {
10208         console.log(&quot;socket disconnected.&quot;);
10209     };
10210  }
10211
10212  function onDeviceReady(device) {
10213     // Validates device and service uuid
10214     if (device.uuids.indexOf(&quot;5BCE9431-6C75-32AB-AFE0-2EC108A30860&quot;) != -1) {
10215        // Opens socket
10216        device.connectToServiceByUUID(&quot;5BCE9431-6C75-32AB-AFE0-2EC108A30860&quot;, onSocketConnected, function(e) {
10217            console.log (&quot;Error connecting to service. Reason: &quot; + e.message);
10218         });
10219     }
10220     else {
10221         console.log (&quot;Chat service is not supported by this device&quot;);
10222     }
10223  }
10224
10225  function onSetPowered() {
10226     // Gets the BluetoothDevice object
10227     adapter.getDevice(&quot;35:F4:59:D1:7A:03&quot;, onDeviceReady, function(e) { console.log(&quot;Error: &quot; + e.message); });
10228  }
10229
10230  adapter.setPowered(true, onSetPowered, function(e) {console.log (&quot;Could not turn on Bluetooth adapter. reason: &quot; + e.message); });
10231  </Code>
10232         </descriptive>
10233         <Type type="void"/>
10234         <ArgumentList>
10235           <Argument name="uuid">
10236             <descriptive>
10237                 <description><p>
10238  The 128 bit unique identifier, which represents the service record on the device.
10239                 </p></description>
10240             </descriptive>
10241             <Type name="BluetoothUUID"/>
10242           </Argument>
10243           <Argument name="successCallback">
10244             <descriptive>
10245                 <description><p>
10246  The method to invoke when an asynchronous call completes successfully.
10247                 </p></description>
10248             </descriptive>
10249             <Type name="BluetoothSocketSuccessCallback"/>
10250           </Argument>
10251           <Argument optional="optional" name="errorCallback">
10252             <descriptive>
10253                 <description><p>
10254  The method to invoke when opening of a socket fails.
10255                 </p></description>
10256             </descriptive>
10257             <Type name="ErrorCallback" nullable="nullable"/>
10258           </Argument>
10259         </ArgumentList>
10260         <Raises>
10261           <RaiseException name="WebAPIException">
10262             <descriptive>
10263                 <description><p>
10264  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter
10265                 </p></description>
10266                 <description><p>
10267  with error type SecurityError, if the application does not have the privilege to call this method.
10268                 </p></description>
10269                 <description><p>
10270  with error type NotSupportedError, if this feature is not supported.
10271                 </p></description>
10272             </descriptive>
10273           </RaiseException>
10274         </Raises>
10275       </Operation>
10276     </Interface>
10277     <Interface name="BluetoothSocket" id="::Bluetooth::BluetoothSocket">
10278       <webidl>    [NoInterfaceObject] interface BluetoothSocket {
10279         readonly attribute <ref>BluetoothUUID</ref> uuid;
10280         readonly attribute <ref>BluetoothSocketState</ref> state;
10281         readonly attribute <ref>BluetoothDevice</ref> peer;
10282         [TreatNonCallableAsNull] attribute <ref>SuccessCallback</ref>? onmessage raises(<ref>WebAPIException</ref>);
10283         [TreatNonCallableAsNull] attribute <ref>SuccessCallback</ref>? onclose raises(<ref>WebAPIException</ref>);
10284         unsigned long writeData(byte[] data) raises(<ref>WebAPIException</ref>);
10285
10286
10287         byte[] readData() raises(<ref>WebAPIException</ref>);
10288
10289
10290         void close() raises(<ref>WebAPIException</ref>);
10291     };</webidl>
10292       <descriptive>
10293           <brief>
10294  This interface represents the Bluetooth socket.
10295           </brief>
10296          <description>
10297           <p>
10298 The socket object is created by <em>BluetoothDevice.connectToServiceByUUID()</em> or <em>BluetoothAdapter.registerRFCOMMServiceByUUID()</em>.
10299           </p>
10300          </description>
10301           <version>
10302  1.0
10303           </version>
10304       </descriptive>
10305       <ExtendedAttributeList>
10306         <ExtendedAttribute name="NoInterfaceObject">
10307           <webidl>NoInterfaceObject</webidl>
10308         </ExtendedAttribute>
10309       </ExtendedAttributeList>
10310       <Attribute readonly="readonly" name="uuid" id="::Bluetooth::BluetoothSocket::uuid">
10311         <webidl>        readonly attribute <ref>BluetoothUUID</ref> uuid;</webidl>
10312         <descriptive>
10313             <brief>
10314  An attribute to store the service UUID to which this socket is connected.
10315             </brief>
10316             <version>
10317  1.0
10318             </version>
10319         </descriptive>
10320         <Type name="BluetoothUUID"/>
10321       </Attribute>
10322       <Attribute readonly="readonly" name="state" id="::Bluetooth::BluetoothSocket::state">
10323         <webidl>        readonly attribute <ref>BluetoothSocketState</ref> state;</webidl>
10324         <descriptive>
10325             <brief>
10326  An attribute to indicate the socket state.
10327             </brief>
10328             <version>
10329  1.0
10330             </version>
10331         </descriptive>
10332         <Type name="BluetoothSocketState"/>
10333       </Attribute>
10334       <Attribute readonly="readonly" name="peer" id="::Bluetooth::BluetoothSocket::peer">
10335         <webidl>        readonly attribute <ref>BluetoothDevice</ref> peer;</webidl>
10336         <descriptive>
10337             <brief>
10338  The peer device to which this socket is connected.
10339             </brief>
10340             <version>
10341  1.0
10342             </version>
10343         </descriptive>
10344         <Type name="BluetoothDevice"/>
10345       </Attribute>
10346       <Attribute name="onmessage" id="::Bluetooth::BluetoothSocket::onmessage">
10347         <webidl>        [TreatNonCallableAsNull] attribute <ref>SuccessCallback</ref>? onmessage raises(<ref>WebAPIException</ref>);</webidl>
10348         <descriptive>
10349             <brief>
10350  The success callback to be invoked when an incoming message is received from the peer.
10351 By default, this attribute is set to null.
10352             </brief>
10353             <version>
10354  1.0
10355             </version>
10356         </descriptive>
10357         <ExtendedAttributeList>
10358           <ExtendedAttribute name="TreatNonCallableAsNull">
10359             <webidl>TreatNonCallableAsNull</webidl>
10360           </ExtendedAttribute>
10361         </ExtendedAttributeList>
10362         <Type name="SuccessCallback" nullable="nullable"/>
10363         <Raises>
10364           <RaiseException name="WebAPIException">
10365             <descriptive>
10366                 <description><p>
10367  with error type TypeMismatchError, if any input attribute is not compatible with the expected type for this attribute.
10368                 </p></description>
10369             </descriptive>
10370           </RaiseException>
10371         </Raises>
10372       </Attribute>
10373       <Attribute name="onclose" id="::Bluetooth::BluetoothSocket::onclose">
10374         <webidl>        [TreatNonCallableAsNull] attribute <ref>SuccessCallback</ref>? onclose raises(<ref>WebAPIException</ref>);</webidl>
10375         <descriptive>
10376             <brief>
10377  The success callback to be invoked when the socket is closed.
10378 By default, this attribute is set to null.
10379             </brief>
10380             <version>
10381  1.0
10382             </version>
10383         </descriptive>
10384         <ExtendedAttributeList>
10385           <ExtendedAttribute name="TreatNonCallableAsNull">
10386             <webidl>TreatNonCallableAsNull</webidl>
10387           </ExtendedAttribute>
10388         </ExtendedAttributeList>
10389         <Type name="SuccessCallback" nullable="nullable"/>
10390         <Raises>
10391           <RaiseException name="WebAPIException">
10392             <descriptive>
10393                 <description><p>
10394  with error type TypeMismatchError, if any input attribute is not compatible with the expected type for this attribute.
10395                 </p></description>
10396             </descriptive>
10397           </RaiseException>
10398         </Raises>
10399       </Attribute>
10400       <Operation name="writeData" id="::Bluetooth::BluetoothSocket::writeData">
10401         <webidl>        unsigned long writeData(byte[] data) raises(<ref>WebAPIException</ref>);</webidl>
10402         <descriptive>
10403             <brief>
10404  Writes data as a sequence of bytes onto the socket and returns the number of bytes actually written.
10405             </brief>
10406             <version>
10407  1.0
10408             </version>
10409             <privilegelevel>
10410  public
10411             </privilegelevel>
10412             <privilege>
10413  http://tizen.org/privilege/bluetooth.spp
10414             </privilege>
10415             <Code> 
10416  var adapter = tizen.bluetooth.getDefaultAdapter();
10417  
10418  function onSocketConnected(socket) {
10419     console.log (&quot;Opened connection to remote device&quot;);
10420     socket.onmessage = function () {
10421       console.log (&quot;Message received: &quot; + socket.readData());
10422     };
10423
10424     socket.onclose = function() {
10425        console.log(&quot;Socket closed with &quot; + socket.peer.name);
10426     };
10427
10428     // Sends data to peer.
10429     var textmsg = &quot;Test&quot;;
10430     var sendtextmsg = new Array();
10431     for (var i = 0; i &#60; textmsg.length; i++)
10432     {
10433         sendtextmsg[i] = textmsg.charCodeAt(i);
10434     }
10435     socket.writeData (sendtextmsg);
10436  }
10437
10438  function onSocketError(e) {
10439     console.log (&quot;Error connecting to service. Reason: &quot; + e.message);
10440  }
10441
10442  function onDeviceReady(device) {
10443     // Validates device and service uuid
10444     if (device.uuids.indexOf(&quot;5BCE9431-6C75-32AB-AFE0-2EC108A30860&quot;) != -1) {
10445        // Opens socket
10446        device.connectToServiceByUUID(&quot;5BCE9431-6C75-32AB-AFE0-2EC108A30860&quot;, onSocketConnected, onSocketError );
10447     }
10448  }
10449  function onSetPowered() {
10450     // Gets the BluetoothDevice object
10451     adapter.getDevice(&quot;35:F4:59:D1:7A:03&quot;, onDeviceReady, function(e) { console.log(&quot;Error: &quot; + e.message); });
10452  }
10453
10454  adapter.setPowered(true, onSetPowered, function(e) {console.log (&quot;Could not turn on Bluetooth adapter. reason: &quot; + e.message); });
10455  </Code>
10456         </descriptive>
10457         <Type type="unsigned long">
10458           <descriptive>
10459               <description><p>
10460  unsigned long The number of bytes actually sent.
10461               </p></description>
10462           </descriptive>
10463         </Type>
10464         <ArgumentList>
10465           <Argument name="data">
10466             <descriptive>
10467                 <description><p>
10468  The data to send.
10469                 </p></description>
10470             </descriptive>
10471             <Type type="array">
10472               <Type type="byte"/>
10473             </Type>
10474           </Argument>
10475         </ArgumentList>
10476         <Raises>
10477           <RaiseException name="WebAPIException">
10478             <descriptive>
10479                 <description><p>
10480  with error type TypeMismatchError, if any input parameters not compatible with the expected type for that parameter.
10481                 </p></description>
10482                 <description><p>
10483  with error type SecurityError, if the application does not have the privilege to call this method.
10484                 </p></description>
10485                 <description><p>
10486  with error type NotSupportedError, if this feature is not supported.
10487                 </p></description>
10488                 <description><p>
10489  with error type UnknownError, if any other error occurs. 
10490                 </p></description>
10491             </descriptive>
10492           </RaiseException>
10493         </Raises>
10494       </Operation>
10495       <Operation name="readData" id="::Bluetooth::BluetoothSocket::readData">
10496         <webidl>        byte[] readData() raises(<ref>WebAPIException</ref>);</webidl>
10497         <descriptive>
10498             <brief>
10499  Reads data from the socket.
10500             </brief>
10501            <description>
10502             <p>
10503 This method should be called only in the <em>BluetoothSocket.onmessage</em> handler, that is, when data is ready on the socket.
10504             </p>
10505            </description>
10506             <version>
10507  1.0
10508             </version>
10509             <privilegelevel>
10510  public
10511             </privilegelevel>
10512             <privilege>
10513  http://tizen.org/privilege/bluetooth.spp
10514             </privilege>
10515             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
10516
10517  function onError(e) {
10518     console.log (&quot;Error connecting to service. Reason: &quot; + e.message);
10519  }
10520
10521  function onSocketConnected(socket) {
10522     console.log (&quot;Opening socket success!!!&quot;);
10523
10524     socket.onmessage = function() {
10525       //  Has got a message from peer, reads it
10526       var data = socket.readData();
10527
10528       //
10529       // Code to evaluate message goes here
10530       //
10531     };
10532
10533     socket.onclose = function() {
10534        console.log(&quot;Socket closed with &quot; + socket.peer.name);
10535     };
10536  }
10537
10538  function onDeviceReady(device) {
10539     // Validates device and service uuid
10540     if (device.uuids.indexOf(&quot;5BCE9431-6C75-32AB-AFE0-2EC108A30860&quot;) != -1) {
10541        // Opens socket
10542        device.connectToServiceByUUID(&quot;5BCE9431-6C75-32AB-AFE0-2EC108A30860&quot;, onSocketConnected, onError);
10543     }
10544  }
10545  function onSetPowered() {
10546     // Gets the BluetoothDevice object
10547     adapter.getDevice(&quot;35:F4:59:D1:7A:03&quot;, onDeviceReady, function(e) { console.log(&quot;Error: &quot; + e.message); });
10548  }
10549
10550  adapter.setPowered(true, onSetPowered, function(e) {console.log (&quot;Could not turn on Bluetooth adapter. reason: &quot; + e.message); });
10551  </Code>
10552         </descriptive>
10553         <Type type="array">
10554           <descriptive>
10555               <description><p>
10556  byte[] The sequence of bytes successfully read.
10557               </p></description>
10558           </descriptive>
10559           <Type type="byte"/>
10560         </Type>
10561         <ArgumentList/>
10562         <Raises>
10563           <RaiseException name="WebAPIException">
10564             <descriptive>
10565                 <description><p>
10566  with error type SecurityError, if the application does not have the privilege to call this method.
10567                 </p></description>
10568                 <description><p>
10569  with error type NotSupportedError, if this feature is not supported.
10570                 </p></description>
10571                 <description><p>
10572  with error type UnknownError, if any other error occurs. 
10573                 </p></description>
10574             </descriptive>
10575           </RaiseException>
10576         </Raises>
10577       </Operation>
10578       <Operation name="close" id="::Bluetooth::BluetoothSocket::close">
10579         <webidl>        void close() raises(<ref>WebAPIException</ref>);</webidl>
10580         <descriptive>
10581             <brief>
10582  Closes the socket.
10583             </brief>
10584            <description>
10585             <p>
10586 <b>BluetoothSocket.state</b> changes to <var>CLOSED</var>, and <em>BluetoothSocket.onclose()</em> is invoked on success.
10587             </p>
10588            </description>
10589             <version>
10590  1.0
10591             </version>
10592             <privilegelevel>
10593  public
10594             </privilegelevel>
10595             <privilege>
10596  http://tizen.org/privilege/bluetooth.spp
10597             </privilege>
10598         </descriptive>
10599         <Type type="void"/>
10600         <ArgumentList/>
10601         <Raises>
10602           <RaiseException name="WebAPIException">
10603             <descriptive>
10604                 <description><p>
10605  with error type NotSupportedError, if this feature is not supported.
10606                 </p></description>
10607                 <description><p>
10608  with error type SecurityError, if the application does not have the privilege to call this method.
10609                 </p></description>
10610                 <description><p>
10611  with error type UnknownError, if any other error occurs. 
10612                 </p></description>
10613             </descriptive>
10614           </RaiseException>
10615         </Raises>
10616       </Operation>
10617     </Interface>
10618     <Interface name="BluetoothClass" id="::Bluetooth::BluetoothClass">
10619       <webidl>    [NoInterfaceObject] interface BluetoothClass {
10620         readonly attribute octet major;
10621         
10622         readonly attribute octet minor;
10623         
10624         readonly attribute unsigned short [] services ;
10625         
10626         boolean hasService(unsigned short service) raises(<ref>WebAPIException</ref>);
10627     };</webidl>
10628       <descriptive>
10629           <brief>
10630  This interface represents Bluetooth Class of Device/Service(CoD).
10631           </brief>
10632          <description>
10633           <p>
10634 Bluetooth device class describes the characteristics and capabilities of a device.
10635           </p>
10636           <p>
10637 Bluetooth CoD is a 24 bit integer created by the union of three components:
10638           </p>
10639           <ul>
10640             <li>
10641 Exactly one <b>Major Device Class</b>(bits 8-12 of CoD) - This is the highest level of granularity for defining a Bluetooth Device.            </li>
10642             <li>
10643 Exactly one <b>Minor Device Class</b>(bits 2-7 of CoD) - This is to be interpreted only in the context of the Major Device Class. Thus, the meaning of these bits may change, depending on the value of 'Major Device Class'.             </li>
10644             <li>
10645 Zero or more <b>Major Service Classes</b>(bits 13-23) - Represents the services supported by the device.            </li>
10646           </ul>
10647           <p>
10648 The Major and Minor classes are intended to define a general family of devices with which any particular implementation wishes to be associated. 
10649 No assumptions should be made about specific functionality or characteristics of any application, based solely on the assignment of a Major or minor device class.
10650           </p>
10651          </description>
10652           <version>
10653  1.0
10654           </version>
10655       </descriptive>
10656       <ExtendedAttributeList>
10657         <ExtendedAttribute name="NoInterfaceObject">
10658           <webidl>NoInterfaceObject</webidl>
10659         </ExtendedAttribute>
10660       </ExtendedAttributeList>
10661       <Attribute readonly="readonly" name="major" id="::Bluetooth::BluetoothClass::major">
10662         <webidl>        readonly attribute octet major;</webidl>
10663         <descriptive>
10664             <brief>
10665  The major device class and it refers to the <em>BluetoothClassDeviceMajor</em> interface for the list of possible
10666 values.
10667             </brief>
10668             <version>
10669  1.0
10670             </version>
10671             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
10672  
10673  function evaluateDevice(address) {
10674     adapter.getDevice(address, function(device) {
10675         if (device.deviceClass.major == tizen.bluetooth.deviceMajor.COMPUTER) {
10676             // Shows computer icon for this device
10677             console.log(&quot;Device is computer&quot;);
10678         } else if (device.deviceClass.major == tizen.bluetooth.deviceMajor.PHONE) {
10679             // Shows phone icon
10680             console.log(&quot;Device is a Phone&quot;);
10681         }
10682     }, function(e) {
10683         console.log(&quot;Couldn't get any device with the given address: &quot; + e.message);
10684     });
10685  }
10686
10687  evaluateDevice(&quot;11:22:33:44:55:66&quot;);
10688
10689  </Code>
10690         </descriptive>
10691         <Type type="octet"/>
10692       </Attribute>
10693       <Attribute readonly="readonly" name="minor" id="::Bluetooth::BluetoothClass::minor">
10694         <webidl>        readonly attribute octet minor;</webidl>
10695         <descriptive>
10696             <brief>
10697  The minor device class and it refer to the <em>BluetoothClassDeviceMinor</em> interface for the list of possible values.
10698             </brief>
10699             <version>
10700  1.0
10701             </version>
10702         </descriptive>
10703         <Type type="octet"/>
10704       </Attribute>
10705       <Attribute readonly="readonly" name="services" id="::Bluetooth::BluetoothClass::services">
10706         <webidl>        readonly attribute unsigned short [] services ;</webidl>
10707         <descriptive>
10708             <brief>
10709  The services provided by this device and it refers to the <em>BluetoothClassDeviceService</em> interface for the list of possible
10710 values.
10711             </brief>
10712             <version>
10713  1.0
10714             </version>
10715         </descriptive>
10716         <Type type="array">
10717           <Type type="unsigned short"/>
10718         </Type>
10719       </Attribute>
10720       <Operation name="hasService" id="::Bluetooth::BluetoothClass::hasService">
10721         <webidl>        boolean hasService(unsigned short service) raises(<ref>WebAPIException</ref>);</webidl>
10722         <descriptive>
10723             <brief>
10724  Checks whether the given service exists in the <em>services</em>.
10725             </brief>
10726             <version>
10727  1.0
10728             </version>
10729             <privilegelevel>
10730  public
10731             </privilegelevel>
10732             <privilege>
10733  http://tizen.org/privilege/bluetooth.gap
10734             </privilege>
10735             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
10736  adapter.getDevice(&quot;12:34:56:78:9A:BC&quot;, function(device) {
10737     if (device.deviceClass.hasService(tizen.bluetooth.deviceService.POSITIONING)) {
10738          console.log(&quot;Device supports Positioning service&quot;);
10739     }
10740  }, function(e) {
10741     console.log(&quot;Couldn't get device for given address: &quot; + e.message);
10742  });
10743  </Code>
10744         </descriptive>
10745         <Type type="boolean"/>
10746         <ArgumentList>
10747           <Argument name="service">
10748             <descriptive>
10749                 <description><p>
10750  The service to check.
10751                 </p></description>
10752             </descriptive>
10753             <Type type="unsigned short"/>
10754           </Argument>
10755         </ArgumentList>
10756         <Raises>
10757           <RaiseException name="WebAPIException">
10758             <descriptive>
10759                 <description><p>
10760  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
10761                 </p></description>
10762                 <description><p>
10763  with error type NotSupportedError, if this feature is not supported.
10764                 </p></description>
10765                 <description><p>
10766  with error type SecurityError, if the application does not have the privilege to call this method.
10767                 </p></description>
10768                 <description><p>
10769  with error type UnknownError, if any other error occurs. 
10770                 </p></description>
10771             </descriptive>
10772           </RaiseException>
10773         </Raises>
10774       </Operation>
10775     </Interface>
10776     <Interface name="BluetoothClassDeviceMajor" id="::Bluetooth::BluetoothClassDeviceMajor">
10777       <webidl>    [NoInterfaceObject] interface BluetoothClassDeviceMajor {
10778
10779         const octet MISC = 0x00;
10780         const octet COMPUTER = 0x01;
10781         const octet PHONE = 0x02;
10782         const octet NETWORK = 0x03;
10783         const octet AUDIO_VIDEO = 0x04;
10784         const octet PERIPHERAL = 0x05;
10785         const octet IMAGING = 0x06;
10786         const octet WEARABLE = 0x07;
10787         const octet TOY = 0x08;
10788         const octet HEALTH = 0x09;
10789         const octet UNCATEGORIZED = 0x1F;
10790     };</webidl>
10791       <descriptive>
10792           <brief>
10793  This interface holds the identifiers for major device classes of Bluetooth CoD.
10794           </brief>
10795           <version>
10796  1.0
10797           </version>
10798       </descriptive>
10799       <ExtendedAttributeList>
10800         <ExtendedAttribute name="NoInterfaceObject">
10801           <webidl>NoInterfaceObject</webidl>
10802         </ExtendedAttribute>
10803       </ExtendedAttributeList>
10804       <Const name="MISC" value="0x00" id="::Bluetooth::BluetoothClassDeviceMajor::MISC">
10805         <webidl>        const octet MISC = 0x00;</webidl>
10806         <Type type="octet"/>
10807       </Const>
10808       <Const name="COMPUTER" value="0x01" id="::Bluetooth::BluetoothClassDeviceMajor::COMPUTER">
10809         <webidl>        const octet COMPUTER = 0x01;</webidl>
10810         <Type type="octet"/>
10811       </Const>
10812       <Const name="PHONE" value="0x02" id="::Bluetooth::BluetoothClassDeviceMajor::PHONE">
10813         <webidl>        const octet PHONE = 0x02;</webidl>
10814         <Type type="octet"/>
10815       </Const>
10816       <Const name="NETWORK" value="0x03" id="::Bluetooth::BluetoothClassDeviceMajor::NETWORK">
10817         <webidl>        const octet NETWORK = 0x03;</webidl>
10818         <Type type="octet"/>
10819       </Const>
10820       <Const name="AUDIO_VIDEO" value="0x04" id="::Bluetooth::BluetoothClassDeviceMajor::AUDIO_VIDEO">
10821         <webidl>        const octet AUDIO_VIDEO = 0x04;</webidl>
10822         <Type type="octet"/>
10823       </Const>
10824       <Const name="PERIPHERAL" value="0x05" id="::Bluetooth::BluetoothClassDeviceMajor::PERIPHERAL">
10825         <webidl>        const octet PERIPHERAL = 0x05;</webidl>
10826         <Type type="octet"/>
10827       </Const>
10828       <Const name="IMAGING" value="0x06" id="::Bluetooth::BluetoothClassDeviceMajor::IMAGING">
10829         <webidl>        const octet IMAGING = 0x06;</webidl>
10830         <Type type="octet"/>
10831       </Const>
10832       <Const name="WEARABLE" value="0x07" id="::Bluetooth::BluetoothClassDeviceMajor::WEARABLE">
10833         <webidl>        const octet WEARABLE = 0x07;</webidl>
10834         <Type type="octet"/>
10835       </Const>
10836       <Const name="TOY" value="0x08" id="::Bluetooth::BluetoothClassDeviceMajor::TOY">
10837         <webidl>        const octet TOY = 0x08;</webidl>
10838         <Type type="octet"/>
10839       </Const>
10840       <Const name="HEALTH" value="0x09" id="::Bluetooth::BluetoothClassDeviceMajor::HEALTH">
10841         <webidl>        const octet HEALTH = 0x09;</webidl>
10842         <Type type="octet"/>
10843       </Const>
10844       <Const name="UNCATEGORIZED" value="0x1F" id="::Bluetooth::BluetoothClassDeviceMajor::UNCATEGORIZED">
10845         <webidl>        const octet UNCATEGORIZED = 0x1F;</webidl>
10846         <Type type="octet"/>
10847       </Const>
10848     </Interface>
10849     <Interface name="BluetoothClassDeviceMinor" id="::Bluetooth::BluetoothClassDeviceMinor">
10850       <webidl>    [NoInterfaceObject] interface BluetoothClassDeviceMinor {
10851         const octet COMPUTER_UNCATEGORIZED = 0x00;
10852         const octet COMPUTER_DESKTOP = 0x01;
10853         const octet COMPUTER_SERVER = 0x02;
10854         const octet COMPUTER_LAPTOP = 0x03;
10855         const octet COMPUTER_HANDHELD_PC_OR_PDA = 0x04;
10856         const octet COMPUTER_PALM_PC_OR_PDA = 0x05;
10857         const octet COMPUTER_WEARABLE = 0x06;
10858
10859         const octet PHONE_UNCATEGORIZED = 0x00;
10860         const octet PHONE_CELLULAR = 0x01;
10861         const octet PHONE_CORDLESS = 0x02;
10862         const octet PHONE_SMARTPHONE = 0x03;
10863         const octet PHONE_MODEM_OR_GATEWAY = 0x04;
10864         const octet PHONE_ISDN = 0x05;
10865
10866         const octet AV_UNRECOGNIZED = 0x00;
10867         const octet AV_WEARABLE_HEADSET = 0x01;
10868         const octet AV_HANDSFREE = 0x02;
10869         const octet AV_MICROPHONE = 0x04;
10870         const octet AV_LOUDSPEAKER = 0x05;
10871         const octet AV_HEADPHONES = 0x06;
10872         const octet AV_PORTABLE_AUDIO = 0x07;
10873         const octet AV_CAR_AUDIO = 0x08;
10874         const octet AV_SETTOP_BOX = 0x09;
10875         const octet AV_HIFI = 0x0a;
10876         const octet AV_VCR = 0x0b;
10877         const octet AV_VIDEO_CAMERA = 0x0c;
10878         const octet AV_CAMCORDER = 0x0d;
10879         const octet AV_MONITOR = 0x0e;
10880         const octet AV_DISPLAY_AND_LOUDSPEAKER = 0x0f;
10881         const octet AV_VIDEO_CONFERENCING = 0x10;
10882         const octet AV_GAMING_TOY = 0x12;
10883
10884         const octet PERIPHERAL_UNCATEGORIZED = 0;
10885         const octet PERIPHERAL_KEYBOARD = 0x10;
10886         const octet PERIPHERAL_POINTING_DEVICE = 0x20;
10887         const octet PERIPHERAL_KEYBOARD_AND_POINTING_DEVICE = 0x30;
10888         const octet PERIPHERAL_JOYSTICK = 0x01;
10889         const octet PERIPHERAL_GAMEPAD = 0x02;
10890         const octet PERIPHERAL_REMOTE_CONTROL = 0x03;
10891         const octet PERIPHERAL_SENSING_DEVICE = 0x04;
10892         const octet PERIPHERAL_DEGITIZER_TABLET = 0x05;
10893         const octet PERIPHERAL_CARD_READER = 0x06;
10894         const octet PERIPHERAL_DIGITAL_PEN = 0x07;
10895         const octet PERIPHERAL_HANDHELD_SCANNER = 0x08;
10896         const octet PERIPHERAL_HANDHELD_INPUT_DEVICE = 0x09;
10897
10898         const octet IMAGING_UNCATEGORIZED = 0x00;
10899         const octet IMAGING_DISPLAY = 0x04;
10900         const octet IMAGING_CAMERA = 0x08;
10901         const octet IMAGING_SCANNER = 0x10;
10902         const octet IMAGING_PRINTER = 0x20;
10903
10904         const octet WEARABLE_WRITST_WATCH = 0x01;
10905         const octet WEARABLE_PAGER = 0x02;
10906         const octet WEARABLE_JACKET = 0x03;
10907         const octet WEARABLE_HELMET = 0x04;
10908         const octet WEARABLE_GLASSES = 0x05;
10909
10910         const octet TOY_ROBOT = 0x01;
10911         const octet TOY_VEHICLE = 0x02;
10912         const octet TOY_DOLL = 0x03;
10913         const octet TOY_CONTROLLER = 0x04;
10914         const octet TOY_GAME = 0x05;
10915
10916         const octet HEALTH_UNDEFINED = 0x00;
10917         const octet HEALTH_BLOOD_PRESSURE_MONITOR = 0x01;
10918         const octet HEALTH_THERMOMETER = 0x02;
10919         const octet HEALTH_WEIGHING_SCALE = 0x03;
10920         const octet HEALTH_GLUCOSE_METER = 0x04;
10921         const octet HEALTH_PULSE_OXIMETER = 0x05;
10922         const octet HEALTH_PULSE_RATE_MONITOR = 0x06;
10923         const octet HEALTH_DATA_DISPLAY = 0x07;
10924         const octet HEALTH_STEP_COUNTER = 0x08;
10925         const octet HEALTH_BODY_COMPOSITION_ANALYZER = 0x09;
10926         const octet HEALTH_PEAK_FLOW_MONITOR = 0x0a;
10927         const octet HEALTH_MEDICATION_MONITOR = 0x0b;
10928         const octet HEALTH_KNEE_PROSTHESIS = 0x0c;
10929         const octet HEALTH_ANKLE_PROSTHESIS = 0x0d;
10930     };</webidl>
10931       <descriptive>
10932           <brief>
10933  This interface holds the identifiers for minor device classes of Bluetooth CoD.
10934           </brief>
10935           <version>
10936  1.0
10937           </version>
10938       </descriptive>
10939       <ExtendedAttributeList>
10940         <ExtendedAttribute name="NoInterfaceObject">
10941           <webidl>NoInterfaceObject</webidl>
10942         </ExtendedAttribute>
10943       </ExtendedAttributeList>
10944       <Const name="COMPUTER_UNCATEGORIZED" value="0x00" id="::Bluetooth::BluetoothClassDeviceMinor::COMPUTER_UNCATEGORIZED">
10945         <webidl>        const octet COMPUTER_UNCATEGORIZED = 0x00;</webidl>
10946         <Type type="octet"/>
10947       </Const>
10948       <Const name="COMPUTER_DESKTOP" value="0x01" id="::Bluetooth::BluetoothClassDeviceMinor::COMPUTER_DESKTOP">
10949         <webidl>        const octet COMPUTER_DESKTOP = 0x01;</webidl>
10950         <Type type="octet"/>
10951       </Const>
10952       <Const name="COMPUTER_SERVER" value="0x02" id="::Bluetooth::BluetoothClassDeviceMinor::COMPUTER_SERVER">
10953         <webidl>        const octet COMPUTER_SERVER = 0x02;</webidl>
10954         <Type type="octet"/>
10955       </Const>
10956       <Const name="COMPUTER_LAPTOP" value="0x03" id="::Bluetooth::BluetoothClassDeviceMinor::COMPUTER_LAPTOP">
10957         <webidl>        const octet COMPUTER_LAPTOP = 0x03;</webidl>
10958         <Type type="octet"/>
10959       </Const>
10960       <Const name="COMPUTER_HANDHELD_PC_OR_PDA" value="0x04" id="::Bluetooth::BluetoothClassDeviceMinor::COMPUTER_HANDHELD_PC_OR_PDA">
10961         <webidl>        const octet COMPUTER_HANDHELD_PC_OR_PDA = 0x04;</webidl>
10962         <Type type="octet"/>
10963       </Const>
10964       <Const name="COMPUTER_PALM_PC_OR_PDA" value="0x05" id="::Bluetooth::BluetoothClassDeviceMinor::COMPUTER_PALM_PC_OR_PDA">
10965         <webidl>        const octet COMPUTER_PALM_PC_OR_PDA = 0x05;</webidl>
10966         <Type type="octet"/>
10967       </Const>
10968       <Const name="COMPUTER_WEARABLE" value="0x06" id="::Bluetooth::BluetoothClassDeviceMinor::COMPUTER_WEARABLE">
10969         <webidl>        const octet COMPUTER_WEARABLE = 0x06;</webidl>
10970         <Type type="octet"/>
10971       </Const>
10972       <Const name="PHONE_UNCATEGORIZED" value="0x00" id="::Bluetooth::BluetoothClassDeviceMinor::PHONE_UNCATEGORIZED">
10973         <webidl>        const octet PHONE_UNCATEGORIZED = 0x00;</webidl>
10974         <Type type="octet"/>
10975       </Const>
10976       <Const name="PHONE_CELLULAR" value="0x01" id="::Bluetooth::BluetoothClassDeviceMinor::PHONE_CELLULAR">
10977         <webidl>        const octet PHONE_CELLULAR = 0x01;</webidl>
10978         <Type type="octet"/>
10979       </Const>
10980       <Const name="PHONE_CORDLESS" value="0x02" id="::Bluetooth::BluetoothClassDeviceMinor::PHONE_CORDLESS">
10981         <webidl>        const octet PHONE_CORDLESS = 0x02;</webidl>
10982         <Type type="octet"/>
10983       </Const>
10984       <Const name="PHONE_SMARTPHONE" value="0x03" id="::Bluetooth::BluetoothClassDeviceMinor::PHONE_SMARTPHONE">
10985         <webidl>        const octet PHONE_SMARTPHONE = 0x03;</webidl>
10986         <Type type="octet"/>
10987       </Const>
10988       <Const name="PHONE_MODEM_OR_GATEWAY" value="0x04" id="::Bluetooth::BluetoothClassDeviceMinor::PHONE_MODEM_OR_GATEWAY">
10989         <webidl>        const octet PHONE_MODEM_OR_GATEWAY = 0x04;</webidl>
10990         <Type type="octet"/>
10991       </Const>
10992       <Const name="PHONE_ISDN" value="0x05" id="::Bluetooth::BluetoothClassDeviceMinor::PHONE_ISDN">
10993         <webidl>        const octet PHONE_ISDN = 0x05;</webidl>
10994         <Type type="octet"/>
10995       </Const>
10996       <Const name="AV_UNRECOGNIZED" value="0x00" id="::Bluetooth::BluetoothClassDeviceMinor::AV_UNRECOGNIZED">
10997         <webidl>        const octet AV_UNRECOGNIZED = 0x00;</webidl>
10998         <Type type="octet"/>
10999       </Const>
11000       <Const name="AV_WEARABLE_HEADSET" value="0x01" id="::Bluetooth::BluetoothClassDeviceMinor::AV_WEARABLE_HEADSET">
11001         <webidl>        const octet AV_WEARABLE_HEADSET = 0x01;</webidl>
11002         <Type type="octet"/>
11003       </Const>
11004       <Const name="AV_HANDSFREE" value="0x02" id="::Bluetooth::BluetoothClassDeviceMinor::AV_HANDSFREE">
11005         <webidl>        const octet AV_HANDSFREE = 0x02;</webidl>
11006         <Type type="octet"/>
11007       </Const>
11008       <Const name="AV_MICROPHONE" value="0x04" id="::Bluetooth::BluetoothClassDeviceMinor::AV_MICROPHONE">
11009         <webidl>        const octet AV_MICROPHONE = 0x04;</webidl>
11010         <Type type="octet"/>
11011       </Const>
11012       <Const name="AV_LOUDSPEAKER" value="0x05" id="::Bluetooth::BluetoothClassDeviceMinor::AV_LOUDSPEAKER">
11013         <webidl>        const octet AV_LOUDSPEAKER = 0x05;</webidl>
11014         <Type type="octet"/>
11015       </Const>
11016       <Const name="AV_HEADPHONES" value="0x06" id="::Bluetooth::BluetoothClassDeviceMinor::AV_HEADPHONES">
11017         <webidl>        const octet AV_HEADPHONES = 0x06;</webidl>
11018         <Type type="octet"/>
11019       </Const>
11020       <Const name="AV_PORTABLE_AUDIO" value="0x07" id="::Bluetooth::BluetoothClassDeviceMinor::AV_PORTABLE_AUDIO">
11021         <webidl>        const octet AV_PORTABLE_AUDIO = 0x07;</webidl>
11022         <Type type="octet"/>
11023       </Const>
11024       <Const name="AV_CAR_AUDIO" value="0x08" id="::Bluetooth::BluetoothClassDeviceMinor::AV_CAR_AUDIO">
11025         <webidl>        const octet AV_CAR_AUDIO = 0x08;</webidl>
11026         <Type type="octet"/>
11027       </Const>
11028       <Const name="AV_SETTOP_BOX" value="0x09" id="::Bluetooth::BluetoothClassDeviceMinor::AV_SETTOP_BOX">
11029         <webidl>        const octet AV_SETTOP_BOX = 0x09;</webidl>
11030         <Type type="octet"/>
11031       </Const>
11032       <Const name="AV_HIFI" value="0x0a" id="::Bluetooth::BluetoothClassDeviceMinor::AV_HIFI">
11033         <webidl>        const octet AV_HIFI = 0x0a;</webidl>
11034         <Type type="octet"/>
11035       </Const>
11036       <Const name="AV_VCR" value="0x0b" id="::Bluetooth::BluetoothClassDeviceMinor::AV_VCR">
11037         <webidl>        const octet AV_VCR = 0x0b;</webidl>
11038         <Type type="octet"/>
11039       </Const>
11040       <Const name="AV_VIDEO_CAMERA" value="0x0c" id="::Bluetooth::BluetoothClassDeviceMinor::AV_VIDEO_CAMERA">
11041         <webidl>        const octet AV_VIDEO_CAMERA = 0x0c;</webidl>
11042         <Type type="octet"/>
11043       </Const>
11044       <Const name="AV_CAMCORDER" value="0x0d" id="::Bluetooth::BluetoothClassDeviceMinor::AV_CAMCORDER">
11045         <webidl>        const octet AV_CAMCORDER = 0x0d;</webidl>
11046         <Type type="octet"/>
11047       </Const>
11048       <Const name="AV_MONITOR" value="0x0e" id="::Bluetooth::BluetoothClassDeviceMinor::AV_MONITOR">
11049         <webidl>        const octet AV_MONITOR = 0x0e;</webidl>
11050         <Type type="octet"/>
11051       </Const>
11052       <Const name="AV_DISPLAY_AND_LOUDSPEAKER" value="0x0f" id="::Bluetooth::BluetoothClassDeviceMinor::AV_DISPLAY_AND_LOUDSPEAKER">
11053         <webidl>        const octet AV_DISPLAY_AND_LOUDSPEAKER = 0x0f;</webidl>
11054         <Type type="octet"/>
11055       </Const>
11056       <Const name="AV_VIDEO_CONFERENCING" value="0x10" id="::Bluetooth::BluetoothClassDeviceMinor::AV_VIDEO_CONFERENCING">
11057         <webidl>        const octet AV_VIDEO_CONFERENCING = 0x10;</webidl>
11058         <Type type="octet"/>
11059       </Const>
11060       <Const name="AV_GAMING_TOY" value="0x12" id="::Bluetooth::BluetoothClassDeviceMinor::AV_GAMING_TOY">
11061         <webidl>        const octet AV_GAMING_TOY = 0x12;</webidl>
11062         <Type type="octet"/>
11063       </Const>
11064       <Const name="PERIPHERAL_UNCATEGORIZED" value="0" id="::Bluetooth::BluetoothClassDeviceMinor::PERIPHERAL_UNCATEGORIZED">
11065         <webidl>        const octet PERIPHERAL_UNCATEGORIZED = 0;</webidl>
11066         <Type type="octet"/>
11067       </Const>
11068       <Const name="PERIPHERAL_KEYBOARD" value="0x10" id="::Bluetooth::BluetoothClassDeviceMinor::PERIPHERAL_KEYBOARD">
11069         <webidl>        const octet PERIPHERAL_KEYBOARD = 0x10;</webidl>
11070         <Type type="octet"/>
11071       </Const>
11072       <Const name="PERIPHERAL_POINTING_DEVICE" value="0x20" id="::Bluetooth::BluetoothClassDeviceMinor::PERIPHERAL_POINTING_DEVICE">
11073         <webidl>        const octet PERIPHERAL_POINTING_DEVICE = 0x20;</webidl>
11074         <Type type="octet"/>
11075       </Const>
11076       <Const name="PERIPHERAL_KEYBOARD_AND_POINTING_DEVICE" value="0x30" id="::Bluetooth::BluetoothClassDeviceMinor::PERIPHERAL_KEYBOARD_AND_POINTING_DEVICE">
11077         <webidl>        const octet PERIPHERAL_KEYBOARD_AND_POINTING_DEVICE = 0x30;</webidl>
11078         <Type type="octet"/>
11079       </Const>
11080       <Const name="PERIPHERAL_JOYSTICK" value="0x01" id="::Bluetooth::BluetoothClassDeviceMinor::PERIPHERAL_JOYSTICK">
11081         <webidl>        const octet PERIPHERAL_JOYSTICK = 0x01;</webidl>
11082         <Type type="octet"/>
11083       </Const>
11084       <Const name="PERIPHERAL_GAMEPAD" value="0x02" id="::Bluetooth::BluetoothClassDeviceMinor::PERIPHERAL_GAMEPAD">
11085         <webidl>        const octet PERIPHERAL_GAMEPAD = 0x02;</webidl>
11086         <Type type="octet"/>
11087       </Const>
11088       <Const name="PERIPHERAL_REMOTE_CONTROL" value="0x03" id="::Bluetooth::BluetoothClassDeviceMinor::PERIPHERAL_REMOTE_CONTROL">
11089         <webidl>        const octet PERIPHERAL_REMOTE_CONTROL = 0x03;</webidl>
11090         <Type type="octet"/>
11091       </Const>
11092       <Const name="PERIPHERAL_SENSING_DEVICE" value="0x04" id="::Bluetooth::BluetoothClassDeviceMinor::PERIPHERAL_SENSING_DEVICE">
11093         <webidl>        const octet PERIPHERAL_SENSING_DEVICE = 0x04;</webidl>
11094         <Type type="octet"/>
11095       </Const>
11096       <Const name="PERIPHERAL_DEGITIZER_TABLET" value="0x05" id="::Bluetooth::BluetoothClassDeviceMinor::PERIPHERAL_DEGITIZER_TABLET">
11097         <webidl>        const octet PERIPHERAL_DEGITIZER_TABLET = 0x05;</webidl>
11098         <Type type="octet"/>
11099       </Const>
11100       <Const name="PERIPHERAL_CARD_READER" value="0x06" id="::Bluetooth::BluetoothClassDeviceMinor::PERIPHERAL_CARD_READER">
11101         <webidl>        const octet PERIPHERAL_CARD_READER = 0x06;</webidl>
11102         <Type type="octet"/>
11103       </Const>
11104       <Const name="PERIPHERAL_DIGITAL_PEN" value="0x07" id="::Bluetooth::BluetoothClassDeviceMinor::PERIPHERAL_DIGITAL_PEN">
11105         <webidl>        const octet PERIPHERAL_DIGITAL_PEN = 0x07;</webidl>
11106         <Type type="octet"/>
11107       </Const>
11108       <Const name="PERIPHERAL_HANDHELD_SCANNER" value="0x08" id="::Bluetooth::BluetoothClassDeviceMinor::PERIPHERAL_HANDHELD_SCANNER">
11109         <webidl>        const octet PERIPHERAL_HANDHELD_SCANNER = 0x08;</webidl>
11110         <Type type="octet"/>
11111       </Const>
11112       <Const name="PERIPHERAL_HANDHELD_INPUT_DEVICE" value="0x09" id="::Bluetooth::BluetoothClassDeviceMinor::PERIPHERAL_HANDHELD_INPUT_DEVICE">
11113         <webidl>        const octet PERIPHERAL_HANDHELD_INPUT_DEVICE = 0x09;</webidl>
11114         <Type type="octet"/>
11115       </Const>
11116       <Const name="IMAGING_UNCATEGORIZED" value="0x00" id="::Bluetooth::BluetoothClassDeviceMinor::IMAGING_UNCATEGORIZED">
11117         <webidl>        const octet IMAGING_UNCATEGORIZED = 0x00;</webidl>
11118         <Type type="octet"/>
11119       </Const>
11120       <Const name="IMAGING_DISPLAY" value="0x04" id="::Bluetooth::BluetoothClassDeviceMinor::IMAGING_DISPLAY">
11121         <webidl>        const octet IMAGING_DISPLAY = 0x04;</webidl>
11122         <Type type="octet"/>
11123       </Const>
11124       <Const name="IMAGING_CAMERA" value="0x08" id="::Bluetooth::BluetoothClassDeviceMinor::IMAGING_CAMERA">
11125         <webidl>        const octet IMAGING_CAMERA = 0x08;</webidl>
11126         <Type type="octet"/>
11127       </Const>
11128       <Const name="IMAGING_SCANNER" value="0x10" id="::Bluetooth::BluetoothClassDeviceMinor::IMAGING_SCANNER">
11129         <webidl>        const octet IMAGING_SCANNER = 0x10;</webidl>
11130         <Type type="octet"/>
11131       </Const>
11132       <Const name="IMAGING_PRINTER" value="0x20" id="::Bluetooth::BluetoothClassDeviceMinor::IMAGING_PRINTER">
11133         <webidl>        const octet IMAGING_PRINTER = 0x20;</webidl>
11134         <Type type="octet"/>
11135       </Const>
11136       <Const name="WEARABLE_WRITST_WATCH" value="0x01" id="::Bluetooth::BluetoothClassDeviceMinor::WEARABLE_WRITST_WATCH">
11137         <webidl>        const octet WEARABLE_WRITST_WATCH = 0x01;</webidl>
11138         <Type type="octet"/>
11139       </Const>
11140       <Const name="WEARABLE_PAGER" value="0x02" id="::Bluetooth::BluetoothClassDeviceMinor::WEARABLE_PAGER">
11141         <webidl>        const octet WEARABLE_PAGER = 0x02;</webidl>
11142         <Type type="octet"/>
11143       </Const>
11144       <Const name="WEARABLE_JACKET" value="0x03" id="::Bluetooth::BluetoothClassDeviceMinor::WEARABLE_JACKET">
11145         <webidl>        const octet WEARABLE_JACKET = 0x03;</webidl>
11146         <Type type="octet"/>
11147       </Const>
11148       <Const name="WEARABLE_HELMET" value="0x04" id="::Bluetooth::BluetoothClassDeviceMinor::WEARABLE_HELMET">
11149         <webidl>        const octet WEARABLE_HELMET = 0x04;</webidl>
11150         <Type type="octet"/>
11151       </Const>
11152       <Const name="WEARABLE_GLASSES" value="0x05" id="::Bluetooth::BluetoothClassDeviceMinor::WEARABLE_GLASSES">
11153         <webidl>        const octet WEARABLE_GLASSES = 0x05;</webidl>
11154         <Type type="octet"/>
11155       </Const>
11156       <Const name="TOY_ROBOT" value="0x01" id="::Bluetooth::BluetoothClassDeviceMinor::TOY_ROBOT">
11157         <webidl>        const octet TOY_ROBOT = 0x01;</webidl>
11158         <Type type="octet"/>
11159       </Const>
11160       <Const name="TOY_VEHICLE" value="0x02" id="::Bluetooth::BluetoothClassDeviceMinor::TOY_VEHICLE">
11161         <webidl>        const octet TOY_VEHICLE = 0x02;</webidl>
11162         <Type type="octet"/>
11163       </Const>
11164       <Const name="TOY_DOLL" value="0x03" id="::Bluetooth::BluetoothClassDeviceMinor::TOY_DOLL">
11165         <webidl>        const octet TOY_DOLL = 0x03;</webidl>
11166         <Type type="octet"/>
11167       </Const>
11168       <Const name="TOY_CONTROLLER" value="0x04" id="::Bluetooth::BluetoothClassDeviceMinor::TOY_CONTROLLER">
11169         <webidl>        const octet TOY_CONTROLLER = 0x04;</webidl>
11170         <Type type="octet"/>
11171       </Const>
11172       <Const name="TOY_GAME" value="0x05" id="::Bluetooth::BluetoothClassDeviceMinor::TOY_GAME">
11173         <webidl>        const octet TOY_GAME = 0x05;</webidl>
11174         <Type type="octet"/>
11175       </Const>
11176       <Const name="HEALTH_UNDEFINED" value="0x00" id="::Bluetooth::BluetoothClassDeviceMinor::HEALTH_UNDEFINED">
11177         <webidl>        const octet HEALTH_UNDEFINED = 0x00;</webidl>
11178         <Type type="octet"/>
11179       </Const>
11180       <Const name="HEALTH_BLOOD_PRESSURE_MONITOR" value="0x01" id="::Bluetooth::BluetoothClassDeviceMinor::HEALTH_BLOOD_PRESSURE_MONITOR">
11181         <webidl>        const octet HEALTH_BLOOD_PRESSURE_MONITOR = 0x01;</webidl>
11182         <Type type="octet"/>
11183       </Const>
11184       <Const name="HEALTH_THERMOMETER" value="0x02" id="::Bluetooth::BluetoothClassDeviceMinor::HEALTH_THERMOMETER">
11185         <webidl>        const octet HEALTH_THERMOMETER = 0x02;</webidl>
11186         <Type type="octet"/>
11187       </Const>
11188       <Const name="HEALTH_WEIGHING_SCALE" value="0x03" id="::Bluetooth::BluetoothClassDeviceMinor::HEALTH_WEIGHING_SCALE">
11189         <webidl>        const octet HEALTH_WEIGHING_SCALE = 0x03;</webidl>
11190         <Type type="octet"/>
11191       </Const>
11192       <Const name="HEALTH_GLUCOSE_METER" value="0x04" id="::Bluetooth::BluetoothClassDeviceMinor::HEALTH_GLUCOSE_METER">
11193         <webidl>        const octet HEALTH_GLUCOSE_METER = 0x04;</webidl>
11194         <Type type="octet"/>
11195       </Const>
11196       <Const name="HEALTH_PULSE_OXIMETER" value="0x05" id="::Bluetooth::BluetoothClassDeviceMinor::HEALTH_PULSE_OXIMETER">
11197         <webidl>        const octet HEALTH_PULSE_OXIMETER = 0x05;</webidl>
11198         <Type type="octet"/>
11199       </Const>
11200       <Const name="HEALTH_PULSE_RATE_MONITOR" value="0x06" id="::Bluetooth::BluetoothClassDeviceMinor::HEALTH_PULSE_RATE_MONITOR">
11201         <webidl>        const octet HEALTH_PULSE_RATE_MONITOR = 0x06;</webidl>
11202         <Type type="octet"/>
11203       </Const>
11204       <Const name="HEALTH_DATA_DISPLAY" value="0x07" id="::Bluetooth::BluetoothClassDeviceMinor::HEALTH_DATA_DISPLAY">
11205         <webidl>        const octet HEALTH_DATA_DISPLAY = 0x07;</webidl>
11206         <Type type="octet"/>
11207       </Const>
11208       <Const name="HEALTH_STEP_COUNTER" value="0x08" id="::Bluetooth::BluetoothClassDeviceMinor::HEALTH_STEP_COUNTER">
11209         <webidl>        const octet HEALTH_STEP_COUNTER = 0x08;</webidl>
11210         <Type type="octet"/>
11211       </Const>
11212       <Const name="HEALTH_BODY_COMPOSITION_ANALYZER" value="0x09" id="::Bluetooth::BluetoothClassDeviceMinor::HEALTH_BODY_COMPOSITION_ANALYZER">
11213         <webidl>        const octet HEALTH_BODY_COMPOSITION_ANALYZER = 0x09;</webidl>
11214         <Type type="octet"/>
11215       </Const>
11216       <Const name="HEALTH_PEAK_FLOW_MONITOR" value="0x0a" id="::Bluetooth::BluetoothClassDeviceMinor::HEALTH_PEAK_FLOW_MONITOR">
11217         <webidl>        const octet HEALTH_PEAK_FLOW_MONITOR = 0x0a;</webidl>
11218         <Type type="octet"/>
11219       </Const>
11220       <Const name="HEALTH_MEDICATION_MONITOR" value="0x0b" id="::Bluetooth::BluetoothClassDeviceMinor::HEALTH_MEDICATION_MONITOR">
11221         <webidl>        const octet HEALTH_MEDICATION_MONITOR = 0x0b;</webidl>
11222         <Type type="octet"/>
11223       </Const>
11224       <Const name="HEALTH_KNEE_PROSTHESIS" value="0x0c" id="::Bluetooth::BluetoothClassDeviceMinor::HEALTH_KNEE_PROSTHESIS">
11225         <webidl>        const octet HEALTH_KNEE_PROSTHESIS = 0x0c;</webidl>
11226         <Type type="octet"/>
11227       </Const>
11228       <Const name="HEALTH_ANKLE_PROSTHESIS" value="0x0d" id="::Bluetooth::BluetoothClassDeviceMinor::HEALTH_ANKLE_PROSTHESIS">
11229         <webidl>        const octet HEALTH_ANKLE_PROSTHESIS = 0x0d;</webidl>
11230         <Type type="octet"/>
11231       </Const>
11232     </Interface>
11233     <Interface name="BluetoothClassDeviceService" id="::Bluetooth::BluetoothClassDeviceService">
11234       <webidl>    [NoInterfaceObject] interface BluetoothClassDeviceService {
11235         const unsigned short LIMITED_DISCOVERABILITY = 0x0001;
11236         const unsigned short POSITIONING = 0x0008; 
11237         const unsigned short NETWORKING = 0x0010; 
11238         const unsigned short RENDERING = 0x0020; 
11239         const unsigned short CAPTURING = 0x0040;
11240         const unsigned short OBJECT_TRANSFER = 0x0080; 
11241         const unsigned short AUDIO = 0x0100;
11242         const unsigned short TELEPHONY = 0x0200;
11243         const unsigned short INFORMATION = 0x0400;
11244     };</webidl>
11245       <descriptive>
11246           <brief>
11247  This interface holds identifiers for the major service classes of Bluetooth CoD.
11248           </brief>
11249           <version>
11250  1.0
11251           </version>
11252       </descriptive>
11253       <ExtendedAttributeList>
11254         <ExtendedAttribute name="NoInterfaceObject">
11255           <webidl>NoInterfaceObject</webidl>
11256         </ExtendedAttribute>
11257       </ExtendedAttributeList>
11258       <Const name="LIMITED_DISCOVERABILITY" value="0x0001" id="::Bluetooth::BluetoothClassDeviceService::LIMITED_DISCOVERABILITY">
11259         <webidl>        const unsigned short LIMITED_DISCOVERABILITY = 0x0001;</webidl>
11260         <Type type="unsigned short"/>
11261       </Const>
11262       <Const name="POSITIONING" value="0x0008" id="::Bluetooth::BluetoothClassDeviceService::POSITIONING">
11263         <webidl>        const unsigned short POSITIONING = 0x0008;</webidl>
11264         <Type type="unsigned short"/>
11265       </Const>
11266       <Const name="NETWORKING" value="0x0010" id="::Bluetooth::BluetoothClassDeviceService::NETWORKING">
11267         <webidl>        const unsigned short NETWORKING = 0x0010;</webidl>
11268         <Type type="unsigned short"/>
11269       </Const>
11270       <Const name="RENDERING" value="0x0020" id="::Bluetooth::BluetoothClassDeviceService::RENDERING">
11271         <webidl>        const unsigned short RENDERING = 0x0020;</webidl>
11272         <Type type="unsigned short"/>
11273       </Const>
11274       <Const name="CAPTURING" value="0x0040" id="::Bluetooth::BluetoothClassDeviceService::CAPTURING">
11275         <webidl>        const unsigned short CAPTURING = 0x0040;</webidl>
11276         <Type type="unsigned short"/>
11277       </Const>
11278       <Const name="OBJECT_TRANSFER" value="0x0080" id="::Bluetooth::BluetoothClassDeviceService::OBJECT_TRANSFER">
11279         <webidl>        const unsigned short OBJECT_TRANSFER = 0x0080;</webidl>
11280         <Type type="unsigned short"/>
11281       </Const>
11282       <Const name="AUDIO" value="0x0100" id="::Bluetooth::BluetoothClassDeviceService::AUDIO">
11283         <webidl>        const unsigned short AUDIO = 0x0100;</webidl>
11284         <Type type="unsigned short"/>
11285       </Const>
11286       <Const name="TELEPHONY" value="0x0200" id="::Bluetooth::BluetoothClassDeviceService::TELEPHONY">
11287         <webidl>        const unsigned short TELEPHONY = 0x0200;</webidl>
11288         <Type type="unsigned short"/>
11289       </Const>
11290       <Const name="INFORMATION" value="0x0400" id="::Bluetooth::BluetoothClassDeviceService::INFORMATION">
11291         <webidl>        const unsigned short INFORMATION = 0x0400;</webidl>
11292         <Type type="unsigned short"/>
11293       </Const>
11294     </Interface>
11295     <Interface name="BluetoothServiceHandler" id="::Bluetooth::BluetoothServiceHandler">
11296       <webidl>    [NoInterfaceObject] interface BluetoothServiceHandler {
11297         readonly attribute <ref>BluetoothUUID</ref> uuid;
11298         readonly attribute DOMString name;
11299         readonly attribute boolean isConnected;
11300         [TreatNonCallableAsNull] attribute <ref>BluetoothSocketSuccessCallback</ref>? onconnect raises(<ref>WebAPIException</ref>);
11301
11302         void unregister(optional <ref>SuccessCallback</ref>? successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
11303     };</webidl>
11304       <descriptive>
11305           <brief>
11306  This interface provides methods to handle Bluetooth service.
11307           </brief>
11308           <version>
11309  1.0
11310           </version>
11311       </descriptive>
11312       <ExtendedAttributeList>
11313         <ExtendedAttribute name="NoInterfaceObject">
11314           <webidl>NoInterfaceObject</webidl>
11315         </ExtendedAttribute>
11316       </ExtendedAttributeList>
11317       <Attribute readonly="readonly" name="uuid" id="::Bluetooth::BluetoothServiceHandler::uuid">
11318         <webidl>        readonly attribute <ref>BluetoothUUID</ref> uuid;</webidl>
11319         <descriptive>
11320             <brief>
11321  The UUID of the service.
11322             </brief>
11323             <version>
11324  1.0
11325             </version>
11326         </descriptive>
11327         <Type name="BluetoothUUID"/>
11328       </Attribute>
11329       <Attribute readonly="readonly" name="name" id="::Bluetooth::BluetoothServiceHandler::name">
11330         <webidl>        readonly attribute DOMString name;</webidl>
11331         <descriptive>
11332             <brief>
11333  The name of the service.
11334             </brief>
11335             <version>
11336  1.0
11337             </version>
11338         </descriptive>
11339         <Type type="DOMString"/>
11340       </Attribute>
11341       <Attribute readonly="readonly" name="isConnected" id="::Bluetooth::BluetoothServiceHandler::isConnected">
11342         <webidl>        readonly attribute boolean isConnected;</webidl>
11343         <descriptive>
11344             <brief>
11345  An attribute to check whether any remote devices is using this service or not.
11346             </brief>
11347             <version>
11348  1.0
11349             </version>
11350         </descriptive>
11351         <Type type="boolean"/>
11352       </Attribute>
11353       <Attribute name="onconnect" id="::Bluetooth::BluetoothServiceHandler::onconnect">
11354         <webidl>        [TreatNonCallableAsNull] attribute <ref>BluetoothSocketSuccessCallback</ref>? onconnect raises(<ref>WebAPIException</ref>);</webidl>
11355         <descriptive>
11356             <brief>
11357  The success callback to be invoked when a remote device is connected to this service.
11358 By default, this attribute is set to null.
11359             </brief>
11360             <version>
11361  1.0
11362             </version>
11363         </descriptive>
11364         <ExtendedAttributeList>
11365           <ExtendedAttribute name="TreatNonCallableAsNull">
11366             <webidl>TreatNonCallableAsNull</webidl>
11367           </ExtendedAttribute>
11368         </ExtendedAttributeList>
11369         <Type name="BluetoothSocketSuccessCallback" nullable="nullable"/>
11370         <Raises>
11371           <RaiseException name="WebAPIException">
11372             <descriptive>
11373                 <description><p>
11374  with error type TypeMismatchError, if any input attribute is not compatible with the expected type for this attribute.
11375                 </p></description>
11376             </descriptive>
11377           </RaiseException>
11378         </Raises>
11379       </Attribute>
11380       <Operation name="unregister" id="::Bluetooth::BluetoothServiceHandler::unregister">
11381         <webidl>        void unregister(optional <ref>SuccessCallback</ref>? successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
11382         <descriptive>
11383             <brief>
11384  Unregisters a service record from the Bluetooth services record database and stops listening for new connections to this service.
11385             </brief>
11386            <description>
11387             <p>
11388 The ErrorCallback is launched with these error types:
11389             </p>
11390             <ul>
11391               <li>
11392  UnknownError - If any other error occurs.              </li>
11393             </ul>
11394            </description>
11395             <version>
11396  1.0
11397             </version>
11398             <privilegelevel>
11399  public
11400             </privilegelevel>
11401             <privilege>
11402  http://tizen.org/privilege/bluetooth.spp
11403             </privilege>
11404             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
11405  var chatServiceHandler = null;
11406
11407  function chatServiceSuccessCb(handler) {
11408     console.log(&quot;Chat service registration was successful!&quot;);
11409
11410     chatServiceHandler = handler;
11411     handler.onconnect = function(socket) {
11412        console.log(&quot;Client is connected: &quot; + socket.peer.name + &quot;,&quot; + socket.peer.address);
11413        socket.onmessage = function() {
11414            var data = socket.readData();
11415            // Handle message code goes here
11416            //....
11417        };
11418
11419        // Expected close
11420        socket.onclose = function() {
11421            console.log('The socket is closed.');
11422        };
11423     };
11424  }
11425
11426  function publishChatService()
11427  {
11428     var CHAT_SERVICE_UUID = &quot;5BCE9431-6C75-32AB-AFE0-2EC108A30860&quot;;
11429     adapter.registerRFCOMMServiceByUUID(CHAT_SERVICE_UUID, &quot;Chat service&quot;, chatServiceSuccessCb,
11430       // Error handler
11431       function(e) {
11432            console.log( &quot;Could not register service record, Error: &quot; + e.message);
11433       });
11434  }
11435
11436  function unRegisterChatService()
11437  {
11438       if (chatServiceHandler != null) {
11439            chatServiceHandler.unregister(function() {
11440                chatServiceHandler = null;
11441                console.log(&quot;Chat service is unregistered.&quot;);
11442            },
11443            function(e) {
11444                console.log (&quot;Error: &quot; + e.message);
11445            });
11446       }
11447  }
11448  </Code>
11449         </descriptive>
11450         <Type type="void"/>
11451         <ArgumentList>
11452           <Argument optional="optional" name="successCallback">
11453             <descriptive>
11454                 <description><p>
11455  The method to be invoked when the record is removed successfully from the service records database.
11456                 </p></description>
11457             </descriptive>
11458             <Type name="SuccessCallback" nullable="nullable"/>
11459           </Argument>
11460           <Argument optional="optional" name="errorCallback">
11461             <descriptive>
11462                 <description><p>
11463  The method to be invoked in case of failure (to unregister).
11464                 </p></description>
11465             </descriptive>
11466             <Type name="ErrorCallback" nullable="nullable"/>
11467           </Argument>
11468         </ArgumentList>
11469         <Raises>
11470           <RaiseException name="WebAPIException">
11471             <descriptive>
11472                 <description><p>
11473  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
11474                 </p></description>
11475                 <description><p>
11476  with error type SecurityError, if the application does not have the privilege to call this method.
11477                 </p></description>
11478                 <description><p>
11479  with error type NotSupportedError, if this feature is not supported.
11480                 </p></description>
11481             </descriptive>
11482           </RaiseException>
11483         </Raises>
11484       </Operation>
11485     </Interface>
11486     <Interface name="BluetoothProfileHandler" id="::Bluetooth::BluetoothProfileHandler">
11487       <webidl>    [NoInterfaceObject] interface BluetoothProfileHandler {
11488         
11489         readonly attribute <ref>BluetoothProfileType</ref> profileType;
11490                 
11491     };</webidl>
11492       <descriptive>
11493           <brief>
11494  This interface represents the Bluetooth profile handler.
11495           </brief>
11496           <version>
11497  2.2
11498           </version>
11499       </descriptive>
11500       <ExtendedAttributeList>
11501         <ExtendedAttribute name="NoInterfaceObject">
11502           <webidl>NoInterfaceObject</webidl>
11503         </ExtendedAttribute>
11504       </ExtendedAttributeList>
11505       <Attribute readonly="readonly" name="profileType" id="::Bluetooth::BluetoothProfileHandler::profileType">
11506         <webidl>        readonly attribute <ref>BluetoothProfileType</ref> profileType;</webidl>
11507         <descriptive>
11508             <brief>
11509  The type of Bluetooth profile.
11510             </brief>
11511             <version>
11512  2.2
11513             </version>
11514         </descriptive>
11515         <Type name="BluetoothProfileType"/>
11516       </Attribute>
11517     </Interface>
11518     <Interface name="BluetoothHealthProfileHandler" id="::Bluetooth::BluetoothHealthProfileHandler">
11519       <webidl>    [NoInterfaceObject] interface BluetoothHealthProfileHandler : <ref>BluetoothProfileHandler</ref> {
11520         
11521         void registerSinkApplication(unsigned short dataType, DOMString name, <ref>BluetoothHealthApplicationSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
11522
11523         void connectToSource(<ref>BluetoothDevice</ref> peer, <ref>BluetoothHealthApplication</ref> application, <ref>BluetoothHealthChannelSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
11524
11525         };</webidl>
11526       <descriptive>
11527           <brief>
11528  This interface represents the handler of Bluetooth health device profile.
11529 The BluetoothHealthProfileHandler object is created by <em>BluetoothAdapter.getBluetoothProfileHandler()</em>.        
11530           </brief>
11531           <version>
11532  2.2
11533           </version>
11534       </descriptive>
11535       <ExtendedAttributeList>
11536         <ExtendedAttribute name="NoInterfaceObject">
11537           <webidl>NoInterfaceObject</webidl>
11538         </ExtendedAttribute>
11539       </ExtendedAttributeList>
11540       <InterfaceInheritance>
11541         <Name name="BluetoothProfileHandler"/>
11542       </InterfaceInheritance>
11543       <Operation name="registerSinkApplication" id="::Bluetooth::BluetoothHealthProfileHandler::registerSinkApplication">
11544         <webidl>        void registerSinkApplication(unsigned short dataType, DOMString name, <ref>BluetoothHealthApplicationSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
11545         <descriptive>
11546             <brief>
11547  Registers an application for the Sink role.
11548             </brief>
11549            <description>
11550             <p>
11551 The ErrorCallback is launched with these error types:
11552             </p>
11553             <ul>
11554               <li>
11555  ServiceNotAvailableError - If a Bluetooth device is turned off.              </li>
11556               <li>
11557  UnknownError - If any other error occurs.              </li>
11558             </ul>
11559            </description>
11560             <version>
11561  2.2
11562             </version>
11563             <privilegelevel>
11564  public
11565             </privilegelevel>
11566             <privilege>
11567  http://tizen.org/privilege/bluetooth.health
11568             </privilege>
11569             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
11570  var healthProfileHandler = adapter.getBluetoothProfileHandler(&quot;HEALTH&quot;);
11571
11572  function healthRegisterSuccess(app) {
11573      console.log(&quot;Registered application: &quot; + app.name);
11574  }
11575
11576  function healthRegisterError(e) {
11577      console.log(&quot;Failed to register application: &quot; + e.message);
11578  };
11579
11580  healthProfileHandler.registerSinkApplication(4100, &quot;testSinkApp&quot;, healthRegisterSuccess, healthRegisterError);
11581  </Code>
11582         </descriptive>
11583         <Type type="void"/>
11584         <ArgumentList>
11585           <Argument name="dataType">
11586             <descriptive>
11587                 <description><p>
11588  The MDEP data type used for communication, which is referenced in the ISO/IEEE 11073-20601 spec. For example, pulse oximeter is 4100 and blood pressure monitor is 4103. 
11589                 </p></description>
11590             </descriptive>
11591             <Type type="unsigned short"/>
11592           </Argument>
11593           <Argument name="name">
11594             <descriptive>
11595                 <description><p>
11596  The friendly name associated with sink application.
11597                 </p></description>
11598             </descriptive>
11599             <Type type="DOMString"/>
11600           </Argument>
11601           <Argument name="successCallback">
11602             <descriptive>
11603                 <description><p>
11604  The method to invoke when a sink application is registered successfully.
11605                 </p></description>
11606             </descriptive>
11607             <Type name="BluetoothHealthApplicationSuccessCallback"/>
11608           </Argument>
11609           <Argument optional="optional" name="errorCallback">
11610             <descriptive>
11611                 <description><p>
11612  The method to invoke when an error occurs.
11613                 </p></description>
11614             </descriptive>
11615             <Type name="ErrorCallback" nullable="nullable"/>
11616           </Argument>
11617         </ArgumentList>
11618         <Raises>
11619           <RaiseException name="WebAPIException">
11620             <descriptive>
11621                 <description><p>
11622  with error type SecurityError, if the application does not have the privilege to call this method.
11623                 </p></description>
11624                 <description><p>
11625  with error type TypeMismatchError, if any of the input parameter is not compatible with the expected type for that parameter.
11626                 </p></description>
11627                 <description><p>
11628  with error type NotSupportedError, if this feature is not supported.
11629                 </p></description>
11630             </descriptive>
11631           </RaiseException>
11632         </Raises>
11633       </Operation>
11634       <Operation name="connectToSource" id="::Bluetooth::BluetoothHealthProfileHandler::connectToSource">
11635         <webidl>        void connectToSource(<ref>BluetoothDevice</ref> peer, <ref>BluetoothHealthApplication</ref> application, <ref>BluetoothHealthChannelSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
11636         <descriptive>
11637             <brief>
11638  Connect to the health device which acts as the Source role.
11639             </brief>
11640            <description>
11641             <p>
11642 The ErrorCallback is launched with these error types:
11643             </p>
11644             <ul>
11645               <li>
11646  ServiceNotAvailableError - If a Bluetooth device is turned off.              </li>
11647               <li>
11648  InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
11649               <li>
11650  UnknownError - If any other error occurs.              </li>
11651             </ul>
11652            </description>
11653             <version>
11654  2.2
11655             </version>
11656             <privilegelevel>
11657  public
11658             </privilegelevel>
11659             <privilege>
11660  http://tizen.org/privilege/bluetooth.health
11661             </privilege>
11662             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
11663  var healthProfileHandler = adapter.getBluetoothProfileHandler(&quot;HEALTH&quot;);
11664  var registerHealthApp = null;
11665
11666  function healthConnectSuccess(channel) {
11667      console.log(&quot;Health device is connected&quot;);
11668  }
11669  
11670  function healthConnectError(e) {
11671      console.log(&quot;Failed to connect to source: &quot; + e.message);
11672  };
11673  
11674  function gotDeviceInfo(device) {
11675      healthProfileHandler.connectToSource(device, registerHealthApp, healthConnectSuccess, healthConnectError);
11676  }
11677  
11678  function healthRegisterSuccess(app) {
11679      console.log(&quot;Registered application: &quot; + app.name);
11680      registerHealthApp = app;
11681      var peer = adapter.getDevice(&quot;35:F4:59:D1:7A:03&quot;, gotDeviceInfo);
11682  }
11683
11684  function healthRegisterError(e) {
11685      console.log(&quot;Failed to register application: &quot; + e.message);
11686  };
11687
11688  healthProfileHandler.registerSinkApplication(4100, &quot;testSinkApp&quot;, healthRegisterSuccess, healthRegisterError);
11689  </Code>
11690         </descriptive>
11691         <Type type="void"/>
11692         <ArgumentList>
11693           <Argument name="peer">
11694             <descriptive>
11695                 <description><p>
11696  The remote device which acts as the Source role. 
11697                 </p></description>
11698             </descriptive>
11699             <Type name="BluetoothDevice"/>
11700           </Argument>
11701           <Argument name="application">
11702             <descriptive>
11703                 <description><p>
11704  The registered application for the Sink role.
11705                 </p></description>
11706             </descriptive>
11707             <Type name="BluetoothHealthApplication"/>
11708           </Argument>
11709           <Argument name="successCallback">
11710             <descriptive>
11711                 <description><p>
11712  The method to invoke when a connection is established successfully.
11713                 </p></description>
11714             </descriptive>
11715             <Type name="BluetoothHealthChannelSuccessCallback"/>
11716           </Argument>
11717           <Argument optional="optional" name="errorCallback">
11718             <descriptive>
11719                 <description><p>
11720  The method to invoke when an error occurs.
11721                 </p></description>
11722             </descriptive>
11723             <Type name="ErrorCallback" nullable="nullable"/>
11724           </Argument>
11725         </ArgumentList>
11726         <Raises>
11727           <RaiseException name="WebAPIException">
11728             <descriptive>
11729                 <description><p>
11730  with error type SecurityError, if the application does not have the privilege to call this method.
11731                 </p></description>
11732                 <description><p>
11733  with error type TypeMismatchError, if any of the input parameter is not compatible with the expected type for that parameter.
11734                 </p></description>
11735                 <description><p>
11736  with error type NotSupportedError, if this feature is not supported.
11737                 </p></description>
11738             </descriptive>
11739           </RaiseException>
11740         </Raises>
11741       </Operation>
11742     </Interface>
11743     <Interface name="BluetoothHealthApplication" id="::Bluetooth::BluetoothHealthApplication">
11744       <webidl>    [NoInterfaceObject] interface BluetoothHealthApplication {
11745
11746         readonly attribute unsigned short dataType;
11747                 
11748         readonly attribute DOMString name;
11749
11750         [TreatNonCallableAsNull] attribute <ref>BluetoothHealthChannelSuccessCallback</ref>? onconnect raises(<ref>WebAPIException</ref>);
11751                 
11752         void unregister(optional <ref>SuccessCallback</ref>? successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
11753                 
11754     };</webidl>
11755       <descriptive>
11756           <brief>
11757  This interface represents the Bluetooth health application.
11758           </brief>
11759           <version>
11760  2.2
11761           </version>
11762       </descriptive>
11763       <ExtendedAttributeList>
11764         <ExtendedAttribute name="NoInterfaceObject">
11765           <webidl>NoInterfaceObject</webidl>
11766         </ExtendedAttribute>
11767       </ExtendedAttributeList>
11768       <Attribute readonly="readonly" name="dataType" id="::Bluetooth::BluetoothHealthApplication::dataType">
11769         <webidl>        readonly attribute unsigned short dataType;</webidl>
11770         <descriptive>
11771             <brief>
11772  The MDEP data type used for communication, which is referenced in the ISO/IEEE 11073-20601 spec. For example, pulse oximeter is 4100 and blood pressure monitor is 4103.
11773             </brief>
11774             <version>
11775  2.2
11776             </version>
11777         </descriptive>
11778         <Type type="unsigned short"/>
11779       </Attribute>
11780       <Attribute readonly="readonly" name="name" id="::Bluetooth::BluetoothHealthApplication::name">
11781         <webidl>        readonly attribute DOMString name;</webidl>
11782         <descriptive>
11783             <brief>
11784  The friendly name associated with sink application.
11785             </brief>
11786             <version>
11787  2.2
11788             </version>
11789         </descriptive>
11790         <Type type="DOMString"/>
11791       </Attribute>
11792       <Attribute name="onconnect" id="::Bluetooth::BluetoothHealthApplication::onconnect">
11793         <webidl>        [TreatNonCallableAsNull] attribute <ref>BluetoothHealthChannelSuccessCallback</ref>? onconnect raises(<ref>WebAPIException</ref>);</webidl>
11794         <descriptive>
11795             <brief>
11796  The callback invoked when a health device is connected through this application.
11797 By default, this attribute is set to null.
11798             </brief>
11799             <version>
11800  2.2
11801             </version>
11802         </descriptive>
11803         <ExtendedAttributeList>
11804           <ExtendedAttribute name="TreatNonCallableAsNull">
11805             <webidl>TreatNonCallableAsNull</webidl>
11806           </ExtendedAttribute>
11807         </ExtendedAttributeList>
11808         <Type name="BluetoothHealthChannelSuccessCallback" nullable="nullable"/>
11809         <Raises>
11810           <RaiseException name="WebAPIException">
11811             <descriptive>
11812                 <description><p>
11813  with error type TypeMismatchError, if an input attribute is not compatible with the expected type for this attribute.
11814                 </p></description>
11815             </descriptive>
11816           </RaiseException>
11817         </Raises>
11818       </Attribute>
11819       <Operation name="unregister" id="::Bluetooth::BluetoothHealthApplication::unregister">
11820         <webidl>        void unregister(optional <ref>SuccessCallback</ref>? successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
11821         <descriptive>
11822             <brief>
11823  Unregisters this application.
11824             </brief>
11825            <description>
11826             <p>
11827 The ErrorCallback is launched with these error types:
11828             </p>
11829             <ul>
11830               <li>
11831  ServiceNotAvailableError - If a Bluetooth device is turned off.              </li>
11832               <li>
11833  UnknownError - If any other error occurs.              </li>
11834             </ul>
11835            </description>
11836             <version>
11837  2.2
11838             </version>
11839             <privilegelevel>
11840  public
11841             </privilegelevel>
11842             <privilege>
11843  http://tizen.org/privilege/bluetooth.health
11844             </privilege>
11845             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
11846  var healthProfileHandler = adapter.getBluetoothProfileHandler(&quot;HEALTH&quot;);
11847  var healthApp = null;
11848
11849  function healthRegisterSuccess(app) {
11850      console.log(&quot;Registered application: &quot; + app.name);
11851      healthApp = app;
11852      healthApp.onconnect = function(channel) {
11853          console.log(&quot;Connected!!&quot;);
11854      };
11855  }
11856
11857  function healthRegisterError(e) {
11858      console.log(&quot;Failed to register application: &quot; + e.message);
11859  };
11860
11861  function startSink() {
11862      try {
11863          healthProfileHandler.registerSinkApplication(4100, &quot;testSinkApp&quot;, healthRegisterSuccess, healthRegisterError);
11864      } catch(e) {
11865          console.log(&quot;Error: &quot; + e.message);
11866      }
11867  }
11868
11869  function stopSink() {
11870      try {
11871          if(healthApp != null) {
11872              healthApp.unregister(function() {
11873                  healthApp = null;
11874                  console.log(&quot;Health application is unregistered.&quot;);
11875              },
11876              function(e) {
11877                  console.log (&quot;Error: &quot; + e.message);
11878              });
11879          }
11880      } catch(err) {
11881          console.log(&quot;Error: &quot; + err.message);
11882      }
11883  }
11884  </Code>
11885         </descriptive>
11886         <Type type="void"/>
11887         <ArgumentList>
11888           <Argument optional="optional" name="successCallback">
11889             <descriptive>
11890                 <description><p>
11891  The method to invoke when a sink application is registered successfully.
11892                 </p></description>
11893             </descriptive>
11894             <Type name="SuccessCallback" nullable="nullable"/>
11895           </Argument>
11896           <Argument optional="optional" name="errorCallback">
11897             <descriptive>
11898                 <description><p>
11899  The method to invoke when an error occurs.
11900                 </p></description>
11901             </descriptive>
11902             <Type name="ErrorCallback" nullable="nullable"/>
11903           </Argument>
11904         </ArgumentList>
11905         <Raises>
11906           <RaiseException name="WebAPIException">
11907             <descriptive>
11908                 <description><p>
11909  with error type SecurityError, if the application does not have the privilege to call this method.
11910                 </p></description>
11911                 <description><p>
11912  with error type TypeMismatchError, if any of the input parameter is not compatible with the expected type for that parameter.
11913                 </p></description>
11914                 <description><p>
11915  with error type NotSupportedError, if this feature is not supported.
11916                 </p></description>
11917             </descriptive>
11918           </RaiseException>
11919         </Raises>
11920       </Operation>
11921     </Interface>
11922     <Interface name="BluetoothHealthChannel" id="::Bluetooth::BluetoothHealthChannel">
11923       <webidl>    [NoInterfaceObject] interface BluetoothHealthChannel {
11924
11925         readonly attribute <ref>BluetoothDevice</ref> peer;
11926                 
11927         readonly attribute <ref>BluetoothHealthChannelType</ref> channelType;
11928
11929         readonly attribute <ref>BluetoothHealthApplication</ref> application;
11930                 
11931         readonly attribute boolean isConnected;
11932
11933         void close() raises(<ref>WebAPIException</ref>);
11934
11935         unsigned long sendData(byte[] data) raises(<ref>WebAPIException</ref>);
11936
11937         void setListener(<ref>BluetoothHealthChannelChangeCallback</ref> listener) raises(<ref>WebAPIException</ref>); 
11938  
11939         void unsetListener() raises(<ref>WebAPIException</ref>);
11940                 
11941     };</webidl>
11942       <descriptive>
11943           <brief>
11944  This interface represents the Bluetooth health channel.
11945           </brief>
11946           <version>
11947  2.2
11948           </version>
11949       </descriptive>
11950       <ExtendedAttributeList>
11951         <ExtendedAttribute name="NoInterfaceObject">
11952           <webidl>NoInterfaceObject</webidl>
11953         </ExtendedAttribute>
11954       </ExtendedAttributeList>
11955       <Attribute readonly="readonly" name="peer" id="::Bluetooth::BluetoothHealthChannel::peer">
11956         <webidl>        readonly attribute <ref>BluetoothDevice</ref> peer;</webidl>
11957         <descriptive>
11958             <brief>
11959  The remote device to which this channel is connected.
11960             </brief>
11961             <version>
11962  2.2
11963             </version>
11964         </descriptive>
11965         <Type name="BluetoothDevice"/>
11966       </Attribute>
11967       <Attribute readonly="readonly" name="channelType" id="::Bluetooth::BluetoothHealthChannel::channelType">
11968         <webidl>        readonly attribute <ref>BluetoothHealthChannelType</ref> channelType;</webidl>
11969         <descriptive>
11970             <brief>
11971  The type of of this channel.
11972             </brief>
11973             <version>
11974  2.2
11975             </version>
11976         </descriptive>
11977         <Type name="BluetoothHealthChannelType"/>
11978       </Attribute>
11979       <Attribute readonly="readonly" name="application" id="::Bluetooth::BluetoothHealthChannel::application">
11980         <webidl>        readonly attribute <ref>BluetoothHealthApplication</ref> application;</webidl>
11981         <descriptive>
11982             <brief>
11983  The health application which is used to communicate with the remote device.
11984             </brief>
11985             <version>
11986  2.2
11987             </version>
11988         </descriptive>
11989         <Type name="BluetoothHealthApplication"/>
11990       </Attribute>
11991       <Attribute readonly="readonly" name="isConnected" id="::Bluetooth::BluetoothHealthChannel::isConnected">
11992         <webidl>        readonly attribute boolean isConnected;</webidl>
11993         <descriptive>
11994             <brief>
11995  An attrbitue to check whether any remote device is connected or not.
11996             </brief>
11997             <version>
11998  2.2
11999             </version>
12000         </descriptive>
12001         <Type type="boolean"/>
12002       </Attribute>
12003       <Operation name="close" id="::Bluetooth::BluetoothHealthChannel::close">
12004         <webidl>        void close() raises(<ref>WebAPIException</ref>);</webidl>
12005         <descriptive>
12006             <brief>
12007  Close the connected channel.
12008 <em>BluetoothHealthChannel.isConnected</em> is changed to <var>false</var> and <em>BluetoothHealthChannelChangeCallback.onclose</em> is invoked when this channel is closed successfully.
12009             </brief>
12010             <version>
12011  2.2
12012             </version>
12013             <privilegelevel>
12014  public
12015             </privilegelevel>
12016             <privilege>
12017  http://tizen.org/privilege/bluetooth.health
12018             </privilege>
12019             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
12020  var healthProfileHandler = adapter.getBluetoothProfileHandler(&quot;HEALTH&quot;);
12021  
12022  function healthRegisterSuccess(app) {
12023      console.log(&quot;Registered application: &quot; + app.name);
12024      app.onconnect = function(channel) {;
12025          console.log(&quot;Health device is connected&quot;);
12026          channel.close();
12027      }
12028  }
12029
12030  function healthRegisterError(e) {
12031      console.log(&quot;Failed to register application: &quot; + e.message);
12032  };
12033
12034  healthProfileHandler.registerSinkApplication(4100, &quot;testSinkApp&quot;, healthRegisterSuccess, healthRegisterError);
12035  </Code>
12036         </descriptive>
12037         <Type type="void"/>
12038         <ArgumentList/>
12039         <Raises>
12040           <RaiseException name="WebAPIException">
12041             <descriptive>
12042                 <description><p>
12043  with error type SecurityError, if the application does not have the privilege to call this method.
12044                 </p></description>
12045                 <description><p>
12046  with error type ServiceNotAvailableError - If a Bluetooth device is turned off.
12047                 </p></description>
12048                 <description><p>
12049  with error type UnknownError, if any other error occurs.
12050                 </p></description>
12051                 <description><p>
12052  with error type NotSupportedError, if this feature is not supported.
12053                 </p></description>
12054             </descriptive>
12055           </RaiseException>
12056         </Raises>
12057       </Operation>
12058       <Operation name="sendData" id="::Bluetooth::BluetoothHealthChannel::sendData">
12059         <webidl>        unsigned long sendData(byte[] data) raises(<ref>WebAPIException</ref>);</webidl>
12060         <descriptive>
12061             <brief>
12062  Send data and returns the number of bytes actually written.
12063             </brief>
12064             <version>
12065  2.2
12066             </version>
12067             <privilegelevel>
12068  public
12069             </privilegelevel>
12070             <privilege>
12071  http://tizen.org/privilege/bluetooth.health
12072             </privilege>
12073             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
12074  var healthProfileHandler = adapter.getBluetoothProfileHandler(&quot;HEALTH&quot;);
12075
12076  function healthRegisterSuccess(app) {
12077      console.log(&quot;Registered application: &quot; + app.name);
12078      app.onconnect = function(channel) {
12079          console.log(&quot;Health device is connected&quot;);
12080          channel.sendData(dataToSend);
12081      }
12082  }
12083
12084  function healthRegisterError(e) {
12085      console.log(&quot;Failed to register application: &quot; + e.message);
12086  };
12087
12088  healthProfileHandler.registerSinkApplication(4100, &quot;testSinkApp&quot;, healthRegisterSuccess, healthRegisterError);
12089  </Code>
12090         </descriptive>
12091         <Type type="unsigned long">
12092           <descriptive>
12093               <description><p>
12094  unsigned long The number of bytes actually sent.
12095               </p></description>
12096           </descriptive>
12097         </Type>
12098         <ArgumentList>
12099           <Argument name="data">
12100             <descriptive>
12101                 <description><p>
12102  The data to send.
12103                 </p></description>
12104             </descriptive>
12105             <Type type="array">
12106               <Type type="byte"/>
12107             </Type>
12108           </Argument>
12109         </ArgumentList>
12110         <Raises>
12111           <RaiseException name="WebAPIException">
12112             <descriptive>
12113                 <description><p>
12114  with error type SecurityError, if the application does not have the privilege to call this method.
12115                 </p></description>
12116                 <description><p>
12117  with error type ServiceNotAvailableError - If a Bluetooth device is turned off.
12118                 </p></description>
12119                 <description><p>
12120  with error type TypeMismatchError, if any of the input parameter is not compatible with the expected type for that parameter.
12121                 </p></description>
12122                 <description><p>
12123  with error type UnknownError, if any other error occurs.
12124                 </p></description>
12125                 <description><p>
12126  with error type NotSupportedError, if this feature is not supported.
12127                 </p></description>
12128             </descriptive>
12129           </RaiseException>
12130         </Raises>
12131       </Operation>
12132       <Operation name="setListener" id="::Bluetooth::BluetoothHealthChannel::setListener">
12133         <webidl>        void setListener(<ref>BluetoothHealthChannelChangeCallback</ref> listener) raises(<ref>WebAPIException</ref>);</webidl>
12134         <descriptive>
12135             <brief>
12136  Sets the listener to receive notifications.
12137             </brief>
12138             <version>
12139  2.2
12140             </version>
12141             <privilegelevel>
12142  public
12143             </privilegelevel>
12144             <privilege>
12145  http://tizen.org/privilege/bluetooth.health
12146             </privilege>
12147             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
12148  var healthProfileHandler = adapter.getBluetoothProfileHandler(&quot;HEALTH&quot;);
12149
12150  var channelCallback = {
12151      onmessage: function(data) {
12152          console.log(&quot;data is received&quot;)
12153      },
12154      onclose: function() {
12155          console.log(&quot;channel is closed&quot;);
12156      }
12157  };
12158
12159  function healthRegisterSuccess(app) {
12160      console.log(&quot;Registered application: &quot; + app.name);
12161      app.onconnect = function(channel) {;
12162          console.log(&quot;Health device is connected&quot;);
12163          channel.setListener(channelCallback);
12164      }
12165  }
12166
12167  function healthRegisterError(e) {
12168      console.log(&quot;Failed to register application: &quot; + e.message);
12169  };
12170
12171  healthProfileHandler.registerSinkApplication(4100, &quot;testSinkApp&quot;, healthRegisterSuccess, healthRegisterError);
12172  </Code>
12173         </descriptive>
12174         <Type type="void"/>
12175         <ArgumentList>
12176           <Argument name="listener">
12177             <descriptive>
12178                 <description><p>
12179  The event listener of Bluetooth health channel.
12180                 </p></description>
12181             </descriptive>
12182             <Type name="BluetoothHealthChannelChangeCallback"/>
12183           </Argument>
12184         </ArgumentList>
12185         <Raises>
12186           <RaiseException name="WebAPIException">
12187             <descriptive>
12188                 <description><p>
12189  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
12190                 </p></description>
12191                 <description><p>
12192  with error type SecurityError, if the application does not have the privilege to call this method.
12193                 </p></description>
12194                 <description><p>
12195  with error type UnknownError, if any other error occurs.
12196                 </p></description>
12197             </descriptive>
12198           </RaiseException>
12199         </Raises>
12200       </Operation>
12201       <Operation name="unsetListener" id="::Bluetooth::BluetoothHealthChannel::unsetListener">
12202         <webidl>        void unsetListener() raises(<ref>WebAPIException</ref>);</webidl>
12203         <descriptive>
12204             <brief>
12205  Unsets the listener, so stop receiving notifications.
12206             </brief>
12207             <version>
12208  2.2
12209             </version>
12210             <privilegelevel>
12211  public
12212             </privilegelevel>
12213             <privilege>
12214  http://tizen.org/privilege/bluetooth.health
12215             </privilege>
12216             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
12217  var healthProfileHandler = adapter.getBluetoothProfileHandler(&quot;HEALTH&quot;);
12218  var connectedChannel = null;
12219
12220  var channelCallback = {
12221      onmessage: function(data) {
12222          console.log(&quot;data is received&quot;)
12223      },
12224      onclose: function() {
12225          console.log(&quot;channel is closed&quot;);
12226          connectedChannel.unsetListener();
12227      }
12228  };
12229
12230  function healthRegisterSuccess(app) {
12231      console.log(&quot;Registered application: &quot; + app.name);
12232      app.onconnect = function(channel) {;
12233          console.log(&quot;Health device is connected&quot;);
12234          connectedChannel = channel;
12235          connectedChannel.setListener(channelCallback);
12236      }
12237  }
12238
12239  function healthRegisterError(e) {
12240      console.log(&quot;Failed to register application: &quot; + e.message);
12241  };
12242
12243  healthProfileHandler.registerSinkApplication(4100, &quot;testSinkApp&quot;, healthRegisterSuccess, healthRegisterError);
12244  </Code>
12245         </descriptive>
12246         <Type type="void"/>
12247         <ArgumentList/>
12248         <Raises>
12249           <RaiseException name="WebAPIException">
12250             <descriptive>
12251                 <description><p>
12252  with error type SecurityError, if the application does not have the privilege to call this method.
12253                 </p></description>
12254                 <description><p>
12255  with error type UnknownError, if any other error occurs.
12256                 </p></description>
12257             </descriptive>
12258           </RaiseException>
12259         </Raises>
12260       </Operation>
12261     </Interface>
12262     <Interface name="BluetoothAdapterChangeCallback" id="::Bluetooth::BluetoothAdapterChangeCallback">
12263       <webidl>    [Callback, NoInterfaceObject] interface BluetoothAdapterChangeCallback {
12264         void onstatechanged(boolean powered);
12265         void onnamechanged(DOMString name);
12266         void onvisibilitychanged(boolean visible);
12267     };</webidl>
12268       <descriptive>
12269           <brief>
12270  This interface specifies a set of methods to be invoked when the changes of Bluetooth adapter occur.
12271           </brief>
12272           <version>
12273  2.2
12274           </version>
12275       </descriptive>
12276       <ExtendedAttributeList>
12277         <ExtendedAttribute name="Callback">
12278           <webidl>Callback</webidl>
12279         </ExtendedAttribute>
12280         <ExtendedAttribute name="NoInterfaceObject">
12281           <webidl> NoInterfaceObject</webidl>
12282         </ExtendedAttribute>
12283       </ExtendedAttributeList>
12284       <Operation name="onstatechanged" id="::Bluetooth::BluetoothAdapterChangeCallback::onstatechanged">
12285         <webidl>        void onstatechanged(boolean powered);</webidl>
12286         <descriptive>
12287             <brief>
12288  The method to be invoked when the power state is changed.
12289             </brief>
12290             <version>
12291  2.2
12292             </version>
12293         </descriptive>
12294         <Type type="void"/>
12295         <ArgumentList>
12296           <Argument name="powered">
12297             <descriptive>
12298                 <description><p>
12299  The power state of local Bluetooth: <var>true</var> means power-on, <var>false</var> means power-off.
12300                 </p></description>
12301             </descriptive>
12302             <Type type="boolean"/>
12303           </Argument>
12304         </ArgumentList>
12305       </Operation>
12306       <Operation name="onnamechanged" id="::Bluetooth::BluetoothAdapterChangeCallback::onnamechanged">
12307         <webidl>        void onnamechanged(DOMString name);</webidl>
12308         <descriptive>
12309             <brief>
12310  The method to be invoked when the name is changed.
12311             </brief>
12312             <version>
12313  2.2
12314             </version>
12315         </descriptive>
12316         <Type type="void"/>
12317         <ArgumentList>
12318           <Argument name="name">
12319             <descriptive>
12320                 <description><p>
12321  The name of local Bluetooth.
12322                 </p></description>
12323             </descriptive>
12324             <Type type="DOMString"/>
12325           </Argument>
12326         </ArgumentList>
12327       </Operation>
12328       <Operation name="onvisibilitychanged" id="::Bluetooth::BluetoothAdapterChangeCallback::onvisibilitychanged">
12329         <webidl>        void onvisibilitychanged(boolean visible);</webidl>
12330         <descriptive>
12331             <brief>
12332  The method to be invoked when the visibility is changed.
12333             </brief>
12334             <version>
12335  2.2
12336             </version>
12337         </descriptive>
12338         <Type type="void"/>
12339         <ArgumentList>
12340           <Argument name="visible">
12341             <descriptive>
12342                 <description><p>
12343  The visibility of local Bluetooth: <var>true</var> means that local Bluetooth is discoverable, <var>false</var> means that local Bluetooth is hidden from other devices.
12344                 </p></description>
12345             </descriptive>
12346             <Type type="boolean"/>
12347           </Argument>
12348         </ArgumentList>
12349       </Operation>
12350     </Interface>
12351     <Interface name="BluetoothDeviceSuccessCallback" id="::Bluetooth::BluetoothDeviceSuccessCallback">
12352       <webidl>    [Callback=FunctionOnly, NoInterfaceObject] interface BluetoothDeviceSuccessCallback {
12353         void onsuccess(<ref>BluetoothDevice</ref> device);
12354     };</webidl>
12355       <descriptive>
12356           <brief>
12357  This interface implements the success callback <em>BluetoothAdapter.getDevice() </em>and <em>BluetoothAdapter.createBonding()</em>.
12358           </brief>
12359           <version>
12360  1.0
12361           </version>
12362       </descriptive>
12363       <ExtendedAttributeList>
12364         <ExtendedAttribute name="Callback" value="FunctionOnly">
12365           <webidl>Callback</webidl>
12366         </ExtendedAttribute>
12367         <ExtendedAttribute name="NoInterfaceObject">
12368           <webidl> NoInterfaceObject</webidl>
12369         </ExtendedAttribute>
12370       </ExtendedAttributeList>
12371       <Operation name="onsuccess" id="::Bluetooth::BluetoothDeviceSuccessCallback::onsuccess">
12372         <webidl>        void onsuccess(<ref>BluetoothDevice</ref> device);</webidl>
12373         <descriptive>
12374             <brief>
12375  The method to be invoked on success.
12376             </brief>
12377             <version>
12378  1.0
12379             </version>
12380         </descriptive>
12381         <Type type="void"/>
12382         <ArgumentList>
12383           <Argument name="device">
12384             <descriptive>
12385                 <description><p>
12386  The BluetoothDevice object.
12387                 </p></description>
12388             </descriptive>
12389             <Type name="BluetoothDevice"/>
12390           </Argument>
12391         </ArgumentList>
12392       </Operation>
12393     </Interface>
12394     <Interface name="BluetoothDeviceArraySuccessCallback" id="::Bluetooth::BluetoothDeviceArraySuccessCallback">
12395       <webidl>    [Callback=FunctionOnly, NoInterfaceObject] interface BluetoothDeviceArraySuccessCallback {
12396         void onsuccess(<ref>BluetoothDevice</ref>[] devices);
12397     };</webidl>
12398       <descriptive>
12399           <brief>
12400  The success callback for <em>BluetoothAdapter.getKnownDevices()</em>.
12401           </brief>
12402           <version>
12403  1.0
12404           </version>
12405       </descriptive>
12406       <ExtendedAttributeList>
12407         <ExtendedAttribute name="Callback" value="FunctionOnly">
12408           <webidl>Callback</webidl>
12409         </ExtendedAttribute>
12410         <ExtendedAttribute name="NoInterfaceObject">
12411           <webidl> NoInterfaceObject</webidl>
12412         </ExtendedAttribute>
12413       </ExtendedAttributeList>
12414       <Operation name="onsuccess" id="::Bluetooth::BluetoothDeviceArraySuccessCallback::onsuccess">
12415         <webidl>        void onsuccess(<ref>BluetoothDevice</ref>[] devices);</webidl>
12416         <descriptive>
12417             <brief>
12418  The method to be invoked when device information is ready.
12419             </brief>
12420             <version>
12421  1.0
12422             </version>
12423         </descriptive>
12424         <Type type="void"/>
12425         <ArgumentList>
12426           <Argument name="devices">
12427             <descriptive>
12428                 <description><p>
12429  List of devices known to local Bluetooth adapter. Each element is a BluetoothDevice.
12430                 </p></description>
12431             </descriptive>
12432             <Type type="array">
12433               <Type name="BluetoothDevice"/>
12434             </Type>
12435           </Argument>
12436         </ArgumentList>
12437       </Operation>
12438     </Interface>
12439     <Interface name="BluetoothDiscoverDevicesSuccessCallback" id="::Bluetooth::BluetoothDiscoverDevicesSuccessCallback">
12440       <webidl>    [Callback, NoInterfaceObject] interface BluetoothDiscoverDevicesSuccessCallback {
12441         void onstarted();
12442         void ondevicefound(<ref>BluetoothDevice</ref> device);
12443         void ondevicedisappeared(<ref>BluetoothAddress</ref> address);
12444         void onfinished(<ref>BluetoothDevice</ref>[] foundDevices);
12445     };</webidl>
12446       <descriptive>
12447           <brief>
12448  The success callback for <em>BluetoothAdapter.discoverDevices()</em>.
12449           </brief>
12450           <version>
12451  1.0
12452           </version>
12453       </descriptive>
12454       <ExtendedAttributeList>
12455         <ExtendedAttribute name="Callback">
12456           <webidl>Callback</webidl>
12457         </ExtendedAttribute>
12458         <ExtendedAttribute name="NoInterfaceObject">
12459           <webidl> NoInterfaceObject</webidl>
12460         </ExtendedAttribute>
12461       </ExtendedAttributeList>
12462       <Operation name="onstarted" id="::Bluetooth::BluetoothDiscoverDevicesSuccessCallback::onstarted">
12463         <webidl>        void onstarted();</webidl>
12464         <descriptive>
12465             <brief>
12466  The method to be invoked at the beginning of a device discovery process for finding the nearby Bluetooth device.
12467             </brief>
12468             <version>
12469  1.0
12470             </version>
12471         </descriptive>
12472         <Type type="void"/>
12473         <ArgumentList/>
12474       </Operation>
12475       <Operation name="ondevicefound" id="::Bluetooth::BluetoothDiscoverDevicesSuccessCallback::ondevicefound">
12476         <webidl>        void ondevicefound(<ref>BluetoothDevice</ref> device);</webidl>
12477         <descriptive>
12478             <brief>
12479  The method to be invoked when a new device is discovered in the process of inquiry/discovery.
12480             </brief>
12481             <version>
12482  1.0
12483             </version>
12484         </descriptive>
12485         <Type type="void"/>
12486         <ArgumentList>
12487           <Argument name="device">
12488             <descriptive>
12489                 <description><p>
12490  The found device.
12491                 </p></description>
12492             </descriptive>
12493             <Type name="BluetoothDevice"/>
12494           </Argument>
12495         </ArgumentList>
12496       </Operation>
12497       <Operation name="ondevicedisappeared" id="::Bluetooth::BluetoothDiscoverDevicesSuccessCallback::ondevicedisappeared">
12498         <webidl>        void ondevicedisappeared(<ref>BluetoothAddress</ref> address);</webidl>
12499         <descriptive>
12500             <brief>
12501  The method to be invoked when a device is lost from proximity.
12502 After that, this device is no longer visible.
12503             </brief>
12504             <version>
12505  1.0
12506             </version>
12507         </descriptive>
12508         <Type type="void"/>
12509         <ArgumentList>
12510           <Argument name="address">
12511             <descriptive>
12512                 <description><p>
12513  The address of the device that is no longer in range or visible.
12514                 </p></description>
12515             </descriptive>
12516             <Type name="BluetoothAddress"/>
12517           </Argument>
12518         </ArgumentList>
12519       </Operation>
12520       <Operation name="onfinished" id="::Bluetooth::BluetoothDiscoverDevicesSuccessCallback::onfinished">
12521         <webidl>        void onfinished(<ref>BluetoothDevice</ref>[] foundDevices);</webidl>
12522         <descriptive>
12523             <brief>
12524  The method to be invoked when the device discovery process has finished.
12525             </brief>
12526             <version>
12527  1.0
12528             </version>
12529         </descriptive>
12530         <Type type="void"/>
12531         <ArgumentList>
12532           <Argument name="foundDevices">
12533             <descriptive>
12534                 <description><p>
12535  The array of devices found in this discovery session.                         </p></description>
12536             </descriptive>
12537             <Type type="array">
12538               <Type name="BluetoothDevice"/>
12539             </Type>
12540           </Argument>
12541         </ArgumentList>
12542       </Operation>
12543     </Interface>
12544     <Interface name="BluetoothSocketSuccessCallback" id="::Bluetooth::BluetoothSocketSuccessCallback">
12545       <webidl>    [Callback=FunctionOnly, NoInterfaceObject] interface BluetoothSocketSuccessCallback {
12546         void onsuccess(<ref>BluetoothSocket</ref> socket);
12547     };</webidl>
12548       <descriptive>
12549           <brief>
12550  The success method for <em>BluetoothDevice.connectToServiceByUUID()</em>.
12551           </brief>
12552           <version>
12553  1.0
12554           </version>
12555       </descriptive>
12556       <ExtendedAttributeList>
12557         <ExtendedAttribute name="Callback" value="FunctionOnly">
12558           <webidl>Callback</webidl>
12559         </ExtendedAttribute>
12560         <ExtendedAttribute name="NoInterfaceObject">
12561           <webidl> NoInterfaceObject</webidl>
12562         </ExtendedAttribute>
12563       </ExtendedAttributeList>
12564       <Operation name="onsuccess" id="::Bluetooth::BluetoothSocketSuccessCallback::onsuccess">
12565         <webidl>        void onsuccess(<ref>BluetoothSocket</ref> socket);</webidl>
12566         <descriptive>
12567             <brief>
12568  The method to be invoked when the connection to a service is ready.
12569             </brief>
12570             <version>
12571  1.0
12572             </version>
12573         </descriptive>
12574         <Type type="void"/>
12575         <ArgumentList>
12576           <Argument name="socket">
12577             <descriptive>
12578                 <description><p>
12579  The socket to connect to the specified service on a remote device.
12580                 </p></description>
12581             </descriptive>
12582             <Type name="BluetoothSocket"/>
12583           </Argument>
12584         </ArgumentList>
12585       </Operation>
12586     </Interface>
12587     <Interface name="BluetoothServiceSuccessCallback" id="::Bluetooth::BluetoothServiceSuccessCallback">
12588       <webidl>    [Callback=FunctionOnly, NoInterfaceObject] interface BluetoothServiceSuccessCallback {
12589         void onsuccess(<ref>BluetoothServiceHandler</ref> handler);
12590     };</webidl>
12591       <descriptive>
12592           <brief>
12593  This interface implements the success callback for <em>BluetoothAdapter.registerRFCOMMServiceByUUID()</em>.
12594           </brief>
12595           <version>
12596  1.0
12597           </version>
12598       </descriptive>
12599       <ExtendedAttributeList>
12600         <ExtendedAttribute name="Callback" value="FunctionOnly">
12601           <webidl>Callback</webidl>
12602         </ExtendedAttribute>
12603         <ExtendedAttribute name="NoInterfaceObject">
12604           <webidl> NoInterfaceObject</webidl>
12605         </ExtendedAttribute>
12606       </ExtendedAttributeList>
12607       <Operation name="onsuccess" id="::Bluetooth::BluetoothServiceSuccessCallback::onsuccess">
12608         <webidl>        void onsuccess(<ref>BluetoothServiceHandler</ref> handler);</webidl>
12609         <descriptive>
12610             <brief>
12611  The method to be invoked when registering a service with the local device is successful.
12612             </brief>
12613             <version>
12614  1.0
12615             </version>
12616         </descriptive>
12617         <Type type="void"/>
12618         <ArgumentList>
12619           <Argument name="handler">
12620             <descriptive>
12621                 <description><p>
12622  Bluetooth service handler.
12623                 </p></description>
12624             </descriptive>
12625             <Type name="BluetoothServiceHandler"/>
12626           </Argument>
12627         </ArgumentList>
12628       </Operation>
12629     </Interface>
12630     <Interface name="BluetoothHealthApplicationSuccessCallback" id="::Bluetooth::BluetoothHealthApplicationSuccessCallback">
12631       <webidl>    [Callback=FunctionOnly, NoInterfaceObject] interface BluetoothHealthApplicationSuccessCallback {
12632         void onsuccess(<ref>BluetoothHealthApplication</ref> application);
12633     };</webidl>
12634       <descriptive>
12635           <brief>
12636  The success method for <em>BluetoothHealthProfileHandler.registerSinkApplication()</em>.
12637           </brief>
12638           <version>
12639  2.2
12640           </version>
12641       </descriptive>
12642       <ExtendedAttributeList>
12643         <ExtendedAttribute name="Callback" value="FunctionOnly">
12644           <webidl>Callback</webidl>
12645         </ExtendedAttribute>
12646         <ExtendedAttribute name="NoInterfaceObject">
12647           <webidl> NoInterfaceObject</webidl>
12648         </ExtendedAttribute>
12649       </ExtendedAttributeList>
12650       <Operation name="onsuccess" id="::Bluetooth::BluetoothHealthApplicationSuccessCallback::onsuccess">
12651         <webidl>        void onsuccess(<ref>BluetoothHealthApplication</ref> application);</webidl>
12652         <descriptive>
12653             <brief>
12654  The method to be invoked when the application is registered successfully.
12655             </brief>
12656             <version>
12657  2.2
12658             </version>
12659         </descriptive>
12660         <Type type="void"/>
12661         <ArgumentList>
12662           <Argument name="application">
12663             <descriptive>
12664                 <description><p>
12665  The registered health application.
12666                 </p></description>
12667             </descriptive>
12668             <Type name="BluetoothHealthApplication"/>
12669           </Argument>
12670         </ArgumentList>
12671       </Operation>
12672     </Interface>
12673     <Interface name="BluetoothHealthChannelSuccessCallback" id="::Bluetooth::BluetoothHealthChannelSuccessCallback">
12674       <webidl>    [Callback=FunctionOnly, NoInterfaceObject] interface BluetoothHealthChannelSuccessCallback {
12675         void onsuccess(<ref>BluetoothHealthChannel</ref> channel);
12676     };</webidl>
12677       <descriptive>
12678           <brief>
12679  The success method for <em>BluetoothHealthProfileHandler.connectToSource()</em> and the event callback for <em>BluetoothHealthApplication.onconnect</em>.
12680           </brief>
12681           <version>
12682  2.2
12683           </version>
12684       </descriptive>
12685       <ExtendedAttributeList>
12686         <ExtendedAttribute name="Callback" value="FunctionOnly">
12687           <webidl>Callback</webidl>
12688         </ExtendedAttribute>
12689         <ExtendedAttribute name="NoInterfaceObject">
12690           <webidl> NoInterfaceObject</webidl>
12691         </ExtendedAttribute>
12692       </ExtendedAttributeList>
12693       <Operation name="onsuccess" id="::Bluetooth::BluetoothHealthChannelSuccessCallback::onsuccess">
12694         <webidl>        void onsuccess(<ref>BluetoothHealthChannel</ref> channel);</webidl>
12695         <descriptive>
12696             <brief>
12697  The method to be invoked when a connection is established.
12698             </brief>
12699             <version>
12700  2.2
12701             </version>
12702         </descriptive>
12703         <Type type="void"/>
12704         <ArgumentList>
12705           <Argument name="channel">
12706             <descriptive>
12707                 <description><p>
12708  The connected health channel.
12709                 </p></description>
12710             </descriptive>
12711             <Type name="BluetoothHealthChannel"/>
12712           </Argument>
12713         </ArgumentList>
12714       </Operation>
12715     </Interface>
12716     <Interface name="BluetoothHealthChannelChangeCallback" id="::Bluetooth::BluetoothHealthChannelChangeCallback">
12717       <webidl>    [Callback, NoInterfaceObject] interface BluetoothHealthChannelChangeCallback {
12718         void onmessage(byte[] data);
12719                 
12720         void onclose(); 
12721     };</webidl>
12722       <descriptive>
12723           <brief>
12724  This interface specifies a set of methods to be invoked when the changes of heath channel occur.
12725           </brief>
12726           <version>
12727  2.2
12728           </version>
12729       </descriptive>
12730       <ExtendedAttributeList>
12731         <ExtendedAttribute name="Callback">
12732           <webidl>Callback</webidl>
12733         </ExtendedAttribute>
12734         <ExtendedAttribute name="NoInterfaceObject">
12735           <webidl> NoInterfaceObject</webidl>
12736         </ExtendedAttribute>
12737       </ExtendedAttributeList>
12738       <Operation name="onmessage" id="::Bluetooth::BluetoothHealthChannelChangeCallback::onmessage">
12739         <webidl>        void onmessage(byte[] data);</webidl>
12740         <descriptive>
12741             <brief>
12742  The method to be invoked when the message is received.
12743             </brief>
12744             <version>
12745  2.2
12746             </version>
12747         </descriptive>
12748         <Type type="void"/>
12749         <ArgumentList>
12750           <Argument name="data">
12751             <descriptive>
12752                 <description><p>
12753  The received data.
12754                 </p></description>
12755             </descriptive>
12756             <Type type="array">
12757               <Type type="byte"/>
12758             </Type>
12759           </Argument>
12760         </ArgumentList>
12761       </Operation>
12762       <Operation name="onclose" id="::Bluetooth::BluetoothHealthChannelChangeCallback::onclose">
12763         <webidl>        void onclose();</webidl>
12764         <descriptive>
12765             <brief>
12766  The method to be invoked when the health channel is closed.
12767             </brief>
12768             <version>
12769  2.2
12770             </version>
12771         </descriptive>
12772         <Type type="void"/>
12773         <ArgumentList/>
12774       </Operation>
12775     </Interface>
12776   </Module>
12777   <Module name="Bookmark" id="::Bookmark">
12778     <webidl>module Bookmark {&#13;
12779 &#13;
12780   typedef (<ref>BookmarkItem</ref> or <ref>BookmarkFolder</ref>) Bookmark;&#13;
12781 &#13;
12782 &#13;
12783   [NoInterfaceObject] interface BookmarkManagerObject {&#13;
12784     readonly attribute <ref>BookmarkManager</ref> bookmark;&#13;
12785   };&#13;
12786   <ref>Tizen</ref> implements <ref>BookmarkManagerObject</ref>;&#13;
12787 &#13;
12788 &#13;
12789   [NoInterfaceObject] interface BookmarkManager {&#13;
12790 &#13;
12791     <ref>Bookmark</ref>[] get(optional <ref>BookmarkFolder</ref>? parentFolder, optional boolean? recursive) raises(<ref>WebAPIException</ref>);&#13;
12792 &#13;
12793     void add(<ref>Bookmark</ref> bookmark, optional <ref>BookmarkFolder</ref>? parentFolder) raises(<ref>WebAPIException</ref>);&#13;
12794 &#13;
12795     void remove(optional <ref>Bookmark</ref>? bookmark) raises(<ref>WebAPIException</ref>);&#13;
12796 &#13;
12797   };&#13;
12798 &#13;
12799 &#13;
12800   [Constructor(DOMString title, DOMString url)]&#13;
12801 &#13;
12802   interface BookmarkItem {&#13;
12803 &#13;
12804     readonly attribute <ref>BookmarkFolder</ref>? parent;&#13;
12805 &#13;
12806     readonly attribute DOMString title;&#13;
12807 &#13;
12808     readonly attribute DOMString url;&#13;
12809 &#13;
12810   };&#13;
12811 &#13;
12812   [Constructor(DOMString title)]&#13;
12813 &#13;
12814   interface BookmarkFolder {&#13;
12815 &#13;
12816     readonly attribute <ref>BookmarkFolder</ref>? parent;&#13;
12817 &#13;
12818     readonly attribute DOMString title;&#13;
12819 &#13;
12820   };&#13;
12821 };</webidl>
12822     <descriptive>
12823         <brief>
12824  This API provides interfaces and methods for accessing Bookmark.
12825 This API provides functionality to get, add, and remove bookmarks.
12826         </brief>
12827        <description>
12828         <p>
12829 For more information on the Bookmark features, see <a href="../../org.tizen.web.appprogramming/html/guide/social_guide/bookmark.htm">Bookmark Guide</a>. 
12830         </p>
12831        </description>
12832         <version>
12833  2.1
12834         </version>
12835     </descriptive>
12836     <Typedef name="Bookmark" id="::Bookmark::Bookmark">
12837       <webidl>  typedef (<ref>BookmarkItem</ref> or <ref>BookmarkFolder</ref>) Bookmark;</webidl>
12838       <descriptive>
12839           <brief>
12840  A bookmark, which could be either a <em>BookmarkItem </em>or a <em>BookmarkFolder</em>.
12841           </brief>
12842           <version>
12843  2.1
12844           </version>
12845       </descriptive>
12846       <Type type="union">
12847         <Type name="BookmarkItem"/>
12848         <Type name="BookmarkFolder"/>
12849       </Type>
12850     </Typedef>
12851     <Interface name="BookmarkManagerObject" id="::Bookmark::BookmarkManagerObject">
12852       <webidl>  [NoInterfaceObject] interface BookmarkManagerObject {&#13;
12853     readonly attribute <ref>BookmarkManager</ref> bookmark;&#13;
12854   };</webidl>
12855       <descriptive>
12856           <brief>
12857  Defines what is instantiated by the Tizen object from the Tizen Platform.
12858           </brief>
12859          <description>
12860           <p>
12861 There will be a <em>tizen.bookmark </em>object that allows to access the functionality of the Bookmark API.
12862           </p>
12863          </description>
12864           <version>
12865  2.1
12866           </version>
12867       </descriptive>
12868       <ExtendedAttributeList>
12869         <ExtendedAttribute name="NoInterfaceObject">
12870           <webidl>NoInterfaceObject</webidl>
12871         </ExtendedAttribute>
12872       </ExtendedAttributeList>
12873       <Attribute readonly="readonly" name="bookmark" id="::Bookmark::BookmarkManagerObject::bookmark">
12874         <webidl>    readonly attribute <ref>BookmarkManager</ref> bookmark;</webidl>
12875         <Type name="BookmarkManager"/>
12876       </Attribute>
12877     </Interface>
12878     <Implements name1="Tizen" name2="BookmarkManagerObject">
12879       <webidl>  <ref>Tizen</ref> implements <ref>BookmarkManagerObject</ref>;</webidl>
12880     </Implements>
12881     <Interface name="BookmarkManager" id="::Bookmark::BookmarkManager">
12882       <webidl>  [NoInterfaceObject] interface BookmarkManager {&#13;
12883 &#13;
12884     <ref>Bookmark</ref>[] get(optional <ref>BookmarkFolder</ref>? parentFolder, optional boolean? recursive) raises(<ref>WebAPIException</ref>);&#13;
12885 &#13;
12886     void add(<ref>Bookmark</ref> bookmark, optional <ref>BookmarkFolder</ref>? parentFolder) raises(<ref>WebAPIException</ref>);&#13;
12887 &#13;
12888     void remove(optional <ref>Bookmark</ref>? bookmark) raises(<ref>WebAPIException</ref>);&#13;
12889 &#13;
12890   };</webidl>
12891       <descriptive>
12892           <brief>
12893  This interface provides access to the bookmark folder and bookmark item.
12894           </brief>
12895          <description>
12896           <p>
12897 It provides access to the API functionalities through the <em>tizen.bookmark </em>interface.
12898           </p>
12899          </description>
12900           <version>
12901  2.1
12902           </version>
12903       </descriptive>
12904       <ExtendedAttributeList>
12905         <ExtendedAttribute name="NoInterfaceObject">
12906           <webidl>NoInterfaceObject</webidl>
12907         </ExtendedAttribute>
12908       </ExtendedAttributeList>
12909       <Operation name="get" id="::Bookmark::BookmarkManager::get">
12910         <webidl>    <ref>Bookmark</ref>[] get(optional <ref>BookmarkFolder</ref>? parentFolder, optional boolean? recursive) raises(<ref>WebAPIException</ref>);</webidl>
12911         <descriptive>
12912             <brief>
12913  Gets all bookmark items and bookmark folders.
12914             </brief>
12915            <description>
12916             <p>
12917 If no parentFolder is passed, or the parentFolder contains <var>null</var>, it is considered as the default bookmark folder(The root bookmark folder).
12918 In this case, the return will contain bookmarks under the root bookmark folder.
12919             </p>
12920            </description>
12921             <version>
12922  2.1
12923             </version>
12924             <privilege>
12925  http://tizen.org/privilege/bookmark.read
12926             </privilege>
12927             <privilegelevel>
12928  platform
12929             </privilegelevel>
12930             <Code> try {
12931   // retrieve bookmarks from the root bookmark folder recursively
12932   var allBookmarks = tizen.bookmark.get(null, true);
12933  } catch (err) {
12934   console.log (err.name +&quot;: &quot; + err.message);
12935  }
12936  </Code>
12937         </descriptive>
12938         <Type type="array">
12939           <descriptive>
12940               <description><p>
12941  Bookmark[] Array of Bookmarks.
12942               </p></description>
12943           </descriptive>
12944           <Type name="Bookmark"/>
12945         </Type>
12946         <ArgumentList>
12947           <Argument optional="optional" name="parentFolder">
12948             <descriptive>
12949                 <description><p>
12950  The parent bookmark folder to retrieve the result bookmarks.
12951                 </p></description>
12952             </descriptive>
12953             <Type name="BookmarkFolder" nullable="nullable"/>
12954           </Argument>
12955           <Argument optional="optional" name="recursive">
12956             <descriptive>
12957                 <description><p>
12958  The flag indicating whether sub-bookmarks are also retrieved recursively or not<br/> (The default value is <em>false</em>).
12959                 </p></description>
12960             </descriptive>
12961             <Type type="boolean" nullable="nullable"/>
12962           </Argument>
12963         </ArgumentList>
12964         <Raises>
12965           <RaiseException name="WebAPIException">
12966             <descriptive>
12967                 <description><p>
12968  with error type NotFoundError, if the parentFolder parameter isn't found in bookmark database.
12969                 </p></description>
12970                 <description><p>
12971  with error type TypeMismatchError, if an input parameter is not compatible with the expected type for that parameter.
12972                 </p></description>
12973                 <description><p>
12974  with error type SecurityError, if the application does not have the privilege to call this method.
12975                 </p></description>
12976                 <description><p>
12977  with error type UnknownError, if any other error occurs.
12978                 </p></description>
12979             </descriptive>
12980           </RaiseException>
12981         </Raises>
12982       </Operation>
12983       <Operation name="add" id="::Bookmark::BookmarkManager::add">
12984         <webidl>    void add(<ref>Bookmark</ref> bookmark, optional <ref>BookmarkFolder</ref>? parentFolder) raises(<ref>WebAPIException</ref>);</webidl>
12985         <descriptive>
12986             <brief>
12987  Adds a bookmark item or a bookmark folder.
12988             </brief>
12989            <description>
12990             <p>
12991 If no parentFolder is passed, or the parentFolder contains <var>null</var>, it is considered as the default bookmark folder(The root bookmark folder).
12992 In this case, the bookmark is added under the root bookmark folder.
12993             </p>
12994            </description>
12995             <version>
12996  2.1
12997             </version>
12998             <privilege>
12999  http://tizen.org/privilege/bookmark.write
13000             </privilege>
13001             <privilegelevel>
13002  platform
13003             </privilegelevel>
13004             <Code> try {
13005  // add a bookmark item to root bookmark folder.
13006   tizen.bookmark.add(new tizen.BookmarkItem(&quot;tizen&quot;, &quot;https://www.tizen.org&quot;));
13007  } catch (err) {
13008   console.log (err.name +&quot;: &quot; + err.message);
13009  }
13010  </Code>
13011         </descriptive>
13012         <Type type="void"/>
13013         <ArgumentList>
13014           <Argument name="bookmark">
13015             <descriptive>
13016                 <description><p>
13017  The bookmark to be added.
13018                 </p></description>
13019             </descriptive>
13020             <Type name="Bookmark"/>
13021           </Argument>
13022           <Argument optional="optional" name="parentFolder">
13023             <descriptive>
13024                 <description><p>
13025  The parent folder of a bookmark to be added.
13026                 </p></description>
13027             </descriptive>
13028             <Type name="BookmarkFolder" nullable="nullable"/>
13029           </Argument>
13030         </ArgumentList>
13031         <Raises>
13032           <RaiseException name="WebAPIException">
13033             <descriptive>
13034                 <description><p>
13035  with error type NotFoundError, if a parentFolder parameter isn't found in bookmark database.
13036                 </p></description>
13037                 <description><p>
13038  with error type InvalidValuesError, if any of the input parameters contain an invalid value, or a bookmark parameter is either a bookmark item whose url has already existed in bookmark database or a bookmark folder whose title has already existed under the same parent folder.
13039                 </p></description>
13040                 <description><p>
13041  with error type TypeMismatchError, if an input parameter is not compatible with the expected type for that parameter.
13042                 </p></description>
13043                 <description><p>
13044  with error type SecurityError, if the application does not have the privilege to call this method.
13045                 </p></description>
13046                 <description><p>
13047  with error type UnknownError, if any other error occurs.
13048                 </p></description>
13049             </descriptive>
13050           </RaiseException>
13051         </Raises>
13052       </Operation>
13053       <Operation name="remove" id="::Bookmark::BookmarkManager::remove">
13054         <webidl>    void remove(optional <ref>Bookmark</ref>? bookmark) raises(<ref>WebAPIException</ref>);</webidl>
13055         <descriptive>
13056             <brief>
13057  Removes a bookmark item or a bookmark folder.
13058             </brief>
13059            <description>
13060             <p>
13061 If the bookmark is a BookmarkFolder type, all the bookmark items and bookmark folders under the specified bookmark folder are going to be removed.<br/>If no bookmark is passed, or the bookmark contains <var>null</var>, it is considered as the default bookmark folder(The root bookmark folder).
13062 In this case, all the bookmarks will be removed.
13063             </p>
13064            </description>
13065             <version>
13066  2.1
13067             </version>
13068             <privilege>
13069  http://tizen.org/privilege/bookmark.write
13070             </privilege>
13071             <privilegelevel>
13072  platform
13073             </privilegelevel>
13074             <Code> try {
13075  // remove all the bookmark folders and items
13076   tizen.bookmark.remove();
13077  } catch (err) {
13078   console.log (err.name +&quot;: &quot; + err.message);
13079  }
13080  </Code>
13081         </descriptive>
13082         <Type type="void"/>
13083         <ArgumentList>
13084           <Argument optional="optional" name="bookmark">
13085             <descriptive>
13086                 <description><p>
13087  The bookmark to be removed.
13088                 </p></description>
13089             </descriptive>
13090             <Type name="Bookmark" nullable="nullable"/>
13091           </Argument>
13092         </ArgumentList>
13093         <Raises>
13094           <RaiseException name="WebAPIException">
13095             <descriptive>
13096                 <description><p>
13097  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
13098                 </p></description>
13099                 <description><p>
13100  with error type SecurityError, if the application does not have the privilege to call this method.
13101                 </p></description>
13102                 <description><p>
13103  with error type UnknownError, if any other error occurs.
13104                 </p></description>
13105             </descriptive>
13106           </RaiseException>
13107         </Raises>
13108       </Operation>
13109     </Interface>
13110     <Interface name="BookmarkItem" id="::Bookmark::BookmarkItem">
13111       <webidl>  [Constructor(DOMString title, DOMString url)]&#13;
13112 &#13;
13113   interface BookmarkItem {&#13;
13114 &#13;
13115     readonly attribute <ref>BookmarkFolder</ref>? parent;&#13;
13116 &#13;
13117     readonly attribute DOMString title;&#13;
13118 &#13;
13119     readonly attribute DOMString url;&#13;
13120 &#13;
13121   };</webidl>
13122       <descriptive>
13123           <brief>
13124  This interface implements the <em>BookmarkItem </em>object.
13125           </brief>
13126           <version>
13127  2.1
13128           </version>
13129       </descriptive>
13130       <ExtendedAttributeList>
13131         <ExtendedAttribute name="Constructor">
13132           <webidl>Constructor(DOMString title, DOMString url)</webidl>
13133           <descriptive>
13134               <Code> try {
13135  // create a bookmark item
13136   var tizen = new tizen.BookmarkItem(&quot;tizen&quot;, &quot;https://www.tizen.org&quot;);
13137  } catch (err) {
13138   console.log (err.name +&quot;: &quot; + err.message);
13139  }
13140  </Code>
13141           </descriptive>
13142           <ArgumentList>
13143             <Argument name="title">
13144               <Type type="DOMString"/>
13145             </Argument>
13146             <Argument name="url">
13147               <Type type="DOMString"/>
13148             </Argument>
13149           </ArgumentList>
13150         </ExtendedAttribute>
13151       </ExtendedAttributeList>
13152       <Attribute readonly="readonly" name="parent" id="::Bookmark::BookmarkItem::parent">
13153         <webidl>    readonly attribute <ref>BookmarkFolder</ref>? parent;</webidl>
13154         <descriptive>
13155             <brief>
13156  The parent bookmark folder.
13157             </brief>
13158            <description>
13159             <p>
13160 This attribute is meaningful when this object is successfully added or retrieved.
13161 If this BookmarkItem is not added yet, its value is set to undefined.
13162             </p>
13163             <p>
13164 If the parent bookmark folder indicates the root bookmark folder, the value will be <var>null</var>.
13165             </p>
13166            </description>
13167             <version>
13168  2.1
13169             </version>
13170         </descriptive>
13171         <Type name="BookmarkFolder" nullable="nullable"/>
13172       </Attribute>
13173       <Attribute readonly="readonly" name="title" id="::Bookmark::BookmarkItem::title">
13174         <webidl>    readonly attribute DOMString title;</webidl>
13175         <descriptive>
13176             <brief>
13177  The title of the bookmark.
13178             </brief>
13179             <version>
13180  2.1
13181             </version>
13182         </descriptive>
13183         <Type type="DOMString"/>
13184       </Attribute>
13185       <Attribute readonly="readonly" name="url" id="::Bookmark::BookmarkItem::url">
13186         <webidl>    readonly attribute DOMString url;</webidl>
13187         <descriptive>
13188             <brief>
13189  The uri of the bookmark.
13190             </brief>
13191             <version>
13192  2.1
13193             </version>
13194         </descriptive>
13195         <Type type="DOMString"/>
13196       </Attribute>
13197     </Interface>
13198     <Interface name="BookmarkFolder" id="::Bookmark::BookmarkFolder">
13199       <webidl>  [Constructor(DOMString title)]&#13;
13200 &#13;
13201   interface BookmarkFolder {&#13;
13202 &#13;
13203     readonly attribute <ref>BookmarkFolder</ref>? parent;&#13;
13204 &#13;
13205     readonly attribute DOMString title;&#13;
13206 &#13;
13207   };</webidl>
13208       <descriptive>
13209           <brief>
13210  This interface implements the <em>BookmarkFolder </em>object.
13211           </brief>
13212           <version>
13213  2.1
13214           </version>
13215       </descriptive>
13216       <ExtendedAttributeList>
13217         <ExtendedAttribute name="Constructor">
13218           <webidl>Constructor(DOMString title)</webidl>
13219           <descriptive>
13220               <Code> try {
13221  // create a bookmark folder
13222   var folder = new tizen.BookmarkFolder(&quot;folder&quot;);
13223  } catch (err) {
13224   console.log (err.name +&quot;: &quot; + err.message);
13225  }
13226  </Code>
13227           </descriptive>
13228           <ArgumentList>
13229             <Argument name="title">
13230               <Type type="DOMString"/>
13231             </Argument>
13232           </ArgumentList>
13233         </ExtendedAttribute>
13234       </ExtendedAttributeList>
13235       <Attribute readonly="readonly" name="parent" id="::Bookmark::BookmarkFolder::parent">
13236         <webidl>    readonly attribute <ref>BookmarkFolder</ref>? parent;</webidl>
13237         <descriptive>
13238             <brief>
13239  The parent bookmark folder.
13240             </brief>
13241            <description>
13242             <p>
13243 This attribute is meaningful when this object is successfully added or retrieved.
13244 If this BookmarkFolder is not added yet, its value is set to undefined.
13245             </p>
13246             <p>
13247 If the parent bookmark folder indicates the root bookmark folder, the value will be <var>null</var>.
13248             </p>
13249            </description>
13250             <version>
13251  2.1
13252             </version>
13253         </descriptive>
13254         <Type name="BookmarkFolder" nullable="nullable"/>
13255       </Attribute>
13256       <Attribute readonly="readonly" name="title" id="::Bookmark::BookmarkFolder::title">
13257         <webidl>    readonly attribute DOMString title;</webidl>
13258         <descriptive>
13259             <brief>
13260  The title of the bookmark folder.
13261             </brief>
13262             <version>
13263  2.1
13264             </version>
13265         </descriptive>
13266         <Type type="DOMString"/>
13267       </Attribute>
13268     </Interface>
13269   </Module>
13270   <Module name="Calendar" id="::Calendar">
13271     <webidl>module Calendar {
13272   typedef DOMString CalendarId;
13273   
13274   typedef DOMString CalendarTaskId;
13275   
13276   typedef (<ref>CalendarEventId</ref> or <ref>CalendarTaskId</ref>) CalendarItemId;
13277   
13278   enum CalendarType { &quot;EVENT&quot;, &quot;TASK&quot; };
13279   
13280   enum CalendarTextFormat { &quot;ICALENDAR_20&quot;, &quot;VCALENDAR_10&quot; };
13281   
13282   enum AlarmMethod { &quot;SOUND&quot;, &quot;DISPLAY&quot; };
13283   
13284   
13285   enum RecurrenceRuleFrequency { &quot;DAILY&quot;, &quot;WEEKLY&quot;, &quot;MONTHLY&quot;, &quot;YEARLY&quot; };
13286   
13287   enum ByDayValue { &quot;MO&quot;, &quot;TU&quot;, &quot;WE&quot;, &quot;TH&quot;, &quot;FR&quot;, &quot;SA&quot;, &quot;SU&quot; };
13288   
13289   enum EventAvailability { &quot;BUSY&quot;, &quot;FREE&quot; };
13290   
13291   enum AttendeeType { &quot;INDIVIDUAL&quot;, &quot;GROUP&quot;, &quot;RESOURCE&quot;, &quot;ROOM&quot;, &quot;UNKNOWN&quot; };
13292   
13293   enum AttendeeStatus { &quot;PENDING&quot;, &quot;ACCEPTED&quot;, &quot;DECLINED&quot;, &quot;TENTATIVE&quot;, &quot;DELEGATED&quot;, &quot;COMPLETED&quot;, &quot;IN_PROCESS&quot; };
13294   
13295   enum AttendeeRole { &quot;REQ_PARTICIPANT&quot;, &quot;OPT_PARTICIPANT&quot;, &quot;NON_PARTICIPANT&quot;, &quot;CHAIR&quot; };
13296   
13297   enum CalendarItemPriority { &quot;HIGH&quot;, &quot;MEDIUM&quot;, &quot;LOW&quot; };
13298   
13299    enum CalendarItemVisibility { &quot;PUBLIC&quot;, &quot;PRIVATE&quot;, &quot;CONFIDENTIAL&quot; };
13300    
13301    enum CalendarItemStatus { &quot;TENTATIVE&quot;, &quot;CONFIRMED&quot;, &quot;CANCELLED&quot;, &quot;NEEDS_ACTION&quot;, &quot;IN_PROCESS&quot;, &quot;COMPLETED&quot; };
13302   
13303   [NoInterfaceObject] interface CalendarManagerObject{
13304     readonly attribute <ref>CalendarManager</ref> calendar; 
13305   };
13306   <ref>Tizen</ref> implements <ref>CalendarManagerObject</ref>;    
13307
13308   [NoInterfaceObject] interface CalendarManager {
13309     void getCalendars(<ref>CalendarType</ref> type,
13310                       <ref>CalendarArraySuccessCallback</ref> successCallback,
13311                       optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
13312
13313     <ref>Calendar</ref> getUnifiedCalendar(<ref>CalendarType</ref> type) raises(<ref>WebAPIException</ref>);
13314
13315     <ref>Calendar</ref> getDefaultCalendar(<ref>CalendarType</ref> type) raises(<ref>WebAPIException</ref>);
13316     
13317     <ref>Calendar</ref> getCalendar(<ref>CalendarType</ref> type, <ref>CalendarId</ref> id) raises(<ref>WebAPIException</ref>);
13318   };
13319
13320   [NoInterfaceObject] interface Calendar {
13321     
13322     readonly attribute <ref>CalendarId</ref> id;
13323
13324     readonly attribute DOMString name;
13325                               
13326     <ref>CalendarItem</ref> get(<ref>CalendarItemId</ref> id) raises(<ref>WebAPIException</ref>);
13327
13328     void add(<ref>CalendarItem</ref> item) raises(<ref>WebAPIException</ref>);
13329
13330     void addBatch(<ref>CalendarItem</ref>[] items,
13331                   optional <ref>CalendarItemArraySuccessCallback</ref>? successCallback,
13332                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
13333
13334     void update(<ref>CalendarItem</ref> item,
13335                 optional boolean? updateAllInstances) raises(<ref>WebAPIException</ref>);
13336
13337      void updateBatch(<ref>CalendarItem</ref>[] items,
13338                      optional <ref>SuccessCallback</ref>? successCallback,
13339                      optional <ref>ErrorCallback</ref>? errorCallback,
13340                      optional boolean? updateAllInstances) raises(<ref>WebAPIException</ref>);
13341
13342     void remove(<ref>CalendarItemId</ref> id) raises(<ref>WebAPIException</ref>);
13343
13344     void removeBatch(<ref>CalendarItemId</ref>[] ids,
13345                      optional <ref>SuccessCallback</ref>? successCallback,
13346                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
13347  
13348     void find(<ref>CalendarItemArraySuccessCallback</ref> successCallback,
13349               optional <ref>ErrorCallback</ref>? errorCallback,
13350               optional <ref>AbstractFilter</ref>? filter,
13351               optional <ref>SortMode</ref>? sortMode) raises(<ref>WebAPIException</ref>);
13352                                 
13353     long addChangeListener(<ref>CalendarChangeCallback</ref> successCallback) raises(<ref>WebAPIException</ref>);
13354                       
13355     void removeChangeListener(long watchId) raises(<ref>WebAPIException</ref>);
13356   };
13357   
13358   dictionary CalendarItemInit {
13359     DOMString description;
13360     DOMString summary;
13361     boolean isAllDay;
13362     <ref>TZDate</ref> startDate;
13363     <ref>TimeDuration</ref> duration;
13364     DOMString location;
13365     <ref>SimpleCoordinates</ref> geolocation;
13366     DOMString organizer;
13367     <ref>CalendarItemVisibility</ref> visibility;
13368     <ref>CalendarItemStatus</ref> status;
13369     <ref>CalendarItemPriority</ref> priority;
13370     <ref>CalendarAlarm</ref>[] alarms;
13371     DOMString[] categories;
13372     <ref>CalendarAttendee</ref>[] attendees;
13373   };
13374   
13375   dictionary CalendarTaskInit: <ref>CalendarItemInit</ref> {
13376     <ref>TZDate</ref> dueDate;
13377     <ref>TZDate</ref> completedDate;
13378     short progress;
13379   };
13380
13381   dictionary CalendarEventInit: <ref>CalendarItemInit</ref> {
13382     <ref>TZDate</ref> endDate;
13383     <ref>EventAvailability</ref> availability;
13384     <ref>CalendarRecurrenceRule</ref> recurrenceRule;
13385   };
13386   
13387   [NoInterfaceObject] interface CalendarItem {
13388     readonly attribute <ref>CalendarItemId</ref>? id;
13389
13390     readonly attribute <ref>CalendarId</ref>? calendarId;
13391
13392     readonly attribute <ref>TZDate</ref>? lastModificationDate;
13393     
13394     attribute DOMString? description setraises(<ref>WebAPIException</ref>);
13395     
13396     attribute DOMString? summary setraises(<ref>WebAPIException</ref>);
13397     
13398     attribute boolean isAllDay setraises(<ref>WebAPIException</ref>);
13399     
13400     attribute <ref>TZDate</ref>? startDate setraises(<ref>WebAPIException</ref>);
13401     
13402     attribute <ref>TimeDuration</ref>? duration setraises(<ref>WebAPIException</ref>);
13403     
13404     attribute DOMString? location setraises(<ref>WebAPIException</ref>);
13405     
13406     attribute <ref>SimpleCoordinates</ref>? geolocation setraises(<ref>WebAPIException</ref>);
13407     
13408     attribute DOMString? organizer setraises(<ref>WebAPIException</ref>);
13409     
13410     attribute <ref>CalendarItemVisibility</ref> visibility setraises(<ref>WebAPIException</ref>);
13411     
13412     attribute <ref>CalendarItemStatus</ref> status setraises(<ref>WebAPIException</ref>);
13413     
13414     attribute <ref>CalendarItemPriority</ref> priority setraises(<ref>WebAPIException</ref>);
13415     
13416     attribute <ref>CalendarAlarm</ref>[] alarms setraises(<ref>WebAPIException</ref>);
13417     
13418     attribute DOMString[] categories setraises(<ref>WebAPIException</ref>);
13419     
13420     attribute <ref>CalendarAttendee</ref>[] attendees setraises(<ref>WebAPIException</ref>);
13421     
13422     DOMString convertToString(<ref>CalendarTextFormat</ref> format) raises(<ref>WebAPIException</ref>);
13423
13424     <ref>CalendarItem</ref> clone() raises(<ref>WebAPIException</ref>);
13425   };
13426   
13427   [Constructor(optional <ref>CalendarTaskInit</ref>? taskInitDict),
13428    Constructor(DOMString stringRepresentation, <ref>CalendarTextFormat</ref> format)]
13429   interface CalendarTask : <ref>CalendarItem</ref> {
13430     attribute <ref>TZDate</ref>? dueDate setraises(<ref>WebAPIException</ref>);
13431     
13432     attribute <ref>TZDate</ref>? completedDate setraises(<ref>WebAPIException</ref>);
13433     
13434     attribute unsigned short progress setraises(<ref>WebAPIException</ref>);
13435   };
13436
13437   [Constructor(optional <ref>CalendarEventInit</ref>? eventInitDict),
13438    Constructor(DOMString stringRepresentation, <ref>CalendarTextFormat</ref> format)]
13439   interface CalendarEvent : <ref>CalendarItem</ref> {
13440     readonly attribute boolean isDetached;
13441     
13442     attribute <ref>TZDate</ref>? endDate setraises(<ref>WebAPIException</ref>);
13443     
13444     attribute <ref>EventAvailability</ref> availability setraises(<ref>WebAPIException</ref>);
13445     
13446     attribute <ref>CalendarRecurrenceRule</ref>? recurrenceRule setraises(<ref>WebAPIException</ref>);
13447     
13448     void expandRecurrence(<ref>TZDate</ref> startDate,
13449                           <ref>TZDate</ref> endDate,
13450                           <ref>CalendarEventArraySuccessCallback</ref> successCallback,
13451                           optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
13452   };
13453   
13454   dictionary CalendarAttendeeInit {
13455     DOMString name;
13456     <ref>AttendeeRole</ref> role;
13457     <ref>AttendeeStatus</ref> status;
13458     boolean RSVP;
13459     <ref>AttendeeType</ref> type;
13460     DOMString? group;
13461     DOMString delegatorURI;
13462     DOMString delegateURI;
13463     <ref>ContactRef</ref> contactRef;
13464   };
13465
13466   [Constructor(DOMString uri, optional <ref>CalendarAttendeeInit</ref>? attendeeInitDict)]
13467   interface CalendarAttendee
13468   {
13469     attribute DOMString uri;
13470     
13471     attribute DOMString? name;
13472     
13473     attribute <ref>AttendeeRole</ref> role;
13474     
13475     attribute <ref>AttendeeStatus</ref> status;
13476     
13477     attribute boolean RSVP;
13478     
13479     attribute <ref>AttendeeType</ref> type;
13480      
13481     attribute DOMString? group;
13482       
13483     attribute DOMString? delegatorURI;
13484       
13485     attribute DOMString? delegateURI;
13486      
13487     attribute <ref>ContactRef</ref>? contactRef;
13488   };
13489   
13490   dictionary CalendarRecurrenceRuleInit {
13491     short interval;
13492     <ref>TZDate</ref> untilDate;
13493     long occurrenceCount;
13494     <ref>ByDayValue</ref>[] daysOfTheWeek;
13495     short[] setPositions;
13496     <ref>TZDate</ref>[] exceptions;
13497   };
13498   
13499   [Constructor(<ref>RecurrenceRuleFrequency</ref> frequency, optional <ref>CalendarRecurrenceRuleInit</ref>? ruleInitDict)]
13500   interface CalendarRecurrenceRule
13501   { 
13502     attribute <ref>RecurrenceRuleFrequency</ref> frequency;
13503     
13504     attribute unsigned short interval;
13505     
13506     attribute <ref>TZDate</ref>? untilDate;
13507     
13508     attribute long occurrenceCount;
13509     
13510     attribute <ref>ByDayValue</ref>[] daysOfTheWeek;
13511     
13512     attribute short[] setPositions;
13513     
13514     attribute <ref>TZDate</ref>[] exceptions;
13515   };
13516   
13517   [Constructor(DOMString uid, optional DOMString? rid)]
13518   interface CalendarEventId {
13519     attribute DOMString uid;
13520     
13521     attribute DOMString? rid;
13522   };
13523   
13524   [Constructor(<ref>TZDate</ref> absoluteDate, <ref>AlarmMethod</ref> method, optional DOMString? description),
13525    Constructor(<ref>TimeDuration</ref> before, <ref>AlarmMethod</ref> method, optional DOMString? description)]
13526   interface CalendarAlarm {
13527     attribute <ref>TZDate</ref>? absoluteDate setraises(<ref>WebAPIException</ref>);
13528     
13529     attribute <ref>TimeDuration</ref>? before setraises(<ref>WebAPIException</ref>);
13530   
13531     attribute <ref>AlarmMethod</ref> method setraises(<ref>WebAPIException</ref>);
13532     
13533     attribute DOMString? description;
13534   };
13535
13536   [Callback=FunctionOnly, NoInterfaceObject]
13537   interface CalendarEventArraySuccessCallback {
13538     void onsuccess(<ref>CalendarEvent</ref>[] events);
13539   };
13540   
13541   [Callback=FunctionOnly, NoInterfaceObject]
13542   interface CalendarItemArraySuccessCallback {
13543     void onsuccess(<ref>CalendarItem</ref>[] items);
13544   };
13545
13546   [Callback=FunctionOnly, NoInterfaceObject]
13547   interface CalendarArraySuccessCallback {
13548     void onsuccess(<ref>Calendar</ref>[] calendars);
13549   };
13550   
13551   [Callback, NoInterfaceObject] interface CalendarChangeCallback {
13552     void onitemsadded(<ref>CalendarItem</ref>[] items);
13553     
13554     void onitemsupdated(<ref>CalendarItem</ref>[] items);
13555     
13556     void onitemsremoved(<ref>CalendarItemId</ref>[] ids);
13557   };
13558 };</webidl>
13559     <descriptive>
13560         <brief>
13561  This API provides interfaces and methods for users to manage their schedule. 
13562 Separate calendars can be implemented for group related events or tasks. For example, a user may have a work, personal, and family calendar. A calendar entry is called an event and is composed of a series of attributes, such as purpose, starting time, and duration. A calendar is a collection of events.
13563         </brief>
13564        <description>
13565         <p>
13566 Internet Calendaring and Scheduling Core Object Specification (iCalendar), defines a format for exchanging event items. Mapping to specified event/task attributes in this API is as per this specification. To know more about this specification, see <a href="http://tools.ietf.org/html/rfc5545">RFC 5545</a>. 
13567         </p>
13568         <p>
13569 This API provides functionality to read, create, delete, and update items in specific calendars. Calendars can be obtained using the <em>getCalendars() </em>method, which returns an array of Calendar objects.
13570         </p>
13571         <p>
13572 For more information on the Calendar features, see <a href="../../org.tizen.web.appprogramming/html/guide/social_guide/calendar.htm">Calendar Guide</a>. 
13573         </p>
13574        </description>
13575         <version>
13576  1.0
13577         </version>
13578     </descriptive>
13579     <Typedef name="CalendarId" id="::Calendar::CalendarId">
13580       <webidl>  typedef DOMString CalendarId;</webidl>
13581       <descriptive>
13582           <brief>
13583  An attribute to identify the calendar.
13584           </brief>
13585           <version>
13586  1.0
13587           </version>
13588       </descriptive>
13589       <Type type="DOMString"/>
13590     </Typedef>
13591     <Typedef name="CalendarTaskId" id="::Calendar::CalendarTaskId">
13592       <webidl>  typedef DOMString CalendarTaskId;</webidl>
13593       <descriptive>
13594           <brief>
13595  An attribute to identify a calendar task.
13596           </brief>
13597           <version>
13598  1.0
13599           </version>
13600       </descriptive>
13601       <Type type="DOMString"/>
13602     </Typedef>
13603     <Typedef name="CalendarItemId" id="::Calendar::CalendarItemId">
13604       <webidl>  typedef (<ref>CalendarEventId</ref> or <ref>CalendarTaskId</ref>) CalendarItemId;</webidl>
13605       <descriptive>
13606           <brief>
13607  A calendar item identifier, which can either be a <em>CalendarEventId </em>or a <em>CalendarTaskId</em>.
13608           </brief>
13609           <version>
13610  1.0
13611           </version>
13612       </descriptive>
13613       <Type type="union">
13614         <Type name="CalendarEventId"/>
13615         <Type name="CalendarTaskId"/>
13616       </Type>
13617     </Typedef>
13618     <Enum name="CalendarType" id="::Calendar::CalendarType">
13619       <webidl>  enum CalendarType { &quot;EVENT&quot;, &quot;TASK&quot; };</webidl>
13620       <descriptive>
13621           <brief>
13622  An enumerator that indicates the type of a calendar.
13623           </brief>
13624          <description>
13625           <p>
13626 The following types are supported:
13627           </p>
13628           <ul>
13629             <li>
13630 EVENT - if a calendar contains events (VEVENT objects)            </li>
13631             <li>
13632 TASK - if a calendar contains tasks (VTODO objects)            </li>
13633           </ul>
13634          </description>
13635           <version>
13636  1.0
13637           </version>
13638       </descriptive>
13639       <EnumValue stringvalue="EVENT">
13640         <webidl> &quot;EVENT</webidl>
13641       </EnumValue>
13642       <EnumValue stringvalue="TASK">
13643         <webidl> &quot;TASK</webidl>
13644       </EnumValue>
13645     </Enum>
13646     <Enum name="CalendarTextFormat" id="::Calendar::CalendarTextFormat">
13647       <webidl>  enum CalendarTextFormat { &quot;ICALENDAR_20&quot;, &quot;VCALENDAR_10&quot; };</webidl>
13648       <descriptive>
13649           <brief>
13650  An enumerator that indicates the type of textual format of a Calendar.
13651           </brief>
13652          <description>
13653           <p>
13654 The following values are supported:
13655           </p>
13656           <ul>
13657             <li>
13658 ICALENDAR_20 -  if the textual format is iCalendar v2.0            </li>
13659             <li>
13660 VCALENDAR_10 -  if the textual format is vCalendar v1.0            </li>
13661           </ul>
13662          </description>
13663           <version>
13664  1.0
13665           </version>
13666       </descriptive>
13667       <EnumValue stringvalue="ICALENDAR_20">
13668         <webidl> &quot;ICALENDAR_20</webidl>
13669       </EnumValue>
13670       <EnumValue stringvalue="VCALENDAR_10">
13671         <webidl> &quot;VCALENDAR_10</webidl>
13672       </EnumValue>
13673     </Enum>
13674     <Enum name="AlarmMethod" id="::Calendar::AlarmMethod">
13675       <webidl>  enum AlarmMethod { &quot;SOUND&quot;, &quot;DISPLAY&quot; };</webidl>
13676       <descriptive>
13677           <brief>
13678  An enumerator that indicates the type of an alarm.
13679           </brief>
13680          <description>
13681           <p>
13682 The following values are supported:
13683           </p>
13684           <ul>
13685             <li>
13686 SOUND - if sound is played to alert the user            </li>
13687             <li>
13688 DISPLAY - if display on screen without any sound is used to alert the user            </li>
13689           </ul>
13690          </description>
13691           <version>
13692  1.0
13693           </version>
13694       </descriptive>
13695       <EnumValue stringvalue="SOUND">
13696         <webidl> &quot;SOUND</webidl>
13697       </EnumValue>
13698       <EnumValue stringvalue="DISPLAY">
13699         <webidl> &quot;DISPLAY</webidl>
13700       </EnumValue>
13701     </Enum>
13702     <Enum name="RecurrenceRuleFrequency" id="::Calendar::RecurrenceRuleFrequency">
13703       <webidl>  enum RecurrenceRuleFrequency { &quot;DAILY&quot;, &quot;WEEKLY&quot;, &quot;MONTHLY&quot;, &quot;YEARLY&quot; };</webidl>
13704       <descriptive>
13705           <brief>
13706  An enumerator that indicates the type of frequency for the recurrence of an event.
13707           </brief>
13708          <description>
13709           <p>
13710 Only the following values are valid for this attribute:
13711           </p>
13712           <ul>
13713             <li>
13714 DAILY - if the event occurs daily            </li>
13715             <li>
13716 WEEKLY - if the event occurs weekly            </li>
13717             <li>
13718 MONTHLY -  if the event occurs monthly            </li>
13719             <li>
13720 YEARLY - if the event occurs yearly            </li>
13721           </ul>
13722          </description>
13723           <version>
13724  1.0
13725           </version>
13726       </descriptive>
13727       <EnumValue stringvalue="DAILY">
13728         <webidl> &quot;DAILY</webidl>
13729       </EnumValue>
13730       <EnumValue stringvalue="WEEKLY">
13731         <webidl> &quot;WEEKLY</webidl>
13732       </EnumValue>
13733       <EnumValue stringvalue="MONTHLY">
13734         <webidl> &quot;MONTHLY</webidl>
13735       </EnumValue>
13736       <EnumValue stringvalue="YEARLY">
13737         <webidl> &quot;YEARLY</webidl>
13738       </EnumValue>
13739     </Enum>
13740     <Enum name="ByDayValue" id="::Calendar::ByDayValue">
13741       <webidl>  enum ByDayValue { &quot;MO&quot;, &quot;TU&quot;, &quot;WE&quot;, &quot;TH&quot;, &quot;FR&quot;, &quot;SA&quot;, &quot;SU&quot; };</webidl>
13742       <descriptive>
13743           <brief>
13744  An enumerator that indicates the values for <em>CalendarRecurrenceRule.daysOfWeek</em>.
13745           </brief>
13746          <description>
13747           <p>
13748 &quot;MO&quot; to &quot;SU&quot; correspond to &quot;Monday&quot; to &quot;Sunday&quot;.
13749           </p>
13750          </description>
13751           <version>
13752  1.0
13753           </version>
13754       </descriptive>
13755       <EnumValue stringvalue="MO">
13756         <webidl> &quot;MO</webidl>
13757       </EnumValue>
13758       <EnumValue stringvalue="TU">
13759         <webidl> &quot;TU</webidl>
13760       </EnumValue>
13761       <EnumValue stringvalue="WE">
13762         <webidl> &quot;WE</webidl>
13763       </EnumValue>
13764       <EnumValue stringvalue="TH">
13765         <webidl> &quot;TH</webidl>
13766       </EnumValue>
13767       <EnumValue stringvalue="FR">
13768         <webidl> &quot;FR</webidl>
13769       </EnumValue>
13770       <EnumValue stringvalue="SA">
13771         <webidl> &quot;SA</webidl>
13772       </EnumValue>
13773       <EnumValue stringvalue="SU">
13774         <webidl> &quot;SU</webidl>
13775       </EnumValue>
13776     </Enum>
13777     <Enum name="EventAvailability" id="::Calendar::EventAvailability">
13778       <webidl>  enum EventAvailability { &quot;BUSY&quot;, &quot;FREE&quot; };</webidl>
13779       <descriptive>
13780           <brief>
13781  An enumerator that indicates the availability of time for an event.
13782           </brief>
13783          <description>
13784           <p>
13785 The following values are supported:
13786           </p>
13787           <ul>
13788             <li>
13789 FREE - if the specified time slot is vacant            </li>
13790             <li>
13791 BUSY - if the specified time slot is not vacant            </li>
13792             <li>
13793 BUSY-UNAVAILABLE - if the specified time slot is not vacant and can not be scheduled            </li>
13794             <li>
13795 BUSY-TENTATIVE - if the specified time slot is not vacant because one or more events have been tentatively scheduled for that interval            </li>
13796           </ul>
13797          </description>
13798           <version>
13799  1.0
13800           </version>
13801       </descriptive>
13802       <EnumValue stringvalue="BUSY">
13803         <webidl> &quot;BUSY</webidl>
13804       </EnumValue>
13805       <EnumValue stringvalue="FREE">
13806         <webidl> &quot;FREE</webidl>
13807       </EnumValue>
13808     </Enum>
13809     <Enum name="AttendeeType" id="::Calendar::AttendeeType">
13810       <webidl>  enum AttendeeType { &quot;INDIVIDUAL&quot;, &quot;GROUP&quot;, &quot;RESOURCE&quot;, &quot;ROOM&quot;, &quot;UNKNOWN&quot; };</webidl>
13811       <descriptive>
13812           <brief>
13813  An enumerator that indicates the type of attendee.
13814           </brief>
13815          <description>
13816           <p>
13817 At least the following values must be supported:
13818           </p>
13819           <ul>
13820             <li>
13821 INDIVIDUAL - Individual            </li>
13822             <li>
13823 GROUP - Group of individuals            </li>
13824             <li>
13825 RESOURCE - Physical resource            </li>
13826             <li>
13827 ROOM - Room resource            </li>
13828             <li>
13829 UNKNOWN - Unknown            </li>
13830           </ul>
13831          </description>
13832           <version>
13833  1.0
13834           </version>
13835       </descriptive>
13836       <EnumValue stringvalue="INDIVIDUAL">
13837         <webidl> &quot;INDIVIDUAL</webidl>
13838       </EnumValue>
13839       <EnumValue stringvalue="GROUP">
13840         <webidl> &quot;GROUP</webidl>
13841       </EnumValue>
13842       <EnumValue stringvalue="RESOURCE">
13843         <webidl> &quot;RESOURCE</webidl>
13844       </EnumValue>
13845       <EnumValue stringvalue="ROOM">
13846         <webidl> &quot;ROOM</webidl>
13847       </EnumValue>
13848       <EnumValue stringvalue="UNKNOWN">
13849         <webidl> &quot;UNKNOWN</webidl>
13850       </EnumValue>
13851     </Enum>
13852     <Enum name="AttendeeStatus" id="::Calendar::AttendeeStatus">
13853       <webidl>  enum AttendeeStatus { &quot;PENDING&quot;, &quot;ACCEPTED&quot;, &quot;DECLINED&quot;, &quot;TENTATIVE&quot;, &quot;DELEGATED&quot;, &quot;COMPLETED&quot;, &quot;IN_PROCESS&quot; };</webidl>
13854       <descriptive>
13855           <brief>
13856  An enumerator that indicates the attendance status of a participant.
13857           </brief>
13858          <description>
13859           <p>
13860 At least the following values must be supported:
13861           </p>
13862           <ul>
13863             <li>
13864 PENDING - if the participant has not yet responded to the event            </li>
13865             <li>
13866 ACCEPTED - if the participant has accepted the event            </li>
13867             <li>
13868 DECLINED - if the participant has declined the event            </li>
13869             <li>
13870 TENTATIVE - if the participant has tentatively accepted the event            </li>
13871             <li>
13872 DELEGATED - if the participant has delegated attendance to another participant            </li>
13873             <li>
13874 COMPLETED - if the participant's event has been completed            </li>
13875             <li>
13876 IN_PROCESS - if the participant's event is currently in process            </li>
13877           </ul>
13878          </description>
13879           <version>
13880  1.0
13881           </version>
13882       </descriptive>
13883       <EnumValue stringvalue="PENDING">
13884         <webidl> &quot;PENDING</webidl>
13885       </EnumValue>
13886       <EnumValue stringvalue="ACCEPTED">
13887         <webidl> &quot;ACCEPTED</webidl>
13888       </EnumValue>
13889       <EnumValue stringvalue="DECLINED">
13890         <webidl> &quot;DECLINED</webidl>
13891       </EnumValue>
13892       <EnumValue stringvalue="TENTATIVE">
13893         <webidl> &quot;TENTATIVE</webidl>
13894       </EnumValue>
13895       <EnumValue stringvalue="DELEGATED">
13896         <webidl> &quot;DELEGATED</webidl>
13897       </EnumValue>
13898       <EnumValue stringvalue="COMPLETED">
13899         <webidl> &quot;COMPLETED</webidl>
13900       </EnumValue>
13901       <EnumValue stringvalue="IN_PROCESS">
13902         <webidl> &quot;IN_PROCESS</webidl>
13903       </EnumValue>
13904     </Enum>
13905     <Enum name="AttendeeRole" id="::Calendar::AttendeeRole">
13906       <webidl>  enum AttendeeRole { &quot;REQ_PARTICIPANT&quot;, &quot;OPT_PARTICIPANT&quot;, &quot;NON_PARTICIPANT&quot;, &quot;CHAIR&quot; };</webidl>
13907       <descriptive>
13908           <brief>
13909  An enumerator that indicates the role of an attendee.
13910           </brief>
13911          <description>
13912           <p>
13913 At least the following values must be supported:
13914           </p>
13915           <ul>
13916             <li>
13917 REQ_PARTICIPANT - if the participation of an attendee is mandatory            </li>
13918             <li>
13919 OPT_PARTICIPANT - if the participation of an attendee is optional            </li>
13920             <li>
13921 NON_PARTICIPANT - if the attendee is not a participant but is copied for information purposes            </li>
13922             <li>
13923 CHAIR - if the attendee is the chairperson of the event.            </li>
13924           </ul>
13925          </description>
13926           <version>
13927  1.0
13928           </version>
13929       </descriptive>
13930       <EnumValue stringvalue="REQ_PARTICIPANT">
13931         <webidl> &quot;REQ_PARTICIPANT</webidl>
13932       </EnumValue>
13933       <EnumValue stringvalue="OPT_PARTICIPANT">
13934         <webidl> &quot;OPT_PARTICIPANT</webidl>
13935       </EnumValue>
13936       <EnumValue stringvalue="NON_PARTICIPANT">
13937         <webidl> &quot;NON_PARTICIPANT</webidl>
13938       </EnumValue>
13939       <EnumValue stringvalue="CHAIR">
13940         <webidl> &quot;CHAIR</webidl>
13941       </EnumValue>
13942     </Enum>
13943     <Enum name="CalendarItemPriority" id="::Calendar::CalendarItemPriority">
13944       <webidl>  enum CalendarItemPriority { &quot;HIGH&quot;, &quot;MEDIUM&quot;, &quot;LOW&quot; };</webidl>
13945       <descriptive>
13946           <brief>
13947  An enumerator that indicates the priority of a calendar item.
13948           </brief>
13949          <description>
13950           <p>
13951 The following values are supported:
13952           </p>
13953           <ul>
13954             <li>
13955 HIGH - if item priority is high            </li>
13956             <li>
13957 MEDIUM - if item priority is medium            </li>
13958             <li>
13959 LOW - if item priority is low            </li>
13960           </ul>
13961          </description>
13962           <version>
13963  1.0
13964           </version>
13965       </descriptive>
13966       <EnumValue stringvalue="HIGH">
13967         <webidl> &quot;HIGH</webidl>
13968       </EnumValue>
13969       <EnumValue stringvalue="MEDIUM">
13970         <webidl> &quot;MEDIUM</webidl>
13971       </EnumValue>
13972       <EnumValue stringvalue="LOW">
13973         <webidl> &quot;LOW</webidl>
13974       </EnumValue>
13975     </Enum>
13976     <Enum name="CalendarItemVisibility" id="::Calendar::CalendarItemVisibility">
13977       <webidl>   enum CalendarItemVisibility { &quot;PUBLIC&quot;, &quot;PRIVATE&quot;, &quot;CONFIDENTIAL&quot; };</webidl>
13978       <descriptive>
13979           <brief>
13980  An enumerator that indicates the visibility type of a calendar item.
13981           </brief>
13982          <description>
13983           <p>
13984 The following values are supported:
13985           </p>
13986           <ul>
13987             <li>
13988 PUBLIC - if item visibility is public            </li>
13989             <li>
13990 PRIVATE - if item visibility is private            </li>
13991             <li>
13992 CONFIDENTIAL - if item visibility is confidential            </li>
13993           </ul>
13994          </description>
13995           <version>
13996  1.0
13997           </version>
13998       </descriptive>
13999       <EnumValue stringvalue="PUBLIC">
14000         <webidl> &quot;PUBLIC</webidl>
14001       </EnumValue>
14002       <EnumValue stringvalue="PRIVATE">
14003         <webidl> &quot;PRIVATE</webidl>
14004       </EnumValue>
14005       <EnumValue stringvalue="CONFIDENTIAL">
14006         <webidl> &quot;CONFIDENTIAL</webidl>
14007       </EnumValue>
14008     </Enum>
14009     <Enum name="CalendarItemStatus" id="::Calendar::CalendarItemStatus">
14010       <webidl>   enum CalendarItemStatus { &quot;TENTATIVE&quot;, &quot;CONFIRMED&quot;, &quot;CANCELLED&quot;, &quot;NEEDS_ACTION&quot;, &quot;IN_PROCESS&quot;, &quot;COMPLETED&quot; };</webidl>
14011       <descriptive>
14012           <brief>
14013  An enumerator that indicates the status of a calendar item.
14014           </brief>
14015          <description>
14016           <p>
14017 For an event, the possible values are:
14018           </p>
14019           <ul>
14020             <li>
14021 TENTATIVE - if the event is tentative            </li>
14022             <li>
14023 CONFIRMED - if the event is confirmed            </li>
14024             <li>
14025 CANCELLED -  if the event is cancelled            </li>
14026           </ul>
14027           <p>
14028 For a task, the possible values are:
14029           </p>
14030           <ul>
14031             <li>
14032 NEEDS_ACTION - if the task needs action            </li>
14033             <li>
14034 IN_PROCESS -  if the task is in process or being worked on            </li>
14035             <li>
14036 COMPLETED - if the task has been completed            </li>
14037             <li>
14038 CANCELLED -  if the task has been cancelled            </li>
14039           </ul>
14040          </description>
14041           <version>
14042  1.0
14043           </version>
14044       </descriptive>
14045       <EnumValue stringvalue="TENTATIVE">
14046         <webidl> &quot;TENTATIVE</webidl>
14047       </EnumValue>
14048       <EnumValue stringvalue="CONFIRMED">
14049         <webidl> &quot;CONFIRMED</webidl>
14050       </EnumValue>
14051       <EnumValue stringvalue="CANCELLED">
14052         <webidl> &quot;CANCELLED</webidl>
14053       </EnumValue>
14054       <EnumValue stringvalue="NEEDS_ACTION">
14055         <webidl> &quot;NEEDS_ACTION</webidl>
14056       </EnumValue>
14057       <EnumValue stringvalue="IN_PROCESS">
14058         <webidl> &quot;IN_PROCESS</webidl>
14059       </EnumValue>
14060       <EnumValue stringvalue="COMPLETED">
14061         <webidl> &quot;COMPLETED</webidl>
14062       </EnumValue>
14063     </Enum>
14064     <Interface name="CalendarManagerObject" id="::Calendar::CalendarManagerObject">
14065       <webidl>  [NoInterfaceObject] interface CalendarManagerObject{
14066     readonly attribute <ref>CalendarManager</ref> calendar; 
14067   };</webidl>
14068       <descriptive>
14069           <brief>
14070  This interface gives access to the Calendar API from the <em>tizen.calendar </em>object. 
14071           </brief>
14072           <version>
14073  1.0
14074           </version>
14075       </descriptive>
14076       <ExtendedAttributeList>
14077         <ExtendedAttribute name="NoInterfaceObject">
14078           <webidl>NoInterfaceObject</webidl>
14079         </ExtendedAttribute>
14080       </ExtendedAttributeList>
14081       <Attribute readonly="readonly" name="calendar" id="::Calendar::CalendarManagerObject::calendar">
14082         <webidl>    readonly attribute <ref>CalendarManager</ref> calendar;</webidl>
14083         <Type name="CalendarManager"/>
14084       </Attribute>
14085     </Interface>
14086     <Implements name1="Tizen" name2="CalendarManagerObject">
14087       <webidl>  <ref>Tizen</ref> implements <ref>CalendarManagerObject</ref>;</webidl>
14088     </Implements>
14089     <Interface name="CalendarManager" id="::Calendar::CalendarManager">
14090       <webidl>  [NoInterfaceObject] interface CalendarManager {
14091     void getCalendars(<ref>CalendarType</ref> type,
14092                       <ref>CalendarArraySuccessCallback</ref> successCallback,
14093                       optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
14094
14095     <ref>Calendar</ref> getUnifiedCalendar(<ref>CalendarType</ref> type) raises(<ref>WebAPIException</ref>);
14096
14097     <ref>Calendar</ref> getDefaultCalendar(<ref>CalendarType</ref> type) raises(<ref>WebAPIException</ref>);
14098     
14099     <ref>Calendar</ref> getCalendar(<ref>CalendarType</ref> type, <ref>CalendarId</ref> id) raises(<ref>WebAPIException</ref>);
14100   };</webidl>
14101       <descriptive>
14102           <brief>
14103  This interface provides methods to access calendars and attributes for calendars. 
14104 Once a calendar object is obtained, it is possible to add, remove, or update the information it contains through the Calendar interface methods.   
14105           </brief>
14106           <version>
14107  1.0
14108           </version>
14109       </descriptive>
14110       <ExtendedAttributeList>
14111         <ExtendedAttribute name="NoInterfaceObject">
14112           <webidl>NoInterfaceObject</webidl>
14113         </ExtendedAttribute>
14114       </ExtendedAttributeList>
14115       <Operation name="getCalendars" id="::Calendar::CalendarManager::getCalendars">
14116         <webidl>    void getCalendars(<ref>CalendarType</ref> type,
14117                       <ref>CalendarArraySuccessCallback</ref> successCallback,
14118                       optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
14119         <descriptive>
14120             <brief>
14121  Gets an array of Calendar objects.
14122             </brief>
14123            <description>
14124             <p>
14125 If the operation completes successfully, the <em>successCallback() </em>must be invoked with all the calendars found and available. The first calendar in the list is always the default calendar.
14126             </p>
14127             <p>
14128 If no Calendar object is available, the <em>successCallback()</em> is invoked with an empty array.
14129             </p>
14130             <p>
14131 The errorCallback is launched with these error types:
14132             </p>
14133             <ul>
14134               <li>
14135 InvalidValuesError - if any of the input parameters contain an invalid value.              </li>
14136               <li>
14137 UnknownError - if any other error occurs.              </li>
14138             </ul>
14139            </description>
14140             <version>
14141  1.0
14142             </version>
14143             <privilegelevel>
14144  public
14145             </privilegelevel>
14146             <privilege>
14147  http://tizen.org/privilege/calendar.read
14148             </privilege>
14149             <Code>  var calendar;
14150
14151   function eventFoundCallback(events) {
14152     // The event has been successfully found
14153     // Changes the summary
14154     events[0].summary = 'HTML6 Webinar'; 
14155     calendar.update(events[0]);
14156     console.log('First event was updated!');
14157   }
14158
14159   // Defines the error callback for all the asynchronous calls
14160   function errorCallback(response) {
14161     console.log( 'The following error occurred: ' +  response.name);
14162   }
14163
14164   // Defines the success callback for retrieving the list of calendars
14165   function calendarListCallback(calendars) {
14166     if(calendars.length > 0) {
14167       calendar = calendars[0];
14168       console.log('The calendar id is ' + calendar.id + ' and name ' + calendar.name);
14169
14170       var ev = new tizen.CalendarEvent({description:'HTML5 Introduction',
14171                                          summary:'HTML5 Webinar', 
14172                                          startDate: new tizen.TZDate(2011, 3, 30, 10, 0), 
14173                                          duration: new tizen.TimeDuration(1, &quot;HOURS&quot;),
14174                                          location:'Huesca'});
14175       calendar.add(ev);
14176
14177       // The event has been successfully added
14178       // Checks if the added event can be retrieved from the calendar
14179       // If the calendar was empty, only the item added through add() should be returned
14180       var filter = new tizen.AttributeFilter('summary', 'CONTAINS', 'HTML5');
14181       calendar.find(eventFoundCallback, errorCallback, filter);
14182     }
14183   }
14184
14185   // Gets a list of available calendars
14186   tizen.calendar.getCalendars(&quot;EVENT&quot;, calendarListCallback, errorCallback);
14187  </Code>
14188         </descriptive>
14189         <Type type="void"/>
14190         <ArgumentList>
14191           <Argument name="type">
14192             <descriptive>
14193                 <description><p>
14194  The type of calendar.
14195                 </p></description>
14196             </descriptive>
14197             <Type name="CalendarType"/>
14198           </Argument>
14199           <Argument name="successCallback">
14200             <descriptive>
14201                 <description><p>
14202  The method to invoke when the invocation ends successfully.
14203                 </p></description>
14204             </descriptive>
14205             <Type name="CalendarArraySuccessCallback"/>
14206           </Argument>
14207           <Argument optional="optional" name="errorCallback">
14208             <descriptive>
14209                 <description><p>
14210  The method to invoke when an error occurs. 
14211                 </p></description>
14212             </descriptive>
14213             <Type name="ErrorCallback" nullable="nullable"/>
14214           </Argument>
14215         </ArgumentList>
14216         <Raises>
14217           <RaiseException name="WebAPIException">
14218             <descriptive>
14219                 <description><p>
14220  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
14221                 </p></description>
14222                 <description><p>
14223  with error type SecurityError, if the application does not have the privilege to call this method.
14224                 </p></description>
14225                 <description><p>
14226  with error type NotSupportedError, if this feature is not supported.
14227                 </p></description>
14228             </descriptive>
14229           </RaiseException>
14230         </Raises>
14231       </Operation>
14232       <Operation name="getUnifiedCalendar" id="::Calendar::CalendarManager::getUnifiedCalendar">
14233         <webidl>    <ref>Calendar</ref> getUnifiedCalendar(<ref>CalendarType</ref> type) raises(<ref>WebAPIException</ref>);</webidl>
14234         <descriptive>
14235             <brief>
14236  The unified calendar is the aggregation of all calendars that are obtained from <em>getCalendars</em> and contains all events or tasks. It does not have the calendar id nor name which are set to <var>null</var>.
14237             </brief>
14238            <description>
14239             <p>
14240 If an item is added to the unified calendar, it will be saved in the default calendar.
14241             </p>
14242            </description>
14243             <version>
14244  2.1
14245             </version>
14246             <privilegelevel>
14247  public
14248             </privilegelevel>
14249             <privilege>
14250  http://tizen.org/privilege/calendar.read
14251             </privilege>
14252             <Code>  var unifiedCalendar;
14253
14254   // Defines the error callback for all the asynchronous calls
14255   function errorCallback(response) {
14256     console.log( 'The following error occurred: ' +  response.name);
14257   }
14258
14259   function eventFoundCallback(events) {
14260     // The event has been successfully found
14261     // Changes the summary
14262     events[0].summary = 'HTML6 Webinar'; 
14263     unifiedCalendar.update(events[0]);
14264     console.log('First event was updated!');
14265   }
14266
14267   // Gets the unified calendar
14268   unifiedCalendar = tizen.calendar.getUnifiedCalendar(&quot;EVENT&quot;);
14269
14270   var ev = new tizen.CalendarEvent({description:'HTML5 Introduction', 
14271                                     summary:'HTML5 Webinar ', 
14272                                     startDate: new tizen.TZDate(2011, 3, 30, 10, 0), 
14273                                     duration: new tizen.TimeDuration(1, &quot;HOURS&quot;),
14274                                     location:'Huesca'});
14275
14276   unifiedCalendar.add(ev);
14277    
14278   // The event has been added
14279   // Checks if the added event can be retrieved from the calendar
14280   // If the calendar was empty, only the item added through add() should be returned
14281   var filter = new tizen.AttributeFilter('summary', 'CONTAINS', 'HTML5');
14282   unifiedCalendar.find(eventFoundCallback, errorCallback, filter);
14283      
14284 </Code>
14285         </descriptive>
14286         <Type name="Calendar">
14287           <descriptive>
14288               <description><p>
14289  Calendar The unified Calendar object.
14290               </p></description>
14291           </descriptive>
14292         </Type>
14293         <ArgumentList>
14294           <Argument name="type">
14295             <descriptive>
14296                 <description><p>
14297  The type of a calendar.
14298                 </p></description>
14299             </descriptive>
14300             <Type name="CalendarType"/>
14301           </Argument>
14302         </ArgumentList>
14303         <Raises>
14304           <RaiseException name="WebAPIException">
14305             <descriptive>
14306                 <description><p>
14307  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
14308                 </p></description>
14309                 <description><p>
14310  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
14311                 </p></description>
14312                 <description><p>
14313  with error type SecurityError, if the application does not have the privilege to call this method.
14314                 </p></description>
14315                 <description><p>
14316  with error type NotSupportedError, if this feature is not supported.
14317                 </p></description>
14318                 <description><p>
14319  with error type UnknownError, if any other error occurs.
14320                 </p></description>
14321             </descriptive>
14322           </RaiseException>
14323         </Raises>
14324       </Operation>
14325       <Operation name="getDefaultCalendar" id="::Calendar::CalendarManager::getDefaultCalendar">
14326         <webidl>    <ref>Calendar</ref> getDefaultCalendar(<ref>CalendarType</ref> type) raises(<ref>WebAPIException</ref>);</webidl>
14327         <descriptive>
14328             <brief>
14329  Gets the default calendar, which is used for new items.
14330             </brief>
14331             <version>
14332  1.0
14333             </version>
14334             <privilegelevel>
14335  public
14336             </privilegelevel>
14337             <privilege>
14338  http://tizen.org/privilege/calendar.read
14339             </privilege>
14340             <Code>  var myCalendar;
14341
14342   // Defines the error callback for all the asynchronous calls
14343   function errorCallback(response) {
14344     console.log( 'The following error occurred: ' +  response.name);
14345   }
14346
14347   function eventFoundCallback(events) {
14348     // The event has been successfully found
14349     // Changes the summary
14350     events[0].summary = 'HTML6 Webinar'; 
14351     myCalendar.update(events[0]);
14352     console.log('First event was updated!');
14353   }
14354
14355   // Gets the default calendar
14356   myCalendar = tizen.calendar.getDefaultCalendar(&quot;EVENT&quot;);
14357
14358   var ev = new tizen.CalendarEvent({description:'HTML5 Introduction', 
14359                                     summary:'HTML5 Webinar ', 
14360                                     startDate: new tizen.TZDate(2011, 3, 30, 10, 0), 
14361                                     duration: new tizen.TimeDuration(1, &quot;HOURS&quot;),
14362                                     location:'Huesca'});
14363                   
14364   myCalendar.add(ev);
14365    
14366   // The event has been added
14367   // Checks if the added event can be retrieved from the calendar
14368   // If the calendar was empty, only the item added through add() should be returned
14369   var filter = new tizen.AttributeFilter('summary', 'CONTAINS', 'HTML5');
14370   myCalendar.find(eventFoundCallback, errorCallback, filter);
14371      
14372 </Code>
14373         </descriptive>
14374         <Type name="Calendar">
14375           <descriptive>
14376               <description><p>
14377  Calendar The default Calendar object.
14378               </p></description>
14379           </descriptive>
14380         </Type>
14381         <ArgumentList>
14382           <Argument name="type">
14383             <descriptive>
14384                 <description><p>
14385  The type of a calendar.
14386                 </p></description>
14387             </descriptive>
14388             <Type name="CalendarType"/>
14389           </Argument>
14390         </ArgumentList>
14391         <Raises>
14392           <RaiseException name="WebAPIException">
14393             <descriptive>
14394                 <description><p>
14395  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
14396                 </p></description>
14397                 <description><p>
14398  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
14399                 </p></description>
14400                 <description><p>
14401  with error type SecurityError, if the application does not have the privilege to call this method.
14402                 </p></description>
14403                 <description><p>
14404  with error type NotSupportedError, if this feature is not supported.
14405                 </p></description>
14406                 <description><p>
14407  with error type UnknownError, if any other error occurs.
14408                 </p></description>
14409             </descriptive>
14410           </RaiseException>
14411         </Raises>
14412       </Operation>
14413       <Operation name="getCalendar" id="::Calendar::CalendarManager::getCalendar">
14414         <webidl>    <ref>Calendar</ref> getCalendar(<ref>CalendarType</ref> type, <ref>CalendarId</ref> id) raises(<ref>WebAPIException</ref>);</webidl>
14415         <descriptive>
14416             <brief>
14417  Gets the calendar with the specified identifier and type.
14418             </brief>
14419             <version>
14420  1.0
14421             </version>
14422             <privilegelevel>
14423  public
14424             </privilegelevel>
14425             <privilege>
14426  http://tizen.org/privilege/calendar.read
14427             </privilege>
14428             <Code>  var calendarId; // calendarId supposed to be initialized
14429   try {
14430     var calendar = tizen.calendar.getCalendar(&quot;EVENT&quot;, calendarId);
14431     console.log(&quot;Successfully retrieved event calendar with id: &quot; + calendarId);
14432   } catch(err) {
14433     console.log(&quot;Error: &quot; + err.name);
14434   }
14435  </Code>
14436         </descriptive>
14437         <Type name="Calendar">
14438           <descriptive>
14439               <description><p>
14440  Calendar The matching Calendar object.
14441               </p></description>
14442           </descriptive>
14443         </Type>
14444         <ArgumentList>
14445           <Argument name="type">
14446             <descriptive>
14447                 <description><p>
14448  The type of a calendar.
14449                 </p></description>
14450             </descriptive>
14451             <Type name="CalendarType"/>
14452           </Argument>
14453           <Argument name="id">
14454             <descriptive>
14455                 <description><p>
14456  The calendar identifier.
14457                 </p></description>
14458             </descriptive>
14459             <Type name="CalendarId"/>
14460           </Argument>
14461         </ArgumentList>
14462         <Raises>
14463           <RaiseException name="WebAPIException">
14464             <descriptive>
14465                 <description><p>
14466  with error type NotFoundError, if there is no calendar with the given identifier.  
14467                 </p></description>
14468                 <description><p>
14469  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
14470                 </p></description>
14471                 <description><p>
14472  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
14473                 </p></description>
14474                 <description><p>
14475  with error type SecurityError, if the application does not have the privilege to call this method.
14476                 </p></description>
14477                 <description><p>
14478  with error type NotSupportedError, if this feature is not supported.
14479                 </p></description>
14480                 <description><p>
14481  with error type UnknownError, if any other error occurs.
14482                 </p></description>
14483             </descriptive>
14484           </RaiseException>
14485         </Raises>
14486       </Operation>
14487     </Interface>
14488     <Interface name="Calendar" id="::Calendar::Calendar">
14489       <webidl>  [NoInterfaceObject] interface Calendar {
14490     
14491     readonly attribute <ref>CalendarId</ref> id;
14492
14493     readonly attribute DOMString name;
14494                               
14495     <ref>CalendarItem</ref> get(<ref>CalendarItemId</ref> id) raises(<ref>WebAPIException</ref>);
14496
14497     void add(<ref>CalendarItem</ref> item) raises(<ref>WebAPIException</ref>);
14498
14499     void addBatch(<ref>CalendarItem</ref>[] items,
14500                   optional <ref>CalendarItemArraySuccessCallback</ref>? successCallback,
14501                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
14502
14503     void update(<ref>CalendarItem</ref> item,
14504                 optional boolean? updateAllInstances) raises(<ref>WebAPIException</ref>);
14505
14506      void updateBatch(<ref>CalendarItem</ref>[] items,
14507                      optional <ref>SuccessCallback</ref>? successCallback,
14508                      optional <ref>ErrorCallback</ref>? errorCallback,
14509                      optional boolean? updateAllInstances) raises(<ref>WebAPIException</ref>);
14510
14511     void remove(<ref>CalendarItemId</ref> id) raises(<ref>WebAPIException</ref>);
14512
14513     void removeBatch(<ref>CalendarItemId</ref>[] ids,
14514                      optional <ref>SuccessCallback</ref>? successCallback,
14515                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
14516  
14517     void find(<ref>CalendarItemArraySuccessCallback</ref> successCallback,
14518               optional <ref>ErrorCallback</ref>? errorCallback,
14519               optional <ref>AbstractFilter</ref>? filter,
14520               optional <ref>SortMode</ref>? sortMode) raises(<ref>WebAPIException</ref>);
14521                                 
14522     long addChangeListener(<ref>CalendarChangeCallback</ref> successCallback) raises(<ref>WebAPIException</ref>);
14523                       
14524     void removeChangeListener(long watchId) raises(<ref>WebAPIException</ref>);
14525   };</webidl>
14526       <descriptive>
14527           <brief>
14528  This interface that has methods to manage events or tasks in a calendar. A Calendar object contains a set of events or tasks, depending on the calendar type.
14529           </brief>
14530          <description>
14531           <p>
14532 This interface offers the following methods to manage events in a calendar:
14533           </p>
14534           <ul>
14535             <li>
14536  Finding items using a key-value filter.            </li>
14537             <li>
14538  Adding items to a specific calendar using <em>add() </em>/ <em>addBatch() </em>methods.            </li>
14539             <li>
14540  Updating existing items using <em>update() </em>/ <em>updateBatch()</em> methods.            </li>
14541             <li>
14542  Deleting existing items using <em>remove()</em> / <em>removeBatch() </em>methods.            </li>
14543             <li>
14544  Tracking calendar changes using <em>addChangeListener()</em> / <em>removeChangeListener() </em>methods.            </li>
14545           </ul>
14546          </description>
14547           <version>
14548  1.0
14549           </version>
14550       </descriptive>
14551       <ExtendedAttributeList>
14552         <ExtendedAttribute name="NoInterfaceObject">
14553           <webidl>NoInterfaceObject</webidl>
14554         </ExtendedAttribute>
14555       </ExtendedAttributeList>
14556       <Attribute readonly="readonly" name="id" id="::Calendar::Calendar::id">
14557         <webidl>    readonly attribute <ref>CalendarId</ref> id;</webidl>
14558         <descriptive>
14559             <brief>
14560  An attribute to uniquely identify a calendar.
14561             </brief>
14562             <version>
14563  1.0
14564             </version>
14565         </descriptive>
14566         <Type name="CalendarId"/>
14567       </Attribute>
14568       <Attribute readonly="readonly" name="name" id="::Calendar::Calendar::name">
14569         <webidl>    readonly attribute DOMString name;</webidl>
14570         <descriptive>
14571             <brief>
14572  An attribute to assign a readable (descriptive) name for a calendar, such as work, personal, etc.
14573             </brief>
14574             <version>
14575  1.0
14576             </version>
14577             <Code>  // Gets the default calendar and show its name
14578   var calendar = tizen.calendar.getDefaultCalendar(&quot;EVENT&quot;);
14579   console.log('The calendar name is ' + calendar.name);
14580  </Code>
14581         </descriptive>
14582         <Type type="DOMString"/>
14583       </Attribute>
14584       <Operation name="get" id="::Calendar::Calendar::get">
14585         <webidl>    <ref>CalendarItem</ref> get(<ref>CalendarItemId</ref> id) raises(<ref>WebAPIException</ref>);</webidl>
14586         <descriptive>
14587             <brief>
14588  Gets the calendar item with the specified identifier.
14589             </brief>
14590             <version>
14591  1.0
14592             </version>
14593             <privilegelevel>
14594  public
14595             </privilegelevel>
14596             <privilege>
14597  http://tizen.org/privilege/calendar.read
14598             </privilege>
14599             <Code>  var myCalendar; // Calendar supposed to be initialized
14600   var itemId; // Calendar item identifier
14601   try {
14602     var item = myCalendar.get(itemId);
14603     console.log(&quot;Successfully retrieved item with id: &quot; + itemId);
14604   } catch(err) {
14605     console.log(&quot;Error: &quot; + err.name);
14606   }
14607  </Code>
14608         </descriptive>
14609         <Type name="CalendarItem">
14610           <descriptive>
14611               <description><p>
14612  CalendarItem The matching <em>CalendarItem </em>object.
14613               </p></description>
14614           </descriptive>
14615         </Type>
14616         <ArgumentList>
14617           <Argument name="id">
14618             <descriptive>
14619                 <description><p>
14620  The Calendar item identifier.
14621                 </p></description>
14622             </descriptive>
14623             <Type name="CalendarItemId"/>
14624           </Argument>
14625         </ArgumentList>
14626         <Raises>
14627           <RaiseException name="WebAPIException">
14628             <descriptive>
14629                 <description><p>
14630  with error type NotFoundError, if there is no calendar item with the given identifier.
14631                 </p></description>
14632                 <description><p>
14633  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
14634                 </p></description>
14635                 <description><p>
14636  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
14637                 </p></description>
14638                 <description><p>
14639  with error type SecurityError, if the application does not have the privilege to call this method.
14640                 </p></description>
14641                 <description><p>
14642  with error type NotSupportedError, if this feature is not supported.
14643                 </p></description>
14644                 <description><p>
14645  with error type UnknownError, if any other error occurs.
14646                 </p></description>
14647             </descriptive>
14648           </RaiseException>
14649         </Raises>
14650       </Operation>
14651       <Operation name="add" id="::Calendar::Calendar::add">
14652         <webidl>    void add(<ref>CalendarItem</ref> item) raises(<ref>WebAPIException</ref>);</webidl>
14653         <descriptive>
14654             <brief>
14655  Adds an item to the calendar synchronously.
14656             </brief>
14657            <description>
14658             <p>
14659 If the item is successfully inserted in the calendar, the <em>CalendarItem </em>will have its identifier (id attribute) set when the method returns.
14660             </p>
14661             <p>
14662 To update an existing item, call the <em>update() </em>method instead. If you wish to add a copy of an existing <em>CalendarItem </em>object, call <em>CalendarItem.clone()</em> method first and pass the clone to the <em>add()</em> method.
14663             </p>
14664            </description>
14665             <version>
14666  1.0
14667             </version>
14668             <privilegelevel>
14669  public
14670             </privilegelevel>
14671             <privilege>
14672  http://tizen.org/privilege/calendar.write
14673             </privilege>
14674             <Code>  // Gets the default calendar
14675   var calendar = tizen.calendar.getDefaultCalendar(&quot;EVENT&quot;);
14676   
14677   var ev = new tizen.CalendarEvent({description:'HTML5 Introduction', 
14678                                    summary:'HTML5 Webinar ', 
14679                                    startDate: new tizen.TZDate(2011, 3, 30, 10, 0), 
14680                                    duration: new tizen.TimeDuration(1, &quot;HOURS&quot;),
14681                                    location:'Huesca'});
14682                  
14683   calendar.add(ev);
14684   console.log('Event added with uid ' + ev.id.uid);
14685  </Code>
14686         </descriptive>
14687         <Type type="void"/>
14688         <ArgumentList>
14689           <Argument name="item">
14690             <descriptive>
14691                 <description><p>
14692  The calendar item to be added.
14693                 </p></description>
14694             </descriptive>
14695             <Type name="CalendarItem"/>
14696           </Argument>
14697         </ArgumentList>
14698         <Raises>
14699           <RaiseException name="WebAPIException">
14700             <descriptive>
14701                 <description><p>
14702  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
14703                 </p></description>
14704                 <description><p>
14705  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
14706                 </p></description>
14707                 <description><p>
14708  with error type SecurityError, if the application does not have the privilege to call this method.
14709                 </p></description>
14710                 <description><p>
14711  with error type NotSupportedError, if the feature is not supported.
14712                 </p></description>
14713                 <description><p>
14714  with error type UnknownError, if any other error occurs.
14715                 </p></description>
14716             </descriptive>
14717           </RaiseException>
14718         </Raises>
14719       </Operation>
14720       <Operation name="addBatch" id="::Calendar::Calendar::addBatch">
14721         <webidl>    void addBatch(<ref>CalendarItem</ref>[] items,
14722                   optional <ref>CalendarItemArraySuccessCallback</ref>? successCallback,
14723                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
14724         <descriptive>
14725             <brief>
14726  Adds an array of items to the calendar asynchronously.
14727             </brief>
14728            <description>
14729             <p>
14730 If all the items are successfully added to the calendar, the success callback will be invoked, passing the list of <em>CalendarItem </em>objects that were added, with their identifier set (id attribute).
14731             </p>
14732             <p>
14733 The <em>errorCallback()</em> is launched with these error types:
14734             </p>
14735             <ul>
14736               <li>
14737 InvalidValuesError - if any of the input parameters contain an invalid value, the item has any invalid value or the calendar has some restrictions that cause the attempted insertion of the calendar items to fail (for example, limitations in the size of text attributes)              </li>
14738               <li>
14739 UnknownError - if any other error occurs.               </li>
14740             </ul>
14741             <p>
14742 If you wish to update an existing item, call the <em>update() </em>method instead. If you wish to add a copy of an existing <em>CalendarItem </em>object, call CalendarItem.clone() method first and pass the clone to the add() method.
14743             </p>
14744            </description>
14745             <version>
14746  1.0
14747             </version>
14748             <privilegelevel>
14749  public
14750             </privilegelevel>
14751             <privilege>
14752  http://tizen.org/privilege/calendar.write
14753             </privilege>
14754             <Code>  // Defines the error callback.
14755   function errorCallback(response) {
14756     console.log( 'The following error occurred: ' +  response.name);
14757   }
14758
14759   function addEventsSuccess(events) {
14760     console.log(&quot;Successfully added &quot; + events.length + &quot; events!&quot;);
14761   }
14762
14763   // Gets the default calendar
14764   var calendar = tizen.calendar.getDefaultCalendar(&quot;EVENT&quot;);
14765   
14766   var ev = new tizen.CalendarEvent({description:'HTML5 Introduction', 
14767                                    summary:'HTML5 Webinar ', 
14768                                    startDate: new tizen.TZDate(2011, 3, 30, 10, 0), 
14769                                    duration: new tizen.TimeDuration(1, &quot;HOURS&quot;),
14770                                    location:'Huesca'});
14771                  
14772   calendar.addBatch([ev], addEventsSuccess, errorCallback);
14773  </Code>
14774         </descriptive>
14775         <Type type="void"/>
14776         <ArgumentList>
14777           <Argument name="items">
14778             <descriptive>
14779                 <description><p>
14780  The list of calendar items to add.
14781                 </p></description>
14782             </descriptive>
14783             <Type type="array">
14784               <Type name="CalendarItem"/>
14785             </Type>
14786           </Argument>
14787           <Argument optional="optional" name="successCallback">
14788             <descriptive>
14789                 <description><p>
14790  The method to call when the invocation ends successfully.
14791                 </p></description>
14792             </descriptive>
14793             <Type name="CalendarItemArraySuccessCallback" nullable="nullable"/>
14794           </Argument>
14795           <Argument optional="optional" name="errorCallback">
14796             <descriptive>
14797                 <description><p>
14798  The method to invoke when the request fails.
14799                 </p></description>
14800             </descriptive>
14801             <Type name="ErrorCallback" nullable="nullable"/>
14802           </Argument>
14803         </ArgumentList>
14804         <Raises>
14805           <RaiseException name="WebAPIException">
14806             <descriptive>
14807                 <description><p>
14808  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
14809                 </p></description>
14810                 <description><p>
14811  with error type SecurityError, if the application does not have the privilege to call this method.
14812                 </p></description>
14813                 <description><p>
14814  with error type NotSupportedError, if the feature is not supported.
14815                 </p></description>
14816             </descriptive>
14817           </RaiseException>
14818         </Raises>
14819       </Operation>
14820       <Operation name="update" id="::Calendar::Calendar::update">
14821         <webidl>    void update(<ref>CalendarItem</ref> item,
14822                 optional boolean? updateAllInstances) raises(<ref>WebAPIException</ref>);</webidl>
14823         <descriptive>
14824             <brief>
14825  Updates an existing item in the calendar synchronously with the one specified in the argument.
14826             </brief>
14827            <description>
14828             <p>
14829 In case of recurring events, the default behavior is to update all their instances (including their detached ones), as well. If you don't want that, the <em>updateAllInstances</em> flag should be set to <var>false</var>.
14830             </p>
14831            </description>
14832             <version>
14833  1.0
14834             </version>
14835             <privilegelevel>
14836  public
14837             </privilegelevel>
14838             <privilege>
14839  http://tizen.org/privilege/calendar.write
14840             </privilege>
14841             <Code>  var myCalendar;
14842
14843   // Defines the error callback.
14844   function errorCallback(response) {
14845     console.log( 'The following error occurred: ' +  response.name);
14846   }
14847
14848   // Defines the event success callback.
14849   function eventSearchSuccessCallback(events) {
14850     events[0].description = 'New Description';
14851     // Updates the first existing event.
14852     myCalendar.update(events[0]);
14853     console.log(&quot;The first item description was updated!&quot;);
14854   }
14855   
14856   // Gets the default calendar
14857   myCalendar = tizen.calendar.getDefaultCalendar(&quot;EVENT&quot;);
14858
14859   // Finds all events in a Calendar
14860   myCalendar.find(eventSearchSuccessCallback, errorCallback);
14861  </Code>
14862         </descriptive>
14863         <Type type="void"/>
14864         <ArgumentList>
14865           <Argument name="item">
14866             <descriptive>
14867                 <description><p>
14868  The Item object to update.
14869                 </p></description>
14870             </descriptive>
14871             <Type name="CalendarItem"/>
14872           </Argument>
14873           <Argument optional="optional" name="updateAllInstances">
14874             <descriptive>
14875                 <description><p>
14876  The flag indicating whether all the event instances should be updated as well or not (default value is <var>true</var>). This parameter only applies to calendar events, and doesn't apply to tasks.
14877                 </p></description>
14878             </descriptive>
14879             <Type type="boolean" nullable="nullable"/>
14880           </Argument>
14881         </ArgumentList>
14882         <Raises>
14883           <RaiseException name="WebAPIException">
14884             <descriptive>
14885                 <description><p>
14886  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
14887                 </p></description>
14888                 <description><p>
14889  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
14890                 </p></description>
14891                 <description><p>
14892  with error type SecurityError, if the application does not have the privilege to call this method.
14893                 </p></description>
14894                 <description><p>
14895  with error type NotSupportedError, if the feature is not supported.
14896                 </p></description>
14897                 <description><p>
14898  with error type UnknownError, if any other error occurs.
14899                 </p></description>
14900             </descriptive>
14901           </RaiseException>
14902         </Raises>
14903       </Operation>
14904       <Operation name="updateBatch" id="::Calendar::Calendar::updateBatch">
14905         <webidl>     void updateBatch(<ref>CalendarItem</ref>[] items,
14906                      optional <ref>SuccessCallback</ref>? successCallback,
14907                      optional <ref>ErrorCallback</ref>? errorCallback,
14908                      optional boolean? updateAllInstances) raises(<ref>WebAPIException</ref>);</webidl>
14909         <descriptive>
14910             <brief>
14911  Updates an array of existing items in the calendar asynchronously with the specified values in the argument.
14912             </brief>
14913            <description>
14914             <p>
14915 In case of recurring events, the default behavior is to update all their instances (including their detached ones) as well. The <em>updateAllInstances</em> flag should be set to <var>false</var> to change the default behavior.
14916             </p>
14917             <p>
14918 The <em>errorCallback() </em>is launched with these error types:
14919             </p>
14920             <ul>
14921               <li>
14922 InvalidValuesError - if parameters such as the calendar item has any invalid value or the calendar has some restrictions that cause the attempted insertion of the calendar items to fail (for example, limitations in the size of text attributes).              </li>
14923               <li>
14924 UnknownError - if any other error occurs.              </li>
14925             </ul>
14926            </description>
14927             <version>
14928  1.0
14929             </version>
14930             <privilegelevel>
14931  public
14932             </privilegelevel>
14933             <privilege>
14934  http://tizen.org/privilege/calendar.write
14935             </privilege>
14936             <Code>  var myCalendar;
14937
14938   // Defines the error callback.
14939   function errorCallback(response) {
14940     console.log( 'The following error occurred: ' +  response.name);
14941   }
14942
14943   // Defines the success callback
14944   function updateEventsSuccess() {
14945     console.log(&quot;Successfully updated !&quot; );
14946   }
14947
14948   // Defines the event success callback.
14949   function eventSearchSuccessCallback(events) {
14950     events[0].description = 'New Description 1';
14951     events[1].description = 'New Description 2';
14952     // Update the first two existing events.
14953     myCalendar.updateBatch(events.slice(0,2), updateEventsSuccess, errorCallback);
14954   }
14955
14956   // Gets the default calendar
14957   myCalendar = tizen.calendar.getDefaultCalendar(&quot;EVENT&quot;);
14958
14959   // Finds all events in Calendar
14960   myCalendar.find(eventSearchSuccessCallback, errorCallback);
14961  </Code>
14962         </descriptive>
14963         <Type type="void"/>
14964         <ArgumentList>
14965           <Argument name="items">
14966             <descriptive>
14967                 <description><p>
14968  The list of calendar item objects to update.
14969                 </p></description>
14970             </descriptive>
14971             <Type type="array">
14972               <Type name="CalendarItem"/>
14973             </Type>
14974           </Argument>
14975           <Argument optional="optional" name="successCallback">
14976             <descriptive>
14977                 <description><p>
14978  The method to invoke when the <em>updateEvents() </em>request succeeds.
14979                 </p></description>
14980             </descriptive>
14981             <Type name="SuccessCallback" nullable="nullable"/>
14982           </Argument>
14983           <Argument optional="optional" name="errorCallback">
14984             <descriptive>
14985                 <description><p>
14986  The method to invoke when the <em>updateEvents() </em>request fails.
14987                 </p></description>
14988             </descriptive>
14989             <Type name="ErrorCallback" nullable="nullable"/>
14990           </Argument>
14991           <Argument optional="optional" name="updateAllInstances">
14992             <descriptive>
14993                 <description><p>
14994  The flag indicating whether all the event instances should be updated or not. Default value for this flag is <var>true</var>). This parameter applies only to calendar events, doesn't apply to tasks.
14995                 </p></description>
14996             </descriptive>
14997             <Type type="boolean" nullable="nullable"/>
14998           </Argument>
14999         </ArgumentList>
15000         <Raises>
15001           <RaiseException name="WebAPIException">
15002             <descriptive>
15003                 <description><p>
15004  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
15005                 </p></description>
15006                 <description><p>
15007  with error type SecurityError, if the application does not have the privilege to call this method.
15008                 </p></description>
15009                 <description><p>
15010  with error type NotSupportedError, if the feature is not supported.
15011                 </p></description>
15012             </descriptive>
15013           </RaiseException>
15014         </Raises>
15015       </Operation>
15016       <Operation name="remove" id="::Calendar::Calendar::remove">
15017         <webidl>    void remove(<ref>CalendarItemId</ref> id) raises(<ref>WebAPIException</ref>);</webidl>
15018         <descriptive>
15019             <brief>
15020  Removes an item from the calendar that corresponds to the specified identifier. This method will throw an exception if it fails to remove the specified calendar item.
15021             </brief>
15022             <version>
15023  1.0
15024             </version>
15025             <privilegelevel>
15026  public
15027             </privilegelevel>
15028             <privilege>
15029  http://tizen.org/privilege/calendar.write
15030             </privilege>
15031             <remark>
15032  <b>For (recurring) events:</b> In the case of calendar events, if the recurrence id (<em>rid</em> attribute) is set to <var>null</var>, this method will remove the event identified by <em>uid</em>, and all of its possible detached instances.
15033             </remark>
15034             <Code>  var myCalendar;
15035
15036   // Defines the error callback.
15037   function errorCallback(response) {
15038     console.log( 'The following error occurred: ' +  response.name);
15039   }
15040
15041   // Defines the event success callback.
15042   function eventSearchSuccessCallback(events) {
15043     // Deletes the first existing event.
15044     myCalendar.remove(events[0].id);
15045     console.log('The first event was removed');
15046   }
15047
15048   // Gets default calendar
15049   myCalendar = tizen.calendar.getDefaultCalendar(&quot;EVENT&quot;);
15050   
15051   // Finds all events in Calendar
15052   myCalendar.find(eventSearchSuccessCallback, errorCallback);
15053  </Code>
15054         </descriptive>
15055         <Type type="void"/>
15056         <ArgumentList>
15057           <Argument name="id">
15058             <descriptive>
15059                 <description><p>
15060  The identifier (ID attribute) of the item object to delete.
15061                 </p></description>
15062             </descriptive>
15063             <Type name="CalendarItemId"/>
15064           </Argument>
15065         </ArgumentList>
15066         <Raises>
15067           <RaiseException name="WebAPIException">
15068             <descriptive>
15069                 <description><p>
15070  with error type NotFoundError, if the identifier does not match any item in the calendar.
15071                 </p></description>
15072                 <description><p>
15073  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
15074                 </p></description>
15075                 <description><p>
15076  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
15077                 </p></description>
15078                 <description><p>
15079  with error type SecurityError, if the application does not have the privilege to call this method.
15080                 </p></description>
15081                 <description><p>
15082  with error type NotSupportedError, if the feature is not supported.
15083                 </p></description>
15084                 <description><p>
15085  with error type UnknownError, if the item could not be removed because of an unknown error.
15086                 </p></description>
15087             </descriptive>
15088           </RaiseException>
15089         </Raises>
15090       </Operation>
15091       <Operation name="removeBatch" id="::Calendar::Calendar::removeBatch">
15092         <webidl>    void removeBatch(<ref>CalendarItemId</ref>[] ids,
15093                      optional <ref>SuccessCallback</ref>? successCallback,
15094                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
15095         <descriptive>
15096             <brief>
15097  Removes several items from the calendar asynchronously depending on the specified identifiers.
15098             </brief>
15099            <description>
15100             <p>
15101 The errorCallback is launched with these error types:
15102             </p>
15103             <ul>
15104               <li>
15105 NotFoundError - if an identifier in the <em>ids </em>parameter does not correspond to the ID attribute of an item in the calendar.              </li>
15106               <li>
15107 InvalidValuesError - if any of the input parameters contain an invalid value.              </li>
15108               <li>
15109 UnknownError - if any other error occurs.              </li>
15110             </ul>
15111            </description>
15112             <version>
15113  1.0
15114             </version>
15115             <privilegelevel>
15116  public
15117             </privilegelevel>
15118             <privilege>
15119  http://tizen.org/privilege/calendar.write
15120             </privilege>
15121             <remark>
15122  <b>For (recurring) events:</b> In the case of calendar events, if the recurrence id, <em>rid</em>, is set to <var>null</var>, this method will remove the event identified by <em>uid</em>, as well as all its possible detached instances.
15123             </remark>
15124             <Code>  var myCalendar;
15125
15126   // Defines the error callback.
15127   function errorCallback(response) {
15128     console.log( 'The following error occurred: ' +  response.name);
15129   }
15130
15131   // Defines the removeBatch callback
15132   function removeBatchCallback() {
15133     console.log(&quot;Requested events were successfully removed.&quot;);
15134   }
15135
15136   // Defines the event search success callback.
15137   function eventSearchSuccessCallback(events) {
15138     // Deletes the first two existing events.
15139     myCalendar.removeBatch([events[0].id, events[1].id], 
15140                            removeBatchCallback, 
15141                            errorCallback);
15142   }
15143
15144   // Gets default calendar
15145   myCalendar = tizen.calendar.getDefaultCalendar(&quot;EVENT&quot;);
15146     
15147   // Retrieves all events in Calendar
15148   myCalendar.find(eventSearchSuccessCallback, errorCallback);
15149  </Code>
15150         </descriptive>
15151         <Type type="void"/>
15152         <ArgumentList>
15153           <Argument name="ids">
15154             <descriptive>
15155                 <description><p>
15156  The identifiers (<em>id </em>attribute) of the items to delete.
15157                 </p></description>
15158             </descriptive>
15159             <Type type="array">
15160               <Type name="CalendarItemId"/>
15161             </Type>
15162           </Argument>
15163           <Argument optional="optional" name="successCallback">
15164             <descriptive>
15165                 <description><p>
15166  The method to invoke when the <em>removeBatch()</em> request succeeds.
15167                 </p></description>
15168             </descriptive>
15169             <Type name="SuccessCallback" nullable="nullable"/>
15170           </Argument>
15171           <Argument optional="optional" name="errorCallback">
15172             <descriptive>
15173                 <description><p>
15174  The method to invoke when the <em>removeBatch()</em> request fails.
15175                 </p></description>
15176             </descriptive>
15177             <Type name="ErrorCallback" nullable="nullable"/>
15178           </Argument>
15179         </ArgumentList>
15180         <Raises>
15181           <RaiseException name="WebAPIException">
15182             <descriptive>
15183                 <description><p>
15184  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
15185                 </p></description>
15186                 <description><p>
15187  with error type SecurityError, if the application does not have the privilege to call this method.
15188                 </p></description>
15189                 <description><p>
15190  with error type NotSupportedError, if the feature is not supported.
15191                 </p></description>
15192             </descriptive>
15193           </RaiseException>
15194         </Raises>
15195       </Operation>
15196       <Operation name="find" id="::Calendar::Calendar::find">
15197         <webidl>    void find(<ref>CalendarItemArraySuccessCallback</ref> successCallback,
15198               optional <ref>ErrorCallback</ref>? errorCallback,
15199               optional <ref>AbstractFilter</ref>? filter,
15200               optional <ref>SortMode</ref>? sortMode) raises(<ref>WebAPIException</ref>);</webidl>
15201         <descriptive>
15202             <brief>
15203  Finds and fetches an array of <em>CalendarItem </em>objects for items stored in the calendar according to the supplied filter if it is valid else it will return all the items stored.
15204             </brief>
15205            <description>
15206             <p>
15207 If the filter is passed and contains valid values, only those values in the calendar that match the filter criteria as specified in the <em>AbstractFilter </em>interface will be returned in the <em>successCallback()</em>.
15208 If no filter is passed, or the filter contains any invalid value which is <var>null </var>or undefined, then the implementation must return the full list of items in the <em>successCallback()</em>.
15209 If no items are available in the calendar (it is empty) or no item matches the filter criteria, the <em>successCallback() </em>will be invoked with an empty array.
15210             </p>
15211             <p>
15212 The errorCallback is launched with these error types:
15213             </p>
15214             <ul>
15215               <li>
15216 InvalidValuesError - if any of the input parameters contain an invalid value.              </li>
15217               <li>
15218 UnknownError - if any other error occurs.              </li>
15219             </ul>
15220             <p>
15221 <b>Filter specific remarks:</b>            </p>
15222             <ul>
15223               <li>
15224 For event filtering based on start/end dates, items that recur during the given time interval will be found, even if the parent item itself is outside the interval.              </li>
15225               <li>
15226 For event filtering based on the identifier, the identifier type should be CalendarEventID (<em>uid</em> and <em>rid</em>).
15227 If no recurrence ID is given, the filter will match both the parent event and all its detached instances.              </li>
15228             </ul>
15229            </description>
15230             <version>
15231  1.0
15232             </version>
15233             <privilegelevel>
15234  public
15235             </privilegelevel>
15236             <privilege>
15237  http://tizen.org/privilege/calendar.read
15238             </privilege>
15239             <Code>  // Defines the error callback.
15240   function errorCallback(response) {
15241     console.log( 'The following error occurred: ' +  response.name);
15242   }
15243
15244   // Defines the event search success callback.
15245   function eventSearchSuccessCallback(events) {
15246     console.log(events.length + ' results found.');
15247   }
15248
15249   // Gets default calendar
15250   var calendar = tizen.calendar.getDefaultCalendar(&quot;EVENT&quot;);
15251   
15252   // Finds all events the calendar that contain in the summary the string Tizen.
15253   var filter = new tizen.AttributeFilter('summary', 'CONTAINS', 'Tizen');
15254
15255   // The events returned by the find() query will be sorted by ascending summary
15256   var sortingMode = new tizen.SortMode('summary', 'ASC');
15257                         
15258   calendar.find(eventSearchSuccessCallback, errorCallback, filter, sortingMode);
15259  </Code>
15260         </descriptive>
15261         <Type type="void"/>
15262         <ArgumentList>
15263           <Argument name="successCallback">
15264             <descriptive>
15265                 <description><p>
15266  The method to call when the invocation ends successfully.
15267                 </p></description>
15268             </descriptive>
15269             <Type name="CalendarItemArraySuccessCallback"/>
15270           </Argument>
15271           <Argument optional="optional" name="errorCallback">
15272             <descriptive>
15273                 <description><p>
15274  The method to call when an error occurs.
15275                 </p></description>
15276             </descriptive>
15277             <Type name="ErrorCallback" nullable="nullable"/>
15278           </Argument>
15279           <Argument optional="optional" name="filter">
15280             <descriptive>
15281                 <description><p>
15282  The supplied data used to filter the results of the <em>find() </em>method.
15283                 </p></description>
15284             </descriptive>
15285             <Type name="AbstractFilter" nullable="nullable"/>
15286           </Argument>
15287           <Argument optional="optional" name="sortMode">
15288             <descriptive>
15289                 <description><p>
15290  The sort order in which the items return.
15291                 </p></description>
15292             </descriptive>
15293             <Type name="SortMode" nullable="nullable"/>
15294           </Argument>
15295         </ArgumentList>
15296         <Raises>
15297           <RaiseException name="WebAPIException">
15298             <descriptive>
15299                 <description><p>
15300  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
15301                 </p></description>
15302                 <description><p>
15303  with error type SecurityError, if the application does not have the privilege to call this method.
15304                 </p></description>
15305                 <description><p>
15306  with error type NotSupportedError, if the feature is not supported.
15307                 </p></description>
15308             </descriptive>
15309           </RaiseException>
15310         </Raises>
15311       </Operation>
15312       <Operation name="addChangeListener" id="::Calendar::Calendar::addChangeListener">
15313         <webidl>    long addChangeListener(<ref>CalendarChangeCallback</ref> successCallback) raises(<ref>WebAPIException</ref>);</webidl>
15314         <descriptive>
15315             <brief>
15316  Adds a listener to receive notifications about calendar changes.
15317             </brief>
15318            <description>
15319             <p>
15320 When executed, the implementation must immediately return a subscription identifier that identifies the watch operation. After returning the identifier, the watcher methods are invoked asynchronously.
15321             </p>
15322            </description>
15323             <version>
15324  1.0
15325             </version>
15326             <privilegelevel>
15327  public
15328             </privilegelevel>
15329             <privilege>
15330  http://tizen.org/privilege/calendar.read
15331             </privilege>
15332             <Code>  var watcherId = 0; // watcher identifier
15333   var calendar; // This example assumes calendar is initialized
15334
15335   var watcher = {
15336     onitemsadded: function(items) {
15337       console.log(items.length + ' items were added');
15338     },
15339     onitemsupdated: function(items) {
15340       console.log(items.length + ' items were updated');
15341     },
15342     onitemsremoved: function(ids) {
15343       console.log(ids.length + ' items were removed');
15344     }
15345   };
15346
15347   // Registers to be notified when the calendar changes
15348   watcherId = calendar.addChangeListener(watcher);
15349  </Code>
15350         </descriptive>
15351         <Type type="long">
15352           <descriptive>
15353               <description><p>
15354  long The identifier used to clear the watch subscription.
15355               </p></description>
15356           </descriptive>
15357         </Type>
15358         <ArgumentList>
15359           <Argument name="successCallback">
15360             <descriptive>
15361                 <description><p>
15362  The methods to invoke on receiving calendar change notifications.
15363                 </p></description>
15364             </descriptive>
15365             <Type name="CalendarChangeCallback"/>
15366           </Argument>
15367         </ArgumentList>
15368         <Raises>
15369           <RaiseException name="WebAPIException">
15370             <descriptive>
15371                 <description><p>
15372  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
15373                 </p></description>
15374                 <description><p>
15375  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
15376                 </p></description>
15377                 <description><p>
15378  with error type SecurityError, if the application does not have the privilege to call this method.
15379                 </p></description>
15380                 <description><p>
15381  with error type NotSupportedError, if the feature is not supported.
15382                 </p></description>
15383                 <description><p>
15384  with error type UnknownError, if any other error occurs.
15385                 </p></description>
15386             </descriptive>
15387           </RaiseException>
15388         </Raises>
15389       </Operation>
15390       <Operation name="removeChangeListener" id="::Calendar::Calendar::removeChangeListener">
15391         <webidl>    void removeChangeListener(long watchId) raises(<ref>WebAPIException</ref>);</webidl>
15392         <descriptive>
15393             <brief>
15394  Unsubscribes from receiving notification for a calendar item changes.
15395             </brief>
15396            <description>
15397             <p>
15398 If the <em>watchId </em>argument is valid and corresponds to a subscription already in place, the watch process must immediately stop and no further callbacks must be invoked. If the <em>watchId </em>argument is not valid or does not correspond to a valid subscription, the method should return without any further action.
15399             </p>
15400            </description>
15401             <version>
15402  1.0
15403             </version>
15404             <privilegelevel>
15405  public
15406             </privilegelevel>
15407             <privilege>
15408  http://tizen.org/privilege/calendar.read
15409             </privilege>
15410             <Code>  var watcherId = 0; // watcher identifier
15411   var calendar; // This example assumes calendar is initialized
15412
15413   // Receives calendar changes
15414   var watcher = {
15415     onitemsadded: function(items) {
15416       console.log(items.length + ' items were added');
15417     },
15418     onitemsupdated: function(items) {
15419       console.log(evitemsents.length + ' items were updated');
15420     },
15421     onitemsremoved: function(ids) {
15422       console.log(ids.length + ' items were removed');
15423     }
15424   };
15425
15426   // Registers to be notified when the calendar changes
15427   watcherId = calendar.addChangeListener(watcher);
15428
15429   // Cancels the watch operation
15430   calendar.removeChangeListener(watcherId);
15431  </Code>
15432         </descriptive>
15433         <Type type="void"/>
15434         <ArgumentList>
15435           <Argument name="watchId">
15436             <descriptive>
15437                 <description><p>
15438  Subscription Identifier.
15439                 </p></description>
15440             </descriptive>
15441             <Type type="long"/>
15442           </Argument>
15443         </ArgumentList>
15444         <Raises>
15445           <RaiseException name="WebAPIException">
15446             <descriptive>
15447                 <description><p>
15448  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
15449                 </p></description>
15450                 <description><p>
15451  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
15452                 </p></description>
15453                 <description><p>
15454  with error type SecurityError, if the application does not have the privilege to call this method.
15455                 </p></description>
15456                 <description><p>
15457  with error type NotSupportedError, if the feature is not supported.
15458                 </p></description>
15459                 <description><p>
15460  with error type UnknownError if any other error occurs.
15461                 </p></description>
15462             </descriptive>
15463           </RaiseException>
15464         </Raises>
15465       </Operation>
15466     </Interface>
15467     <Dictionary name="CalendarItemInit" id="::Calendar::CalendarItemInit">
15468       <webidl>  dictionary CalendarItemInit {
15469     DOMString description;
15470     DOMString summary;
15471     boolean isAllDay;
15472     <ref>TZDate</ref> startDate;
15473     <ref>TimeDuration</ref> duration;
15474     DOMString location;
15475     <ref>SimpleCoordinates</ref> geolocation;
15476     DOMString organizer;
15477     <ref>CalendarItemVisibility</ref> visibility;
15478     <ref>CalendarItemStatus</ref> status;
15479     <ref>CalendarItemPriority</ref> priority;
15480     <ref>CalendarAlarm</ref>[] alarms;
15481     DOMString[] categories;
15482     <ref>CalendarAttendee</ref>[] attendees;
15483   };</webidl>
15484       <descriptive>
15485           <brief>
15486  A dictionary that is used for creating calendar items.
15487           </brief>
15488          <description>
15489           <p>
15490 These attributes are shared by both calendar events and tasks.
15491           </p>
15492          </description>
15493           <version>
15494  1.0
15495           </version>
15496       </descriptive>
15497       <DictionaryMember name="description" id="::Calendar::CalendarItemInit::description">
15498         <webidl>    DOMString description;</webidl>
15499         <Type type="DOMString"/>
15500       </DictionaryMember>
15501       <DictionaryMember name="summary" id="::Calendar::CalendarItemInit::summary">
15502         <webidl>    DOMString summary;</webidl>
15503         <Type type="DOMString"/>
15504       </DictionaryMember>
15505       <DictionaryMember name="isAllDay" id="::Calendar::CalendarItemInit::isAllDay">
15506         <webidl>    boolean isAllDay;</webidl>
15507         <Type type="boolean"/>
15508       </DictionaryMember>
15509       <DictionaryMember name="startDate" id="::Calendar::CalendarItemInit::startDate">
15510         <webidl>    <ref>TZDate</ref> startDate;</webidl>
15511         <Type name="TZDate"/>
15512       </DictionaryMember>
15513       <DictionaryMember name="duration" id="::Calendar::CalendarItemInit::duration">
15514         <webidl>    <ref>TimeDuration</ref> duration;</webidl>
15515         <Type name="TimeDuration"/>
15516       </DictionaryMember>
15517       <DictionaryMember name="location" id="::Calendar::CalendarItemInit::location">
15518         <webidl>    DOMString location;</webidl>
15519         <Type type="DOMString"/>
15520       </DictionaryMember>
15521       <DictionaryMember name="geolocation" id="::Calendar::CalendarItemInit::geolocation">
15522         <webidl>    <ref>SimpleCoordinates</ref> geolocation;</webidl>
15523         <Type name="SimpleCoordinates"/>
15524       </DictionaryMember>
15525       <DictionaryMember name="organizer" id="::Calendar::CalendarItemInit::organizer">
15526         <webidl>    DOMString organizer;</webidl>
15527         <Type type="DOMString"/>
15528       </DictionaryMember>
15529       <DictionaryMember name="visibility" id="::Calendar::CalendarItemInit::visibility">
15530         <webidl>    <ref>CalendarItemVisibility</ref> visibility;</webidl>
15531         <Type name="CalendarItemVisibility"/>
15532       </DictionaryMember>
15533       <DictionaryMember name="status" id="::Calendar::CalendarItemInit::status">
15534         <webidl>    <ref>CalendarItemStatus</ref> status;</webidl>
15535         <Type name="CalendarItemStatus"/>
15536       </DictionaryMember>
15537       <DictionaryMember name="priority" id="::Calendar::CalendarItemInit::priority">
15538         <webidl>    <ref>CalendarItemPriority</ref> priority;</webidl>
15539         <Type name="CalendarItemPriority"/>
15540       </DictionaryMember>
15541       <DictionaryMember name="alarms" id="::Calendar::CalendarItemInit::alarms">
15542         <webidl>    <ref>CalendarAlarm</ref>[] alarms;</webidl>
15543         <Type type="array">
15544           <Type name="CalendarAlarm"/>
15545         </Type>
15546       </DictionaryMember>
15547       <DictionaryMember name="categories" id="::Calendar::CalendarItemInit::categories">
15548         <webidl>    DOMString[] categories;</webidl>
15549         <Type type="array">
15550           <Type type="DOMString"/>
15551         </Type>
15552       </DictionaryMember>
15553       <DictionaryMember name="attendees" id="::Calendar::CalendarItemInit::attendees">
15554         <webidl>    <ref>CalendarAttendee</ref>[] attendees;</webidl>
15555         <Type type="array">
15556           <Type name="CalendarAttendee"/>
15557         </Type>
15558       </DictionaryMember>
15559     </Dictionary>
15560     <Dictionary name="CalendarTaskInit" id="::Calendar::CalendarTaskInit">
15561       <webidl>  dictionary CalendarTaskInit: <ref>CalendarItemInit</ref> {
15562     <ref>TZDate</ref> dueDate;
15563     <ref>TZDate</ref> completedDate;
15564     short progress;
15565   };</webidl>
15566       <descriptive>
15567           <brief>
15568  A dictionary that is used for creating calendar tasks.
15569           </brief>
15570          <description>
15571           <p>
15572 It also provides an interface for specifying task attributes upon task creation (in the <em>CalendarTask </em>constructor).
15573           </p>
15574           <p>
15575 All the attributes are optional and are undefined by default.
15576           </p>
15577          </description>
15578           <version>
15579  1.0
15580           </version>
15581       </descriptive>
15582       <DictionaryInheritance>
15583         <Name name="CalendarItemInit"/>
15584       </DictionaryInheritance>
15585       <DictionaryMember name="dueDate" id="::Calendar::CalendarTaskInit::dueDate">
15586         <webidl>    <ref>TZDate</ref> dueDate;</webidl>
15587         <Type name="TZDate"/>
15588       </DictionaryMember>
15589       <DictionaryMember name="completedDate" id="::Calendar::CalendarTaskInit::completedDate">
15590         <webidl>    <ref>TZDate</ref> completedDate;</webidl>
15591         <Type name="TZDate"/>
15592       </DictionaryMember>
15593       <DictionaryMember name="progress" id="::Calendar::CalendarTaskInit::progress">
15594         <webidl>    short progress;</webidl>
15595         <Type type="short"/>
15596       </DictionaryMember>
15597     </Dictionary>
15598     <Dictionary name="CalendarEventInit" id="::Calendar::CalendarEventInit">
15599       <webidl>  dictionary CalendarEventInit: <ref>CalendarItemInit</ref> {
15600     <ref>TZDate</ref> endDate;
15601     <ref>EventAvailability</ref> availability;
15602     <ref>CalendarRecurrenceRule</ref> recurrenceRule;
15603   };</webidl>
15604       <descriptive>
15605           <brief>
15606  A dictionary that is used for creating calendar events.
15607           </brief>
15608          <description>
15609           <p>
15610 Provides an interface for specifying event attributes upon event creation (in the <em>CalendarEvent </em>constructor).
15611           </p>
15612           <p>
15613 All the attributes are optional and are undefined by default.
15614           </p>
15615          </description>
15616           <version>
15617  1.0
15618           </version>
15619       </descriptive>
15620       <DictionaryInheritance>
15621         <Name name="CalendarItemInit"/>
15622       </DictionaryInheritance>
15623       <DictionaryMember name="endDate" id="::Calendar::CalendarEventInit::endDate">
15624         <webidl>    <ref>TZDate</ref> endDate;</webidl>
15625         <Type name="TZDate"/>
15626       </DictionaryMember>
15627       <DictionaryMember name="availability" id="::Calendar::CalendarEventInit::availability">
15628         <webidl>    <ref>EventAvailability</ref> availability;</webidl>
15629         <Type name="EventAvailability"/>
15630       </DictionaryMember>
15631       <DictionaryMember name="recurrenceRule" id="::Calendar::CalendarEventInit::recurrenceRule">
15632         <webidl>    <ref>CalendarRecurrenceRule</ref> recurrenceRule;</webidl>
15633         <Type name="CalendarRecurrenceRule"/>
15634       </DictionaryMember>
15635     </Dictionary>
15636     <Interface name="CalendarItem" id="::Calendar::CalendarItem">
15637       <webidl>  [NoInterfaceObject] interface CalendarItem {
15638     readonly attribute <ref>CalendarItemId</ref>? id;
15639
15640     readonly attribute <ref>CalendarId</ref>? calendarId;
15641
15642     readonly attribute <ref>TZDate</ref>? lastModificationDate;
15643     
15644     attribute DOMString? description setraises(<ref>WebAPIException</ref>);
15645     
15646     attribute DOMString? summary setraises(<ref>WebAPIException</ref>);
15647     
15648     attribute boolean isAllDay setraises(<ref>WebAPIException</ref>);
15649     
15650     attribute <ref>TZDate</ref>? startDate setraises(<ref>WebAPIException</ref>);
15651     
15652     attribute <ref>TimeDuration</ref>? duration setraises(<ref>WebAPIException</ref>);
15653     
15654     attribute DOMString? location setraises(<ref>WebAPIException</ref>);
15655     
15656     attribute <ref>SimpleCoordinates</ref>? geolocation setraises(<ref>WebAPIException</ref>);
15657     
15658     attribute DOMString? organizer setraises(<ref>WebAPIException</ref>);
15659     
15660     attribute <ref>CalendarItemVisibility</ref> visibility setraises(<ref>WebAPIException</ref>);
15661     
15662     attribute <ref>CalendarItemStatus</ref> status setraises(<ref>WebAPIException</ref>);
15663     
15664     attribute <ref>CalendarItemPriority</ref> priority setraises(<ref>WebAPIException</ref>);
15665     
15666     attribute <ref>CalendarAlarm</ref>[] alarms setraises(<ref>WebAPIException</ref>);
15667     
15668     attribute DOMString[] categories setraises(<ref>WebAPIException</ref>);
15669     
15670     attribute <ref>CalendarAttendee</ref>[] attendees setraises(<ref>WebAPIException</ref>);
15671     
15672     DOMString convertToString(<ref>CalendarTextFormat</ref> format) raises(<ref>WebAPIException</ref>);
15673
15674     <ref>CalendarItem</ref> clone() raises(<ref>WebAPIException</ref>);
15675   };</webidl>
15676       <descriptive>
15677           <brief>
15678  This is a parent interface that is used to create Calendar events and tasks.
15679 These attributes are shared by both events and tasks.
15680           </brief>
15681           <version>
15682  1.0
15683           </version>
15684       </descriptive>
15685       <ExtendedAttributeList>
15686         <ExtendedAttribute name="NoInterfaceObject">
15687           <webidl>NoInterfaceObject</webidl>
15688         </ExtendedAttribute>
15689       </ExtendedAttributeList>
15690       <Attribute readonly="readonly" name="id" id="::Calendar::CalendarItem::id">
15691         <webidl>    readonly attribute <ref>CalendarItemId</ref>? id;</webidl>
15692         <descriptive>
15693             <brief>
15694  An attribute to persistently and uniquely identify an item in implementation.
15695             </brief>
15696            <description>
15697             <p>
15698 Includes a UID and a possible recurrence ID that is needed to identify a particular instance of a recurring event.
15699             </p>
15700             <p>
15701 By default, this attribute is set to null.
15702             </p>
15703            </description>
15704             <version>
15705  1.0
15706             </version>
15707         </descriptive>
15708         <Type name="CalendarItemId" nullable="nullable"/>
15709       </Attribute>
15710       <Attribute readonly="readonly" name="calendarId" id="::Calendar::CalendarItem::calendarId">
15711         <webidl>    readonly attribute <ref>CalendarId</ref>? calendarId;</webidl>
15712         <descriptive>
15713             <brief>
15714  An attribute to identify the calendar in which this item is saved.
15715             </brief>
15716            <description>
15717             <p>
15718 By default, this attribute is set to null.
15719             </p>
15720            </description>
15721             <version>
15722  2.1
15723             </version>
15724         </descriptive>
15725         <Type name="CalendarId" nullable="nullable"/>
15726       </Attribute>
15727       <Attribute readonly="readonly" name="lastModificationDate" id="::Calendar::CalendarItem::lastModificationDate">
15728         <webidl>    readonly attribute <ref>TZDate</ref>? lastModificationDate;</webidl>
15729         <descriptive>
15730             <brief>
15731  An attribute to identify the last modified date and time of an item.
15732             </brief>
15733            <description>
15734             <p>
15735 This attribute is automatically populated and cannot be edited by the client.
15736 (See RFC 5545 - Section 3.8.7.3).
15737             </p>
15738            </description>
15739             <version>
15740  1.0
15741             </version>
15742         </descriptive>
15743         <Type name="TZDate" nullable="nullable"/>
15744       </Attribute>
15745       <Attribute name="description" id="::Calendar::CalendarItem::description">
15746         <webidl>    attribute DOMString? description setraises(<ref>WebAPIException</ref>);</webidl>
15747         <descriptive>
15748             <brief>
15749  An attribute to store the textual descriptions of an item.
15750             </brief>
15751            <description>
15752             <p>
15753 It is usually used to provide a more complete description of the item and any supporting information than what is provided in the summary attribute.
15754 (See RFC 5545 - Section 3.8.1.5).
15755             </p>
15756             <p>
15757 The default value is an empty string. 
15758             </p>
15759            </description>
15760             <version>
15761  1.0
15762             </version>
15763             <Code>  event.description = 'Tizen Codefest';
15764  </Code>
15765         </descriptive>
15766         <Type type="DOMString" nullable="nullable"/>
15767         <SetRaises>
15768           <RaiseException name="WebAPIException"/>
15769         </SetRaises>
15770       </Attribute>
15771       <Attribute name="summary" id="::Calendar::CalendarItem::summary">
15772         <webidl>    attribute DOMString? summary setraises(<ref>WebAPIException</ref>);</webidl>
15773         <descriptive>
15774             <brief>
15775  An attribute to store a short summary or subject for an item.
15776 (See RFC 5545 - Section 3.8.1.12)
15777             </brief>
15778            <description>
15779             <p>
15780 The default value is an empty string. 
15781             </p>
15782            </description>
15783             <version>
15784  1.0
15785             </version>
15786             <Code>  event.summary = 'Launching the Tizen reference implementation';
15787  </Code>
15788         </descriptive>
15789         <Type type="DOMString" nullable="nullable"/>
15790         <SetRaises>
15791           <RaiseException name="WebAPIException"/>
15792         </SetRaises>
15793       </Attribute>
15794       <Attribute name="isAllDay" id="::Calendar::CalendarItem::isAllDay">
15795         <webidl>    attribute boolean isAllDay setraises(<ref>WebAPIException</ref>);</webidl>
15796         <descriptive>
15797             <brief>
15798  An attribute that behaves like a flag to indicate whether an event is an all-day event or not.
15799             </brief>
15800            <description>
15801             <p>
15802 If set to <var>true</var>, then the time and time zone of the <em>startDate </em>are to be ignored and are not guaranteed to be stored in the database. An all-day event always covers the whole day, regardless of which time zone it was defined in and what the current time zone is. The duration must be <var>n*60*24 </var>minutes for an event lasting <var>n</var> days.
15803             </p>
15804             <p>
15805 The default value for this attribute is <var>false</var>.
15806             </p>
15807            </description>
15808             <version>
15809  1.0
15810             </version>
15811             <Code>  event.isAllDay = true; // All-Day event
15812  </Code>
15813         </descriptive>
15814         <Type type="boolean"/>
15815         <SetRaises>
15816           <RaiseException name="WebAPIException"/>
15817         </SetRaises>
15818       </Attribute>
15819       <Attribute name="startDate" id="::Calendar::CalendarItem::startDate">
15820         <webidl>    attribute <ref>TZDate</ref>? startDate setraises(<ref>WebAPIException</ref>);</webidl>
15821         <descriptive>
15822             <brief>
15823  An attribute to store the start date/time for an item.
15824 (see RFC 5545 - Section 3.8.2.4).
15825             </brief>
15826            <description>
15827             <p>
15828 The default value for this attribute is <var>null</var>.
15829             </p>
15830             <p>
15831 <em>startDate</em> must be specified in the same time zone as <em>endDate / dueDate</em> if provided.
15832             </p>
15833            </description>
15834             <version>
15835  1.0
15836             </version>
15837            <description>
15838             <p>
15839 This attribute is precise to the second. Milliseconds are ignored.
15840             </p>
15841            </description>
15842             <Code>  // 2010-04-30 09:00
15843   event.startDate = new tizen.TZDate(2010, 3, 30, 9, 0);
15844  </Code>
15845         </descriptive>
15846         <Type name="TZDate" nullable="nullable"/>
15847         <SetRaises>
15848           <RaiseException name="WebAPIException"/>
15849         </SetRaises>
15850       </Attribute>
15851       <Attribute name="duration" id="::Calendar::CalendarItem::duration">
15852         <webidl>    attribute <ref>TimeDuration</ref>? duration setraises(<ref>WebAPIException</ref>);</webidl>
15853         <descriptive>
15854             <brief>
15855  An attribute to denote the duration of the calendar component.
15856 (See RFC 5545 - Section 3.8.2.5).
15857             </brief>
15858            <description>
15859             <p>
15860 By default, this attribute is set to <var>null</var>.
15861             </p>
15862             <p>
15863 <em>duration</em> and <em>endDate / dueDate</em> are mutually exclusive, hence, only one of them can be non-null.
15864             </p>
15865             <p>
15866 This attribute is precise to the second. Milliseconds are ignored.
15867             </p>
15868            </description>
15869             <remark>
15870  Note that the implementation may not save the duration itself, rather convert it to the corresponding endDate/dueDate attribute and save it. For example, if you set the startDate and the duration attributes and save the item, you may see that the duration is <var>null</var> while endDate/dueDate is non-null after retrieving it because the implementation has calculated the endDate/dueDate based on the duration and the startDate then saved it, not the duration.
15871             </remark>
15872             <version>
15873  1.0
15874             </version>
15875             <Code>  // 1 hour meeting
15876   event.duration = new tizen.TimeDuration(1, &quot;HOURS&quot;);
15877  </Code>
15878         </descriptive>
15879         <Type name="TimeDuration" nullable="nullable"/>
15880         <SetRaises>
15881           <RaiseException name="WebAPIException"/>
15882         </SetRaises>
15883       </Attribute>
15884       <Attribute name="location" id="::Calendar::CalendarItem::location">
15885         <webidl>    attribute DOMString? location setraises(<ref>WebAPIException</ref>);</webidl>
15886         <descriptive>
15887             <brief>
15888  An attribute to store the location or the intended venue for the activity defined by the calendar item.
15889 (See RFC 5545 - Section 3.8.1.7)
15890             </brief>
15891            <description>
15892             <p>
15893 The default value for this attribute is an empty string. 
15894             </p>
15895            </description>
15896             <version>
15897  1.0
15898             </version>
15899             <Code>  event.location = 'Huesca';
15900  </Code>
15901         </descriptive>
15902         <Type type="DOMString" nullable="nullable"/>
15903         <SetRaises>
15904           <RaiseException name="WebAPIException"/>
15905         </SetRaises>
15906       </Attribute>
15907       <Attribute name="geolocation" id="::Calendar::CalendarItem::geolocation">
15908         <webidl>    attribute <ref>SimpleCoordinates</ref>? geolocation setraises(<ref>WebAPIException</ref>);</webidl>
15909         <descriptive>
15910             <brief>
15911  An attribute to store the global position latitude and longitude of the location where the event is planned to take place.
15912 (See RFC 5545 - Section 3.8.1.6).
15913             </brief>
15914             <version>
15915  1.0
15916             </version>
15917             <Code>  event.geolocation = new tizen.SimpleCoordinates(60.175, 24.934);
15918  </Code>
15919         </descriptive>
15920         <Type name="SimpleCoordinates" nullable="nullable"/>
15921         <SetRaises>
15922           <RaiseException name="WebAPIException"/>
15923         </SetRaises>
15924       </Attribute>
15925       <Attribute name="organizer" id="::Calendar::CalendarItem::organizer">
15926         <webidl>    attribute DOMString? organizer setraises(<ref>WebAPIException</ref>);</webidl>
15927         <descriptive>
15928             <brief>
15929  An attribute to store the name of the person who organized this event.
15930 (See RFC 5545 - Section 3.8.4.3).
15931             </brief>
15932            <description>
15933             <p>
15934 By default, this attribute is initialized to an empty string.
15935             </p>
15936            </description>
15937             <version>
15938  1.0
15939             </version>
15940             <Code>  event.organizer = 'Mr. Jones';
15941  </Code>
15942         </descriptive>
15943         <Type type="DOMString" nullable="nullable"/>
15944         <SetRaises>
15945           <RaiseException name="WebAPIException"/>
15946         </SetRaises>
15947       </Attribute>
15948       <Attribute name="visibility" id="::Calendar::CalendarItem::visibility">
15949         <webidl>    attribute <ref>CalendarItemVisibility</ref> visibility setraises(<ref>WebAPIException</ref>);</webidl>
15950         <descriptive>
15951             <brief>
15952  An attribute to mark the visibility (secrecy) level of the item.
15953 (See RFC 5545 - Section 3.8.1.3).
15954             </brief>
15955            <description>
15956             <p>
15957 The default value is <var>PUBLIC</var>.
15958             </p>
15959            </description>
15960             <version>
15961  1.0
15962             </version>
15963         </descriptive>
15964         <Type name="CalendarItemVisibility"/>
15965         <SetRaises>
15966           <RaiseException name="WebAPIException"/>
15967         </SetRaises>
15968       </Attribute>
15969       <Attribute name="status" id="::Calendar::CalendarItem::status">
15970         <webidl>    attribute <ref>CalendarItemStatus</ref> status setraises(<ref>WebAPIException</ref>);</webidl>
15971         <descriptive>
15972             <brief>
15973  An attribute to store the overall confirmation status for a calendar component.
15974 (See RFC 5545 - Section 3.8.1.11).
15975             </brief>
15976            <description>
15977             <p>
15978 For an event, the default value is <var>CONFIRMED</var>. For a task, the default value is <var>NEEDS_ACTION</var>.
15979             </p>
15980            </description>
15981             <version>
15982  1.0
15983             </version>
15984             <Code>  event.status = &quot;TENTATIVE&quot;;
15985  </Code>
15986         </descriptive>
15987         <Type name="CalendarItemStatus"/>
15988         <SetRaises>
15989           <RaiseException name="WebAPIException"/>
15990         </SetRaises>
15991       </Attribute>
15992       <Attribute name="priority" id="::Calendar::CalendarItem::priority">
15993         <webidl>    attribute <ref>CalendarItemPriority</ref> priority setraises(<ref>WebAPIException</ref>);</webidl>
15994         <descriptive>
15995             <brief>
15996  An attribute to indicate the priority level of an item and may be used to relatively prioritize multiple items during a given period of time.
15997 (See RFC 5545 - Section 3.8.1.9).
15998             </brief>
15999            <description>
16000             <p>
16001 The default value for this attribute is <var>LOW </var>priority.
16002             </p>
16003             <p>
16004 If the native item database supports another priority schema (such as a range from 1 to 9), the implementation must convert those values to the supported values. For instance, RFC 5545 suggests the following mapping for a range from 1 to 9:
16005             </p>
16006             <ul>
16007               <li>
16008 1-4 to HIGH,              </li>
16009               <li>
16010 5 to MEDIUM,              </li>
16011               <li>
16012 6-9 to LOW.              </li>
16013             </ul>
16014            </description>
16015             <version>
16016  1.0
16017             </version>
16018             <Code>  task.priority = &quot;HIGH&quot;;
16019  </Code>
16020         </descriptive>
16021         <Type name="CalendarItemPriority"/>
16022         <SetRaises>
16023           <RaiseException name="WebAPIException"/>
16024         </SetRaises>
16025       </Attribute>
16026       <Attribute name="alarms" id="::Calendar::CalendarItem::alarms">
16027         <webidl>    attribute <ref>CalendarAlarm</ref>[] alarms setraises(<ref>WebAPIException</ref>);</webidl>
16028         <descriptive>
16029             <brief>
16030  An attribute array to lists the alarms (or reminders) associated to an item.
16031             </brief>
16032             <version>
16033  1.0
16034             </version>
16035             <Code>  ev.startDate = new tizen.TZDate(2011, 2, 11, 8, 0, 0);
16036   // Gives a sound notification 30 minutes before the item's start time
16037   var alarm = new tizen.CalendarAlarm(new tizen.TimeDuration(30, &quot;MINS&quot;),
16038                                        &quot;SOUND&quot;);
16039   ev.alarms = [alarm];
16040  </Code>
16041         </descriptive>
16042         <Type type="array">
16043           <Type name="CalendarAlarm"/>
16044         </Type>
16045         <SetRaises>
16046           <RaiseException name="WebAPIException"/>
16047         </SetRaises>
16048       </Attribute>
16049       <Attribute name="categories" id="::Calendar::CalendarItem::categories">
16050         <webidl>    attribute DOMString[] categories setraises(<ref>WebAPIException</ref>);</webidl>
16051         <descriptive>
16052             <brief>
16053  An attribute to indicate the item categories or subtypes of a calendar component. The categories are useful in searching for a calendar component of a particular type and category.
16054 (See RFC 5545 - Section 3.8.1.2).
16055             </brief>
16056            <description>
16057             <p>
16058 Examples of categories are personal, work, vacation, travel, etc.
16059             </p>
16060             <p>
16061 By default, this attribute is set to an empty array.
16062             </p>
16063            </description>
16064             <version>
16065  1.0
16066             </version>
16067             <Code>  event.categories = ['Personal'];
16068  </Code>
16069         </descriptive>
16070         <Type type="array">
16071           <Type type="DOMString"/>
16072         </Type>
16073         <SetRaises>
16074           <RaiseException name="WebAPIException"/>
16075         </SetRaises>
16076       </Attribute>
16077       <Attribute name="attendees" id="::Calendar::CalendarItem::attendees">
16078         <webidl>    attribute <ref>CalendarAttendee</ref>[] attendees setraises(<ref>WebAPIException</ref>);</webidl>
16079         <descriptive>
16080             <brief>
16081  An attribute array that lists the people attending an event.
16082 (See RFC 5545 - Section 3.8.4.3).
16083             </brief>
16084            <description>
16085             <p>
16086 By default, this attribute is set to an empty array.
16087             </p>
16088            </description>
16089             <version>
16090  1.0
16091             </version>
16092             <Code>  var attendee = new tizen.CalendarAttendee('mailto:bob@domain.com',
16093                                            {role: &quot;CHAIR&quot;, RSVP: true});
16094   event.attendees = [attendee];
16095  </Code>
16096         </descriptive>
16097         <Type type="array">
16098           <Type name="CalendarAttendee"/>
16099         </Type>
16100         <SetRaises>
16101           <RaiseException name="WebAPIException"/>
16102         </SetRaises>
16103       </Attribute>
16104       <Operation name="convertToString" id="::Calendar::CalendarItem::convertToString">
16105         <webidl>    DOMString convertToString(<ref>CalendarTextFormat</ref> format) raises(<ref>WebAPIException</ref>);</webidl>
16106         <descriptive>
16107             <brief>
16108  Converts the calendar item to a string format that will be generated and returned synchronously.
16109 The export format is set using the format parameter.
16110             </brief>
16111             <version>
16112  1.0
16113             </version>
16114             <privilegelevel>
16115  public
16116             </privilegelevel>
16117             <privilege>
16118  http://tizen.org/privilege/calendar.read
16119             </privilege>
16120             <Code>  // Defines the event search success callback.
16121   function eventSearchSuccessCallback(events) {
16122     // Converts the first event to iCalendar 2.0 format (default)
16123     var vevent = events[0].convertToString(&quot;ICALENDAR_20&quot;);
16124     console.log('iCalendar 2.0 representation of the event is: ' + vevent);
16125   }
16126
16127   function errorCallback(response) {
16128     console.log( 'The following error occurred: ' +  response.name);
16129   }
16130
16131   // Gets the default calendar
16132   var myCalendar = tizen.calendar.getDefaultCalendar(&quot;EVENT&quot;);
16133     
16134   // Finds all events in the first calendar that contain in the summary the string Tizen.
16135   var filter = new tizen.AttributeFilter('summary', 'CONTAINS', 'Tizen');
16136   myCalendar.find(eventSearchSuccessCallback, errorCallback, filter);
16137  </Code>
16138         </descriptive>
16139         <Type type="DOMString">
16140           <descriptive>
16141               <description><p>
16142  DOMString The representation of the Calendar item.
16143               </p></description>
16144           </descriptive>
16145         </Type>
16146         <ArgumentList>
16147           <Argument name="format">
16148             <descriptive>
16149                 <description><p>
16150  The format to use for exporting.
16151                 </p></description>
16152             </descriptive>
16153             <Type name="CalendarTextFormat"/>
16154           </Argument>
16155         </ArgumentList>
16156         <Raises>
16157           <RaiseException name="WebAPIException">
16158             <descriptive>
16159                 <description><p>
16160  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
16161                 </p></description>
16162                 <description><p>
16163  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
16164                 </p></description>
16165                 <description><p>
16166  with error type SecurityError, if the application does not have the privilege to call this method.
16167                 </p></description>
16168                 <description><p>
16169  with error type NotSupportedError, if the feature is not supported.
16170                 </p></description>
16171                 <description><p>
16172  with error type UnknownError, if any other error occurs.
16173                 </p></description>
16174             </descriptive>
16175           </RaiseException>
16176         </Raises>
16177       </Operation>
16178       <Operation name="clone" id="::Calendar::CalendarItem::clone">
16179         <webidl>    <ref>CalendarItem</ref> clone() raises(<ref>WebAPIException</ref>);</webidl>
16180         <descriptive>
16181             <brief>
16182  Clones the <em>CalendarItem </em>object, detached from any calendar.
16183             </brief>
16184            <description>
16185             <p>
16186 The <em>CalendarItem </em>object returned by the <em>clone()</em> method will have its identifier set to <var>null </var>and will be detached from any calendar.
16187             </p>
16188            </description>
16189             <version>
16190  1.0
16191             </version>
16192             <privilegelevel>
16193  public
16194             </privilegelevel>
16195             <privilege>
16196  http://tizen.org/privilege/calendar.read
16197             </privilege>
16198             <Code>  // Gets default calendar.
16199   var calendar = tizen.calendar.getDefaultCalendar();
16200
16201   var html5seminar = new tizen.CalendarEvent({startDate: new tizen.TZDate(2012, 3, 4),
16202                                               duration: new tizen.TimeDuration(3, &quot;DAYS&quot;),
16203                                               summary: &quot;HTML5 Seminar&quot;});
16204                                      
16205   calendar.add(html5seminar);
16206   var tizenseminar = html5seminar.clone();
16207   tizenseminar.summary = &quot;Tizen Seminar&quot;;
16208   calendar.add(tizenseminar);
16209  </Code>
16210         </descriptive>
16211         <Type name="CalendarItem">
16212           <descriptive>
16213               <description><p>
16214  CalendarItem The new clone of the <em>CalendarItem </em>object.
16215               </p></description>
16216           </descriptive>
16217         </Type>
16218         <ArgumentList/>
16219         <Raises>
16220           <RaiseException name="WebAPIException">
16221             <descriptive>
16222                 <description><p>
16223  with error type SecurityError, if the application does not have the privilege to call this method.
16224                 </p></description>
16225                 <description><p>
16226  with error type NotSupportedError, if the feature is not supported.
16227                 </p></description>
16228                 <description><p>
16229  with error type UnknownError if any other error occurs.
16230                 </p></description>
16231             </descriptive>
16232           </RaiseException>
16233         </Raises>
16234       </Operation>
16235     </Interface>
16236     <Interface name="CalendarTask" id="::Calendar::CalendarTask">
16237       <webidl>  [Constructor(optional <ref>CalendarTaskInit</ref>? taskInitDict),
16238    Constructor(DOMString stringRepresentation, <ref>CalendarTextFormat</ref> format)]
16239   interface CalendarTask : <ref>CalendarItem</ref> {
16240     attribute <ref>TZDate</ref>? dueDate setraises(<ref>WebAPIException</ref>);
16241     
16242     attribute <ref>TZDate</ref>? completedDate setraises(<ref>WebAPIException</ref>);
16243     
16244     attribute unsigned short progress setraises(<ref>WebAPIException</ref>);
16245   };</webidl>
16246       <descriptive>
16247           <brief>
16248  An interface that implements the <em>CalendarTask </em>object.
16249           </brief>
16250           <version>
16251  1.0
16252           </version>
16253       </descriptive>
16254       <ExtendedAttributeList>
16255         <ExtendedAttribute name="Constructor">
16256           <webidl>Constructor(optional <ref>CalendarTaskInit</ref>? taskInitDict)</webidl>
16257           <ArgumentList>
16258             <Argument optional="optional" name="taskInitDict">
16259               <Type name="CalendarTaskInit" nullable="nullable"/>
16260             </Argument>
16261           </ArgumentList>
16262         </ExtendedAttribute>
16263         <ExtendedAttribute name="Constructor">
16264           <webidl>   Constructor(DOMString stringRepresentation, <ref>CalendarTextFormat</ref> format)</webidl>
16265           <ArgumentList>
16266             <Argument name="stringRepresentation">
16267               <Type type="DOMString"/>
16268             </Argument>
16269             <Argument name="format">
16270               <Type name="CalendarTextFormat"/>
16271             </Argument>
16272           </ArgumentList>
16273         </ExtendedAttribute>
16274       </ExtendedAttributeList>
16275       <InterfaceInheritance>
16276         <Name name="CalendarItem"/>
16277       </InterfaceInheritance>
16278       <Attribute name="dueDate" id="::Calendar::CalendarTask::dueDate">
16279         <webidl>    attribute <ref>TZDate</ref>? dueDate setraises(<ref>WebAPIException</ref>);</webidl>
16280         <descriptive>
16281             <brief>
16282  An attribute to store the due date and time for completing a task. (See RFC 5545 - Section 3.8.2.3).
16283             </brief>
16284            <description>
16285             <p>
16286 This <em>dueDate</em> must be in the same time zone as the <em>startDate</em>. The <em>duration</em> and <em>dueDate</em> are mutually exclusive, so only one of them can be non-null.
16287             </p>
16288             <p>
16289 This attribute is precise to the second. Milliseconds are ignored.
16290             </p>
16291             <p>
16292 The default value is <var>null</var>. If no value is provided, the task doesn't have a due date.
16293             </p>
16294            </description>
16295             <version>
16296  1.0
16297             </version>
16298             <Code>  task.dueDate = new tizen.TZDate(2011, 2, 11);
16299  </Code>
16300         </descriptive>
16301         <Type name="TZDate" nullable="nullable"/>
16302         <SetRaises>
16303           <RaiseException name="WebAPIException"/>
16304         </SetRaises>
16305       </Attribute>
16306       <Attribute name="completedDate" id="::Calendar::CalendarTask::completedDate">
16307         <webidl>    attribute <ref>TZDate</ref>? completedDate setraises(<ref>WebAPIException</ref>);</webidl>
16308         <descriptive>
16309             <brief>
16310  An attribute to record the date and time when an task is completed.
16311 (See RFC 5545 - Section 3.8.2.1).
16312             </brief>
16313            <description>
16314             <p>
16315 This attribute is precise to the second. Milliseconds are ignored.
16316             </p>
16317             <p>
16318 The default value is <var>null</var>. If no value is provided, the task is not completed yet.  
16319             </p>
16320            </description>
16321             <version>
16322  1.0
16323             </version>
16324             <Code>  task.completedDate = new tizen.TZDate(2011, 2, 11);
16325  </Code>
16326         </descriptive>
16327         <Type name="TZDate" nullable="nullable"/>
16328         <SetRaises>
16329           <RaiseException name="WebAPIException"/>
16330         </SetRaises>
16331       </Attribute>
16332       <Attribute name="progress" id="::Calendar::CalendarTask::progress">
16333         <webidl>    attribute unsigned short progress setraises(<ref>WebAPIException</ref>);</webidl>
16334         <descriptive>
16335             <brief>
16336  An attribute to denote the percent of completion of a task.
16337             </brief>
16338            <description>
16339             <p>
16340 The value is a positive integer between <var>0 </var>and <var>100</var>. A value of <var>0 </var>indicates the task has not been started yet. A value of <var>100 </var>indicates that the task has been completed.
16341             </p>
16342             <p>
16343 Integer values in between indicate the percent partially complete.
16344 (See RFC 5545 - Section 3.8.1.8).
16345             </p>
16346             <p>
16347 The default value is <var>0</var>, implies that the task has not been started.
16348             </p>
16349            </description>
16350             <version>
16351  1.0
16352             </version>
16353             <Code>  task.progress = 50; // 50% done
16354  </Code>
16355         </descriptive>
16356         <Type type="unsigned short"/>
16357         <SetRaises>
16358           <RaiseException name="WebAPIException"/>
16359         </SetRaises>
16360       </Attribute>
16361     </Interface>
16362     <Interface name="CalendarEvent" id="::Calendar::CalendarEvent">
16363       <webidl>  [Constructor(optional <ref>CalendarEventInit</ref>? eventInitDict),
16364    Constructor(DOMString stringRepresentation, <ref>CalendarTextFormat</ref> format)]
16365   interface CalendarEvent : <ref>CalendarItem</ref> {
16366     readonly attribute boolean isDetached;
16367     
16368     attribute <ref>TZDate</ref>? endDate setraises(<ref>WebAPIException</ref>);
16369     
16370     attribute <ref>EventAvailability</ref> availability setraises(<ref>WebAPIException</ref>);
16371     
16372     attribute <ref>CalendarRecurrenceRule</ref>? recurrenceRule setraises(<ref>WebAPIException</ref>);
16373     
16374     void expandRecurrence(<ref>TZDate</ref> startDate,
16375                           <ref>TZDate</ref> endDate,
16376                           <ref>CalendarEventArraySuccessCallback</ref> successCallback,
16377                           optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
16378   };</webidl>
16379       <descriptive>
16380           <brief>
16381  An interface that implements the <em>calendarEvent </em>object.
16382           </brief>
16383           <version>
16384  1.0
16385           </version>
16386           <Code>  // Gets the default calendar
16387   var calendar = tizen.calendar.getDefaultCalendar(&quot;EVENT&quot;);
16388
16389   try {
16390     var ev = new tizen.CalendarEvent(&quot;BEGIN:VCALENDAR\r\n&quot; +
16391                   &quot;BEGIN:VEVENT\r\n&quot; +
16392                   &quot;DTSTAMP:19970901T1300Z\r\n&quot; +
16393                   &quot;DTSTART:19970903T163000Z\r\n&quot; +
16394                   &quot;DTEND:19970903T190000Z\r\n&quot; +
16395                   &quot;SUMMARY:Annual Employee Review\r\n&quot; +
16396                   &quot;CATEGORIES:BUSINESS,HUMAN RESOURCES\r\n&quot; +
16397                   &quot;END:VEVENT\r\n&quot; +
16398                   &quot;END:VCALENDAR&quot;, &quot;ICALENDAR_20&quot;);
16399                    
16400     calendar.add(ev);
16401     console.log('Event added with UID ' + ev.id.uid);
16402   } catch (err) {
16403     console.log(&quot;Failed to add VEVENT to the calendar, error: &quot; + err.name);
16404   }
16405  </Code>
16406       </descriptive>
16407       <ExtendedAttributeList>
16408         <ExtendedAttribute name="Constructor">
16409           <webidl>Constructor(optional <ref>CalendarEventInit</ref>? eventInitDict)</webidl>
16410           <ArgumentList>
16411             <Argument optional="optional" name="eventInitDict">
16412               <Type name="CalendarEventInit" nullable="nullable"/>
16413             </Argument>
16414           </ArgumentList>
16415         </ExtendedAttribute>
16416         <ExtendedAttribute name="Constructor">
16417           <webidl>   Constructor(DOMString stringRepresentation, <ref>CalendarTextFormat</ref> format)</webidl>
16418           <ArgumentList>
16419             <Argument name="stringRepresentation">
16420               <Type type="DOMString"/>
16421             </Argument>
16422             <Argument name="format">
16423               <Type name="CalendarTextFormat"/>
16424             </Argument>
16425           </ArgumentList>
16426         </ExtendedAttribute>
16427       </ExtendedAttributeList>
16428       <InterfaceInheritance>
16429         <Name name="CalendarItem"/>
16430       </InterfaceInheritance>
16431       <Attribute readonly="readonly" name="isDetached" id="::Calendar::CalendarEvent::isDetached">
16432         <webidl>    readonly attribute boolean isDetached;</webidl>
16433         <descriptive>
16434             <brief>
16435  An attribute that behaves like a flag to indicates if an instance of a recurring event is detached and if it has been modified and saved to the calendar.
16436             </brief>
16437             <version>
16438  1.0
16439             </version>
16440         </descriptive>
16441         <Type type="boolean"/>
16442       </Attribute>
16443       <Attribute name="endDate" id="::Calendar::CalendarEvent::endDate">
16444         <webidl>    attribute <ref>TZDate</ref>? endDate setraises(<ref>WebAPIException</ref>);</webidl>
16445         <descriptive>
16446             <brief>
16447  An attribute to store the end date/time of an event.
16448             </brief>
16449            <description>
16450             <p>
16451 (see RFC 5545 - Section 3.8.2.2).
16452             </p>
16453             <p>
16454 This <em>endDate</em> must be in the same time zone as the <em>startDate</em>. 
16455 Note that <em>duration</em> and <em>endDate</em> are mutually exclusive, only one of them can be non-null.
16456             </p>
16457             <p>
16458 This attribute is precise to the second. Milliseconds are ignored.
16459             </p>
16460             <p>
16461 The default value for this attribute is <var>null</var>. 
16462             </p>
16463            </description>
16464             <version>
16465  1.0
16466             </version>
16467             <Code>  // 2010-04-30 09:00
16468   event.endDate = new tizen.TZDate(2010, 3, 30, 9, 0);
16469  </Code>
16470         </descriptive>
16471         <Type name="TZDate" nullable="nullable"/>
16472         <SetRaises>
16473           <RaiseException name="WebAPIException"/>
16474         </SetRaises>
16475       </Attribute>
16476       <Attribute name="availability" id="::Calendar::CalendarEvent::availability">
16477         <webidl>    attribute <ref>EventAvailability</ref> availability setraises(<ref>WebAPIException</ref>);</webidl>
16478         <descriptive>
16479             <brief>
16480  An attribute to indicate the availability of a person for an event.
16481 (See RFC 5545 - Section 3.2.9).
16482             </brief>
16483            <description>
16484             <p>
16485 The default value is <var>BUSY</var>.
16486             </p>
16487            </description>
16488             <version>
16489  1.0
16490             </version>
16491         </descriptive>
16492         <Type name="EventAvailability"/>
16493         <SetRaises>
16494           <RaiseException name="WebAPIException"/>
16495         </SetRaises>
16496       </Attribute>
16497       <Attribute name="recurrenceRule" id="::Calendar::CalendarEvent::recurrenceRule">
16498         <webidl>    attribute <ref>CalendarRecurrenceRule</ref>? recurrenceRule setraises(<ref>WebAPIException</ref>);</webidl>
16499         <descriptive>
16500             <brief>
16501  An attribute to denote the recurrence rule for the event.
16502             </brief>
16503            <description>
16504             <p>
16505 The generated instances of a recurring event will have the same recurrence rule as their parent. This is useful when editing a particular event instance and choosing to update <b>all</b> instances from it.
16506             </p>
16507             <p>
16508 The detached instances (specific instances that have been modified as saved to the calendar) of a recurring event will not have any recurrence rule. No recurrence rule can be set on detached instances either. If one tries to set a recurrence rule on a detached event, a NotSupportedError should be thrown. Detached instances can be distinguished by checking their <em>isDetached</em> attribute.
16509 (See RFC 5545, Section 3.3.10.)
16510             </p>
16511            </description>
16512             <version>
16513  1.0
16514             </version>
16515             <Code>  // Repeats daily for 7 days
16516   var rule = new tizen.CalendarRecurrenceRule(&quot;DAILY&quot;, {occurrenceCount: 7});
16517   event.recurrenceRule = rule;
16518  </Code>
16519         </descriptive>
16520         <Type name="CalendarRecurrenceRule" nullable="nullable"/>
16521         <SetRaises>
16522           <RaiseException name="WebAPIException"/>
16523         </SetRaises>
16524       </Attribute>
16525       <Operation name="expandRecurrence" id="::Calendar::CalendarEvent::expandRecurrence">
16526         <webidl>    void expandRecurrence(<ref>TZDate</ref> startDate,
16527                           <ref>TZDate</ref> endDate,
16528                           <ref>CalendarEventArraySuccessCallback</ref> successCallback,
16529                           optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
16530         <descriptive>
16531             <brief>
16532  Expands a recurring event and returns asynchronously the list of instances occurring in a given time interval (inclusive).
16533             </brief>
16534            <description>
16535             <p>
16536 This method takes into consideration all the parameters of the event recurrence rule to generate the instances occurring in a given time interval.
16537             </p>
16538             <p>
16539 The call involves retrieving from the database detached instances of an event to replace their corresponding virtual instances in the returned list. The client can then use <em>CalendarEvent.isDetached </em>attribute to identify detached instances. If the event is not saved to a calendar yet, only virtual instances will be returned.
16540             </p>
16541             <p>
16542 The errorCallback is launched with these error types: 
16543             </p>
16544             <ul>
16545               <li>
16546 InvalidValuesError - if the event in operation is not recurring.              </li>
16547               <li>
16548 UnknownError - if any other error occurs.              </li>
16549             </ul>
16550            </description>
16551             <version>
16552  1.0
16553             </version>
16554             <privilegelevel>
16555  public
16556             </privilegelevel>
16557             <privilege>
16558  http://tizen.org/privilege/calendar.read
16559             </privilege>
16560             <Code>  // eventId should be set to ID of event obtained with the find function.
16561   var eventId;
16562   // Defines the error callback.
16563   function errorCallback(response) {
16564     console.log( 'The following error occurred: ' +  response.name);
16565   }
16566
16567   // Defines the event expanding success callback.
16568   function eventExpandingSuccessCallback(events) {
16569     console.log(events.length + ' event instances were returned.');
16570   }
16571  
16572   var calendar = tizen.calendar.getDefaultCalendar();
16573   var event = calendar.get(eventId);
16574
16575   if (event.recurrenceRule != null) {
16576     // This is a recurring event. Expand all the instances during August 2011.
16577     event.expandRecurrence(new tizen.TZDate(2011, 7, 1),
16578                           new tizen.TZDate(2011, 7, 31),
16579                           eventExpandingSuccessCallback,
16580                           errorCallback);
16581   }
16582  </Code>
16583         </descriptive>
16584         <Type type="void"/>
16585         <ArgumentList>
16586           <Argument name="startDate">
16587             <descriptive>
16588                 <description><p>
16589  The start date/ time of an event(inclusive).
16590                 </p></description>
16591             </descriptive>
16592             <Type name="TZDate"/>
16593           </Argument>
16594           <Argument name="endDate">
16595             <descriptive>
16596                 <description><p>
16597  The end date/ time of an event (inclusive).
16598                 </p></description>
16599             </descriptive>
16600             <Type name="TZDate"/>
16601           </Argument>
16602           <Argument name="successCallback">
16603             <descriptive>
16604                 <description><p>
16605  The method to call when the invocation ends successfully.
16606                 </p></description>
16607             </descriptive>
16608             <Type name="CalendarEventArraySuccessCallback"/>
16609           </Argument>
16610           <Argument optional="optional" name="errorCallback">
16611             <descriptive>
16612                 <description><p>
16613  The method to call when an error occurs.
16614                 </p></description>
16615             </descriptive>
16616             <Type name="ErrorCallback" nullable="nullable"/>
16617           </Argument>
16618         </ArgumentList>
16619         <Raises>
16620           <RaiseException name="WebAPIException">
16621             <descriptive>
16622                 <description><p>
16623  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
16624                 </p></description>
16625                 <description><p>
16626  with error type SecurityError, if the application does not have the privilege to call this method.
16627                 </p></description>
16628                 <description><p>
16629  with error type NotSupportedError, if the feature is not supported.
16630                 </p></description>
16631             </descriptive>
16632           </RaiseException>
16633         </Raises>
16634       </Operation>
16635     </Interface>
16636     <Dictionary name="CalendarAttendeeInit" id="::Calendar::CalendarAttendeeInit">
16637       <webidl>  dictionary CalendarAttendeeInit {
16638     DOMString name;
16639     <ref>AttendeeRole</ref> role;
16640     <ref>AttendeeStatus</ref> status;
16641     boolean RSVP;
16642     <ref>AttendeeType</ref> type;
16643     DOMString? group;
16644     DOMString delegatorURI;
16645     DOMString delegateURI;
16646     <ref>ContactRef</ref> contactRef;
16647   };</webidl>
16648       <descriptive>
16649           <brief>
16650  The properties of a <em>CalendarAttendee</em>, to pass to its constructor.
16651           </brief>
16652          <description>
16653           <p>
16654 See <em>CalendarAttendee </em>interface for more information about the members.
16655           </p>
16656          </description>
16657           <version>
16658  1.0
16659           </version>
16660       </descriptive>
16661       <DictionaryMember name="name" id="::Calendar::CalendarAttendeeInit::name">
16662         <webidl>    DOMString name;</webidl>
16663         <Type type="DOMString"/>
16664       </DictionaryMember>
16665       <DictionaryMember name="role" id="::Calendar::CalendarAttendeeInit::role">
16666         <webidl>    <ref>AttendeeRole</ref> role;</webidl>
16667         <Type name="AttendeeRole"/>
16668       </DictionaryMember>
16669       <DictionaryMember name="status" id="::Calendar::CalendarAttendeeInit::status">
16670         <webidl>    <ref>AttendeeStatus</ref> status;</webidl>
16671         <Type name="AttendeeStatus"/>
16672       </DictionaryMember>
16673       <DictionaryMember name="RSVP" id="::Calendar::CalendarAttendeeInit::RSVP">
16674         <webidl>    boolean RSVP;</webidl>
16675         <Type type="boolean"/>
16676       </DictionaryMember>
16677       <DictionaryMember name="type" id="::Calendar::CalendarAttendeeInit::type">
16678         <webidl>    <ref>AttendeeType</ref> type;</webidl>
16679         <Type name="AttendeeType"/>
16680       </DictionaryMember>
16681       <DictionaryMember name="group" id="::Calendar::CalendarAttendeeInit::group">
16682         <webidl>    DOMString? group;</webidl>
16683         <Type type="DOMString" nullable="nullable"/>
16684       </DictionaryMember>
16685       <DictionaryMember name="delegatorURI" id="::Calendar::CalendarAttendeeInit::delegatorURI">
16686         <webidl>    DOMString delegatorURI;</webidl>
16687         <Type type="DOMString"/>
16688       </DictionaryMember>
16689       <DictionaryMember name="delegateURI" id="::Calendar::CalendarAttendeeInit::delegateURI">
16690         <webidl>    DOMString delegateURI;</webidl>
16691         <Type type="DOMString"/>
16692       </DictionaryMember>
16693       <DictionaryMember name="contactRef" id="::Calendar::CalendarAttendeeInit::contactRef">
16694         <webidl>    <ref>ContactRef</ref> contactRef;</webidl>
16695         <Type name="ContactRef"/>
16696       </DictionaryMember>
16697     </Dictionary>
16698     <Interface name="CalendarAttendee" id="::Calendar::CalendarAttendee">
16699       <webidl>  [Constructor(DOMString uri, optional <ref>CalendarAttendeeInit</ref>? attendeeInitDict)]
16700   interface CalendarAttendee
16701   {
16702     attribute DOMString uri;
16703     
16704     attribute DOMString? name;
16705     
16706     attribute <ref>AttendeeRole</ref> role;
16707     
16708     attribute <ref>AttendeeStatus</ref> status;
16709     
16710     attribute boolean RSVP;
16711     
16712     attribute <ref>AttendeeType</ref> type;
16713      
16714     attribute DOMString? group;
16715       
16716     attribute DOMString? delegatorURI;
16717       
16718     attribute DOMString? delegateURI;
16719      
16720     attribute <ref>ContactRef</ref>? contactRef;
16721   };</webidl>
16722       <descriptive>
16723           <brief>
16724  This interface implements the <em>CalendarAttendee </em>object that contains information about an event attendee.
16725           </brief>
16726          <description>
16727           <p>
16728 By default, each of the attributes of this interface are undefined.
16729           </p>
16730           <p>
16731 (For more details, see RFC 5545, Section 3.8.4.1.)
16732           </p>
16733          </description>
16734           <version>
16735  1.0
16736           </version>
16737           <Code>  var attendee = new tizen.CalendarAttendee('mailto:bob@domain.com',
16738                                            {role: &quot;CHAIR&quot;, RSVP: true});
16739   event.attendees = [attendee];
16740  </Code>
16741       </descriptive>
16742       <ExtendedAttributeList>
16743         <ExtendedAttribute name="Constructor">
16744           <webidl>Constructor(DOMString uri, optional <ref>CalendarAttendeeInit</ref>? attendeeInitDict)</webidl>
16745           <ArgumentList>
16746             <Argument name="uri">
16747               <Type type="DOMString"/>
16748             </Argument>
16749             <Argument optional="optional" name="attendeeInitDict">
16750               <Type name="CalendarAttendeeInit" nullable="nullable"/>
16751             </Argument>
16752           </ArgumentList>
16753         </ExtendedAttribute>
16754       </ExtendedAttributeList>
16755       <Attribute name="uri" id="::Calendar::CalendarAttendee::uri">
16756         <webidl>    attribute DOMString uri;</webidl>
16757         <descriptive>
16758             <brief>
16759  An attribute to store the URI for the attendee.
16760             </brief>
16761            <description>
16762             <p>
16763 This is often an email in the form 'mailto:name@domain.com'.
16764             </p>
16765            </description>
16766             <version>
16767  1.0
16768             </version>
16769         </descriptive>
16770         <Type type="DOMString"/>
16771       </Attribute>
16772       <Attribute name="name" id="::Calendar::CalendarAttendee::name">
16773         <webidl>    attribute DOMString? name;</webidl>
16774         <descriptive>
16775             <brief>
16776  An attribute to store the name of an attendee.
16777             </brief>
16778             <version>
16779  1.0
16780             </version>
16781         </descriptive>
16782         <Type type="DOMString" nullable="nullable"/>
16783       </Attribute>
16784       <Attribute name="role" id="::Calendar::CalendarAttendee::role">
16785         <webidl>    attribute <ref>AttendeeRole</ref> role;</webidl>
16786         <descriptive>
16787             <brief>
16788  An attribute to denote the role of the attendee.
16789             </brief>
16790            <description>
16791             <p>
16792 (See RFC 5545, Section 3.2.16.)
16793             </p>
16794             <p>
16795 The default value is <var>REQ_PARTICIPANT</var>.
16796             </p>
16797            </description>
16798             <version>
16799  1.0
16800             </version>
16801         </descriptive>
16802         <Type name="AttendeeRole"/>
16803       </Attribute>
16804       <Attribute name="status" id="::Calendar::CalendarAttendee::status">
16805         <webidl>    attribute <ref>AttendeeStatus</ref> status;</webidl>
16806         <descriptive>
16807             <brief>
16808  An attribute to store the participant's attendance status.
16809 (See RFC 5545, Section 3.2.12.)
16810             </brief>
16811            <description>
16812             <p>
16813 The default value is <var>PENDING</var>.
16814             </p>
16815            </description>
16816             <version>
16817  1.0
16818             </version>
16819         </descriptive>
16820         <Type name="AttendeeStatus"/>
16821       </Attribute>
16822       <Attribute name="RSVP" id="::Calendar::CalendarAttendee::RSVP">
16823         <webidl>    attribute boolean RSVP;</webidl>
16824         <descriptive>
16825             <brief>
16826  An attribute to store the attendee's participation status reply (RSVP).
16827 (See RFC 5545, Section 3.2.17.)
16828             </brief>
16829            <description>
16830             <p>
16831 By default, this attribute is set to <var>FALSE</var>.
16832             </p>
16833            </description>
16834             <version>
16835  1.0
16836             </version>
16837         </descriptive>
16838         <Type type="boolean"/>
16839       </Attribute>
16840       <Attribute name="type" id="::Calendar::CalendarAttendee::type">
16841         <webidl>    attribute <ref>AttendeeType</ref> type;</webidl>
16842         <descriptive>
16843             <brief>
16844  An attribute to indicate the type of a participant.
16845 (See RFC 5545, Section 3.2.3.)
16846             </brief>
16847            <description>
16848             <p>
16849 The default value is <var>INDIVIDUAL</var>.
16850             </p>
16851            </description>
16852             <version>
16853  1.0
16854             </version>
16855         </descriptive>
16856         <Type name="AttendeeType"/>
16857       </Attribute>
16858       <Attribute name="group" id="::Calendar::CalendarAttendee::group">
16859         <webidl>    attribute DOMString? group;</webidl>
16860         <descriptive>
16861             <brief>
16862  An attribute to store the participant's group or list membership.
16863 (See RFC 5545, Section 3.2.11.)
16864             </brief>
16865             <version>
16866  1.0
16867             </version>
16868         </descriptive>
16869         <Type type="DOMString" nullable="nullable"/>
16870       </Attribute>
16871       <Attribute name="delegatorURI" id="::Calendar::CalendarAttendee::delegatorURI">
16872         <webidl>    attribute DOMString? delegatorURI;</webidl>
16873         <descriptive>
16874             <brief>
16875  An attribute to store the URI of the person who has delegated their participation to this attendee.
16876 (See RFC 5545, Section 3.2.4.)
16877             </brief>
16878             <version>
16879  1.0
16880             </version>
16881         </descriptive>
16882         <Type type="DOMString" nullable="nullable"/>
16883       </Attribute>
16884       <Attribute name="delegateURI" id="::Calendar::CalendarAttendee::delegateURI">
16885         <webidl>    attribute DOMString? delegateURI;</webidl>
16886         <descriptive>
16887             <brief>
16888  An attribute to stores the URI of the attendee to whom the person has delegated his participation.
16889 (See RFC 5545, Section 3.2.5.)
16890             </brief>
16891             <version>
16892  1.0
16893             </version>
16894         </descriptive>
16895         <Type type="DOMString" nullable="nullable"/>
16896       </Attribute>
16897       <Attribute name="contactRef" id="::Calendar::CalendarAttendee::contactRef">
16898         <webidl>    attribute <ref>ContactRef</ref>? contactRef;</webidl>
16899         <descriptive>
16900             <brief>
16901  An attribute to store the participant's reference in the Contact API.
16902             </brief>
16903            <description>
16904             <p>
16905 If the contact is not resolved, this attribute will be set to<var> null</var>.
16906 For more information, see the <a href="../../org.tizen.web.device.apireference/tizen/contact.html">Contact API</a>.
16907             </p>
16908            </description>
16909             <version>
16910  1.0
16911             </version>
16912         </descriptive>
16913         <Type name="ContactRef" nullable="nullable"/>
16914       </Attribute>
16915     </Interface>
16916     <Dictionary name="CalendarRecurrenceRuleInit" id="::Calendar::CalendarRecurrenceRuleInit">
16917       <webidl>  dictionary CalendarRecurrenceRuleInit {
16918     short interval;
16919     <ref>TZDate</ref> untilDate;
16920     long occurrenceCount;
16921     <ref>ByDayValue</ref>[] daysOfTheWeek;
16922     short[] setPositions;
16923     <ref>TZDate</ref>[] exceptions;
16924   };</webidl>
16925       <descriptive>
16926           <brief>
16927  The properties of a <em>CalendarRecurrenceRule</em> to pass to its constructor.
16928           </brief>
16929          <description>
16930           <p>
16931 For more information about the members, see <em>CalendarRecurrenceRule </em>interface.
16932           </p>
16933          </description>
16934           <version>
16935  1.0
16936           </version>
16937       </descriptive>
16938       <DictionaryMember name="interval" id="::Calendar::CalendarRecurrenceRuleInit::interval">
16939         <webidl>    short interval;</webidl>
16940         <Type type="short"/>
16941       </DictionaryMember>
16942       <DictionaryMember name="untilDate" id="::Calendar::CalendarRecurrenceRuleInit::untilDate">
16943         <webidl>    <ref>TZDate</ref> untilDate;</webidl>
16944         <Type name="TZDate"/>
16945       </DictionaryMember>
16946       <DictionaryMember name="occurrenceCount" id="::Calendar::CalendarRecurrenceRuleInit::occurrenceCount">
16947         <webidl>    long occurrenceCount;</webidl>
16948         <Type type="long"/>
16949       </DictionaryMember>
16950       <DictionaryMember name="daysOfTheWeek" id="::Calendar::CalendarRecurrenceRuleInit::daysOfTheWeek">
16951         <webidl>    <ref>ByDayValue</ref>[] daysOfTheWeek;</webidl>
16952         <Type type="array">
16953           <Type name="ByDayValue"/>
16954         </Type>
16955       </DictionaryMember>
16956       <DictionaryMember name="setPositions" id="::Calendar::CalendarRecurrenceRuleInit::setPositions">
16957         <webidl>    short[] setPositions;</webidl>
16958         <Type type="array">
16959           <Type type="short"/>
16960         </Type>
16961       </DictionaryMember>
16962       <DictionaryMember name="exceptions" id="::Calendar::CalendarRecurrenceRuleInit::exceptions">
16963         <webidl>    <ref>TZDate</ref>[] exceptions;</webidl>
16964         <Type type="array">
16965           <Type name="TZDate"/>
16966         </Type>
16967       </DictionaryMember>
16968     </Dictionary>
16969     <Interface name="CalendarRecurrenceRule" id="::Calendar::CalendarRecurrenceRule">
16970       <webidl>  [Constructor(<ref>RecurrenceRuleFrequency</ref> frequency, optional <ref>CalendarRecurrenceRuleInit</ref>? ruleInitDict)]
16971   interface CalendarRecurrenceRule
16972   { 
16973     attribute <ref>RecurrenceRuleFrequency</ref> frequency;
16974     
16975     attribute unsigned short interval;
16976     
16977     attribute <ref>TZDate</ref>? untilDate;
16978     
16979     attribute long occurrenceCount;
16980     
16981     attribute <ref>ByDayValue</ref>[] daysOfTheWeek;
16982     
16983     attribute short[] setPositions;
16984     
16985     attribute <ref>TZDate</ref>[] exceptions;
16986   };</webidl>
16987       <descriptive>
16988           <brief>
16989  This interface implements the<em> CalendarRecurrenceRule </em>object, which contains information about the recurrence of an event.
16990 (See RFC 5545, Section 3.3.10.)
16991           </brief>
16992           <version>
16993  1.0
16994           </version>
16995           <Code>  // Repeats daily for 7 days
16996   var rule = new tizen.CalendarRecurrenceRule(&quot;DAILY&quot;, {occurrenceCount:7});
16997   event.recurrenceRule = rule;
16998  </Code>
16999       </descriptive>
17000       <ExtendedAttributeList>
17001         <ExtendedAttribute name="Constructor">
17002           <webidl>Constructor(<ref>RecurrenceRuleFrequency</ref> frequency, optional <ref>CalendarRecurrenceRuleInit</ref>? ruleInitDict)</webidl>
17003           <ArgumentList>
17004             <Argument name="frequency">
17005               <Type name="RecurrenceRuleFrequency"/>
17006             </Argument>
17007             <Argument optional="optional" name="ruleInitDict">
17008               <Type name="CalendarRecurrenceRuleInit" nullable="nullable"/>
17009             </Argument>
17010           </ArgumentList>
17011         </ExtendedAttribute>
17012       </ExtendedAttributeList>
17013       <Attribute name="frequency" id="::Calendar::CalendarRecurrenceRule::frequency">
17014         <webidl>    attribute <ref>RecurrenceRuleFrequency</ref> frequency;</webidl>
17015         <descriptive>
17016             <brief>
17017  An attribute to store the frequency of a recurrence rule.
17018             </brief>
17019            <description>
17020             <p>
17021 This property corresponds to <em>FREQ</em> in RFC 5545.
17022             </p>
17023            </description>
17024             <version>
17025  1.0
17026             </version>
17027         </descriptive>
17028         <Type name="RecurrenceRuleFrequency"/>
17029       </Attribute>
17030       <Attribute name="interval" id="::Calendar::CalendarRecurrenceRule::interval">
17031         <webidl>    attribute unsigned short interval;</webidl>
17032         <descriptive>
17033             <brief>
17034  An attribute to specify how often the recurrence rule repeats over the unit of time indicated by its frequency.
17035             </brief>
17036            <description>
17037             <p>
17038 This attribute is linked to the <em>frequency </em>attribute and for an interval of <var>n</var>, the event will recur every <var>n </var>of recurrence attribute.
17039             </p>
17040             <p>
17041 For example, if the interval attribute is set to <var>2 </var>and <em>frequency </em>attribute is set to <var>WEEKLY</var>, then the event will recur every 2 weeks.
17042             </p>
17043             <p>
17044 The default interval value is <var>1</var>, that is, every day if the <em>CalendarRecurrenceRule frequency</em> attribute is DAILY, every week if frequency is <var>WEEKLY</var>, every month if frequency is <var>MONTHLY </var>or every year if frequency is <var>YEARLY</var>.
17045             </p>
17046             <p>
17047 This property corresponds to <em>INTERVAL</em> in RFC 5545.
17048             </p>
17049            </description>
17050             <version>
17051  1.0
17052             </version>
17053         </descriptive>
17054         <Type type="unsigned short"/>
17055       </Attribute>
17056       <Attribute name="untilDate" id="::Calendar::CalendarRecurrenceRule::untilDate">
17057         <webidl>    attribute <ref>TZDate</ref>? untilDate;</webidl>
17058         <descriptive>
17059             <brief>
17060  An attribute to indicate the end date of a recurrence duration of an event using either an end date (<em>untilDate </em>attribute) or a number of occurrences (<em>occurrenceCount </em>attribute).
17061             </brief>
17062            <description>
17063             <p>
17064 By default, this attribute is set to <var>null</var>, meaning that the event recurs infinitely, unless <em>occurrenceCount </em>is set.
17065             </p>
17066             <p>
17067 This attribute is precise to the second. Milliseconds are ignored.
17068             </p>
17069             <p>
17070 This property corresponds to <em>UNTIL</em> in RFC 5545.
17071             </p>
17072            </description>
17073             <version>
17074  1.0
17075             </version>
17076         </descriptive>
17077         <Type name="TZDate" nullable="nullable"/>
17078       </Attribute>
17079       <Attribute name="occurrenceCount" id="::Calendar::CalendarRecurrenceRule::occurrenceCount">
17080         <webidl>    attribute long occurrenceCount;</webidl>
17081         <descriptive>
17082             <brief>
17083  An attribute to indicate the number of occurrences of a recurring event.
17084             </brief>
17085            <description>
17086             <p>
17087 The recurrence duration of an event can be defined using either an end date (<em>untilDate </em>attribute) or a number of occurrences (<em>occurrenceCount </em>attribute).
17088             </p>
17089             <p>
17090 By default, this attribute is set to <var>-1</var>, meaning that the event recurs infinitely, unless <em>untilDate </em>is set.
17091             </p>
17092             <p>
17093 This property corresponds to <em>COUNT</em> in RFC 5545.
17094             </p>
17095            </description>
17096             <version>
17097  1.0
17098             </version>
17099         </descriptive>
17100         <Type type="long"/>
17101       </Attribute>
17102       <Attribute name="daysOfTheWeek" id="::Calendar::CalendarRecurrenceRule::daysOfTheWeek">
17103         <webidl>    attribute <ref>ByDayValue</ref>[] daysOfTheWeek;</webidl>
17104         <descriptive>
17105             <brief>
17106  An attribute to store the days of the week associated with the recurrence rule.
17107             </brief>
17108            <description>
17109             <p>
17110 This property value is valid only for recurrence rules with a frequency type of <em>WEEKLY</em>, <em>MONTHLY</em>, and <em>YEARLY</em>.
17111             </p>
17112             <p>
17113 This property corresponds to <em>BYDAY</em> in RFC 5545.
17114             </p>
17115             <p>
17116 By default, this attribute is set to an empty array.
17117             </p>
17118            </description>
17119             <version>
17120  1.0
17121             </version>
17122         </descriptive>
17123         <Type type="array">
17124           <Type name="ByDayValue"/>
17125         </Type>
17126       </Attribute>
17127       <Attribute name="setPositions" id="::Calendar::CalendarRecurrenceRule::setPositions">
17128         <webidl>    attribute short[] setPositions;</webidl>
17129         <descriptive>
17130             <brief>
17131  An attribute to store a list of ordinal numbers that filters which recurrences to include in the recurrence rule's frequency.
17132             </brief>
17133            <description>
17134             <p>
17135 For example, a yearly recurrence rule that has a <em>daysOfTheWeek </em>value that specifies Monday through Friday, and a <em>setPositions </em>array containing <var>2 </var>and <var>-1</var>, occurs only on the second weekday and last weekday of every year.
17136             </p>
17137             <p>
17138 Values can be from 1 to 366 or -366 to -1. 
17139 Negative values indicate counting backwards from the end of the recurrence rule's frequency (week, month, or year). 
17140             </p>
17141             <p>
17142 This attribute must only be used in conjunction with another BYxxx rule part (such as <em>daysOfTheWeek</em>).
17143             </p>
17144             <p>
17145 This property corresponds to <em>BYSETPOS</em> in RFC 5545.
17146             </p>
17147             <p>
17148 By default, this attribute is set to an empty array.
17149             </p>
17150            </description>
17151             <version>
17152  1.0
17153             </version>
17154         </descriptive>
17155         <Type type="array">
17156           <Type type="short"/>
17157         </Type>
17158       </Attribute>
17159       <Attribute name="exceptions" id="::Calendar::CalendarRecurrenceRule::exceptions">
17160         <webidl>    attribute <ref>TZDate</ref>[] exceptions;</webidl>
17161         <descriptive>
17162             <brief>
17163  An attribute to list date/time exceptions for the recurring event.
17164 (See RFC 5545, Section 3.8.5.1.) 
17165             </brief>
17166            <description>
17167             <p>
17168 This attribute is precise to the second. Milliseconds are ignored.
17169             </p>
17170             <p>
17171 This property corresponds to <em>EXDATE</em> in RFC 5545.
17172             </p>
17173             <p>
17174 By default, this attribute is set to an empty array.
17175             </p>
17176            </description>
17177             <version>
17178  1.0
17179             </version>
17180         </descriptive>
17181         <Type type="array">
17182           <Type name="TZDate"/>
17183         </Type>
17184       </Attribute>
17185     </Interface>
17186     <Interface name="CalendarEventId" id="::Calendar::CalendarEventId">
17187       <webidl>  [Constructor(DOMString uid, optional DOMString? rid)]
17188   interface CalendarEventId {
17189     attribute DOMString uid;
17190     
17191     attribute DOMString? rid;
17192   };</webidl>
17193       <descriptive>
17194           <brief>
17195  This interface contains a UID and an optional recurrence ID attribute to identify calendar events.
17196           </brief>
17197          <description>
17198           <p>
17199 The recurrence identifier (<em>rid</em> attribute) is used to identify a particular instance of a recurring event. All instances of the same recurring event have the same UID but different recurrence IDs.
17200           </p>
17201          </description>
17202           <version>
17203  1.0
17204           </version>
17205       </descriptive>
17206       <ExtendedAttributeList>
17207         <ExtendedAttribute name="Constructor">
17208           <webidl>Constructor(DOMString uid, optional DOMString? rid)</webidl>
17209           <ArgumentList>
17210             <Argument name="uid">
17211               <Type type="DOMString"/>
17212             </Argument>
17213             <Argument optional="optional" name="rid">
17214               <Type type="DOMString" nullable="nullable"/>
17215             </Argument>
17216           </ArgumentList>
17217         </ExtendedAttribute>
17218       </ExtendedAttributeList>
17219       <Attribute name="uid" id="::Calendar::CalendarEventId::uid">
17220         <webidl>    attribute DOMString uid;</webidl>
17221         <descriptive>
17222             <brief>
17223  An attribute to persistently, and uniquely identify a calendar event.
17224             </brief>
17225            <description>
17226             <p>
17227 This value is assigned by the platform when the event is added to the calendar, it is locally unique and persistent for the life time of the event and it cannot be modified by the developers.
17228             </p>
17229             <p>
17230 See RFC 5545 (section 3.8.4.7) for more details about this parameter and algorithms to guarantee assignment of unique values.
17231 This value is assigned by the platform when the <em>add()</em> method is successfully invoked.
17232             </p>
17233            </description>
17234             <version>
17235  1.0
17236             </version>
17237         </descriptive>
17238         <Type type="DOMString"/>
17239       </Attribute>
17240       <Attribute name="rid" id="::Calendar::CalendarEventId::rid">
17241         <webidl>    attribute DOMString? rid;</webidl>
17242         <descriptive>
17243             <brief>
17244  An attribute to store the recurrence ID of a <em>CalendarEvent </em>instance.
17245             </brief>
17246            <description>
17247             <p>
17248 This attribute is used in conjunction with the <em>uid</em> property to identify a specific instance of a recurring event.
17249             </p>
17250             <p>
17251 The parent of a recurrence instance has its <em>rid</em> set to <var>null</var>.
17252             </p>
17253             <p>
17254 By default, this attribute is set to <var>null</var>.
17255 (See RFC 5545 (section 3.8.4.4) for more details about this parameter.)
17256             </p>
17257            </description>
17258             <version>
17259  1.0
17260             </version>
17261         </descriptive>
17262         <Type type="DOMString" nullable="nullable"/>
17263       </Attribute>
17264     </Interface>
17265     <Interface name="CalendarAlarm" id="::Calendar::CalendarAlarm">
17266       <webidl>  [Constructor(<ref>TZDate</ref> absoluteDate, <ref>AlarmMethod</ref> method, optional DOMString? description),
17267    Constructor(<ref>TimeDuration</ref> before, <ref>AlarmMethod</ref> method, optional DOMString? description)]
17268   interface CalendarAlarm {
17269     attribute <ref>TZDate</ref>? absoluteDate setraises(<ref>WebAPIException</ref>);
17270     
17271     attribute <ref>TimeDuration</ref>? before setraises(<ref>WebAPIException</ref>);
17272   
17273     attribute <ref>AlarmMethod</ref> method setraises(<ref>WebAPIException</ref>);
17274     
17275     attribute DOMString? description;
17276   };</webidl>
17277       <descriptive>
17278           <brief>
17279  An interface that contains information related to an event alarm or reminder.
17280           </brief>
17281           <version>
17282  1.0
17283           </version>
17284           <Code>  // Creates a sound alarm 30 minutes before the event's start time
17285   var alarm = new tizen.CalendarAlarm(new tizen.TimeDuration(30, &quot;MINS&quot;), &quot;SOUND&quot;);
17286  </Code>
17287       </descriptive>
17288       <ExtendedAttributeList>
17289         <ExtendedAttribute name="Constructor">
17290           <webidl>Constructor(<ref>TZDate</ref> absoluteDate, <ref>AlarmMethod</ref> method, optional DOMString? description)</webidl>
17291           <ArgumentList>
17292             <Argument name="absoluteDate">
17293               <Type name="TZDate"/>
17294             </Argument>
17295             <Argument name="method">
17296               <Type name="AlarmMethod"/>
17297             </Argument>
17298             <Argument optional="optional" name="description">
17299               <Type type="DOMString" nullable="nullable"/>
17300             </Argument>
17301           </ArgumentList>
17302         </ExtendedAttribute>
17303         <ExtendedAttribute name="Constructor">
17304           <webidl>   Constructor(<ref>TimeDuration</ref> before, <ref>AlarmMethod</ref> method, optional DOMString? description)</webidl>
17305           <ArgumentList>
17306             <Argument name="before">
17307               <Type name="TimeDuration"/>
17308             </Argument>
17309             <Argument name="method">
17310               <Type name="AlarmMethod"/>
17311             </Argument>
17312             <Argument optional="optional" name="description">
17313               <Type type="DOMString" nullable="nullable"/>
17314             </Argument>
17315           </ArgumentList>
17316         </ExtendedAttribute>
17317       </ExtendedAttributeList>
17318       <Attribute name="absoluteDate" id="::Calendar::CalendarAlarm::absoluteDate">
17319         <webidl>    attribute <ref>TZDate</ref>? absoluteDate setraises(<ref>WebAPIException</ref>);</webidl>
17320         <descriptive>
17321             <brief>
17322  An attribute to record the absolute date and time when an alarm should be triggered.
17323             </brief>
17324            <description>
17325             <p>
17326 <em>absoluteDate </em>and <em>before </em>are mutually exclusive.
17327             </p>
17328             <p>
17329 This attribute is precise to the second. Milliseconds are ignored.
17330             </p>
17331            </description>
17332             <version>
17333  1.0
17334             </version>
17335         </descriptive>
17336         <Type name="TZDate" nullable="nullable"/>
17337         <SetRaises>
17338           <RaiseException name="WebAPIException"/>
17339         </SetRaises>
17340       </Attribute>
17341       <Attribute name="before" id="::Calendar::CalendarAlarm::before">
17342         <webidl>    attribute <ref>TimeDuration</ref>? before setraises(<ref>WebAPIException</ref>);</webidl>
17343         <descriptive>
17344             <brief>
17345  An attribute to store the duration before an event starts on which the alarm should be triggered.
17346             </brief>
17347            <description>
17348             <p>
17349 The duration should be positive.
17350             </p>
17351             <p>
17352 <em>absoluteDate </em>and <em>before </em>are mutually exclusive.
17353             </p>
17354             <p>
17355 This attribute is precise to the second. Milliseconds are ignored.
17356             </p>
17357            </description>
17358             <version>
17359  1.0
17360             </version>
17361         </descriptive>
17362         <Type name="TimeDuration" nullable="nullable"/>
17363         <SetRaises>
17364           <RaiseException name="WebAPIException"/>
17365         </SetRaises>
17366       </Attribute>
17367       <Attribute name="method" id="::Calendar::CalendarAlarm::method">
17368         <webidl>    attribute <ref>AlarmMethod</ref> method setraises(<ref>WebAPIException</ref>);</webidl>
17369         <descriptive>
17370             <brief>
17371  An attribute to denote the notification method used by an alarm.
17372             </brief>
17373             <version>
17374  1.0
17375             </version>
17376         </descriptive>
17377         <Type name="AlarmMethod"/>
17378         <SetRaises>
17379           <RaiseException name="WebAPIException"/>
17380         </SetRaises>
17381       </Attribute>
17382       <Attribute name="description" id="::Calendar::CalendarAlarm::description">
17383         <webidl>    attribute DOMString? description;</webidl>
17384         <descriptive>
17385             <brief>
17386  An attribute to store the description of an alarm.
17387             </brief>
17388            <description>
17389             <p>
17390 When the method is <var>DISPLAY</var>, the alarm must also include a description attribute, which contains the text to be displayed when the alarm is triggered.
17391             </p>
17392             <p>
17393 The default value is an empty string.
17394             </p>
17395            </description>
17396             <version>
17397  1.0
17398             </version>
17399         </descriptive>
17400         <Type type="DOMString" nullable="nullable"/>
17401       </Attribute>
17402     </Interface>
17403     <Interface name="CalendarEventArraySuccessCallback" id="::Calendar::CalendarEventArraySuccessCallback">
17404       <webidl>  [Callback=FunctionOnly, NoInterfaceObject]
17405   interface CalendarEventArraySuccessCallback {
17406     void onsuccess(<ref>CalendarEvent</ref>[] events);
17407   };</webidl>
17408       <descriptive>
17409           <brief>
17410  An interface that implements the success callback used in the asynchronous operation for retrieving a list of calendar events.
17411           </brief>
17412           <version>
17413  1.0
17414           </version>
17415       </descriptive>
17416       <ExtendedAttributeList>
17417         <ExtendedAttribute name="Callback" value="FunctionOnly">
17418           <webidl>Callback</webidl>
17419         </ExtendedAttribute>
17420         <ExtendedAttribute name="NoInterfaceObject">
17421           <webidl> NoInterfaceObject</webidl>
17422         </ExtendedAttribute>
17423       </ExtendedAttributeList>
17424       <Operation name="onsuccess" id="::Calendar::CalendarEventArraySuccessCallback::onsuccess">
17425         <webidl>    void onsuccess(<ref>CalendarEvent</ref>[] events);</webidl>
17426         <descriptive>
17427             <brief>
17428  Called when the list of calendar events is retrieved successfully.
17429             </brief>
17430             <version>
17431  1.0
17432             </version>
17433         </descriptive>
17434         <Type type="void"/>
17435         <ArgumentList>
17436           <Argument name="events">
17437             <descriptive>
17438                 <description><p>
17439  The array of <em>CalendarEvent </em>objects.
17440                 </p></description>
17441             </descriptive>
17442             <Type type="array">
17443               <Type name="CalendarEvent"/>
17444             </Type>
17445           </Argument>
17446         </ArgumentList>
17447       </Operation>
17448     </Interface>
17449     <Interface name="CalendarItemArraySuccessCallback" id="::Calendar::CalendarItemArraySuccessCallback">
17450       <webidl>  [Callback=FunctionOnly, NoInterfaceObject]
17451   interface CalendarItemArraySuccessCallback {
17452     void onsuccess(<ref>CalendarItem</ref>[] items);
17453   };</webidl>
17454       <descriptive>
17455           <brief>
17456  This interface implements the success callback used in the asynchronous operation for retrieving a list of calendar items.
17457           </brief>
17458           <version>
17459  1.0
17460           </version>
17461       </descriptive>
17462       <ExtendedAttributeList>
17463         <ExtendedAttribute name="Callback" value="FunctionOnly">
17464           <webidl>Callback</webidl>
17465         </ExtendedAttribute>
17466         <ExtendedAttribute name="NoInterfaceObject">
17467           <webidl> NoInterfaceObject</webidl>
17468         </ExtendedAttribute>
17469       </ExtendedAttributeList>
17470       <Operation name="onsuccess" id="::Calendar::CalendarItemArraySuccessCallback::onsuccess">
17471         <webidl>    void onsuccess(<ref>CalendarItem</ref>[] items);</webidl>
17472         <descriptive>
17473             <brief>
17474  Called when the list of calendar items is retrieved successfully.
17475             </brief>
17476             <version>
17477  1.0
17478             </version>
17479         </descriptive>
17480         <Type type="void"/>
17481         <ArgumentList>
17482           <Argument name="items">
17483             <descriptive>
17484                 <description><p>
17485  The array of <em>CalendarItem </em>objects.
17486                 </p></description>
17487             </descriptive>
17488             <Type type="array">
17489               <Type name="CalendarItem"/>
17490             </Type>
17491           </Argument>
17492         </ArgumentList>
17493       </Operation>
17494     </Interface>
17495     <Interface name="CalendarArraySuccessCallback" id="::Calendar::CalendarArraySuccessCallback">
17496       <webidl>  [Callback=FunctionOnly, NoInterfaceObject]
17497   interface CalendarArraySuccessCallback {
17498     void onsuccess(<ref>Calendar</ref>[] calendars);
17499   };</webidl>
17500       <descriptive>
17501           <brief>
17502  This interface implements the success callback used in the asynchronous operation to get a list of calendars using the <em>getCalendars()</em> method.
17503           </brief>
17504           <version>
17505  1.0
17506           </version>
17507       </descriptive>
17508       <ExtendedAttributeList>
17509         <ExtendedAttribute name="Callback" value="FunctionOnly">
17510           <webidl>Callback</webidl>
17511         </ExtendedAttribute>
17512         <ExtendedAttribute name="NoInterfaceObject">
17513           <webidl> NoInterfaceObject</webidl>
17514         </ExtendedAttribute>
17515       </ExtendedAttributeList>
17516       <Operation name="onsuccess" id="::Calendar::CalendarArraySuccessCallback::onsuccess">
17517         <webidl>    void onsuccess(<ref>Calendar</ref>[] calendars);</webidl>
17518         <descriptive>
17519             <brief>
17520  Called when the array of <em>Calendar </em>objects is retrieved successfully.
17521             </brief>
17522             <version>
17523  1.0
17524             </version>
17525         </descriptive>
17526         <Type type="void"/>
17527         <ArgumentList>
17528           <Argument name="calendars">
17529             <descriptive>
17530                 <description><p>
17531  The array of <em>Calendar </em>objects.
17532                 </p></description>
17533             </descriptive>
17534             <Type type="array">
17535               <Type name="Calendar"/>
17536             </Type>
17537           </Argument>
17538         </ArgumentList>
17539       </Operation>
17540     </Interface>
17541     <Interface name="CalendarChangeCallback" id="::Calendar::CalendarChangeCallback">
17542       <webidl>  [Callback, NoInterfaceObject] interface CalendarChangeCallback {
17543     void onitemsadded(<ref>CalendarItem</ref>[] items);
17544     
17545     void onitemsupdated(<ref>CalendarItem</ref>[] items);
17546     
17547     void onitemsremoved(<ref>CalendarItemId</ref>[] ids);
17548   };</webidl>
17549       <descriptive>
17550           <brief>
17551  This interface specifies a set of methods that will be invoked every time a calendar change occurs (calendar item addition/update/removal).
17552           </brief>
17553           <version>
17554  1.0
17555           </version>
17556       </descriptive>
17557       <ExtendedAttributeList>
17558         <ExtendedAttribute name="Callback">
17559           <webidl>Callback</webidl>
17560         </ExtendedAttribute>
17561         <ExtendedAttribute name="NoInterfaceObject">
17562           <webidl> NoInterfaceObject</webidl>
17563         </ExtendedAttribute>
17564       </ExtendedAttributeList>
17565       <Operation name="onitemsadded" id="::Calendar::CalendarChangeCallback::onitemsadded">
17566         <webidl>    void onitemsadded(<ref>CalendarItem</ref>[] items);</webidl>
17567         <descriptive>
17568             <brief>
17569  Called when items are added to the calendar.
17570             </brief>
17571             <version>
17572  1.0
17573             </version>
17574         </descriptive>
17575         <Type type="void"/>
17576         <ArgumentList>
17577           <Argument name="items">
17578             <descriptive>
17579                 <description><p>
17580  The list of items that were added.
17581                 </p></description>
17582             </descriptive>
17583             <Type type="array">
17584               <Type name="CalendarItem"/>
17585             </Type>
17586           </Argument>
17587         </ArgumentList>
17588       </Operation>
17589       <Operation name="onitemsupdated" id="::Calendar::CalendarChangeCallback::onitemsupdated">
17590         <webidl>    void onitemsupdated(<ref>CalendarItem</ref>[] items);</webidl>
17591         <descriptive>
17592             <brief>
17593  Called when items are updated in the calendar.
17594             </brief>
17595             <version>
17596  1.0
17597             </version>
17598         </descriptive>
17599         <Type type="void"/>
17600         <ArgumentList>
17601           <Argument name="items">
17602             <descriptive>
17603                 <description><p>
17604  The list of items that were updated.
17605                 </p></description>
17606             </descriptive>
17607             <Type type="array">
17608               <Type name="CalendarItem"/>
17609             </Type>
17610           </Argument>
17611         </ArgumentList>
17612       </Operation>
17613       <Operation name="onitemsremoved" id="::Calendar::CalendarChangeCallback::onitemsremoved">
17614         <webidl>    void onitemsremoved(<ref>CalendarItemId</ref>[] ids);</webidl>
17615         <descriptive>
17616             <brief>
17617  Called when item are removed from the calendar.
17618             </brief>
17619             <version>
17620  1.0
17621             </version>
17622         </descriptive>
17623         <Type type="void"/>
17624         <ArgumentList>
17625           <Argument name="ids">
17626             <descriptive>
17627                 <description><p>
17628  The list of identifiers for the items that were removed.
17629                 </p></description>
17630             </descriptive>
17631             <Type type="array">
17632               <Type name="CalendarItemId"/>
17633             </Type>
17634           </Argument>
17635         </ArgumentList>
17636       </Operation>
17637     </Interface>
17638   </Module>
17639   <Module name="Callhistory" id="::Callhistory">
17640     <webidl>module Callhistory {
17641     [NoInterfaceObject] interface CallHistoryObject {
17642         readonly attribute <ref>CallHistory</ref> callhistory;
17643     };
17644     
17645     <ref>Tizen</ref> implements <ref>CallHistoryObject</ref>;
17646
17647     [NoInterfaceObject] interface RemoteParty {
17648         readonly attribute DOMString? remoteParty;
17649
17650         readonly attribute <ref>PersonId</ref>? personId;
17651
17652     };
17653
17654     [NoInterfaceObject] interface CallHistoryEntry {
17655     
17656         readonly attribute DOMString uid;
17657
17658         readonly attribute DOMString type;
17659
17660         readonly attribute DOMString[]? features;
17661
17662         readonly attribute <ref>RemoteParty</ref>[] remoteParties;
17663
17664         readonly attribute Date startTime;
17665
17666         readonly attribute unsigned long duration;
17667
17668         attribute DOMString direction;
17669     };
17670
17671     [NoInterfaceObject] interface CallHistory {
17672
17673         void find(<ref>CallHistoryEntryArraySuccessCallback</ref> successCallback,
17674                   optional <ref>ErrorCallback</ref>? errorCallback,
17675                   optional <ref>AbstractFilter</ref>? filter,
17676                   optional <ref>SortMode</ref>? sortMode,
17677                   optional unsigned long? limit,
17678                   optional unsigned long? offset) raises(<ref>WebAPIException</ref>);
17679
17680         void remove(<ref>CallHistoryEntry</ref> entry) raises(<ref>WebAPIException</ref>);
17681
17682         void removeBatch(<ref>CallHistoryEntry</ref>[] entries,
17683                          optional <ref>SuccessCallback</ref>? successCallback,
17684                          optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
17685
17686         void removeAll(optional <ref>SuccessCallback</ref>? successCallback,
17687                        optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
17688
17689         long addChangeListener(<ref>CallHistoryChangeCallback</ref> observer) raises(<ref>WebAPIException</ref>);
17690
17691         void removeChangeListener(long handle) raises(<ref>WebAPIException</ref>);
17692     };
17693
17694     [Callback=FunctionOnly, NoInterfaceObject] interface CallHistoryEntryArraySuccessCallback {
17695         void onsuccess(<ref>CallHistoryEntry</ref>[] entries);
17696     };
17697
17698     [Callback, NoInterfaceObject]
17699     interface CallHistoryChangeCallback {
17700         void onadded(<ref>CallHistoryEntry</ref>[] newItems);
17701
17702         void onchanged(<ref>CallHistoryEntry</ref>[] changedItems);
17703
17704         void onremoved(DOMString[] removedItems);
17705     };
17706 };</webidl>
17707     <descriptive>
17708         <brief>
17709  This API provides interfaces and methods for retrieving information from the call history.
17710         </brief>
17711        <description>
17712         <p>
17713 For more information on the Callhistory features, see <a href="../../org.tizen.web.appprogramming/html/guide/social_guide/call.htm">Call History Guide</a>.  
17714         </p>
17715        </description>
17716         <version>
17717  2.0
17718         </version>
17719         <def-api-feature identifier="http://tizen.org/feature/network.telephony">
17720           <descriptive>
17721            <description>
17722             <p>
17723 To guarantee this application running on a device with Telephony feature, define below in the config file: 
17724             </p>
17725            </description>
17726           </descriptive>
17727         </def-api-feature>
17728     </descriptive>
17729     <Interface name="CallHistoryObject" id="::Callhistory::CallHistoryObject">
17730       <webidl>    [NoInterfaceObject] interface CallHistoryObject {
17731         readonly attribute <ref>CallHistory</ref> callhistory;
17732     };</webidl>
17733       <descriptive>
17734           <brief>
17735  This interface defines what is instantiated by the <em>Tizen </em>object from the Tizen Platform.
17736 The <em>tizen.callhistory<em> object allows access to the CallHistory API.
17737 </em></em>          </brief>
17738           <version>
17739  2.0
17740           </version>
17741       </descriptive>
17742       <ExtendedAttributeList>
17743         <ExtendedAttribute name="NoInterfaceObject">
17744           <webidl>NoInterfaceObject</webidl>
17745         </ExtendedAttribute>
17746       </ExtendedAttributeList>
17747       <Attribute readonly="readonly" name="callhistory" id="::Callhistory::CallHistoryObject::callhistory">
17748         <webidl>        readonly attribute <ref>CallHistory</ref> callhistory;</webidl>
17749         <Type name="CallHistory"/>
17750       </Attribute>
17751     </Interface>
17752     <Implements name1="Tizen" name2="CallHistoryObject">
17753       <webidl>    <ref>Tizen</ref> implements <ref>CallHistoryObject</ref>;</webidl>
17754       <descriptive>
17755           <brief>
17756  The CallHistory interface is available from the <em>Tizen </em>object through the <em>Window </em>object.
17757           </brief>
17758           <version>
17759  2.0
17760           </version>
17761       </descriptive>
17762     </Implements>
17763     <Interface name="RemoteParty" id="::Callhistory::RemoteParty">
17764       <webidl>    [NoInterfaceObject] interface RemoteParty {
17765         readonly attribute DOMString? remoteParty;
17766
17767         readonly attribute <ref>PersonId</ref>? personId;
17768
17769     };</webidl>
17770       <descriptive>
17771           <brief>
17772  This interface represents remote parties.
17773           </brief>
17774           <version>
17775  2.0
17776           </version>
17777       </descriptive>
17778       <ExtendedAttributeList>
17779         <ExtendedAttribute name="NoInterfaceObject">
17780           <webidl>NoInterfaceObject</webidl>
17781         </ExtendedAttribute>
17782       </ExtendedAttributeList>
17783       <Attribute readonly="readonly" name="remoteParty" id="::Callhistory::RemoteParty::remoteParty">
17784         <webidl>        readonly attribute DOMString? remoteParty;</webidl>
17785         <descriptive>
17786             <brief>
17787  An attribute to store the remote party identifier (RPID).
17788 The RPID is a unique identifier used by a service with call capability. It also includes phone numbers.
17789 Contacts are also defined per service, so an RPID can be resolved to a Contact.
17790 A <var>null </var>value means that the remote is hidden (private number).
17791             </brief>
17792             <version>
17793  2.0 
17794             </version>
17795         </descriptive>
17796         <Type type="DOMString" nullable="nullable"/>
17797       </Attribute>
17798       <Attribute readonly="readonly" name="personId" id="::Callhistory::RemoteParty::personId">
17799         <webidl>        readonly attribute <ref>PersonId</ref>? personId;</webidl>
17800         <descriptive>
17801             <brief>
17802  An attribute to store the identifier of the person that the raw contact belongs to.
17803             </brief>
17804            <description>
17805             <p>
17806 If the contact cannot be resolved, the value is <var>null</var>.
17807 See <a href="../../org.tizen.web.device.apireference/tizen/contact.html">Contact API</a> for more information.
17808             </p>
17809            </description>
17810             <version>
17811  2.0
17812             </version>
17813         </descriptive>
17814         <Type name="PersonId" nullable="nullable"/>
17815       </Attribute>
17816     </Interface>
17817     <Interface name="CallHistoryEntry" id="::Callhistory::CallHistoryEntry">
17818       <webidl>    [NoInterfaceObject] interface CallHistoryEntry {
17819     
17820         readonly attribute DOMString uid;
17821
17822         readonly attribute DOMString type;
17823
17824         readonly attribute DOMString[]? features;
17825
17826         readonly attribute <ref>RemoteParty</ref>[] remoteParties;
17827
17828         readonly attribute Date startTime;
17829
17830         readonly attribute unsigned long duration;
17831
17832         attribute DOMString direction;
17833     };</webidl>
17834       <descriptive>
17835           <brief>
17836  This interface represents the subset of properties of calls, which become a call record in the call history after the call ends.
17837           </brief>
17838           <version>
17839  2.0
17840           </version>
17841       </descriptive>
17842       <ExtendedAttributeList>
17843         <ExtendedAttribute name="NoInterfaceObject">
17844           <webidl>NoInterfaceObject</webidl>
17845         </ExtendedAttribute>
17846       </ExtendedAttributeList>
17847       <Attribute readonly="readonly" name="uid" id="::Callhistory::CallHistoryEntry::uid">
17848         <webidl>        readonly attribute DOMString uid;</webidl>
17849         <descriptive>
17850             <brief>
17851  An attribute to store the unique identifier of a call record.
17852             </brief>
17853             <version>
17854  2.0
17855             </version>
17856         </descriptive>
17857         <Type type="DOMString"/>
17858       </Attribute>
17859       <Attribute readonly="readonly" name="type" id="::Callhistory::CallHistoryEntry::type">
17860         <webidl>        readonly attribute DOMString type;</webidl>
17861         <descriptive>
17862             <brief>
17863  An attribute to store the service type of the call saved to call history.
17864             </brief>
17865            <description>
17866             <p>
17867 The following values are the supported:
17868             </p>
17869             <ul>
17870               <li>
17871 TEL - for all protocols with phone number addressing (PSTN, GSM, CDMA, LTE, etc.)               </li>
17872               <li>
17873 XMPP -  for generic XMPP calls              </li>
17874               <li>
17875 SIP - for generic SIP calls              </li>
17876             </ul>
17877            </description>
17878             <version>
17879  2.0
17880             </version>
17881         </descriptive>
17882         <Type type="DOMString"/>
17883       </Attribute>
17884       <Attribute readonly="readonly" name="features" id="::Callhistory::CallHistoryEntry::features">
17885         <webidl>        readonly attribute DOMString[]? features;</webidl>
17886         <descriptive>
17887             <brief>
17888  An attributes to store the features associated with the call service saved to call history.
17889 The following values are the supported:
17890             </brief>
17891            <description>
17892             <ul>
17893               <li>
17894 CALL - for all call types              </li>
17895               <li>
17896 VOICECALL - for voice-only calls               </li>
17897               <li>
17898 VIDEOCALL - for audio and video channel support in the call              </li>
17899               <li>
17900 EMERGENCYCALL - to denote an emergency call              </li>
17901             </ul>
17902            </description>
17903             <version>
17904  2.0
17905             </version>
17906         </descriptive>
17907         <Type type="array" nullable="nullable">
17908           <Type type="DOMString"/>
17909         </Type>
17910       </Attribute>
17911       <Attribute readonly="readonly" name="remoteParties" id="::Callhistory::CallHistoryEntry::remoteParties">
17912         <webidl>        readonly attribute <ref>RemoteParty</ref>[] remoteParties;</webidl>
17913         <descriptive>
17914             <brief>
17915  An attributes to store the remote parties participating in the call.
17916             </brief>
17917             <version>
17918  2.0
17919             </version>
17920         </descriptive>
17921         <Type type="array">
17922           <Type name="RemoteParty"/>
17923         </Type>
17924       </Attribute>
17925       <Attribute readonly="readonly" name="startTime" id="::Callhistory::CallHistoryEntry::startTime">
17926         <webidl>        readonly attribute Date startTime;</webidl>
17927         <descriptive>
17928             <brief>
17929  An attribute to store the start time of the call.
17930 This attribute is the moment when media channels come up. The exact meaning is defined by the back-end.
17931             </brief>
17932             <version>
17933  2.0
17934             </version>
17935         </descriptive>
17936         <Type type="Date"/>
17937       </Attribute>
17938       <Attribute readonly="readonly" name="duration" id="::Callhistory::CallHistoryEntry::duration">
17939         <webidl>        readonly attribute unsigned long duration;</webidl>
17940         <descriptive>
17941             <brief>
17942  An attribute to store the duration of the call in seconds.
17943 This attribute is the duration from media channels coming up to the moment when media channels tear down on the same call service.
17944 If the call is migrated to another service, another call history entry is used.
17945 The exact meaning is defined by the back-end.
17946             </brief>
17947             <version>
17948  2.0
17949             </version>
17950         </descriptive>
17951         <Type type="unsigned long"/>
17952       </Attribute>
17953       <Attribute name="direction" id="::Callhistory::CallHistoryEntry::direction">
17954         <webidl>        attribute DOMString direction;</webidl>
17955         <descriptive>
17956             <brief>
17957  An attribute to indicate whether the call was dialed, received, missed, blocked or rejected.
17958 The following values are the supported:
17959             </brief>
17960            <description>
17961             <ul>
17962               <li>
17963 DIALED - for dialed calls              </li>
17964               <li>
17965 RECEIVED - for received calls              </li>
17966               <li>
17967 MISSEDNEW - for missed calls not seen yet              </li>
17968               <li>
17969 MISSED - for missed calls              </li>
17970               <li>
17971 BLOCKED - for blocked calls              </li>
17972               <li>
17973 REJECTED - for rejected calls              </li>
17974             </ul>
17975            </description>
17976             <version>
17977  2.0
17978             </version>
17979         </descriptive>
17980         <Type type="DOMString"/>
17981       </Attribute>
17982     </Interface>
17983     <Interface name="CallHistory" id="::Callhistory::CallHistory">
17984       <webidl>    [NoInterfaceObject] interface CallHistory {
17985
17986         void find(<ref>CallHistoryEntryArraySuccessCallback</ref> successCallback,
17987                   optional <ref>ErrorCallback</ref>? errorCallback,
17988                   optional <ref>AbstractFilter</ref>? filter,
17989                   optional <ref>SortMode</ref>? sortMode,
17990                   optional unsigned long? limit,
17991                   optional unsigned long? offset) raises(<ref>WebAPIException</ref>);
17992
17993         void remove(<ref>CallHistoryEntry</ref> entry) raises(<ref>WebAPIException</ref>);
17994
17995         void removeBatch(<ref>CallHistoryEntry</ref>[] entries,
17996                          optional <ref>SuccessCallback</ref>? successCallback,
17997                          optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
17998
17999         void removeAll(optional <ref>SuccessCallback</ref>? successCallback,
18000                        optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
18001
18002         long addChangeListener(<ref>CallHistoryChangeCallback</ref> observer) raises(<ref>WebAPIException</ref>);
18003
18004         void removeChangeListener(long handle) raises(<ref>WebAPIException</ref>);
18005     };</webidl>
18006       <descriptive>
18007           <brief>
18008  This interface manages call history.
18009 Apps can read or delete call history (depending on permission).
18010 Modifying call history is allowed for certain attributes, like direction.
18011 Adding call history is owned by the back-end. Filtering is supported for all fields of <em>CallHistoryEntry</em>.
18012           </brief>
18013           <version>
18014  2.0
18015           </version>
18016       </descriptive>
18017       <ExtendedAttributeList>
18018         <ExtendedAttribute name="NoInterfaceObject">
18019           <webidl>NoInterfaceObject</webidl>
18020         </ExtendedAttribute>
18021       </ExtendedAttributeList>
18022       <Operation name="find" id="::Callhistory::CallHistory::find">
18023         <webidl>        void find(<ref>CallHistoryEntryArraySuccessCallback</ref> successCallback,
18024                   optional <ref>ErrorCallback</ref>? errorCallback,
18025                   optional <ref>AbstractFilter</ref>? filter,
18026                   optional <ref>SortMode</ref>? sortMode,
18027                   optional unsigned long? limit,
18028                   optional unsigned long? offset) raises(<ref>WebAPIException</ref>);</webidl>
18029         <descriptive>
18030             <brief>
18031  Finds and returns call history.
18032             </brief>
18033            <description>
18034             <p>
18035 The <em>errorCallback()</em> is launched with these error types:
18036             </p>
18037             <ul>
18038               <li>
18039 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
18040               <li>
18041 UnknownError - If any other error occurs.              </li>
18042             </ul>
18043            </description>
18044             <version>
18045  2.0
18046             </version>
18047             <privilegelevel>
18048  public
18049             </privilegelevel>
18050             <privilege>
18051  http://tizen.org/privilege/callhistory.read
18052             </privilege>
18053             <Code> // Defines success callback
18054  function onSuccess(results) {
18055      console.log(results.length + &quot; call history item(s) found!&quot;);
18056      for (var i=0; i&#60;results.length; i++) {
18057          console.log(i + &quot;. &quot; + results[i].toString()); // process the CallHistoryEntry
18058      }
18059  }
18060
18061  // Defines error callback
18062  function onError(error) {
18063      console.log(&quot;Query failed&quot; + error.name);
18064  }
18065
18066  // Defines filter: list CS calls, most recent first
18067  var filter = new tizen.AttributeFilter(&quot;type&quot;, &quot;EXACTLY&quot;, &quot;TEL&quot;);
18068
18069  // Defines sort mode: descending on call start time.
18070  var sortMode = new tizen.SortMode(&quot;startTime&quot;, &quot;DESC&quot;);
18071
18072  // Makes the query and wire up the callbacks
18073  tizen.callhistory.find(onSuccess,
18074                          onError,
18075                          filter,
18076                          sortMode);
18077
18078  var numberfilter = new tizen.AttributeFilter(
18079                                  &quot;remoteParties.remoteParty&quot;,
18080                                  &quot;EXACTLY&quot;,
18081                                  &quot;123456789&quot;);
18082                    
18083  // Creates a composite filter for time constraints
18084  var y2009Filter = new tizen.AttributeRangeFilter(
18085                                 &quot;startTime&quot;,
18086                                 new Date(2009, 0, 1),
18087                                 new Date(2010, 0, 1));
18088
18089  var y2011Filter = new tizen.AttributeRangeFilter(
18090                                 &quot;startTime&quot;,
18091                                 new Date(2011, 0, 1),
18092                                 new Date(2012, 0, 1));
18093
18094  var datefilter = new tizen.CompositeFilter(&quot;UNION&quot;, [y2009Filter, y2011Filter]);
18095
18096  // Creates a filter to find all video calls (including cellular, skype, etc)
18097  // The filter matches exactly any features from the &quot;features&quot; array
18098  var tfilter = new tizen.AttributeFilter(&quot;features&quot;, &quot;EXACTLY&quot;, &quot;VIDEOCALL&quot;);
18099
18100  // Creates composite filter
18101  var ifilter = new tizen.CompositeFilter(&quot;INTERSECTION&quot;,
18102                                          [numberFilter, dateFilter, tfilter]);
18103
18104  // Makes the query and wire up the callbacks; reuse sortMode
18105  tizen.callhistory.find(onSuccess,
18106                          onError,
18107                          ifilter,
18108                          sortMode);
18109
18110  </Code>
18111         </descriptive>
18112         <Type type="void"/>
18113         <ArgumentList>
18114           <Argument name="successCallback">
18115             <descriptive>
18116                 <description><p>
18117  A handler for query result set.
18118                 </p></description>
18119             </descriptive>
18120             <Type name="CallHistoryEntryArraySuccessCallback"/>
18121           </Argument>
18122           <Argument optional="optional" name="errorCallback">
18123             <descriptive>
18124                 <description><p>
18125  The method to call when an error occurs.
18126                 </p></description>
18127             </descriptive>
18128             <Type name="ErrorCallback" nullable="nullable"/>
18129           </Argument>
18130           <Argument optional="optional" name="filter">
18131             <descriptive>
18132                 <description><p>
18133  A filter defined on <em>CallHistoryEntry </em>attributes. It can be a composite filter.
18134                 </p></description>
18135             </descriptive>
18136             <Type name="AbstractFilter" nullable="nullable"/>
18137           </Argument>
18138           <Argument optional="optional" name="sortMode">
18139             <descriptive>
18140                 <description><p>
18141  The sort order in which call history are return.
18142                 </p></description>
18143             </descriptive>
18144             <Type name="SortMode" nullable="nullable"/>
18145           </Argument>
18146           <Argument optional="optional" name="limit">
18147             <descriptive>
18148                 <description><p>
18149  The maximum limit of query result (It is the same meaning as SQL LIMIT).
18150 If limit is 0, query result is no limit.
18151                 </p></description>
18152             </descriptive>
18153             <Type type="unsigned long" nullable="nullable"/>
18154           </Argument>
18155           <Argument optional="optional" name="offset">
18156             <descriptive>
18157                 <description><p>
18158  The offset in the result set, from where the results are listed (It is the same semantics as SQL OFFSET).<br/>The number of results listed is maximum the specified <em>limit</em> parameter. Defaults to<var> 0</var>, meaning no offset.
18159                 </p></description>
18160             </descriptive>
18161             <Type type="unsigned long" nullable="nullable"/>
18162           </Argument>
18163         </ArgumentList>
18164         <Raises>
18165           <RaiseException name="WebAPIException">
18166             <descriptive>
18167                 <description><p>
18168  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
18169                 </p></description>
18170                 <description><p>
18171  with error type SecurityError, if this functionality is not allowed.
18172                 </p></description>
18173                 <description><p>
18174  with error type NotSupportedError, if the feature is not supported.
18175                 </p></description>
18176             </descriptive>
18177           </RaiseException>
18178         </Raises>
18179       </Operation>
18180       <Operation name="remove" id="::Callhistory::CallHistory::remove">
18181         <webidl>        void remove(<ref>CallHistoryEntry</ref> entry) raises(<ref>WebAPIException</ref>);</webidl>
18182         <descriptive>
18183             <brief>
18184  Removes a call history synchronously.
18185             </brief>
18186             <version>
18187  2.0
18188             </version>
18189             <privilegelevel>
18190  public
18191             </privilegelevel>
18192             <privilege>
18193  http://tizen.org/privilege/callhistory.write
18194             </privilege>
18195             <Code> // Defines success callback
18196  function onSuccess(results) {
18197      if (results.length > 0)
18198          tizen.callhistory.remove(results[0]);
18199  }
18200
18201  // Defines error callback
18202  function onError(error) {
18203      console.log(&quot;Query failed&quot; + error.name);
18204  }
18205
18206  // Makes the query and wires up the callbacks
18207  tizen.callhistory.find(onSuccess, onError);
18208
18209  </Code>
18210         </descriptive>
18211         <Type type="void"/>
18212         <ArgumentList>
18213           <Argument name="entry">
18214             <descriptive>
18215                 <description><p>
18216  Call history entry to be deleted.
18217                 </p></description>
18218             </descriptive>
18219             <Type name="CallHistoryEntry"/>
18220           </Argument>
18221         </ArgumentList>
18222         <Raises>
18223           <RaiseException name="WebAPIException">
18224             <descriptive>
18225                 <description><p>
18226  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
18227                 </p></description>
18228                 <description><p>
18229  with error type InvalidValuesError, if any input parameter contains invalid values.
18230                 </p></description>
18231                 <description><p>
18232  with error type SecurityError, if the application does not have the privilege to call this method.
18233                 </p></description>
18234                 <description><p>
18235  with error type NotSupportedError, if the feature is not supported.
18236                 </p></description>
18237                 <description><p>
18238  with error type UnknownError, if any other error occurs.
18239                 </p></description>
18240             </descriptive>
18241           </RaiseException>
18242         </Raises>
18243       </Operation>
18244       <Operation name="removeBatch" id="::Callhistory::CallHistory::removeBatch">
18245         <webidl>        void removeBatch(<ref>CallHistoryEntry</ref>[] entries,
18246                          optional <ref>SuccessCallback</ref>? successCallback,
18247                          optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
18248         <descriptive>
18249             <brief>
18250  Removes a list of call history asynchronously.
18251             </brief>
18252            <description>
18253             <p>
18254 The <em>errorCallback()</em> is launched with these error types:
18255             </p>
18256             <ul>
18257               <li>
18258 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
18259               <li>
18260 UnknownError - If any other error occurs.              </li>
18261             </ul>
18262            </description>
18263             <version>
18264  2.0
18265             </version>
18266             <privilegelevel>
18267  public
18268             </privilegelevel>
18269             <privilege>
18270  http://tizen.org/privilege/callhistory.write
18271             </privilege>
18272             <Code> // Defines success callback
18273  function onSuccess(results) {
18274      tizen.callhistory.removeBatch(results);
18275  }
18276
18277  // Defines error callback
18278  function onError(error) {
18279      console.log(&quot;Query failed&quot; + error.name);
18280  }
18281
18282  // Makes the query and wires up the callbacks
18283  tizen.callhistory.find(onSuccess, onError);
18284
18285  </Code>
18286         </descriptive>
18287         <Type type="void"/>
18288         <ArgumentList>
18289           <Argument name="entries">
18290             <descriptive>
18291                 <description><p>
18292  A list of call history entries to delete.
18293                 </p></description>
18294             </descriptive>
18295             <Type type="array">
18296               <Type name="CallHistoryEntry"/>
18297             </Type>
18298           </Argument>
18299           <Argument optional="optional" name="successCallback">
18300             <descriptive>
18301                 <description><p>
18302  A generic success handler.
18303                 </p></description>
18304             </descriptive>
18305             <Type name="SuccessCallback" nullable="nullable"/>
18306           </Argument>
18307           <Argument optional="optional" name="errorCallback">
18308             <descriptive>
18309                 <description><p>
18310  An error handler.
18311                 </p></description>
18312             </descriptive>
18313             <Type name="ErrorCallback" nullable="nullable"/>
18314           </Argument>
18315         </ArgumentList>
18316         <Raises>
18317           <RaiseException name="WebAPIException">
18318             <descriptive>
18319                 <description><p>
18320  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
18321                 </p></description>
18322                 <description><p>
18323  with error type SecurityError, if the application does not have the privilege to call this method. 
18324                 </p></description>
18325                 <description><p>
18326  with error type NotSupportedError, if this feature is not supported.
18327                 </p></description>
18328             </descriptive>
18329           </RaiseException>
18330         </Raises>
18331       </Operation>
18332       <Operation name="removeAll" id="::Callhistory::CallHistory::removeAll">
18333         <webidl>        void removeAll(optional <ref>SuccessCallback</ref>? successCallback,
18334                        optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
18335         <descriptive>
18336             <brief>
18337  Removes all call history asynchronously.
18338             </brief>
18339            <description>
18340             <p>
18341 The <em>errorCallback()</em> is launched with these error types:
18342             </p>
18343             <ul>
18344               <li>
18345 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
18346               <li>
18347 UnknownError - If any other error occurs.              </li>
18348             </ul>
18349            </description>
18350             <version>
18351  2.0
18352             </version>
18353             <privilegelevel>
18354  public
18355             </privilegelevel>
18356             <privilege>
18357  http://tizen.org/privilege/callhistory.write
18358             </privilege>
18359         </descriptive>
18360         <Type type="void"/>
18361         <ArgumentList>
18362           <Argument optional="optional" name="successCallback">
18363             <descriptive>
18364                 <description><p>
18365  A generic success handler. 
18366                 </p></description>
18367             </descriptive>
18368             <Type name="SuccessCallback" nullable="nullable"/>
18369           </Argument>
18370           <Argument optional="optional" name="errorCallback">
18371             <descriptive>
18372                 <description><p>
18373  An error handler.
18374                 </p></description>
18375             </descriptive>
18376             <Type name="ErrorCallback" nullable="nullable"/>
18377           </Argument>
18378         </ArgumentList>
18379         <Raises>
18380           <RaiseException name="WebAPIException">
18381             <descriptive>
18382                 <description><p>
18383  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
18384                 </p></description>
18385                 <description><p>
18386  with error type SecurityError, if this functionality is not allowed.
18387                 </p></description>
18388                 <description><p>
18389  with error type NotSupportedError, if this feature is not supported.
18390                 </p></description>
18391             </descriptive>
18392           </RaiseException>
18393         </Raises>
18394       </Operation>
18395       <Operation name="addChangeListener" id="::Callhistory::CallHistory::addChangeListener">
18396         <webidl>        long addChangeListener(<ref>CallHistoryChangeCallback</ref> observer) raises(<ref>WebAPIException</ref>);</webidl>
18397         <descriptive>
18398             <brief>
18399  Adds a listener to register for callback to observe call history changes.
18400             </brief>
18401             <version>
18402  2.0
18403             </version>
18404             <privilegelevel>
18405  public
18406             </privilegelevel>
18407             <privilege>
18408  http://tizen.org/privilege/callhistory.read
18409             </privilege>
18410             <Code> var onListenerCB = {
18411      onadded: function(newItems) {
18412          console.log(&quot;New Item added&quot;);
18413          for (var i in newItems) {
18414              console.log(&quot;Item &quot; + i + &quot; startTime: &quot; + newItems[i].startTime);
18415          }
18416      },
18417      onchanged: function(changedItems) {
18418          console.log(&quot;Items changed&quot;);
18419          for (var i in changedItems) {
18420              console.log(&quot;Item &quot; + i + &quot; direction: &quot; + changedItems[i].direction);
18421          }
18422      },
18423      onremoved: function(removedItems) {
18424          console.log(&quot;Items removed&quot;);
18425          for(var i in removedItems)  {
18426             console.log(&quot;Item &quot; + i + &quot; : &quot; + removedItems[i]);
18427          }
18428      }};
18429
18430  try {
18431      // Registers a call history callback
18432      var handle = tizen.callhistory.addChangeListener(onListenerCB);
18433
18434      // Unregisters a previously registered listener
18435      tizen.callhistory.removeChangeListener(handle);
18436  } catch (error) {
18437      console.log(&quot;Exception - code: &quot; + error.name + &quot; message: &quot; + error.message);
18438  }
18439
18440  </Code>
18441         </descriptive>
18442         <Type type="long">
18443           <descriptive>
18444               <description><p>
18445  long A handle which can be used for unregistering.
18446               </p></description>
18447           </descriptive>
18448         </Type>
18449         <ArgumentList>
18450           <Argument name="observer">
18451             <descriptive>
18452                 <description><p>
18453  A callback for handling the list of new or changed or <em>CallHistoryEntry </em>objects in the call history.
18454                 </p></description>
18455             </descriptive>
18456             <Type name="CallHistoryChangeCallback"/>
18457           </Argument>
18458         </ArgumentList>
18459         <Raises>
18460           <RaiseException name="WebAPIException">
18461             <descriptive>
18462                 <description><p>
18463  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
18464                 </p></description>
18465                 <description><p>
18466  with error type InvalidValuesError, if any input parameter contains invalid values.
18467                 </p></description>
18468                 <description><p>
18469  with error type SecurityError, if the application does not have the privilege to call this method.
18470                 </p></description>
18471                 <description><p>
18472  with error type NotSupportedError, if the feature is not supported.
18473                 </p></description>
18474                 <description><p>
18475  with error type UnknownError, if any other error occurs.
18476                 </p></description>
18477             </descriptive>
18478           </RaiseException>
18479         </Raises>
18480       </Operation>
18481       <Operation name="removeChangeListener" id="::Callhistory::CallHistory::removeChangeListener">
18482         <webidl>        void removeChangeListener(long handle) raises(<ref>WebAPIException</ref>);</webidl>
18483         <descriptive>
18484             <brief>
18485  Removes a listener to unregister a previously registered listener.
18486             </brief>
18487             <version>
18488  2.0
18489             </version>
18490             <privilegelevel>
18491  public
18492             </privilegelevel>
18493             <privilege>
18494  http://tizen.org/privilege/callhistory.read
18495             </privilege>
18496         </descriptive>
18497         <Type type="void"/>
18498         <ArgumentList>
18499           <Argument name="handle">
18500             <descriptive>
18501                 <description><p>
18502  The previously obtained listener handle.
18503                 </p></description>
18504             </descriptive>
18505             <Type type="long"/>
18506           </Argument>
18507         </ArgumentList>
18508         <Raises>
18509           <RaiseException name="WebAPIException">
18510             <descriptive>
18511                 <description><p>
18512  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
18513                 </p></description>
18514                 <description><p>
18515  with error type InvalidValuesError, if any input parameter contains invalid values.
18516                 </p></description>
18517                 <description><p>
18518  with error type SecurityError, if the application does not have the privilege to call this method.
18519                 </p></description>
18520                 <description><p>
18521  with error type NotSupportedError, if the feature is not supported.
18522                 </p></description>
18523                 <description><p>
18524  with error type UnknownError, if any other error occurs.
18525                 </p></description>
18526             </descriptive>
18527           </RaiseException>
18528         </Raises>
18529       </Operation>
18530     </Interface>
18531     <Interface name="CallHistoryEntryArraySuccessCallback" id="::Callhistory::CallHistoryEntryArraySuccessCallback">
18532       <webidl>    [Callback=FunctionOnly, NoInterfaceObject] interface CallHistoryEntryArraySuccessCallback {
18533         void onsuccess(<ref>CallHistoryEntry</ref>[] entries);
18534     };</webidl>
18535       <descriptive>
18536           <brief>
18537  This is a callback interface of <em>CallHistory </em>operations.
18538 For example code, see <em>CallHistory </em>interface.
18539           </brief>
18540           <version>
18541  2.0
18542           </version>
18543       </descriptive>
18544       <ExtendedAttributeList>
18545         <ExtendedAttribute name="Callback" value="FunctionOnly">
18546           <webidl>Callback</webidl>
18547         </ExtendedAttribute>
18548         <ExtendedAttribute name="NoInterfaceObject">
18549           <webidl> NoInterfaceObject</webidl>
18550         </ExtendedAttribute>
18551       </ExtendedAttributeList>
18552       <Operation name="onsuccess" id="::Callhistory::CallHistoryEntryArraySuccessCallback::onsuccess">
18553         <webidl>        void onsuccess(<ref>CallHistoryEntry</ref>[] entries);</webidl>
18554         <descriptive>
18555             <brief>
18556  Called when the queries on call history have been successfully completed.
18557             </brief>
18558             <version>
18559  2.0
18560             </version>
18561         </descriptive>
18562         <Type type="void"/>
18563         <ArgumentList>
18564           <Argument name="entries">
18565             <descriptive>
18566                 <description><p>
18567  An array of <em>CallHistoryEntry </em>objects, representing the result set of the query over the call history.
18568                 </p></description>
18569             </descriptive>
18570             <Type type="array">
18571               <Type name="CallHistoryEntry"/>
18572             </Type>
18573           </Argument>
18574         </ArgumentList>
18575       </Operation>
18576     </Interface>
18577     <Interface name="CallHistoryChangeCallback" id="::Callhistory::CallHistoryChangeCallback">
18578       <webidl>    [Callback, NoInterfaceObject]
18579     interface CallHistoryChangeCallback {
18580         void onadded(<ref>CallHistoryEntry</ref>[] newItems);
18581
18582         void onchanged(<ref>CallHistoryEntry</ref>[] changedItems);
18583
18584         void onremoved(DOMString[] removedItems);
18585     };</webidl>
18586       <descriptive>
18587           <brief>
18588  This is a callback interface of a<em> CallHistory </em>operations.
18589 For example code, see <em>CallHistory </em>interface.
18590           </brief>
18591           <version>
18592  2.0
18593           </version>
18594       </descriptive>
18595       <ExtendedAttributeList>
18596         <ExtendedAttribute name="Callback">
18597           <webidl>Callback</webidl>
18598         </ExtendedAttribute>
18599         <ExtendedAttribute name="NoInterfaceObject">
18600           <webidl> NoInterfaceObject</webidl>
18601         </ExtendedAttribute>
18602       </ExtendedAttributeList>
18603       <Operation name="onadded" id="::Callhistory::CallHistoryChangeCallback::onadded">
18604         <webidl>        void onadded(<ref>CallHistoryEntry</ref>[] newItems);</webidl>
18605         <descriptive>
18606             <brief>
18607  Called when a new call history item is added.
18608             </brief>
18609             <version>
18610  2.0
18611             </version>
18612         </descriptive>
18613         <Type type="void"/>
18614         <ArgumentList>
18615           <Argument name="newItems">
18616             <descriptive>
18617                 <description><p>
18618  An array of <em>CallHistoryEntry </em>objects, representing the new items added to call history.
18619                 </p></description>
18620             </descriptive>
18621             <Type type="array">
18622               <Type name="CallHistoryEntry"/>
18623             </Type>
18624           </Argument>
18625         </ArgumentList>
18626       </Operation>
18627       <Operation name="onchanged" id="::Callhistory::CallHistoryChangeCallback::onchanged">
18628         <webidl>        void onchanged(<ref>CallHistoryEntry</ref>[] changedItems);</webidl>
18629         <descriptive>
18630             <brief>
18631  Called when the call history have been changed.
18632             </brief>
18633             <version>
18634  2.0
18635             </version>
18636         </descriptive>
18637         <Type type="void"/>
18638         <ArgumentList>
18639           <Argument name="changedItems">
18640             <descriptive>
18641                 <description><p>
18642  An array of <em>CallHistoryEntry </em>objects, representing the changed items in call history.
18643                 </p></description>
18644             </descriptive>
18645             <Type type="array">
18646               <Type name="CallHistoryEntry"/>
18647             </Type>
18648           </Argument>
18649         </ArgumentList>
18650       </Operation>
18651       <Operation name="onremoved" id="::Callhistory::CallHistoryChangeCallback::onremoved">
18652         <webidl>        void onremoved(DOMString[] removedItems);</webidl>
18653         <descriptive>
18654             <brief>
18655  Called when the call history have been removed.
18656             </brief>
18657             <version>
18658  2.0
18659             </version>
18660         </descriptive>
18661         <Type type="void"/>
18662         <ArgumentList>
18663           <Argument name="removedItems">
18664             <descriptive>
18665                 <description><p>
18666  An array of an uid of <em>CallHistoryEntry </em>objects, representing the removed items in call history.
18667                 </p></description>
18668             </descriptive>
18669             <Type type="array">
18670               <Type type="DOMString"/>
18671             </Type>
18672           </Argument>
18673         </ArgumentList>
18674       </Operation>
18675     </Interface>
18676   </Module>
18677   <Module name="Contact" id="::Contact">
18678     <webidl>module Contact {
18679
18680   typedef DOMString AddressBookId;
18681
18682   typedef DOMString ContactId;
18683
18684   typedef DOMString PersonId;
18685
18686   typedef DOMString ContactGroupId;
18687
18688   enum ContactTextFormat {&quot;VCARD_30&quot;};
18689
18690   [NoInterfaceObject] interface ContactManagerObject {
18691     readonly attribute <ref>ContactManager</ref> contact;
18692   };
18693   <ref>Tizen</ref> implements <ref>ContactManagerObject</ref>;
18694
18695   [NoInterfaceObject] interface ContactManager {
18696
18697     void getAddressBooks(<ref>AddressBookArraySuccessCallback</ref> successCallback,
18698                          optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
18699
18700     <ref>AddressBook</ref> getUnifiedAddressBook() raises(<ref>WebAPIException</ref>);
18701
18702     <ref>AddressBook</ref> getDefaultAddressBook() raises(<ref>WebAPIException</ref>);
18703
18704     <ref>AddressBook</ref> getAddressBook(<ref>AddressBookId</ref> addressBookId) raises(<ref>WebAPIException</ref>);
18705
18706     <ref>Person</ref> get(<ref>PersonId</ref> personId) raises(<ref>WebAPIException</ref>);
18707
18708     void update(<ref>Person</ref> person) raises(<ref>WebAPIException</ref>);
18709
18710     void updateBatch(<ref>Person</ref>[] persons,
18711                      optional <ref>SuccessCallback</ref>? successCallback,
18712                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
18713
18714     void remove(<ref>PersonId</ref> personId) raises(<ref>WebAPIException</ref>);
18715
18716     void removeBatch(<ref>PersonId</ref>[] personIds,
18717                      optional <ref>SuccessCallback</ref>? successCallback,
18718                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
18719
18720     void find(<ref>PersonArraySuccessCallback</ref> successCallback,
18721               optional <ref>ErrorCallback</ref>? errorCallback,
18722               optional <ref>AbstractFilter</ref>? filter,
18723               optional <ref>SortMode</ref>? sortMode) raises(<ref>WebAPIException</ref>);
18724
18725     long addChangeListener(<ref>PersonsChangeCallback</ref> successCallback) raises(<ref>WebAPIException</ref>);
18726
18727     void removeChangeListener(long watchId) raises(<ref>WebAPIException</ref>);
18728   };
18729
18730   [NoInterfaceObject] interface AddressBook {
18731
18732     readonly attribute <ref>AddressBookId</ref>? id;
18733
18734     readonly attribute DOMString name;
18735
18736     readonly attribute boolean readOnly;
18737
18738     <ref>Contact</ref> get(<ref>ContactId</ref> id) raises(<ref>WebAPIException</ref>);
18739
18740     void add(<ref>Contact</ref> contact) raises(<ref>WebAPIException</ref>);
18741
18742     void addBatch(<ref>Contact</ref>[] contacts,
18743                   optional <ref>ContactArraySuccessCallback</ref>? successCallback,
18744                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
18745
18746     void update(<ref>Contact</ref> contact) raises(<ref>WebAPIException</ref>);
18747
18748     void updateBatch(<ref>Contact</ref>[] contacts,
18749                      optional <ref>SuccessCallback</ref>? successCallback,
18750                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
18751
18752     void remove(<ref>ContactId</ref> id) raises(<ref>WebAPIException</ref>);
18753
18754     void removeBatch(<ref>ContactId</ref>[] ids,
18755                      optional <ref>SuccessCallback</ref>? successCallback,
18756                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
18757
18758     void find(<ref>ContactArraySuccessCallback</ref> successCallback,
18759               optional <ref>ErrorCallback</ref>? errorCallback,
18760               optional <ref>AbstractFilter</ref>? filter,
18761               optional <ref>SortMode</ref>? sortMode) raises(<ref>WebAPIException</ref>);
18762
18763     long addChangeListener(<ref>AddressBookChangeCallback</ref> successCallback,
18764                            optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
18765
18766     void removeChangeListener(long watchId) raises(<ref>WebAPIException</ref>);
18767
18768     <ref>ContactGroup</ref> getGroup(<ref>ContactGroupId</ref> groupId) raises(<ref>WebAPIException</ref>);
18769
18770     void addGroup(<ref>ContactGroup</ref> group) raises(<ref>WebAPIException</ref>);
18771
18772     void updateGroup(<ref>ContactGroup</ref> group) raises(<ref>WebAPIException</ref>);
18773
18774     void removeGroup(<ref>ContactGroupId</ref> groupId) raises(<ref>WebAPIException</ref>);
18775
18776     <ref>ContactGroup</ref>[] getGroups() raises(<ref>WebAPIException</ref>);
18777   };
18778
18779   [NoInterfaceObject] interface Person {
18780     readonly attribute <ref>PersonId</ref> id;
18781
18782     readonly attribute DOMString displayName;
18783
18784     readonly attribute long contactCount;
18785
18786     readonly attribute boolean hasPhoneNumber;
18787
18788     readonly attribute boolean hasEmail;
18789
18790     attribute boolean isFavorite;
18791
18792     attribute DOMString? photoURI;
18793
18794     attribute DOMString? ringtoneURI;
18795
18796     attribute <ref>ContactId</ref> displayContactId;
18797
18798     void link(<ref>PersonId</ref> personId) raises(<ref>WebAPIException</ref>);
18799
18800     <ref>Person</ref> unlink(<ref>ContactId</ref> contactId) raises(<ref>WebAPIException</ref>);
18801   };
18802
18803   dictionary ContactInit {
18804     <ref>ContactName</ref> name;
18805     <ref>ContactAddress</ref>[] addresses;
18806     DOMString photoURI;
18807     <ref>ContactPhoneNumber</ref>[] phoneNumbers;
18808     <ref>ContactEmailAddress</ref>[] emails;
18809     Date birthday;
18810     <ref>ContactAnniversary</ref>[] anniversaries;
18811     <ref>ContactOrganization</ref>[] organizations;
18812     DOMString[] notes;
18813     <ref>ContactWebSite</ref>[] urls;
18814     DOMString ringtoneURI;
18815     <ref>ContactGroupId</ref>[] groupIds;
18816   };
18817
18818   [Constructor(optional <ref>ContactInit</ref>? ContactInitDict),
18819    Constructor(DOMString stringRepresentation)]
18820   interface Contact {
18821     readonly attribute <ref>ContactId</ref>? id;
18822
18823     readonly attribute <ref>PersonId</ref>? personId;
18824
18825     readonly attribute <ref>AddressBookId</ref>? addressBookId;
18826
18827     readonly attribute Date? lastUpdated;
18828
18829     readonly attribute boolean isFavorite;
18830
18831     attribute <ref>ContactName</ref>? name setraises(<ref>WebAPIException</ref>);
18832
18833     attribute <ref>ContactAddress</ref>[] addresses setraises(<ref>WebAPIException</ref>);
18834
18835     attribute DOMString? photoURI setraises(<ref>WebAPIException</ref>);
18836
18837     attribute <ref>ContactPhoneNumber</ref>[] phoneNumbers setraises(<ref>WebAPIException</ref>);
18838
18839     attribute <ref>ContactEmailAddress</ref>[] emails setraises(<ref>WebAPIException</ref>);
18840
18841     attribute Date? birthday setraises(<ref>WebAPIException</ref>);
18842
18843     attribute <ref>ContactAnniversary</ref>[] anniversaries setraises(<ref>WebAPIException</ref>);
18844
18845     attribute <ref>ContactOrganization</ref>[] organizations setraises(<ref>WebAPIException</ref>);
18846
18847     attribute DOMString[] notes setraises(<ref>WebAPIException</ref>);
18848
18849     attribute <ref>ContactWebSite</ref>[] urls setraises(<ref>WebAPIException</ref>);
18850
18851     attribute DOMString? ringtoneURI setraises(<ref>WebAPIException</ref>);
18852
18853     attribute <ref>ContactGroupId</ref>[] groupIds setraises(<ref>WebAPIException</ref>);
18854
18855     DOMString convertToString(optional <ref>ContactTextFormat</ref>? format) raises(<ref>WebAPIException</ref>);
18856
18857     <ref>Contact</ref> clone() raises(<ref>WebAPIException</ref>);
18858   };
18859
18860   [Constructor(<ref>AddressBookId</ref> addressBookId, <ref>ContactId</ref> contactId)]
18861   interface ContactRef {
18862     attribute <ref>AddressBookId</ref> addressBookId;
18863
18864     attribute <ref>ContactId</ref> contactId;
18865   };
18866
18867   dictionary ContactNameInit {
18868     DOMString prefix;
18869     DOMString suffix;
18870     DOMString firstName;
18871     DOMString middleName;
18872     DOMString lastName;
18873     DOMString[] nicknames;
18874     DOMString phoneticFirstName;
18875     DOMString phoneticLastName;
18876   };
18877
18878   [Constructor(optional <ref>ContactNameInit</ref>? nameInitDict)]
18879   interface ContactName {
18880     attribute DOMString? prefix;
18881
18882     attribute DOMString? suffix;
18883
18884     attribute DOMString? firstName;
18885
18886     attribute DOMString? middleName;
18887
18888     attribute DOMString? lastName;
18889
18890     attribute DOMString[] nicknames;
18891
18892     attribute DOMString? phoneticFirstName;
18893
18894     attribute DOMString? phoneticLastName;
18895
18896     readonly attribute DOMString? displayName;
18897   };
18898
18899   dictionary ContactOrganizationInit {
18900     DOMString name;
18901     DOMString department;
18902     DOMString title;
18903     DOMString role;
18904     DOMString logoURI;
18905   };
18906
18907   [Constructor(optional <ref>ContactOrganizationInit</ref>? orgInitDict)]
18908   interface ContactOrganization {
18909     attribute DOMString? name;
18910
18911     attribute DOMString? department;
18912
18913     attribute DOMString? title;
18914
18915     attribute DOMString? role;
18916
18917     attribute DOMString? logoURI;
18918   };
18919
18920   [Constructor(DOMString url, optional DOMString type)]
18921   interface ContactWebSite
18922   {
18923     attribute DOMString url;
18924
18925     attribute DOMString type;
18926   };
18927
18928   [Constructor(Date date, optional DOMString? label)]
18929   interface ContactAnniversary
18930   {
18931     attribute Date date;
18932
18933     attribute DOMString? label;
18934   };
18935
18936   dictionary ContactAddressInit
18937   {
18938     DOMString country;
18939     DOMString region;
18940     DOMString city;
18941     DOMString streetAddress;
18942     DOMString additionalInformation;
18943     DOMString postalCode;
18944     boolean isDefault;
18945     DOMString[] types;
18946   };
18947
18948   [Constructor(optional <ref>ContactAddressInit</ref>? addressInitDict)]
18949   interface ContactAddress
18950   {
18951     attribute DOMString? country;
18952
18953     attribute DOMString? region;
18954
18955     attribute DOMString? city;
18956
18957     attribute DOMString? streetAddress;
18958
18959     attribute DOMString? additionalInformation;
18960
18961     attribute DOMString? postalCode;
18962
18963     attribute boolean isDefault;
18964
18965     attribute DOMString[] types;
18966   };
18967
18968   [Constructor(DOMString number, optional DOMString[] types, optional boolean isDefault)]
18969   interface ContactPhoneNumber
18970   {
18971     attribute DOMString number;
18972
18973     attribute boolean isDefault;
18974
18975     attribute DOMString[] types;
18976   };
18977
18978   [Constructor(DOMString email, optional DOMString[] types, optional boolean isDefault)]
18979   interface ContactEmailAddress
18980   {
18981     attribute DOMString email;
18982
18983     attribute boolean isDefault;
18984
18985     attribute DOMString[] types;
18986   };
18987
18988   [Constructor(DOMString name, optional DOMString? ringtoneURI, optional DOMString? photoURI)]
18989   interface ContactGroup
18990   {
18991     readonly attribute <ref>ContactGroupId</ref>? id;
18992
18993     readonly attribute <ref>AddressBookId</ref>? addressBookId;
18994
18995     attribute DOMString name;
18996
18997     attribute DOMString? ringtoneURI;
18998
18999     attribute DOMString? photoURI;
19000
19001     readonly attribute DOMString readOnly;
19002   };
19003
19004   [Callback=FunctionOnly, NoInterfaceObject] interface PersonArraySuccessCallback {
19005     void onsuccess(<ref>Person</ref>[] persons);
19006   };
19007
19008   [Callback=FunctionOnly, NoInterfaceObject] interface ContactArraySuccessCallback {
19009     void onsuccess(<ref>Contact</ref>[] contacts);
19010   };
19011
19012   [Callback=FunctionOnly, NoInterfaceObject] interface AddressBookArraySuccessCallback {
19013     void onsuccess(<ref>AddressBook</ref>[] addressbooks);
19014   };
19015
19016   [Callback, NoInterfaceObject] interface AddressBookChangeCallback {
19017     void oncontactsadded(<ref>Contact</ref>[] contacts);
19018
19019     void oncontactsupdated(<ref>Contact</ref>[] contacts);
19020
19021     void oncontactsremoved(<ref>ContactId</ref>[] contactIds);
19022   };
19023
19024   [Callback, NoInterfaceObject] interface PersonsChangeCallback {
19025     void onpersonsadded(<ref>Person</ref>[] persons);
19026
19027     void onpersonsupdated(<ref>Person</ref>[] persons);
19028
19029     void onpersonsremoved(<ref>PersonId</ref>[] personIds);
19030   };
19031 };</webidl>
19032     <descriptive>
19033         <brief>
19034  This API is for managing Address Books.
19035         </brief>
19036        <description>
19037         <p>
19038 A contact is a set of information that describes a contact. The contact contains information, such as phone numbers,
19039 e-mail addresses, etc.
19040         </p>
19041         <p>
19042 <a href='http://www.ietf.org/rfc/rfc2426.txt'> RFC 2426 vCard MIME Directory Profile</a> defines a format for exchanging contacts. Contact API refers to this specification to provide a mapping of the specified contact attributes.
19043         </p>
19044         <p>
19045 A <em>person </em>is a set of information that describes a person. Two different <em>contacts</em> that indicate the same person will have the same person ID. A person has a display contact ID that indicates a contact that represents information of the person. A person is automatically created when a new contact is added.
19046         </p>
19047         <p>
19048 This API provides functionality to read, create, remove, and update contacts in specific address books. Address books can be obtained using the <em>getAddressBooks()</em> method, which returns an array of <em>AddressBook</em> objects.
19049         </p>
19050         <p>
19051 For more information on the Contact features, see <a href="../../org.tizen.web.appprogramming/html/guide/social_guide/contact.htm">Contact Guide</a>.
19052         </p>
19053        </description>
19054         <version>
19055  1.0
19056         </version>
19057     </descriptive>
19058     <Typedef name="AddressBookId" id="::Contact::AddressBookId">
19059       <webidl>  typedef DOMString AddressBookId;</webidl>
19060       <descriptive>
19061           <brief>
19062  The address book identifier.
19063           </brief>
19064           <version>
19065  1.0
19066           </version>
19067       </descriptive>
19068       <Type type="DOMString"/>
19069     </Typedef>
19070     <Typedef name="ContactId" id="::Contact::ContactId">
19071       <webidl>  typedef DOMString ContactId;</webidl>
19072       <descriptive>
19073           <brief>
19074  The contact identifier.
19075           </brief>
19076           <version>
19077  1.0
19078           </version>
19079       </descriptive>
19080       <Type type="DOMString"/>
19081     </Typedef>
19082     <Typedef name="PersonId" id="::Contact::PersonId">
19083       <webidl>  typedef DOMString PersonId;</webidl>
19084       <descriptive>
19085           <brief>
19086  The person identifier.
19087           </brief>
19088           <version>
19089  2.0
19090           </version>
19091       </descriptive>
19092       <Type type="DOMString"/>
19093     </Typedef>
19094     <Typedef name="ContactGroupId" id="::Contact::ContactGroupId">
19095       <webidl>  typedef DOMString ContactGroupId;</webidl>
19096       <descriptive>
19097           <brief>
19098  The group identifier.
19099           </brief>
19100           <version>
19101  2.0
19102           </version>
19103       </descriptive>
19104       <Type type="DOMString"/>
19105     </Typedef>
19106     <Enum name="ContactTextFormat" id="::Contact::ContactTextFormat">
19107       <webidl>  enum ContactTextFormat {&quot;VCARD_30&quot;};</webidl>
19108       <descriptive>
19109           <brief>
19110  An enumerator that indicates the contact format that is used for export.   * The possible values are:
19111           </brief>
19112          <description>
19113           <ul>
19114             <li>
19115 VCARD_30 - vCard v3.0 format            </li>
19116           </ul>
19117           <p>
19118 Currently, vCard v3.0 is the only format supported by the Tizen platform.
19119           </p>
19120          </description>
19121           <version>
19122  1.0
19123           </version>
19124       </descriptive>
19125       <EnumValue stringvalue="VCARD_30">
19126         <webidl>&quot;VCARD_30</webidl>
19127       </EnumValue>
19128     </Enum>
19129     <Interface name="ContactManagerObject" id="::Contact::ContactManagerObject">
19130       <webidl>  [NoInterfaceObject] interface ContactManagerObject {
19131     readonly attribute <ref>ContactManager</ref> contact;
19132   };</webidl>
19133       <descriptive>
19134           <brief>
19135  Defines what is instantiated by the <em>Tizen </em>object from the Tizen Platform.
19136           </brief>
19137          <description>
19138           <p>
19139 There is a <em>tizen.contact </em>object that allows access to the Contact API functionality.
19140           </p>
19141          </description>
19142           <version>
19143  1.0
19144           </version>
19145       </descriptive>
19146       <ExtendedAttributeList>
19147         <ExtendedAttribute name="NoInterfaceObject">
19148           <webidl>NoInterfaceObject</webidl>
19149         </ExtendedAttribute>
19150       </ExtendedAttributeList>
19151       <Attribute readonly="readonly" name="contact" id="::Contact::ContactManagerObject::contact">
19152         <webidl>    readonly attribute <ref>ContactManager</ref> contact;</webidl>
19153         <Type name="ContactManager"/>
19154       </Attribute>
19155     </Interface>
19156     <Implements name1="Tizen" name2="ContactManagerObject">
19157       <webidl>  <ref>Tizen</ref> implements <ref>ContactManagerObject</ref>;</webidl>
19158     </Implements>
19159     <Interface name="ContactManager" id="::Contact::ContactManager">
19160       <webidl>  [NoInterfaceObject] interface ContactManager {
19161
19162     void getAddressBooks(<ref>AddressBookArraySuccessCallback</ref> successCallback,
19163                          optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
19164
19165     <ref>AddressBook</ref> getUnifiedAddressBook() raises(<ref>WebAPIException</ref>);
19166
19167     <ref>AddressBook</ref> getDefaultAddressBook() raises(<ref>WebAPIException</ref>);
19168
19169     <ref>AddressBook</ref> getAddressBook(<ref>AddressBookId</ref> addressBookId) raises(<ref>WebAPIException</ref>);
19170
19171     <ref>Person</ref> get(<ref>PersonId</ref> personId) raises(<ref>WebAPIException</ref>);
19172
19173     void update(<ref>Person</ref> person) raises(<ref>WebAPIException</ref>);
19174
19175     void updateBatch(<ref>Person</ref>[] persons,
19176                      optional <ref>SuccessCallback</ref>? successCallback,
19177                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
19178
19179     void remove(<ref>PersonId</ref> personId) raises(<ref>WebAPIException</ref>);
19180
19181     void removeBatch(<ref>PersonId</ref>[] personIds,
19182                      optional <ref>SuccessCallback</ref>? successCallback,
19183                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
19184
19185     void find(<ref>PersonArraySuccessCallback</ref> successCallback,
19186               optional <ref>ErrorCallback</ref>? errorCallback,
19187               optional <ref>AbstractFilter</ref>? filter,
19188               optional <ref>SortMode</ref>? sortMode) raises(<ref>WebAPIException</ref>);
19189
19190     long addChangeListener(<ref>PersonsChangeCallback</ref> successCallback) raises(<ref>WebAPIException</ref>);
19191
19192     void removeChangeListener(long watchId) raises(<ref>WebAPIException</ref>);
19193   };</webidl>
19194       <descriptive>
19195           <brief>
19196  This interface provides access to the API functionality.
19197           </brief>
19198          <description>
19199           <p>
19200 This interface offers a method to retrieve the address books objects.
19201 The address book objects can be manipulated with the provided functionalities to add, remove, and update the contained information.
19202           </p>
19203          </description>
19204           <version>
19205  1.0
19206           </version>
19207       </descriptive>
19208       <ExtendedAttributeList>
19209         <ExtendedAttribute name="NoInterfaceObject">
19210           <webidl>NoInterfaceObject</webidl>
19211         </ExtendedAttribute>
19212       </ExtendedAttributeList>
19213       <Operation name="getAddressBooks" id="::Contact::ContactManager::getAddressBooks">
19214         <webidl>    void getAddressBooks(<ref>AddressBookArraySuccessCallback</ref> successCallback,
19215                          optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
19216         <descriptive>
19217             <brief>
19218  Gets the available address books.
19219             </brief>
19220            <description>
19221             <p>
19222 If the operation completes successfully, the successCallback must
19223 be invoked with the phone address book and the SIM address book (if any).
19224 Other address books present in the device should also be returned.
19225             </p>
19226             <p>
19227 If no address book is present, the <em>successCallback</em> will be invoked with an empty array.
19228             </p>
19229             <p>
19230 The errorCallback is launched with these error types:
19231             </p>
19232             <ul>
19233               <li>
19234 InvalidValuesError - If the event given in argument is not a recurring event.              </li>
19235               <li>
19236 UnknownError - If any other error occurs while trying to get the address books.              </li>
19237             </ul>
19238            </description>
19239             <version>
19240  1.0
19241             </version>
19242             <privilegelevel>
19243  public
19244             </privilegelevel>
19245             <privilege>
19246  http://tizen.org/privilege/contact.read
19247             </privilege>
19248             <Code>  var addressbook;
19249
19250   // Define the error callback for all the asynchronous calls
19251   function errorCB(err) {
19252     console.log( 'The following error occurred: ' +  err.name);
19253   }
19254
19255   function contactsFoundCB(contacts) {
19256     // The contact has been successfully found
19257     // Let's try to change the first name
19258     contacts[0].name.firstName = 'Jeffrey Ross';
19259     try {
19260       addressbook.update(contacts[0]);
19261     } catch (err) {
19262       console.log( 'The following error occurred while updating: ' +  err.name);
19263     }
19264     console.log('First contact was updated');
19265   }
19266
19267   // Define the success callback for retrieving all the
19268   // Address Books
19269   function addressBooksCB(addressbooks) {
19270     if(addressbooks.length > 0) {
19271       addressbook = addressbooks[0];
19272       console.log('The addressbook type is ' + addressbook.type +
19273             ' and name ' + addressbook.name);
19274
19275       var contact = new tizen.Contact(
19276                          {name: new tizen.ContactName({firstName:'Jeffrey',
19277                                  lastName:'Hyman',
19278                                  nicknames:['joey ramone']}),
19279                           emails:[new tizen.ContactEmailAddress('user@domain.com')],
19280                           phoneNumbers:[new tizen.ContactPhoneNumber('123456789')]});
19281
19282       addressbook.add(contact);
19283
19284       // The contact has been successfully added
19285       // Checks whether the added contact can be retrieved from the address book or not.
19286       // If the address book is empty, only the item added through saveContact
19287       // should be returned
19288       var filter = new tizen.AttributeFilter('name.firstName', 'CONTAINS', 'Jeffrey');
19289       try {
19290         addressbook.find(contactsFoundCB, errorCB, filter);
19291       } catch (err) {
19292         console.log( 'The following error occurred while finding: ' +  err.name);
19293       }
19294     }
19295   }
19296
19297   // Get a list of available address books.
19298   tizen.contact.getAddressBooks(addressBooksCB, errorCB);
19299  </Code>
19300         </descriptive>
19301         <Type type="void"/>
19302         <ArgumentList>
19303           <Argument name="successCallback">
19304             <descriptive>
19305                 <description><p>
19306  The method to call when the invocation ends successfully.
19307                 </p></description>
19308             </descriptive>
19309             <Type name="AddressBookArraySuccessCallback"/>
19310           </Argument>
19311           <Argument optional="optional" name="errorCallback">
19312             <descriptive>
19313                 <description><p>
19314  The method to call when an error occurs.
19315                 </p></description>
19316             </descriptive>
19317             <Type name="ErrorCallback" nullable="nullable"/>
19318           </Argument>
19319         </ArgumentList>
19320         <Raises>
19321           <RaiseException name="WebAPIException">
19322             <descriptive>
19323                 <description><p>
19324  with error type TypeMismatchError, if any input parameter
19325 is not compatible with the expected type for that parameter.
19326                 </p></description>
19327                 <description><p>
19328  with error type SecurityError, if the application does not have the privilege to call this method.
19329                 </p></description>
19330                 <description><p>
19331  with error type NotSupportedError, if the feature
19332 is not supported.
19333                 </p></description>
19334             </descriptive>
19335           </RaiseException>
19336         </Raises>
19337       </Operation>
19338       <Operation name="getUnifiedAddressBook" id="::Contact::ContactManager::getUnifiedAddressBook">
19339         <webidl>    <ref>AddressBook</ref> getUnifiedAddressBook() raises(<ref>WebAPIException</ref>);</webidl>
19340         <descriptive>
19341             <brief>
19342  Gets the aggregation of all address books.
19343             </brief>
19344            <description>
19345             <p>
19346 The unified address book is a logical address book that represents an aggregation of all address books
19347 that are obtained by getAddressBooks() and contains all contacts in the address books.
19348 Note that the unified address book does not have an address book ID
19349 and it is set to <var>null</var>.
19350             </p>
19351            </description>
19352             <version>
19353  2.1
19354             </version>
19355             <privilegelevel>
19356  public
19357             </privilegelevel>
19358             <privilege>
19359  http://tizen.org/privilege/contact.read
19360             </privilege>
19361             <Code>  var addressbook;
19362
19363   // Define the error callback
19364   function errorCB(err) {
19365     console.log( 'The following error occurred: ' +  err.name);
19366   }
19367
19368   function contactsFoundCB(contacts) {
19369     // The contact has been successfully found
19370     // Let's try to change the first name
19371     contacts[0].name.firstName = 'Jeffrey Ross';
19372     try {
19373       addressbook.update(contacts[0]);
19374       console.log('First contact was updated');
19375     } catch (err) {
19376       console.log( 'The following error occurred while updating: ' +  err.name);
19377     }
19378   }
19379
19380   // Get unified address book.
19381   addressbook = tizen.contact.getUnifiedAddressBook();
19382
19383   // Add a new contact
19384   var contact = new tizen.Contact(
19385                      {name: new tizen.ContactName({firstName:'Jeffrey',
19386                              lastName:'Hyman',
19387                              nicknames:['joey ramone']}),
19388                       emails:[new tizen.ContactEmailAddress('user@domain.com')],
19389                       phoneNumbers:[new tizen.ContactPhoneNumber('123456789')]});
19390
19391   try {
19392     addressbook.add(contact);
19393   } catch (err) {
19394     console.log( 'The following error occurred while adding: ' +  err.name);
19395   }
19396
19397   // The contact has been successfully added
19398   // Let's try to check if we can retrieve the added
19399   // contact from the address book. If the address book
19400   // was empty only the item added through saveContact should
19401   // be returned
19402   var filter = new tizen.AttributeFiilter('name.firstName', 'CONTAINS', 'Jeffrey');
19403   try {
19404     addressbook.find(contactsFoundCB, errorCB, filter);
19405   } catch (err) {
19406     console.log( 'The following error occurred while finding: ' +  err.name);
19407   }
19408  </Code>
19409         </descriptive>
19410         <Type name="AddressBook">
19411           <descriptive>
19412               <description><p>
19413  AddressBook The unified AddressBook object.
19414               </p></description>
19415           </descriptive>
19416         </Type>
19417         <ArgumentList/>
19418         <Raises>
19419           <RaiseException name="WebAPIException">
19420             <descriptive>
19421                 <description><p>
19422  with error type SecurityError, if the application does not have the privilege to call this method.
19423                 </p></description>
19424                 <description><p>
19425  with error type NotSupportedError, if the feature
19426 is not supported.
19427                 </p></description>
19428                 <description><p>
19429  with error type UnknownError in any other error case.
19430                 </p></description>
19431             </descriptive>
19432           </RaiseException>
19433         </Raises>
19434       </Operation>
19435       <Operation name="getDefaultAddressBook" id="::Contact::ContactManager::getDefaultAddressBook">
19436         <webidl>    <ref>AddressBook</ref> getDefaultAddressBook() raises(<ref>WebAPIException</ref>);</webidl>
19437         <descriptive>
19438             <brief>
19439  Gets the default address book.
19440             </brief>
19441            <description>
19442             <p>
19443 The default address book is the appointed addressbook from platform or operator.
19444 This is one of addressBooks and it has the address book ID.
19445             </p>
19446             <p>
19447 If the operation completes successfully, it must return the
19448 default address book.
19449             </p>
19450            </description>
19451             <version>
19452  1.0
19453             </version>
19454             <privilegelevel>
19455  public
19456             </privilegelevel>
19457             <privilege>
19458  http://tizen.org/privilege/contact.read
19459             </privilege>
19460             <Code>  var addressbook;
19461
19462   // Define the error callback
19463   function errorCB(err) {
19464     console.log( 'The following error occurred: ' +  err.name);
19465   }
19466
19467   function contactsFoundCB(contacts) {
19468     // The contact has been successfully found
19469     // Let's try to change the first name
19470     contacts[0].name.firstName = 'Jeffrey Ross';
19471     try {
19472       addressbook.update(contacts[0]);
19473       console.log('First contact was updated');
19474     } catch (err) {
19475       console.log( 'The following error occurred while updating: ' +  err.name);
19476     }
19477   }
19478
19479   // Get default address book.
19480   addressbook = tizen.contact.getDefaultAddressBook();
19481
19482   // Add a new contact
19483   var contact = new tizen.Contact(
19484                      {name: new tizen.ContactName({firstName:'Jeffrey',
19485                              lastName:'Hyman',
19486                              nicknames:['joey ramone']}),
19487                       emails:[new tizen.ContactEmailAddress('user@domain.com')],
19488                       phoneNumbers:[new tizen.ContactPhoneNumber('123456789')]});
19489
19490   try {
19491     addressbook.add(contact);
19492   } catch (err) {
19493     console.log( 'The following error occurred while adding: ' +  err.name);
19494   }
19495
19496   // The contact has been successfully added
19497   // Checks whether the added contact can be retrieved from the address book or not.
19498   // If the address book is empty, only the item added
19499   // through em>saveContact /em>should be returned
19500   var filter = new tizen.AttributeFiilter('name.firstName', 'CONTAINS', 'Jeffrey');
19501   try {
19502     addressbook.find(contactsFoundCB, errorCB, filter);
19503   } catch (err) {
19504     console.log( 'The following error occurred while finding: ' +  err.name);
19505   }
19506  </Code>
19507         </descriptive>
19508         <Type name="AddressBook">
19509           <descriptive>
19510               <description><p>
19511  AddressBook The default AddressBook object.
19512               </p></description>
19513           </descriptive>
19514         </Type>
19515         <ArgumentList/>
19516         <Raises>
19517           <RaiseException name="WebAPIException">
19518             <descriptive>
19519                 <description><p>
19520  with error type SecurityError, if the application does not have the privilege to call this method.
19521                 </p></description>
19522                 <description><p>
19523  with error type NotSupportedError, if the feature
19524 is not supported.
19525                 </p></description>
19526                 <description><p>
19527  with error type UnknownError in any other error case.
19528                 </p></description>
19529             </descriptive>
19530           </RaiseException>
19531         </Raises>
19532       </Operation>
19533       <Operation name="getAddressBook" id="::Contact::ContactManager::getAddressBook">
19534         <webidl>    <ref>AddressBook</ref> getAddressBook(<ref>AddressBookId</ref> addressBookId) raises(<ref>WebAPIException</ref>);</webidl>
19535         <descriptive>
19536             <brief>
19537  Gets the address book with the specified identifier.
19538             </brief>
19539            <description>
19540             <p>
19541 If the operation completes successfully, it must return the
19542 address book with the specified identifier.
19543             </p>
19544            </description>
19545             <version>
19546  1.0
19547             </version>
19548             <privilegelevel>
19549  public
19550             </privilegelevel>
19551             <privilege>
19552  http://tizen.org/privilege/contact.read
19553             </privilege>
19554             <Code> var contactRef; // ContactRef supposed to be initialized
19555  try {
19556    // Retrieves the Contact corresponding to a given ContactRef.
19557    var addressBook = tizen.contact.getAddressBook(contactRef.addressBookId);
19558    var contact = addressBook.get(contactRef.contactId);
19559    console.log(&quot;Successfully resolved contact with id: &quot; + contactRef.contactId);
19560  } catch(err) {
19561    console.log(&quot;Error: &quot; + err.name);
19562  }
19563  </Code>
19564         </descriptive>
19565         <Type name="AddressBook">
19566           <descriptive>
19567               <description><p>
19568  AddressBook The matching AddressBook object.
19569               </p></description>
19570           </descriptive>
19571         </Type>
19572         <ArgumentList>
19573           <Argument name="addressBookId">
19574             <descriptive>
19575                 <description><p>
19576  The address book identifier.
19577                 </p></description>
19578             </descriptive>
19579             <Type name="AddressBookId"/>
19580           </Argument>
19581         </ArgumentList>
19582         <Raises>
19583           <RaiseException name="WebAPIException">
19584             <descriptive>
19585                 <description><p>
19586  with error type NotFoundError, if there is no address book
19587 with the given identifier.
19588                 </p></description>
19589                 <description><p>
19590  with error type TypeMismatchError, if any input parameter
19591 is not compatible with the expected type for that parameter.
19592                 </p></description>
19593                 <description><p>
19594  with error type InvalidValuesError, if any of the input
19595 parameters contain an invalid value.
19596                 </p></description>
19597                 <description><p>
19598  with error type SecurityError, if the application does not have the privilege to call this method.
19599                 </p></description>
19600                 <description><p>
19601  with error type NotSupportedError, if the feature
19602 is not supported.
19603                 </p></description>
19604                 <description><p>
19605  with error type UnknownError in any other error case.
19606                 </p></description>
19607             </descriptive>
19608           </RaiseException>
19609         </Raises>
19610       </Operation>
19611       <Operation name="get" id="::Contact::ContactManager::get">
19612         <webidl>    <ref>Person</ref> get(<ref>PersonId</ref> personId) raises(<ref>WebAPIException</ref>);</webidl>
19613         <descriptive>
19614             <brief>
19615  Gets the person with the specified identifier.
19616             </brief>
19617            <description>
19618             <p>
19619 If the operation completes successfully, it must return the
19620 person with the specified identifier.
19621             </p>
19622            </description>
19623             <version>
19624  2.0
19625             </version>
19626             <privilegelevel>
19627  public
19628             </privilegelevel>
19629             <privilege>
19630  http://tizen.org/privilege/contact.read
19631             </privilege>
19632             <Code> var contactRef; // ContactRef supposed to be initialized
19633  try {
19634    // Retrieves the Person corresponding to a Contact.
19635    var addressBook = tizen.contact.getAddressBook(contactRef.addressBookId);
19636    var contact = addressBook.get(contactRef.contactId);
19637    var person = tizen.contact.get(contact.personId);
19638    console.log(&quot;Successfully resolved person with id: &quot; + contact.personId);
19639  } catch(err) {
19640    console.log(&quot;Error: &quot; + err.name);
19641  }
19642  </Code>
19643         </descriptive>
19644         <Type name="Person">
19645           <descriptive>
19646               <description><p>
19647  Person The matching Person object.
19648               </p></description>
19649           </descriptive>
19650         </Type>
19651         <ArgumentList>
19652           <Argument name="personId">
19653             <descriptive>
19654                 <description><p>
19655  The Person identifier.
19656                 </p></description>
19657             </descriptive>
19658             <Type name="PersonId"/>
19659           </Argument>
19660         </ArgumentList>
19661         <Raises>
19662           <RaiseException name="WebAPIException">
19663             <descriptive>
19664                 <description><p>
19665  with error type NotFoundError, if there is no person
19666 with the given identifier.
19667                 </p></description>
19668                 <description><p>
19669  with error type TypeMismatchError, if any input parameter
19670 is not compatible with the expected type for that parameter.
19671                 </p></description>
19672                 <description><p>
19673  with error type InvalidValuesError, if any of the input
19674 parameters contain an invalid value.
19675                 </p></description>
19676                 <description><p>
19677  with error type SecurityError, if the application does not have the privilege to call this method.
19678                 </p></description>
19679                 <description><p>
19680  with error type NotSupportedError, if the feature
19681 is not supported.
19682                 </p></description>
19683                 <description><p>
19684  with error type UnknownError in any other error case.
19685                 </p></description>
19686             </descriptive>
19687           </RaiseException>
19688         </Raises>
19689       </Operation>
19690       <Operation name="update" id="::Contact::ContactManager::update">
19691         <webidl>    void update(<ref>Person</ref> person) raises(<ref>WebAPIException</ref>);</webidl>
19692         <descriptive>
19693             <brief>
19694  Updates a person in the address book synchronously.
19695             </brief>
19696             <version>
19697  2.0
19698             </version>
19699             <privilegelevel>
19700  public
19701             </privilegelevel>
19702             <privilege>
19703  http://tizen.org/privilege/contact.write
19704             </privilege>
19705             <Code>  // Define the error callback
19706   function errorCB(err) {
19707     console.log( 'The following error occurred: ' +  err.name);
19708   }
19709
19710   function personsFoundCB(persons) {
19711     // The person has been successfully found
19712     // Let's try to change the isFavorite attribute
19713     persons[0].isFavorite = true;
19714     try {
19715       tizen.contact.update(persons[0]);
19716       console.log('First person was updated');
19717     } catch (err) {
19718       console.log( 'The following error occurred while updating: ' +  err.name);
19719     }
19720   }
19721
19722   try {
19723     tizen.contact.find(personsFoundCB, errorCB);
19724   } catch (err) {
19725     console.log( 'The following error occurred while finding: ' +  err.name);
19726   }
19727  </Code>
19728         </descriptive>
19729         <Type type="void"/>
19730         <ArgumentList>
19731           <Argument name="person">
19732             <descriptive>
19733                 <description><p>
19734  The person object to be updated.
19735                 </p></description>
19736             </descriptive>
19737             <Type name="Person"/>
19738           </Argument>
19739         </ArgumentList>
19740         <Raises>
19741           <RaiseException name="WebAPIException">
19742             <descriptive>
19743                 <description><p>
19744  with error type NotFoundError, if the identifier does not match.
19745                 </p></description>
19746                 <description><p>
19747  with error type TypeMismatchError, if any input parameter
19748 is not compatible with the expected type for that parameter.
19749                 </p></description>
19750                 <description><p>
19751  with error type InvalidValuesError, if any input parameter
19752 contains invalid values.
19753                 </p></description>
19754                 <description><p>
19755  with error type SecurityError, if the application does not have the privilege to call this method.
19756                 </p></description>
19757                 <description><p>
19758  with error type NotSupportedError, if the feature
19759 is not supported.
19760                 </p></description>
19761                 <description><p>
19762  with error type UnknownError, if the person could not be updated
19763 to an unknown error.
19764                 </p></description>
19765             </descriptive>
19766           </RaiseException>
19767         </Raises>
19768       </Operation>
19769       <Operation name="updateBatch" id="::Contact::ContactManager::updateBatch">
19770         <webidl>    void updateBatch(<ref>Person</ref>[] persons,
19771                      optional <ref>SuccessCallback</ref>? successCallback,
19772                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
19773         <descriptive>
19774             <brief>
19775  Updates several existing persons in the contact DB asynchronously.
19776             </brief>
19777            <description>
19778             <p>
19779 The <em>errorCallback()</em> is launched with these error types:
19780             </p>
19781             <ul>
19782               <li>
19783 NotFoundError - If an identifier in the IDs parameter does not correspond to the <em>id</em> attribute of any person in the contact DB.              </li>
19784               <li>
19785 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
19786               <li>
19787 UnknownError - If any other error occurs, while trying to add the persons.              </li>
19788             </ul>
19789             <p>
19790 If the details of any persons cannot be updated, the error callback function that was passed in the invocation will be called.
19791             </p>
19792            </description>
19793             <version>
19794  2.0
19795             </version>
19796             <privilegelevel>
19797  public
19798             </privilegelevel>
19799             <privilege>
19800  http://tizen.org/privilege/contact.write
19801             </privilege>
19802             <Code>  // Define the error callback for all the asynchronous calls
19803   function errorCB(err) {
19804     console.log('The following error occurred: ' +  err.name);
19805   }
19806
19807   function personsUpdatedCB() {
19808     console.log('Contacts were updated');
19809   }
19810
19811   function personsFoundCB(persons) {
19812     // The person has been successfully found
19813     for(var i = 0; i &#60; persons.length; i++) {
19814       persons[i].isFavorite = true;
19815     }
19816     try {
19817       tizen.contact.updateBatch(persons, personsUpdatedCB, errorCB);
19818     } catch (err) {
19819       console.log('The following error occurred while updating: ' +  err.name);
19820     }
19821   }
19822
19823   try {
19824     tizen.contact.find(personsFoundCB, errorCB);
19825   } catch (err) {
19826     console.log('The following error occurred while finding: ' +  err.name);
19827   }
19828  </Code>
19829         </descriptive>
19830         <Type type="void"/>
19831         <ArgumentList>
19832           <Argument name="persons">
19833             <descriptive>
19834                 <description><p>
19835  A list of Person objects to be saved in the terminal storage.
19836                 </p></description>
19837             </descriptive>
19838             <Type type="array">
19839               <Type name="Person"/>
19840             </Type>
19841           </Argument>
19842           <Argument optional="optional" name="successCallback">
19843             <descriptive>
19844                 <description><p>
19845  The method to call when the invocation ends successfully.
19846                 </p></description>
19847             </descriptive>
19848             <Type name="SuccessCallback" nullable="nullable"/>
19849           </Argument>
19850           <Argument optional="optional" name="errorCallback">
19851             <descriptive>
19852                 <description><p>
19853  The method to call when the request to update the details of a person fail.
19854                 </p></description>
19855             </descriptive>
19856             <Type name="ErrorCallback" nullable="nullable"/>
19857           </Argument>
19858         </ArgumentList>
19859         <Raises>
19860           <RaiseException name="WebAPIException">
19861             <descriptive>
19862                 <description><p>
19863  with error type TypeMismatchError, if the input parameter
19864 is not compatible with the expected type for that parameter.
19865                 </p></description>
19866                 <description><p>
19867  with error type SecurityError, if the application does not have the privilege to call this method.
19868                 </p></description>
19869                 <description><p>
19870  with error type NotSupportedError, if this feature is not supported.
19871                 </p></description>
19872             </descriptive>
19873           </RaiseException>
19874         </Raises>
19875       </Operation>
19876       <Operation name="remove" id="::Contact::ContactManager::remove">
19877         <webidl>    void remove(<ref>PersonId</ref> personId) raises(<ref>WebAPIException</ref>);</webidl>
19878         <descriptive>
19879             <brief>
19880  Removes a person from the contact DB synchronously.
19881             </brief>
19882            <description>
19883             <p>
19884 Removes the person that corresponds to the specified identifier and the contacts related to the person as well. This function will throw an exception if it fails to remove the specified person.
19885             </p>
19886            </description>
19887             <version>
19888  2.0
19889             </version>
19890             <privilegelevel>
19891  public
19892             </privilegelevel>
19893             <privilege>
19894  http://tizen.org/privilege/contact.write
19895             </privilege>
19896             <Code>  // Define the error callback
19897   function errorCB(err) {
19898     console.log('The following error occurred: ' +  err.name);
19899   }
19900
19901   function personsFoundCB(persons) {
19902     // The person has been successfully found
19903     if(persons.length > 0) {
19904       try {
19905         tizen.contact.remove(persons[0].id);
19906         console.log('First person was removed');
19907       } catch (err) {
19908         console.log('The following error occurred while removing: ' +  err.name);
19909       }
19910     } else {
19911       console.log( 'No persons.');
19912     }
19913   }
19914
19915   try {
19916     tizen.contact.find(personsFoundCB, errorCB);
19917   } catch (err) {
19918     console.log( 'The following error occurred while finding: ' +  err.name);
19919   }
19920  </Code>
19921         </descriptive>
19922         <Type type="void"/>
19923         <ArgumentList>
19924           <Argument name="personId">
19925             <descriptive>
19926                 <description><p>
19927  An identifier (ID attribute) of the Person object to delete.
19928                 </p></description>
19929             </descriptive>
19930             <Type name="PersonId"/>
19931           </Argument>
19932         </ArgumentList>
19933         <Raises>
19934           <RaiseException name="WebAPIException">
19935             <descriptive>
19936                 <description><p>
19937  with error type NotFoundError, if the identifier does not match
19938 any persons.
19939                 </p></description>
19940                 <description><p>
19941  with error type TypeMismatchError, if any input parameter
19942 is not compatible with the expected type for that parameter.
19943                 </p></description>
19944                 <description><p>
19945  with error type InvalidValuesError, if any input parameter
19946 contains invalid values.
19947                 </p></description>
19948                 <description><p>
19949  with error type SecurityError, if the application does not have the privilege to call this method.
19950                 </p></description>
19951                 <description><p>
19952  with error type NotSupportedError, if the feature
19953 is not supported.
19954                 </p></description>
19955                 <description><p>
19956  with error type UnknownError, if the person could not be removed
19957 to an unknown error.
19958                 </p></description>
19959             </descriptive>
19960           </RaiseException>
19961         </Raises>
19962       </Operation>
19963       <Operation name="removeBatch" id="::Contact::ContactManager::removeBatch">
19964         <webidl>    void removeBatch(<ref>PersonId</ref>[] personIds,
19965                      optional <ref>SuccessCallback</ref>? successCallback,
19966                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
19967         <descriptive>
19968             <brief>
19969  Removes persons from contact DB asynchronously.
19970             </brief>
19971            <description>
19972             <p>
19973 Removes the persons that correspond to the specified identifiers as well as the contacts related to them.
19974             </p>
19975             <p>
19976 The <em>errorCallback() </em>is launched with these error types:
19977             </p>
19978             <ul>
19979               <li>
19980 NotFoundError - If an identifier in the <em>personIds </em>parameter does not correspond to the ID of any person in the contact DB. (Otherwise, the implementation will attempt to remove the contacts corresponding to these identifiers).              </li>
19981               <li>
19982 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
19983               <li>
19984 UnknownError - If any other error occurs while trying to remove the persons.              </li>
19985             </ul>
19986            </description>
19987             <version>
19988  2.0
19989             </version>
19990             <privilegelevel>
19991  public
19992             </privilegelevel>
19993             <privilege>
19994  http://tizen.org/privilege/contact.write
19995             </privilege>
19996             <Code>  // Define the error callback
19997   function errorCB(err) {
19998     console.log( 'The following error occurred: ' +  err.name);
19999   }
20000
20001   function personsRemovedCB() {
20002     console.log('Contacts were removed');
20003   }
20004
20005   function personsFoundCB(persons) {
20006     // The person has been successfully found
20007     if(persons.length > 2) {
20008       try {
20009         tizen.contact.removeBatch([persons[0].id, persons[1].id], personsRemovedCB, errorCB);
20010       } catch (err) {
20011         console.log( 'The following error occurred while removing: ' +  err.name);
20012       }
20013     } else {
20014       console.log( 'Not enough persons.');
20015     }
20016   }
20017
20018   try {
20019     tizen.contact.find(personsFoundCB, errorCB);
20020   } catch (err) {
20021     console.log( 'The following error occurred while finding: ' +  err.name);
20022   }
20023  </Code>
20024         </descriptive>
20025         <Type type="void"/>
20026         <ArgumentList>
20027           <Argument name="personIds">
20028             <descriptive>
20029                 <description><p>
20030  A list of identifiers (id attribute) for the Person objects to delete.
20031                 </p></description>
20032             </descriptive>
20033             <Type type="array">
20034               <Type name="PersonId"/>
20035             </Type>
20036           </Argument>
20037           <Argument optional="optional" name="successCallback">
20038             <descriptive>
20039                 <description><p>
20040  The method to call when the invocation ends successfully.
20041                 </p></description>
20042             </descriptive>
20043             <Type name="SuccessCallback" nullable="nullable"/>
20044           </Argument>
20045           <Argument optional="optional" name="errorCallback">
20046             <descriptive>
20047                 <description><p>
20048  The method to call when the request to delete persons fails.
20049                 </p></description>
20050             </descriptive>
20051             <Type name="ErrorCallback" nullable="nullable"/>
20052           </Argument>
20053         </ArgumentList>
20054         <Raises>
20055           <RaiseException name="WebAPIException">
20056             <descriptive>
20057                 <description><p>
20058  with error type TypeMismatchError, if any input parameter
20059 is not compatible with the expected type for that parameter.
20060                 </p></description>
20061                 <description><p>
20062  with error type SecurityError, if the application does not have the privilege to call this method.
20063                 </p></description>
20064                 <description><p>
20065  with error type NotSupportedError, if the feature
20066 is not supported.
20067                 </p></description>
20068             </descriptive>
20069           </RaiseException>
20070         </Raises>
20071       </Operation>
20072       <Operation name="find" id="::Contact::ContactManager::find">
20073         <webidl>    void find(<ref>PersonArraySuccessCallback</ref> successCallback,
20074               optional <ref>ErrorCallback</ref>? errorCallback,
20075               optional <ref>AbstractFilter</ref>? filter,
20076               optional <ref>SortMode</ref>? sortMode) raises(<ref>WebAPIException</ref>);</webidl>
20077         <descriptive>
20078             <brief>
20079  Gets an array of all <em>Person </em>objects from the contact DB or the ones that match the optionally supplied filter.
20080             </brief>
20081            <description>
20082             <p>
20083 If the filter is passed and contains valid values, only those values in the
20084 address book that match the filter criteria as specified in the AbstractFilter
20085 interface will be returned in the successCallback. If no filter is passed, the filter
20086 contains any invalid values, the filter is <var>null </var> or undefined, then
20087 the implementation must return the full list of contact items
20088 in the successCallback. If no persons are available in the contact DB or no
20089 person matches the filter criteria, the successCallback will be invoked
20090 with an empty array.
20091             </p>
20092             <p>
20093 The <em>errorCallback() </em>is launched with these error types:
20094             </p>
20095             <ul>
20096               <li>
20097 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
20098               <li>
20099 UnknownError - If any other error occurs while trying to retrieve the persons.              </li>
20100             </ul>
20101            </description>
20102             <version>
20103  2.0
20104             </version>
20105             <privilegelevel>
20106  public
20107             </privilegelevel>
20108             <privilege>
20109  http://tizen.org/privilege/contact.read
20110             </privilege>
20111             <Code>  // Define the error callback.
20112   function errorCB(err) {
20113     console.log( 'The following error occurred: ' +  err.name);
20114   }
20115
20116   // Define the person search success callback.
20117   function personsFoundCB(persons) {
20118     console.log(persons.length + ' results found.');
20119   }
20120
20121   // Finds all the persons in the contact DB that have the word Ramone in their display name
20122   var filter = new tizen.AttributeFilter('displayName', 'CONTAINS', 'Ramone');
20123
20124   // The persons returned by the find() query will be sorted in the ascending order of their display name.
20125   var sortingMode =  new tizen.SortMode('displayName', 'ASC');
20126   try {
20127     tizen.contact.find(personsFoundCB, errorCB,
20128                      filter, sortingMode);
20129   } catch (err) {
20130     console.log( 'The following error occurred while finding: ' +  err.name);
20131   }
20132  </Code>
20133         </descriptive>
20134         <Type type="void"/>
20135         <ArgumentList>
20136           <Argument name="successCallback">
20137             <descriptive>
20138                 <description><p>
20139  The method to call when the invocation ends successfully.
20140                 </p></description>
20141             </descriptive>
20142             <Type name="PersonArraySuccessCallback"/>
20143           </Argument>
20144           <Argument optional="optional" name="errorCallback">
20145             <descriptive>
20146                 <description><p>
20147  The method to call when an error occurs.
20148                 </p></description>
20149             </descriptive>
20150             <Type name="ErrorCallback" nullable="nullable"/>
20151           </Argument>
20152           <Argument optional="optional" name="filter">
20153             <descriptive>
20154                 <description><p>
20155  A filter to select which persons are returned.
20156                 </p></description>
20157             </descriptive>
20158             <Type name="AbstractFilter" nullable="nullable"/>
20159           </Argument>
20160           <Argument optional="optional" name="sortMode">
20161             <descriptive>
20162                 <description><p>
20163  A variable to determine the sort order in which the persons are returned.
20164                 </p></description>
20165             </descriptive>
20166             <Type name="SortMode" nullable="nullable"/>
20167           </Argument>
20168         </ArgumentList>
20169         <Raises>
20170           <RaiseException name="WebAPIException">
20171             <descriptive>
20172                 <description><p>
20173  with error type TypeMismatchError, if any input parameter
20174 is not compatible with the expected type for that parameter.
20175                 </p></description>
20176                 <description><p>
20177  with error type SecurityError, if the application does not have the privilege to call this method.
20178                 </p></description>
20179                 <description><p>
20180  with error type NotSupportedError, if the feature
20181 is not supported.
20182                 </p></description>
20183             </descriptive>
20184           </RaiseException>
20185         </Raises>
20186       </Operation>
20187       <Operation name="addChangeListener" id="::Contact::ContactManager::addChangeListener">
20188         <webidl>    long addChangeListener(<ref>PersonsChangeCallback</ref> successCallback) raises(<ref>WebAPIException</ref>);</webidl>
20189         <descriptive>
20190             <brief>
20191  Subscribes to receive notifications about persons' changes.
20192             </brief>
20193            <description>
20194             <p>
20195 When executed, the implementation must immediately return a subscription identifier that identifies
20196 the watch operation. After returning the identifier, the watch operation is started
20197 asynchronously.
20198             </p>
20199            </description>
20200             <version>
20201  2.0
20202             </version>
20203             <privilegelevel>
20204  public
20205             </privilegelevel>
20206             <privilege>
20207  http://tizen.org/privilege/contact.read
20208             </privilege>
20209             <Code> var watcherId = 0; // watcher identifier
20210
20211  var watcher = {
20212    onpersonsadded: function(persons) {
20213      console.log(persons.length + ' persons were added');
20214    },
20215    onpersonsupdated: function(persons) {
20216      console.log(persons.length + ' persons were updated');
20217    },
20218    onpersonsremoved: function(ids) {
20219      console.log(ids.length + ' persons were deleted');
20220    }
20221  };
20222
20223  // registers to be notified when the persons' changes
20224  watcherId = tizen.contact.addChangeListener(watcher);
20225  </Code>
20226         </descriptive>
20227         <Type type="long">
20228           <descriptive>
20229               <description><p>
20230  long Identifier used to clear the watch subscription.
20231               </p></description>
20232           </descriptive>
20233         </Type>
20234         <ArgumentList>
20235           <Argument name="successCallback">
20236             <descriptive>
20237                 <description><p>
20238  Contains the methods for different types of change notifications.
20239                 </p></description>
20240             </descriptive>
20241             <Type name="PersonsChangeCallback"/>
20242           </Argument>
20243         </ArgumentList>
20244         <Raises>
20245           <RaiseException name="WebAPIException">
20246             <descriptive>
20247                 <description><p>
20248  with error type TypeMismatchError, if any input parameter
20249 is not compatible with the expected type for that parameter.
20250                 </p></description>
20251                 <description><p>
20252  with error type InvalidValuesError, if any of the input parameters
20253 contain an invalid value.
20254                 </p></description>
20255                 <description><p>
20256  with error type SecurityError, if the application does not have the privilege to call this method.
20257                 </p></description>
20258                 <description><p>
20259  with error type NotSupportedError, if the feature
20260 is not supported.
20261                 </p></description>
20262                 <description><p>
20263  with error type UnknownError in any other case.
20264                 </p></description>
20265             </descriptive>
20266           </RaiseException>
20267         </Raises>
20268       </Operation>
20269       <Operation name="removeChangeListener" id="::Contact::ContactManager::removeChangeListener">
20270         <webidl>    void removeChangeListener(long watchId) raises(<ref>WebAPIException</ref>);</webidl>
20271         <descriptive>
20272             <brief>
20273  Unsubscribes a persons' changes watch operation.
20274             </brief>
20275            <description>
20276             <p>
20277 If the watchId argument is valid and corresponds to a subscription already in
20278 place, the watch process must immediately stop and no further callbacks MUST be
20279 invoked. If the watchId argument is not valid or does not correspond to a
20280 valid subscription, the method should return without any further action.
20281             </p>
20282            </description>
20283             <version>
20284  2.0
20285             </version>
20286             <privilegelevel>
20287  public
20288             </privilegelevel>
20289             <privilege>
20290  http://tizen.org/privilege/contact.read
20291             </privilege>
20292             <Code> var watcherId = 0; // watcher identifier
20293
20294  // Receives persons' changes
20295  var watcher = {
20296    onpersonsadded: function(persons) {
20297      console.log(persons.length + ' persons were added');
20298    },
20299    onpersonsupdated: function(persons) {
20300      console.log(persons.length + ' persons were updated');
20301    },
20302    onpersonsremoved: function(ids) {
20303      console.log(ids.length + ' persons were removed');
20304    }
20305  };
20306
20307  // Cancel the watch operation
20308  function cancelWatch() {
20309     tizen.contact.removeChangeListener(watcherId);
20310  }
20311
20312  // registers to be notified when the persons' changes
20313  watcherId = tizen.contact.addChangeListener(watcher);
20314  </Code>
20315         </descriptive>
20316         <Type type="void"/>
20317         <ArgumentList>
20318           <Argument name="watchId">
20319             <descriptive>
20320                 <description><p>
20321  A subscription Identifier.
20322                 </p></description>
20323             </descriptive>
20324             <Type type="long"/>
20325           </Argument>
20326         </ArgumentList>
20327         <Raises>
20328           <RaiseException name="WebAPIException">
20329             <descriptive>
20330                 <description><p>
20331  with error type TypeMismatchError, if any input parameter
20332 is not compatible with the expected type for that parameter.
20333                 </p></description>
20334                 <description><p>
20335  with error type InvalidValuesError, if any of the input
20336 parameters contain an invalid value.
20337                 </p></description>
20338                 <description><p>
20339  with error type NotFoundError, if there is no listener
20340 with the given identifier.
20341                 </p></description>
20342                 <description><p>
20343  with error type SecurityError, if the application does not have the privilege to call this method.
20344                 </p></description>
20345                 <description><p>
20346  with error type NotSupportedError, if the feature
20347 is not supported.
20348                 </p></description>
20349                 <description><p>
20350  with error type UnknownError in any other error case.
20351                 </p></description>
20352             </descriptive>
20353           </RaiseException>
20354         </Raises>
20355       </Operation>
20356     </Interface>
20357     <Interface name="AddressBook" id="::Contact::AddressBook">
20358       <webidl>  [NoInterfaceObject] interface AddressBook {
20359
20360     readonly attribute <ref>AddressBookId</ref>? id;
20361
20362     readonly attribute DOMString name;
20363
20364     readonly attribute boolean readOnly;
20365
20366     <ref>Contact</ref> get(<ref>ContactId</ref> id) raises(<ref>WebAPIException</ref>);
20367
20368     void add(<ref>Contact</ref> contact) raises(<ref>WebAPIException</ref>);
20369
20370     void addBatch(<ref>Contact</ref>[] contacts,
20371                   optional <ref>ContactArraySuccessCallback</ref>? successCallback,
20372                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
20373
20374     void update(<ref>Contact</ref> contact) raises(<ref>WebAPIException</ref>);
20375
20376     void updateBatch(<ref>Contact</ref>[] contacts,
20377                      optional <ref>SuccessCallback</ref>? successCallback,
20378                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
20379
20380     void remove(<ref>ContactId</ref> id) raises(<ref>WebAPIException</ref>);
20381
20382     void removeBatch(<ref>ContactId</ref>[] ids,
20383                      optional <ref>SuccessCallback</ref>? successCallback,
20384                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
20385
20386     void find(<ref>ContactArraySuccessCallback</ref> successCallback,
20387               optional <ref>ErrorCallback</ref>? errorCallback,
20388               optional <ref>AbstractFilter</ref>? filter,
20389               optional <ref>SortMode</ref>? sortMode) raises(<ref>WebAPIException</ref>);
20390
20391     long addChangeListener(<ref>AddressBookChangeCallback</ref> successCallback,
20392                            optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
20393
20394     void removeChangeListener(long watchId) raises(<ref>WebAPIException</ref>);
20395
20396     <ref>ContactGroup</ref> getGroup(<ref>ContactGroupId</ref> groupId) raises(<ref>WebAPIException</ref>);
20397
20398     void addGroup(<ref>ContactGroup</ref> group) raises(<ref>WebAPIException</ref>);
20399
20400     void updateGroup(<ref>ContactGroup</ref> group) raises(<ref>WebAPIException</ref>);
20401
20402     void removeGroup(<ref>ContactGroupId</ref> groupId) raises(<ref>WebAPIException</ref>);
20403
20404     <ref>ContactGroup</ref>[] getGroups() raises(<ref>WebAPIException</ref>);
20405   };</webidl>
20406       <descriptive>
20407           <brief>
20408  This interface provides methods to manage an address book.
20409           </brief>
20410          <description>
20411           <p>
20412 An address book is a collection of contacts and groups. This interface offers methods to manage the address book and to manipulate contacts within the address book, such as:
20413           </p>
20414           <ul>
20415             <li>
20416  <em>get()</em> - To get contacts that have a specific ID            </li>
20417             <li>
20418  <em>find()</em> - To find contacts using filters            </li>
20419             <li>
20420  <em>add() </em>or <em>addBatch()</em> - To add contacts to a specific address book            </li>
20421             <li>
20422  <em>update() </em>or <em>updateBatch()</em> - To update contacts in a specific address book            </li>
20423             <li>
20424  <em>remove() </em>or <em>removeBatch() </em> - To remove existing contacts            </li>
20425             <li>
20426  <em>addChangeListener() </em>or <em>removeChangeListener() </em> - To watch for address book changes            </li>
20427           </ul>
20428           <p>
20429 This interface also offers methods to manipulate groups within the address book, such as:
20430           </p>
20431           <ul>
20432             <li>
20433  <em>getGroup()</em> - To get a group having specific ID            </li>
20434             <li>
20435  <em>getGroups()</em> - To get groups in a specific address book            </li>
20436             <li>
20437  <em>addGroup() </em> - To add groups to a specific address book             </li>
20438             <li>
20439  <em>updateGroup() </em> - To update groups in a specific address book            </li>
20440             <li>
20441  <em>removeGroup() </em> - To remove existing groups            </li>
20442           </ul>
20443          </description>
20444           <version>
20445  1.0
20446           </version>
20447       </descriptive>
20448       <ExtendedAttributeList>
20449         <ExtendedAttribute name="NoInterfaceObject">
20450           <webidl>NoInterfaceObject</webidl>
20451         </ExtendedAttribute>
20452       </ExtendedAttributeList>
20453       <Attribute readonly="readonly" name="id" id="::Contact::AddressBook::id">
20454         <webidl>    readonly attribute <ref>AddressBookId</ref>? id;</webidl>
20455         <descriptive>
20456             <brief>
20457  An attribute to uniquely identify the address book.
20458             </brief>
20459            <description>
20460             <p>
20461 The value of this attribute shall be <var>null </var> if the address book
20462 is the unified address book.
20463             </p>
20464            </description>
20465             <version>
20466  1.0
20467             </version>
20468         </descriptive>
20469         <Type name="AddressBookId" nullable="nullable"/>
20470       </Attribute>
20471       <Attribute readonly="readonly" name="name" id="::Contact::AddressBook::name">
20472         <webidl>    readonly attribute DOMString name;</webidl>
20473         <descriptive>
20474             <brief>
20475  The address book descriptive name.
20476             </brief>
20477             <version>
20478  1.0
20479             </version>
20480         </descriptive>
20481         <Type type="DOMString"/>
20482       </Attribute>
20483       <Attribute readonly="readonly" name="readOnly" id="::Contact::AddressBook::readOnly">
20484         <webidl>    readonly attribute boolean readOnly;</webidl>
20485         <descriptive>
20486             <brief>
20487  An attribute to indicate if the address book is read-only.
20488             </brief>
20489            <description>
20490             <p>
20491 Some on line address books cannot be edited and will have this
20492 flag set to <var>true</var>.
20493             </p>
20494            </description>
20495             <version>
20496  1.0
20497             </version>
20498         </descriptive>
20499         <Type type="boolean"/>
20500       </Attribute>
20501       <Operation name="get" id="::Contact::AddressBook::get">
20502         <webidl>    <ref>Contact</ref> get(<ref>ContactId</ref> id) raises(<ref>WebAPIException</ref>);</webidl>
20503         <descriptive>
20504             <brief>
20505  Gets the contact with the specified identifier.
20506             </brief>
20507            <description>
20508             <p>
20509 If the operation completes successfully, it must return the
20510 contact with the specified identifier.
20511             </p>
20512            </description>
20513             <version>
20514  1.0
20515             </version>
20516             <privilegelevel>
20517  public
20518             </privilegelevel>
20519             <privilege>
20520  http://tizen.org/privilege/contact.read
20521             </privilege>
20522             <Code> var contactRef; // ContactRef supposed to be initialized
20523  try {
20524    // Retrieves the Contact corresponding to a given ContactRef.
20525    var addressBook = tizen.contact.getAddressBook(contactRef.addressBookId);
20526    var contact = addressBook.get(contactRef.contactId);
20527    console.log(&quot;Successfully resolved contact with id: &quot; + contactRef.contactId);
20528  } catch(err) {
20529    console.log(&quot;Error: &quot; + err.name);
20530  }
20531  </Code>
20532         </descriptive>
20533         <Type name="Contact">
20534           <descriptive>
20535               <description><p>
20536  Contact The matching Contact object.
20537               </p></description>
20538           </descriptive>
20539         </Type>
20540         <ArgumentList>
20541           <Argument name="id">
20542             <descriptive>
20543                 <description><p>
20544  A contact identifier.
20545                 </p></description>
20546             </descriptive>
20547             <Type name="ContactId"/>
20548           </Argument>
20549         </ArgumentList>
20550         <Raises>
20551           <RaiseException name="WebAPIException">
20552             <descriptive>
20553                 <description><p>
20554  with error type NotFoundError, if there is no contact
20555 with the given identifier.
20556                 </p></description>
20557                 <description><p>
20558  with error type TypeMismatchError, if any input parameter
20559 is not compatible with the expected type for that parameter.
20560                 </p></description>
20561                 <description><p>
20562  with error type InvalidValuesError, if any of the input
20563 parameters contain an invalid value.
20564                 </p></description>
20565                 <description><p>
20566  with error type SecurityError, if the application does not have the privilege to call this method.
20567                 </p></description>
20568                 <description><p>
20569  with error type NotSupportedError, if the feature
20570 is not supported.
20571                 </p></description>
20572                 <description><p>
20573  with error type UnknownError in any other error case.
20574                 </p></description>
20575             </descriptive>
20576           </RaiseException>
20577         </Raises>
20578       </Operation>
20579       <Operation name="add" id="::Contact::AddressBook::add">
20580         <webidl>    void add(<ref>Contact</ref> contact) raises(<ref>WebAPIException</ref>);</webidl>
20581         <descriptive>
20582             <brief>
20583  Adds a contact to the address book synchronously.
20584             </brief>
20585            <description>
20586             <p>
20587 If the contact is successfully inserted in the addressbook, the Contact object
20588 will have its identifier (id attribute) set when the function returns.
20589 This operation is done successfully, new person object is also generated automatically.
20590             </p>
20591             <p>
20592 If you wish to update an
20593 existing contact, call the update() method instead. If you wish to add a copy
20594 of an existing Contact object, call Contact.clone() method first and pass the
20595 clone to the add() method.
20596             </p>
20597             <p>
20598 The contact shall be added to default address book if the address book
20599 is the unified address book.
20600             </p>
20601            </description>
20602             <version>
20603  1.0
20604             </version>
20605             <privilegelevel>
20606  public
20607             </privilegelevel>
20608             <privilege>
20609  http://tizen.org/privilege/contact.write
20610             </privilege>
20611             <Code>  var addressbook;
20612
20613   // Get default address book
20614   addressbook = tizen.contact.getDefaultAddressBook();
20615
20616   try {
20617     var contact = new tizen.Contact({name: new tizen.ContactName({firstName:'Jeffrey',
20618                                           lastName:'Hyman',
20619                                           nicknames:['joey ramone']}),
20620                                     emails:[new tizen.ContactEmailAddress('user@domain.com')],
20621                                     phoneNumbers:[new tizen.ContactPhoneNumber('123456789')]});
20622     addressbook.add(contact);
20623     console.log('Contact added with id ' + contact.id);
20624   } catch (err) {
20625     console.log( 'The following error occurred while adding: ' +  err.name);
20626   }
20627  </Code>
20628         </descriptive>
20629         <Type type="void"/>
20630         <ArgumentList>
20631           <Argument name="contact">
20632             <descriptive>
20633                 <description><p>
20634  A contact to be added.
20635                 </p></description>
20636             </descriptive>
20637             <Type name="Contact"/>
20638           </Argument>
20639         </ArgumentList>
20640         <Raises>
20641           <RaiseException name="WebAPIException">
20642             <descriptive>
20643                 <description><p>
20644  with error type TypeMismatchError, if any input parameter
20645 is not compatible with the expected type for that parameter.
20646                 </p></description>
20647                 <description><p>
20648  with error type InvalidValuesError, if any input parameter
20649 contains invalid values.
20650                 </p></description>
20651                 <description><p>
20652  with error type SecurityError, if the application does not have the privilege to call this method.
20653                 </p></description>
20654                 <description><p>
20655  with error type NotSupportedError, if the feature
20656 is not supported.
20657                 </p></description>
20658                 <description><p>
20659  with error type UnknownError, if any other error occurs while trying to insert the contact.
20660                 </p></description>
20661             </descriptive>
20662           </RaiseException>
20663         </Raises>
20664       </Operation>
20665       <Operation name="addBatch" id="::Contact::AddressBook::addBatch">
20666         <webidl>    void addBatch(<ref>Contact</ref>[] contacts,
20667                   optional <ref>ContactArraySuccessCallback</ref>? successCallback,
20668                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
20669         <descriptive>
20670             <brief>
20671  Adds several contacts to the address book asynchronously.
20672             </brief>
20673            <description>
20674             <p>
20675 If all the contacts are successfully added to the address book,
20676 the success callback will be invoked, passing the list of Contact objects
20677 that were added, with their identifier set (id attribute).
20678             </p>
20679             <p>
20680 The <em>errorCallback()</em> is launched with these error types:
20681             </p>
20682             <ul>
20683               <li>
20684 InvalidValuesError - If any of the input parameters contain an invalid value, the contact has any invalid value or the address book has some restrictions (such as, limitations in the size of text attributes) because of which the contact items were not added.              </li>
20685               <li>
20686 UnknownError - If any other error occurs, while trying to add the contacts.              </li>
20687             </ul>
20688             <p>
20689 If you wish to update an
20690 existing contact, call the update() method instead. If you wish to add a copy
20691 of an existing Contact object, call Contact.clone() method first and pass the
20692 clone to the add() method.
20693             </p>
20694             <p>
20695 If any of the contacts cannot be added, the error callback
20696 function that was passed in the invocation will be called.
20697             </p>
20698             <p>
20699 The contacts shall be added to local phone address book if the address book
20700 is the default address book.
20701             </p>
20702            </description>
20703             <version>
20704  1.0
20705             </version>
20706             <privilegelevel>
20707  public
20708             </privilegelevel>
20709             <privilege>
20710  http://tizen.org/privilege/contact.write
20711             </privilege>
20712             <Code>  var addressbook;
20713
20714   // Define the error callback
20715   function errorCB(err) {
20716     console.log( 'The following error occurred: ' +  err.name);
20717   }
20718
20719   // Define the add contact success callback
20720   function contactsAddedCB(contacts) {
20721     console.log( contacts.length + ' contact(s) were successfully added to an Address Book' );
20722   };
20723
20724   // Get default address book
20725   addressbook = tizen.contact.getDefaultAddressBook();
20726
20727   var c1 = new tizen.Contact({name: new tizen.ContactName({firstName:'Jeffrey',
20728                              lastName:'Hyman',
20729                              nicknames:['joey ramone']}),
20730                              emails:[new tizen.ContactEmailAddress('user1@domain.com')],
20731                              phoneNumbers:[new tizen.ContactPhoneNumber('123456789')]});
20732
20733   var c2 = new tizen.Contact({name: new tizen.ContactName({firstName:'Elton',
20734                              lastName:'John',
20735                              nicknames:['El']}),
20736                              emails:[new tizen.ContactEmailAddress('user2@domain.com')],
20737                              phoneNumbers:[new tizen.ContactPhoneNumber('987654321')]});
20738
20739   try {
20740     addressbook.addBatch([c1, c2], contactsAddedCB, errorCB);
20741   } catch (err) {
20742     console.log( 'The following error occurred while adding: ' +  err.name);
20743   }
20744  </Code>
20745         </descriptive>
20746         <Type type="void"/>
20747         <ArgumentList>
20748           <Argument name="contacts">
20749             <descriptive>
20750                 <description><p>
20751  A list of contacts to add.
20752                 </p></description>
20753             </descriptive>
20754             <Type type="array">
20755               <Type name="Contact"/>
20756             </Type>
20757           </Argument>
20758           <Argument optional="optional" name="successCallback">
20759             <descriptive>
20760                 <description><p>
20761  The method to call when the invocation ends successfully.
20762                 </p></description>
20763             </descriptive>
20764             <Type name="ContactArraySuccessCallback" nullable="nullable"/>
20765           </Argument>
20766           <Argument optional="optional" name="errorCallback">
20767             <descriptive>
20768                 <description><p>
20769  The method to call when the request fails.
20770                 </p></description>
20771             </descriptive>
20772             <Type name="ErrorCallback" nullable="nullable"/>
20773           </Argument>
20774         </ArgumentList>
20775         <Raises>
20776           <RaiseException name="WebAPIException">
20777             <descriptive>
20778                 <description><p>
20779  with error type TypeMismatchError, if the input parameter
20780 is not compatible with the expected type for that parameter.
20781                 </p></description>
20782                 <description><p>
20783  with error type SecurityError, if the application does not have the privilege to call this method.
20784                 </p></description>
20785                 <description><p>
20786  with error type NotSupportedError, if this feature is not supported.
20787                 </p></description>
20788             </descriptive>
20789           </RaiseException>
20790         </Raises>
20791       </Operation>
20792       <Operation name="update" id="::Contact::AddressBook::update">
20793         <webidl>    void update(<ref>Contact</ref> contact) raises(<ref>WebAPIException</ref>);</webidl>
20794         <descriptive>
20795             <brief>
20796  Updates a contact in the address book synchronously.
20797             </brief>
20798             <version>
20799  1.0
20800             </version>
20801             <privilegelevel>
20802  public
20803             </privilegelevel>
20804             <privilege>
20805  http://tizen.org/privilege/contact.write
20806             </privilege>
20807             <Code>  var addressbook;
20808
20809   // Define the error callback
20810   function errorCB(err) {
20811     console.log( 'The following error occurred: ' +  err.name);
20812   }
20813
20814   function contactsFoundCB(contacts) {
20815     // The contact has been successfully found
20816     // Let's try to change the first name
20817     contacts[0].name.firstName = 'Christopher';
20818     try {
20819       addressbook.update(contacts[0]);
20820       console.log('First contact was updated');
20821     } catch (err) {
20822       console.log( 'The following error occurred while updating: ' +  err.name);
20823     }
20824   }
20825
20826   // Get default address book.
20827   addressbook = tizen.contact.getDefaultAddressBook();
20828
20829   var filter = new tizen.AttributeFilter('name.firstName', 'CONTAINS', 'Chris');
20830   try {
20831     addressbook.find(contactsFoundCB, errorCB, filter);
20832   } catch (err) {
20833     console.log( 'The following error occurred while finding: ' +  err.name);
20834   }
20835  </Code>
20836         </descriptive>
20837         <Type type="void"/>
20838         <ArgumentList>
20839           <Argument name="contact">
20840             <descriptive>
20841                 <description><p>
20842  A contact object to update.
20843                 </p></description>
20844             </descriptive>
20845             <Type name="Contact"/>
20846           </Argument>
20847         </ArgumentList>
20848         <Raises>
20849           <RaiseException name="WebAPIException">
20850             <descriptive>
20851                 <description><p>
20852  with error type NotFoundError, if the identifier does not match.
20853                 </p></description>
20854                 <description><p>
20855  with error type TypeMismatchError, if any input parameter
20856 is not compatible with the expected type for that parameter.
20857                 </p></description>
20858                 <description><p>
20859  with error type InvalidValuesError, if any input parameter
20860 contains invalid values.
20861                 </p></description>
20862                 <description><p>
20863  with error type SecurityError, if the application does not have the privilege to call this method.
20864                 </p></description>
20865                 <description><p>
20866  with error type NotSupportedError, if the feature
20867 is not supported.
20868                 </p></description>
20869                 <description><p>
20870  with error type UnknownError, if the contact could not be updated
20871 to an unknown error.
20872                 </p></description>
20873             </descriptive>
20874           </RaiseException>
20875         </Raises>
20876       </Operation>
20877       <Operation name="updateBatch" id="::Contact::AddressBook::updateBatch">
20878         <webidl>    void updateBatch(<ref>Contact</ref>[] contacts,
20879                      optional <ref>SuccessCallback</ref>? successCallback,
20880                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
20881         <descriptive>
20882             <brief>
20883  Updates several existing contacts in the address book asynchronously.
20884             </brief>
20885            <description>
20886             <p>
20887 The <em>errorCallback()</em> is launched with these error types:
20888             </p>
20889             <ul>
20890               <li>
20891 NotFoundError - If an identifier in the IDs parameter does not correspond to the <em>id </em>attribute of any contact in the address book.              </li>
20892               <li>
20893 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
20894               <li>
20895 UnknownError - If any other error occurs, while trying to add the contacts.              </li>
20896             </ul>
20897             <p>
20898 If any of the contacts could not be updated, the error callback
20899 function that was passed in the invocation will be called.
20900             </p>
20901            </description>
20902             <version>
20903  1.0
20904             </version>
20905             <privilegelevel>
20906  public
20907             </privilegelevel>
20908             <privilege>
20909  http://tizen.org/privilege/contact.write
20910             </privilege>
20911             <Code>  var addressbook;
20912
20913   // Define the error callback for all the asynchronous calls
20914   function errorCB(err) {
20915     console.log('The following error occurred: ' +  err.name);
20916   }
20917
20918   function contactsUpdatedCB() {
20919     console.log('Contacts were updated');
20920   }
20921
20922   function contactsFoundCB(contacts) {
20923     // The contact has been successfully found
20924     for(var i = 0; i &#60; contacts.length; i++) {
20925       contacts[i].name.firstName = 'Christopher';
20926     }
20927     try {
20928       addressbook.updateBatch(contacts, contactsUpdatedCB, errorCB);
20929     } catch (err) {
20930       console.log('The following error occurred while updating: ' +  err.name);
20931     }
20932   }
20933
20934   // Get default address book.
20935   addressbook = tizen.contact.getDefaultAddressBook();
20936
20937   var filter = new tizen.AttributeFilter('name.firstName', 'CONTAINS', 'Chris');
20938   try {
20939     addressbook.find(contactsFoundCB, errorCB, filter);
20940   } catch (err) {
20941     console.log('The following error occurred while finding: ' +  err.name);
20942   }
20943  </Code>
20944         </descriptive>
20945         <Type type="void"/>
20946         <ArgumentList>
20947           <Argument name="contacts">
20948             <descriptive>
20949                 <description><p>
20950  A list of contact objects to be saved in the terminal storage.
20951                 </p></description>
20952             </descriptive>
20953             <Type type="array">
20954               <Type name="Contact"/>
20955             </Type>
20956           </Argument>
20957           <Argument optional="optional" name="successCallback">
20958             <descriptive>
20959                 <description><p>
20960  The method to call when the invocation ends successfully.
20961                 </p></description>
20962             </descriptive>
20963             <Type name="SuccessCallback" nullable="nullable"/>
20964           </Argument>
20965           <Argument optional="optional" name="errorCallback">
20966             <descriptive>
20967                 <description><p>
20968  The method to call when the request to update contacts fails.
20969                 </p></description>
20970             </descriptive>
20971             <Type name="ErrorCallback" nullable="nullable"/>
20972           </Argument>
20973         </ArgumentList>
20974         <Raises>
20975           <RaiseException name="WebAPIException">
20976             <descriptive>
20977                 <description><p>
20978  with error type TypeMismatchError, if the input parameter
20979 is not compatible with the expected type for that parameter.
20980                 </p></description>
20981                 <description><p>
20982  with error type SecurityError, if the application does not have the privilege to call this method.
20983                 </p></description>
20984                 <description><p>
20985  with error type NotSupportedError, if this feature is not supported.
20986                 </p></description>
20987             </descriptive>
20988           </RaiseException>
20989         </Raises>
20990       </Operation>
20991       <Operation name="remove" id="::Contact::AddressBook::remove">
20992         <webidl>    void remove(<ref>ContactId</ref> id) raises(<ref>WebAPIException</ref>);</webidl>
20993         <descriptive>
20994             <brief>
20995  Removes a contact from the address book synchronously.
20996             </brief>
20997            <description>
20998             <p>
20999 Removes the contact in the address book that corresponds to the specified
21000 identifier. This function will throw an exception if it failed to
21001 remove the specified contact.
21002             </p>
21003            </description>
21004             <version>
21005  1.0
21006             </version>
21007             <privilegelevel>
21008  public
21009             </privilegelevel>
21010             <privilege>
21011  http://tizen.org/privilege/contact.write
21012             </privilege>
21013             <Code>  var addressbook;
21014
21015   // Define the error callback
21016   function errorCB(err) {
21017     console.log('The following error occurred: ' +  err.name);
21018   }
21019
21020   function contactsFoundCB(contacts) {
21021     // The contact has been successfully found
21022     if(contacts.length > 0) {
21023       try {
21024         addressbook.remove(contacts[0].id);
21025         console.log('First contact was removed');
21026       } catch (err) {
21027         console.log('The following error occurred while removing: ' +  err.name);
21028       }
21029     } else {
21030       console.log( 'No contacts.');
21031     }
21032   }
21033
21034   // Get default address book.
21035   addressbook = tizen.contact.getDefaultAddressBook();
21036
21037   var filter = new tizen.AttributeFilter('name.firstName', 'CONTAINS', 'Chris');
21038   try {
21039     addressbook.find(contactsFoundCB, errorCB, filter);
21040   } catch (err) {
21041     console.log( 'The following error occurred while finding: ' +  err.name);
21042   }
21043  </Code>
21044         </descriptive>
21045         <Type type="void"/>
21046         <ArgumentList>
21047           <Argument name="id">
21048             <descriptive>
21049                 <description><p>
21050  An identifier (id attribute) of the contact object to delete.
21051                 </p></description>
21052             </descriptive>
21053             <Type name="ContactId"/>
21054           </Argument>
21055         </ArgumentList>
21056         <Raises>
21057           <RaiseException name="WebAPIException">
21058             <descriptive>
21059                 <description><p>
21060  with error type NotFoundError, if the identifier does not match
21061 any contact in the address book.
21062                 </p></description>
21063                 <description><p>
21064  with error type TypeMismatchError, if any input parameter
21065 is not compatible with the expected type for that parameter.
21066                 </p></description>
21067                 <description><p>
21068  with error type InvalidValuesError, if any input parameter
21069 contains invalid values.
21070                 </p></description>
21071                 <description><p>
21072  with error type SecurityError, if the application does not have the privilege to call this method.
21073                 </p></description>
21074                 <description><p>
21075  with error type NotSupportedError, if the feature
21076 is not supported.
21077                 </p></description>
21078                 <description><p>
21079  with error type UnknownError, if the contact could not be removed
21080 to an unknown error.
21081                 </p></description>
21082             </descriptive>
21083           </RaiseException>
21084         </Raises>
21085       </Operation>
21086       <Operation name="removeBatch" id="::Contact::AddressBook::removeBatch">
21087         <webidl>    void removeBatch(<ref>ContactId</ref>[] ids,
21088                      optional <ref>SuccessCallback</ref>? successCallback,
21089                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
21090         <descriptive>
21091             <brief>
21092  Removes several contacts from the address book asynchronously.
21093             </brief>
21094            <description>
21095             <p>
21096 The <em>errorCallback()</em> is launched with these error types:
21097             </p>
21098             <ul>
21099               <li>
21100 NotFoundError - If an identifier in the IDs parameter does not correspond to the <em>id </em>attribute of any contact in the address book (Otherwise, the implementation will attempt to remove the contacts that correspond to these identifiers).              </li>
21101               <li>
21102 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
21103               <li>
21104 UnknownError - If any other error occurs while trying to remove the contacts.              </li>
21105             </ul>
21106            </description>
21107             <version>
21108  1.0
21109             </version>
21110             <privilegelevel>
21111  public
21112             </privilegelevel>
21113             <privilege>
21114  http://tizen.org/privilege/contact.write
21115             </privilege>
21116             <Code>  var addressbook;
21117
21118   // Define the error callback
21119   function errorCB(err) {
21120     console.log( 'The following error occurred: ' +  err.name);
21121   }
21122
21123   function contactsRemovedCB() {
21124     console.log('Contacts were removed');
21125   }
21126
21127   function contactsFoundCB(contacts) {
21128     // The contact has been successfully found
21129     if(contacts.length > 2) {
21130       try {
21131         addressbook.removeBatch([contacts[0].id, contacts[1].id], contactsRemovedCB, errorCB);
21132       } catch (err) {
21133         console.log( 'The following error occurred while removing: ' +  err.name);
21134       }
21135     } else {
21136       console.log( 'Not enough contacts.');
21137     }
21138   }
21139
21140   // Get default address book.
21141   addressbook = tizen.contact.getDefaultAddressBook();
21142
21143   var filter = new tizen.AttributeFilter('name.firstName', 'CONTAINS', 'Chris');
21144   try {
21145     addressbook.find(contactsFoundCB, errorCB, filter);
21146   } catch (err) {
21147     console.log( 'The following error occurred while finding: ' +  err.name);
21148   }
21149  </Code>
21150         </descriptive>
21151         <Type type="void"/>
21152         <ArgumentList>
21153           <Argument name="ids">
21154             <descriptive>
21155                 <description><p>
21156  A list of identifiers (id attribute) for the contact objects to be deleted.
21157                 </p></description>
21158             </descriptive>
21159             <Type type="array">
21160               <Type name="ContactId"/>
21161             </Type>
21162           </Argument>
21163           <Argument optional="optional" name="successCallback">
21164             <descriptive>
21165                 <description><p>
21166  The method to call when the invocation ends successfully.
21167                 </p></description>
21168             </descriptive>
21169             <Type name="SuccessCallback" nullable="nullable"/>
21170           </Argument>
21171           <Argument optional="optional" name="errorCallback">
21172             <descriptive>
21173                 <description><p>
21174  The method to call when the request to delete contacts fails.
21175                 </p></description>
21176             </descriptive>
21177             <Type name="ErrorCallback" nullable="nullable"/>
21178           </Argument>
21179         </ArgumentList>
21180         <Raises>
21181           <RaiseException name="WebAPIException">
21182             <descriptive>
21183                 <description><p>
21184  with error type TypeMismatchError, if any input parameter
21185 is not compatible with the expected type for that parameter.
21186                 </p></description>
21187                 <description><p>
21188  with error type SecurityError, if the application does not have the privilege to call this method.
21189                 </p></description>
21190                 <description><p>
21191  with error type NotSupportedError, if the feature
21192 is not supported.
21193                 </p></description>
21194             </descriptive>
21195           </RaiseException>
21196         </Raises>
21197       </Operation>
21198       <Operation name="find" id="::Contact::AddressBook::find">
21199         <webidl>    void find(<ref>ContactArraySuccessCallback</ref> successCallback,
21200               optional <ref>ErrorCallback</ref>? errorCallback,
21201               optional <ref>AbstractFilter</ref>? filter,
21202               optional <ref>SortMode</ref>? sortMode) raises(<ref>WebAPIException</ref>);</webidl>
21203         <descriptive>
21204             <brief>
21205  Finds an array of all Contact objects from the specified address book or an array of
21206 Contact objects that match the optionally supplied filter.
21207             </brief>
21208            <description>
21209             <p>
21210 If the filter is passed and contains valid values, only those values in the
21211 address book that match the filter criteria as specified in the AbstractFilter
21212 interface will be returned in the successCallback. If no filter is passed, the filter
21213 contains any invalid values, the filter is <var>null</var> or undefined, then
21214 the implementation MUST return the full list of contact items
21215 in the successCallback. If no contacts are available in the address book or no
21216 contact matches the filter criteria, the successCallback will be invoked
21217 with an empty array.
21218             </p>
21219             <p>
21220 The <em>errorCallback() </em>is launched with these error types:
21221             </p>
21222             <ul>
21223               <li>
21224 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
21225               <li>
21226 UnknownError - If any other error occurs while trying to retrieve the contacts.              </li>
21227             </ul>
21228            </description>
21229             <version>
21230  1.0
21231             </version>
21232             <privilegelevel>
21233  public
21234             </privilegelevel>
21235             <privilege>
21236  http://tizen.org/privilege/contact.read
21237             </privilege>
21238             <Code>  var addressbook;
21239
21240   // Define the error callback.
21241   function errorCB(err) {
21242     console.log( 'The following error occurred: ' +  err.name);
21243   }
21244
21245   // Define the contact search success callback.
21246   function contactsFoundCB(contacts) {
21247      console.log(contacts.length + ' results found.');
21248   }
21249
21250   // Get default address book
21251   addressbook = tizen.contact.getDefaultAddressBook();
21252
21253   // Find all contacts in the address book that have &quot;Ramone&quot; in the nick name.
21254   var filter = new tizen.AttributeFilter('name.nicknames', 'CONTAINS', 'Ramone');
21255
21256   // The contacts returned by the find() query will be sorted by
21257   // ascending last name.
21258   var sortingMode =  new tizen.SortMode('name.lastName', 'ASC');
21259   try {
21260     addressbook.find(contactsFoundCB, errorCB,
21261                      filter, sortingModes);
21262   } catch (err) {
21263     console.log( 'The following error occurred while finding: ' +  err.name);
21264   }
21265  </Code>
21266         </descriptive>
21267         <Type type="void"/>
21268         <ArgumentList>
21269           <Argument name="successCallback">
21270             <descriptive>
21271                 <description><p>
21272  The method to call when the invocation ends successfully.
21273                 </p></description>
21274             </descriptive>
21275             <Type name="ContactArraySuccessCallback"/>
21276           </Argument>
21277           <Argument optional="optional" name="errorCallback">
21278             <descriptive>
21279                 <description><p>
21280  The method to call when an error occurs.
21281                 </p></description>
21282             </descriptive>
21283             <Type name="ErrorCallback" nullable="nullable"/>
21284           </Argument>
21285           <Argument optional="optional" name="filter">
21286             <descriptive>
21287                 <description><p>
21288  A filter used to select which contacts are returned.
21289                 </p></description>
21290             </descriptive>
21291             <Type name="AbstractFilter" nullable="nullable"/>
21292           </Argument>
21293           <Argument optional="optional" name="sortMode">
21294             <descriptive>
21295                 <description><p>
21296  A variable to determine the sort order in which the contacts are returned.
21297                 </p></description>
21298             </descriptive>
21299             <Type name="SortMode" nullable="nullable"/>
21300           </Argument>
21301         </ArgumentList>
21302         <Raises>
21303           <RaiseException name="WebAPIException">
21304             <descriptive>
21305                 <description><p>
21306  with error type TypeMismatchError, if any input parameter
21307 is not compatible with the expected type for that parameter.
21308                 </p></description>
21309                 <description><p>
21310  with error type SecurityError, if the application does not have the privilege to call this method.
21311                 </p></description>
21312                 <description><p>
21313  with error type NotSupportedError, if the feature
21314 is not supported.
21315                 </p></description>
21316             </descriptive>
21317           </RaiseException>
21318         </Raises>
21319       </Operation>
21320       <Operation name="addChangeListener" id="::Contact::AddressBook::addChangeListener">
21321         <webidl>    long addChangeListener(<ref>AddressBookChangeCallback</ref> successCallback,
21322                            optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
21323         <descriptive>
21324             <brief>
21325  Subscribes to receive notifications about address book changes.
21326             </brief>
21327            <description>
21328             <p>
21329 When executed, the implementation must immediately return a subscription identifier that identifies
21330 the watch operation. After returning the identifier, the watch operation is started
21331 asynchronously.
21332             </p>
21333            </description>
21334             <version>
21335  1.0
21336             </version>
21337             <privilegelevel>
21338  public
21339             </privilegelevel>
21340             <privilege>
21341  http://tizen.org/privilege/contact.read
21342             </privilege>
21343             <Code> var watcherId = 0; // watcher identifier
21344  var addressbook; // This example assumes addressbook is initialized
21345
21346  var watcher = {
21347    oncontactsadded: function(contacts) {
21348      console.log(contacts.length + ' contacts were added');
21349    },
21350    oncontactsupdated: function(contacts) {
21351      console.log(contacts.length + ' contacts were updated');
21352    },
21353    oncontactsremoved: function(ids) {
21354      console.log(ids.length + ' contacts were deleted');
21355    }
21356  };
21357
21358  // Registers to be notified when the address book changes
21359  watcherId = addressbook.addChangeListener(watcher);
21360  </Code>
21361         </descriptive>
21362         <Type type="long">
21363           <descriptive>
21364               <description><p>
21365  long An identifier used to clear the watch subscription.
21366               </p></description>
21367           </descriptive>
21368         </Type>
21369         <ArgumentList>
21370           <Argument name="successCallback">
21371             <descriptive>
21372                 <description><p>
21373  The method to call when different types of address book change notifications are received.
21374                 </p></description>
21375             </descriptive>
21376             <Type name="AddressBookChangeCallback"/>
21377           </Argument>
21378           <Argument optional="optional" name="errorCallback">
21379             <descriptive>
21380                 <description><p>
21381  The method to call if address book changes cannot be watched.
21382                 </p></description>
21383             </descriptive>
21384             <Type name="ErrorCallback" nullable="nullable"/>
21385           </Argument>
21386         </ArgumentList>
21387         <Raises>
21388           <RaiseException name="WebAPIException">
21389             <descriptive>
21390                 <description><p>
21391  with error type TypeMismatchError, if any input parameter
21392 is not compatible with the expected type for that parameter.
21393                 </p></description>
21394                 <description><p>
21395  with error type InvalidValuesError, if any of the input parameters
21396 contain an invalid value.
21397                 </p></description>
21398                 <description><p>
21399  with error type SecurityError, if the application does not have the privilege to call this method.
21400                 </p></description>
21401                 <description><p>
21402  with error type NotSupportedError, if the feature
21403 is not supported.
21404                 </p></description>
21405                 <description><p>
21406  with error type UnknownError in any other case.
21407                 </p></description>
21408             </descriptive>
21409           </RaiseException>
21410         </Raises>
21411       </Operation>
21412       <Operation name="removeChangeListener" id="::Contact::AddressBook::removeChangeListener">
21413         <webidl>    void removeChangeListener(long watchId) raises(<ref>WebAPIException</ref>);</webidl>
21414         <descriptive>
21415             <brief>
21416  Unsubscribes an address book changes watch operation.
21417             </brief>
21418            <description>
21419             <p>
21420 If the watchId argument is valid and corresponds to a subscription already in
21421 place, the watch process MUST immediately stop and no further callbacks MUST be
21422 invoked. If the watchId argument is not valid or does not correspond to a
21423 valid subscription, the method should return without any further action.
21424             </p>
21425            </description>
21426             <version>
21427  1.0
21428             </version>
21429             <privilegelevel>
21430  public
21431             </privilegelevel>
21432             <privilege>
21433  http://tizen.org/privilege/contact.read
21434             </privilege>
21435             <Code> var watcherId = 0; // watcher identifier
21436  var addressbook; // This example assumes addressbook is initialized
21437
21438  // Receives address book changes
21439  var watcher = {
21440    oncontactsadded: function(contacts) {
21441      console.log(contacts.length + ' contacts were added');
21442    },
21443    oncontactsupdated: function(contacts) {
21444      console.log(contacts.length + ' contacts were updated');
21445    },
21446    oncontactsremoved: function(ids) {
21447      console.log(ids.length + ' contacts were removed');
21448    }
21449  };
21450
21451  // Cancel the watch operation
21452  function cancelWatch() {
21453     addressbook.removeChangeListener(watcherId);
21454  }
21455
21456  // registers to be notified when the address book changes
21457  watcherId = addressbook.addChangeListener(watcher);
21458  </Code>
21459         </descriptive>
21460         <Type type="void"/>
21461         <ArgumentList>
21462           <Argument name="watchId">
21463             <descriptive>
21464                 <description><p>
21465  A subscription identifier.
21466                 </p></description>
21467             </descriptive>
21468             <Type type="long"/>
21469           </Argument>
21470         </ArgumentList>
21471         <Raises>
21472           <RaiseException name="WebAPIException">
21473             <descriptive>
21474                 <description><p>
21475  with error type TypeMismatchError, if any input parameter
21476 is not compatible with the expected type for that parameter.
21477                 </p></description>
21478                 <description><p>
21479  with error type InvalidValuesError, if any of the input
21480 parameters contain an invalid value.
21481                 </p></description>
21482                 <description><p>
21483  with error type NotFoundError, if there is no listener
21484 with the given identifier.
21485                 </p></description>
21486                 <description><p>
21487  with error type SecurityError, if the application does not have the privilege to call this method.
21488                 </p></description>
21489                 <description><p>
21490  with error type NotSupportedError, if the feature
21491 is not supported.
21492                 </p></description>
21493                 <description><p>
21494  with error type UnknownError in any other error case.
21495                 </p></description>
21496             </descriptive>
21497           </RaiseException>
21498         </Raises>
21499       </Operation>
21500       <Operation name="getGroup" id="::Contact::AddressBook::getGroup">
21501         <webidl>    <ref>ContactGroup</ref> getGroup(<ref>ContactGroupId</ref> groupId) raises(<ref>WebAPIException</ref>);</webidl>
21502         <descriptive>
21503             <brief>
21504  Gets the group with the specified identifier.
21505             </brief>
21506            <description>
21507             <p>
21508 If the operation completes successfully, it must return the
21509 group with the given identifier.
21510             </p>
21511            </description>
21512             <version>
21513  2.0
21514             </version>
21515             <privilegelevel>
21516  public
21517             </privilegelevel>
21518             <privilege>
21519  http://tizen.org/privilege/contact.read
21520             </privilege>
21521             <Code> try {
21522    // Retrieves the Person corresponding to a Contact.
21523    var addressBook = tizen.contact.getAddressBook(contactRef.addressBookId);
21524    var contact = addressBook.get(contactRef.contactId);
21525    var group = addressBook.getGroup(contact.groupIds[0].id);
21526    console.log(&quot;Successfully resolved group with id: &quot; + contact.groupIds[0].id);
21527  } catch(err) {
21528    console.log(&quot;Error: &quot; + err.name);
21529  }
21530  </Code>
21531         </descriptive>
21532         <Type name="ContactGroup">
21533           <descriptive>
21534               <description><p>
21535  ContactGroup The matching ContactGroup object.
21536               </p></description>
21537           </descriptive>
21538         </Type>
21539         <ArgumentList>
21540           <Argument name="groupId">
21541             <descriptive>
21542                 <description><p>
21543  A group identifier.
21544                 </p></description>
21545             </descriptive>
21546             <Type name="ContactGroupId"/>
21547           </Argument>
21548         </ArgumentList>
21549         <Raises>
21550           <RaiseException name="WebAPIException">
21551             <descriptive>
21552                 <description><p>
21553  with error type NotFoundError, if there is no contact
21554 with the given identifier.
21555                 </p></description>
21556                 <description><p>
21557  with error type TypeMismatchError, if any input parameter
21558 is not compatible with the expected type for that parameter.
21559                 </p></description>
21560                 <description><p>
21561  with error type InvalidValuesError, if any of the input
21562 parameters contain an invalid value.
21563                 </p></description>
21564                 <description><p>
21565  with error type SecurityError, if the application does not have the privilege to call this method.
21566                 </p></description>
21567                 <description><p>
21568  with error type NotSupportedError, if the feature
21569 is not supported.
21570                 </p></description>
21571                 <description><p>
21572  with error type UnknownError in any other error case.
21573                 </p></description>
21574             </descriptive>
21575           </RaiseException>
21576         </Raises>
21577       </Operation>
21578       <Operation name="addGroup" id="::Contact::AddressBook::addGroup">
21579         <webidl>    void addGroup(<ref>ContactGroup</ref> group) raises(<ref>WebAPIException</ref>);</webidl>
21580         <descriptive>
21581             <brief>
21582  Adds a group to the address book.
21583             </brief>
21584            <description>
21585             <p>
21586 If the group is successfully inserted in the addressbook, the Group object
21587 will have its identifier (id attribute) set when the function returns.
21588             </p>
21589             <p>
21590 The group shall be added to local phone address book if the address book
21591 is the default address book.
21592             </p>
21593            </description>
21594             <version>
21595  2.0
21596             </version>
21597             <privilegelevel>
21598  public
21599             </privilegelevel>
21600             <privilege>
21601  http://tizen.org/privilege/contact.write
21602             </privilege>
21603             <Code>  var addressbook;
21604
21605   // Get address book
21606   var addressbooks = tizen.contact.getAddressBooks();
21607   addressbook = addressbooks[0];
21608
21609   try {
21610     var group = new tizen.ContactGroup('Company');
21611     addressbook.addGroup(group);
21612     console.log('Group added with id ' + group.id);
21613   } catch (err) {
21614     console.log( 'The following error occurred while adding: ' +  err.name);
21615   }
21616  </Code>
21617         </descriptive>
21618         <Type type="void"/>
21619         <ArgumentList>
21620           <Argument name="group">
21621             <descriptive>
21622                 <description><p>
21623  A ContactGroup object to be added.
21624                 </p></description>
21625             </descriptive>
21626             <Type name="ContactGroup"/>
21627           </Argument>
21628         </ArgumentList>
21629         <Raises>
21630           <RaiseException name="WebAPIException">
21631             <descriptive>
21632                 <description><p>
21633  with error type TypeMismatchError, if any input parameter
21634 is not compatible with the expected type for that parameter.
21635                 </p></description>
21636                 <description><p>
21637  with error type InvalidValuesError, if any input parameter
21638 contains invalid values.
21639                 </p></description>
21640                 <description><p>
21641  with error type SecurityError, if the application does not have the privilege to call this method.
21642                 </p></description>
21643                 <description><p>
21644  with error type NotSupportedError, if the feature
21645 is not supported.
21646                 </p></description>
21647                 <description><p>
21648  with error type UnknownError, if any other error occurs while trying to insert the contact.
21649                 </p></description>
21650             </descriptive>
21651           </RaiseException>
21652         </Raises>
21653       </Operation>
21654       <Operation name="updateGroup" id="::Contact::AddressBook::updateGroup">
21655         <webidl>    void updateGroup(<ref>ContactGroup</ref> group) raises(<ref>WebAPIException</ref>);</webidl>
21656         <descriptive>
21657             <brief>
21658  Updates a group in the address book.
21659             </brief>
21660             <version>
21661  2.0
21662             </version>
21663             <privilegelevel>
21664  public
21665             </privilegelevel>
21666             <privilege>
21667  http://tizen.org/privilege/contact.write
21668             </privilege>
21669             <Code>  var addressbook;
21670
21671   // Get address book.
21672   var addressbooks = tizen.contact.getAddressBooks();
21673   addressbook = addressbooks[0];
21674
21675   try {
21676     groups = addressbook.getGroups();
21677     groups[0].name = 'Friends';
21678     addressbook.updateGroup(groups[0]);
21679     console.log('First group was updated');
21680   } catch (err) {
21681     console.log( 'The following error occurred while adding: ' +  err.name);
21682   }
21683  </Code>
21684         </descriptive>
21685         <Type type="void"/>
21686         <ArgumentList>
21687           <Argument name="group">
21688             <descriptive>
21689                 <description><p>
21690  A ContactGroup object to be updated.
21691                 </p></description>
21692             </descriptive>
21693             <Type name="ContactGroup"/>
21694           </Argument>
21695         </ArgumentList>
21696         <Raises>
21697           <RaiseException name="WebAPIException">
21698             <descriptive>
21699                 <description><p>
21700  with error type TypeMismatchError, if any input parameter
21701 is not compatible with the expected type for that parameter.
21702                 </p></description>
21703                 <description><p>
21704  with error type InvalidValuesError, if any input parameter
21705 contains invalid values.
21706                 </p></description>
21707                 <description><p>
21708  with error type SecurityError, if the application does not have the privilege to call this method.
21709                 </p></description>
21710                 <description><p>
21711  with error type NotSupportedError, if the feature
21712 is not supported.
21713                 </p></description>
21714                 <description><p>
21715  with error type UnknownError, if the group could not be updated
21716 to an unknown error.
21717                 </p></description>
21718             </descriptive>
21719           </RaiseException>
21720         </Raises>
21721       </Operation>
21722       <Operation name="removeGroup" id="::Contact::AddressBook::removeGroup">
21723         <webidl>    void removeGroup(<ref>ContactGroupId</ref> groupId) raises(<ref>WebAPIException</ref>);</webidl>
21724         <descriptive>
21725             <brief>
21726  Removes a group from the address book.
21727             </brief>
21728            <description>
21729             <p>
21730 Removes the group in the address book that corresponds to the specified identifier. This method will throw an exception if it failed to remove the specified group.
21731             </p>
21732            </description>
21733             <version>
21734  2.0
21735             </version>
21736             <privilegelevel>
21737  public
21738             </privilegelevel>
21739             <privilege>
21740  http://tizen.org/privilege/contact.write
21741             </privilege>
21742             <Code>  var addressbook;
21743
21744   // Get default address book.
21745   var addressbooks = tizen.contact.getAddressBooks();
21746   addressbook = addressbooks[0];
21747
21748   try {
21749     groups = addressbook.getGroups();
21750     addressbook.removeGroup(groups[0].id);
21751     console.log('First group was removed');
21752   } catch (err) {
21753     console.log( 'The following error occurred while finding: ' +  err.name);
21754   }
21755  </Code>
21756         </descriptive>
21757         <Type type="void"/>
21758         <ArgumentList>
21759           <Argument name="groupId">
21760             <descriptive>
21761                 <description><p>
21762  An identifier (id attribute) of the ContactGroup object to be deleted.
21763                 </p></description>
21764             </descriptive>
21765             <Type name="ContactGroupId"/>
21766           </Argument>
21767         </ArgumentList>
21768         <Raises>
21769           <RaiseException name="WebAPIException">
21770             <descriptive>
21771                 <description><p>
21772  with error type NotFoundError, if the identifier does not match
21773 any contact in the address book.
21774                 </p></description>
21775                 <description><p>
21776  with error type TypeMismatchError, if any input parameter
21777 is not compatible with the expected type for that parameter.
21778                 </p></description>
21779                 <description><p>
21780  with error type InvalidValuesError, if any input parameter
21781 contains invalid values.
21782                 </p></description>
21783                 <description><p>
21784  with error type SecurityError, if the application does not have the privilege to call this method.
21785                 </p></description>
21786                 <description><p>
21787  with error type NotSupportedError, if the feature
21788 is not supported.
21789                 </p></description>
21790                 <description><p>
21791  with error type UnknownError, if the group could not be removed
21792 to an unknown error.
21793                 </p></description>
21794             </descriptive>
21795           </RaiseException>
21796         </Raises>
21797       </Operation>
21798       <Operation name="getGroups" id="::Contact::AddressBook::getGroups">
21799         <webidl>    <ref>ContactGroup</ref>[] getGroups() raises(<ref>WebAPIException</ref>);</webidl>
21800         <descriptive>
21801             <brief>
21802  Gets an array of all ContactGroup objects from the specified address book.
21803             </brief>
21804             <version>
21805  2.0
21806             </version>
21807             <privilegelevel>
21808  public
21809             </privilegelevel>
21810             <privilege>
21811  http://tizen.org/privilege/contact.read
21812             </privilege>
21813             <Code>  var addressbook;
21814
21815   // Get default address book.
21816   var addressbooks = tizen.contact.getAddressBooks();
21817   addressbook = addressbooks[0];
21818
21819   try {
21820     groups = addressbook.getGroups();
21821     console.log('Number of groups is ' + groups.length);
21822   } catch (err) {
21823     console.log( 'The following error occurred while finding: ' +  err.name);
21824   }
21825  </Code>
21826         </descriptive>
21827         <Type type="array">
21828           <descriptive>
21829               <description><p>
21830  ContactGroup[] The array of ContactGroup object from this address book.
21831               </p></description>
21832           </descriptive>
21833           <Type name="ContactGroup"/>
21834         </Type>
21835         <ArgumentList/>
21836         <Raises>
21837           <RaiseException name="WebAPIException">
21838             <descriptive>
21839                 <description><p>
21840  with error type NotFoundError, if the identifier does not match
21841 any contact in the address book.
21842                 </p></description>
21843                 <description><p>
21844  with error type TypeMismatchError, if any input parameter
21845 is not compatible with the expected type for that parameter.
21846                 </p></description>
21847                 <description><p>
21848  with error type InvalidValuesError, if any input parameter
21849 contains invalid values.
21850                 </p></description>
21851                 <description><p>
21852  with error type SecurityError, if the application does not have the privilege to call this method.
21853                 </p></description>
21854                 <description><p>
21855  with error type NotSupportedError, if the feature
21856 is not supported.
21857                 </p></description>
21858                 <description><p>
21859  with error type UnknownError, if the group could not be retrieved due
21860 to an unknown error.
21861                 </p></description>
21862             </descriptive>
21863           </RaiseException>
21864         </Raises>
21865       </Operation>
21866     </Interface>
21867     <Interface name="Person" id="::Contact::Person">
21868       <webidl>  [NoInterfaceObject] interface Person {
21869     readonly attribute <ref>PersonId</ref> id;
21870
21871     readonly attribute DOMString displayName;
21872
21873     readonly attribute long contactCount;
21874
21875     readonly attribute boolean hasPhoneNumber;
21876
21877     readonly attribute boolean hasEmail;
21878
21879     attribute boolean isFavorite;
21880
21881     attribute DOMString? photoURI;
21882
21883     attribute DOMString? ringtoneURI;
21884
21885     attribute <ref>ContactId</ref> displayContactId;
21886
21887     void link(<ref>PersonId</ref> personId) raises(<ref>WebAPIException</ref>);
21888
21889     <ref>Person</ref> unlink(<ref>ContactId</ref> contactId) raises(<ref>WebAPIException</ref>);
21890   };</webidl>
21891       <descriptive>
21892           <brief>
21893  The person object.
21894           </brief>
21895           <version>
21896  2.0
21897           </version>
21898       </descriptive>
21899       <ExtendedAttributeList>
21900         <ExtendedAttribute name="NoInterfaceObject">
21901           <webidl>NoInterfaceObject</webidl>
21902         </ExtendedAttribute>
21903       </ExtendedAttributeList>
21904       <Attribute readonly="readonly" name="id" id="::Contact::Person::id">
21905         <webidl>    readonly attribute <ref>PersonId</ref> id;</webidl>
21906         <descriptive>
21907             <brief>
21908  The identifier of the person.
21909             </brief>
21910             <version>
21911  2.0
21912             </version>
21913         </descriptive>
21914         <Type name="PersonId"/>
21915       </Attribute>
21916       <Attribute readonly="readonly" name="displayName" id="::Contact::Person::displayName">
21917         <webidl>    readonly attribute DOMString displayName;</webidl>
21918         <descriptive>
21919             <brief>
21920  An attribute to identify a person by storing the display name in a string.
21921 It is selected from the contacts' display names.
21922             </brief>
21923             <version>
21924  2.0
21925             </version>
21926         </descriptive>
21927         <Type type="DOMString"/>
21928       </Attribute>
21929       <Attribute readonly="readonly" name="contactCount" id="::Contact::Person::contactCount">
21930         <webidl>    readonly attribute long contactCount;</webidl>
21931         <descriptive>
21932             <brief>
21933  An attribute to count the number of the contacts that belong to a person.
21934             </brief>
21935             <version>
21936  2.0
21937             </version>
21938         </descriptive>
21939         <Type type="long"/>
21940       </Attribute>
21941       <Attribute readonly="readonly" name="hasPhoneNumber" id="::Contact::Person::hasPhoneNumber">
21942         <webidl>    readonly attribute boolean hasPhoneNumber;</webidl>
21943         <descriptive>
21944             <brief>
21945  An attribute to indicate if a person has a phone number.
21946             </brief>
21947             <version>
21948  2.0
21949             </version>
21950         </descriptive>
21951         <Type type="boolean"/>
21952       </Attribute>
21953       <Attribute readonly="readonly" name="hasEmail" id="::Contact::Person::hasEmail">
21954         <webidl>    readonly attribute boolean hasEmail;</webidl>
21955         <descriptive>
21956             <brief>
21957  An attribute to indicate if the person has an email addresses.
21958             </brief>
21959             <version>
21960  2.0
21961             </version>
21962         </descriptive>
21963         <Type type="boolean"/>
21964       </Attribute>
21965       <Attribute name="isFavorite" id="::Contact::Person::isFavorite">
21966         <webidl>    attribute boolean isFavorite;</webidl>
21967         <descriptive>
21968             <brief>
21969  An attribute to indicate whether the contact is a favorite or not.
21970             </brief>
21971            <description>
21972             <p>
21973 Indicates if the person was marked as <em>Favorite</em> or not.
21974             </p>
21975             <p>
21976 By default, this attribute is set to <var>false</var>.
21977             </p>
21978            </description>
21979             <version>
21980  2.0
21981             </version>
21982         </descriptive>
21983         <Type type="boolean"/>
21984       </Attribute>
21985       <Attribute name="photoURI" id="::Contact::Person::photoURI">
21986         <webidl>    attribute DOMString? photoURI;</webidl>
21987         <descriptive>
21988             <brief>
21989  The URI of a picture of a person.
21990             </brief>
21991            <description>
21992             <p>
21993 This attribute is used to store a URI that points to an image that can represent the
21994 person object. This attribute only contains a local file URI.
21995 Person's photoURI is bounded to linked contacts' valid photoURI.
21996 It means that if photoURI is existed, it can't become <var>null</var> and except linked contact's photoURI, any file can't be set as photoURI
21997             </p>
21998             <p>
21999 By default, this attribute is set to <var>null</var>.
22000             </p>
22001            </description>
22002             <version>
22003  2.0
22004             </version>
22005         </descriptive>
22006         <Type type="DOMString" nullable="nullable"/>
22007       </Attribute>
22008       <Attribute name="ringtoneURI" id="::Contact::Person::ringtoneURI">
22009         <webidl>    attribute DOMString? ringtoneURI;</webidl>
22010         <descriptive>
22011             <brief>
22012  An attribute to specify and store the URI of a custom ringtone for a contact.
22013             </brief>
22014            <description>
22015             <p>
22016 By default, this attribute is initialized to <var>null</var>.
22017 This attribute only contains a local file URI.
22018             </p>
22019            </description>
22020             <version>
22021  2.0
22022             </version>
22023         </descriptive>
22024         <Type type="DOMString" nullable="nullable"/>
22025       </Attribute>
22026       <Attribute name="displayContactId" id="::Contact::Person::displayContactId">
22027         <webidl>    attribute <ref>ContactId</ref> displayContactId;</webidl>
22028         <descriptive>
22029             <brief>
22030  The ID of a contact that represents information of the person.
22031             </brief>
22032            <description>
22033             <p>
22034 The contact, this value is indicating, is used to show detailed information of the person.
22035             </p>
22036            </description>
22037             <version>
22038  2.0
22039             </version>
22040         </descriptive>
22041         <Type name="ContactId"/>
22042       </Attribute>
22043       <Operation name="link" id="::Contact::Person::link">
22044         <webidl>    void link(<ref>PersonId</ref> personId) raises(<ref>WebAPIException</ref>);</webidl>
22045         <descriptive>
22046             <brief>
22047  Aggregates another person to this person.
22048             </brief>
22049            <description>
22050             <p>
22051 Person is a meta object which aggregates contacts and to make a person, user should combine related contacts.
22052 For this operation, link method is provided.
22053 If &quot;Person A&quot; is linked to &quot;Person B&quot;, contacts related to &quot;Person A&quot; are aggregated to &quot;Person B&quot;.
22054 After this function returns, the target &quot;Person A&quot; is removed from DB.
22055             </p>
22056            </description>
22057             <version>
22058  2.0
22059             </version>
22060             <privilegelevel>
22061  public
22062             </privilegelevel>
22063             <privilege>
22064  http://tizen.org/privilege/contact.write
22065             </privilege>
22066             <Code>  // Define the error callback for all the asynchronous calls
22067   function errorCB(err) {
22068     console.log( 'The following error occurred: ' +  err.name);
22069   }
22070
22071   function personsFoundCB(persons) {
22072     // The persons has been successfully found
22073     try {
22074       persons[0].link(persons[1].id);
22075       console.log('Second person was merged to the first person.');
22076     } catch (err) {
22077       console.log( 'The following error occurred while updating: ' +  err.name);
22078     }
22079   }
22080
22081   try {
22082     tizen.contact.find(personsFoundCB, errorCB);
22083   } catch (err) {
22084     console.log( 'The following error occurred while adding: ' +  err.name);
22085   }
22086  </Code>
22087         </descriptive>
22088         <Type type="void"/>
22089         <ArgumentList>
22090           <Argument name="personId">
22091             <descriptive>
22092                 <description><p>
22093  The ID of person to be merged.
22094                 </p></description>
22095             </descriptive>
22096             <Type name="PersonId"/>
22097           </Argument>
22098         </ArgumentList>
22099         <Raises>
22100           <RaiseException name="WebAPIException">
22101             <descriptive>
22102                 <description><p>
22103  with error type TypeMismatchError, if any input parameter
22104 is not compatible with the expected type for that parameter.
22105                 </p></description>
22106                 <description><p>
22107  with error type InvalidValuesError, if any input parameter
22108 contains invalid values.
22109                 </p></description>
22110                 <description><p>
22111  with error type SecurityError, if the application does not have the privilege to call this method.
22112                 </p></description>
22113                 <description><p>
22114  with error type NotSupportedError, if the feature
22115 is not supported.
22116                 </p></description>
22117                 <description><p>
22118  with error type UnknownError, if any other error occurs while trying to insert the contact.
22119                 </p></description>
22120             </descriptive>
22121           </RaiseException>
22122         </Raises>
22123       </Operation>
22124       <Operation name="unlink" id="::Contact::Person::unlink">
22125         <webidl>    <ref>Person</ref> unlink(<ref>ContactId</ref> contactId) raises(<ref>WebAPIException</ref>);</webidl>
22126         <descriptive>
22127             <brief>
22128  Separates a contact from this person.
22129             </brief>
22130            <description>
22131             <p>
22132 Person is aggregated contacts and if a user wants to detach one contact from person, unlink method is provided.
22133 Unlink is basically detaching a contact object from linked contacts so only a contact Id linked to the person can be used as the input parameter.
22134 This function returns a newly created Person object that indicates the separated contact.
22135             </p>
22136            </description>
22137             <version>
22138  2.0
22139             </version>
22140             <privilegelevel>
22141  public
22142             </privilegelevel>
22143             <privilege>
22144  http://tizen.org/privilege/contact.write
22145             </privilege>
22146             <Code>  var myPersonId = '1'; //ID of modified
22147
22148   var addressbook; // Default addressbook
22149   var person;    // Existing person obtained from addressbook
22150   var newPerson; // New person, which will be created during unlink
22151
22152   // Define the error callback.
22153   function errorCB(err) {
22154     console.log( 'The following error occurred: ' +  err.name);
22155   }
22156
22157   // Define the contact search success callback.
22158   function contactsFoundCB(contacts) {
22159     if (contacts.length > 1) {
22160       try {
22161         // unlink first contact
22162         newPerson = person.unlink(contacts[0].id);
22163       } catch (err) {
22164         console.log( 'The following error occurred while unlink: ' +  err.name);
22165       }
22166     } else {
22167         console.log( 'Not enough contacts ');
22168     }
22169   }
22170
22171   try {
22172     // Get person
22173     person = tizen.contact.get(myPersonId);
22174
22175     // Get default address book
22176     addressbook = tizen.contact.getDefaultAddressBook();
22177
22178     // Find all contacts in the default address book that personId
22179     // is exactly myPersonId
22180     var filter = new tizen.AttributeFilter('personId', 'EXACTLY', myPersonId);
22181
22182     addressbook.find(contactsFoundCB, errorCB, filter);
22183   } catch (err) {
22184     console.log( 'The following error occurred while processing: ' +  err.name);
22185   }
22186  </Code>
22187         </descriptive>
22188         <Type name="Person"/>
22189         <ArgumentList>
22190           <Argument name="contactId">
22191             <descriptive>
22192                 <description><p>
22193  The ID of contact to unlink.
22194                 </p></description>
22195             </descriptive>
22196             <Type name="ContactId"/>
22197           </Argument>
22198         </ArgumentList>
22199         <Raises>
22200           <RaiseException name="WebAPIException">
22201             <descriptive>
22202                 <description><p>
22203  with error type TypeMismatchError, if any input parameter
22204 is not compatible with the expected type for that parameter.
22205                 </p></description>
22206                 <description><p>
22207  with error type InvalidValuesError, if any input parameter
22208 contains invalid values.
22209                 </p></description>
22210                 <description><p>
22211  with error type SecurityError, if the application does not have the privilege to call this method.
22212                 </p></description>
22213                 <description><p>
22214  with error type NotSupportedError, if the feature
22215 is not supported.
22216                 </p></description>
22217                 <description><p>
22218  with error type UnknownError, if any other error occurs while trying to insert the contact.
22219                 </p></description>
22220             </descriptive>
22221           </RaiseException>
22222         </Raises>
22223       </Operation>
22224     </Interface>
22225     <Dictionary name="ContactInit" id="::Contact::ContactInit">
22226       <webidl>  dictionary ContactInit {
22227     <ref>ContactName</ref> name;
22228     <ref>ContactAddress</ref>[] addresses;
22229     DOMString photoURI;
22230     <ref>ContactPhoneNumber</ref>[] phoneNumbers;
22231     <ref>ContactEmailAddress</ref>[] emails;
22232     Date birthday;
22233     <ref>ContactAnniversary</ref>[] anniversaries;
22234     <ref>ContactOrganization</ref>[] organizations;
22235     DOMString[] notes;
22236     <ref>ContactWebSite</ref>[] urls;
22237     DOMString ringtoneURI;
22238     <ref>ContactGroupId</ref>[] groupIds;
22239   };</webidl>
22240       <descriptive>
22241           <brief>
22242  Provides a dictionary for specifying contact attributes upon contact creation.
22243           </brief>
22244          <description>
22245           <p>
22246 This dictionary is used to input parameters when contacts are created.
22247           </p>
22248          </description>
22249           <version>
22250  1.0
22251           </version>
22252       </descriptive>
22253       <DictionaryMember name="name" id="::Contact::ContactInit::name">
22254         <webidl>    <ref>ContactName</ref> name;</webidl>
22255         <Type name="ContactName"/>
22256       </DictionaryMember>
22257       <DictionaryMember name="addresses" id="::Contact::ContactInit::addresses">
22258         <webidl>    <ref>ContactAddress</ref>[] addresses;</webidl>
22259         <Type type="array">
22260           <Type name="ContactAddress"/>
22261         </Type>
22262       </DictionaryMember>
22263       <DictionaryMember name="photoURI" id="::Contact::ContactInit::photoURI">
22264         <webidl>    DOMString photoURI;</webidl>
22265         <Type type="DOMString"/>
22266       </DictionaryMember>
22267       <DictionaryMember name="phoneNumbers" id="::Contact::ContactInit::phoneNumbers">
22268         <webidl>    <ref>ContactPhoneNumber</ref>[] phoneNumbers;</webidl>
22269         <Type type="array">
22270           <Type name="ContactPhoneNumber"/>
22271         </Type>
22272       </DictionaryMember>
22273       <DictionaryMember name="emails" id="::Contact::ContactInit::emails">
22274         <webidl>    <ref>ContactEmailAddress</ref>[] emails;</webidl>
22275         <Type type="array">
22276           <Type name="ContactEmailAddress"/>
22277         </Type>
22278       </DictionaryMember>
22279       <DictionaryMember name="birthday" id="::Contact::ContactInit::birthday">
22280         <webidl>    Date birthday;</webidl>
22281         <Type type="Date"/>
22282       </DictionaryMember>
22283       <DictionaryMember name="anniversaries" id="::Contact::ContactInit::anniversaries">
22284         <webidl>    <ref>ContactAnniversary</ref>[] anniversaries;</webidl>
22285         <Type type="array">
22286           <Type name="ContactAnniversary"/>
22287         </Type>
22288       </DictionaryMember>
22289       <DictionaryMember name="organizations" id="::Contact::ContactInit::organizations">
22290         <webidl>    <ref>ContactOrganization</ref>[] organizations;</webidl>
22291         <Type type="array">
22292           <Type name="ContactOrganization"/>
22293         </Type>
22294       </DictionaryMember>
22295       <DictionaryMember name="notes" id="::Contact::ContactInit::notes">
22296         <webidl>    DOMString[] notes;</webidl>
22297         <Type type="array">
22298           <Type type="DOMString"/>
22299         </Type>
22300       </DictionaryMember>
22301       <DictionaryMember name="urls" id="::Contact::ContactInit::urls">
22302         <webidl>    <ref>ContactWebSite</ref>[] urls;</webidl>
22303         <Type type="array">
22304           <Type name="ContactWebSite"/>
22305         </Type>
22306       </DictionaryMember>
22307       <DictionaryMember name="ringtoneURI" id="::Contact::ContactInit::ringtoneURI">
22308         <webidl>    DOMString ringtoneURI;</webidl>
22309         <Type type="DOMString"/>
22310       </DictionaryMember>
22311       <DictionaryMember name="groupIds" id="::Contact::ContactInit::groupIds">
22312         <webidl>    <ref>ContactGroupId</ref>[] groupIds;</webidl>
22313         <Type type="array">
22314           <Type name="ContactGroupId"/>
22315         </Type>
22316       </DictionaryMember>
22317     </Dictionary>
22318     <Interface name="Contact" id="::Contact::Contact">
22319       <webidl>  [Constructor(optional <ref>ContactInit</ref>? ContactInitDict),
22320    Constructor(DOMString stringRepresentation)]
22321   interface Contact {
22322     readonly attribute <ref>ContactId</ref>? id;
22323
22324     readonly attribute <ref>PersonId</ref>? personId;
22325
22326     readonly attribute <ref>AddressBookId</ref>? addressBookId;
22327
22328     readonly attribute Date? lastUpdated;
22329
22330     readonly attribute boolean isFavorite;
22331
22332     attribute <ref>ContactName</ref>? name setraises(<ref>WebAPIException</ref>);
22333
22334     attribute <ref>ContactAddress</ref>[] addresses setraises(<ref>WebAPIException</ref>);
22335
22336     attribute DOMString? photoURI setraises(<ref>WebAPIException</ref>);
22337
22338     attribute <ref>ContactPhoneNumber</ref>[] phoneNumbers setraises(<ref>WebAPIException</ref>);
22339
22340     attribute <ref>ContactEmailAddress</ref>[] emails setraises(<ref>WebAPIException</ref>);
22341
22342     attribute Date? birthday setraises(<ref>WebAPIException</ref>);
22343
22344     attribute <ref>ContactAnniversary</ref>[] anniversaries setraises(<ref>WebAPIException</ref>);
22345
22346     attribute <ref>ContactOrganization</ref>[] organizations setraises(<ref>WebAPIException</ref>);
22347
22348     attribute DOMString[] notes setraises(<ref>WebAPIException</ref>);
22349
22350     attribute <ref>ContactWebSite</ref>[] urls setraises(<ref>WebAPIException</ref>);
22351
22352     attribute DOMString? ringtoneURI setraises(<ref>WebAPIException</ref>);
22353
22354     attribute <ref>ContactGroupId</ref>[] groupIds setraises(<ref>WebAPIException</ref>);
22355
22356     DOMString convertToString(optional <ref>ContactTextFormat</ref>? format) raises(<ref>WebAPIException</ref>);
22357
22358     <ref>Contact</ref> clone() raises(<ref>WebAPIException</ref>);
22359   };</webidl>
22360       <descriptive>
22361           <brief>
22362  This interface is used to create a <em>Contact </em>object.
22363           </brief>
22364           <version>
22365  1.0
22366           </version>
22367           <Code>  // Get the default address book
22368   var addressbook = tizen.contact.getDefaultAddressBook();
22369
22370   var contact = null;
22371
22372   try {
22373     contact = new tizen.Contact(
22374                       &quot;BEGIN:VCARD\n&quot;+
22375                       &quot;VERSION:3.0\n&quot;+
22376                       &quot;N:Gump;Forrest\n&quot;+
22377                       &quot;FN:Forrest Gump\n&quot;+
22378                       &quot;ORG:Bubba Gump Shrimp Co.\n&quot;+
22379                       &quot;TITLE:Shrimp Man\n&quot;+
22380                       &quot;TEL;WORK:(111) 555-1212\n&quot;+
22381                       &quot;TEL;HOME:(404) 555-1212\n&quot;+
22382                       &quot;EMAIL;WORK;PREF:forrestgump@example.com\n&quot;+
22383                       &quot;END:VCARD&quot;);
22384   } catch (err) {
22385     console.log( 'The following error occurred while converting: ' +  err.name);
22386   }
22387
22388   try {
22389     if (contact) {
22390       addressbook.add(contact);
22391       console.log('Contact was added with ID ' + contact.id);
22392     }
22393   } catch (err) {
22394     console.log( 'The following error occurred while adding: ' +  err.name);
22395   }
22396  </Code>
22397       </descriptive>
22398       <ExtendedAttributeList>
22399         <ExtendedAttribute name="Constructor">
22400           <webidl>Constructor(optional <ref>ContactInit</ref>? ContactInitDict)</webidl>
22401           <ArgumentList>
22402             <Argument optional="optional" name="ContactInitDict">
22403               <Type name="ContactInit" nullable="nullable"/>
22404             </Argument>
22405           </ArgumentList>
22406         </ExtendedAttribute>
22407         <ExtendedAttribute name="Constructor">
22408           <webidl>   Constructor(DOMString stringRepresentation)</webidl>
22409           <ArgumentList>
22410             <Argument name="stringRepresentation">
22411               <Type type="DOMString"/>
22412             </Argument>
22413           </ArgumentList>
22414         </ExtendedAttribute>
22415       </ExtendedAttributeList>
22416       <Attribute readonly="readonly" name="id" id="::Contact::Contact::id">
22417         <webidl>    readonly attribute <ref>ContactId</ref>? id;</webidl>
22418         <descriptive>
22419             <brief>
22420  An attribute to identify a raw contact.
22421             </brief>
22422            <description>
22423             <p>
22424 By default, this attribute is set to <var>null</var>.
22425             </p>
22426            </description>
22427             <version>
22428  1.0
22429             </version>
22430         </descriptive>
22431         <Type name="ContactId" nullable="nullable"/>
22432       </Attribute>
22433       <Attribute readonly="readonly" name="personId" id="::Contact::Contact::personId">
22434         <webidl>    readonly attribute <ref>PersonId</ref>? personId;</webidl>
22435         <descriptive>
22436             <brief>
22437  The identifier of the person corresponding to the raw contact.
22438             </brief>
22439            <description>
22440             <p>
22441 By default, this attribute is set to <var>null</var>.
22442             </p>
22443            </description>
22444             <version>
22445  2.0
22446             </version>
22447         </descriptive>
22448         <Type name="PersonId" nullable="nullable"/>
22449       </Attribute>
22450       <Attribute readonly="readonly" name="addressBookId" id="::Contact::Contact::addressBookId">
22451         <webidl>    readonly attribute <ref>AddressBookId</ref>? addressBookId;</webidl>
22452         <descriptive>
22453             <brief>
22454  The identifier of the address book that corresponds to the raw contact.
22455 By default, this attribute is set to <var>null</var>.
22456             </brief>
22457             <version>
22458  2.0
22459             </version>
22460         </descriptive>
22461         <Type name="AddressBookId" nullable="nullable"/>
22462       </Attribute>
22463       <Attribute readonly="readonly" name="lastUpdated" id="::Contact::Contact::lastUpdated">
22464         <webidl>    readonly attribute Date? lastUpdated;</webidl>
22465         <descriptive>
22466             <brief>
22467  The timestamp for the last update of a contact.
22468             </brief>
22469            <description>
22470             <p>
22471 Specifies revision information about the contact.
22472             </p>
22473             <p>
22474 By default, this attribute is set to <var>null</var>. Initially, once a contact is added to an address book, this value is the same as the creation date.
22475 For more details, see RFC 2426, Section 3.6.4.
22476             </p>
22477            </description>
22478             <version>
22479  1.0
22480             </version>
22481         </descriptive>
22482         <Type type="Date" nullable="nullable"/>
22483       </Attribute>
22484       <Attribute readonly="readonly" name="isFavorite" id="::Contact::Contact::isFavorite">
22485         <webidl>    readonly attribute boolean isFavorite;</webidl>
22486         <descriptive>
22487             <brief>
22488  An attribute to indicate whether a contact is favorite or not.
22489             </brief>
22490            <description>
22491             <p>
22492 This value is associated with the <em>isFavorite</em> attribute of Person that this contact indicates.
22493             </p>
22494             <p>
22495 By default, this attribute is set to <var>false</var>.
22496             </p>
22497            </description>
22498             <version>
22499  1.0
22500             </version>
22501             <Code>   if (contact.isFavorite) {
22502      // ...
22503    }
22504  </Code>
22505         </descriptive>
22506         <Type type="boolean"/>
22507       </Attribute>
22508       <Attribute name="name" id="::Contact::Contact::name">
22509         <webidl>    attribute <ref>ContactName</ref>? name setraises(<ref>WebAPIException</ref>);</webidl>
22510         <descriptive>
22511             <brief>
22512  An attribute to store the name of a contact.
22513             </brief>
22514             <version>
22515  1.0
22516             </version>
22517         </descriptive>
22518         <Type name="ContactName" nullable="nullable"/>
22519         <SetRaises>
22520           <RaiseException name="WebAPIException"/>
22521         </SetRaises>
22522       </Attribute>
22523       <Attribute name="addresses" id="::Contact::Contact::addresses">
22524         <webidl>    attribute <ref>ContactAddress</ref>[] addresses setraises(<ref>WebAPIException</ref>);</webidl>
22525         <descriptive>
22526             <brief>
22527  The contact addresses.
22528             </brief>
22529            <description>
22530             <p>
22531 By default, this attribute is set to an empty array.
22532             </p>
22533            </description>
22534             <version>
22535  1.0
22536             </version>
22537             <Code> var contactInit = {};
22538  var contactAddr = new tizen.ContactAddres({streetAddress:'Gran Via, 32',
22539                                             postalCode:'50013',
22540                                                   city:'Zaragoza',
22541                                                   country:'ES'});
22542  contactInit.addresses = [contactAddr];
22543  </Code>
22544         </descriptive>
22545         <Type type="array">
22546           <Type name="ContactAddress"/>
22547         </Type>
22548         <SetRaises>
22549           <RaiseException name="WebAPIException"/>
22550         </SetRaises>
22551       </Attribute>
22552       <Attribute name="photoURI" id="::Contact::Contact::photoURI">
22553         <webidl>    attribute DOMString? photoURI setraises(<ref>WebAPIException</ref>);</webidl>
22554         <descriptive>
22555             <brief>
22556  The URI to the picture of the contact.
22557             </brief>
22558            <description>
22559             <p>
22560 This attribute is used to store a URI that points to an image that can represent the
22561 contact object. This attribute only contains a local file URI.
22562 See RFC 2426, Section 3.1.4.
22563             </p>
22564             <p>
22565 By default, this attribute is set to <var>null</var>.
22566             </p>
22567            </description>
22568             <version>
22569  1.0
22570             </version>
22571             <Code>  var contactInit = {};
22572   contactInit.photoURI = 'file:///opt/media/Downloads/mypicture.jpg';
22573  </Code>
22574         </descriptive>
22575         <Type type="DOMString" nullable="nullable"/>
22576         <SetRaises>
22577           <RaiseException name="WebAPIException"/>
22578         </SetRaises>
22579       </Attribute>
22580       <Attribute name="phoneNumbers" id="::Contact::Contact::phoneNumbers">
22581         <webidl>    attribute <ref>ContactPhoneNumber</ref>[] phoneNumbers setraises(<ref>WebAPIException</ref>);</webidl>
22582         <descriptive>
22583             <brief>
22584  The telephone numbers of the contact.
22585             </brief>
22586            <description>
22587             <p>
22588 By default, this attribute is set to empty array.
22589             </p>
22590            </description>
22591             <version>
22592  1.0
22593             </version>
22594             <Code>   var contactInit = {};
22595    var phoneNumber = new tizen.ContactPhoneNumber('123456789');
22596    contactInit.phoneNumbers = [phoneNumber];
22597  </Code>
22598         </descriptive>
22599         <Type type="array">
22600           <Type name="ContactPhoneNumber"/>
22601         </Type>
22602         <SetRaises>
22603           <RaiseException name="WebAPIException"/>
22604         </SetRaises>
22605       </Attribute>
22606       <Attribute name="emails" id="::Contact::Contact::emails">
22607         <webidl>    attribute <ref>ContactEmailAddress</ref>[] emails setraises(<ref>WebAPIException</ref>);</webidl>
22608         <descriptive>
22609             <brief>
22610  The email addresses of the contact.
22611             </brief>
22612            <description>
22613             <p>
22614 By default, this attribute is set to empty array.
22615             </p>
22616            </description>
22617             <version>
22618  1.0
22619             </version>
22620             <Code>   var contactInit = {};
22621    var email = new tizen.ContactEmailAddress('deedee@ramones.com');
22622    contactInit.emails = [email];
22623  </Code>
22624         </descriptive>
22625         <Type type="array">
22626           <Type name="ContactEmailAddress"/>
22627         </Type>
22628         <SetRaises>
22629           <RaiseException name="WebAPIException"/>
22630         </SetRaises>
22631       </Attribute>
22632       <Attribute name="birthday" id="::Contact::Contact::birthday">
22633         <webidl>    attribute Date? birthday setraises(<ref>WebAPIException</ref>);</webidl>
22634         <descriptive>
22635             <brief>
22636  The birthday of the contact.
22637             </brief>
22638            <description>
22639             <p>
22640 Defines specify the birthday of the contact (see RFC 2426 -
22641 Section 3.1.5).
22642             </p>
22643             <p>
22644 By default, this attribute is set to <var>null</var>.
22645             </p>
22646            </description>
22647             <version>
22648  1.0
22649             </version>
22650             <Code>   var contactInit = {};
22651    contactInit.birthday = new Date(1996, 4, 15);
22652  </Code>
22653         </descriptive>
22654         <Type type="Date" nullable="nullable"/>
22655         <SetRaises>
22656           <RaiseException name="WebAPIException"/>
22657         </SetRaises>
22658       </Attribute>
22659       <Attribute name="anniversaries" id="::Contact::Contact::anniversaries">
22660         <webidl>    attribute <ref>ContactAnniversary</ref>[] anniversaries setraises(<ref>WebAPIException</ref>);</webidl>
22661         <descriptive>
22662             <brief>
22663  The list of anniversaries for the contact.
22664             </brief>
22665            <description>
22666             <p>
22667 Defines specify arbitrary anniversaries for the contact (in addition to the birthday).
22668             </p>
22669             <p>
22670 By default, this attribute is set to empty array.
22671             </p>
22672            </description>
22673             <version>
22674  1.0
22675             </version>
22676             <Code>   var contactInit = {};
22677    var marriage_anniv = new tizen.ContactAnniversary(new Date(1976, 11, 2), 'Marriage');
22678    contactInit.anniversaries = [marriage_anniv];
22679  </Code>
22680         </descriptive>
22681         <Type type="array">
22682           <Type name="ContactAnniversary"/>
22683         </Type>
22684         <SetRaises>
22685           <RaiseException name="WebAPIException"/>
22686         </SetRaises>
22687       </Attribute>
22688       <Attribute name="organizations" id="::Contact::Contact::organizations">
22689         <webidl>    attribute <ref>ContactOrganization</ref>[] organizations setraises(<ref>WebAPIException</ref>);</webidl>
22690         <descriptive>
22691             <brief>
22692  The organizations the contact belongs to.
22693             </brief>
22694            <description>
22695             <p>
22696 Contains information related to the contact's company or organization.
22697             </p>
22698             <p>
22699 For more details, see RFC 2426, Section 3.5.
22700             </p>
22701            </description>
22702             <version>
22703  1.0
22704             </version>
22705         </descriptive>
22706         <Type type="array">
22707           <Type name="ContactOrganization"/>
22708         </Type>
22709         <SetRaises>
22710           <RaiseException name="WebAPIException"/>
22711         </SetRaises>
22712       </Attribute>
22713       <Attribute name="notes" id="::Contact::Contact::notes">
22714         <webidl>    attribute DOMString[] notes setraises(<ref>WebAPIException</ref>);</webidl>
22715         <descriptive>
22716             <brief>
22717  The notes associated to the contact.
22718             </brief>
22719            <description>
22720             <p>
22721 To specify supplemental information or a comment related to the contact.
22722             </p>
22723             <p>
22724 For more details, see RFC 2426, Section 3.6.2.
22725             </p>
22726            </description>
22727             <version>
22728  2.0
22729             </version>
22730         </descriptive>
22731         <Type type="array">
22732           <Type type="DOMString"/>
22733         </Type>
22734         <SetRaises>
22735           <RaiseException name="WebAPIException"/>
22736         </SetRaises>
22737       </Attribute>
22738       <Attribute name="urls" id="::Contact::Contact::urls">
22739         <webidl>    attribute <ref>ContactWebSite</ref>[] urls setraises(<ref>WebAPIException</ref>);</webidl>
22740         <descriptive>
22741             <brief>
22742  The URLs associated to the contact.
22743             </brief>
22744            <description>
22745             <p>
22746 By default, this attribute is initialized to an empty array.
22747             </p>
22748             <p>
22749 In case multiple URLs are available, the first one is the default one.
22750 For more details, see RFC 2426, Section 3.6.8.
22751             </p>
22752            </description>
22753             <version>
22754  1.0
22755             </version>
22756         </descriptive>
22757         <Type type="array">
22758           <Type name="ContactWebSite"/>
22759         </Type>
22760         <SetRaises>
22761           <RaiseException name="WebAPIException"/>
22762         </SetRaises>
22763       </Attribute>
22764       <Attribute name="ringtoneURI" id="::Contact::Contact::ringtoneURI">
22765         <webidl>    attribute DOMString? ringtoneURI setraises(<ref>WebAPIException</ref>);</webidl>
22766         <descriptive>
22767             <brief>
22768  The URI to the custom ringtone for the contact.
22769             </brief>
22770            <description>
22771             <p>
22772 To specify a custom ringtone for the contact.
22773             </p>
22774             <p>
22775 By default, this attribute is initialized to <var>null</var>.
22776 This attribute only contains a local file URI scheme;
22777 For more details, see RFC 2426, Section 3.6.6.
22778             </p>
22779            </description>
22780             <version>
22781  1.0
22782             </version>
22783         </descriptive>
22784         <Type type="DOMString" nullable="nullable"/>
22785         <SetRaises>
22786           <RaiseException name="WebAPIException"/>
22787         </SetRaises>
22788       </Attribute>
22789       <Attribute name="groupIds" id="::Contact::Contact::groupIds">
22790         <webidl>    attribute <ref>ContactGroupId</ref>[] groupIds setraises(<ref>WebAPIException</ref>);</webidl>
22791         <descriptive>
22792             <brief>
22793  The groups the contact belongs to.
22794             </brief>
22795            <description>
22796             <p>
22797 To associate groups to the contact.
22798             </p>
22799             <p>
22800 By default, this attribute is initialized to an empty array.
22801             </p>
22802             <p>
22803 In a case where multiple categories are available, the first one is the default one.
22804 See RFC 2426, Section 3.6.1.
22805             </p>
22806            </description>
22807             <version>
22808  2.0
22809             </version>
22810         </descriptive>
22811         <Type type="array">
22812           <Type name="ContactGroupId"/>
22813         </Type>
22814         <SetRaises>
22815           <RaiseException name="WebAPIException"/>
22816         </SetRaises>
22817       </Attribute>
22818       <Operation name="convertToString" id="::Contact::Contact::convertToString">
22819         <webidl>    DOMString convertToString(optional <ref>ContactTextFormat</ref>? format) raises(<ref>WebAPIException</ref>);</webidl>
22820         <descriptive>
22821             <brief>
22822  Converts the Contact item to a string format.
22823             </brief>
22824            <description>
22825             <p>
22826 A textual representation for the contact will be generated and returned synchronously.
22827 The export format is set via the format parameter.
22828             </p>
22829            </description>
22830             <version>
22831  1.0
22832             </version>
22833             <Code>  var addressbook;
22834
22835   // Define the error callback.
22836   function errorCB(err) {
22837     console.log( 'The following error occurred: ' +  err.name);
22838   }
22839
22840   // Define the contact find success callback.
22841   function contactsFoundCB(contacts) {
22842     try {
22843       // Convert the first contact to vCard 3.0 format
22844       var vcard = contacts[0].convertToString(&quot;VCARD_30&quot;);
22845       console.log('textual representation of the contact is: ' + vcard);
22846     } catch (err) {
22847       console.log( 'The following error occurred while converting: ' +  err.name);
22848     }
22849   }
22850
22851   // Get the default address book
22852   addressbook = tizen.contact.getDefaultAddressBook();
22853
22854   // Find all contact in the address book whose first name contains the string 'Chris'.
22855   var filter = new tizen.AttributeFilter('firstName', 'CONTAINS', 'Chris');
22856   try {
22857     addressbook.find(contactsFoundCB, errorCB, filter);
22858   } catch (err) {
22859     console.log( 'The following error occurred while finding: ' +  err.name);
22860   }
22861  </Code>
22862         </descriptive>
22863         <Type type="DOMString">
22864           <descriptive>
22865               <description><p>
22866  DOMString The string representation of the Contact item.
22867               </p></description>
22868           </descriptive>
22869         </Type>
22870         <ArgumentList>
22871           <Argument optional="optional" name="format">
22872             <descriptive>
22873                 <description><p>
22874  Format to use for export. If this value is <var>null</var> or empty, it converts to platform default format.
22875                 </p></description>
22876             </descriptive>
22877             <Type name="ContactTextFormat" nullable="nullable"/>
22878           </Argument>
22879         </ArgumentList>
22880         <Raises>
22881           <RaiseException name="WebAPIException">
22882             <descriptive>
22883                 <description><p>
22884  with error type TypeMismatchError, if any input parameter
22885 is not compatible with the expected type for that parameter.
22886                 </p></description>
22887                 <description><p>
22888  with error type SecurityError, if the functionality
22889 is not allowed.
22890                 </p></description>
22891                 <description><p>
22892  with error type NotSupportedError, if the feature
22893 is not supported.
22894                 </p></description>
22895                 <description><p>
22896  with error type UnknownError in any other error case.
22897                 </p></description>
22898             </descriptive>
22899           </RaiseException>
22900         </Raises>
22901       </Operation>
22902       <Operation name="clone" id="::Contact::Contact::clone">
22903         <webidl>    <ref>Contact</ref> clone() raises(<ref>WebAPIException</ref>);</webidl>
22904         <descriptive>
22905            <description>
22906             <p>
22907 Creates a clone of the Contact object, detached from any address book.
22908             </p>
22909             <p>
22910 The Contact object returned by the <var>clone()</var> method will have its identifier
22911 set to <var>null</var> and will be detached from any address book.
22912             </p>
22913            </description>
22914             <version>
22915  1.0
22916             </version>
22917             <Code>  // Get default address book.
22918   var addressbook = tizen.contact.getDefaultAddressBook();
22919
22920   var bob = new tizen.Contact();
22921   bob.name = new tizen.ContactName({firstName:'Bob',
22922                                     lastName:'Smith'});
22923   addressbook.add(bob);
22924   var alice = bob.clone();
22925   contact.name.firstName = &quot;Alice&quot;; // Bob's wife
22926   addressbook.add(alice);
22927  </Code>
22928         </descriptive>
22929         <Type name="Contact">
22930           <descriptive>
22931               <description><p>
22932  Contact A new clone of the Contact object.
22933               </p></description>
22934           </descriptive>
22935         </Type>
22936         <ArgumentList/>
22937         <Raises>
22938           <RaiseException name="WebAPIException">
22939             <descriptive>
22940                 <description><p>
22941  with error type SecurityError, if the functionality
22942 is not allowed.
22943                 </p></description>
22944                 <description><p>
22945  with error type NotSupportedError, if the feature
22946 is not supported.
22947                 </p></description>
22948                 <description><p>
22949  with error type UnknownError in any other error case.
22950                 </p></description>
22951             </descriptive>
22952           </RaiseException>
22953         </Raises>
22954       </Operation>
22955     </Interface>
22956     <Interface name="ContactRef" id="::Contact::ContactRef">
22957       <webidl>  [Constructor(<ref>AddressBookId</ref> addressBookId, <ref>ContactId</ref> contactId)]
22958   interface ContactRef {
22959     attribute <ref>AddressBookId</ref> addressBookId;
22960
22961     attribute <ref>ContactId</ref> contactId;
22962   };</webidl>
22963       <descriptive>
22964           <brief>
22965  The fully-defined contact reference.
22966           </brief>
22967          <description>
22968           <p>
22969 It contains both the identifier of the address book which the contact is in, and
22970 the contact identifier within this address book.
22971           </p>
22972           <p>
22973 This interface is used by other APIs to uniquely and globally identify contacts.
22974           </p>
22975          </description>
22976           <version>
22977  1.0
22978           </version>
22979       </descriptive>
22980       <ExtendedAttributeList>
22981         <ExtendedAttribute name="Constructor">
22982           <webidl>Constructor(<ref>AddressBookId</ref> addressBookId, <ref>ContactId</ref> contactId)</webidl>
22983           <ArgumentList>
22984             <Argument name="addressBookId">
22985               <Type name="AddressBookId"/>
22986             </Argument>
22987             <Argument name="contactId">
22988               <Type name="ContactId"/>
22989             </Argument>
22990           </ArgumentList>
22991         </ExtendedAttribute>
22992       </ExtendedAttributeList>
22993       <Attribute name="addressBookId" id="::Contact::ContactRef::addressBookId">
22994         <webidl>    attribute <ref>AddressBookId</ref> addressBookId;</webidl>
22995         <descriptive>
22996             <brief>
22997  The address book identifier.
22998             </brief>
22999             <version>
23000  1.0
23001             </version>
23002         </descriptive>
23003         <Type name="AddressBookId"/>
23004       </Attribute>
23005       <Attribute name="contactId" id="::Contact::ContactRef::contactId">
23006         <webidl>    attribute <ref>ContactId</ref> contactId;</webidl>
23007         <descriptive>
23008             <brief>
23009  The contact identifier inside the address book.
23010             </brief>
23011             <version>
23012  1.0
23013             </version>
23014         </descriptive>
23015         <Type name="ContactId"/>
23016       </Attribute>
23017     </Interface>
23018     <Dictionary name="ContactNameInit" id="::Contact::ContactNameInit">
23019       <webidl>  dictionary ContactNameInit {
23020     DOMString prefix;
23021     DOMString suffix;
23022     DOMString firstName;
23023     DOMString middleName;
23024     DOMString lastName;
23025     DOMString[] nicknames;
23026     DOMString phoneticFirstName;
23027     DOMString phoneticLastName;
23028   };</webidl>
23029       <descriptive>
23030           <brief>
23031  The properties of a ContactName, to pass to the ContactName constructor.
23032           </brief>
23033          <description>
23034           <p>
23035 See ContactName interface for more information about the members.
23036           </p>
23037          </description>
23038           <version>
23039  1.0
23040           </version>
23041       </descriptive>
23042       <DictionaryMember name="prefix" id="::Contact::ContactNameInit::prefix">
23043         <webidl>    DOMString prefix;</webidl>
23044         <Type type="DOMString"/>
23045       </DictionaryMember>
23046       <DictionaryMember name="suffix" id="::Contact::ContactNameInit::suffix">
23047         <webidl>    DOMString suffix;</webidl>
23048         <Type type="DOMString"/>
23049       </DictionaryMember>
23050       <DictionaryMember name="firstName" id="::Contact::ContactNameInit::firstName">
23051         <webidl>    DOMString firstName;</webidl>
23052         <Type type="DOMString"/>
23053       </DictionaryMember>
23054       <DictionaryMember name="middleName" id="::Contact::ContactNameInit::middleName">
23055         <webidl>    DOMString middleName;</webidl>
23056         <Type type="DOMString"/>
23057       </DictionaryMember>
23058       <DictionaryMember name="lastName" id="::Contact::ContactNameInit::lastName">
23059         <webidl>    DOMString lastName;</webidl>
23060         <Type type="DOMString"/>
23061       </DictionaryMember>
23062       <DictionaryMember name="nicknames" id="::Contact::ContactNameInit::nicknames">
23063         <webidl>    DOMString[] nicknames;</webidl>
23064         <Type type="array">
23065           <Type type="DOMString"/>
23066         </Type>
23067       </DictionaryMember>
23068       <DictionaryMember name="phoneticFirstName" id="::Contact::ContactNameInit::phoneticFirstName">
23069         <webidl>    DOMString phoneticFirstName;</webidl>
23070         <Type type="DOMString"/>
23071       </DictionaryMember>
23072       <DictionaryMember name="phoneticLastName" id="::Contact::ContactNameInit::phoneticLastName">
23073         <webidl>    DOMString phoneticLastName;</webidl>
23074         <Type type="DOMString"/>
23075       </DictionaryMember>
23076     </Dictionary>
23077     <Interface name="ContactName" id="::Contact::ContactName">
23078       <webidl>  [Constructor(optional <ref>ContactNameInit</ref>? nameInitDict)]
23079   interface ContactName {
23080     attribute DOMString? prefix;
23081
23082     attribute DOMString? suffix;
23083
23084     attribute DOMString? firstName;
23085
23086     attribute DOMString? middleName;
23087
23088     attribute DOMString? lastName;
23089
23090     attribute DOMString[] nicknames;
23091
23092     attribute DOMString? phoneticFirstName;
23093
23094     attribute DOMString? phoneticLastName;
23095
23096     readonly attribute DOMString? displayName;
23097   };</webidl>
23098       <descriptive>
23099           <brief>
23100  This interface contains all information related to a contact name.
23101           </brief>
23102           <version>
23103  1.0
23104           </version>
23105       </descriptive>
23106       <ExtendedAttributeList>
23107         <ExtendedAttribute name="Constructor">
23108           <webidl>Constructor(optional <ref>ContactNameInit</ref>? nameInitDict)</webidl>
23109           <ArgumentList>
23110             <Argument optional="optional" name="nameInitDict">
23111               <Type name="ContactNameInit" nullable="nullable"/>
23112             </Argument>
23113           </ArgumentList>
23114         </ExtendedAttribute>
23115       </ExtendedAttributeList>
23116       <Attribute name="prefix" id="::Contact::ContactName::prefix">
23117         <webidl>    attribute DOMString? prefix;</webidl>
23118         <descriptive>
23119             <brief>
23120  The name prefix of a contact.
23121             </brief>
23122            <description>
23123             <p>
23124 By default, this attribute is initialized to
23125 <var>null</var>. See also RFC 2426, Section 3.1.1.
23126             </p>
23127            </description>
23128             <version>
23129  1.0
23130             </version>
23131             <Code>   contact.name.prefix = &quot;Dr.&quot;;
23132  </Code>
23133         </descriptive>
23134         <Type type="DOMString" nullable="nullable"/>
23135       </Attribute>
23136       <Attribute name="suffix" id="::Contact::ContactName::suffix">
23137         <webidl>    attribute DOMString? suffix;</webidl>
23138         <descriptive>
23139             <brief>
23140  The name suffix of a contact.
23141             </brief>
23142            <description>
23143             <p>
23144 By default, this attribute is initialized to
23145 <var>null</var>. See also RFC 2426, Section 3.1.1.
23146             </p>
23147            </description>
23148             <version>
23149  2.0
23150             </version>
23151             <Code>   contact.name.suffix = &quot;Jr.&quot;;
23152  </Code>
23153         </descriptive>
23154         <Type type="DOMString" nullable="nullable"/>
23155       </Attribute>
23156       <Attribute name="firstName" id="::Contact::ContactName::firstName">
23157         <webidl>    attribute DOMString? firstName;</webidl>
23158         <descriptive>
23159             <brief>
23160  The first (given) name of a contact.
23161             </brief>
23162            <description>
23163             <p>
23164 By default, this attribute is initialized to
23165 <var>null</var>. See also RFC 2426, Section 3.1.1.
23166             </p>
23167            </description>
23168             <version>
23169  1.0
23170             </version>
23171             <Code>   contact.name.firstName = 'Douglas';
23172  </Code>
23173         </descriptive>
23174         <Type type="DOMString" nullable="nullable"/>
23175       </Attribute>
23176       <Attribute name="middleName" id="::Contact::ContactName::middleName">
23177         <webidl>    attribute DOMString? middleName;</webidl>
23178         <descriptive>
23179             <brief>
23180  The middle name of a contact.
23181             </brief>
23182            <description>
23183             <p>
23184 By default, this attribute is initialized to
23185 <var>null</var>. See also RFC 2426, Section 3.1.1.
23186             </p>
23187            </description>
23188             <version>
23189  1.0
23190             </version>
23191             <Code>   contact.name.middleName = 'Glenn';
23192  </Code>
23193         </descriptive>
23194         <Type type="DOMString" nullable="nullable"/>
23195       </Attribute>
23196       <Attribute name="lastName" id="::Contact::ContactName::lastName">
23197         <webidl>    attribute DOMString? lastName;</webidl>
23198         <descriptive>
23199             <brief>
23200  The last (family) name of a contact.
23201             </brief>
23202            <description>
23203             <p>
23204 By default, this attribute is initialized to
23205 <var>null</var>. See also RFC 2426, Section 3.1.1.
23206             </p>
23207            </description>
23208             <version>
23209  1.0
23210             </version>
23211             <Code>   contact.name.lastName = 'Colvin';
23212  </Code>
23213         </descriptive>
23214         <Type type="DOMString" nullable="nullable"/>
23215       </Attribute>
23216       <Attribute name="nicknames" id="::Contact::ContactName::nicknames">
23217         <webidl>    attribute DOMString[] nicknames;</webidl>
23218         <descriptive>
23219             <brief>
23220  The nicknames of a contact.
23221             </brief>
23222            <description>
23223             <p>
23224 The nickname is a name used instead of, or in addition to, the given name of a contact,
23225 place, or thing. It can also be used to specify a familiar form of a proper name.
23226             </p>
23227             <p>
23228 By default, this attribute is initialized to an empty array.
23229             </p>
23230             <p>
23231 In case multiple nicknames are available the first one is the default.
23232 See RFC 2426, Section 3.1.3.
23233             </p>
23234            </description>
23235             <version>
23236  1.0
23237             </version>
23238             <Code>   contact.name.nickNames = ['Dee Dee'];
23239  </Code>
23240         </descriptive>
23241         <Type type="array">
23242           <Type type="DOMString"/>
23243         </Type>
23244       </Attribute>
23245       <Attribute name="phoneticFirstName" id="::Contact::ContactName::phoneticFirstName">
23246         <webidl>    attribute DOMString? phoneticFirstName;</webidl>
23247         <descriptive>
23248             <brief>
23249  The phonetic first name of a contact.
23250             </brief>
23251            <description>
23252             <p>
23253 Describes how the first name should be
23254 pronounced. This is very important in
23255 some languages, such as Japanese, because the
23256 same 'Kanji' may have several pronunciations.
23257             </p>
23258             <p>
23259 By default, this attribute is set to <var>null</var>.
23260             </p>
23261            </description>
23262             <version>
23263  2.0
23264             </version>
23265         </descriptive>
23266         <Type type="DOMString" nullable="nullable"/>
23267       </Attribute>
23268       <Attribute name="phoneticLastName" id="::Contact::ContactName::phoneticLastName">
23269         <webidl>    attribute DOMString? phoneticLastName;</webidl>
23270         <descriptive>
23271             <brief>
23272  The phonetic last name of a contact.
23273             </brief>
23274            <description>
23275             <p>
23276 Describes how the last name should be
23277 pronounced. This is very important in
23278 some languages, such as Japanese, because the
23279 same 'Kanji' may have several pronunciations.
23280             </p>
23281             <p>
23282 By default, this attribute is set to <var>null</var>.
23283             </p>
23284            </description>
23285             <version>
23286  2.0
23287             </version>
23288         </descriptive>
23289         <Type type="DOMString" nullable="nullable"/>
23290       </Attribute>
23291       <Attribute readonly="readonly" name="displayName" id="::Contact::ContactName::displayName">
23292         <webidl>    readonly attribute DOMString? displayName;</webidl>
23293         <descriptive>
23294             <brief>
23295  The display name of a contact.
23296             </brief>
23297            <description>
23298             <p>
23299 The string which can be displayed to identify the contact. It is composed of the first
23300 and last names if available, otherwise, it will fall back to the most adequate
23301 field available to identify the contact (such as nickname).
23302             </p>
23303             <p>
23304 By default, this attribute is set to <var>null</var>. Initially, once a contact is added to an address book, this value is composed.
23305             </p>
23306            </description>
23307             <version>
23308  1.0
23309             </version>
23310         </descriptive>
23311         <Type type="DOMString" nullable="nullable"/>
23312       </Attribute>
23313     </Interface>
23314     <Dictionary name="ContactOrganizationInit" id="::Contact::ContactOrganizationInit">
23315       <webidl>  dictionary ContactOrganizationInit {
23316     DOMString name;
23317     DOMString department;
23318     DOMString title;
23319     DOMString role;
23320     DOMString logoURI;
23321   };</webidl>
23322       <descriptive>
23323           <brief>
23324  The properties of a ContactOrganization, to pass to the ContactOrganization constructor.
23325           </brief>
23326          <description>
23327           <p>
23328 See ContactOrganization interface for information about members.
23329           </p>
23330          </description>
23331           <version>
23332  1.0
23333           </version>
23334       </descriptive>
23335       <DictionaryMember name="name" id="::Contact::ContactOrganizationInit::name">
23336         <webidl>    DOMString name;</webidl>
23337         <Type type="DOMString"/>
23338       </DictionaryMember>
23339       <DictionaryMember name="department" id="::Contact::ContactOrganizationInit::department">
23340         <webidl>    DOMString department;</webidl>
23341         <Type type="DOMString"/>
23342       </DictionaryMember>
23343       <DictionaryMember name="title" id="::Contact::ContactOrganizationInit::title">
23344         <webidl>    DOMString title;</webidl>
23345         <Type type="DOMString"/>
23346       </DictionaryMember>
23347       <DictionaryMember name="role" id="::Contact::ContactOrganizationInit::role">
23348         <webidl>    DOMString role;</webidl>
23349         <Type type="DOMString"/>
23350       </DictionaryMember>
23351       <DictionaryMember name="logoURI" id="::Contact::ContactOrganizationInit::logoURI">
23352         <webidl>    DOMString logoURI;</webidl>
23353         <Type type="DOMString"/>
23354       </DictionaryMember>
23355     </Dictionary>
23356     <Interface name="ContactOrganization" id="::Contact::ContactOrganization">
23357       <webidl>  [Constructor(optional <ref>ContactOrganizationInit</ref>? orgInitDict)]
23358   interface ContactOrganization {
23359     attribute DOMString? name;
23360
23361     attribute DOMString? department;
23362
23363     attribute DOMString? title;
23364
23365     attribute DOMString? role;
23366
23367     attribute DOMString? logoURI;
23368   };</webidl>
23369       <descriptive>
23370           <brief>
23371  This interface contains the information about the organization or
23372 company that a contact belongs to.
23373           </brief>
23374          <description>
23375           <p>
23376 By default, each of the attributes of this interface are <var>null</var>.
23377           </p>
23378           <p>
23379 For more details, see RFC 2426, Section 3.5.
23380           </p>
23381          </description>
23382           <version>
23383  1.0
23384           </version>
23385           <Code> var organization = new tizen.ContactOrganization({name: &quot;Intel&quot;, role: &quot;SW Engineer&quot;});
23386  </Code>
23387       </descriptive>
23388       <ExtendedAttributeList>
23389         <ExtendedAttribute name="Constructor">
23390           <webidl>Constructor(optional <ref>ContactOrganizationInit</ref>? orgInitDict)</webidl>
23391           <ArgumentList>
23392             <Argument optional="optional" name="orgInitDict">
23393               <Type name="ContactOrganizationInit" nullable="nullable"/>
23394             </Argument>
23395           </ArgumentList>
23396         </ExtendedAttribute>
23397       </ExtendedAttributeList>
23398       <Attribute name="name" id="::Contact::ContactOrganization::name">
23399         <webidl>    attribute DOMString? name;</webidl>
23400         <descriptive>
23401             <brief>
23402  The name of an organization.
23403             </brief>
23404            <description>
23405             <p>
23406 For more details, see RFC 2426, Section 3.5.5.
23407             </p>
23408            </description>
23409             <version>
23410  1.0
23411             </version>
23412         </descriptive>
23413         <Type type="DOMString" nullable="nullable"/>
23414       </Attribute>
23415       <Attribute name="department" id="::Contact::ContactOrganization::department">
23416         <webidl>    attribute DOMString? department;</webidl>
23417         <descriptive>
23418             <brief>
23419  The organizational unit name.
23420             </brief>
23421            <description>
23422             <p>
23423 For more details, see RFC 2426, Section 3.5.5.
23424             </p>
23425            </description>
23426             <version>
23427  1.0
23428             </version>
23429         </descriptive>
23430         <Type type="DOMString" nullable="nullable"/>
23431       </Attribute>
23432       <Attribute name="title" id="::Contact::ContactOrganization::title">
23433         <webidl>    attribute DOMString? title;</webidl>
23434         <descriptive>
23435             <brief>
23436  The job title.
23437             </brief>
23438            <description>
23439             <p>
23440 To specify the job title, functional position or function (such as 'Director,
23441 Research and Development').
23442             </p>
23443             <p>
23444 For more details, see RFC 2426, Section 3.5.1.
23445             </p>
23446            </description>
23447             <version>
23448  1.0
23449             </version>
23450         </descriptive>
23451         <Type type="DOMString" nullable="nullable"/>
23452       </Attribute>
23453       <Attribute name="role" id="::Contact::ContactOrganization::role">
23454         <webidl>    attribute DOMString? role;</webidl>
23455         <descriptive>
23456             <brief>
23457  An attribute to store the role, occupation, or business category
23458 (such as 'Programmer').
23459             </brief>
23460            <description>
23461             <p>
23462 For more details, see RFC 2426, Section 3.5.2.
23463             </p>
23464            </description>
23465             <version>
23466  1.0
23467             </version>
23468         </descriptive>
23469         <Type type="DOMString" nullable="nullable"/>
23470       </Attribute>
23471       <Attribute name="logoURI" id="::Contact::ContactOrganization::logoURI">
23472         <webidl>    attribute DOMString? logoURI;</webidl>
23473         <descriptive>
23474             <brief>
23475  The URI to the logo of a company.
23476             </brief>
23477            <description>
23478             <p>
23479 To specify a graphic image of a logo associated with an organization.
23480 This attribute only contains file URI Scheme;
23481 remote pictures could be loaded to local with Download API.
23482 For more details, see RFC 2426, Section 3.5.3.
23483             </p>
23484            </description>
23485             <version>
23486  1.0
23487             </version>
23488         </descriptive>
23489         <Type type="DOMString" nullable="nullable"/>
23490       </Attribute>
23491     </Interface>
23492     <Interface name="ContactWebSite" id="::Contact::ContactWebSite">
23493       <webidl>  [Constructor(DOMString url, optional DOMString type)]
23494   interface ContactWebSite
23495   {
23496     attribute DOMString url;
23497
23498     attribute DOMString type;
23499   };</webidl>
23500       <descriptive>
23501           <brief>
23502  The ContactWebSite object that contains the URL and the type of web site.
23503           </brief>
23504          <description>
23505           <p>
23506 For more details, see RFC 2426, Section 3.6.8.
23507           </p>
23508          </description>
23509           <version>
23510  1.0
23511           </version>
23512           <Code>  var contactInit = {}
23513   var blog = new tizen.ContactWebSite('http://www.domain.com', 'BLOG');
23514   contactInit.urls = [blog];
23515  </Code>
23516       </descriptive>
23517       <ExtendedAttributeList>
23518         <ExtendedAttribute name="Constructor">
23519           <webidl>Constructor(DOMString url, optional DOMString type)</webidl>
23520           <ArgumentList>
23521             <Argument name="url">
23522               <Type type="DOMString"/>
23523             </Argument>
23524             <Argument optional="optional" name="type">
23525               <Type type="DOMString"/>
23526             </Argument>
23527           </ArgumentList>
23528         </ExtendedAttribute>
23529       </ExtendedAttributeList>
23530       <Attribute name="url" id="::Contact::ContactWebSite::url">
23531         <webidl>    attribute DOMString url;</webidl>
23532         <descriptive>
23533             <brief>
23534  The URL for the contact's web site.
23535             </brief>
23536             <version>
23537  1.0
23538             </version>
23539         </descriptive>
23540         <Type type="DOMString"/>
23541       </Attribute>
23542       <Attribute name="type" id="::Contact::ContactWebSite::type">
23543         <webidl>    attribute DOMString type;</webidl>
23544         <descriptive>
23545             <brief>
23546  The type of web site.
23547             </brief>
23548            <description>
23549             <p>
23550 At least the following values must be supported:
23551             </p>
23552             <ul>
23553               <li>
23554 HOMEPAGE - Indicates a home page.              </li>
23555               <li>
23556 BLOG - Indicates a blog.              </li>
23557             </ul>
23558             <p>
23559 By default, this attribute is set to HOMEPAGE.
23560             </p>
23561            </description>
23562             <version>
23563  1.0
23564             </version>
23565         </descriptive>
23566         <Type type="DOMString"/>
23567       </Attribute>
23568     </Interface>
23569     <Interface name="ContactAnniversary" id="::Contact::ContactAnniversary">
23570       <webidl>  [Constructor(Date date, optional DOMString? label)]
23571   interface ContactAnniversary
23572   {
23573     attribute Date date;
23574
23575     attribute DOMString? label;
23576   };</webidl>
23577       <descriptive>
23578           <brief>
23579  This interface implements the <em>ContactAnniversary </em>object that contains the date and description of an anniversary.
23580           </brief>
23581           <version>
23582  1.0
23583           </version>
23584           <Code>  var contactInit = {}
23585   var marriage_anniv = new tizen.ContactAnniversary(new Date(1976, 11, 2), 'Marriage');
23586   contactInit.anniversaries = [marriage_anniv];
23587  </Code>
23588       </descriptive>
23589       <ExtendedAttributeList>
23590         <ExtendedAttribute name="Constructor">
23591           <webidl>Constructor(Date date, optional DOMString? label)</webidl>
23592           <ArgumentList>
23593             <Argument name="date">
23594               <Type type="Date"/>
23595             </Argument>
23596             <Argument optional="optional" name="label">
23597               <Type type="DOMString" nullable="nullable"/>
23598             </Argument>
23599           </ArgumentList>
23600         </ExtendedAttribute>
23601       </ExtendedAttributeList>
23602       <Attribute name="date" id="::Contact::ContactAnniversary::date">
23603         <webidl>    attribute Date date;</webidl>
23604         <descriptive>
23605             <brief>
23606  The date of an anniversary.
23607             </brief>
23608             <version>
23609  1.0
23610             </version>
23611         </descriptive>
23612         <Type type="Date"/>
23613       </Attribute>
23614       <Attribute name="label" id="::Contact::ContactAnniversary::label">
23615         <webidl>    attribute DOMString? label;</webidl>
23616         <descriptive>
23617             <brief>
23618  The text describing an anniversary.
23619             </brief>
23620            <description>
23621             <p>
23622 By default, this attribute is set to <var>null</var>.
23623             </p>
23624            </description>
23625             <version>
23626  1.0
23627             </version>
23628         </descriptive>
23629         <Type type="DOMString" nullable="nullable"/>
23630       </Attribute>
23631     </Interface>
23632     <Dictionary name="ContactAddressInit" id="::Contact::ContactAddressInit">
23633       <webidl>  dictionary ContactAddressInit
23634   {
23635     DOMString country;
23636     DOMString region;
23637     DOMString city;
23638     DOMString streetAddress;
23639     DOMString additionalInformation;
23640     DOMString postalCode;
23641     boolean isDefault;
23642     DOMString[] types;
23643   };</webidl>
23644       <descriptive>
23645           <brief>
23646  The properties of a ContactAddress to pass to the ContactAddress constructor.
23647           </brief>
23648          <description>
23649           <p>
23650 See ContactAddress interface for more information about the members.
23651           </p>
23652          </description>
23653           <version>
23654  1.0
23655           </version>
23656       </descriptive>
23657       <DictionaryMember name="country" id="::Contact::ContactAddressInit::country">
23658         <webidl>    DOMString country;</webidl>
23659         <Type type="DOMString"/>
23660       </DictionaryMember>
23661       <DictionaryMember name="region" id="::Contact::ContactAddressInit::region">
23662         <webidl>    DOMString region;</webidl>
23663         <Type type="DOMString"/>
23664       </DictionaryMember>
23665       <DictionaryMember name="city" id="::Contact::ContactAddressInit::city">
23666         <webidl>    DOMString city;</webidl>
23667         <Type type="DOMString"/>
23668       </DictionaryMember>
23669       <DictionaryMember name="streetAddress" id="::Contact::ContactAddressInit::streetAddress">
23670         <webidl>    DOMString streetAddress;</webidl>
23671         <Type type="DOMString"/>
23672       </DictionaryMember>
23673       <DictionaryMember name="additionalInformation" id="::Contact::ContactAddressInit::additionalInformation">
23674         <webidl>    DOMString additionalInformation;</webidl>
23675         <Type type="DOMString"/>
23676       </DictionaryMember>
23677       <DictionaryMember name="postalCode" id="::Contact::ContactAddressInit::postalCode">
23678         <webidl>    DOMString postalCode;</webidl>
23679         <Type type="DOMString"/>
23680       </DictionaryMember>
23681       <DictionaryMember name="isDefault" id="::Contact::ContactAddressInit::isDefault">
23682         <webidl>    boolean isDefault;</webidl>
23683         <Type type="boolean"/>
23684       </DictionaryMember>
23685       <DictionaryMember name="types" id="::Contact::ContactAddressInit::types">
23686         <webidl>    DOMString[] types;</webidl>
23687         <Type type="array">
23688           <Type type="DOMString"/>
23689         </Type>
23690       </DictionaryMember>
23691     </Dictionary>
23692     <Interface name="ContactAddress" id="::Contact::ContactAddress">
23693       <webidl>  [Constructor(optional <ref>ContactAddressInit</ref>? addressInitDict)]
23694   interface ContactAddress
23695   {
23696     attribute DOMString? country;
23697
23698     attribute DOMString? region;
23699
23700     attribute DOMString? city;
23701
23702     attribute DOMString? streetAddress;
23703
23704     attribute DOMString? additionalInformation;
23705
23706     attribute DOMString? postalCode;
23707
23708     attribute boolean isDefault;
23709
23710     attribute DOMString[] types;
23711   };</webidl>
23712       <descriptive>
23713           <brief>
23714  This interface contains a set of attributes that represent a particular point
23715 on the Earth's surface.
23716           </brief>
23717          <description>
23718           <p>
23719 Except isDefault and types attributes, each of the attributes of this interface are set to <var>null</var> by default.
23720           </p>
23721           <p>
23722 For more details, see RFC 2426, Section 3.2.1.
23723           </p>
23724          </description>
23725           <version>
23726  1.0
23727           </version>
23728           <Code>   var contactInit = {};
23729    var contactAddress = new tizen.ContactAddress({streetAddress:'Gran Via, 32',
23730                                                   postalCode:'50013', city:'Zaragoza',
23731                                                  country:'ES', types:['WORK']});
23732    contactInit.contactAddress = [contactAddress];
23733  </Code>
23734       </descriptive>
23735       <ExtendedAttributeList>
23736         <ExtendedAttribute name="Constructor">
23737           <webidl>Constructor(optional <ref>ContactAddressInit</ref>? addressInitDict)</webidl>
23738           <ArgumentList>
23739             <Argument optional="optional" name="addressInitDict">
23740               <Type name="ContactAddressInit" nullable="nullable"/>
23741             </Argument>
23742           </ArgumentList>
23743         </ExtendedAttribute>
23744       </ExtendedAttributeList>
23745       <Attribute name="country" id="::Contact::ContactAddress::country">
23746         <webidl>    attribute DOMString? country;</webidl>
23747         <descriptive>
23748             <brief>
23749  The country of the address.
23750             </brief>
23751            <description>
23752             <p>
23753 It is recommended that the country is specified
23754 using the two-letter [ISO 3166-1] code.
23755             </p>
23756            </description>
23757             <version>
23758  1.0
23759             </version>
23760         </descriptive>
23761         <Type type="DOMString" nullable="nullable"/>
23762       </Attribute>
23763       <Attribute name="region" id="::Contact::ContactAddress::region">
23764         <webidl>    attribute DOMString? region;</webidl>
23765         <descriptive>
23766             <brief>
23767  The name of a country subdivision.
23768             </brief>
23769            <description>
23770             <p>
23771 For example, State (United States) or Province (Spain).
23772             </p>
23773            </description>
23774             <version>
23775  1.0
23776             </version>
23777         </descriptive>
23778         <Type type="DOMString" nullable="nullable"/>
23779       </Attribute>
23780       <Attribute name="city" id="::Contact::ContactAddress::city">
23781         <webidl>    attribute DOMString? city;</webidl>
23782         <descriptive>
23783             <brief>
23784  The name of the locality. For example, the city, county, town, or village.
23785             </brief>
23786             <version>
23787  1.0
23788             </version>
23789         </descriptive>
23790         <Type type="DOMString" nullable="nullable"/>
23791       </Attribute>
23792       <Attribute name="streetAddress" id="::Contact::ContactAddress::streetAddress">
23793         <webidl>    attribute DOMString? streetAddress;</webidl>
23794         <descriptive>
23795             <brief>
23796  The street address, for example, building number and street name/number.
23797             </brief>
23798             <version>
23799  1.0
23800             </version>
23801         </descriptive>
23802         <Type type="DOMString" nullable="nullable"/>
23803       </Attribute>
23804       <Attribute name="additionalInformation" id="::Contact::ContactAddress::additionalInformation">
23805         <webidl>    attribute DOMString? additionalInformation;</webidl>
23806         <descriptive>
23807             <brief>
23808  An attribute to capture any other address details that are required for an accurate address.
23809 For example, floor number, apartment number, suite name, the name of an office occupant, etc.
23810             </brief>
23811             <version>
23812  1.0
23813             </version>
23814         </descriptive>
23815         <Type type="DOMString" nullable="nullable"/>
23816       </Attribute>
23817       <Attribute name="postalCode" id="::Contact::ContactAddress::postalCode">
23818         <webidl>    attribute DOMString? postalCode;</webidl>
23819         <descriptive>
23820             <brief>
23821  The postal code of the location (also known as the zip code in the US).
23822             </brief>
23823             <version>
23824  1.0
23825             </version>
23826         </descriptive>
23827         <Type type="DOMString" nullable="nullable"/>
23828       </Attribute>
23829       <Attribute name="isDefault" id="::Contact::ContactAddress::isDefault">
23830         <webidl>    attribute boolean isDefault;</webidl>
23831         <descriptive>
23832             <brief>
23833  The default state of an address.
23834             </brief>
23835            <description>
23836             <p>
23837 Indicates if the address was marked as <em>default</em> or not for the contact.
23838 The only one among addresses for a person can have default property,
23839 so that this attribute might be changed without explicit modification
23840 according to the policy of platform.
23841             </p>
23842             <p>
23843 It deals with the 'pref' TYPE on RFC 2426, Section 3.2.1
23844             </p>
23845             <p>
23846 By default, this attribute is set to <var>false</var>.
23847             </p>
23848            </description>
23849             <version>
23850  2.0
23851             </version>
23852         </descriptive>
23853         <Type type="boolean"/>
23854       </Attribute>
23855       <Attribute name="types" id="::Contact::ContactAddress::types">
23856         <webidl>    attribute DOMString[] types;</webidl>
23857         <descriptive>
23858             <brief>
23859  The case insensitive list of address types.
23860             </brief>
23861            <description>
23862             <p>
23863 For more details, see RFC 2426, Section 3.2.1.
23864             </p>
23865             <p>
23866 At least the following values must be supported:
23867             </p>
23868             <ul>
23869               <li>
23870 WORK - Indicates a work address              </li>
23871               <li>
23872 HOME - Indicates a home address              </li>
23873             </ul>
23874             <p>
23875 By default, this attribute is set to HOME.
23876             </p>
23877            </description>
23878             <version>
23879  1.0
23880             </version>
23881         </descriptive>
23882         <Type type="array">
23883           <Type type="DOMString"/>
23884         </Type>
23885       </Attribute>
23886     </Interface>
23887     <Interface name="ContactPhoneNumber" id="::Contact::ContactPhoneNumber">
23888       <webidl>  [Constructor(DOMString number, optional DOMString[] types, optional boolean isDefault)]
23889   interface ContactPhoneNumber
23890   {
23891     attribute DOMString number;
23892
23893     attribute boolean isDefault;
23894
23895     attribute DOMString[] types;
23896   };</webidl>
23897       <descriptive>
23898           <brief>
23899  The ContactPhoneNumber object that contains the number and the type of phone number.
23900           </brief>
23901          <description>
23902           <p>
23903 This interface provides the phone number and the type of number, for example, work, home, car, etc., or the device subtype, for example, fax, fixed, or mobile.
23904 At searching by phoneNumber, matchflag &quot;CONTAINS&quot; provides a result set which is retrieved from normalized phoneNumber as searching value.
23905           </p>
23906           <p>
23907 For more details, see RFC 2426, Section 3.3.1
23908           </p>
23909          </description>
23910           <version>
23911  1.0
23912           </version>
23913           <Code>   var contactInit = {};
23914    var phoneNumber = new tizen.ContactPhoneNumber('123456789', ['WORK','VOICE'], true);
23915    contactInit.phoneNumbers = [phoneNumber];
23916  </Code>
23917       </descriptive>
23918       <ExtendedAttributeList>
23919         <ExtendedAttribute name="Constructor">
23920           <webidl>Constructor(DOMString number, optional DOMString[] types, optional boolean isDefault)</webidl>
23921           <ArgumentList>
23922             <Argument name="number">
23923               <Type type="DOMString"/>
23924             </Argument>
23925             <Argument optional="optional" name="types">
23926               <Type type="array">
23927                 <Type type="DOMString"/>
23928               </Type>
23929             </Argument>
23930             <Argument optional="optional" name="isDefault">
23931               <Type type="boolean"/>
23932             </Argument>
23933           </ArgumentList>
23934         </ExtendedAttribute>
23935       </ExtendedAttributeList>
23936       <Attribute name="number" id="::Contact::ContactPhoneNumber::number">
23937         <webidl>    attribute DOMString number;</webidl>
23938         <descriptive>
23939             <brief>
23940  The full phone number.
23941             </brief>
23942             <version>
23943  1.0
23944             </version>
23945         </descriptive>
23946         <Type type="DOMString"/>
23947       </Attribute>
23948       <Attribute name="isDefault" id="::Contact::ContactPhoneNumber::isDefault">
23949         <webidl>    attribute boolean isDefault;</webidl>
23950         <descriptive>
23951             <brief>
23952  The default state of the phone number.
23953             </brief>
23954            <description>
23955             <p>
23956 Indicates if the phone number was marked as <em>default</em> or not for the contact.
23957 The only one among phone numbers for a person can have default property,
23958 so that this attribute might be changed without explicit modification
23959 according to the policy of platform.
23960             </p>
23961             <p>
23962 It deals with the 'pref' TYPE on RFC 2426, Section 3.3.1
23963             </p>
23964             <p>
23965 By default, this attribute is set to false.
23966             </p>
23967            </description>
23968             <version>
23969  2.0
23970             </version>
23971         </descriptive>
23972         <Type type="boolean"/>
23973       </Attribute>
23974       <Attribute name="types" id="::Contact::ContactPhoneNumber::types">
23975         <webidl>    attribute DOMString[] types;</webidl>
23976         <descriptive>
23977             <brief>
23978  The case insensitive list of phone types, as defined in RFC 2426.
23979             </brief>
23980            <description>
23981             <p>
23982 Specifies the intended use of the phone number.
23983             </p>
23984             <p>
23985 At least the following values must be supported:
23986             </p>
23987             <ul>
23988               <li>
23989 <var>WORK</var> - Indicates a work number              </li>
23990               <li>
23991 <var>HOME</var> - Indicates a home number              </li>
23992               <li>
23993 <var>VOICE</var> - Indicates a voice number (Default)              </li>
23994               <li>
23995 <var>FAX</var> - Indicates a facsimile number              </li>
23996               <li>
23997 <var>MSG</var> - Indicates a messaging service on the number              </li>
23998               <li>
23999 <var>CELL</var> - Indicates a cellular number              </li>
24000               <li>
24001 <var>PAGER</var> - Indicates a pager number              </li>
24002               <li>
24003 <var>BBS</var> - Indicates a bulletin board service number              </li>
24004               <li>
24005 <var>MODEM</var> - Indicates a MODEM number              </li>
24006               <li>
24007 <var>CAR</var> - Indicates a car-phone number              </li>
24008               <li>
24009 <var>ISDN</var> - Indicates an ISDN number              </li>
24010               <li>
24011 <var>VIDEO</var> - Indicates a video-phone number              </li>
24012               <li>
24013 <var>PCS</var> - Personal Communication Standard               </li>
24014             </ul>
24015            </description>
24016             <version>
24017  1.0
24018             </version>
24019         </descriptive>
24020         <Type type="array">
24021           <Type type="DOMString"/>
24022         </Type>
24023       </Attribute>
24024     </Interface>
24025     <Interface name="ContactEmailAddress" id="::Contact::ContactEmailAddress">
24026       <webidl>  [Constructor(DOMString email, optional DOMString[] types, optional boolean isDefault)]
24027   interface ContactEmailAddress
24028   {
24029     attribute DOMString email;
24030
24031     attribute boolean isDefault;
24032
24033     attribute DOMString[] types;
24034   };</webidl>
24035       <descriptive>
24036           <brief>
24037  The ContactEmailAddress object that contains the email address and the type of email address.
24038           </brief>
24039          <description>
24040           <p>
24041 For more details, see RFC 2426, Section 3.3.2.
24042           </p>
24043          </description>
24044           <version>
24045  1.0
24046           </version>
24047           <Code>  var contactInit = {};
24048   var email = new tizen.ContactEmailAddress('user@domain.com', ['WORK']);
24049   contactInit.emails = [email];
24050  </Code>
24051       </descriptive>
24052       <ExtendedAttributeList>
24053         <ExtendedAttribute name="Constructor">
24054           <webidl>Constructor(DOMString email, optional DOMString[] types, optional boolean isDefault)</webidl>
24055           <ArgumentList>
24056             <Argument name="email">
24057               <Type type="DOMString"/>
24058             </Argument>
24059             <Argument optional="optional" name="types">
24060               <Type type="array">
24061                 <Type type="DOMString"/>
24062               </Type>
24063             </Argument>
24064             <Argument optional="optional" name="isDefault">
24065               <Type type="boolean"/>
24066             </Argument>
24067           </ArgumentList>
24068         </ExtendedAttribute>
24069       </ExtendedAttributeList>
24070       <Attribute name="email" id="::Contact::ContactEmailAddress::email">
24071         <webidl>    attribute DOMString email;</webidl>
24072         <descriptive>
24073             <brief>
24074  The full email address.
24075             </brief>
24076             <version>
24077  1.0
24078             </version>
24079         </descriptive>
24080         <Type type="DOMString"/>
24081       </Attribute>
24082       <Attribute name="isDefault" id="::Contact::ContactEmailAddress::isDefault">
24083         <webidl>    attribute boolean isDefault;</webidl>
24084         <descriptive>
24085             <brief>
24086  The default state of an email address.
24087             </brief>
24088            <description>
24089             <p>
24090 Indicates if the email address was marked as <em>default</em> or not for the contact.
24091 The only one among email addresses for a person can have default property,
24092 so that this attribute might be changed without explicit modification
24093 according to the policy of platform.
24094             </p>
24095             <p>
24096 It deals with the 'pref' TYPE on RFC 2426, Section 3.3.2
24097             </p>
24098             <p>
24099 By default, this attribute is set to false.
24100             </p>
24101            </description>
24102             <version>
24103  2.0
24104             </version>
24105         </descriptive>
24106         <Type type="boolean"/>
24107       </Attribute>
24108       <Attribute name="types" id="::Contact::ContactEmailAddress::types">
24109         <webidl>    attribute DOMString[] types;</webidl>
24110         <descriptive>
24111             <brief>
24112  The case insensitive list of email types.
24113             </brief>
24114            <description>
24115             <p>
24116 Specifies the intended use of the email address.
24117             </p>
24118             <p>
24119 At least the following values must be supported:
24120             </p>
24121             <ul>
24122               <li>
24123 WORK - Indicates a work email              </li>
24124               <li>
24125 HOME - Indicates a home email              </li>
24126               <li>
24127 MOBILE - Indicates a mobile email              </li>
24128             </ul>
24129             <p>
24130 By default, this attribute is set to WORK.
24131             </p>
24132            </description>
24133             <version>
24134  1.0
24135             </version>
24136         </descriptive>
24137         <Type type="array">
24138           <Type type="DOMString"/>
24139         </Type>
24140       </Attribute>
24141     </Interface>
24142     <Interface name="ContactGroup" id="::Contact::ContactGroup">
24143       <webidl>  [Constructor(DOMString name, optional DOMString? ringtoneURI, optional DOMString? photoURI)]
24144   interface ContactGroup
24145   {
24146     readonly attribute <ref>ContactGroupId</ref>? id;
24147
24148     readonly attribute <ref>AddressBookId</ref>? addressBookId;
24149
24150     attribute DOMString name;
24151
24152     attribute DOMString? ringtoneURI;
24153
24154     attribute DOMString? photoURI;
24155
24156     readonly attribute DOMString readOnly;
24157   };</webidl>
24158       <descriptive>
24159           <brief>
24160  The group object.
24161           </brief>
24162           <version>
24163  2.0
24164           </version>
24165           <Code>  var addressbook = null;
24166   var group = null;
24167
24168   // Define the error callback for all the asynchronous calls
24169   function errorCB(err) {
24170     console.log( 'The following error occurred: ' +  err.name);
24171   }
24172
24173   // Define the success callback for retrieving all the
24174   // Address Books
24175   function addressBooksCB(addressbooks) {
24176     addressbook = addressbooks[0];
24177     try {
24178       group = new tizen.ContactGroup('Family', 'file://opt/media/Downloads/ring.mp3');
24179     } catch (err) {
24180       console.log( 'The following error occurred while converting: ' +  err.name);
24181     }
24182
24183     try {
24184       if (group) {
24185         addressbook.addGroup(group);
24186         console.log('Group was added with ID ' + group.id);
24187       }
24188     } catch (err) {
24189       console.log( 'The following error occurred while adding: ' +  err.name);
24190     }
24191   }
24192
24193   tizen.contact.getAddressBooks(addressBooksCB, errorCB);
24194
24195  </Code>
24196       </descriptive>
24197       <ExtendedAttributeList>
24198         <ExtendedAttribute name="Constructor">
24199           <webidl>Constructor(DOMString name, optional DOMString? ringtoneURI, optional DOMString? photoURI)</webidl>
24200           <ArgumentList>
24201             <Argument name="name">
24202               <Type type="DOMString"/>
24203             </Argument>
24204             <Argument optional="optional" name="ringtoneURI">
24205               <Type type="DOMString" nullable="nullable"/>
24206             </Argument>
24207             <Argument optional="optional" name="photoURI">
24208               <Type type="DOMString" nullable="nullable"/>
24209             </Argument>
24210           </ArgumentList>
24211         </ExtendedAttribute>
24212       </ExtendedAttributeList>
24213       <Attribute readonly="readonly" name="id" id="::Contact::ContactGroup::id">
24214         <webidl>    readonly attribute <ref>ContactGroupId</ref>? id;</webidl>
24215         <descriptive>
24216             <brief>
24217  The identifier of a group.
24218             </brief>
24219            <description>
24220             <p>
24221 By default, this attribute is set to <var>null</var>.
24222             </p>
24223            </description>
24224             <version>
24225  2.0
24226             </version>
24227         </descriptive>
24228         <Type name="ContactGroupId" nullable="nullable"/>
24229       </Attribute>
24230       <Attribute readonly="readonly" name="addressBookId" id="::Contact::ContactGroup::addressBookId">
24231         <webidl>    readonly attribute <ref>AddressBookId</ref>? addressBookId;</webidl>
24232         <descriptive>
24233             <brief>
24234  The identifier of the address book that the group belongs to.
24235             </brief>
24236            <description>
24237             <p>
24238 By default, this attribute is set to <var>null</var>.
24239             </p>
24240            </description>
24241             <version>
24242  2.0
24243             </version>
24244         </descriptive>
24245         <Type name="AddressBookId" nullable="nullable"/>
24246       </Attribute>
24247       <Attribute name="name" id="::Contact::ContactGroup::name">
24248         <webidl>    attribute DOMString name;</webidl>
24249         <descriptive>
24250             <brief>
24251  The name of a group.
24252             </brief>
24253             <version>
24254  2.0
24255             </version>
24256         </descriptive>
24257         <Type type="DOMString"/>
24258       </Attribute>
24259       <Attribute name="ringtoneURI" id="::Contact::ContactGroup::ringtoneURI">
24260         <webidl>    attribute DOMString? ringtoneURI;</webidl>
24261         <descriptive>
24262             <brief>
24263  The URI to the custom ringtone for a group.
24264             </brief>
24265            <description>
24266             <p>
24267 To specify a custom ringtone for a group.
24268             </p>
24269             <p>
24270 By default, this attribute is initialized to <var>null</var>.
24271 This attribute only contains a local file URI.
24272             </p>
24273            </description>
24274             <version>
24275  2.0
24276             </version>
24277         </descriptive>
24278         <Type type="DOMString" nullable="nullable"/>
24279       </Attribute>
24280       <Attribute name="photoURI" id="::Contact::ContactGroup::photoURI">
24281         <webidl>    attribute DOMString? photoURI;</webidl>
24282         <descriptive>
24283             <brief>
24284  An attribute to store a URI that points to an image that can represent the<em> Group </em>object. This attribute only contains a local file URI.
24285             </brief>
24286            <description>
24287             <p>
24288 By default, this attribute is set to <var>null</var>.
24289             </p>
24290            </description>
24291             <version>
24292  2.0
24293             </version>
24294         </descriptive>
24295         <Type type="DOMString" nullable="nullable"/>
24296       </Attribute>
24297       <Attribute readonly="readonly" name="readOnly" id="::Contact::ContactGroup::readOnly">
24298         <webidl>    readonly attribute DOMString readOnly;</webidl>
24299         <descriptive>
24300             <brief>
24301  The flag indicating if the group can be modified / removed or not.
24302 Some groups cannot be edited if this flag sets to <var>true</var>.
24303             </brief>
24304            <description>
24305             <p>
24306 By default, this attribute is set to false.
24307             </p>
24308            </description>
24309             <version>
24310  2.0
24311             </version>
24312         </descriptive>
24313         <Type type="DOMString"/>
24314       </Attribute>
24315     </Interface>
24316     <Interface name="PersonArraySuccessCallback" id="::Contact::PersonArraySuccessCallback">
24317       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface PersonArraySuccessCallback {
24318     void onsuccess(<ref>Person</ref>[] persons);
24319   };</webidl>
24320       <descriptive>
24321           <brief>
24322  The success callback that is used for retrieving
24323 a list of persons.
24324           </brief>
24325          <description>
24326           <p>
24327 The success callback that takes an array of persons as an input
24328 argument. It is used in the asynchronous operation to
24329 get or save a list of persons.
24330           </p>
24331          </description>
24332           <version>
24333  2.0
24334           </version>
24335       </descriptive>
24336       <ExtendedAttributeList>
24337         <ExtendedAttribute name="Callback" value="FunctionOnly">
24338           <webidl>Callback</webidl>
24339         </ExtendedAttribute>
24340         <ExtendedAttribute name="NoInterfaceObject">
24341           <webidl> NoInterfaceObject</webidl>
24342         </ExtendedAttribute>
24343       </ExtendedAttributeList>
24344       <Operation name="onsuccess" id="::Contact::PersonArraySuccessCallback::onsuccess">
24345         <webidl>    void onsuccess(<ref>Person</ref>[] persons);</webidl>
24346         <descriptive>
24347             <brief>
24348  The method invoked when a list of persons is retrieved successfully.
24349             </brief>
24350             <version>
24351  2.0
24352             </version>
24353         </descriptive>
24354         <Type type="void"/>
24355         <ArgumentList>
24356           <Argument name="persons">
24357             <descriptive>
24358                 <description><p>
24359  List of persons.
24360                 </p></description>
24361             </descriptive>
24362             <Type type="array">
24363               <Type name="Person"/>
24364             </Type>
24365           </Argument>
24366         </ArgumentList>
24367       </Operation>
24368     </Interface>
24369     <Interface name="ContactArraySuccessCallback" id="::Contact::ContactArraySuccessCallback">
24370       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface ContactArraySuccessCallback {
24371     void onsuccess(<ref>Contact</ref>[] contacts);
24372   };</webidl>
24373       <descriptive>
24374           <brief>
24375  The success callback that is used for saving and retrieving
24376 a list of contacts.
24377           </brief>
24378          <description>
24379           <p>
24380 The success callback that takes an array of contacts as an input
24381 argument. It is used in the asynchronous operation to
24382 get or save a list of contacts.
24383           </p>
24384          </description>
24385           <version>
24386  1.0
24387           </version>
24388       </descriptive>
24389       <ExtendedAttributeList>
24390         <ExtendedAttribute name="Callback" value="FunctionOnly">
24391           <webidl>Callback</webidl>
24392         </ExtendedAttribute>
24393         <ExtendedAttribute name="NoInterfaceObject">
24394           <webidl> NoInterfaceObject</webidl>
24395         </ExtendedAttribute>
24396       </ExtendedAttributeList>
24397       <Operation name="onsuccess" id="::Contact::ContactArraySuccessCallback::onsuccess">
24398         <webidl>    void onsuccess(<ref>Contact</ref>[] contacts);</webidl>
24399         <descriptive>
24400             <brief>
24401  The method invoked when a list of contacts is retrieved successfully.
24402             </brief>
24403             <version>
24404  1.0
24405             </version>
24406         </descriptive>
24407         <Type type="void"/>
24408         <ArgumentList>
24409           <Argument name="contacts">
24410             <descriptive>
24411                 <description><p>
24412  List of contacts.
24413 The Contacts that were successfully saved must have their identifiers set.
24414                 </p></description>
24415             </descriptive>
24416             <Type type="array">
24417               <Type name="Contact"/>
24418             </Type>
24419           </Argument>
24420         </ArgumentList>
24421       </Operation>
24422     </Interface>
24423     <Interface name="AddressBookArraySuccessCallback" id="::Contact::AddressBookArraySuccessCallback">
24424       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface AddressBookArraySuccessCallback {
24425     void onsuccess(<ref>AddressBook</ref>[] addressbooks);
24426   };</webidl>
24427       <descriptive>
24428           <brief>
24429  The success callback when retrieving a list of AddressBooks.
24430           </brief>
24431          <description>
24432           <p>
24433 The success callback that takes an array of AddressBooks as an input
24434 argument. It is used in the asynchronous operation to
24435 get address books.
24436           </p>
24437          </description>
24438           <version>
24439  1.0
24440           </version>
24441       </descriptive>
24442       <ExtendedAttributeList>
24443         <ExtendedAttribute name="Callback" value="FunctionOnly">
24444           <webidl>Callback</webidl>
24445         </ExtendedAttribute>
24446         <ExtendedAttribute name="NoInterfaceObject">
24447           <webidl> NoInterfaceObject</webidl>
24448         </ExtendedAttribute>
24449       </ExtendedAttributeList>
24450       <Operation name="onsuccess" id="::Contact::AddressBookArraySuccessCallback::onsuccess">
24451         <webidl>    void onsuccess(<ref>AddressBook</ref>[] addressbooks);</webidl>
24452         <descriptive>
24453             <brief>
24454  The method invoked when a list of address books is retrieved successfully.
24455             </brief>
24456             <version>
24457  1.0
24458             </version>
24459         </descriptive>
24460         <Type type="void"/>
24461         <ArgumentList>
24462           <Argument name="addressbooks">
24463             <descriptive>
24464                 <description><p>
24465  The address books to retrieve.
24466                 </p></description>
24467             </descriptive>
24468             <Type type="array">
24469               <Type name="AddressBook"/>
24470             </Type>
24471           </Argument>
24472         </ArgumentList>
24473       </Operation>
24474     </Interface>
24475     <Interface name="AddressBookChangeCallback" id="::Contact::AddressBookChangeCallback">
24476       <webidl>  [Callback, NoInterfaceObject] interface AddressBookChangeCallback {
24477     void oncontactsadded(<ref>Contact</ref>[] contacts);
24478
24479     void oncontactsupdated(<ref>Contact</ref>[] contacts);
24480
24481     void oncontactsremoved(<ref>ContactId</ref>[] contactIds);
24482   };</webidl>
24483       <descriptive>
24484           <brief>
24485  The interface for specifying the methods to be called for address book
24486 change notifications.
24487           </brief>
24488          <description>
24489           <p>
24490 This interface specifies a set of functions that will be invoked every time an address
24491 book change occurs (contact addition/update/deletion).
24492           </p>
24493          </description>
24494           <version>
24495  1.0
24496           </version>
24497       </descriptive>
24498       <ExtendedAttributeList>
24499         <ExtendedAttribute name="Callback">
24500           <webidl>Callback</webidl>
24501         </ExtendedAttribute>
24502         <ExtendedAttribute name="NoInterfaceObject">
24503           <webidl> NoInterfaceObject</webidl>
24504         </ExtendedAttribute>
24505       </ExtendedAttributeList>
24506       <Operation name="oncontactsadded" id="::Contact::AddressBookChangeCallback::oncontactsadded">
24507         <webidl>    void oncontactsadded(<ref>Contact</ref>[] contacts);</webidl>
24508         <descriptive>
24509             <brief>
24510  The method invoked when contacts are added to the address book.
24511             </brief>
24512             <version>
24513  1.0
24514             </version>
24515         </descriptive>
24516         <Type type="void"/>
24517         <ArgumentList>
24518           <Argument name="contacts">
24519             <descriptive>
24520                 <description><p>
24521  A list of contacts to add.
24522                 </p></description>
24523             </descriptive>
24524             <Type type="array">
24525               <Type name="Contact"/>
24526             </Type>
24527           </Argument>
24528         </ArgumentList>
24529       </Operation>
24530       <Operation name="oncontactsupdated" id="::Contact::AddressBookChangeCallback::oncontactsupdated">
24531         <webidl>    void oncontactsupdated(<ref>Contact</ref>[] contacts);</webidl>
24532         <descriptive>
24533             <brief>
24534  The method invoked when contacts are updated in the address book.
24535             </brief>
24536             <version>
24537  1.0
24538             </version>
24539         </descriptive>
24540         <Type type="void"/>
24541         <ArgumentList>
24542           <Argument name="contacts">
24543             <descriptive>
24544                 <description><p>
24545  A list of contacts to update.
24546                 </p></description>
24547             </descriptive>
24548             <Type type="array">
24549               <Type name="Contact"/>
24550             </Type>
24551           </Argument>
24552         </ArgumentList>
24553       </Operation>
24554       <Operation name="oncontactsremoved" id="::Contact::AddressBookChangeCallback::oncontactsremoved">
24555         <webidl>    void oncontactsremoved(<ref>ContactId</ref>[] contactIds);</webidl>
24556         <descriptive>
24557             <brief>
24558  The method invoked when contacts are deleted from the address book.
24559             </brief>
24560             <version>
24561  1.0
24562             </version>
24563         </descriptive>
24564         <Type type="void"/>
24565         <ArgumentList>
24566           <Argument name="contactIds">
24567             <descriptive>
24568                 <description><p>
24569  A list of identifiers for the contacts to delete.
24570                 </p></description>
24571             </descriptive>
24572             <Type type="array">
24573               <Type name="ContactId"/>
24574             </Type>
24575           </Argument>
24576         </ArgumentList>
24577       </Operation>
24578     </Interface>
24579     <Interface name="PersonsChangeCallback" id="::Contact::PersonsChangeCallback">
24580       <webidl>  [Callback, NoInterfaceObject] interface PersonsChangeCallback {
24581     void onpersonsadded(<ref>Person</ref>[] persons);
24582
24583     void onpersonsupdated(<ref>Person</ref>[] persons);
24584
24585     void onpersonsremoved(<ref>PersonId</ref>[] personIds);
24586   };</webidl>
24587       <descriptive>
24588           <brief>
24589  The interface for specifying the methods to be called for change notifications.
24590           </brief>
24591          <description>
24592           <p>
24593 This interface specifies a set of functions that will be invoked every time person's
24594 list change occurs (person addition/update/deletion).
24595           </p>
24596          </description>
24597           <version>
24598  2.0
24599           </version>
24600       </descriptive>
24601       <ExtendedAttributeList>
24602         <ExtendedAttribute name="Callback">
24603           <webidl>Callback</webidl>
24604         </ExtendedAttribute>
24605         <ExtendedAttribute name="NoInterfaceObject">
24606           <webidl> NoInterfaceObject</webidl>
24607         </ExtendedAttribute>
24608       </ExtendedAttributeList>
24609       <Operation name="onpersonsadded" id="::Contact::PersonsChangeCallback::onpersonsadded">
24610         <webidl>    void onpersonsadded(<ref>Person</ref>[] persons);</webidl>
24611         <descriptive>
24612             <brief>
24613  The method invoked when persons are added to the person list.
24614             </brief>
24615             <version>
24616  2.0
24617             </version>
24618         </descriptive>
24619         <Type type="void"/>
24620         <ArgumentList>
24621           <Argument name="persons">
24622             <descriptive>
24623                 <description><p>
24624  A list of persons to add.
24625                 </p></description>
24626             </descriptive>
24627             <Type type="array">
24628               <Type name="Person"/>
24629             </Type>
24630           </Argument>
24631         </ArgumentList>
24632       </Operation>
24633       <Operation name="onpersonsupdated" id="::Contact::PersonsChangeCallback::onpersonsupdated">
24634         <webidl>    void onpersonsupdated(<ref>Person</ref>[] persons);</webidl>
24635         <descriptive>
24636             <brief>
24637  The method invoked when persons are updated in the person list.
24638             </brief>
24639             <version>
24640  2.0
24641             </version>
24642         </descriptive>
24643         <Type type="void"/>
24644         <ArgumentList>
24645           <Argument name="persons">
24646             <descriptive>
24647                 <description><p>
24648  A list of persons to update.
24649                 </p></description>
24650             </descriptive>
24651             <Type type="array">
24652               <Type name="Person"/>
24653             </Type>
24654           </Argument>
24655         </ArgumentList>
24656       </Operation>
24657       <Operation name="onpersonsremoved" id="::Contact::PersonsChangeCallback::onpersonsremoved">
24658         <webidl>    void onpersonsremoved(<ref>PersonId</ref>[] personIds);</webidl>
24659         <descriptive>
24660             <brief>
24661  The method invoked when persons are deleted from the person list.
24662             </brief>
24663             <version>
24664  2.0
24665             </version>
24666         </descriptive>
24667         <Type type="void"/>
24668         <ArgumentList>
24669           <Argument name="personIds">
24670             <descriptive>
24671                 <description><p>
24672  A list of identifiers for the persons to delete.
24673                 </p></description>
24674             </descriptive>
24675             <Type type="array">
24676               <Type name="PersonId"/>
24677             </Type>
24678           </Argument>
24679         </ArgumentList>
24680       </Operation>
24681     </Interface>
24682   </Module>
24683   <Module name="Content" id="::Content">
24684     <webidl>module Content {
24685
24686   enum ContentDirectoryStorageType { &quot;INTERNAL&quot;, &quot;EXTERNAL&quot; };
24687
24688   enum ContentType { &quot;IMAGE&quot;, &quot;VIDEO&quot;, &quot;AUDIO&quot;, &quot;OTHER&quot; };
24689
24690   enum AudioContentLyricsType { &quot;SYNCHRONIZED&quot;, &quot;UNSYNCHRONIZED&quot; };
24691
24692   enum ImageContentOrientation { &quot;NORMAL&quot;, &quot;FLIP_HORIZONTAL&quot;, &quot;ROTATE_180&quot;, &quot;FLIP_VERTICAL&quot;, &quot;TRANSPOSE&quot;, &quot;ROTATE_90&quot;, &quot;TRANSVERSE&quot;, &quot;ROTATE_270&quot; };
24693
24694   typedef DOMString ContentId;
24695
24696   typedef DOMString ContentDirectoryId;
24697
24698   [NoInterfaceObject] interface ContentManagerObject {
24699     readonly attribute <ref>ContentManager</ref> content;
24700   };
24701   <ref>Tizen</ref> implements <ref>ContentManagerObject</ref>;
24702
24703   [NoInterfaceObject] interface ContentManager {
24704
24705     void update(<ref>Content</ref> content) raises(<ref>WebAPIException</ref>);
24706
24707     void updateBatch(<ref>Content</ref>[] contents,
24708                      optional <ref>SuccessCallback</ref>? successCallback,
24709                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
24710
24711     void getDirectories(<ref>ContentDirectoryArraySuccessCallback</ref> successCallback,
24712                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
24713
24714     void find(<ref>ContentArraySuccessCallback</ref> successCallback,
24715               optional <ref>ErrorCallback</ref>? errorCallback,
24716               optional <ref>ContentDirectoryId</ref>? directoryId,
24717               optional <ref>AbstractFilter</ref>? filter,
24718               optional <ref>SortMode</ref>? sortMode,
24719               optional unsigned long? count,
24720               optional unsigned long? offset) raises(<ref>WebAPIException</ref>);
24721
24722
24723     void scanFile(DOMString contentURI,
24724                   optional <ref>ContentScanSuccessCallback</ref>? successCallback,
24725                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
24726
24727     void setChangeListener(<ref>ContentChangeCallback</ref> changeCallback) raises(<ref>WebAPIException</ref>);
24728
24729     void unsetChangeListener() raises(<ref>WebAPIException</ref>);
24730
24731   };
24732
24733   [Callback=FunctionOnly, NoInterfaceObject] interface ContentArraySuccessCallback {
24734     void onsuccess(<ref>Content</ref>[] contents);
24735   };
24736
24737   [Callback=FunctionOnly, NoInterfaceObject] interface ContentDirectoryArraySuccessCallback {
24738     void onsuccess(<ref>ContentDirectory</ref>[] directories);
24739   };
24740
24741   [Callback=FunctionOnly, NoInterfaceObject] interface ContentScanSuccessCallback {
24742     void onsuccess(DOMString contentURI);
24743   };
24744
24745   [Callback, NoInterfaceObject] interface ContentChangeCallback {
24746     void oncontentadded(<ref>Content</ref> content);
24747
24748     void oncontentupdated(<ref>Content</ref> content);
24749
24750     void oncontentremoved(<ref>ContentId</ref> id);
24751   };
24752
24753
24754   [NoInterfaceObject] interface ContentDirectory {
24755
24756     readonly attribute <ref>ContentDirectoryId</ref> id;
24757
24758     readonly attribute DOMString directoryURI;
24759
24760     readonly attribute DOMString title;
24761
24762     readonly attribute <ref>ContentDirectoryStorageType</ref> storageType;
24763
24764     readonly attribute Date? modifiedDate;
24765
24766    };
24767
24768   [NoInterfaceObject] interface Content {
24769
24770     readonly attribute DOMString[] editableAttributes;
24771
24772     readonly attribute <ref>ContentId</ref> id;
24773
24774     attribute DOMString name;
24775
24776     readonly attribute <ref>ContentType</ref> type;
24777
24778     readonly attribute DOMString mimeType;
24779
24780     readonly attribute DOMString title;
24781
24782     readonly attribute DOMString contentURI;
24783
24784     readonly attribute DOMString[]? thumbnailURIs;
24785
24786     readonly attribute Date? releaseDate;
24787
24788     readonly attribute Date? modifiedDate;
24789
24790     readonly attribute unsigned long size;
24791
24792     attribute DOMString? description;
24793
24794     attribute unsigned long rating;
24795   };
24796
24797   [NoInterfaceObject] interface VideoContent : <ref>Content</ref> {
24798
24799     attribute <ref>SimpleCoordinates</ref>? geolocation;
24800
24801     readonly attribute DOMString? album;
24802
24803     readonly attribute DOMString[]? artists;
24804
24805     readonly attribute unsigned long duration;
24806
24807     readonly attribute unsigned long width;
24808
24809     readonly attribute unsigned long height;
24810
24811   };
24812
24813
24814   [NoInterfaceObject] interface AudioContentLyrics {
24815
24816     readonly attribute <ref>AudioContentLyricsType</ref> type;
24817
24818     readonly attribute unsigned long[] timestamps;
24819
24820     readonly attribute DOMString[] texts;
24821   };
24822
24823   [NoInterfaceObject] interface AudioContent : <ref>Content</ref> {
24824
24825     readonly attribute DOMString? album;
24826
24827     readonly attribute DOMString[]? genres;
24828
24829     readonly attribute DOMString[]? artists;
24830
24831     readonly attribute DOMString[]? composers;
24832
24833     readonly attribute <ref>AudioContentLyrics</ref>? lyrics;
24834
24835     readonly attribute DOMString? copyright;
24836
24837     readonly attribute unsigned long bitrate;
24838
24839     readonly attribute unsigned short? trackNumber;
24840
24841     readonly attribute unsigned long duration;
24842
24843   };
24844
24845   [NoInterfaceObject] interface ImageContent : <ref>Content</ref> {
24846
24847     attribute <ref>SimpleCoordinates</ref>? geolocation;
24848
24849     readonly attribute unsigned long width;
24850
24851     readonly attribute unsigned long height;
24852
24853     attribute <ref>ImageContentOrientation</ref> orientation;
24854
24855   };
24856 };</webidl>
24857     <descriptive>
24858         <brief>
24859  This API provides functionality to discover contents such as images, videos, music, or other. 
24860         </brief>
24861        <description>
24862         <p>
24863 It is possible to search for specific contents using filters.
24864 The API also supports setting attributes of specific contents.
24865         </p>
24866         <p>
24867 For more information on the Content features, see <a href="../../org.tizen.web.appprogramming/html/guide/content_guide/mediacontent.htm">Content Guide</a>.
24868         </p>
24869        </description>
24870         <version>
24871  2.0
24872         </version>
24873     </descriptive>
24874     <Enum name="ContentDirectoryStorageType" id="::Content::ContentDirectoryStorageType">
24875       <webidl>  enum ContentDirectoryStorageType { &quot;INTERNAL&quot;, &quot;EXTERNAL&quot; };</webidl>
24876       <descriptive>
24877          <description>
24878           <p>
24879 Defines whether a content directory is stored on internal or external storage (such as a removable memory card).
24880           </p>
24881          </description>
24882           <version>
24883  2.0
24884           </version>
24885       </descriptive>
24886       <EnumValue stringvalue="INTERNAL">
24887         <webidl> &quot;INTERNAL</webidl>
24888       </EnumValue>
24889       <EnumValue stringvalue="EXTERNAL">
24890         <webidl> &quot;EXTERNAL</webidl>
24891       </EnumValue>
24892     </Enum>
24893     <Enum name="ContentType" id="::Content::ContentType">
24894       <webidl>  enum ContentType { &quot;IMAGE&quot;, &quot;VIDEO&quot;, &quot;AUDIO&quot;, &quot;OTHER&quot; };</webidl>
24895       <descriptive>
24896          <description>
24897           <p>
24898 Defines the type of content such as image, video, audio and other.
24899           </p>
24900          </description>
24901           <version>
24902  2.0
24903           </version>
24904           <remark>
24905  &quot;OTHER&quot; type is added since 2.1.
24906           </remark>
24907       </descriptive>
24908       <EnumValue stringvalue="IMAGE">
24909         <webidl> &quot;IMAGE</webidl>
24910       </EnumValue>
24911       <EnumValue stringvalue="VIDEO">
24912         <webidl> &quot;VIDEO</webidl>
24913       </EnumValue>
24914       <EnumValue stringvalue="AUDIO">
24915         <webidl> &quot;AUDIO</webidl>
24916       </EnumValue>
24917       <EnumValue stringvalue="OTHER">
24918         <webidl> &quot;OTHER</webidl>
24919       </EnumValue>
24920     </Enum>
24921     <Enum name="AudioContentLyricsType" id="::Content::AudioContentLyricsType">
24922       <webidl>  enum AudioContentLyricsType { &quot;SYNCHRONIZED&quot;, &quot;UNSYNCHRONIZED&quot; };</webidl>
24923       <descriptive>
24924          <description>
24925           <p>
24926 Defines whether the lyric supplied with an audio file is time-synchronized or not.
24927           </p>
24928          </description>
24929           <version>
24930  2.0
24931           </version>
24932       </descriptive>
24933       <EnumValue stringvalue="SYNCHRONIZED">
24934         <webidl> &quot;SYNCHRONIZED</webidl>
24935       </EnumValue>
24936       <EnumValue stringvalue="UNSYNCHRONIZED">
24937         <webidl> &quot;UNSYNCHRONIZED</webidl>
24938       </EnumValue>
24939     </Enum>
24940     <Enum name="ImageContentOrientation" id="::Content::ImageContentOrientation">
24941       <webidl>  enum ImageContentOrientation { &quot;NORMAL&quot;, &quot;FLIP_HORIZONTAL&quot;, &quot;ROTATE_180&quot;, &quot;FLIP_VERTICAL&quot;, &quot;TRANSPOSE&quot;, &quot;ROTATE_90&quot;, &quot;TRANSVERSE&quot;, &quot;ROTATE_270&quot; };</webidl>
24942       <descriptive>
24943          <description>
24944           <p>
24945 Defines an orientation of an image.
24946           </p>
24947          </description>
24948           <version>
24949  2.0
24950           </version>
24951       </descriptive>
24952       <EnumValue stringvalue="NORMAL">
24953         <webidl> &quot;NORMAL</webidl>
24954       </EnumValue>
24955       <EnumValue stringvalue="FLIP_HORIZONTAL">
24956         <webidl> &quot;FLIP_HORIZONTAL</webidl>
24957       </EnumValue>
24958       <EnumValue stringvalue="ROTATE_180">
24959         <webidl> &quot;ROTATE_180</webidl>
24960       </EnumValue>
24961       <EnumValue stringvalue="FLIP_VERTICAL">
24962         <webidl> &quot;FLIP_VERTICAL</webidl>
24963       </EnumValue>
24964       <EnumValue stringvalue="TRANSPOSE">
24965         <webidl> &quot;TRANSPOSE</webidl>
24966       </EnumValue>
24967       <EnumValue stringvalue="ROTATE_90">
24968         <webidl> &quot;ROTATE_90</webidl>
24969       </EnumValue>
24970       <EnumValue stringvalue="TRANSVERSE">
24971         <webidl> &quot;TRANSVERSE</webidl>
24972       </EnumValue>
24973       <EnumValue stringvalue="ROTATE_270">
24974         <webidl> &quot;ROTATE_270</webidl>
24975       </EnumValue>
24976     </Enum>
24977     <Typedef name="ContentId" id="::Content::ContentId">
24978       <webidl>  typedef DOMString ContentId;</webidl>
24979       <descriptive>
24980           <brief>
24981  Content identifier.
24982           </brief>
24983           <version>
24984  2.0
24985           </version>
24986       </descriptive>
24987       <Type type="DOMString"/>
24988     </Typedef>
24989     <Typedef name="ContentDirectoryId" id="::Content::ContentDirectoryId">
24990       <webidl>  typedef DOMString ContentDirectoryId;</webidl>
24991       <descriptive>
24992           <brief>
24993  Content directory identifier.
24994           </brief>
24995           <version>
24996  2.0
24997           </version>
24998       </descriptive>
24999       <Type type="DOMString"/>
25000     </Typedef>
25001     <Interface name="ContentManagerObject" id="::Content::ContentManagerObject">
25002       <webidl>  [NoInterfaceObject] interface ContentManagerObject {
25003     readonly attribute <ref>ContentManager</ref> content;
25004   };</webidl>
25005       <descriptive>
25006           <brief>
25007  Defines what is instantiated by the Tizen object.
25008           </brief>
25009          <description>
25010           <p>
25011 There is a <em>tizen.content </em>object that allows accessing the functionality of the Content module.
25012           </p>
25013          </description>
25014           <version>
25015  2.0
25016           </version>
25017       </descriptive>
25018       <ExtendedAttributeList>
25019         <ExtendedAttribute name="NoInterfaceObject">
25020           <webidl>NoInterfaceObject</webidl>
25021         </ExtendedAttribute>
25022       </ExtendedAttributeList>
25023       <Attribute readonly="readonly" name="content" id="::Content::ContentManagerObject::content">
25024         <webidl>    readonly attribute <ref>ContentManager</ref> content;</webidl>
25025         <Type name="ContentManager"/>
25026       </Attribute>
25027     </Interface>
25028     <Implements name1="Tizen" name2="ContentManagerObject">
25029       <webidl>  <ref>Tizen</ref> implements <ref>ContentManagerObject</ref>;</webidl>
25030     </Implements>
25031     <Interface name="ContentManager" id="::Content::ContentManager">
25032       <webidl>  [NoInterfaceObject] interface ContentManager {
25033
25034     void update(<ref>Content</ref> content) raises(<ref>WebAPIException</ref>);
25035
25036     void updateBatch(<ref>Content</ref>[] contents,
25037                      optional <ref>SuccessCallback</ref>? successCallback,
25038                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
25039
25040     void getDirectories(<ref>ContentDirectoryArraySuccessCallback</ref> successCallback,
25041                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
25042
25043     void find(<ref>ContentArraySuccessCallback</ref> successCallback,
25044               optional <ref>ErrorCallback</ref>? errorCallback,
25045               optional <ref>ContentDirectoryId</ref>? directoryId,
25046               optional <ref>AbstractFilter</ref>? filter,
25047               optional <ref>SortMode</ref>? sortMode,
25048               optional unsigned long? count,
25049               optional unsigned long? offset) raises(<ref>WebAPIException</ref>);
25050
25051
25052     void scanFile(DOMString contentURI,
25053                   optional <ref>ContentScanSuccessCallback</ref>? successCallback,
25054                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
25055
25056     void setChangeListener(<ref>ContentChangeCallback</ref> changeCallback) raises(<ref>WebAPIException</ref>);
25057
25058     void unsetChangeListener() raises(<ref>WebAPIException</ref>);
25059
25060   };</webidl>
25061       <descriptive>
25062           <brief>
25063  This interface provides operations to retrieve and manipulate contents.
25064           </brief>
25065           <version>
25066  2.0
25067           </version>
25068       </descriptive>
25069       <ExtendedAttributeList>
25070         <ExtendedAttribute name="NoInterfaceObject">
25071           <webidl>NoInterfaceObject</webidl>
25072         </ExtendedAttribute>
25073       </ExtendedAttributeList>
25074       <Operation name="update" id="::Content::ContentManager::update">
25075         <webidl>    void update(<ref>Content</ref> content) raises(<ref>WebAPIException</ref>);</webidl>
25076         <descriptive>
25077             <brief>
25078  Updates attributes of the content in content database synchronously.
25079             </brief>
25080            <description>
25081             <p>
25082 When an application has changed some attributes of a content, this method allows
25083 writing it back to the content database.
25084             </p>
25085            </description>
25086             <version>
25087  2.0
25088             </version>
25089             <privilegelevel>
25090  public
25091             </privilegelevel>
25092             <privilege>
25093  http://tizen.org/privilege/content.write
25094             </privilege>
25095             <remark>
25096  The <em>editableAttributes </em>in <em>Content </em>interface indicates 
25097 the attributes that can be changed. 
25098 This API does not support updating the metadata of a file.
25099             </remark>
25100             <Code> // Assume the content is a Content object as a result of find method.
25101  // Check the description is editable, and then set a description.
25102  if (content.editableAttributes.indexOf(&quot;description&quot;) >= 0) {
25103      content.description = &quot;Sample content&quot;;
25104  }
25105  tizen.content.update(content);
25106  </Code>
25107         </descriptive>
25108         <Type type="void"/>
25109         <ArgumentList>
25110           <Argument name="content">
25111             <descriptive>
25112                 <description><p>
25113  The content to update.
25114                 </p></description>
25115             </descriptive>
25116             <Type name="Content"/>
25117           </Argument>
25118         </ArgumentList>
25119         <Raises>
25120           <RaiseException name="WebAPIException">
25121             <descriptive>
25122                 <description><p>
25123  with error type TypeMismatchError, if any input parameter
25124 is not compatible with the expected type for that parameter.
25125                 </p></description>
25126                 <description><p>
25127  with error type InvalidValuesError, if any of the input parameters
25128 contain an invalid value.
25129                 </p></description>
25130                 <description><p>
25131  with error type SecurityError, if the application does not have the privilege to call this method.
25132                 </p></description>
25133                 <description><p>
25134  with error type UnknownError in any other error case.
25135                 </p></description>
25136             </descriptive>
25137           </RaiseException>
25138         </Raises>
25139       </Operation>
25140       <Operation name="updateBatch" id="::Content::ContentManager::updateBatch">
25141         <webidl>    void updateBatch(<ref>Content</ref>[] contents,
25142                      optional <ref>SuccessCallback</ref>? successCallback,
25143                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
25144         <descriptive>
25145             <brief>
25146  Updates a batch of content attributes in the content database synchronously.
25147             </brief>
25148            <description>
25149             <p>
25150 When an application has changed any attributes in array of content, this method allows writing them
25151 back to the content database.
25152             </p>
25153             <p>
25154 The errorCallback can be launched with any of these error types:
25155             </p>
25156             <ul>
25157               <li>
25158 InvalidValuesError: If any of the input parameters contain an invalid value.              </li>
25159               <li>
25160 UnknownError: In any other error case.              </li>
25161             </ul>
25162            </description>
25163             <version>
25164  2.0
25165             </version>
25166             <privilegelevel>
25167  public
25168             </privilegelevel>
25169             <privilege>
25170  http://tizen.org/privilege/content.write
25171             </privilege>
25172             <remark>
25173  The <em>editableAttributes </em>in <em>Content </em>interface indicates 
25174 the attributes that can be changed.
25175 This API does not support updating the metadata of a file.
25176             </remark>
25177             <Code> // The following example increases rating of an content by 1
25178
25179  function errorCB(err) {
25180      console.log( 'The following error occurred: ' +  err.name);
25181  }
25182
25183  function successCB() {
25184      console.log('Attributes set successfully');
25185  }
25186
25187  // Assume the content is a Content object as a result of find method.
25188  // Check the rating is editable, and then increase by 1.
25189  if (content.editableAttributes.indexOf(&quot;rating&quot;) >= 0) {
25190      content.rating++;
25191  }
25192  tizen.content.updateBatch([content], successCB, errorCB);
25193  </Code>
25194         </descriptive>
25195         <Type type="void"/>
25196         <ArgumentList>
25197           <Argument name="contents">
25198             <descriptive>
25199                 <description><p>
25200  Array of content to change.
25201                 </p></description>
25202             </descriptive>
25203             <Type type="array">
25204               <Type name="Content"/>
25205             </Type>
25206           </Argument>
25207           <Argument optional="optional" name="successCallback">
25208             <descriptive>
25209                 <description><p>
25210  Function called when attributes have been changed.
25211                 </p></description>
25212             </descriptive>
25213             <Type name="SuccessCallback" nullable="nullable"/>
25214           </Argument>
25215           <Argument optional="optional" name="errorCallback">
25216             <descriptive>
25217                 <description><p>
25218  Function called when an error has occurred.
25219                 </p></description>
25220             </descriptive>
25221             <Type name="ErrorCallback" nullable="nullable"/>
25222           </Argument>
25223         </ArgumentList>
25224         <Raises>
25225           <RaiseException name="WebAPIException">
25226             <descriptive>
25227                 <description><p>
25228  with error type TypeMismatchError, if the input parameter
25229 is not compatible with the expected type for that parameter.
25230                 </p></description>
25231                 <description><p>
25232  with error type SecurityError, if the application does not have the privilege to call this method.
25233                 </p></description>
25234             </descriptive>
25235           </RaiseException>
25236         </Raises>
25237       </Operation>
25238       <Operation name="getDirectories" id="::Content::ContentManager::getDirectories">
25239         <webidl>    void getDirectories(<ref>ContentDirectoryArraySuccessCallback</ref> successCallback,
25240                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
25241         <descriptive>
25242             <brief>
25243  Gets a list of content directory.
25244             </brief>
25245            <description>
25246             <p>
25247 This method returns (via callback) a list of content directory objects. To obtain a list of contents
25248 in a specific directory, use find() method with the directory ID.
25249             </p>
25250             <p>
25251 The errorCallback is launched with this error type:
25252             </p>
25253             <ul>
25254               <li>
25255 UnknownError: In any other error case.              </li>
25256             </ul>
25257            </description>
25258             <version>
25259  2.0
25260             </version>
25261             <Code> // The following example retrieves content directories in the storage.
25262
25263  function errorCB(err) {
25264      console.log( 'The following error occurred: ' +  err.name);
25265  }
25266
25267  function printDirectory(directory, index, directories) {
25268      console.log('directoryURI: ' + directory.directoryURI + ' Title: ' + directory.title);
25269  }
25270  function getDirectoriesCB(directories) {
25271      directories.forEach(printDirectory);
25272  }
25273
25274  tizen.content.getDirectories(getDirectoriesCB, errorCB);
25275  </Code>
25276         </descriptive>
25277         <Type type="void"/>
25278         <ArgumentList>
25279           <Argument name="successCallback">
25280             <descriptive>
25281                 <description><p>
25282  Function called when content directories have been retrieved successfully.
25283                 </p></description>
25284             </descriptive>
25285             <Type name="ContentDirectoryArraySuccessCallback"/>
25286           </Argument>
25287           <Argument optional="optional" name="errorCallback">
25288             <descriptive>
25289                 <description><p>
25290  Function called when an error has occurred.
25291                 </p></description>
25292             </descriptive>
25293             <Type name="ErrorCallback" nullable="nullable"/>
25294           </Argument>
25295         </ArgumentList>
25296         <Raises>
25297           <RaiseException name="WebAPIException">
25298             <descriptive>
25299                 <description><p>
25300  with error type TypeMismatchError, if the input parameter
25301 is not compatible with the expected type for that parameter.
25302                 </p></description>
25303             </descriptive>
25304           </RaiseException>
25305         </Raises>
25306       </Operation>
25307       <Operation name="find" id="::Content::ContentManager::find">
25308         <webidl>    void find(<ref>ContentArraySuccessCallback</ref> successCallback,
25309               optional <ref>ErrorCallback</ref>? errorCallback,
25310               optional <ref>ContentDirectoryId</ref>? directoryId,
25311               optional <ref>AbstractFilter</ref>? filter,
25312               optional <ref>SortMode</ref>? sortMode,
25313               optional unsigned long? count,
25314               optional unsigned long? offset) raises(<ref>WebAPIException</ref>);</webidl>
25315         <descriptive>
25316             <brief>
25317  Finds contents that satisfy the conditions set by a filter.
25318             </brief>
25319            <description>
25320             <p>
25321 This method allows searching based on a supplied filter. For more detail on AbstractFilter, see
25322 <a href="../../org.tizen.web.device.apireference/tizen/tizen.html#::Tizen::AbstractFilter">Tizen</a> module. The filter allows precise searching such
25323 as &quot;return all songs by artist U2, ordered by name&quot;.
25324             </p>
25325             <p>
25326 The errorCallback can be launched with these error types:
25327             </p>
25328             <ul>
25329               <li>
25330 InvalidValuesError: If any of the input parameters contain an invalid value.              </li>
25331               <li>
25332 UnknownError: In any other error case.              </li>
25333             </ul>
25334            </description>
25335             <version>
25336  2.0
25337             </version>
25338             <privilegelevel>
25339  public
25340             </privilegelevel>
25341             <privilege>
25342  http://tizen.org/privilege/content.read
25343             </privilege>
25344             <Code> // The following example retrieves all songs from the album &quot;The Joshua Tree&quot;, by artist &quot;U2&quot;, ordered by the track number.
25345  var count = 100;
25346  var offset = 0;
25347  var sortMode = new tizen.SortMode(&quot;trackNumber&quot;, &quot;ASC&quot;);
25348  var artistFilter = new tizen.AttributeFilter(&quot;artists&quot;, &quot;EXACTLY&quot;, &quot;U2&quot;);
25349  var albumFilter = new tizen.AttributeFilter(&quot;album&quot;, &quot;EXACTLY&quot;, &quot;The Joshua Tree&quot;);
25350  var filter = new tizen.CompositeFilter(&quot;INTERSECTION&quot;, [albumFilter, artistFilter]);
25351  
25352  function errorCB(err) {
25353      console.log( 'The following error occurred: ' +  err.name);
25354  }
25355
25356  function printContent(content, index, contents) {
25357      console.log('Track: ' + content.trackNumber + ' Title: ' + content.title + 'Duration: ' + content.duration + 'URL: ' + content.contentURI + 'MIME: ' + content.mimeType);
25358  }
25359
25360  function findCB(contents) {
25361      console.log('The Joshua Tree by U2:');
25362      contents.forEach(printContent);
25363      // Increase the offset as much as the count and then find content again.
25364      if (contents.length == count) {
25365          offset += count;
25366          tizen.content.find(findCB, errorCB, null, filter, sortMode, count, offset);
25367      }
25368  }
25369
25370  tizen.content.find(findCB, errorCB, null, filter, sortMode, count, offset);
25371
25372  </Code>
25373         </descriptive>
25374         <Type type="void"/>
25375         <ArgumentList>
25376           <Argument name="successCallback">
25377             <descriptive>
25378                 <description><p>
25379  Function called when a content have been retrieved.
25380                 </p></description>
25381             </descriptive>
25382             <Type name="ContentArraySuccessCallback"/>
25383           </Argument>
25384           <Argument optional="optional" name="errorCallback">
25385             <descriptive>
25386                 <description><p>
25387  Function called when an error has occurred.
25388                 </p></description>
25389             </descriptive>
25390             <Type name="ErrorCallback" nullable="nullable"/>
25391           </Argument>
25392           <Argument optional="optional" name="directoryId">
25393             <descriptive>
25394                 <description><p>
25395  Directory ID that is use to select content to retrieve in a specified directory.
25396                 </p></description>
25397             </descriptive>
25398             <Type name="ContentDirectoryId" nullable="nullable"/>
25399           </Argument>
25400           <Argument optional="optional" name="filter">
25401             <descriptive>
25402                 <description><p>
25403  Filter that is used to select content to retrieve.
25404                 </p></description>
25405             </descriptive>
25406             <Type name="AbstractFilter" nullable="nullable"/>
25407           </Argument>
25408           <Argument optional="optional" name="sortMode">
25409             <descriptive>
25410                 <description><p>
25411  Used to determine the sort order in which the content are returned.
25412                 </p></description>
25413             </descriptive>
25414             <Type name="SortMode" nullable="nullable"/>
25415           </Argument>
25416           <Argument optional="optional" name="count">
25417             <descriptive>
25418                 <description><p>
25419  Maximum amount of content to return.
25420                 </p></description>
25421             </descriptive>
25422             <Type type="unsigned long" nullable="nullable"/>
25423           </Argument>
25424           <Argument optional="optional" name="offset">
25425             <descriptive>
25426                 <description><p>
25427  Offset of the result set.
25428                 </p></description>
25429             </descriptive>
25430             <Type type="unsigned long" nullable="nullable"/>
25431           </Argument>
25432         </ArgumentList>
25433         <Raises>
25434           <RaiseException name="WebAPIException">
25435             <descriptive>
25436                 <description><p>
25437  with error type TypeMismatchError, if the input parameter
25438 is not compatible with the expected type for that parameter.
25439                 </p></description>
25440                 <description><p>
25441  with error type SecurityError, if the application does not have the privilege to call this method.
25442                 </p></description>
25443                 <description><p>
25444  with error type NotSupportedError, if this feature is not supported.
25445                 </p></description>
25446             </descriptive>
25447           </RaiseException>
25448         </Raises>
25449       </Operation>
25450       <Operation name="scanFile" id="::Content::ContentManager::scanFile">
25451         <webidl>    void scanFile(DOMString contentURI,
25452                   optional <ref>ContentScanSuccessCallback</ref>? successCallback,
25453                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
25454         <descriptive>
25455             <brief>
25456  Scan a file to create or update a content in the content database.
25457             </brief>
25458            <description>
25459             <p>
25460 When an application creates or updates a content, this method allows scan it 
25461 to insert or update the content in the content database.
25462             </p>
25463            </description>
25464             <version>
25465  2.1
25466             </version>
25467             <privilegelevel>
25468  public
25469             </privilegelevel>
25470             <privilege>
25471  http://tizen.org/privilege/content.write
25472             </privilege>
25473             <Code> // The following example scan 'tizen.jpg' in media directory
25474
25475  function errorCB(err) {
25476      console.log( 'The following error occurred: ' +  err.name);
25477  }
25478
25479  function successCB(path) {
25480      console.log('scanning is completed');
25481  }
25482
25483  var path = &quot;file:///opt/usr/media/tizen.jpg&quot;;
25484  tizen.content.scanFile(path, successCB, errorCB);
25485
25486  </Code>
25487         </descriptive>
25488         <Type type="void"/>
25489         <ArgumentList>
25490           <Argument name="contentURI">
25491             <descriptive>
25492                 <description><p>
25493  The URI of content to scan.
25494                 </p></description>
25495             </descriptive>
25496             <Type type="DOMString"/>
25497           </Argument>
25498           <Argument optional="optional" name="successCallback">
25499             <descriptive>
25500                 <description><p>
25501  Function called when scanning has been completed.
25502                 </p></description>
25503             </descriptive>
25504             <Type name="ContentScanSuccessCallback" nullable="nullable"/>
25505           </Argument>
25506           <Argument optional="optional" name="errorCallback">
25507             <descriptive>
25508                 <description><p>
25509  Function called when an error has occurred.
25510                 </p></description>
25511             </descriptive>
25512             <Type name="ErrorCallback" nullable="nullable"/>
25513           </Argument>
25514         </ArgumentList>
25515         <Raises>
25516           <RaiseException name="WebAPIException">
25517             <descriptive>
25518                 <description><p>
25519  with error type TypeMismatchError, if any input parameter
25520 is not compatible with the expected type for that parameter.
25521                 </p></description>
25522                 <description><p>
25523  with error type InvalidValuesError, if any of the input parameters
25524 contain an invalid value.
25525                 </p></description>
25526                 <description><p>
25527  with error type SecurityError, if the application does not have the privilege to call this method.
25528                 </p></description>
25529                 <description><p>
25530  with error type UnknownError in any other error case.
25531                 </p></description>
25532             </descriptive>
25533           </RaiseException>
25534         </Raises>
25535       </Operation>
25536       <Operation name="setChangeListener" id="::Content::ContentManager::setChangeListener">
25537         <webidl>    void setChangeListener(<ref>ContentChangeCallback</ref> changeCallback) raises(<ref>WebAPIException</ref>);</webidl>
25538         <descriptive>
25539             <brief>
25540  Sets a listener to receive notifications about content changes.
25541             </brief>
25542             <version>
25543  2.1
25544             </version>
25545             <privilegelevel>
25546  public
25547             </privilegelevel>
25548             <privilege>
25549  http://tizen.org/privilege/content.read
25550             </privilege>
25551             <Code> var listener= {
25552     oncontentadded: function(content) {
25553         console.log(content.contentURI + ' content is added');
25554     },
25555     oncontentupdated: function(content) {
25556         console.log(content.contentURI + ' content is updated');
25557     },
25558     oncontentremoved: function(id) {
25559         console.log(id + ' is removed');
25560     }
25561  };
25562
25563  // Registers to be notified when the content changes
25564  tizen.content.setChangeListener(listener);
25565
25566  </Code>
25567         </descriptive>
25568         <Type type="void"/>
25569         <ArgumentList>
25570           <Argument name="changeCallback">
25571             <descriptive>
25572                 <description><p>
25573  A callback to be invoked for receiving content change notification.
25574                 </p></description>
25575             </descriptive>
25576             <Type name="ContentChangeCallback"/>
25577           </Argument>
25578         </ArgumentList>
25579         <Raises>
25580           <RaiseException name="WebAPIException">
25581             <descriptive>
25582                 <description><p>
25583  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
25584                 </p></description>
25585                 <description><p>
25586  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
25587                 </p></description>
25588                 <description><p>
25589  with error type SecurityError, if the application does not have the privilege to call this method.
25590                 </p></description>
25591                 <description><p>
25592  with error type UnknownError, if any other error occurs.
25593                 </p></description>
25594             </descriptive>
25595           </RaiseException>
25596         </Raises>
25597       </Operation>
25598       <Operation name="unsetChangeListener" id="::Content::ContentManager::unsetChangeListener">
25599         <webidl>    void unsetChangeListener() raises(<ref>WebAPIException</ref>);</webidl>
25600         <descriptive>
25601             <brief>
25602  Unsets the listener to unsubscribes from receiving notification for any content changes.
25603             </brief>
25604             <version>
25605  2.1
25606             </version>
25607             <privilegelevel>
25608  public
25609             </privilegelevel>
25610             <privilege>
25611  http://tizen.org/privilege/content.read
25612             </privilege>
25613             <Code> tizen.content.unsetChangeListener();
25614
25615  </Code>
25616         </descriptive>
25617         <Type type="void"/>
25618         <ArgumentList/>
25619         <Raises>
25620           <RaiseException name="WebAPIException">
25621             <descriptive>
25622                 <description><p>
25623  with error type SecurityError, if the application does not have the privilege to call this method.
25624                 </p></description>
25625                 <description><p>
25626  with error type UnknownError if any other error occurs.
25627                 </p></description>
25628             </descriptive>
25629           </RaiseException>
25630         </Raises>
25631       </Operation>
25632     </Interface>
25633     <Interface name="ContentArraySuccessCallback" id="::Content::ContentArraySuccessCallback">
25634       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface ContentArraySuccessCallback {
25635     void onsuccess(<ref>Content</ref>[] contents);
25636   };</webidl>
25637       <descriptive>
25638           <brief>
25639  The callback function used to return a list of content objects.
25640           </brief>
25641           <version>
25642  2.0
25643           </version>
25644       </descriptive>
25645       <ExtendedAttributeList>
25646         <ExtendedAttribute name="Callback" value="FunctionOnly">
25647           <webidl>Callback</webidl>
25648         </ExtendedAttribute>
25649         <ExtendedAttribute name="NoInterfaceObject">
25650           <webidl> NoInterfaceObject</webidl>
25651         </ExtendedAttribute>
25652       </ExtendedAttributeList>
25653       <Operation name="onsuccess" id="::Content::ContentArraySuccessCallback::onsuccess">
25654         <webidl>    void onsuccess(<ref>Content</ref>[] contents);</webidl>
25655         <descriptive>
25656             <brief>
25657  Called when the list of content is retrieved successfully.
25658             </brief>
25659             <version>
25660  2.0
25661             </version>
25662         </descriptive>
25663         <Type type="void"/>
25664         <ArgumentList>
25665           <Argument name="contents">
25666             <descriptive>
25667                 <description><p>
25668  The array of <em>Content </em>objects.
25669                 </p></description>
25670             </descriptive>
25671             <Type type="array">
25672               <Type name="Content"/>
25673             </Type>
25674           </Argument>
25675         </ArgumentList>
25676       </Operation>
25677     </Interface>
25678     <Interface name="ContentDirectoryArraySuccessCallback" id="::Content::ContentDirectoryArraySuccessCallback">
25679       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface ContentDirectoryArraySuccessCallback {
25680     void onsuccess(<ref>ContentDirectory</ref>[] directories);
25681   };</webidl>
25682       <descriptive>
25683           <brief>
25684  The callback function used to return a list of ContentDirectory objects.
25685           </brief>
25686           <version>
25687  2.0
25688           </version>
25689       </descriptive>
25690       <ExtendedAttributeList>
25691         <ExtendedAttribute name="Callback" value="FunctionOnly">
25692           <webidl>Callback</webidl>
25693         </ExtendedAttribute>
25694         <ExtendedAttribute name="NoInterfaceObject">
25695           <webidl> NoInterfaceObject</webidl>
25696         </ExtendedAttribute>
25697       </ExtendedAttributeList>
25698       <Operation name="onsuccess" id="::Content::ContentDirectoryArraySuccessCallback::onsuccess">
25699         <webidl>    void onsuccess(<ref>ContentDirectory</ref>[] directories);</webidl>
25700         <descriptive>
25701             <brief>
25702  Called when the list of directory is retrieved successfully.
25703             </brief>
25704             <version>
25705  2.0
25706             </version>
25707         </descriptive>
25708         <Type type="void"/>
25709         <ArgumentList>
25710           <Argument name="directories">
25711             <descriptive>
25712                 <description><p>
25713  The array of <em>ContentDirectory </em>objects.
25714                 </p></description>
25715             </descriptive>
25716             <Type type="array">
25717               <Type name="ContentDirectory"/>
25718             </Type>
25719           </Argument>
25720         </ArgumentList>
25721       </Operation>
25722     </Interface>
25723     <Interface name="ContentScanSuccessCallback" id="::Content::ContentScanSuccessCallback">
25724       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface ContentScanSuccessCallback {
25725     void onsuccess(DOMString contentURI);
25726   };</webidl>
25727       <descriptive>
25728           <brief>
25729  The callback function used to return a content to scan has been completed.
25730           </brief>
25731           <version>
25732  2.1
25733           </version>
25734       </descriptive>
25735       <ExtendedAttributeList>
25736         <ExtendedAttribute name="Callback" value="FunctionOnly">
25737           <webidl>Callback</webidl>
25738         </ExtendedAttribute>
25739         <ExtendedAttribute name="NoInterfaceObject">
25740           <webidl> NoInterfaceObject</webidl>
25741         </ExtendedAttribute>
25742       </ExtendedAttributeList>
25743       <Operation name="onsuccess" id="::Content::ContentScanSuccessCallback::onsuccess">
25744         <webidl>    void onsuccess(DOMString contentURI);</webidl>
25745         <descriptive>
25746             <brief>
25747  Called when the scanning has been completed.
25748             </brief>
25749             <version>
25750  2.1
25751             </version>
25752         </descriptive>
25753         <Type type="void"/>
25754         <ArgumentList>
25755           <Argument name="contentURI">
25756             <descriptive>
25757                 <description><p>
25758  The URI of <em>Content </em>objects.
25759                 </p></description>
25760             </descriptive>
25761             <Type type="DOMString"/>
25762           </Argument>
25763         </ArgumentList>
25764       </Operation>
25765     </Interface>
25766     <Interface name="ContentChangeCallback" id="::Content::ContentChangeCallback">
25767       <webidl>  [Callback, NoInterfaceObject] interface ContentChangeCallback {
25768     void oncontentadded(<ref>Content</ref> content);
25769
25770     void oncontentupdated(<ref>Content</ref> content);
25771
25772     void oncontentremoved(<ref>ContentId</ref> id);
25773   };</webidl>
25774       <descriptive>
25775           <brief>
25776  This interface specifies a set of methods that are invoked every time a content change occurs.
25777           </brief>
25778           <version>
25779  2.1
25780           </version>
25781       </descriptive>
25782       <ExtendedAttributeList>
25783         <ExtendedAttribute name="Callback">
25784           <webidl>Callback</webidl>
25785         </ExtendedAttribute>
25786         <ExtendedAttribute name="NoInterfaceObject">
25787           <webidl> NoInterfaceObject</webidl>
25788         </ExtendedAttribute>
25789       </ExtendedAttributeList>
25790       <Operation name="oncontentadded" id="::Content::ContentChangeCallback::oncontentadded">
25791         <webidl>    void oncontentadded(<ref>Content</ref> content);</webidl>
25792         <descriptive>
25793             <brief>
25794  Called when content is added.
25795             </brief>
25796             <version>
25797  2.1
25798             </version>
25799         </descriptive>
25800         <Type type="void"/>
25801         <ArgumentList>
25802           <Argument name="content">
25803             <descriptive>
25804                 <description><p>
25805  The content to add.
25806                 </p></description>
25807             </descriptive>
25808             <Type name="Content"/>
25809           </Argument>
25810         </ArgumentList>
25811       </Operation>
25812       <Operation name="oncontentupdated" id="::Content::ContentChangeCallback::oncontentupdated">
25813         <webidl>    void oncontentupdated(<ref>Content</ref> content);</webidl>
25814         <descriptive>
25815             <brief>
25816  Called when content is updated.
25817             </brief>
25818             <version>
25819  2.1
25820             </version>
25821         </descriptive>
25822         <Type type="void"/>
25823         <ArgumentList>
25824           <Argument name="content">
25825             <descriptive>
25826                 <description><p>
25827  The content to update.
25828                 </p></description>
25829             </descriptive>
25830             <Type name="Content"/>
25831           </Argument>
25832         </ArgumentList>
25833       </Operation>
25834       <Operation name="oncontentremoved" id="::Content::ContentChangeCallback::oncontentremoved">
25835         <webidl>    void oncontentremoved(<ref>ContentId</ref> id);</webidl>
25836         <descriptive>
25837             <brief>
25838  Called when content is removed.
25839             </brief>
25840             <version>
25841  2.1
25842             </version>
25843         </descriptive>
25844         <Type type="void"/>
25845         <ArgumentList>
25846           <Argument name="id">
25847             <descriptive>
25848                 <description><p>
25849  The id of content to remove.
25850                 </p></description>
25851             </descriptive>
25852             <Type name="ContentId"/>
25853           </Argument>
25854         </ArgumentList>
25855       </Operation>
25856     </Interface>
25857     <Interface name="ContentDirectory" id="::Content::ContentDirectory">
25858       <webidl>  [NoInterfaceObject] interface ContentDirectory {
25859
25860     readonly attribute <ref>ContentDirectoryId</ref> id;
25861
25862     readonly attribute DOMString directoryURI;
25863
25864     readonly attribute DOMString title;
25865
25866     readonly attribute <ref>ContentDirectoryStorageType</ref> storageType;
25867
25868     readonly attribute Date? modifiedDate;
25869
25870    };</webidl>
25871       <descriptive>
25872           <brief>
25873  This interface that provides access to properties of a content directory.
25874           </brief>
25875           <version>
25876  2.0
25877           </version>
25878       </descriptive>
25879       <ExtendedAttributeList>
25880         <ExtendedAttribute name="NoInterfaceObject">
25881           <webidl>NoInterfaceObject</webidl>
25882         </ExtendedAttribute>
25883       </ExtendedAttributeList>
25884       <Attribute readonly="readonly" name="id" id="::Content::ContentDirectory::id">
25885         <webidl>    readonly attribute <ref>ContentDirectoryId</ref> id;</webidl>
25886         <descriptive>
25887             <brief>
25888  The opaque content directory identifier.
25889             </brief>
25890             <version>
25891  2.0
25892             </version>
25893         </descriptive>
25894         <Type name="ContentDirectoryId"/>
25895       </Attribute>
25896       <Attribute readonly="readonly" name="directoryURI" id="::Content::ContentDirectory::directoryURI">
25897         <webidl>    readonly attribute DOMString directoryURI;</webidl>
25898         <descriptive>
25899             <brief>
25900  The directory path on the device.
25901             </brief>
25902             <version>
25903  2.0
25904             </version>
25905         </descriptive>
25906         <Type type="DOMString"/>
25907       </Attribute>
25908       <Attribute readonly="readonly" name="title" id="::Content::ContentDirectory::title">
25909         <webidl>    readonly attribute DOMString title;</webidl>
25910         <descriptive>
25911             <brief>
25912  The directory name.
25913             </brief>
25914             <version>
25915  2.0
25916             </version>
25917         </descriptive>
25918         <Type type="DOMString"/>
25919       </Attribute>
25920       <Attribute readonly="readonly" name="storageType" id="::Content::ContentDirectory::storageType">
25921         <webidl>    readonly attribute <ref>ContentDirectoryStorageType</ref> storageType;</webidl>
25922         <descriptive>
25923             <brief>
25924  The type of a device storage.
25925             </brief>
25926             <version>
25927  2.0
25928             </version>
25929         </descriptive>
25930         <Type name="ContentDirectoryStorageType"/>
25931       </Attribute>
25932       <Attribute readonly="readonly" name="modifiedDate" id="::Content::ContentDirectory::modifiedDate">
25933         <webidl>    readonly attribute Date? modifiedDate;</webidl>
25934         <descriptive>
25935             <brief>
25936  The last modified date for a directory.
25937             </brief>
25938             <version>
25939  2.0
25940             </version>
25941         </descriptive>
25942         <Type type="Date" nullable="nullable"/>
25943       </Attribute>
25944     </Interface>
25945     <Interface name="Content" id="::Content::Content">
25946       <webidl>  [NoInterfaceObject] interface Content {
25947
25948     readonly attribute DOMString[] editableAttributes;
25949
25950     readonly attribute <ref>ContentId</ref> id;
25951
25952     attribute DOMString name;
25953
25954     readonly attribute <ref>ContentType</ref> type;
25955
25956     readonly attribute DOMString mimeType;
25957
25958     readonly attribute DOMString title;
25959
25960     readonly attribute DOMString contentURI;
25961
25962     readonly attribute DOMString[]? thumbnailURIs;
25963
25964     readonly attribute Date? releaseDate;
25965
25966     readonly attribute Date? modifiedDate;
25967
25968     readonly attribute unsigned long size;
25969
25970     attribute DOMString? description;
25971
25972     attribute unsigned long rating;
25973   };</webidl>
25974       <descriptive>
25975           <brief>
25976  This interface provides access to properties of a content.
25977           </brief>
25978           <version>
25979  2.0
25980           </version>
25981       </descriptive>
25982       <ExtendedAttributeList>
25983         <ExtendedAttribute name="NoInterfaceObject">
25984           <webidl>NoInterfaceObject</webidl>
25985         </ExtendedAttribute>
25986       </ExtendedAttributeList>
25987       <Attribute readonly="readonly" name="editableAttributes" id="::Content::Content::editableAttributes">
25988         <webidl>    readonly attribute DOMString[] editableAttributes;</webidl>
25989         <descriptive>
25990             <brief>
25991  The list of attributes that can be editable to the local backend using update or updateBatch method.
25992             </brief>
25993             <version>
25994  2.0
25995             </version>
25996         </descriptive>
25997         <Type type="array">
25998           <Type type="DOMString"/>
25999         </Type>
26000       </Attribute>
26001       <Attribute readonly="readonly" name="id" id="::Content::Content::id">
26002         <webidl>    readonly attribute <ref>ContentId</ref> id;</webidl>
26003         <descriptive>
26004             <brief>
26005  The opaque content identifier.
26006             </brief>
26007             <version>
26008  2.0
26009             </version>
26010         </descriptive>
26011         <Type name="ContentId"/>
26012       </Attribute>
26013       <Attribute name="name" id="::Content::Content::name">
26014         <webidl>    attribute DOMString name;</webidl>
26015         <descriptive>
26016             <brief>
26017  The content name. The initial value is the file name of the content.
26018             </brief>
26019             <version>
26020  2.1
26021             </version>
26022         </descriptive>
26023         <Type type="DOMString"/>
26024       </Attribute>
26025       <Attribute readonly="readonly" name="type" id="::Content::Content::type">
26026         <webidl>    readonly attribute <ref>ContentType</ref> type;</webidl>
26027         <descriptive>
26028             <brief>
26029  The content type.
26030             </brief>
26031             <version>
26032  2.0
26033             </version>
26034         </descriptive>
26035         <Type name="ContentType"/>
26036       </Attribute>
26037       <Attribute readonly="readonly" name="mimeType" id="::Content::Content::mimeType">
26038         <webidl>    readonly attribute DOMString mimeType;</webidl>
26039         <descriptive>
26040             <brief>
26041  The content MIME type.
26042             </brief>
26043             <version>
26044  2.0
26045             </version>
26046         </descriptive>
26047         <Type type="DOMString"/>
26048       </Attribute>
26049       <Attribute readonly="readonly" name="title" id="::Content::Content::title">
26050         <webidl>    readonly attribute DOMString title;</webidl>
26051         <descriptive>
26052             <brief>
26053  The content title.
26054             </brief>
26055             <version>
26056  2.0
26057             </version>
26058         </descriptive>
26059         <Type type="DOMString"/>
26060       </Attribute>
26061       <Attribute readonly="readonly" name="contentURI" id="::Content::Content::contentURI">
26062         <webidl>    readonly attribute DOMString contentURI;</webidl>
26063         <descriptive>
26064             <brief>
26065  The URI to access the content.
26066             </brief>
26067             <version>
26068  2.0
26069             </version>
26070         </descriptive>
26071         <Type type="DOMString"/>
26072       </Attribute>
26073       <Attribute readonly="readonly" name="thumbnailURIs" id="::Content::Content::thumbnailURIs">
26074         <webidl>    readonly attribute DOMString[]? thumbnailURIs;</webidl>
26075         <descriptive>
26076             <brief>
26077  The array of content thumbnails URIs.
26078             </brief>
26079             <version>
26080  2.0
26081             </version>
26082         </descriptive>
26083         <Type type="array" nullable="nullable">
26084           <Type type="DOMString"/>
26085         </Type>
26086       </Attribute>
26087       <Attribute readonly="readonly" name="releaseDate" id="::Content::Content::releaseDate">
26088         <webidl>    readonly attribute Date? releaseDate;</webidl>
26089         <descriptive>
26090             <brief>
26091  The date when a content has been released to the public. If only the release year is known, then the month and date are set to January and 1st respectively.
26092             </brief>
26093             <version>
26094  2.0
26095             </version>
26096         </descriptive>
26097         <Type type="Date" nullable="nullable"/>
26098       </Attribute>
26099       <Attribute readonly="readonly" name="modifiedDate" id="::Content::Content::modifiedDate">
26100         <webidl>    readonly attribute Date? modifiedDate;</webidl>
26101         <descriptive>
26102             <brief>
26103  The last modified date for a content.
26104             </brief>
26105             <version>
26106  2.0
26107             </version>
26108         </descriptive>
26109         <Type type="Date" nullable="nullable"/>
26110       </Attribute>
26111       <Attribute readonly="readonly" name="size" id="::Content::Content::size">
26112         <webidl>    readonly attribute unsigned long size;</webidl>
26113         <descriptive>
26114             <brief>
26115  The file size of the content in bytes.
26116             </brief>
26117             <version>
26118  2.0
26119             </version>
26120         </descriptive>
26121         <Type type="unsigned long"/>
26122       </Attribute>
26123       <Attribute name="description" id="::Content::Content::description">
26124         <webidl>    attribute DOMString? description;</webidl>
26125         <descriptive>
26126             <brief>
26127  The content description.
26128             </brief>
26129             <version>
26130  2.0
26131             </version>
26132         </descriptive>
26133         <Type type="DOMString" nullable="nullable"/>
26134       </Attribute>
26135       <Attribute name="rating" id="::Content::Content::rating">
26136         <webidl>    attribute unsigned long rating;</webidl>
26137         <descriptive>
26138             <brief>
26139  The content rating and this value can vary from <var>0 </var>to <var>10</var>.
26140             </brief>
26141             <version>
26142  2.0
26143             </version>
26144         </descriptive>
26145         <Type type="unsigned long"/>
26146       </Attribute>
26147     </Interface>
26148     <Interface name="VideoContent" id="::Content::VideoContent">
26149       <webidl>  [NoInterfaceObject] interface VideoContent : <ref>Content</ref> {
26150
26151     attribute <ref>SimpleCoordinates</ref>? geolocation;
26152
26153     readonly attribute DOMString? album;
26154
26155     readonly attribute DOMString[]? artists;
26156
26157     readonly attribute unsigned long duration;
26158
26159     readonly attribute unsigned long width;
26160
26161     readonly attribute unsigned long height;
26162
26163   };</webidl>
26164       <descriptive>
26165           <brief>
26166  This interface extends a basic <em>Content </em>object with video-specific attributes.
26167           </brief>
26168           <version>
26169  2.0
26170           </version>
26171       </descriptive>
26172       <ExtendedAttributeList>
26173         <ExtendedAttribute name="NoInterfaceObject">
26174           <webidl>NoInterfaceObject</webidl>
26175         </ExtendedAttribute>
26176       </ExtendedAttributeList>
26177       <InterfaceInheritance>
26178         <Name name="Content"/>
26179       </InterfaceInheritance>
26180       <Attribute name="geolocation" id="::Content::VideoContent::geolocation">
26181         <webidl>    attribute <ref>SimpleCoordinates</ref>? geolocation;</webidl>
26182         <descriptive>
26183             <brief>
26184  The geographical location where the video was made.
26185             </brief>
26186             <version>
26187  2.0
26188             </version>
26189         </descriptive>
26190         <Type name="SimpleCoordinates" nullable="nullable"/>
26191       </Attribute>
26192       <Attribute readonly="readonly" name="album" id="::Content::VideoContent::album">
26193         <webidl>    readonly attribute DOMString? album;</webidl>
26194         <descriptive>
26195             <brief>
26196  The album name to which the video belongs.
26197             </brief>
26198             <version>
26199  2.0
26200             </version>
26201         </descriptive>
26202         <Type type="DOMString" nullable="nullable"/>
26203       </Attribute>
26204       <Attribute readonly="readonly" name="artists" id="::Content::VideoContent::artists">
26205         <webidl>    readonly attribute DOMString[]? artists;</webidl>
26206         <descriptive>
26207             <brief>
26208  The list of artists who created the video.
26209             </brief>
26210             <version>
26211  2.0
26212             </version>
26213         </descriptive>
26214         <Type type="array" nullable="nullable">
26215           <Type type="DOMString"/>
26216         </Type>
26217       </Attribute>
26218       <Attribute readonly="readonly" name="duration" id="::Content::VideoContent::duration">
26219         <webidl>    readonly attribute unsigned long duration;</webidl>
26220         <descriptive>
26221             <brief>
26222  The video duration in milliseconds.
26223             </brief>
26224             <version>
26225  2.0
26226             </version>
26227         </descriptive>
26228         <Type type="unsigned long"/>
26229       </Attribute>
26230       <Attribute readonly="readonly" name="width" id="::Content::VideoContent::width">
26231         <webidl>    readonly attribute unsigned long width;</webidl>
26232         <descriptive>
26233             <brief>
26234  The width of a video in pixels.
26235             </brief>
26236             <version>
26237  2.0
26238             </version>
26239         </descriptive>
26240         <Type type="unsigned long"/>
26241       </Attribute>
26242       <Attribute readonly="readonly" name="height" id="::Content::VideoContent::height">
26243         <webidl>    readonly attribute unsigned long height;</webidl>
26244         <descriptive>
26245             <brief>
26246  The height of the video in pixels.
26247             </brief>
26248             <version>
26249  2.0
26250             </version>
26251         </descriptive>
26252         <Type type="unsigned long"/>
26253       </Attribute>
26254     </Interface>
26255     <Interface name="AudioContentLyrics" id="::Content::AudioContentLyrics">
26256       <webidl>  [NoInterfaceObject] interface AudioContentLyrics {
26257
26258     readonly attribute <ref>AudioContentLyricsType</ref> type;
26259
26260     readonly attribute unsigned long[] timestamps;
26261
26262     readonly attribute DOMString[] texts;
26263   };</webidl>
26264       <descriptive>
26265           <brief>
26266  This interface provides lyrics for music.
26267           </brief>
26268           <version>
26269  2.0
26270           </version>
26271       </descriptive>
26272       <ExtendedAttributeList>
26273         <ExtendedAttribute name="NoInterfaceObject">
26274           <webidl>NoInterfaceObject</webidl>
26275         </ExtendedAttribute>
26276       </ExtendedAttributeList>
26277       <Attribute readonly="readonly" name="type" id="::Content::AudioContentLyrics::type">
26278         <webidl>    readonly attribute <ref>AudioContentLyricsType</ref> type;</webidl>
26279         <descriptive>
26280             <brief>
26281  The type of lyrics, that is, whether they are synchronized with the music or not.
26282             </brief>
26283             <version>
26284  2.0
26285             </version>
26286         </descriptive>
26287         <Type name="AudioContentLyricsType"/>
26288       </Attribute>
26289       <Attribute readonly="readonly" name="timestamps" id="::Content::AudioContentLyrics::timestamps">
26290         <webidl>    readonly attribute unsigned long[] timestamps;</webidl>
26291         <descriptive>
26292             <brief>
26293  The array of timestamps in milliseconds for lyrics.
26294             </brief>
26295            <description>
26296             <p>
26297 If the lyrics are not synchronized (if there is no time information for the lyrics) the array is undefined.
26298             </p>
26299            </description>
26300             <version>
26301  2.0
26302             </version>
26303         </descriptive>
26304         <Type type="array">
26305           <Type type="unsigned long"/>
26306         </Type>
26307       </Attribute>
26308       <Attribute readonly="readonly" name="texts" id="::Content::AudioContentLyrics::texts">
26309         <webidl>    readonly attribute DOMString[] texts;</webidl>
26310         <descriptive>
26311             <brief>
26312  The array of lyric snippets.
26313             </brief>
26314            <description>
26315             <p>
26316 If the lyrics are not synchronized, the array has only one member with full lyrics.
26317             </p>
26318            </description>
26319             <version>
26320  2.0
26321             </version>
26322         </descriptive>
26323         <Type type="array">
26324           <Type type="DOMString"/>
26325         </Type>
26326       </Attribute>
26327     </Interface>
26328     <Interface name="AudioContent" id="::Content::AudioContent">
26329       <webidl>  [NoInterfaceObject] interface AudioContent : <ref>Content</ref> {
26330
26331     readonly attribute DOMString? album;
26332
26333     readonly attribute DOMString[]? genres;
26334
26335     readonly attribute DOMString[]? artists;
26336
26337     readonly attribute DOMString[]? composers;
26338
26339     readonly attribute <ref>AudioContentLyrics</ref>? lyrics;
26340
26341     readonly attribute DOMString? copyright;
26342
26343     readonly attribute unsigned long bitrate;
26344
26345     readonly attribute unsigned short? trackNumber;
26346
26347     readonly attribute unsigned long duration;
26348
26349   };</webidl>
26350       <descriptive>
26351           <brief>
26352  This interface extends a basic <em>Content </em>object with audio-specific attributes.
26353           </brief>
26354           <version>
26355  2.0
26356           </version>
26357       </descriptive>
26358       <ExtendedAttributeList>
26359         <ExtendedAttribute name="NoInterfaceObject">
26360           <webidl>NoInterfaceObject</webidl>
26361         </ExtendedAttribute>
26362       </ExtendedAttributeList>
26363       <InterfaceInheritance>
26364         <Name name="Content"/>
26365       </InterfaceInheritance>
26366       <Attribute readonly="readonly" name="album" id="::Content::AudioContent::album">
26367         <webidl>    readonly attribute DOMString? album;</webidl>
26368         <descriptive>
26369             <brief>
26370  The album name to which the audio belongs.
26371             </brief>
26372             <version>
26373  2.0
26374             </version>
26375         </descriptive>
26376         <Type type="DOMString" nullable="nullable"/>
26377       </Attribute>
26378       <Attribute readonly="readonly" name="genres" id="::Content::AudioContent::genres">
26379         <webidl>    readonly attribute DOMString[]? genres;</webidl>
26380         <descriptive>
26381             <brief>
26382  The list of genres to which the audio belongs.
26383             </brief>
26384             <version>
26385  2.0
26386             </version>
26387         </descriptive>
26388         <Type type="array" nullable="nullable">
26389           <Type type="DOMString"/>
26390         </Type>
26391       </Attribute>
26392       <Attribute readonly="readonly" name="artists" id="::Content::AudioContent::artists">
26393         <webidl>    readonly attribute DOMString[]? artists;</webidl>
26394         <descriptive>
26395             <brief>
26396  The list of artists who created the audio.
26397             </brief>
26398             <version>
26399  2.0
26400             </version>
26401         </descriptive>
26402         <Type type="array" nullable="nullable">
26403           <Type type="DOMString"/>
26404         </Type>
26405       </Attribute>
26406       <Attribute readonly="readonly" name="composers" id="::Content::AudioContent::composers">
26407         <webidl>    readonly attribute DOMString[]? composers;</webidl>
26408         <descriptive>
26409             <brief>
26410  The list of composers for the music.
26411             </brief>
26412             <version>
26413  2.0
26414             </version>
26415         </descriptive>
26416         <Type type="array" nullable="nullable">
26417           <Type type="DOMString"/>
26418         </Type>
26419       </Attribute>
26420       <Attribute readonly="readonly" name="lyrics" id="::Content::AudioContent::lyrics">
26421         <webidl>    readonly attribute <ref>AudioContentLyrics</ref>? lyrics;</webidl>
26422         <descriptive>
26423             <brief>
26424  The lyrics of a song in an audio file.
26425             </brief>
26426             <version>
26427  2.0
26428             </version>
26429         </descriptive>
26430         <Type name="AudioContentLyrics" nullable="nullable"/>
26431       </Attribute>
26432       <Attribute readonly="readonly" name="copyright" id="::Content::AudioContent::copyright">
26433         <webidl>    readonly attribute DOMString? copyright;</webidl>
26434         <descriptive>
26435             <brief>
26436  The copyright information.
26437             </brief>
26438             <version>
26439  2.0
26440             </version>
26441         </descriptive>
26442         <Type type="DOMString" nullable="nullable"/>
26443       </Attribute>
26444       <Attribute readonly="readonly" name="bitrate" id="::Content::AudioContent::bitrate">
26445         <webidl>    readonly attribute unsigned long bitrate;</webidl>
26446         <descriptive>
26447             <brief>
26448  The audio bitrate in bits per second. By default, this value is 0.
26449             </brief>
26450             <version>
26451  2.0
26452             </version>
26453         </descriptive>
26454         <Type type="unsigned long"/>
26455       </Attribute>
26456       <Attribute readonly="readonly" name="trackNumber" id="::Content::AudioContent::trackNumber">
26457         <webidl>    readonly attribute unsigned short? trackNumber;</webidl>
26458         <descriptive>
26459             <brief>
26460  The track number if the audio belongs to an album.
26461             </brief>
26462             <version>
26463  2.0
26464             </version>
26465         </descriptive>
26466         <Type type="unsigned short" nullable="nullable"/>
26467       </Attribute>
26468       <Attribute readonly="readonly" name="duration" id="::Content::AudioContent::duration">
26469         <webidl>    readonly attribute unsigned long duration;</webidl>
26470         <descriptive>
26471             <brief>
26472  The audio duration in milliseconds.
26473             </brief>
26474             <version>
26475  2.0
26476             </version>
26477         </descriptive>
26478         <Type type="unsigned long"/>
26479       </Attribute>
26480     </Interface>
26481     <Interface name="ImageContent" id="::Content::ImageContent">
26482       <webidl>  [NoInterfaceObject] interface ImageContent : <ref>Content</ref> {
26483
26484     attribute <ref>SimpleCoordinates</ref>? geolocation;
26485
26486     readonly attribute unsigned long width;
26487
26488     readonly attribute unsigned long height;
26489
26490     attribute <ref>ImageContentOrientation</ref> orientation;
26491
26492   };</webidl>
26493       <descriptive>
26494           <brief>
26495  This interface extends a basic <em>Content </em>object with image-specific attributes.
26496           </brief>
26497           <version>
26498  2.0
26499           </version>
26500       </descriptive>
26501       <ExtendedAttributeList>
26502         <ExtendedAttribute name="NoInterfaceObject">
26503           <webidl>NoInterfaceObject</webidl>
26504         </ExtendedAttribute>
26505       </ExtendedAttributeList>
26506       <InterfaceInheritance>
26507         <Name name="Content"/>
26508       </InterfaceInheritance>
26509       <Attribute name="geolocation" id="::Content::ImageContent::geolocation">
26510         <webidl>    attribute <ref>SimpleCoordinates</ref>? geolocation;</webidl>
26511         <descriptive>
26512             <brief>
26513  The geographical location where the image has been made.
26514             </brief>
26515             <version>
26516  2.0
26517             </version>
26518         </descriptive>
26519         <Type name="SimpleCoordinates" nullable="nullable"/>
26520       </Attribute>
26521       <Attribute readonly="readonly" name="width" id="::Content::ImageContent::width">
26522         <webidl>    readonly attribute unsigned long width;</webidl>
26523         <descriptive>
26524             <brief>
26525  The width of an image in pixels.
26526             </brief>
26527             <version>
26528  2.0
26529             </version>
26530         </descriptive>
26531         <Type type="unsigned long"/>
26532       </Attribute>
26533       <Attribute readonly="readonly" name="height" id="::Content::ImageContent::height">
26534         <webidl>    readonly attribute unsigned long height;</webidl>
26535         <descriptive>
26536             <brief>
26537  The height of an image in pixels.
26538             </brief>
26539             <version>
26540  2.0
26541             </version>
26542         </descriptive>
26543         <Type type="unsigned long"/>
26544       </Attribute>
26545       <Attribute name="orientation" id="::Content::ImageContent::orientation">
26546         <webidl>    attribute <ref>ImageContentOrientation</ref> orientation;</webidl>
26547         <descriptive>
26548             <brief>
26549  The image orientation.
26550             </brief>
26551             <version>
26552  2.0
26553             </version>
26554         </descriptive>
26555         <Type name="ImageContentOrientation"/>
26556       </Attribute>
26557     </Interface>
26558   </Module>
26559   <Module name="DataControl" id="::DataControl">
26560     <webidl>module DataControl {
26561     enum DataType { &quot;MAP&quot;, &quot;SQL&quot;};
26562  
26563     [NoInterfaceObject] interface DataControlManagerObject {
26564         readonly attribute <ref>DataControlManager</ref> datacontrol;
26565     };
26566     <ref>Tizen</ref> implements <ref>DataControlManagerObject</ref>;
26567
26568     
26569     [NoInterfaceObject] interface DataControlManager {
26570         <ref>DataControlConsumerObject</ref> getDataControlConsumer(DOMString providerId, DOMString dataId, <ref>DataType</ref> type) raises(<ref>WebAPIException</ref>);
26571     };
26572
26573      
26574     [NoInterfaceObject] interface DataControlConsumerObject {
26575         readonly attribute <ref>DataType</ref> type;
26576         readonly attribute DOMString providerId;
26577         readonly attribute DOMString dataId;
26578     };
26579
26580          
26581     [NoInterfaceObject] interface SQLDataControlConsumer : <ref>DataControlConsumerObject</ref> {
26582         void insert(unsigned long reqId, <ref>RowData</ref> insertionData, 
26583                     optional <ref>DataControlInsertSuccessCallback</ref>? successCallback, 
26584                     optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
26585
26586         void update(unsigned long reqId, <ref>RowData</ref> updateData, DOMString where, 
26587                     optional <ref>DataControlSuccessCallback</ref>? successCallback, 
26588                     optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);        
26589
26590         void remove(unsigned long reqId, DOMString where, 
26591                     optional <ref>DataControlSuccessCallback</ref>? successCallback, 
26592                     optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
26593
26594      
26595         void select(unsigned long reqId, DOMString[] columns, DOMString where,
26596                     <ref>DataControlSelectSuccessCallback</ref> successCallback, optional <ref>DataControlErrorCallback</ref>? errorCallback, 
26597                     optional unsigned long? page, optional unsigned long? maxNumberPerPage) raises(<ref>WebAPIException</ref>);
26598     };
26599
26600     [NoInterfaceObject] interface MappedDataControlConsumer : <ref>DataControlConsumerObject</ref> {
26601         void addValue(unsigned long reqId, DOMString key, DOMString value, 
26602                      optional <ref>DataControlSuccessCallback</ref>? successCallback, 
26603                      optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
26604
26605          void removeValue(unsigned long reqId, DOMString key, DOMString value, 
26606                           <ref>DataControlSuccessCallback</ref> successCallback, 
26607                           optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
26608
26609          void getValue(unsigned long reqId, DOMString key, 
26610                        <ref>DataControlGetValueSuccessCallback</ref> successCallback, 
26611                        optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
26612
26613          void updateValue(unsigned long reqId, DOMString key, DOMString oldValue, DOMString newValue, 
26614                           <ref>DataControlSuccessCallback</ref> successCallback, 
26615                           optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
26616     };
26617
26618          
26619     [Callback=FunctionOnly, NoInterfaceObject] interface DataControlSuccessCallback {
26620         void onsuccess(unsigned long reqId);
26621     };
26622
26623    
26624     [Callback=FunctionOnly, NoInterfaceObject] interface DataControlErrorCallback {
26625         void onerror(unsigned long reqId, <ref>WebAPIError</ref> error);
26626     };
26627
26628          
26629     [Callback=FunctionOnly, NoInterfaceObject] interface DataControlInsertSuccessCallback {
26630         void onsuccess(unsigned long reqId, long insertRowId);
26631     };
26632
26633
26634          
26635     [Callback=FunctionOnly, NoInterfaceObject] interface DataControlSelectSuccessCallback {
26636         void onsuccess(<ref>RowData</ref>[] rows, unsigned long reqId);
26637     };
26638
26639          
26640     [Callback=FunctionOnly, NoInterfaceObject] interface DataControlGetValueSuccessCallback {
26641         void onsuccess(DOMString[] values, unsigned long reqid);
26642     };
26643     
26644      
26645     dictionary RowData {
26646         DOMString[] columns;
26647         DOMString[] values;
26648     };
26649 };</webidl>
26650     <descriptive>
26651         <brief>
26652  This specification defines a DataControl API for applications.
26653         </brief>
26654        <description>
26655         <p>
26656 The DataControl functionality provides a way to access specific data that is exported by other applications.
26657         </p>
26658         <p>
26659 Please read the <a href="../../org.tizen.native.appprogramming/html/guide/app/data_controls.htm">Native DataControl API</a> to know how to share own application data with other applications.
26660         </p>
26661        </description>
26662         <version>
26663  2.1
26664         </version>
26665     </descriptive>
26666     <Enum name="DataType" id="::DataControl::DataType">
26667       <webidl>    enum DataType { &quot;MAP&quot;, &quot;SQL&quot;};</webidl>
26668       <descriptive>
26669           <brief>
26670  Data types.
26671           </brief>
26672           <version>
26673  2.1
26674           </version>
26675       </descriptive>
26676       <EnumValue stringvalue="MAP">
26677         <webidl> &quot;MAP</webidl>
26678       </EnumValue>
26679       <EnumValue stringvalue="SQL">
26680         <webidl> &quot;SQL</webidl>
26681       </EnumValue>
26682     </Enum>
26683     <Interface name="DataControlManagerObject" id="::DataControl::DataControlManagerObject">
26684       <webidl>    [NoInterfaceObject] interface DataControlManagerObject {
26685         readonly attribute <ref>DataControlManager</ref> datacontrol;
26686     };</webidl>
26687       <descriptive>
26688           <brief>
26689  Defines what is instantiated in the <em>Tizen</em> object.
26690           </brief>
26691          <description>
26692           <p>
26693 There is a <em>tizen.datacontrol</em> object that allows access to the
26694 DataControl API.
26695           </p>
26696          </description>
26697           <version>
26698  2.1
26699           </version>
26700       </descriptive>
26701       <ExtendedAttributeList>
26702         <ExtendedAttribute name="NoInterfaceObject">
26703           <webidl>NoInterfaceObject</webidl>
26704         </ExtendedAttribute>
26705       </ExtendedAttributeList>
26706       <Attribute readonly="readonly" name="datacontrol" id="::DataControl::DataControlManagerObject::datacontrol">
26707         <webidl>        readonly attribute <ref>DataControlManager</ref> datacontrol;</webidl>
26708         <Type name="DataControlManager"/>
26709       </Attribute>
26710     </Interface>
26711     <Implements name1="Tizen" name2="DataControlManagerObject">
26712       <webidl>    <ref>Tizen</ref> implements <ref>DataControlManagerObject</ref>;</webidl>
26713     </Implements>
26714     <Interface name="DataControlManager" id="::DataControl::DataControlManager">
26715       <webidl>    [NoInterfaceObject] interface DataControlManager {
26716         <ref>DataControlConsumerObject</ref> getDataControlConsumer(DOMString providerId, DOMString dataId, <ref>DataType</ref> type) raises(<ref>WebAPIException</ref>);
26717     };</webidl>
26718       <descriptive>
26719           <brief>
26720  This interface provides access to the <em>DataControlManager </em>object.
26721           </brief>
26722           <version>
26723  2.1
26724           </version>
26725       </descriptive>
26726       <ExtendedAttributeList>
26727         <ExtendedAttribute name="NoInterfaceObject">
26728           <webidl>NoInterfaceObject</webidl>
26729         </ExtendedAttribute>
26730       </ExtendedAttributeList>
26731       <Operation name="getDataControlConsumer" id="::DataControl::DataControlManager::getDataControlConsumer">
26732         <webidl>        <ref>DataControlConsumerObject</ref> getDataControlConsumer(DOMString providerId, DOMString dataId, <ref>DataType</ref> type) raises(<ref>WebAPIException</ref>);</webidl>
26733         <descriptive>
26734             <brief>
26735  Gets <em>DataControlConsumerObject</em> with a given DataType.
26736             </brief>
26737             <version>
26738  2.1
26739             </version>
26740             <privilegelevel>
26741  partner
26742             </privilegelevel>
26743             <privilege>
26744  http://tizen.org/privilege/datacontrol.consumer
26745             </privilege>
26746             <Code> //The data provider, a native application, should be pre-installed and launched.
26747  //The same provider id should be defined for the use of this API between a native application(provider) and a web application(consumer).
26748  //In this example, DictionaryDataControlProvider native sample application is used as a data control provider.
26749
26750  //Gets SQL type DataControlConsumerObject
26751  try {
26752      var globalSQLConsumer = tizen.datacontrol.getDataControlConsumer(
26753      &quot;http://tizen.org/datacontrol/provider/DictionaryDataControlProvider&quot;, &quot;Dictionary&quot;, &quot;SQL&quot;);
26754  } catch (err) {
26755      console.log (err.name +&quot;: &quot; + err.message);
26756  }
26757  // Gets MAP type DataControlConsumerObject
26758  try {
26759       globalMappedConsumer = tizen.datacontrol.getDataControlConsumer(
26760       &quot;http://tizen.org/datacontrol/provider/DictionaryDataControlProvider&quot;, &quot;Dictionary&quot;, &quot;MAP&quot;);
26761  } catch (err) {
26762       console.log (err.name +&quot;: &quot; + err.message);
26763  }
26764  </Code>
26765         </descriptive>
26766         <Type name="DataControlConsumerObject">
26767           <descriptive>
26768               <description><p>
26769  DataControlConsumerObject The local <em>DataControlConsumerObject</em>.
26770               </p></description>
26771           </descriptive>
26772         </Type>
26773         <ArgumentList>
26774           <Argument name="providerId">
26775             <descriptive>
26776                 <description><p>
26777  A provider ID to use and it should be shared between DataControl provider and DataControl consumer.
26778                 </p></description>
26779             </descriptive>
26780             <Type type="DOMString"/>
26781           </Argument>
26782           <Argument name="dataId">
26783             <descriptive>
26784                 <description><p>
26785  A string for identifying a specific data.
26786                 </p></description>
26787             </descriptive>
26788             <Type type="DOMString"/>
26789           </Argument>
26790           <Argument name="type">
26791             <descriptive>
26792                 <description><p>
26793  The DataType to use.
26794                 </p></description>
26795             </descriptive>
26796             <Type name="DataType"/>
26797           </Argument>
26798         </ArgumentList>
26799         <Raises>
26800           <RaiseException name="WebAPIException">
26801             <descriptive>
26802                 <description><p>
26803  with error type TypeMismatchError, if parameter type is mismatched.  
26804                 </p></description>
26805                 <description><p>
26806  with error type SecurityError, if the application does not have the privilege to call this method.
26807                 </p></description>
26808                 <description><p>
26809  with error type UnknownError, if any other error occurs. 
26810                 </p></description>
26811             </descriptive>
26812           </RaiseException>
26813         </Raises>
26814       </Operation>
26815     </Interface>
26816     <Interface name="DataControlConsumerObject" id="::DataControl::DataControlConsumerObject">
26817       <webidl>    [NoInterfaceObject] interface DataControlConsumerObject {
26818         readonly attribute <ref>DataType</ref> type;
26819         readonly attribute DOMString providerId;
26820         readonly attribute DOMString dataId;
26821     };</webidl>
26822       <descriptive>
26823           <brief>
26824  This interface provides common attributes for other derived DataControlCunsumerObject.
26825           </brief>
26826           <version>
26827  2.1
26828           </version>
26829       </descriptive>
26830       <ExtendedAttributeList>
26831         <ExtendedAttribute name="NoInterfaceObject">
26832           <webidl>NoInterfaceObject</webidl>
26833         </ExtendedAttribute>
26834       </ExtendedAttributeList>
26835       <Attribute readonly="readonly" name="type" id="::DataControl::DataControlConsumerObject::type">
26836         <webidl>        readonly attribute <ref>DataType</ref> type;</webidl>
26837         <descriptive>
26838             <brief>
26839  An attribute to store the DataType.
26840             </brief>
26841             <version>
26842  2.1
26843             </version>
26844         </descriptive>
26845         <Type name="DataType"/>
26846       </Attribute>
26847       <Attribute readonly="readonly" name="providerId" id="::DataControl::DataControlConsumerObject::providerId">
26848         <webidl>        readonly attribute DOMString providerId;</webidl>
26849         <descriptive>
26850             <brief>
26851  An attribute to hold a provider identifier of the application whom it shares the DataControl with.
26852 This attribute should be known to users who want to interact with application to provide.
26853             </brief>
26854             <version>
26855  2.1
26856             </version>
26857         </descriptive>
26858         <Type type="DOMString"/>
26859       </Attribute>
26860       <Attribute readonly="readonly" name="dataId" id="::DataControl::DataControlConsumerObject::dataId">
26861         <webidl>        readonly attribute DOMString dataId;</webidl>
26862         <descriptive>
26863             <brief>
26864  The dataId identifies specific data, usually a database table to process(insert, delete, update).
26865 The string consists of one or more components, separated by a slash('/').
26866             </brief>
26867             <version>
26868  2.1
26869             </version>
26870         </descriptive>
26871         <Type type="DOMString"/>
26872       </Attribute>
26873     </Interface>
26874     <Interface name="SQLDataControlConsumer" id="::DataControl::SQLDataControlConsumer">
26875       <webidl>    [NoInterfaceObject] interface SQLDataControlConsumer : <ref>DataControlConsumerObject</ref> {
26876         void insert(unsigned long reqId, <ref>RowData</ref> insertionData, 
26877                     optional <ref>DataControlInsertSuccessCallback</ref>? successCallback, 
26878                     optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
26879
26880         void update(unsigned long reqId, <ref>RowData</ref> updateData, DOMString where, 
26881                     optional <ref>DataControlSuccessCallback</ref>? successCallback, 
26882                     optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);        
26883
26884         void remove(unsigned long reqId, DOMString where, 
26885                     optional <ref>DataControlSuccessCallback</ref>? successCallback, 
26886                     optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
26887
26888      
26889         void select(unsigned long reqId, DOMString[] columns, DOMString where,
26890                     <ref>DataControlSelectSuccessCallback</ref> successCallback, optional <ref>DataControlErrorCallback</ref>? errorCallback, 
26891                     optional unsigned long? page, optional unsigned long? maxNumberPerPage) raises(<ref>WebAPIException</ref>);
26892     };</webidl>
26893       <descriptive>
26894           <brief>
26895  This interface defines SQL data type operatiors. 
26896           </brief>
26897           <version>
26898  2.1
26899           </version>
26900       </descriptive>
26901       <ExtendedAttributeList>
26902         <ExtendedAttribute name="NoInterfaceObject">
26903           <webidl>NoInterfaceObject</webidl>
26904         </ExtendedAttribute>
26905       </ExtendedAttributeList>
26906       <InterfaceInheritance>
26907         <Name name="DataControlConsumerObject"/>
26908       </InterfaceInheritance>
26909       <Operation name="insert" id="::DataControl::SQLDataControlConsumer::insert">
26910         <webidl>        void insert(unsigned long reqId, <ref>RowData</ref> insertionData, 
26911                     optional <ref>DataControlInsertSuccessCallback</ref>? successCallback, 
26912                     optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
26913         <descriptive>
26914             <brief>
26915  Inserts new rows into a table owned by an SQL-type data control provider.
26916             </brief>
26917             <version>
26918  2.1
26919             </version>
26920             <privilegelevel>
26921  partner
26922             </privilegelevel>
26923             <privilege>
26924  http://tizen.org/privilege/datacontrol.consumer
26925             </privilege>
26926             <Code> function successcb(id)
26927  {
26928      console.log(&quot;ok : reqid &quot;+ id);
26929  }
26930  
26931  function errorcb(id, error)
26932  {
26933      console.log(&quot;error id : &quot; + id + &quot;, error msg : &quot; + error.message);
26934  }
26935  
26936  try {
26937      var rowData = { 
26938          columns : [&quot;WORD&quot;, &quot;WORD_DESC&quot;] ,
26939          values  : [&quot;'tizen1'&quot;, &quot;'tizen2'&quot;]
26940      };
26941      // Defines globalReqId before
26942      // Increases globalReqId for uniqueness
26943      globalReqId++;
26944      globalSQLConsumer.insert(globalReqId, rowData, successcb, errorcb);
26945  } catch (err) {
26946      console.log (err.name +&quot;: &quot; + err.message);
26947  }
26948  </Code>
26949         </descriptive>
26950         <Type type="void"/>
26951         <ArgumentList>
26952           <Argument name="reqId">
26953             <descriptive>
26954                 <description><p>
26955  A unique identifier for the current operation.<br/>So a developer should increase <em>reqId </em>value to ensure it is unique for each method.
26956                 </p></description>
26957             </descriptive>
26958             <Type type="unsigned long"/>
26959           </Argument>
26960           <Argument name="insertionData">
26961             <descriptive>
26962                 <description><p>
26963  The data on columns and values to insert.
26964                 </p></description>
26965             </descriptive>
26966             <Type name="RowData"/>
26967           </Argument>
26968           <Argument optional="optional" name="successCallback">
26969             <descriptive>
26970                 <description><p>
26971  The method to invoke when the asynchronous call completes successfully.
26972                 </p></description>
26973             </descriptive>
26974             <Type name="DataControlInsertSuccessCallback" nullable="nullable"/>
26975           </Argument>
26976           <Argument optional="optional" name="errorCallback">
26977             <descriptive>
26978                 <description><p>
26979  The method to invoke when an error occurs.
26980                 </p></description>
26981             </descriptive>
26982             <Type name="DataControlErrorCallback" nullable="nullable"/>
26983           </Argument>
26984         </ArgumentList>
26985         <Raises>
26986           <RaiseException name="WebAPIException">
26987             <descriptive>
26988                 <description><p>
26989  with error type TypeMismatchError, if parameter type is not compatible with the expected type for that parameter.
26990                 </p></description>
26991                 <description><p>
26992  with error type InvalidValuesError, if the passed parameter is not available on data provider side or platform or if an SQL query with invalid parameters has been made.
26993                 </p></description>
26994                 <description><p>
26995  with error type IOError, if a DB operation has failed.
26996                 </p></description>
26997                 <description><p>
26998  with error type SecurityError, if the application does not have the privilege to call this method.
26999                 </p></description>
27000                 <description><p>
27001  with error type UnknownError, if any other error occurs.
27002                 </p></description>
27003             </descriptive>
27004           </RaiseException>
27005         </Raises>
27006       </Operation>
27007       <Operation name="update" id="::DataControl::SQLDataControlConsumer::update">
27008         <webidl>        void update(unsigned long reqId, <ref>RowData</ref> updateData, DOMString where, 
27009                     optional <ref>DataControlSuccessCallback</ref>? successCallback, 
27010                     optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
27011         <descriptive>
27012             <brief>
27013  Updates values of a table owned by an SQL-type data control provider.
27014             </brief>
27015             <version>
27016  2.1
27017             </version>
27018             <privilegelevel>
27019  partner
27020             </privilegelevel>
27021             <privilege>
27022  http://tizen.org/privilege/datacontrol.consumer
27023             </privilege>
27024             <Code> function successcb(id)
27025  {
27026      console.log(&quot;ok : reqid &quot; + id);
27027  }
27028  
27029  function errorcb(id, error)
27030  {
27031      console.log(&quot;error id : &quot; + id + &quot;, error msg : &quot; + error.message);
27032  }
27033  
27034  try {
27035      var rowData = { 
27036          columns : [&quot;WORD&quot;, &quot;WORD_DESC&quot;] ,
27037          values  : [&quot;'tizen1'&quot;, &quot;'samsung platform!'&quot;]
27038      };
27039      // Defines globalReqId before
27040      // Increases globalReqId for uniqueness
27041      globalReqId++;
27042      globalSQLConsumer.update(globalReqId, rowData, &quot;WORD='tizen1'&quot;, successcb, errorcb);
27043  } catch (err) {
27044      console.log (err.name +&quot;: &quot; + err.message);
27045  }
27046  </Code>
27047         </descriptive>
27048         <Type type="void"/>
27049         <ArgumentList>
27050           <Argument name="reqId">
27051             <descriptive>
27052                 <description><p>
27053  A unique identifier for the current operation.<br/>So a developer should increase <em>reqId </em>value to ensure it is unique for each method.
27054                 </p></description>
27055             </descriptive>
27056             <Type type="unsigned long"/>
27057           </Argument>
27058           <Argument name="updateData">
27059             <descriptive>
27060                 <description><p>
27061  The data on columns and values to update.
27062                 </p></description>
27063             </descriptive>
27064             <Type name="RowData"/>
27065           </Argument>
27066           <Argument name="where">
27067             <descriptive>
27068                 <description><p>
27069  A filter to select desired rows to update. <br/>It is an SQL <var>WHERE</var> clause excluding the <var>WHERE</var> itself such as <var>column1 = 'stringValue' AND column2 = numericValue</var>.
27070                 </p></description>
27071             </descriptive>
27072             <Type type="DOMString"/>
27073           </Argument>
27074           <Argument optional="optional" name="successCallback">
27075             <descriptive>
27076                 <description><p>
27077  The method to invoke when the asynchronous call completes successfully.
27078                 </p></description>
27079             </descriptive>
27080             <Type name="DataControlSuccessCallback" nullable="nullable"/>
27081           </Argument>
27082           <Argument optional="optional" name="errorCallback">
27083             <descriptive>
27084                 <description><p>
27085  The method to invoke when an error occurs.
27086                 </p></description>
27087             </descriptive>
27088             <Type name="DataControlErrorCallback" nullable="nullable"/>
27089           </Argument>
27090         </ArgumentList>
27091         <Raises>
27092           <RaiseException name="WebAPIException">
27093             <descriptive>
27094                 <description><p>
27095  with error type TypeMismatchError, if parameter type is not compatible with the expected type for that parameter.
27096                 </p></description>
27097                 <description><p>
27098  with error type InvalidValuesError, if the passed parameter is not available on data provider side or platform or if an SQL query with invalid parameters has been made.
27099                 </p></description>
27100                 <description><p>
27101  with error type IOError, if a DB operation has failed.
27102                 </p></description>
27103                 <description><p>
27104  with error type SecurityError, if the application does not have the privilege to call this method.
27105                 </p></description>
27106                 <description><p>
27107  with error type UnknownError, if any other error occurs.
27108                 </p></description>
27109             </descriptive>
27110           </RaiseException>
27111         </Raises>
27112       </Operation>
27113       <Operation name="remove" id="::DataControl::SQLDataControlConsumer::remove">
27114         <webidl>        void remove(unsigned long reqId, DOMString where, 
27115                     optional <ref>DataControlSuccessCallback</ref>? successCallback, 
27116                     optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
27117         <descriptive>
27118             <brief>
27119  Delete rows from a table that is owned by an SQL-type data control provider. 
27120             </brief>
27121             <version>
27122  2.1
27123             </version>
27124             <privilegelevel>
27125  partner
27126             </privilegelevel>
27127             <privilege>
27128  http://tizen.org/privilege/datacontrol.consumer
27129             </privilege>
27130             <Code> function successcb(id)
27131  {
27132      console.log(&quot;ok : reqid &quot; + id);
27133  }
27134  
27135  function errorcb(id, error)
27136  {
27137      console.log(&quot;error id : &quot; + id + &quot;, error msg : &quot; + error.message);
27138  }
27139  
27140  try {
27141      // Defines globalReqId before
27142      // Increases globalReqId for uniqueness
27143      globalReqId++;
27144      globalSQLConsumer.remove(globalReqId, &quot;WORD='tizen1'&quot;, successcb, errorcb);
27145  } catch (err) {
27146      console.log (err.name +&quot;: &quot; + err.message);
27147  }
27148  </Code>
27149         </descriptive>
27150         <Type type="void"/>
27151         <ArgumentList>
27152           <Argument name="reqId">
27153             <descriptive>
27154                 <description><p>
27155  A unique identifier for the current operation.<br/>So a developer should increase <em>reqId </em>value to ensure it is unique for each method.
27156                 </p></description>
27157             </descriptive>
27158             <Type type="unsigned long"/>
27159           </Argument>
27160           <Argument name="where">
27161             <descriptive>
27162                 <description><p>
27163  A filter to select desired rows to remove. <br/>It is an SQL <var>WHERE</var> clause excluding the <var>WHERE</var> itself such as <var>column1 = 'stringValue' AND column2 = numericValue</var>.
27164                 </p></description>
27165             </descriptive>
27166             <Type type="DOMString"/>
27167           </Argument>
27168           <Argument optional="optional" name="successCallback">
27169             <descriptive>
27170                 <description><p>
27171  The method to invoke when the asynchronous call completes successfully.
27172                 </p></description>
27173             </descriptive>
27174             <Type name="DataControlSuccessCallback" nullable="nullable"/>
27175           </Argument>
27176           <Argument optional="optional" name="errorCallback">
27177             <descriptive>
27178                 <description><p>
27179  The method to invoke when an error occurs.
27180                 </p></description>
27181             </descriptive>
27182             <Type name="DataControlErrorCallback" nullable="nullable"/>
27183           </Argument>
27184         </ArgumentList>
27185         <Raises>
27186           <RaiseException name="WebAPIException">
27187             <descriptive>
27188                 <description><p>
27189  with error type TypeMismatchError, if parameter type is not compatible with the expected type for that parameter.
27190                 </p></description>
27191                 <description><p>
27192  with error type InvalidValuesError, if the passed parameter is not available on data provider side or platform or if an SQL query with invalid parameters is made.
27193                 </p></description>
27194                 <description><p>
27195  with error type IOError, if a DB operation has failed.
27196                 </p></description>
27197                 <description><p>
27198  with error type SecurityError, if the application does not have the privilege to call this method.
27199                 </p></description>
27200                 <description><p>
27201  with error type UnknownError, if any other error occurs.
27202                 </p></description>
27203             </descriptive>
27204           </RaiseException>
27205         </Raises>
27206       </Operation>
27207       <Operation name="select" id="::DataControl::SQLDataControlConsumer::select">
27208         <webidl>        void select(unsigned long reqId, DOMString[] columns, DOMString where,
27209                     <ref>DataControlSelectSuccessCallback</ref> successCallback, optional <ref>DataControlErrorCallback</ref>? errorCallback, 
27210                     optional unsigned long? page, optional unsigned long? maxNumberPerPage) raises(<ref>WebAPIException</ref>);</webidl>
27211         <descriptive>
27212             <brief>
27213  Selects the specified columns to be queried. The result set of the specified columns is retrieved from a table owned by an SQL-type data control provider. 
27214             </brief>
27215             <version>
27216  2.1
27217             </version>
27218             <privilegelevel>
27219  partner
27220             </privilegelevel>
27221             <privilege>
27222  http://tizen.org/privilege/datacontrol.consumer
27223             </privilege>
27224             <Code> function getValueSuccessCB(result, id)
27225  {
27226      var length = result.length;
27227      for (var i = 0; i &#60; length; i++)
27228      {
27229          var j = 0;
27230          for (j = 0; j &#60; result[i].columns.length; j++)
27231          {
27232              console.log(&quot;column: &quot; + result[i].columns[j] + &quot;, value: &quot; + result[i].values[j]);
27233          }
27234      }
27235  }
27236
27237  function errorcb(id, error)
27238  {
27239      console.log(&quot;error id : &quot; + id + &quot;, error msg : &quot; + error.message);
27240  }
27241
27242  try {
27243      // Defines globalReqId before
27244      // Increases globalReqId for uniqueness
27245      var array = [&quot;WORD&quot;, &quot;WORD_DESC&quot; ];
27246      globalReqId++;
27247      globalSQLConsumer.select(globalReqId, array, &quot;WORD='tizen1'&quot;, getValueSuccessCB, errorcb);
27248  }
27249  catch (err) {
27250      console.log (err.name +&quot;: &quot; + err.message);
27251  }
27252  
27253   
27254 </Code>
27255         </descriptive>
27256         <Type type="void"/>
27257         <ArgumentList>
27258           <Argument name="reqId">
27259             <descriptive>
27260                 <description><p>
27261  A unique identifier for the current operation.<br/>So a developer should increase <em>reqId </em>value to ensure it is unique for each method.
27262                 </p></description>
27263             </descriptive>
27264             <Type type="unsigned long"/>
27265           </Argument>
27266           <Argument name="columns">
27267             <descriptive>
27268                 <description><p>
27269  The columns to select.
27270                 </p></description>
27271             </descriptive>
27272             <Type type="array">
27273               <Type type="DOMString"/>
27274             </Type>
27275           </Argument>
27276           <Argument name="where">
27277             <descriptive>
27278                 <description><p>
27279  A filter to select desired rows. <br/>It is an SQL <var>WHERE</var> clause excluding the <var>WHERE</var> itself such as <var>column1 = 'stringValue' AND column2 = numericValue</var>.
27280                 </p></description>
27281             </descriptive>
27282             <Type type="DOMString"/>
27283           </Argument>
27284           <Argument name="successCallback">
27285             <descriptive>
27286                 <description><p>
27287  The method to invoke when the asynchronous call completes successfully.
27288                 </p></description>
27289             </descriptive>
27290             <Type name="DataControlSelectSuccessCallback"/>
27291           </Argument>
27292           <Argument optional="optional" name="errorCallback">
27293             <descriptive>
27294                 <description><p>
27295  The method to invoke when an error occurs.
27296                 </p></description>
27297             </descriptive>
27298             <Type name="DataControlErrorCallback" nullable="nullable"/>
27299           </Argument>
27300           <Argument optional="optional" name="page">
27301             <descriptive>
27302                 <description><p>
27303  The page number of the result set. <br/>It starts from <var>1</var>. If the number is out of page, DataControlSelectSuccessCallback will be invoked with no result data.
27304                 </p></description>
27305             </descriptive>
27306             <Type type="unsigned long" nullable="nullable"/>
27307           </Argument>
27308           <Argument optional="optional" name="maxNumberPerPage">
27309             <descriptive>
27310                 <description><p>
27311  The maximum number of rows on a page.
27312                 </p></description>
27313             </descriptive>
27314             <Type type="unsigned long" nullable="nullable"/>
27315           </Argument>
27316         </ArgumentList>
27317         <Raises>
27318           <RaiseException name="WebAPIException">
27319             <descriptive>
27320                 <description><p>
27321  with error type TypeMismatchError, if parameter type is not compatible with the expected type for that parameter.
27322                 </p></description>
27323                 <description><p>
27324  with error type InvalidValuesError, if the passed parameter is not available on data provider side or platform or if an SQL query with invalid parameters has been made.
27325                 </p></description>
27326                 <description><p>
27327  with error type IOError, if a DB operation has failed.
27328                 </p></description>
27329                 <description><p>
27330  with error type SecurityError, if the application does not have the privilege to call this method.
27331                 </p></description>
27332                 <description><p>
27333  with error type UnknownError, if any other error occurs.
27334                 </p></description>
27335             </descriptive>
27336           </RaiseException>
27337         </Raises>
27338       </Operation>
27339     </Interface>
27340     <Interface name="MappedDataControlConsumer" id="::DataControl::MappedDataControlConsumer">
27341       <webidl>    [NoInterfaceObject] interface MappedDataControlConsumer : <ref>DataControlConsumerObject</ref> {
27342         void addValue(unsigned long reqId, DOMString key, DOMString value, 
27343                      optional <ref>DataControlSuccessCallback</ref>? successCallback, 
27344                      optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
27345
27346          void removeValue(unsigned long reqId, DOMString key, DOMString value, 
27347                           <ref>DataControlSuccessCallback</ref> successCallback, 
27348                           optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
27349
27350          void getValue(unsigned long reqId, DOMString key, 
27351                        <ref>DataControlGetValueSuccessCallback</ref> successCallback, 
27352                        optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
27353
27354          void updateValue(unsigned long reqId, DOMString key, DOMString oldValue, DOMString newValue, 
27355                           <ref>DataControlSuccessCallback</ref> successCallback, 
27356                           optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
27357     };</webidl>
27358       <descriptive>
27359           <brief>
27360  This interface defines MAP data type operators.
27361           </brief>
27362           <version>
27363  2.1
27364           </version>
27365       </descriptive>
27366       <ExtendedAttributeList>
27367         <ExtendedAttribute name="NoInterfaceObject">
27368           <webidl>NoInterfaceObject</webidl>
27369         </ExtendedAttribute>
27370       </ExtendedAttributeList>
27371       <InterfaceInheritance>
27372         <Name name="DataControlConsumerObject"/>
27373       </InterfaceInheritance>
27374       <Operation name="addValue" id="::DataControl::MappedDataControlConsumer::addValue">
27375         <webidl>        void addValue(unsigned long reqId, DOMString key, DOMString value, 
27376                      optional <ref>DataControlSuccessCallback</ref>? successCallback, 
27377                      optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
27378         <descriptive>
27379             <brief>
27380  Adds the value associated with the specified key to a key-values map owned by MAP-type data control provider. 
27381             </brief>
27382             <version>
27383  2.1
27384             </version>
27385             <privilegelevel>
27386  partner
27387             </privilegelevel>
27388             <privilege>
27389  http://tizen.org/privilege/datacontrol.consumer
27390             </privilege>
27391             <Code>         
27392  function successcb(id)
27393  {
27394      console.log(&quot;ok : reqid &quot; + id);
27395  }
27396  
27397  function errorcb(id, error)
27398  {
27399      console.log(&quot;error id : &quot; + id + &quot;, error msg : &quot; + error.message);
27400  }
27401  
27402  try {
27403      // Defines globalReqId before
27404      // Increases globalReqId for uniqueness
27405      globalReqId++;
27406      globalMappedConsumer.addValue(globalReqId, &quot;tizen&quot;, &quot;samsung&quot;, successcb, errorcb);
27407  } catch (err) {
27408      console.log (err.name +&quot;: &quot; + err.message);
27409  }
27410  </Code>
27411         </descriptive>
27412         <Type type="void"/>
27413         <ArgumentList>
27414           <Argument name="reqId">
27415             <descriptive>
27416                 <description><p>
27417  A unique identifier for the current operation.<br/>So a developer should increase <em>reqId </em>value to ensure it is unique for each method.
27418                 </p></description>
27419             </descriptive>
27420             <Type type="unsigned long"/>
27421           </Argument>
27422           <Argument name="key">
27423             <descriptive>
27424                 <description><p>
27425  The key to search a mapped data.
27426                 </p></description>
27427             </descriptive>
27428             <Type type="DOMString"/>
27429           </Argument>
27430           <Argument name="value">
27431             <descriptive>
27432                 <description><p>
27433  The value to add into values array mapped by the key.
27434                 </p></description>
27435             </descriptive>
27436             <Type type="DOMString"/>
27437           </Argument>
27438           <Argument optional="optional" name="successCallback">
27439             <descriptive>
27440                 <description><p>
27441  The method to invoke when the asynchronous call completes successfully.
27442                 </p></description>
27443             </descriptive>
27444             <Type name="DataControlSuccessCallback" nullable="nullable"/>
27445           </Argument>
27446           <Argument optional="optional" name="errorCallback">
27447             <descriptive>
27448                 <description><p>
27449  The method to invoke when an error occurs.
27450                 </p></description>
27451             </descriptive>
27452             <Type name="DataControlErrorCallback" nullable="nullable"/>
27453           </Argument>
27454         </ArgumentList>
27455         <Raises>
27456           <RaiseException name="WebAPIException">
27457             <descriptive>
27458                 <description><p>
27459  with error type TypeMismatchError, if parameter type is not compatible with the expected type for that parameter.
27460                 </p></description>
27461                 <description><p>
27462  with error type InvalidValuesError, if the passed parameter is not available on data provider side or platform.
27463                 </p></description>
27464                 <description><p>
27465  with error type IOError, if a DB operation has failed.
27466                 </p></description>
27467                 <description><p>
27468  with error type SecurityError, if the application does not have the privilege to call this method.
27469                 </p></description>
27470                 <description><p>
27471  with error type UnknownError, if any other error occurs.
27472                 </p></description>
27473             </descriptive>
27474           </RaiseException>
27475         </Raises>
27476       </Operation>
27477       <Operation name="removeValue" id="::DataControl::MappedDataControlConsumer::removeValue">
27478         <webidl>         void removeValue(unsigned long reqId, DOMString key, DOMString value, 
27479                           <ref>DataControlSuccessCallback</ref> successCallback, 
27480                           optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
27481         <descriptive>
27482             <brief>
27483  Removes the value associated with the specified key from a key-values map owned by MAP-type data control provider.
27484             </brief>
27485             <version>
27486  2.1
27487             </version>
27488             <privilegelevel>
27489  partner
27490             </privilegelevel>
27491             <privilege>
27492  http://tizen.org/privilege/datacontrol.consumer
27493             </privilege>
27494             <Code> function successcb(id)
27495  {
27496      console.log(&quot;ok : reqid &quot; + id);
27497  }
27498  
27499  function errorcb(id, error)
27500  {
27501      console.log(&quot;error id : &quot; + id + &quot;, error msg : &quot; + error.message);
27502  }
27503  
27504  
27505  try {
27506      // Defines globalReqId before
27507      // Increases globalReqId for uniqueness
27508      globalReqId++;
27509      globalMappedConsumer.removeValue(globalReqId, &quot;tizen&quot;, &quot;intel&quot;, successcb, errorcb);
27510  } catch (err) {
27511      console.log (err.name +&quot;: &quot; + err.message);
27512  }
27513  </Code>
27514         </descriptive>
27515         <Type type="void"/>
27516         <ArgumentList>
27517           <Argument name="reqId">
27518             <descriptive>
27519                 <description><p>
27520  A unique identifier for the current operation. <br/>So a developer should increase <em>reqId </em>value to ensure it is unique for each method.
27521                 </p></description>
27522             </descriptive>
27523             <Type type="unsigned long"/>
27524           </Argument>
27525           <Argument name="key">
27526             <descriptive>
27527                 <description><p>
27528  The key to search a mapped data.
27529                 </p></description>
27530             </descriptive>
27531             <Type type="DOMString"/>
27532           </Argument>
27533           <Argument name="value">
27534             <descriptive>
27535                 <description><p>
27536  The value to remove from a values array mapped by the key.
27537                 </p></description>
27538             </descriptive>
27539             <Type type="DOMString"/>
27540           </Argument>
27541           <Argument name="successCallback">
27542             <descriptive>
27543                 <description><p>
27544  The method to invoke when the asynchronous call completes successfully.
27545                 </p></description>
27546             </descriptive>
27547             <Type name="DataControlSuccessCallback"/>
27548           </Argument>
27549           <Argument optional="optional" name="errorCallback">
27550             <descriptive>
27551                 <description><p>
27552  The method to invoke when an error occurs.
27553                 </p></description>
27554             </descriptive>
27555             <Type name="DataControlErrorCallback" nullable="nullable"/>
27556           </Argument>
27557         </ArgumentList>
27558         <Raises>
27559           <RaiseException name="WebAPIException">
27560             <descriptive>
27561                 <description><p>
27562  with error type TypeMismatchError, if parameter type is not compatible with the expected type for that parameter.
27563                 </p></description>
27564                 <description><p>
27565  with error type InvalidValuesError, if the passed parameter is not available in data provider side or platform. 
27566                 </p></description>
27567                 <description><p>
27568  with error type IOError, if a DB operation has failed.  
27569                 </p></description>
27570                 <description><p>
27571  with error type NotFoundError, if the key cannot be found.
27572                 </p></description>
27573                 <description><p>
27574  with error type SecurityError, if the application does not have the privilege to call this method.
27575                 </p></description>
27576                 <description><p>
27577  with error type UnknownError, if any other error occurs. 
27578                 </p></description>
27579             </descriptive>
27580           </RaiseException>
27581         </Raises>
27582       </Operation>
27583       <Operation name="getValue" id="::DataControl::MappedDataControlConsumer::getValue">
27584         <webidl>         void getValue(unsigned long reqId, DOMString key, 
27585                        <ref>DataControlGetValueSuccessCallback</ref> successCallback, 
27586                        optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
27587         <descriptive>
27588             <brief>
27589  Gets value associated with the specified key, from a key-values map owned by MAP-type data control provider. 
27590             </brief>
27591             <version>
27592  2.1
27593             </version>
27594             <privilegelevel>
27595  partner
27596             </privilegelevel>
27597             <privilege>
27598  http://tizen.org/privilege/datacontrol.consumer
27599             </privilege>
27600             <Code> function getValueSuccessCB(result, id)
27601  {
27602      console.log(result.length + &quot;:&quot; + result[0]);
27603  }
27604  
27605  function errorcb(id, error)
27606  {
27607      console.log(&quot;error id : &quot; + id + &quot;, error msg : &quot; + error.message);
27608  }
27609  
27610  try {
27611      // Defines globalReqId before
27612      // Increases globalReqId for uniqueness
27613      globalReqId++;
27614      globalMappedConsumer.getValue(globalReqId, &quot;tizen&quot;, getValueSuccessCB, errorcb);
27615  } catch (err) {
27616      console.log (err.name +&quot;: &quot; + err.message);
27617  }
27618  </Code>
27619         </descriptive>
27620         <Type type="void"/>
27621         <ArgumentList>
27622           <Argument name="reqId">
27623             <descriptive>
27624                 <description><p>
27625  A unique identifier for the current operation.<br/>So a developer should increase <em>reqId </em>value to ensure it is unique for each method.
27626                 </p></description>
27627             </descriptive>
27628             <Type type="unsigned long"/>
27629           </Argument>
27630           <Argument name="key">
27631             <descriptive>
27632                 <description><p>
27633  The key to search a mapped data.
27634                 </p></description>
27635             </descriptive>
27636             <Type type="DOMString"/>
27637           </Argument>
27638           <Argument name="successCallback">
27639             <descriptive>
27640                 <description><p>
27641  The method to invoke when the asynchronous call completes successfully.
27642                 </p></description>
27643             </descriptive>
27644             <Type name="DataControlGetValueSuccessCallback"/>
27645           </Argument>
27646           <Argument optional="optional" name="errorCallback">
27647             <descriptive>
27648                 <description><p>
27649  The method to invoke when an error occurs.
27650                 </p></description>
27651             </descriptive>
27652             <Type name="DataControlErrorCallback" nullable="nullable"/>
27653           </Argument>
27654         </ArgumentList>
27655         <Raises>
27656           <RaiseException name="WebAPIException">
27657             <descriptive>
27658                 <description><p>
27659  with error type TypeMismatchError, if parameter type is not compatible with the expected type for that parameter.
27660                 </p></description>
27661                 <description><p>
27662  with error type InvalidValuesError, if the passed parameter is not available on data provider side or platform.
27663                 </p></description>
27664                 <description><p>
27665  with error type IOError, if a DB operation has failed.
27666                 </p></description>
27667                 <description><p>
27668  with error type NotFoundError, if the key cannot be found.
27669                 </p></description>
27670                 <description><p>
27671  with error type SecurityError, if the application does not have the privilege to call this method.
27672                 </p></description>
27673                 <description><p>
27674  with error type UnknownError, if any other error occurs.
27675                 </p></description>
27676             </descriptive>
27677           </RaiseException>
27678         </Raises>
27679       </Operation>
27680       <Operation name="updateValue" id="::DataControl::MappedDataControlConsumer::updateValue">
27681         <webidl>         void updateValue(unsigned long reqId, DOMString key, DOMString oldValue, DOMString newValue, 
27682                           <ref>DataControlSuccessCallback</ref> successCallback, 
27683                           optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
27684         <descriptive>
27685             <brief>
27686  Sets the value associated with the specified key with a new value.            
27687             </brief>
27688             <version>
27689  2.1
27690             </version>
27691             <privilegelevel>
27692  partner
27693             </privilegelevel>
27694             <privilege>
27695  http://tizen.org/privilege/datacontrol.consumer
27696             </privilege>
27697             <Code> 
27698  function successcb(id)
27699  {
27700      console.log(&quot;ok : reqid &quot; + id);
27701  }
27702  
27703  function errorcb(id, error)
27704  {
27705      console.log(&quot;error id : &quot; + id + &quot;, error msg : &quot; + error.message);
27706  }
27707  
27708  try {
27709      // Defines globalReqId before
27710      // Increases globalReqId for uniqueness
27711      globalReqId++;
27712      globalMappedConsumer.updateValue(globalReqId, &quot;tizen&quot;, &quot;samsung&quot;, &quot;intel&quot;, successcb, errorcb);
27713  } catch (err) {
27714      console.log (err.name +&quot;: &quot; + err.message);
27715  }
27716  </Code>
27717         </descriptive>
27718         <Type type="void"/>
27719         <ArgumentList>
27720           <Argument name="reqId">
27721             <descriptive>
27722                 <description><p>
27723  A unique identifier for the current operation.<br/>So a developer should increase <em>reqId </em>value to ensure it is unique for each method.
27724                 </p></description>
27725             </descriptive>
27726             <Type type="unsigned long"/>
27727           </Argument>
27728           <Argument name="key">
27729             <descriptive>
27730                 <description><p>
27731  The key to search a mapped data.
27732                 </p></description>
27733             </descriptive>
27734             <Type type="DOMString"/>
27735           </Argument>
27736           <Argument name="oldValue">
27737             <descriptive>
27738                 <description><p>
27739  The value to update in values array mapped by the key.
27740                 </p></description>
27741             </descriptive>
27742             <Type type="DOMString"/>
27743           </Argument>
27744           <Argument name="newValue">
27745             <descriptive>
27746                 <description><p>
27747  The new value to replace in values array mapped by the key.
27748                 </p></description>
27749             </descriptive>
27750             <Type type="DOMString"/>
27751           </Argument>
27752           <Argument name="successCallback">
27753             <descriptive>
27754                 <description><p>
27755  The method to invoke when the asynchronous call completes successfully.
27756                 </p></description>
27757             </descriptive>
27758             <Type name="DataControlSuccessCallback"/>
27759           </Argument>
27760           <Argument optional="optional" name="errorCallback">
27761             <descriptive>
27762                 <description><p>
27763  The method to invoke when an error occurs.
27764                 </p></description>
27765             </descriptive>
27766             <Type name="DataControlErrorCallback" nullable="nullable"/>
27767           </Argument>
27768         </ArgumentList>
27769         <Raises>
27770           <RaiseException name="WebAPIException">
27771             <descriptive>
27772                 <description><p>
27773  with error type TypeMismatchError, if parameter type is not compatible with the expected type for that parameter.
27774                 </p></description>
27775                 <description><p>
27776  with error type InvalidValuesError, if the passed parameter is not available on data provider side or platform.
27777                 </p></description>
27778                 <description><p>
27779  with error type IOError, if a DB operation has failed.
27780                 </p></description>
27781                 <description><p>
27782  with error type NotFoundError, if the key cannot be found.
27783                 </p></description>
27784                 <description><p>
27785  with error type SecurityError, if the application does not have the privilege to call this method.
27786                 </p></description>
27787                 <description><p>
27788  with error type UnknownError, if any other error occurs.
27789                 </p></description>
27790             </descriptive>
27791           </RaiseException>
27792         </Raises>
27793       </Operation>
27794     </Interface>
27795     <Interface name="DataControlSuccessCallback" id="::DataControl::DataControlSuccessCallback">
27796       <webidl>    [Callback=FunctionOnly, NoInterfaceObject] interface DataControlSuccessCallback {
27797         void onsuccess(unsigned long reqId);
27798     };</webidl>
27799       <descriptive>
27800           <brief>
27801  This interface provides a SuccessCallback for DataControlConsumerObject.
27802           </brief>
27803           <version>
27804  2.1
27805           </version>
27806       </descriptive>
27807       <ExtendedAttributeList>
27808         <ExtendedAttribute name="Callback" value="FunctionOnly">
27809           <webidl>Callback</webidl>
27810         </ExtendedAttribute>
27811         <ExtendedAttribute name="NoInterfaceObject">
27812           <webidl> NoInterfaceObject</webidl>
27813         </ExtendedAttribute>
27814       </ExtendedAttributeList>
27815       <Operation name="onsuccess" id="::DataControl::DataControlSuccessCallback::onsuccess">
27816         <webidl>        void onsuccess(unsigned long reqId);</webidl>
27817         <Type type="void"/>
27818         <ArgumentList>
27819           <Argument name="reqId">
27820             <Type type="unsigned long"/>
27821           </Argument>
27822         </ArgumentList>
27823       </Operation>
27824     </Interface>
27825     <Interface name="DataControlErrorCallback" id="::DataControl::DataControlErrorCallback">
27826       <webidl>    [Callback=FunctionOnly, NoInterfaceObject] interface DataControlErrorCallback {
27827         void onerror(unsigned long reqId, <ref>WebAPIError</ref> error);
27828     };</webidl>
27829       <descriptive>
27830           <brief>
27831  This interface provides a ErrorCallback for DataControlConsumerObject.
27832           </brief>
27833           <version>
27834  2.1
27835           </version>
27836       </descriptive>
27837       <ExtendedAttributeList>
27838         <ExtendedAttribute name="Callback" value="FunctionOnly">
27839           <webidl>Callback</webidl>
27840         </ExtendedAttribute>
27841         <ExtendedAttribute name="NoInterfaceObject">
27842           <webidl> NoInterfaceObject</webidl>
27843         </ExtendedAttribute>
27844       </ExtendedAttributeList>
27845       <Operation name="onerror" id="::DataControl::DataControlErrorCallback::onerror">
27846         <webidl>        void onerror(unsigned long reqId, <ref>WebAPIError</ref> error);</webidl>
27847         <Type type="void"/>
27848         <ArgumentList>
27849           <Argument name="reqId">
27850             <Type type="unsigned long"/>
27851           </Argument>
27852           <Argument name="error">
27853             <Type name="WebAPIError"/>
27854           </Argument>
27855         </ArgumentList>
27856       </Operation>
27857     </Interface>
27858     <Interface name="DataControlInsertSuccessCallback" id="::DataControl::DataControlInsertSuccessCallback">
27859       <webidl>    [Callback=FunctionOnly, NoInterfaceObject] interface DataControlInsertSuccessCallback {
27860         void onsuccess(unsigned long reqId, long insertRowId);
27861     };</webidl>
27862       <descriptive>
27863           <brief>
27864  This interface provides a SuccessCallback for SQLDataControlConsumer.insert().
27865           </brief>
27866           <version>
27867  2.1
27868           </version>
27869       </descriptive>
27870       <ExtendedAttributeList>
27871         <ExtendedAttribute name="Callback" value="FunctionOnly">
27872           <webidl>Callback</webidl>
27873         </ExtendedAttribute>
27874         <ExtendedAttribute name="NoInterfaceObject">
27875           <webidl> NoInterfaceObject</webidl>
27876         </ExtendedAttribute>
27877       </ExtendedAttributeList>
27878       <Operation name="onsuccess" id="::DataControl::DataControlInsertSuccessCallback::onsuccess">
27879         <webidl>        void onsuccess(unsigned long reqId, long insertRowId);</webidl>
27880         <descriptive>
27881             <brief>
27882  Called on success.
27883             </brief>
27884             <version>
27885  2.1
27886             </version>
27887         </descriptive>
27888         <Type type="void"/>
27889         <ArgumentList>
27890           <Argument name="reqId">
27891             <descriptive>
27892                 <description><p>
27893  A unique identifier for the current operation.<br/>so it is recommended to increase the  <em>reqId</em> value every time to guarantee the uniqueness.
27894                 </p></description>
27895             </descriptive>
27896             <Type type="unsigned long"/>
27897           </Argument>
27898           <Argument name="insertRowId">
27899             <descriptive>
27900                 <description><p>
27901  The inserted row ID set by the data control provider if the specified providerResult is <var>true</var>, else <var>-1</var>.
27902                 </p></description>
27903             </descriptive>
27904             <Type type="long"/>
27905           </Argument>
27906         </ArgumentList>
27907       </Operation>
27908     </Interface>
27909     <Interface name="DataControlSelectSuccessCallback" id="::DataControl::DataControlSelectSuccessCallback">
27910       <webidl>    [Callback=FunctionOnly, NoInterfaceObject] interface DataControlSelectSuccessCallback {
27911         void onsuccess(<ref>RowData</ref>[] rows, unsigned long reqId);
27912     };</webidl>
27913       <descriptive>
27914           <brief>
27915  This interface provides a SuccessCallback for SQLDataControlConsumer.select().
27916           </brief>
27917           <version>
27918  2.1
27919           </version>
27920       </descriptive>
27921       <ExtendedAttributeList>
27922         <ExtendedAttribute name="Callback" value="FunctionOnly">
27923           <webidl>Callback</webidl>
27924         </ExtendedAttribute>
27925         <ExtendedAttribute name="NoInterfaceObject">
27926           <webidl> NoInterfaceObject</webidl>
27927         </ExtendedAttribute>
27928       </ExtendedAttributeList>
27929       <Operation name="onsuccess" id="::DataControl::DataControlSelectSuccessCallback::onsuccess">
27930         <webidl>        void onsuccess(<ref>RowData</ref>[] rows, unsigned long reqId);</webidl>
27931         <descriptive>
27932             <brief>
27933  Called on success.
27934             </brief>
27935             <version>
27936  2.1
27937             </version>
27938         </descriptive>
27939         <Type type="void"/>
27940         <ArgumentList>
27941           <Argument name="rows">
27942             <descriptive>
27943                 <description><p>
27944  This attribute holds rows of SQL selection results from another application.<br/>The array operation of rows would be different from general javascript array behavior depends on platform implementation. For example, Array.isArray(rows) returns <em>false</em>.
27945                 </p></description>
27946             </descriptive>
27947             <Type type="array">
27948               <Type name="RowData"/>
27949             </Type>
27950           </Argument>
27951           <Argument name="reqId">
27952             <descriptive>
27953                 <description><p>
27954  A unique identifier for the current operation.<br/>so it is recommended to increase the  <em>reqId</em> value every time to guarantee the uniqueness.
27955                 </p></description>
27956             </descriptive>
27957             <Type type="unsigned long"/>
27958           </Argument>
27959         </ArgumentList>
27960       </Operation>
27961     </Interface>
27962     <Interface name="DataControlGetValueSuccessCallback" id="::DataControl::DataControlGetValueSuccessCallback">
27963       <webidl>    [Callback=FunctionOnly, NoInterfaceObject] interface DataControlGetValueSuccessCallback {
27964         void onsuccess(DOMString[] values, unsigned long reqid);
27965     };</webidl>
27966       <descriptive>
27967           <brief>
27968  This interface provides a SuccessCallback for MapDataControlConsumer.getValue().
27969           </brief>
27970           <version>
27971  2.1
27972           </version>
27973       </descriptive>
27974       <ExtendedAttributeList>
27975         <ExtendedAttribute name="Callback" value="FunctionOnly">
27976           <webidl>Callback</webidl>
27977         </ExtendedAttribute>
27978         <ExtendedAttribute name="NoInterfaceObject">
27979           <webidl> NoInterfaceObject</webidl>
27980         </ExtendedAttribute>
27981       </ExtendedAttributeList>
27982       <Operation name="onsuccess" id="::DataControl::DataControlGetValueSuccessCallback::onsuccess">
27983         <webidl>        void onsuccess(DOMString[] values, unsigned long reqid);</webidl>
27984         <Type type="void"/>
27985         <ArgumentList>
27986           <Argument name="values">
27987             <Type type="array">
27988               <Type type="DOMString"/>
27989             </Type>
27990           </Argument>
27991           <Argument name="reqid">
27992             <Type type="unsigned long"/>
27993           </Argument>
27994         </ArgumentList>
27995       </Operation>
27996     </Interface>
27997     <Dictionary name="RowData" id="::DataControl::RowData">
27998       <webidl>    dictionary RowData {
27999         DOMString[] columns;
28000         DOMString[] values;
28001     };</webidl>
28002       <descriptive>
28003           <brief>
28004  The dictionary represents RowData holding 1 row of SQL selection results from another application.
28005           </brief>
28006           <version>
28007  2.1
28008           </version>
28009       </descriptive>
28010       <DictionaryMember name="columns" id="::DataControl::RowData::columns">
28011         <webidl>        DOMString[] columns;</webidl>
28012         <descriptive>
28013             <brief>
28014  An attribute to hold column names to select, update, and insert.
28015             </brief>
28016             <version>
28017  2.1
28018             </version>
28019         </descriptive>
28020         <Type type="array">
28021           <Type type="DOMString"/>
28022         </Type>
28023       </DictionaryMember>
28024       <DictionaryMember name="values" id="::DataControl::RowData::values">
28025         <webidl>        DOMString[] values;</webidl>
28026         <descriptive>
28027             <brief>
28028  An attribute to hold values of columns to select, update, and insert.
28029             </brief>
28030             <version>
28031  2.1
28032             </version>
28033         </descriptive>
28034         <Type type="array">
28035           <Type type="DOMString"/>
28036         </Type>
28037       </DictionaryMember>
28038     </Dictionary>
28039   </Module>
28040   <Module name="DataSynchronization" id="::DataSynchronization">
28041     <webidl>module DataSynchronization {
28042
28043   typedef DOMString SyncProfileId;
28044
28045   enum SyncMode { &quot;MANUAL&quot;, &quot;PERIODIC&quot;, &quot;PUSH&quot; };
28046
28047   enum SyncType { &quot;TWO_WAY&quot;, &quot;SLOW&quot;, &quot;ONE_WAY_FROM_CLIENT&quot;, &quot;REFRESH_FROM_CLIENT&quot;, &quot;ONE_WAY_FROM_SERVER&quot;, &quot;REFRESH_FROM_SERVER&quot; };
28048
28049   enum SyncInterval { &quot;5_MINUTES&quot;, &quot;15_MINUTES&quot;, &quot;1_HOUR&quot;, &quot;4_HOURS&quot;, &quot;12_HOURS&quot;, &quot;1_DAY&quot;, &quot;1_WEEK&quot;, &quot;1_MONTH&quot; };
28050
28051   enum SyncServiceType { &quot;CONTACT&quot;, &quot;EVENT&quot; };
28052
28053   enum SyncStatus { &quot;SUCCESS&quot;, &quot;FAIL&quot;, &quot;STOP&quot;, &quot;NONE&quot; };
28054
28055   [NoInterfaceObject] interface DataSynchronizationManagerObject {
28056     readonly attribute <ref>DataSynchronizationManager</ref> datasync;
28057   };
28058
28059   <ref>Tizen</ref> implements <ref>DataSynchronizationManagerObject</ref>;
28060
28061   [Constructor(DOMString url, DOMString id, DOMString password, <ref>SyncMode</ref> mode),
28062   Constructor(DOMString url, DOMString id, DOMString password, <ref>SyncMode</ref> mode, <ref>SyncType</ref> type),
28063   Constructor(DOMString url, DOMString id, DOMString password, <ref>SyncMode</ref> mode, <ref>SyncInterval</ref> interval)]
28064   interface SyncInfo {
28065     attribute DOMString url;
28066
28067     attribute DOMString id;
28068
28069     attribute DOMString password;
28070
28071     attribute <ref>SyncMode</ref> mode;
28072
28073     attribute <ref>SyncType</ref>? type;
28074
28075     attribute <ref>SyncInterval</ref>? interval;
28076   };
28077
28078   [Constructor(boolean enable, <ref>SyncServiceType</ref> serviceType, DOMString serverDatabaseUri, optional DOMString? id, optional DOMString? password)]
28079   interface SyncServiceInfo {
28080     attribute boolean enable;
28081
28082     attribute <ref>SyncServiceType</ref> serviceType;
28083
28084     attribute DOMString serverDatabaseUri;
28085
28086     attribute DOMString? id;
28087
28088     attribute DOMString? password;
28089   };
28090
28091   [Constructor(DOMString profileName, <ref>SyncInfo</ref> syncInfo, optional <ref>SyncServiceInfo</ref>[]? serviceInfo)]
28092   interface SyncProfileInfo {
28093     readonly attribute <ref>SyncProfileId</ref> profileId;
28094
28095     attribute DOMString profileName;
28096
28097     attribute <ref>SyncInfo</ref> syncInfo;
28098
28099     attribute <ref>SyncServiceInfo</ref>[]? serviceInfo;
28100   };
28101
28102   [NoInterfaceObject] interface SyncStatistics {
28103     readonly attribute <ref>SyncStatus</ref> syncStatus;
28104
28105     readonly attribute <ref>SyncServiceType</ref> serviceType;
28106
28107     readonly attribute Date lastSyncTime;
28108
28109     readonly attribute unsigned long serverToClientTotal;
28110
28111     readonly attribute unsigned long serverToClientAdded;
28112
28113     readonly attribute unsigned long serverToClientUpdated;
28114
28115     readonly attribute unsigned long serverToClientRemoved;
28116
28117     readonly attribute unsigned long clientToServerTotal;
28118
28119     readonly attribute unsigned long clientToServerAdded;
28120
28121     readonly attribute unsigned long clientToServerUpdated;
28122
28123     readonly attribute unsigned long clientToServerRemoved;
28124   };
28125
28126   [NoInterfaceObject] interface DataSynchronizationManager {
28127     void add(<ref>SyncProfileInfo</ref> profile) raises(<ref>WebAPIException</ref>);
28128
28129     void update(<ref>SyncProfileInfo</ref> profile) raises(<ref>WebAPIException</ref>);
28130
28131     void remove(<ref>SyncProfileId</ref> profileId) raises(<ref>WebAPIException</ref>);
28132
28133     long getMaxProfilesNum() raises(<ref>WebAPIException</ref>);
28134
28135     unsigned long getProfilesNum() raises(<ref>WebAPIException</ref>);
28136
28137     <ref>SyncProfileInfo</ref> get(<ref>SyncProfileId</ref> profileId) raises(<ref>WebAPIException</ref>);
28138
28139     <ref>SyncProfileInfo</ref>[] getAll() raises(<ref>WebAPIException</ref>);
28140
28141     void startSync(<ref>SyncProfileId</ref> profileId, optional <ref>SyncProgressCallback</ref>? progressCallback) raises(<ref>WebAPIException</ref>);
28142
28143     void stopSync(<ref>SyncProfileId</ref> profileId) raises(<ref>WebAPIException</ref>);
28144
28145     <ref>SyncStatistics</ref>[] getLastSyncStatistics(<ref>SyncProfileId</ref> profileId) raises(<ref>WebAPIException</ref>);
28146   };
28147
28148   [Callback, NoInterfaceObject] interface SyncProgressCallback {
28149     void onprogress(<ref>SyncProfileId</ref> profileId, <ref>SyncServiceType</ref> serviceType, boolean isFromServer, unsigned long totalPerService, unsigned long syncedPerService);
28150
28151     void oncompleted(<ref>SyncProfileId</ref> profileId);
28152
28153     void onstopped(<ref>SyncProfileId</ref> profileId);
28154
28155     void onfailed(<ref>SyncProfileId</ref> profileId, <ref>WebAPIError</ref> error);
28156   };
28157 };</webidl>
28158     <descriptive>
28159         <brief>
28160  This API provides methods to synchronize contact and event data to the server using the OMA DS 1.2 protocol.
28161 To know the details of this specification, visit <a href="http://www.openmobilealliance.org">OMA web page</a>. And for more information on the DataSync features, see <a href="../../org.tizen.web.appprogramming/html/guide/social_guide/datasync.htm">Data Synchronization Guide</a>.
28162         </brief>
28163         <version>
28164  2.1
28165         </version>
28166     </descriptive>
28167     <Typedef name="SyncProfileId" id="::DataSynchronization::SyncProfileId">
28168       <webidl>  typedef DOMString SyncProfileId;</webidl>
28169       <descriptive>
28170           <brief>
28171  An attribute to uniquely identify a sync profile.
28172           </brief>
28173           <version>
28174  2.1
28175           </version>
28176       </descriptive>
28177       <Type type="DOMString"/>
28178     </Typedef>
28179     <Enum name="SyncMode" id="::DataSynchronization::SyncMode">
28180       <webidl>  enum SyncMode { &quot;MANUAL&quot;, &quot;PERIODIC&quot;, &quot;PUSH&quot; };</webidl>
28181       <descriptive>
28182           <brief>
28183  An enumerator that indicates the supported synchronization modes.
28184           </brief>
28185          <description>
28186           <p>
28187 The following values are supported:
28188           </p>
28189           <ul>
28190             <li>
28191 MANUAL - Indicates that the synchronization starts by manual trigger. The sync type should be specified. The default value is <em>TWO_WAY</em>.            </li>
28192             <li>
28193 PERIODIC - Indicates that the synchronization starts automatically by a preset period. The sync interval should be provided.            </li>
28194             <li>
28195 PUSH - Indicates that the synchronization starts automatically when changes are made. The sync type is set to <em>TWO_WAY</em>. The synchronization can be triggered by the server based on the standard SAN(Server Alerted Notification) sync type.            </li>
28196           </ul>
28197          </description>
28198           <version>
28199  2.1
28200           </version>
28201       </descriptive>
28202       <EnumValue stringvalue="MANUAL">
28203         <webidl> &quot;MANUAL</webidl>
28204       </EnumValue>
28205       <EnumValue stringvalue="PERIODIC">
28206         <webidl> &quot;PERIODIC</webidl>
28207       </EnumValue>
28208       <EnumValue stringvalue="PUSH">
28209         <webidl> &quot;PUSH</webidl>
28210       </EnumValue>
28211     </Enum>
28212     <Enum name="SyncType" id="::DataSynchronization::SyncType">
28213       <webidl>  enum SyncType { &quot;TWO_WAY&quot;, &quot;SLOW&quot;, &quot;ONE_WAY_FROM_CLIENT&quot;, &quot;REFRESH_FROM_CLIENT&quot;, &quot;ONE_WAY_FROM_SERVER&quot;, &quot;REFRESH_FROM_SERVER&quot; };</webidl>
28214       <descriptive>
28215           <brief>
28216  An enumerator that indicates the supported synchronization types.
28217           </brief>
28218          <description>
28219           <p>
28220 The following values are supported:
28221           </p>
28222           <ul>
28223             <li>
28224 TWO_WAY - Indicates a normal sync type in which the client and the server exchange information about modified data in these devices.            </li>
28225             <li>
28226 SLOW - Indicates a form of two-way sync in which the client and the server exchange all the data from their database. This type of sync is used for the first sync, or after a synchronization failure.            </li>
28227             <li>
28228 ONE_WAY_FROM_CLIENT - Indicates a sync type in which the client sends its modifications to the server but the server does not send its modifications back to the client.            </li>
28229             <li>
28230 REFRESH_FROM_CLIENT - Indicates a sync type in which the client sends all its data from a database to the server (backup). The server is then expected to replace all data in the target database with the data received from the client.            </li>
28231             <li>
28232 ONE_WAY_FROM_SERVER - Indicates a sync type in which the client gets all modifications from the server but the client does not send its modifications to the server.            </li>
28233             <li>
28234 REFRESH_FROM_SERVER - Indicates a sync type in which the server sends all its data from a database to the client (restore). The client is then expected to replace all data in the target database with the data received from the server.            </li>
28235           </ul>
28236          </description>
28237           <version>
28238  2.1
28239           </version>
28240       </descriptive>
28241       <EnumValue stringvalue="TWO_WAY">
28242         <webidl> &quot;TWO_WAY</webidl>
28243       </EnumValue>
28244       <EnumValue stringvalue="SLOW">
28245         <webidl> &quot;SLOW</webidl>
28246       </EnumValue>
28247       <EnumValue stringvalue="ONE_WAY_FROM_CLIENT">
28248         <webidl> &quot;ONE_WAY_FROM_CLIENT</webidl>
28249       </EnumValue>
28250       <EnumValue stringvalue="REFRESH_FROM_CLIENT">
28251         <webidl> &quot;REFRESH_FROM_CLIENT</webidl>
28252       </EnumValue>
28253       <EnumValue stringvalue="ONE_WAY_FROM_SERVER">
28254         <webidl> &quot;ONE_WAY_FROM_SERVER</webidl>
28255       </EnumValue>
28256       <EnumValue stringvalue="REFRESH_FROM_SERVER">
28257         <webidl> &quot;REFRESH_FROM_SERVER</webidl>
28258       </EnumValue>
28259     </Enum>
28260     <Enum name="SyncInterval" id="::DataSynchronization::SyncInterval">
28261       <webidl>  enum SyncInterval { &quot;5_MINUTES&quot;, &quot;15_MINUTES&quot;, &quot;1_HOUR&quot;, &quot;4_HOURS&quot;, &quot;12_HOURS&quot;, &quot;1_DAY&quot;, &quot;1_WEEK&quot;, &quot;1_MONTH&quot; };</webidl>
28262       <descriptive>
28263           <brief>
28264  An enumerator that indicates the supported synchronization intervals.
28265           </brief>
28266          <description>
28267           <p>
28268 The following values are supported:
28269           </p>
28270           <ul>
28271             <li>
28272 5_MINUTES - Indicates a time period of 5 minutes.            </li>
28273             <li>
28274 15_MINUTES - Indicates a time period of 15 minutes.            </li>
28275             <li>
28276 1_HOUR - Indicates a time period of 1 hour.            </li>
28277             <li>
28278 4_HOURS - Indicates a time period of 4 hours.            </li>
28279             <li>
28280 12_HOURS - Indicates a time period of 12 hours.            </li>
28281             <li>
28282 1_DAY - Indicates a time period of 1 day.            </li>
28283             <li>
28284 1_WEEK - Indicates a time period of 1 week.            </li>
28285             <li>
28286 1_MONTH - Indicates a time period of 1 month.            </li>
28287           </ul>
28288          </description>
28289           <version>
28290  2.1
28291           </version>
28292       </descriptive>
28293       <EnumValue stringvalue="5_MINUTES">
28294         <webidl> &quot;5_MINUTES</webidl>
28295       </EnumValue>
28296       <EnumValue stringvalue="15_MINUTES">
28297         <webidl> &quot;15_MINUTES</webidl>
28298       </EnumValue>
28299       <EnumValue stringvalue="1_HOUR">
28300         <webidl> &quot;1_HOUR</webidl>
28301       </EnumValue>
28302       <EnumValue stringvalue="4_HOURS">
28303         <webidl> &quot;4_HOURS</webidl>
28304       </EnumValue>
28305       <EnumValue stringvalue="12_HOURS">
28306         <webidl> &quot;12_HOURS</webidl>
28307       </EnumValue>
28308       <EnumValue stringvalue="1_DAY">
28309         <webidl> &quot;1_DAY</webidl>
28310       </EnumValue>
28311       <EnumValue stringvalue="1_WEEK">
28312         <webidl> &quot;1_WEEK</webidl>
28313       </EnumValue>
28314       <EnumValue stringvalue="1_MONTH">
28315         <webidl> &quot;1_MONTH</webidl>
28316       </EnumValue>
28317     </Enum>
28318     <Enum name="SyncServiceType" id="::DataSynchronization::SyncServiceType">
28319       <webidl>  enum SyncServiceType { &quot;CONTACT&quot;, &quot;EVENT&quot; };</webidl>
28320       <descriptive>
28321           <brief>
28322  An enumerator that indicates the supported synchronization service type of the device.
28323           </brief>
28324          <description>
28325           <p>
28326 The following values are supported:
28327           </p>
28328           <ul>
28329             <li>
28330 CONTACT - Indicates the device contact records.            </li>
28331             <li>
28332 EVENT - Indicates the device calendar event records.            </li>
28333           </ul>
28334          </description>
28335           <version>
28336  2.1
28337           </version>
28338       </descriptive>
28339       <EnumValue stringvalue="CONTACT">
28340         <webidl> &quot;CONTACT</webidl>
28341       </EnumValue>
28342       <EnumValue stringvalue="EVENT">
28343         <webidl> &quot;EVENT</webidl>
28344       </EnumValue>
28345     </Enum>
28346     <Enum name="SyncStatus" id="::DataSynchronization::SyncStatus">
28347       <webidl>  enum SyncStatus { &quot;SUCCESS&quot;, &quot;FAIL&quot;, &quot;STOP&quot;, &quot;NONE&quot; };</webidl>
28348       <descriptive>
28349           <brief>
28350  An enumerator that indicates the last sync statuses.
28351           </brief>
28352          <description>
28353           <p>
28354 The following values are supported:
28355           </p>
28356           <ul>
28357             <li>
28358 SUCCESS - Indicates the sync is successful.            </li>
28359             <li>
28360 FAIL - Indicates the sync has failed.            </li>
28361             <li>
28362 STOP - Indicates the sync has been stopped by user's action.            </li>
28363             <li>
28364 NONE - Indicates the sync was never performed.            </li>
28365           </ul>
28366          </description>
28367           <version>
28368  2.1
28369           </version>
28370       </descriptive>
28371       <EnumValue stringvalue="SUCCESS">
28372         <webidl> &quot;SUCCESS</webidl>
28373       </EnumValue>
28374       <EnumValue stringvalue="FAIL">
28375         <webidl> &quot;FAIL</webidl>
28376       </EnumValue>
28377       <EnumValue stringvalue="STOP">
28378         <webidl> &quot;STOP</webidl>
28379       </EnumValue>
28380       <EnumValue stringvalue="NONE">
28381         <webidl> &quot;NONE</webidl>
28382       </EnumValue>
28383     </Enum>
28384     <Interface name="DataSynchronizationManagerObject" id="::DataSynchronization::DataSynchronizationManagerObject">
28385       <webidl>  [NoInterfaceObject] interface DataSynchronizationManagerObject {
28386     readonly attribute <ref>DataSynchronizationManager</ref> datasync;
28387   };</webidl>
28388       <descriptive>
28389           <brief>
28390  This interface defines the default data synchronization manager that is instantiated by the <em>Tizen </em>object.
28391 There will be a <em>tizen.datasync</em> object that allows access to the functionality of the DataSynchronization API.
28392           </brief>
28393           <version>
28394  2.1
28395           </version>
28396       </descriptive>
28397       <ExtendedAttributeList>
28398         <ExtendedAttribute name="NoInterfaceObject">
28399           <webidl>NoInterfaceObject</webidl>
28400         </ExtendedAttribute>
28401       </ExtendedAttributeList>
28402       <Attribute readonly="readonly" name="datasync" id="::DataSynchronization::DataSynchronizationManagerObject::datasync">
28403         <webidl>    readonly attribute <ref>DataSynchronizationManager</ref> datasync;</webidl>
28404         <Type name="DataSynchronizationManager"/>
28405       </Attribute>
28406     </Interface>
28407     <Implements name1="Tizen" name2="DataSynchronizationManagerObject">
28408       <webidl>  <ref>Tizen</ref> implements <ref>DataSynchronizationManagerObject</ref>;</webidl>
28409     </Implements>
28410     <Interface name="SyncInfo" id="::DataSynchronization::SyncInfo">
28411       <webidl>  [Constructor(DOMString url, DOMString id, DOMString password, <ref>SyncMode</ref> mode),
28412   Constructor(DOMString url, DOMString id, DOMString password, <ref>SyncMode</ref> mode, <ref>SyncType</ref> type),
28413   Constructor(DOMString url, DOMString id, DOMString password, <ref>SyncMode</ref> mode, <ref>SyncInterval</ref> interval)]
28414   interface SyncInfo {
28415     attribute DOMString url;
28416
28417     attribute DOMString id;
28418
28419     attribute DOMString password;
28420
28421     attribute <ref>SyncMode</ref> mode;
28422
28423     attribute <ref>SyncType</ref>? type;
28424
28425     attribute <ref>SyncInterval</ref>? interval;
28426   };</webidl>
28427       <descriptive>
28428           <brief>
28429  This interface defines the sync information.
28430           </brief>
28431           <version>
28432  2.1
28433           </version>
28434           <remark>
28435  The <em>MANUAL</em> sync mode accepts the sync type and the <em>PERIODIC</em> mode accepts the sync interval, whereas the <em>PUSH</em> mode does not accept any additional parameters.
28436           </remark>
28437       </descriptive>
28438       <ExtendedAttributeList>
28439         <ExtendedAttribute name="Constructor">
28440           <webidl>Constructor(DOMString url, DOMString id, DOMString password, <ref>SyncMode</ref> mode)</webidl>
28441           <ArgumentList>
28442             <Argument name="url">
28443               <Type type="DOMString"/>
28444             </Argument>
28445             <Argument name="id">
28446               <Type type="DOMString"/>
28447             </Argument>
28448             <Argument name="password">
28449               <Type type="DOMString"/>
28450             </Argument>
28451             <Argument name="mode">
28452               <Type name="SyncMode"/>
28453             </Argument>
28454           </ArgumentList>
28455         </ExtendedAttribute>
28456         <ExtendedAttribute name="Constructor">
28457           <webidl>  Constructor(DOMString url, DOMString id, DOMString password, <ref>SyncMode</ref> mode, <ref>SyncType</ref> type)</webidl>
28458           <ArgumentList>
28459             <Argument name="url">
28460               <Type type="DOMString"/>
28461             </Argument>
28462             <Argument name="id">
28463               <Type type="DOMString"/>
28464             </Argument>
28465             <Argument name="password">
28466               <Type type="DOMString"/>
28467             </Argument>
28468             <Argument name="mode">
28469               <Type name="SyncMode"/>
28470             </Argument>
28471             <Argument name="type">
28472               <Type name="SyncType"/>
28473             </Argument>
28474           </ArgumentList>
28475         </ExtendedAttribute>
28476         <ExtendedAttribute name="Constructor">
28477           <webidl>  Constructor(DOMString url, DOMString id, DOMString password, <ref>SyncMode</ref> mode, <ref>SyncInterval</ref> interval)</webidl>
28478           <ArgumentList>
28479             <Argument name="url">
28480               <Type type="DOMString"/>
28481             </Argument>
28482             <Argument name="id">
28483               <Type type="DOMString"/>
28484             </Argument>
28485             <Argument name="password">
28486               <Type type="DOMString"/>
28487             </Argument>
28488             <Argument name="mode">
28489               <Type name="SyncMode"/>
28490             </Argument>
28491             <Argument name="interval">
28492               <Type name="SyncInterval"/>
28493             </Argument>
28494           </ArgumentList>
28495         </ExtendedAttribute>
28496       </ExtendedAttributeList>
28497       <Attribute name="url" id="::DataSynchronization::SyncInfo::url">
28498         <webidl>    attribute DOMString url;</webidl>
28499         <descriptive>
28500             <brief>
28501  An attribute to store the URL of the sync server.
28502             </brief>
28503             <version>
28504  2.1
28505             </version>
28506         </descriptive>
28507         <Type type="DOMString"/>
28508       </Attribute>
28509       <Attribute name="id" id="::DataSynchronization::SyncInfo::id">
28510         <webidl>    attribute DOMString id;</webidl>
28511         <descriptive>
28512             <brief>
28513  An attribute to store the login ID for the sync server.
28514             </brief>
28515            <description>
28516             <p>
28517 When an attempt to retrieve the saved value is made, it will return <var>null</var> to prevent any compromise on the privacy of the login ID.
28518             </p>
28519            </description>
28520             <version>
28521  2.1
28522             </version>
28523         </descriptive>
28524         <Type type="DOMString"/>
28525       </Attribute>
28526       <Attribute name="password" id="::DataSynchronization::SyncInfo::password">
28527         <webidl>    attribute DOMString password;</webidl>
28528         <descriptive>
28529             <brief>
28530  An attribute to store the login password to the sync server.
28531             </brief>
28532            <description>
28533             <p>
28534 When an attempt to retrieve the saved value is made, it will return <var>null</var> to prevent any compromise on the privacy of the login password.
28535             </p>
28536            </description>
28537             <version>
28538  2.1
28539             </version>
28540         </descriptive>
28541         <Type type="DOMString"/>
28542       </Attribute>
28543       <Attribute name="mode" id="::DataSynchronization::SyncInfo::mode">
28544         <webidl>    attribute <ref>SyncMode</ref> mode;</webidl>
28545         <descriptive>
28546             <brief>
28547  An attribute to store the sync mode.
28548             </brief>
28549             <version>
28550  2.1
28551             </version>
28552         </descriptive>
28553         <Type name="SyncMode"/>
28554       </Attribute>
28555       <Attribute name="type" id="::DataSynchronization::SyncInfo::type">
28556         <webidl>    attribute <ref>SyncType</ref>? type;</webidl>
28557         <descriptive>
28558             <brief>
28559  An attribute to store the sync type.
28560             </brief>
28561            <description>
28562             <p>
28563 This attribute is used when the sync mode is set to <em>MANUAL</em> option.
28564             </p>
28565            </description>
28566             <version>
28567  2.1
28568             </version>
28569         </descriptive>
28570         <Type name="SyncType" nullable="nullable"/>
28571       </Attribute>
28572       <Attribute name="interval" id="::DataSynchronization::SyncInfo::interval">
28573         <webidl>    attribute <ref>SyncInterval</ref>? interval;</webidl>
28574         <descriptive>
28575             <brief>
28576  An attribute to store the sync interval.
28577             </brief>
28578            <description>
28579             <p>
28580 This attribute is used when the sync mode is set to <em>PERIODIC</em> option.
28581             </p>
28582            </description>
28583             <version>
28584  2.1
28585             </version>
28586         </descriptive>
28587         <Type name="SyncInterval" nullable="nullable"/>
28588       </Attribute>
28589     </Interface>
28590     <Interface name="SyncServiceInfo" id="::DataSynchronization::SyncServiceInfo">
28591       <webidl>  [Constructor(boolean enable, <ref>SyncServiceType</ref> serviceType, DOMString serverDatabaseUri, optional DOMString? id, optional DOMString? password)]
28592   interface SyncServiceInfo {
28593     attribute boolean enable;
28594
28595     attribute <ref>SyncServiceType</ref> serviceType;
28596
28597     attribute DOMString serverDatabaseUri;
28598
28599     attribute DOMString? id;
28600
28601     attribute DOMString? password;
28602   };</webidl>
28603       <descriptive>
28604           <brief>
28605  This interface defines the sync service information.
28606           </brief>
28607           <version>
28608  2.1
28609           </version>
28610       </descriptive>
28611       <ExtendedAttributeList>
28612         <ExtendedAttribute name="Constructor">
28613           <webidl>Constructor(boolean enable, <ref>SyncServiceType</ref> serviceType, DOMString serverDatabaseUri, optional DOMString? id, optional DOMString? password)</webidl>
28614           <ArgumentList>
28615             <Argument name="enable">
28616               <Type type="boolean"/>
28617             </Argument>
28618             <Argument name="serviceType">
28619               <Type name="SyncServiceType"/>
28620             </Argument>
28621             <Argument name="serverDatabaseUri">
28622               <Type type="DOMString"/>
28623             </Argument>
28624             <Argument optional="optional" name="id">
28625               <Type type="DOMString" nullable="nullable"/>
28626             </Argument>
28627             <Argument optional="optional" name="password">
28628               <Type type="DOMString" nullable="nullable"/>
28629             </Argument>
28630           </ArgumentList>
28631         </ExtendedAttribute>
28632       </ExtendedAttributeList>
28633       <Attribute name="enable" id="::DataSynchronization::SyncServiceInfo::enable">
28634         <webidl>    attribute boolean enable;</webidl>
28635         <descriptive>
28636             <brief>
28637  An attribute to enable or disable a service category for sync.
28638             </brief>
28639             <version>
28640  2.1
28641             </version>
28642         </descriptive>
28643         <Type type="boolean"/>
28644       </Attribute>
28645       <Attribute name="serviceType" id="::DataSynchronization::SyncServiceInfo::serviceType">
28646         <webidl>    attribute <ref>SyncServiceType</ref> serviceType;</webidl>
28647         <descriptive>
28648             <brief>
28649  An attribute to indicate the sync service type.
28650             </brief>
28651             <version>
28652  2.1
28653             </version>
28654         </descriptive>
28655         <Type name="SyncServiceType"/>
28656       </Attribute>
28657       <Attribute name="serverDatabaseUri" id="::DataSynchronization::SyncServiceInfo::serverDatabaseUri">
28658         <webidl>    attribute DOMString serverDatabaseUri;</webidl>
28659         <descriptive>
28660             <brief>
28661  An attribute to store the sync service DB URI of the server.
28662             </brief>
28663             <version>
28664  2.1
28665             </version>
28666         </descriptive>
28667         <Type type="DOMString"/>
28668       </Attribute>
28669       <Attribute name="id" id="::DataSynchronization::SyncServiceInfo::id">
28670         <webidl>    attribute DOMString? id;</webidl>
28671         <descriptive>
28672             <brief>
28673  An attribute to store the sync service DB access ID to the server.
28674             </brief>
28675            <description>
28676             <p>
28677 This is used only when the server requires a separate access right to each DB.
28678 When an attempt to retrieve the saved value is made, it will return <var>null</var> to prevent any compromise on the privacy of the id.
28679             </p>
28680            </description>
28681             <version>
28682  2.1
28683             </version>
28684         </descriptive>
28685         <Type type="DOMString" nullable="nullable"/>
28686       </Attribute>
28687       <Attribute name="password" id="::DataSynchronization::SyncServiceInfo::password">
28688         <webidl>    attribute DOMString? password;</webidl>
28689         <descriptive>
28690             <brief>
28691  An attribute to store the sync service DB access password to the server.
28692             </brief>
28693            <description>
28694             <p>
28695 This is used only when the server requires a separate access right to each DB.
28696 When an attempt to retrieve the saved value is made, it will return <var>null</var> to prevent any compromise on the privacy of the password.
28697             </p>
28698            </description>
28699             <version>
28700  2.1
28701             </version>
28702         </descriptive>
28703         <Type type="DOMString" nullable="nullable"/>
28704       </Attribute>
28705     </Interface>
28706     <Interface name="SyncProfileInfo" id="::DataSynchronization::SyncProfileInfo">
28707       <webidl>  [Constructor(DOMString profileName, <ref>SyncInfo</ref> syncInfo, optional <ref>SyncServiceInfo</ref>[]? serviceInfo)]
28708   interface SyncProfileInfo {
28709     readonly attribute <ref>SyncProfileId</ref> profileId;
28710
28711     attribute DOMString profileName;
28712
28713     attribute <ref>SyncInfo</ref> syncInfo;
28714
28715     attribute <ref>SyncServiceInfo</ref>[]? serviceInfo;
28716   };</webidl>
28717       <descriptive>
28718           <brief>
28719  This interface defines the sync profile information, based on which the synchronization is performed.
28720           </brief>
28721           <version>
28722  2.1
28723           </version>
28724       </descriptive>
28725       <ExtendedAttributeList>
28726         <ExtendedAttribute name="Constructor">
28727           <webidl>Constructor(DOMString profileName, <ref>SyncInfo</ref> syncInfo, optional <ref>SyncServiceInfo</ref>[]? serviceInfo)</webidl>
28728           <ArgumentList>
28729             <Argument name="profileName">
28730               <Type type="DOMString"/>
28731             </Argument>
28732             <Argument name="syncInfo">
28733               <Type name="SyncInfo"/>
28734             </Argument>
28735             <Argument optional="optional" name="serviceInfo">
28736               <Type type="array" nullable="nullable">
28737                 <Type name="SyncServiceInfo"/>
28738               </Type>
28739             </Argument>
28740           </ArgumentList>
28741         </ExtendedAttribute>
28742       </ExtendedAttributeList>
28743       <Attribute readonly="readonly" name="profileId" id="::DataSynchronization::SyncProfileInfo::profileId">
28744         <webidl>    readonly attribute <ref>SyncProfileId</ref> profileId;</webidl>
28745         <descriptive>
28746             <brief>
28747  An attribute to store the unique identifier provided by the platform for a profile that has been successfully added.
28748             </brief>
28749             <version>
28750  2.1
28751             </version>
28752         </descriptive>
28753         <Type name="SyncProfileId"/>
28754       </Attribute>
28755       <Attribute name="profileName" id="::DataSynchronization::SyncProfileInfo::profileName">
28756         <webidl>    attribute DOMString profileName;</webidl>
28757         <descriptive>
28758             <brief>
28759  An attribute to store the profile name.
28760             </brief>
28761             <version>
28762  2.1
28763             </version>
28764         </descriptive>
28765         <Type type="DOMString"/>
28766       </Attribute>
28767       <Attribute name="syncInfo" id="::DataSynchronization::SyncProfileInfo::syncInfo">
28768         <webidl>    attribute <ref>SyncInfo</ref> syncInfo;</webidl>
28769         <descriptive>
28770             <brief>
28771  An attribute to store the sync info.
28772             </brief>
28773             <version>
28774  2.1
28775             </version>
28776         </descriptive>
28777         <Type name="SyncInfo"/>
28778       </Attribute>
28779       <Attribute name="serviceInfo" id="::DataSynchronization::SyncProfileInfo::serviceInfo">
28780         <webidl>    attribute <ref>SyncServiceInfo</ref>[]? serviceInfo;</webidl>
28781         <descriptive>
28782             <brief>
28783  An attribute to indicate the service info.
28784             </brief>
28785             <version>
28786  2.1
28787             </version>
28788         </descriptive>
28789         <Type type="array" nullable="nullable">
28790           <Type name="SyncServiceInfo"/>
28791         </Type>
28792       </Attribute>
28793     </Interface>
28794     <Interface name="SyncStatistics" id="::DataSynchronization::SyncStatistics">
28795       <webidl>  [NoInterfaceObject] interface SyncStatistics {
28796     readonly attribute <ref>SyncStatus</ref> syncStatus;
28797
28798     readonly attribute <ref>SyncServiceType</ref> serviceType;
28799
28800     readonly attribute Date lastSyncTime;
28801
28802     readonly attribute unsigned long serverToClientTotal;
28803
28804     readonly attribute unsigned long serverToClientAdded;
28805
28806     readonly attribute unsigned long serverToClientUpdated;
28807
28808     readonly attribute unsigned long serverToClientRemoved;
28809
28810     readonly attribute unsigned long clientToServerTotal;
28811
28812     readonly attribute unsigned long clientToServerAdded;
28813
28814     readonly attribute unsigned long clientToServerUpdated;
28815
28816     readonly attribute unsigned long clientToServerRemoved;
28817   };</webidl>
28818       <descriptive>
28819           <brief>
28820  This interface defines the sync statistics for a profile service.
28821           </brief>
28822           <version>
28823  2.1
28824           </version>
28825       </descriptive>
28826       <ExtendedAttributeList>
28827         <ExtendedAttribute name="NoInterfaceObject">
28828           <webidl>NoInterfaceObject</webidl>
28829         </ExtendedAttribute>
28830       </ExtendedAttributeList>
28831       <Attribute readonly="readonly" name="syncStatus" id="::DataSynchronization::SyncStatistics::syncStatus">
28832         <webidl>    readonly attribute <ref>SyncStatus</ref> syncStatus;</webidl>
28833         <descriptive>
28834             <brief>
28835  An attribute to store the last sync status for a corresponding service category.
28836             </brief>
28837             <version>
28838  2.1
28839             </version>
28840         </descriptive>
28841         <Type name="SyncStatus"/>
28842       </Attribute>
28843       <Attribute readonly="readonly" name="serviceType" id="::DataSynchronization::SyncStatistics::serviceType">
28844         <webidl>    readonly attribute <ref>SyncServiceType</ref> serviceType;</webidl>
28845         <descriptive>
28846             <brief>
28847  An attribute to indicate the sync service type.
28848             </brief>
28849             <version>
28850  2.1
28851             </version>
28852         </descriptive>
28853         <Type name="SyncServiceType"/>
28854       </Attribute>
28855       <Attribute readonly="readonly" name="lastSyncTime" id="::DataSynchronization::SyncStatistics::lastSyncTime">
28856         <webidl>    readonly attribute Date lastSyncTime;</webidl>
28857         <descriptive>
28858             <brief>
28859  An attribute to store the last sync time.
28860             </brief>
28861             <version>
28862  2.1
28863             </version>
28864         </descriptive>
28865         <Type type="Date"/>
28866       </Attribute>
28867       <Attribute readonly="readonly" name="serverToClientTotal" id="::DataSynchronization::SyncStatistics::serverToClientTotal">
28868         <webidl>    readonly attribute unsigned long serverToClientTotal;</webidl>
28869         <descriptive>
28870             <brief>
28871  An attribute to indicate the total number of items sent from the server to the client direction.
28872             </brief>
28873             <version>
28874  2.1
28875             </version>
28876         </descriptive>
28877         <Type type="unsigned long"/>
28878       </Attribute>
28879       <Attribute readonly="readonly" name="serverToClientAdded" id="::DataSynchronization::SyncStatistics::serverToClientAdded">
28880         <webidl>    readonly attribute unsigned long serverToClientAdded;</webidl>
28881         <descriptive>
28882             <brief>
28883  An attribute to indicate the number of added items from the server to the client direction.
28884             </brief>
28885             <version>
28886  2.1
28887             </version>
28888         </descriptive>
28889         <Type type="unsigned long"/>
28890       </Attribute>
28891       <Attribute readonly="readonly" name="serverToClientUpdated" id="::DataSynchronization::SyncStatistics::serverToClientUpdated">
28892         <webidl>    readonly attribute unsigned long serverToClientUpdated;</webidl>
28893         <descriptive>
28894             <brief>
28895  An attribute to indicate the number of updated items from the server to the client direction.
28896             </brief>
28897             <version>
28898  2.1
28899             </version>
28900         </descriptive>
28901         <Type type="unsigned long"/>
28902       </Attribute>
28903       <Attribute readonly="readonly" name="serverToClientRemoved" id="::DataSynchronization::SyncStatistics::serverToClientRemoved">
28904         <webidl>    readonly attribute unsigned long serverToClientRemoved;</webidl>
28905         <descriptive>
28906             <brief>
28907  An attribute to indicate the number of removed items from the server to the client direction.
28908             </brief>
28909             <version>
28910  2.1
28911             </version>
28912         </descriptive>
28913         <Type type="unsigned long"/>
28914       </Attribute>
28915       <Attribute readonly="readonly" name="clientToServerTotal" id="::DataSynchronization::SyncStatistics::clientToServerTotal">
28916         <webidl>    readonly attribute unsigned long clientToServerTotal;</webidl>
28917         <descriptive>
28918             <brief>
28919  An attribute to indicate the total number of items from the client to the server direction.
28920             </brief>
28921             <version>
28922  2.1
28923             </version>
28924         </descriptive>
28925         <Type type="unsigned long"/>
28926       </Attribute>
28927       <Attribute readonly="readonly" name="clientToServerAdded" id="::DataSynchronization::SyncStatistics::clientToServerAdded">
28928         <webidl>    readonly attribute unsigned long clientToServerAdded;</webidl>
28929         <descriptive>
28930             <brief>
28931  An attribute to indicate the number of added items from the client to the server direction.
28932             </brief>
28933             <version>
28934  2.1
28935             </version>
28936         </descriptive>
28937         <Type type="unsigned long"/>
28938       </Attribute>
28939       <Attribute readonly="readonly" name="clientToServerUpdated" id="::DataSynchronization::SyncStatistics::clientToServerUpdated">
28940         <webidl>    readonly attribute unsigned long clientToServerUpdated;</webidl>
28941         <descriptive>
28942             <brief>
28943  An attribute to indicate the number of updated items from the client to the server direction.
28944             </brief>
28945             <version>
28946  2.1
28947             </version>
28948         </descriptive>
28949         <Type type="unsigned long"/>
28950       </Attribute>
28951       <Attribute readonly="readonly" name="clientToServerRemoved" id="::DataSynchronization::SyncStatistics::clientToServerRemoved">
28952         <webidl>    readonly attribute unsigned long clientToServerRemoved;</webidl>
28953         <descriptive>
28954             <brief>
28955  An attribute to indicate the number of removed items from the client to the server direction.
28956             </brief>
28957             <version>
28958  2.1
28959             </version>
28960         </descriptive>
28961         <Type type="unsigned long"/>
28962       </Attribute>
28963     </Interface>
28964     <Interface name="DataSynchronizationManager" id="::DataSynchronization::DataSynchronizationManager">
28965       <webidl>  [NoInterfaceObject] interface DataSynchronizationManager {
28966     void add(<ref>SyncProfileInfo</ref> profile) raises(<ref>WebAPIException</ref>);
28967
28968     void update(<ref>SyncProfileInfo</ref> profile) raises(<ref>WebAPIException</ref>);
28969
28970     void remove(<ref>SyncProfileId</ref> profileId) raises(<ref>WebAPIException</ref>);
28971
28972     long getMaxProfilesNum() raises(<ref>WebAPIException</ref>);
28973
28974     unsigned long getProfilesNum() raises(<ref>WebAPIException</ref>);
28975
28976     <ref>SyncProfileInfo</ref> get(<ref>SyncProfileId</ref> profileId) raises(<ref>WebAPIException</ref>);
28977
28978     <ref>SyncProfileInfo</ref>[] getAll() raises(<ref>WebAPIException</ref>);
28979
28980     void startSync(<ref>SyncProfileId</ref> profileId, optional <ref>SyncProgressCallback</ref>? progressCallback) raises(<ref>WebAPIException</ref>);
28981
28982     void stopSync(<ref>SyncProfileId</ref> profileId) raises(<ref>WebAPIException</ref>);
28983
28984     <ref>SyncStatistics</ref>[] getLastSyncStatistics(<ref>SyncProfileId</ref> profileId) raises(<ref>WebAPIException</ref>);
28985   };</webidl>
28986       <descriptive>
28987           <brief>
28988  This interface allows managing profiles and synchronizing data between the server and the client device based on the stored profile information.
28989           </brief>
28990           <version>
28991  2.1
28992           </version>
28993       </descriptive>
28994       <ExtendedAttributeList>
28995         <ExtendedAttribute name="NoInterfaceObject">
28996           <webidl>NoInterfaceObject</webidl>
28997         </ExtendedAttribute>
28998       </ExtendedAttributeList>
28999       <Operation name="add" id="::DataSynchronization::DataSynchronizationManager::add">
29000         <webidl>    void add(<ref>SyncProfileInfo</ref> profile) raises(<ref>WebAPIException</ref>);</webidl>
29001         <descriptive>
29002             <brief>
29003  Adds a sync profile.
29004             </brief>
29005            <description>
29006             <p>
29007 The profile ID is provided when the profile is successfully added.
29008             </p>
29009            </description>
29010             <version>
29011  2.1
29012             </version>
29013             <privilegelevel>
29014  public
29015             </privilegelevel>
29016             <privilege>
29017  http://tizen.org/privilege/datasync
29018             </privilege>
29019             <Code> // Creates a sync info
29020  var syncInfo = new tizen.SyncInfo(&quot;http://example.com/sync&quot;, &quot;myId&quot;, &quot;myPassword&quot;, &quot;MANUAL&quot;, &quot;TWO_WAY&quot;);
29021
29022  // Syncs both contacts and events
29023  var contactInfo = new tizen.SyncServiceInfo(true, &quot;CONTACT&quot;, &quot;serverContact&quot;);
29024  var eventInfo = new tizen.SyncServiceInfo(true, &quot;EVENT&quot;, &quot;serverEvent&quot;);
29025  var serviceInfo = [contactInfo, eventInfo];
29026
29027  // Adds a profile to sync
29028  var profile = new tizen.SyncProfileInfo(&quot;MyProfile&quot;, syncInfo, serviceInfo);
29029  tizen.datasync.add(profile);
29030  </Code>
29031         </descriptive>
29032         <Type type="void"/>
29033         <ArgumentList>
29034           <Argument name="profile">
29035             <descriptive>
29036                 <description><p>
29037  The sync profile information to add.
29038                 </p></description>
29039             </descriptive>
29040             <Type name="SyncProfileInfo"/>
29041           </Argument>
29042         </ArgumentList>
29043         <Raises>
29044           <RaiseException name="WebAPIException">
29045             <descriptive>
29046                 <description><p>
29047  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
29048                 </p></description>
29049                 <description><p>
29050  with error type QuotaExceededError, if the platform has already reached the maximum number of profiles.
29051                 </p></description>
29052                 <description><p>
29053  with error type NotSupportedError, if this feature is not supported.
29054                 </p></description>
29055                 <description><p>
29056  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
29057                 </p></description>
29058                 <description><p>
29059  with error type SecurityError, if the application does not have the privilege to call this method.
29060                 </p></description>
29061                 <description><p>
29062  with error type UnknownError, if any other error occurs.
29063                 </p></description>
29064             </descriptive>
29065           </RaiseException>
29066         </Raises>
29067       </Operation>
29068       <Operation name="update" id="::DataSynchronization::DataSynchronizationManager::update">
29069         <webidl>    void update(<ref>SyncProfileInfo</ref> profile) raises(<ref>WebAPIException</ref>);</webidl>
29070         <descriptive>
29071             <brief>
29072  Updates an existing sync profile.
29073             </brief>
29074             <version>
29075  2.1
29076             </version>
29077             <privilegelevel>
29078  public
29079             </privilegelevel>
29080             <privilege>
29081  http://tizen.org/privilege/datasync
29082             </privilege>
29083             <Code> // Retrieves and updates a profile
29084  var profile = tizen.datasync.get(profileId);
29085
29086  profile.profileName = &quot;newProfileName&quot;;
29087
29088  tizen.datasync.update(profile);
29089  </Code>
29090         </descriptive>
29091         <Type type="void"/>
29092         <ArgumentList>
29093           <Argument name="profile">
29094             <descriptive>
29095                 <description><p>
29096  The sync profile information to update.
29097                 </p></description>
29098             </descriptive>
29099             <Type name="SyncProfileInfo"/>
29100           </Argument>
29101         </ArgumentList>
29102         <Raises>
29103           <RaiseException name="WebAPIException">
29104             <descriptive>
29105                 <description><p>
29106  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
29107                 </p></description>
29108                 <description><p>
29109  with error type NotSupportedError, if this feature is not supported.
29110                 </p></description>
29111                 <description><p>
29112  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
29113                 </p></description>
29114                 <description><p>
29115  with error type SecurityError, if the application does not have the privilege to call this method.
29116                 </p></description>
29117                 <description><p>
29118  with error type UnknownError, if any other error occurs.
29119                 </p></description>
29120             </descriptive>
29121           </RaiseException>
29122         </Raises>
29123       </Operation>
29124       <Operation name="remove" id="::DataSynchronization::DataSynchronizationManager::remove">
29125         <webidl>    void remove(<ref>SyncProfileId</ref> profileId) raises(<ref>WebAPIException</ref>);</webidl>
29126         <descriptive>
29127             <brief>
29128  Removes an existing sync profile.
29129             </brief>
29130             <version>
29131  2.1
29132             </version>
29133             <privilegelevel>
29134  public
29135             </privilegelevel>
29136             <privilege>
29137  http://tizen.org/privilege/datasync
29138             </privilege>
29139             <Code> // Removes a profile
29140  tizen.datasync.remove(profileId);
29141  </Code>
29142         </descriptive>
29143         <Type type="void"/>
29144         <ArgumentList>
29145           <Argument name="profileId">
29146             <descriptive>
29147                 <description><p>
29148  The sync profile ID to remove.
29149                 </p></description>
29150             </descriptive>
29151             <Type name="SyncProfileId"/>
29152           </Argument>
29153         </ArgumentList>
29154         <Raises>
29155           <RaiseException name="WebAPIException">
29156             <descriptive>
29157                 <description><p>
29158  with error type NotFoundError, if the identifier does not match any saved profile.
29159                 </p></description>
29160                 <description><p>
29161  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
29162                 </p></description>
29163                 <description><p>
29164  with error type NotSupportedError, if this feature is not supported.
29165                 </p></description>
29166                 <description><p>
29167  with error type SecurityError, if the application does not have the privilege to call this method.
29168                 </p></description>
29169                 <description><p>
29170  with error type UnknownError, if any other error occurs.
29171                 </p></description>
29172             </descriptive>
29173           </RaiseException>
29174         </Raises>
29175       </Operation>
29176       <Operation name="getMaxProfilesNum" id="::DataSynchronization::DataSynchronizationManager::getMaxProfilesNum">
29177         <webidl>    long getMaxProfilesNum() raises(<ref>WebAPIException</ref>);</webidl>
29178         <descriptive>
29179             <brief>
29180  Gets the maximum number of supported sync profiles on a platform.
29181 Normally the platform sets a limitation on the number of supported profiles. It will return <var>0</var> or negative value if no limitation is set.
29182             </brief>
29183             <version>
29184  2.1
29185             </version>
29186             <privilegelevel>
29187  public
29188             </privilegelevel>
29189             <privilege>
29190  http://tizen.org/privilege/datasync
29191             </privilege>
29192             <Code> // Gets the maximum number of supported profiles on the platform
29193  var numMaxProfiles = tizen.datasync.getMaxProfilesNum();
29194  </Code>
29195         </descriptive>
29196         <Type type="long">
29197           <descriptive>
29198               <description><p>
29199  long The number of supported profiles on a platform.
29200               </p></description>
29201           </descriptive>
29202         </Type>
29203         <ArgumentList/>
29204         <Raises>
29205           <RaiseException name="WebAPIException">
29206             <descriptive>
29207                 <description><p>
29208  with error type NotSupportedError, if this feature is not supported.
29209                 </p></description>
29210                 <description><p>
29211  with error type SecurityError, if the application does not have the privilege to call this method.
29212                 </p></description>
29213                 <description><p>
29214  with error type UnknownError, if any other error occurs.
29215                 </p></description>
29216             </descriptive>
29217           </RaiseException>
29218         </Raises>
29219       </Operation>
29220       <Operation name="getProfilesNum" id="::DataSynchronization::DataSynchronizationManager::getProfilesNum">
29221         <webidl>    unsigned long getProfilesNum() raises(<ref>WebAPIException</ref>);</webidl>
29222         <descriptive>
29223             <brief>
29224  Gets the current number of sync profiles on a device.
29225             </brief>
29226             <version>
29227  2.1
29228             </version>
29229             <privilegelevel>
29230  public
29231             </privilegelevel>
29232             <privilege>
29233  http://tizen.org/privilege/datasync
29234             </privilege>
29235             <Code> // Gets the present number of profiles on the device
29236  var numProfiles = tizen.datasync.getProfilesNum();
29237  </Code>
29238         </descriptive>
29239         <Type type="unsigned long">
29240           <descriptive>
29241               <description><p>
29242  unsigned long The current number of profiles on a device.
29243               </p></description>
29244           </descriptive>
29245         </Type>
29246         <ArgumentList/>
29247         <Raises>
29248           <RaiseException name="WebAPIException">
29249             <descriptive>
29250                 <description><p>
29251  with error type NotSupportedError, if this feature is not supported.
29252                 </p></description>
29253                 <description><p>
29254  with error type SecurityError, if the application does not have the privilege to call this method.
29255                 </p></description>
29256                 <description><p>
29257  with error type UnknownError, if any other error occurs.
29258                 </p></description>
29259             </descriptive>
29260           </RaiseException>
29261         </Raises>
29262       </Operation>
29263       <Operation name="get" id="::DataSynchronization::DataSynchronizationManager::get">
29264         <webidl>    <ref>SyncProfileInfo</ref> get(<ref>SyncProfileId</ref> profileId) raises(<ref>WebAPIException</ref>);</webidl>
29265         <descriptive>
29266             <brief>
29267  Gets the <em>SyncProfileInfo</em> object from a given profile ID.
29268             </brief>
29269            <description>
29270             <p>
29271 The attempt to retrieve <em>SyncProfileInfo</em> doesn't get any confidential information such as the <em>password</em> of <em>SyncInfo</em> or <em>SyncServiceInfo</em> but instead will return <var>null</var>.
29272             </p>
29273            </description>
29274             <version>
29275  2.1
29276             </version>
29277             <privilegelevel>
29278  public
29279             </privilegelevel>
29280             <privilege>
29281  http://tizen.org/privilege/datasync
29282             </privilege>
29283             <Code> // Gets the profile information with the given ID
29284  var profile = tizen.datasync.get(profileId);
29285  </Code>
29286         </descriptive>
29287         <Type name="SyncProfileInfo">
29288           <descriptive>
29289               <description><p>
29290  SyncProfileInfo The profile information of the given ID.
29291               </p></description>
29292           </descriptive>
29293         </Type>
29294         <ArgumentList>
29295           <Argument name="profileId">
29296             <descriptive>
29297                 <description><p>
29298  The ID to use to get the profile information.
29299                 </p></description>
29300             </descriptive>
29301             <Type name="SyncProfileId"/>
29302           </Argument>
29303         </ArgumentList>
29304         <Raises>
29305           <RaiseException name="WebAPIException">
29306             <descriptive>
29307                 <description><p>
29308  with error type NotFoundError, if the identifier does not match any profile saved.
29309                 </p></description>
29310                 <description><p>
29311  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
29312                 </p></description>
29313                 <description><p>
29314  with error type NotSupportedError, if this feature is not supported.
29315                 </p></description>
29316                 <description><p>
29317  with error type SecurityError, if the application does not have the privilege to call this method.
29318                 </p></description>
29319                 <description><p>
29320  with error type UnknownError, if any other error occurs.
29321                 </p></description>
29322             </descriptive>
29323           </RaiseException>
29324         </Raises>
29325       </Operation>
29326       <Operation name="getAll" id="::DataSynchronization::DataSynchronizationManager::getAll">
29327         <webidl>    <ref>SyncProfileInfo</ref>[] getAll() raises(<ref>WebAPIException</ref>);</webidl>
29328         <descriptive>
29329             <brief>
29330  Gets the information of all sync profiles saved in a device.
29331             </brief>
29332            <description>
29333             <p>
29334 An attempt to retrieve <em>SyncProfileInfo</em> doesn't get any confidential information such as the <em>password</em> of <em>SyncInfo</em> or <em>SyncServiceInfo</em> but instead will return <var>null</var>.
29335             </p>
29336            </description>
29337             <version>
29338  2.1
29339             </version>
29340             <privilegelevel>
29341  public
29342             </privilegelevel>
29343             <privilege>
29344  http://tizen.org/privilege/datasync
29345             </privilege>
29346             <Code> // Gets the all profile information
29347  var profiles = tizen.datasync.getAll();
29348  </Code>
29349         </descriptive>
29350         <Type type="array">
29351           <descriptive>
29352               <description><p>
29353  SyncProfileInfo[] The profile information array.
29354               </p></description>
29355           </descriptive>
29356           <Type name="SyncProfileInfo"/>
29357         </Type>
29358         <ArgumentList/>
29359         <Raises>
29360           <RaiseException name="WebAPIException">
29361             <descriptive>
29362                 <description><p>
29363  with error type NotSupportedError, if this feature is not supported.
29364                 </p></description>
29365                 <description><p>
29366  with error type SecurityError, if the application does not have the privilege to call this method.
29367                 </p></description>
29368                 <description><p>
29369  with error type UnknownError, if any other error occurs.
29370                 </p></description>
29371             </descriptive>
29372           </RaiseException>
29373         </Raises>
29374       </Operation>
29375       <Operation name="startSync" id="::DataSynchronization::DataSynchronizationManager::startSync">
29376         <webidl>    void startSync(<ref>SyncProfileId</ref> profileId, optional <ref>SyncProgressCallback</ref>? progressCallback) raises(<ref>WebAPIException</ref>);</webidl>
29377         <descriptive>
29378             <brief>
29379  Starts a sync operation with a given profile ID.
29380             </brief>
29381            <description>
29382             <p>
29383 If the sync mode is set to <em>MANUAL</em>, the synchronization will not start automatically until this method is called. This method will work even in <em>PUSH</em> or <em>PERIODIC</em> mode.
29384             </p>
29385            </description>
29386             <version>
29387  2.1
29388             </version>
29389             <privilegelevel>
29390  public
29391             </privilegelevel>
29392             <privilege>
29393  http://tizen.org/privilege/datasync
29394             </privilege>
29395             <Code> var profileId; //profileId obtained from SyncProfileInfo
29396  var syncCallback = {
29397    onprogress: function(profileId, serviceType, isFromServer, totalPerType, syncedPerType) {
29398      console.log('Total: ' + totalPerType + ', synced: ' + syncedPerType + ' for the sync type: ' + serviceType);
29399    },
29400    onfailed: function(profileId, error) {
29401       console.log('Failed with id: ' + profileId + ', error name: ' + error.name);
29402    }
29403  };
29404
29405  // Starts the sync operation with the corresponding callbacks
29406  tizen.datasync.startSync(profileId, syncCallback);
29407  </Code>
29408         </descriptive>
29409         <Type type="void"/>
29410         <ArgumentList>
29411           <Argument name="profileId">
29412             <descriptive>
29413                 <description><p>
29414  The profile ID with which to initiate the sync operation.
29415                 </p></description>
29416             </descriptive>
29417             <Type name="SyncProfileId"/>
29418           </Argument>
29419           <Argument optional="optional" name="progressCallback">
29420             <descriptive>
29421                 <description><p>
29422  The method to invoke when the sync operation progresses or an error occurs.
29423                 </p></description>
29424             </descriptive>
29425             <Type name="SyncProgressCallback" nullable="nullable"/>
29426           </Argument>
29427         </ArgumentList>
29428         <Raises>
29429           <RaiseException name="WebAPIException">
29430             <descriptive>
29431                 <description><p>
29432  with error type NotFoundError, if the identifier does not match any profile saved.
29433                 </p></description>
29434                 <description><p>
29435  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
29436                 </p></description>
29437                 <description><p>
29438  with error type NotSupportedError, if this feature is not supported.
29439                 </p></description>
29440                 <description><p>
29441  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
29442                 </p></description>
29443                 <description><p>
29444  with error type SecurityError, if the application does not have the privilege to call this method.
29445                 </p></description>
29446                 <description><p>
29447  with error type UnknownError, if any other error occurs.
29448                 </p></description>
29449             </descriptive>
29450           </RaiseException>
29451         </Raises>
29452       </Operation>
29453       <Operation name="stopSync" id="::DataSynchronization::DataSynchronizationManager::stopSync">
29454         <webidl>    void stopSync(<ref>SyncProfileId</ref> profileId) raises(<ref>WebAPIException</ref>);</webidl>
29455         <descriptive>
29456             <brief>
29457  Stops an ongoing sync operation that is specified by the <em>profileId</em> parameter.
29458             </brief>
29459             <version>
29460  2.1
29461             </version>
29462             <privilegelevel>
29463  public
29464             </privilegelevel>
29465             <privilege>
29466  http://tizen.org/privilege/datasync
29467             </privilege>
29468             <Code> var profileId; //profileId obtained from SyncProfileInfo
29469  // Stops the ongoing sync operation
29470  tizen.datasync.stopSync(profileId);
29471  </Code>
29472         </descriptive>
29473         <Type type="void"/>
29474         <ArgumentList>
29475           <Argument name="profileId">
29476             <descriptive>
29477                 <description><p>
29478  The ID of the ongoing sync operation to stop.
29479                 </p></description>
29480             </descriptive>
29481             <Type name="SyncProfileId"/>
29482           </Argument>
29483         </ArgumentList>
29484         <Raises>
29485           <RaiseException name="WebAPIException">
29486             <descriptive>
29487                 <description><p>
29488  with error type NotFoundError, if the identifier does not match any profile saved.
29489                 </p></description>
29490                 <description><p>
29491  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
29492                 </p></description>
29493                 <description><p>
29494  with error type NotSupportedError, if this feature is not supported.
29495                 </p></description>
29496                 <description><p>
29497  with error type SecurityError, if the application does not have the privilege to call this method.
29498                 </p></description>
29499                 <description><p>
29500  with error type UnknownError, if any other error occurs.
29501                 </p></description>
29502             </descriptive>
29503           </RaiseException>
29504         </Raises>
29505       </Operation>
29506       <Operation name="getLastSyncStatistics" id="::DataSynchronization::DataSynchronizationManager::getLastSyncStatistics">
29507         <webidl>    <ref>SyncStatistics</ref>[] getLastSyncStatistics(<ref>SyncProfileId</ref> profileId) raises(<ref>WebAPIException</ref>);</webidl>
29508         <descriptive>
29509             <brief>
29510  Gets the sync statistics of a given profile ID.
29511             </brief>
29512             <version>
29513  2.1
29514             </version>
29515             <privilegelevel>
29516  public
29517             </privilegelevel>
29518             <privilege>
29519  http://tizen.org/privilege/datasync
29520             </privilege>
29521             <Code> var profileId; //profileId obtained from SyncProfileInfo
29522  // Gets the sync statistics information with the given ID
29523  var statistics = tizen.datasync.getLastSyncStatistics(profileId);
29524  </Code>
29525         </descriptive>
29526         <Type type="array">
29527           <descriptive>
29528               <description><p>
29529  SyncStatictics[] The sync statistics information of a given ID.
29530               </p></description>
29531           </descriptive>
29532           <Type name="SyncStatistics"/>
29533         </Type>
29534         <ArgumentList>
29535           <Argument name="profileId">
29536             <descriptive>
29537                 <description><p>
29538  The ID to use to get the sync statistics.
29539                 </p></description>
29540             </descriptive>
29541             <Type name="SyncProfileId"/>
29542           </Argument>
29543         </ArgumentList>
29544         <Raises>
29545           <RaiseException name="WebAPIException">
29546             <descriptive>
29547                 <description><p>
29548  with error type NotFoundError, if the identifier does not match any profile saved.
29549                 </p></description>
29550                 <description><p>
29551  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
29552                 </p></description>
29553                 <description><p>
29554  with error type NotSupportedError, if this feature is not supported.
29555                 </p></description>
29556                 <description><p>
29557  with error type SecurityError, if the application does not have the privilege to call this method.
29558                 </p></description>
29559                 <description><p>
29560  with error type UnknownError, if any other error occurs.
29561                 </p></description>
29562             </descriptive>
29563           </RaiseException>
29564         </Raises>
29565       </Operation>
29566     </Interface>
29567     <Interface name="SyncProgressCallback" id="::DataSynchronization::SyncProgressCallback">
29568       <webidl>  [Callback, NoInterfaceObject] interface SyncProgressCallback {
29569     void onprogress(<ref>SyncProfileId</ref> profileId, <ref>SyncServiceType</ref> serviceType, boolean isFromServer, unsigned long totalPerService, unsigned long syncedPerService);
29570
29571     void oncompleted(<ref>SyncProfileId</ref> profileId);
29572
29573     void onstopped(<ref>SyncProfileId</ref> profileId);
29574
29575     void onfailed(<ref>SyncProfileId</ref> profileId, <ref>WebAPIError</ref> error);
29576   };</webidl>
29577       <descriptive>
29578           <brief>
29579  This interface defines progress notification callbacks for the ongoing sync operation.
29580           </brief>
29581           <version>
29582  2.1
29583           </version>
29584       </descriptive>
29585       <ExtendedAttributeList>
29586         <ExtendedAttribute name="Callback">
29587           <webidl>Callback</webidl>
29588         </ExtendedAttribute>
29589         <ExtendedAttribute name="NoInterfaceObject">
29590           <webidl> NoInterfaceObject</webidl>
29591         </ExtendedAttribute>
29592       </ExtendedAttributeList>
29593       <Operation name="onprogress" id="::DataSynchronization::SyncProgressCallback::onprogress">
29594         <webidl>    void onprogress(<ref>SyncProfileId</ref> profileId, <ref>SyncServiceType</ref> serviceType, boolean isFromServer, unsigned long totalPerService, unsigned long syncedPerService);</webidl>
29595         <descriptive>
29596             <brief>
29597  Called when a synchronization operation is started and progress is made.
29598             </brief>
29599            <description>
29600             <p>
29601 The frequency of this callback invocation is dependent on the platform implementation.
29602 Normally the packet size from a server affects it, that is, if the server sends a bigger packet containing many records in it, the platform will process it at once and invoke this callback less frequently.
29603             </p>
29604            </description>
29605             <version>
29606  2.1
29607             </version>
29608         </descriptive>
29609         <Type type="void"/>
29610         <ArgumentList>
29611           <Argument name="profileId">
29612             <descriptive>
29613                 <description><p>
29614  The ID of the corresponding sync operation.
29615                 </p></description>
29616             </descriptive>
29617             <Type name="SyncProfileId"/>
29618           </Argument>
29619           <Argument name="serviceType">
29620             <descriptive>
29621                 <description><p>
29622  The sync service category type.
29623                 </p></description>
29624             </descriptive>
29625             <Type name="SyncServiceType"/>
29626           </Argument>
29627           <Argument name="isFromServer">
29628             <descriptive>
29629                 <description><p>
29630  The direction of the operation.<br/> If the direction of operation is from the server to the client, then value is<var> true</var>.
29631                 </p></description>
29632             </descriptive>
29633             <Type type="boolean"/>
29634           </Argument>
29635           <Argument name="totalPerService">
29636             <descriptive>
29637                 <description><p>
29638  The total number of records to synchronize for the current sync service type aggregating all operations.
29639                 </p></description>
29640             </descriptive>
29641             <Type type="unsigned long"/>
29642           </Argument>
29643           <Argument name="syncedPerService">
29644             <descriptive>
29645                 <description><p>
29646  The number of synchronized records for the current sync service type aggregating all operations.
29647                 </p></description>
29648             </descriptive>
29649             <Type type="unsigned long"/>
29650           </Argument>
29651         </ArgumentList>
29652       </Operation>
29653       <Operation name="oncompleted" id="::DataSynchronization::SyncProgressCallback::oncompleted">
29654         <webidl>    void oncompleted(<ref>SyncProfileId</ref> profileId);</webidl>
29655         <descriptive>
29656             <brief>
29657  Called when the sync operation has completed.
29658             </brief>
29659             <version>
29660  2.1
29661             </version>
29662         </descriptive>
29663         <Type type="void"/>
29664         <ArgumentList>
29665           <Argument name="profileId">
29666             <descriptive>
29667                 <description><p>
29668  The ID of the corresponding sync operation.
29669                 </p></description>
29670             </descriptive>
29671             <Type name="SyncProfileId"/>
29672           </Argument>
29673         </ArgumentList>
29674       </Operation>
29675       <Operation name="onstopped" id="::DataSynchronization::SyncProgressCallback::onstopped">
29676         <webidl>    void onstopped(<ref>SyncProfileId</ref> profileId);</webidl>
29677         <descriptive>
29678             <brief>
29679  Called when the sync operation is stopped by user.
29680             </brief>
29681             <version>
29682  2.1
29683             </version>
29684         </descriptive>
29685         <Type type="void"/>
29686         <ArgumentList>
29687           <Argument name="profileId">
29688             <descriptive>
29689                 <description><p>
29690  The ID of the corresponding sync operation.
29691                 </p></description>
29692             </descriptive>
29693             <Type name="SyncProfileId"/>
29694           </Argument>
29695         </ArgumentList>
29696       </Operation>
29697       <Operation name="onfailed" id="::DataSynchronization::SyncProgressCallback::onfailed">
29698         <webidl>    void onfailed(<ref>SyncProfileId</ref> profileId, <ref>WebAPIError</ref> error);</webidl>
29699         <descriptive>
29700             <brief>
29701  Called when the sync operation fails.
29702             </brief>
29703             <version>
29704  2.1
29705             </version>
29706         </descriptive>
29707         <Type type="void"/>
29708         <ArgumentList>
29709           <Argument name="profileId">
29710             <descriptive>
29711                 <description><p>
29712  The ID of the corresponding sync operation.
29713                 </p></description>
29714             </descriptive>
29715             <Type name="SyncProfileId"/>
29716           </Argument>
29717           <Argument name="error">
29718             <descriptive>
29719                 <description><p>
29720  The reason for the sync failure.
29721                 </p></description>
29722             </descriptive>
29723             <Type name="WebAPIError"/>
29724           </Argument>
29725         </ArgumentList>
29726       </Operation>
29727     </Interface>
29728   </Module>
29729   <Module name="Download" id="::Download">
29730     <webidl>module Download {
29731     typedef object DownloadHTTPHeaderFields;
29732
29733     enum DownloadState { &quot;QUEUED&quot;, &quot;DOWNLOADING&quot;, &quot;PAUSED&quot;, &quot;CANCELED&quot;, &quot;COMPLETED&quot;, &quot;FAILED&quot; };
29734
29735     enum DownloadNetworkType { &quot;CELLULAR&quot;, &quot;WIFI&quot;, &quot;ALL&quot; };
29736
29737     [NoInterfaceObject] interface DownloadManagerObject {
29738         readonly attribute <ref>DownloadManager</ref> download;
29739     };
29740     <ref>Tizen</ref> implements <ref>DownloadManagerObject</ref>;
29741
29742     [Constructor(DOMString url, optional DOMString? destination, optional DOMString? fileName, optional <ref>DownloadNetworkType</ref>? networkType, optional <ref>DownloadHTTPHeaderFields</ref>? httpHeader)]
29743     interface DownloadRequest {
29744         attribute DOMString url;
29745
29746         attribute DOMString? destination;
29747
29748         attribute DOMString? fileName;
29749
29750         attribute <ref>DownloadNetworkType</ref>? networkType;
29751
29752         attribute <ref>DownloadHTTPHeaderFields</ref>? httpHeader;
29753     };
29754
29755    [NoInterfaceObject] interface DownloadManager {
29756        long start(<ref>DownloadRequest</ref> downloadRequest,
29757                     optional <ref>DownloadCallback</ref>? downloadCallback) raises(<ref>WebAPIException</ref>);
29758
29759        void cancel(long downloadId) raises(<ref>WebAPIException</ref>);
29760
29761        void pause(long downloadId) raises(<ref>WebAPIException</ref>);
29762
29763        void resume(long downloadId) raises(<ref>WebAPIException</ref>);
29764
29765        <ref>DownloadState</ref> getState(long downloadId) raises(<ref>WebAPIException</ref>);
29766
29767        <ref>DownloadRequest</ref> getDownloadRequest(long downloadId) raises(<ref>WebAPIException</ref>);
29768
29769        DOMString getMIMEType(long downloadId) raises(<ref>WebAPIException</ref>);
29770
29771        void setListener(long downloadId, <ref>DownloadCallback</ref> downloadCallback) raises(<ref>WebAPIException</ref>);
29772    };
29773
29774    [Callback, NoInterfaceObject] interface DownloadCallback {
29775        void onprogress(long downloadId, unsigned long long receivedSize, unsigned long long totalSize);
29776
29777        void onpaused(long downloadId);
29778
29779        void oncanceled(long downloadId);
29780
29781        void oncompleted(long downloadId, DOMString fullPath);
29782
29783        void onfailed(long downloadId, <ref>WebAPIError</ref> error);
29784    };
29785 };</webidl>
29786     <descriptive>
29787         <brief>
29788  This API provides methods to asynchronously download the contents of a URL to a storage.
29789         </brief>
29790        <description>
29791         <p>
29792 For more information on the Download features, see <a href="../../org.tizen.web.appprogramming/html/guide/content_guide/download.htm">Download Guide</a>.
29793         </p>
29794        </description>
29795         <version>
29796  2.0
29797         </version>
29798         <def-api-feature identifier="http://tizen.org/feature/network.wifi">
29799           <descriptive>
29800            <description>
29801             <p>
29802 To guarantee this application running on a device with Wi-Fi feature, define below in the config file: 
29803             </p>
29804            </description>
29805           </descriptive>
29806         </def-api-feature>
29807         <def-api-feature identifier="http://tizen.org/feature/network.telephony">
29808           <descriptive>
29809            <description>
29810             <p>
29811 To guarantee this application running on a device with Cellular feature, define below in the config file: 
29812             </p>
29813            </description>
29814           </descriptive>
29815         </def-api-feature>
29816     </descriptive>
29817     <Typedef name="DownloadHTTPHeaderFields" id="::Download::DownloadHTTPHeaderFields">
29818       <webidl>    typedef object DownloadHTTPHeaderFields;</webidl>
29819       <descriptive>
29820           <brief>
29821  A set of HTTP header fields.
29822           </brief>
29823          <description>
29824           <p>
29825 The key / value type of each HTTP header field should be DOMString.
29826           </p>
29827          </description>
29828           <version>
29829  2.1
29830           </version>
29831       </descriptive>
29832       <Type type="object"/>
29833     </Typedef>
29834     <Enum name="DownloadState" id="::Download::DownloadState">
29835       <webidl>    enum DownloadState { &quot;QUEUED&quot;, &quot;DOWNLOADING&quot;, &quot;PAUSED&quot;, &quot;CANCELED&quot;, &quot;COMPLETED&quot;, &quot;FAILED&quot; };</webidl>
29836       <descriptive>
29837           <brief>
29838  An enumerator to indicate the state of a download operation.
29839           </brief>
29840          <description>
29841           <p>
29842 The following values are supported:
29843           </p>
29844           <ul>
29845             <li>
29846 QUEUED - Indicates that the download operation is listed in a queue.            </li>
29847             <li>
29848 DOWNLOADING - Indicates that the download operation is in progress.            </li>
29849             <li>
29850 PAUSED - Indicates that the download operation is in a paused state by user request.            </li>
29851             <li>
29852 CANCELED - Indicates that the download operation is canceled by user request.            </li>
29853             <li>
29854 COMPLETED - Indicates that the download operation is in a completed state.            </li>
29855             <li>
29856 FAILED - Indicates that the download operation has failed due to some reasons.            </li>
29857           </ul>
29858          </description>
29859           <version>
29860  2.0
29861           </version>
29862       </descriptive>
29863       <EnumValue stringvalue="QUEUED">
29864         <webidl> &quot;QUEUED</webidl>
29865       </EnumValue>
29866       <EnumValue stringvalue="DOWNLOADING">
29867         <webidl> &quot;DOWNLOADING</webidl>
29868       </EnumValue>
29869       <EnumValue stringvalue="PAUSED">
29870         <webidl> &quot;PAUSED</webidl>
29871       </EnumValue>
29872       <EnumValue stringvalue="CANCELED">
29873         <webidl> &quot;CANCELED</webidl>
29874       </EnumValue>
29875       <EnumValue stringvalue="COMPLETED">
29876         <webidl> &quot;COMPLETED</webidl>
29877       </EnumValue>
29878       <EnumValue stringvalue="FAILED">
29879         <webidl> &quot;FAILED</webidl>
29880       </EnumValue>
29881     </Enum>
29882     <Enum name="DownloadNetworkType" id="::Download::DownloadNetworkType">
29883       <webidl>    enum DownloadNetworkType { &quot;CELLULAR&quot;, &quot;WIFI&quot;, &quot;ALL&quot; };</webidl>
29884       <descriptive>
29885           <brief>
29886  An enumerator to indicate the network type.
29887           </brief>
29888          <description>
29889           <p>
29890 The following values are supported:
29891           </p>
29892           <ul>
29893             <li>
29894 CELLULAR - Indicates that the download operation is allowed in the cellular network only.            </li>
29895             <li>
29896 WIFI - Indicates that the download operation is allowed in the Wi-Fi network only.            </li>
29897             <li>
29898 ALL - Indicates that the download operation is allowed in all network types.            </li>
29899           </ul>
29900          </description>
29901           <version>
29902  2.1
29903           </version>
29904       </descriptive>
29905       <EnumValue stringvalue="CELLULAR">
29906         <webidl> &quot;CELLULAR</webidl>
29907       </EnumValue>
29908       <EnumValue stringvalue="WIFI">
29909         <webidl> &quot;WIFI</webidl>
29910       </EnumValue>
29911       <EnumValue stringvalue="ALL">
29912         <webidl> &quot;ALL</webidl>
29913       </EnumValue>
29914     </Enum>
29915     <Interface name="DownloadManagerObject" id="::Download::DownloadManagerObject">
29916       <webidl>    [NoInterfaceObject] interface DownloadManagerObject {
29917         readonly attribute <ref>DownloadManager</ref> download;
29918     };</webidl>
29919       <descriptive>
29920           <brief>
29921  This interface defines the default download manager that is instantiated by the <em>Tizen </em>object.
29922 There will be a <em>tizen.download </em>object that allows access to the functionality of the Download API.
29923           </brief>
29924           <version>
29925  2.0
29926           </version>
29927       </descriptive>
29928       <ExtendedAttributeList>
29929         <ExtendedAttribute name="NoInterfaceObject">
29930           <webidl>NoInterfaceObject</webidl>
29931         </ExtendedAttribute>
29932       </ExtendedAttributeList>
29933       <Attribute readonly="readonly" name="download" id="::Download::DownloadManagerObject::download">
29934         <webidl>        readonly attribute <ref>DownloadManager</ref> download;</webidl>
29935         <Type name="DownloadManager"/>
29936       </Attribute>
29937     </Interface>
29938     <Implements name1="Tizen" name2="DownloadManagerObject">
29939       <webidl>    <ref>Tizen</ref> implements <ref>DownloadManagerObject</ref>;</webidl>
29940     </Implements>
29941     <Interface name="DownloadRequest" id="::Download::DownloadRequest">
29942       <webidl>    [Constructor(DOMString url, optional DOMString? destination, optional DOMString? fileName, optional <ref>DownloadNetworkType</ref>? networkType, optional <ref>DownloadHTTPHeaderFields</ref>? httpHeader)]
29943     interface DownloadRequest {
29944         attribute DOMString url;
29945
29946         attribute DOMString? destination;
29947
29948         attribute DOMString? fileName;
29949
29950         attribute <ref>DownloadNetworkType</ref>? networkType;
29951
29952         attribute <ref>DownloadHTTPHeaderFields</ref>? httpHeader;
29953     };</webidl>
29954       <descriptive>
29955           <brief>
29956  This interface defines the download request object.
29957           </brief>
29958           <version>
29959  2.0
29960           </version>
29961       </descriptive>
29962       <ExtendedAttributeList>
29963         <ExtendedAttribute name="Constructor">
29964           <webidl>Constructor(DOMString url, optional DOMString? destination, optional DOMString? fileName, optional <ref>DownloadNetworkType</ref>? networkType, optional <ref>DownloadHTTPHeaderFields</ref>? httpHeader)</webidl>
29965           <ArgumentList>
29966             <Argument name="url">
29967               <Type type="DOMString"/>
29968             </Argument>
29969             <Argument optional="optional" name="destination">
29970               <Type type="DOMString" nullable="nullable"/>
29971             </Argument>
29972             <Argument optional="optional" name="fileName">
29973               <Type type="DOMString" nullable="nullable"/>
29974             </Argument>
29975             <Argument optional="optional" name="networkType">
29976               <Type name="DownloadNetworkType" nullable="nullable"/>
29977             </Argument>
29978             <Argument optional="optional" name="httpHeader">
29979               <Type name="DownloadHTTPHeaderFields" nullable="nullable"/>
29980             </Argument>
29981           </ArgumentList>
29982         </ExtendedAttribute>
29983       </ExtendedAttributeList>
29984       <Attribute name="url" id="::Download::DownloadRequest::url">
29985         <webidl>        attribute DOMString url;</webidl>
29986         <descriptive>
29987             <brief>
29988  An attribute to store the URL of the object to download.
29989             </brief>
29990             <version>
29991  2.0
29992             </version>
29993         </descriptive>
29994         <Type type="DOMString"/>
29995       </Attribute>
29996       <Attribute name="destination" id="::Download::DownloadRequest::destination">
29997         <webidl>        attribute DOMString? destination;</webidl>
29998         <descriptive>
29999             <brief>
30000  An attribute to store the folder path of the destination folder to which a requested file object will be downloaded.
30001             </brief>
30002            <description>
30003             <p>
30004 If the destination is not specified or an empty string, the file will be downloaded to the default storage: &quot;Downloads&quot;. For more information, see <a href="../../org.tizen.web.device.apireference/tizen/filesystem.html">Filesystem API</a>.
30005             </p>
30006             <p>
30007 The default value is an empty string.
30008             </p>
30009            </description>
30010             <version>
30011  2.0
30012             </version>
30013         </descriptive>
30014         <Type type="DOMString" nullable="nullable"/>
30015       </Attribute>
30016       <Attribute name="fileName" id="::Download::DownloadRequest::fileName">
30017         <webidl>        attribute DOMString? fileName;</webidl>
30018         <descriptive>
30019             <brief>
30020  An attribute to store the file name for the specified URL.
30021             </brief>
30022            <description>
30023             <p>
30024 If the file name is not given or an empty string, the original file name from URL is used.
30025             </p>
30026             <p>
30027 The default value is an empty string.
30028             </p>
30029            </description>
30030             <version>
30031  2.0
30032             </version>
30033         </descriptive>
30034         <Type type="DOMString" nullable="nullable"/>
30035       </Attribute>
30036       <Attribute name="networkType" id="::Download::DownloadRequest::networkType">
30037         <webidl>        attribute <ref>DownloadNetworkType</ref>? networkType;</webidl>
30038         <descriptive>
30039             <brief>
30040  An attribute to store the allowed network type.
30041             </brief>
30042            <description>
30043             <p>
30044 If the network type is not given, all network type are allowed.
30045             </p>
30046             <p>
30047 The default value is &quot;ALL&quot;.
30048             </p>
30049            </description>
30050             <version>
30051  2.1
30052             </version>
30053         </descriptive>
30054         <Type name="DownloadNetworkType" nullable="nullable"/>
30055       </Attribute>
30056       <Attribute name="httpHeader" id="::Download::DownloadRequest::httpHeader">
30057         <webidl>        attribute <ref>DownloadHTTPHeaderFields</ref>? httpHeader;</webidl>
30058         <descriptive>
30059             <brief>
30060  An attribute to store extra HTTP header fields.
30061             </brief>
30062            <description>
30063             <p>
30064 For more information about HTTP header fields, see <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2">RFC-2616</a>            </p>
30065             <p>
30066 The default value is an empty object.
30067             </p>
30068            </description>
30069             <Code> var req = new tizen.DownloadRequest(&quot;http://download.tizen.org/tools/README.txt&quot;);
30070  req.httpHeader[&quot;Pragma&quot;] = &quot;no-cache&quot;;
30071  req.httpHeader[&quot;Cookie&quot;] = &quot;version=1; Skin=new&quot;;
30072  req.httpHeader[&quot;X-Agent&quot;] = &quot;Tizen Sample App&quot;;
30073  </Code>
30074             <version>
30075  2.1
30076             </version>
30077         </descriptive>
30078         <Type name="DownloadHTTPHeaderFields" nullable="nullable"/>
30079       </Attribute>
30080     </Interface>
30081     <Interface name="DownloadManager" id="::Download::DownloadManager">
30082       <webidl>   [NoInterfaceObject] interface DownloadManager {
30083        long start(<ref>DownloadRequest</ref> downloadRequest,
30084                     optional <ref>DownloadCallback</ref>? downloadCallback) raises(<ref>WebAPIException</ref>);
30085
30086        void cancel(long downloadId) raises(<ref>WebAPIException</ref>);
30087
30088        void pause(long downloadId) raises(<ref>WebAPIException</ref>);
30089
30090        void resume(long downloadId) raises(<ref>WebAPIException</ref>);
30091
30092        <ref>DownloadState</ref> getState(long downloadId) raises(<ref>WebAPIException</ref>);
30093
30094        <ref>DownloadRequest</ref> getDownloadRequest(long downloadId) raises(<ref>WebAPIException</ref>);
30095
30096        DOMString getMIMEType(long downloadId) raises(<ref>WebAPIException</ref>);
30097
30098        void setListener(long downloadId, <ref>DownloadCallback</ref> downloadCallback) raises(<ref>WebAPIException</ref>);
30099    };</webidl>
30100       <descriptive>
30101           <brief>
30102  This interface handles requests for downloading. Each step of download operation will be informed through callbacks.
30103           </brief>
30104           <version>
30105  2.0
30106           </version>
30107       </descriptive>
30108       <ExtendedAttributeList>
30109         <ExtendedAttribute name="NoInterfaceObject">
30110           <webidl>NoInterfaceObject</webidl>
30111         </ExtendedAttribute>
30112       </ExtendedAttributeList>
30113       <Operation name="start" id="::Download::DownloadManager::start">
30114         <webidl>       long start(<ref>DownloadRequest</ref> downloadRequest,
30115                     optional <ref>DownloadCallback</ref>? downloadCallback) raises(<ref>WebAPIException</ref>);</webidl>
30116         <descriptive>
30117             <brief>
30118  Starts a download operation with the specified URL information.
30119             </brief>
30120             <version>
30121  2.0
30122             </version>
30123             <privilegelevel>
30124  public
30125             </privilegelevel>
30126             <privilege>
30127  http://tizen.org/privilege/download
30128             </privilege>
30129             <Code> var listener = {
30130    onprogress: function(id, receivedSize, totalSize) {
30131      console.log('Received with id: ' + id + ', ' + receivedSize + '/' + totalSize);
30132    },
30133    onpaused: function(id) {
30134      console.log('Paused with id: ' + id);
30135    },
30136    oncanceled: function(id) {
30137      console.log('Canceled with id: ' + id);
30138    },
30139    oncompleted: function(id, fullPath) {
30140      console.log('Completed with id: ' + id + ', full path: ' + fullPath);
30141    },
30142    onfailed: function(id, error) {
30143      console.log('Failed with id: ' + id + ', error name: ' + error.name);
30144    }
30145  };
30146
30147  // Starts downloading of the file from the Web with the corresponding callbacks.
30148  var downloadRequest = new tizen.DownloadRequest(&quot;http://download.tizen.org/tools/README.txt&quot;, &quot;documents&quot;);
30149  downloadId = tizen.download.start(downloadRequest, listener);
30150  </Code>
30151         </descriptive>
30152         <Type type="long">
30153           <descriptive>
30154               <description><p>
30155  long An identifier for each download operation.
30156               </p></description>
30157           </descriptive>
30158         </Type>
30159         <ArgumentList>
30160           <Argument name="downloadRequest">
30161             <descriptive>
30162                 <description><p>
30163  The URL and destination information of the object to download.
30164                 </p></description>
30165             </descriptive>
30166             <Type name="DownloadRequest"/>
30167           </Argument>
30168           <Argument optional="optional" name="downloadCallback">
30169             <descriptive>
30170                 <description><p>
30171  The method to invoke when the download state changes or an error occurs.
30172                 </p></description>
30173             </descriptive>
30174             <Type name="DownloadCallback" nullable="nullable"/>
30175           </Argument>
30176         </ArgumentList>
30177         <Raises>
30178           <RaiseException name="WebAPIException">
30179             <descriptive>
30180                 <description><p>
30181  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
30182                 </p></description>
30183                 <description><p>
30184  with error type NotSupportedError, if this feature is not supported.
30185                 </p></description>
30186                 <description><p>
30187  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
30188                 </p></description>
30189                 <description><p>
30190  with error type SecurityError, if the application does not have the privilege to call this method.
30191                 </p></description>
30192                 <description><p>
30193  with error type UnknownError if any other error occurs.
30194                 </p></description>
30195             </descriptive>
30196           </RaiseException>
30197         </Raises>
30198       </Operation>
30199       <Operation name="cancel" id="::Download::DownloadManager::cancel">
30200         <webidl>       void cancel(long downloadId) raises(<ref>WebAPIException</ref>);</webidl>
30201         <descriptive>
30202             <brief>
30203  Cancels an ongoing download operation that is specified by the <em>downloadId</em> parameter.
30204             </brief>
30205             <version>
30206  2.0
30207             </version>
30208             <Code> // Cancels the ongoing download operation with the specified id.
30209  tizen.download.cancel(downloadId);
30210  </Code>
30211         </descriptive>
30212         <Type type="void"/>
30213         <ArgumentList>
30214           <Argument name="downloadId">
30215             <descriptive>
30216                 <description><p>
30217  The ID of the ongoing download operation to stop.
30218                 </p></description>
30219             </descriptive>
30220             <Type type="long"/>
30221           </Argument>
30222         </ArgumentList>
30223         <Raises>
30224           <RaiseException name="WebAPIException">
30225             <descriptive>
30226                 <description><p>
30227  with error type NotFoundError, if the identifier does not match any download operation in progress.
30228                 </p></description>
30229                 <description><p>
30230  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
30231                 </p></description>
30232                 <description><p>
30233  with error type NotSupportedError, if this feature is not supported.
30234                 </p></description>
30235                 <description><p>
30236  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
30237                 </p></description>
30238                 <description><p>
30239  with error type UnknownError, if any other error occurs.
30240                 </p></description>
30241             </descriptive>
30242           </RaiseException>
30243         </Raises>
30244       </Operation>
30245       <Operation name="pause" id="::Download::DownloadManager::pause">
30246         <webidl>       void pause(long downloadId) raises(<ref>WebAPIException</ref>);</webidl>
30247         <descriptive>
30248             <brief>
30249  Pauses an ongoing download operation that is specified by the <em>downloadId</em> parameter.
30250 The paused download operation can be resumed later by the <em>resume()</em> method.
30251             </brief>
30252             <version>
30253  2.0
30254             </version>
30255             <Code> // Pauses the ongoing download operation with the specified id.
30256  tizen.download.pause(downloadId);
30257  </Code>
30258         </descriptive>
30259         <Type type="void"/>
30260         <ArgumentList>
30261           <Argument name="downloadId">
30262             <descriptive>
30263                 <description><p>
30264  The ID of the ongoing download operation to pause.
30265                 </p></description>
30266             </descriptive>
30267             <Type type="long"/>
30268           </Argument>
30269         </ArgumentList>
30270         <Raises>
30271           <RaiseException name="WebAPIException">
30272             <descriptive>
30273                 <description><p>
30274  with error type NotFoundError, if the identifier does not match any download operation in progress.
30275                 </p></description>
30276                 <description><p>
30277  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
30278                 </p></description>
30279                 <description><p>
30280  with error type NotSupportedError, if this feature is not supported.
30281                 </p></description>
30282                 <description><p>
30283  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
30284                 </p></description>
30285                 <description><p>
30286  with error type UnknownError, if any other error occurs.
30287                 </p></description>
30288             </descriptive>
30289           </RaiseException>
30290         </Raises>
30291       </Operation>
30292       <Operation name="resume" id="::Download::DownloadManager::resume">
30293         <webidl>       void resume(long downloadId) raises(<ref>WebAPIException</ref>);</webidl>
30294         <descriptive>
30295             <brief>
30296  Resumes a paused download operation that is specified by the <em>downloadId</em> parameter.
30297             </brief>
30298             <version>
30299  2.0
30300             </version>
30301             <Code> // Resumes the paused download operation with the specified id.
30302  tizen.download.resume(downloadId);
30303  </Code>
30304         </descriptive>
30305         <Type type="void"/>
30306         <ArgumentList>
30307           <Argument name="downloadId">
30308             <descriptive>
30309                 <description><p>
30310  The ID of the paused download operation to be resume.
30311                 </p></description>
30312             </descriptive>
30313             <Type type="long"/>
30314           </Argument>
30315         </ArgumentList>
30316         <Raises>
30317           <RaiseException name="WebAPIException">
30318             <descriptive>
30319                 <description><p>
30320  with error type NotFoundError, if the identifier does not match any download operation in progress.
30321                 </p></description>
30322                 <description><p>
30323  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
30324                 </p></description>
30325                 <description><p>
30326  with error type NotSupportedError, if this feature is not supported.
30327                 </p></description>
30328                 <description><p>
30329  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
30330                 </p></description>
30331                 <description><p>
30332  with error type UnknownError, if any other error occurs.
30333                 </p></description>
30334             </descriptive>
30335           </RaiseException>
30336         </Raises>
30337       </Operation>
30338       <Operation name="getState" id="::Download::DownloadManager::getState">
30339         <webidl>       <ref>DownloadState</ref> getState(long downloadId) raises(<ref>WebAPIException</ref>);</webidl>
30340         <descriptive>
30341             <brief>
30342  Gets the download state of an operation synchronously with the specified ID.
30343             </brief>
30344             <version>
30345  2.0
30346             </version>
30347             <Code> // Gets the state of the download operation with the given id.
30348  var state = tizen.download.getState(downloadId);
30349  </Code>
30350         </descriptive>
30351         <Type name="DownloadState">
30352           <descriptive>
30353               <description><p>
30354  DownloadState The current download state of the specified ID.
30355               </p></description>
30356           </descriptive>
30357         </Type>
30358         <ArgumentList>
30359           <Argument name="downloadId">
30360             <descriptive>
30361                 <description><p>
30362  The ID to get the current state of download operation.
30363                 </p></description>
30364             </descriptive>
30365             <Type type="long"/>
30366           </Argument>
30367         </ArgumentList>
30368         <Raises>
30369           <RaiseException name="WebAPIException">
30370             <descriptive>
30371                 <description><p>
30372  with error type NotFoundError, if the identifier does not match any download operation in progress.
30373                 </p></description>
30374                 <description><p>
30375  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
30376                 </p></description>
30377                 <description><p>
30378  with error type NotSupportedError, if this feature is not supported.
30379                 </p></description>
30380                 <description><p>
30381  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
30382                 </p></description>
30383                 <description><p>
30384  with error type UnknownError, if any other error occurs.
30385                 </p></description>
30386             </descriptive>
30387           </RaiseException>
30388         </Raises>
30389       </Operation>
30390       <Operation name="getDownloadRequest" id="::Download::DownloadManager::getDownloadRequest">
30391         <webidl>       <ref>DownloadRequest</ref> getDownloadRequest(long downloadId) raises(<ref>WebAPIException</ref>);</webidl>
30392         <descriptive>
30393             <brief>
30394  Gets the DownloadRequest object from a given id.
30395             </brief>
30396             <version>
30397  2.0
30398             </version>
30399             <Code> // Gets the download request information with the given id.
30400  var downloadRequest = tizen.download.getDownloadRequest(downloadId);
30401  </Code>
30402         </descriptive>
30403         <Type name="DownloadRequest">
30404           <descriptive>
30405               <description><p>
30406  DownloadRequest The download request information of the given id.
30407               </p></description>
30408           </descriptive>
30409         </Type>
30410         <ArgumentList>
30411           <Argument name="downloadId">
30412             <descriptive>
30413                 <description><p>
30414  The ID to get the download request information.
30415                 </p></description>
30416             </descriptive>
30417             <Type type="long"/>
30418           </Argument>
30419         </ArgumentList>
30420         <Raises>
30421           <RaiseException name="WebAPIException">
30422             <descriptive>
30423                 <description><p>
30424  with error type NotFoundError, if the identifier does not match
30425 any download operation in progress.
30426                 </p></description>
30427                 <description><p>
30428  with error type TypeMismatchError, if the input parameter is not
30429 compatible with the expected type.
30430                 </p></description>
30431                 <description><p>
30432  with error type NotSupportedError, if this feature is not supported.
30433                 </p></description>
30434                 <description><p>
30435  with error type InvalidValuesError, if any of the input
30436 parameters contain an invalid value.
30437                 </p></description>
30438                 <description><p>
30439  with error type UnknownError in any other error case.
30440                 </p></description>
30441             </descriptive>
30442           </RaiseException>
30443         </Raises>
30444       </Operation>
30445       <Operation name="getMIMEType" id="::Download::DownloadManager::getMIMEType">
30446         <webidl>       DOMString getMIMEType(long downloadId) raises(<ref>WebAPIException</ref>);</webidl>
30447         <descriptive>
30448             <brief>
30449  Gets the MIME type of the downloaded file.
30450             </brief>
30451             <remark>
30452  This function will return a valid MIME type when the download operation has been started
30453 and successfully retrieved the file header.
30454             </remark>
30455             <version>
30456  2.0
30457             </version>
30458             <Code> // Get the MIME type of the download operation with the given id.
30459  var MIMEtype = tizen.download.getMIMEType(downloadId);
30460  </Code>
30461         </descriptive>
30462         <Type type="DOMString">
30463           <descriptive>
30464               <description><p>
30465  DOMString The MIME type of the downloaded file.
30466               </p></description>
30467           </descriptive>
30468         </Type>
30469         <ArgumentList>
30470           <Argument name="downloadId">
30471             <descriptive>
30472                 <description><p>
30473  The ID to get the MIME type information.
30474                 </p></description>
30475             </descriptive>
30476             <Type type="long"/>
30477           </Argument>
30478         </ArgumentList>
30479         <Raises>
30480           <RaiseException name="WebAPIException">
30481             <descriptive>
30482                 <description><p>
30483  with error type NotFoundError, if the identifier does not match
30484 any download operation in progress.
30485                 </p></description>
30486                 <description><p>
30487  with error type TypeMismatchError, if the input parameter is not
30488 compatible with the expected type.
30489                 </p></description>
30490                 <description><p>
30491  with error type NotSupportedError, if this feature is not supported.
30492                 </p></description>
30493                 <description><p>
30494  with error type InvalidValuesError, if any of the input
30495 parameters contain an invalid value.
30496                 </p></description>
30497                 <description><p>
30498  with error type UnknownError in any other error case.
30499                 </p></description>
30500             </descriptive>
30501           </RaiseException>
30502         </Raises>
30503       </Operation>
30504       <Operation name="setListener" id="::Download::DownloadManager::setListener">
30505         <webidl>       void setListener(long downloadId, <ref>DownloadCallback</ref> downloadCallback) raises(<ref>WebAPIException</ref>);</webidl>
30506         <descriptive>
30507             <brief>
30508  Sets the download callback to the download operation of given id.
30509 It's possible to change or register the listener of download operation using the saved id.
30510             </brief>
30511             <version>
30512  2.0
30513             </version>
30514             <Code> var listener = {
30515    onprogress: function(id, receivedSize, totalSize) {
30516      console.log('Received with id: ' + id + ', ' + receivedSize + '/' + totalSize);
30517    },
30518    onpaused: function(id) {
30519      console.log('Paused with id: ' + id);
30520    },
30521    oncanceled: function(id) {
30522      console.log('Canceled with id: ' + id);
30523    },
30524    oncompleted: function(id, fileName) {
30525      console.log('Completed with id: ' + id + ', file name: ' + fileName);
30526    },
30527    onfailed: function(id, error) {
30528      console.log('Failed with id: ' + id + ', error name: ' + error.name);
30529    }
30530  };
30531
30532  // Start downloading the html file on the web with the corresponding callbacks.
30533  var downloadRequest = new tizen.DownloadRequest(&quot;http://download.tizen.org/tools/README.txt&quot;, &quot;documents&quot;);
30534  downloadId = tizen.download.start(downloadRequest);
30535
30536  // Add the listener.
30537  tizen.download.setListener(downloadId, listener);
30538  </Code>
30539         </descriptive>
30540         <Type type="void"/>
30541         <ArgumentList>
30542           <Argument name="downloadId">
30543             <descriptive>
30544                 <description><p>
30545  The ID to set the download callback.
30546                 </p></description>
30547             </descriptive>
30548             <Type type="long"/>
30549           </Argument>
30550           <Argument name="downloadCallback">
30551             <descriptive>
30552                 <description><p>
30553  The method to invoke when the download state changes or an error occurs.
30554                 </p></description>
30555             </descriptive>
30556             <Type name="DownloadCallback"/>
30557           </Argument>
30558         </ArgumentList>
30559         <Raises>
30560           <RaiseException name="WebAPIException">
30561             <descriptive>
30562                 <description><p>
30563  with error type NotFoundError, if the identifier does not match
30564 any download operation in progress.
30565                 </p></description>
30566                 <description><p>
30567  with error type TypeMismatchError, if the input parameter is not
30568 compatible with the expected type.
30569                 </p></description>
30570                 <description><p>
30571  with error type NotSupportedError, if this feature is not supported.
30572                 </p></description>
30573                 <description><p>
30574  with error type InvalidValuesError, if any of the input
30575 parameters contain an invalid value.
30576                 </p></description>
30577                 <description><p>
30578  with error type UnknownError in any other error case.
30579                 </p></description>
30580             </descriptive>
30581           </RaiseException>
30582         </Raises>
30583       </Operation>
30584     </Interface>
30585     <Interface name="DownloadCallback" id="::Download::DownloadCallback">
30586       <webidl>   [Callback, NoInterfaceObject] interface DownloadCallback {
30587        void onprogress(long downloadId, unsigned long long receivedSize, unsigned long long totalSize);
30588
30589        void onpaused(long downloadId);
30590
30591        void oncanceled(long downloadId);
30592
30593        void oncompleted(long downloadId, DOMString fullPath);
30594
30595        void onfailed(long downloadId, <ref>WebAPIError</ref> error);
30596    };</webidl>
30597       <descriptive>
30598           <brief>
30599  This interface defines notification callbacks for the download state change or progress.
30600           </brief>
30601           <version>
30602  2.0
30603           </version>
30604       </descriptive>
30605       <ExtendedAttributeList>
30606         <ExtendedAttribute name="Callback">
30607           <webidl>Callback</webidl>
30608         </ExtendedAttribute>
30609         <ExtendedAttribute name="NoInterfaceObject">
30610           <webidl> NoInterfaceObject</webidl>
30611         </ExtendedAttribute>
30612       </ExtendedAttributeList>
30613       <Operation name="onprogress" id="::Download::DownloadCallback::onprogress">
30614         <webidl>       void onprogress(long downloadId, unsigned long long receivedSize, unsigned long long totalSize);</webidl>
30615         <descriptive>
30616             <brief>
30617  Called when a download is successful and it called multiple times as the download progresses.
30618 The interval between <em>onprogress()</em> callback is platform-dependent. When the download is started, the <em>receivedSize </em>can be <var>0</var>.
30619             </brief>
30620             <version>
30621  2.0
30622             </version>
30623         </descriptive>
30624         <Type type="void"/>
30625         <ArgumentList>
30626           <Argument name="downloadId">
30627             <descriptive>
30628                 <description><p>
30629  The ID of the corresponding download operation.
30630                 </p></description>
30631             </descriptive>
30632             <Type type="long"/>
30633           </Argument>
30634           <Argument name="receivedSize">
30635             <descriptive>
30636                 <description><p>
30637  The size of data received in bytes.
30638                 </p></description>
30639             </descriptive>
30640             <Type type="unsigned long long"/>
30641           </Argument>
30642           <Argument name="totalSize">
30643             <descriptive>
30644                 <description><p>
30645  The total size of data to receive in bytes.
30646                 </p></description>
30647             </descriptive>
30648             <Type type="unsigned long long"/>
30649           </Argument>
30650         </ArgumentList>
30651       </Operation>
30652       <Operation name="onpaused" id="::Download::DownloadCallback::onpaused">
30653         <webidl>       void onpaused(long downloadId);</webidl>
30654         <descriptive>
30655             <brief>
30656  Called when the download operation is paused by the <em>pause() </em>method.
30657             </brief>
30658             <version>
30659  2.0
30660             </version>
30661         </descriptive>
30662         <Type type="void"/>
30663         <ArgumentList>
30664           <Argument name="downloadId">
30665             <descriptive>
30666                 <description><p>
30667  The ID of the corresponding download operation.
30668                 </p></description>
30669             </descriptive>
30670             <Type type="long"/>
30671           </Argument>
30672         </ArgumentList>
30673       </Operation>
30674       <Operation name="oncanceled" id="::Download::DownloadCallback::oncanceled">
30675         <webidl>       void oncanceled(long downloadId);</webidl>
30676         <descriptive>
30677             <brief>
30678  Called when download is canceled by the <em>cancel() </em>method.
30679             </brief>
30680             <version>
30681  2.0
30682             </version>
30683         </descriptive>
30684         <Type type="void"/>
30685         <ArgumentList>
30686           <Argument name="downloadId">
30687             <descriptive>
30688                 <description><p>
30689  The ID of the corresponding download operation.
30690                 </p></description>
30691             </descriptive>
30692             <Type type="long"/>
30693           </Argument>
30694         </ArgumentList>
30695       </Operation>
30696       <Operation name="oncompleted" id="::Download::DownloadCallback::oncompleted">
30697         <webidl>       void oncompleted(long downloadId, DOMString fullPath);</webidl>
30698         <descriptive>
30699             <brief>
30700  Called when the download operation is completed with the final full path.
30701 If the same file name already exists in the destination, it is changed according to the platform policy and delivered in this callback.
30702             </brief>
30703             <version>
30704  2.0
30705             </version>
30706         </descriptive>
30707         <Type type="void"/>
30708         <ArgumentList>
30709           <Argument name="downloadId">
30710             <descriptive>
30711                 <description><p>
30712  The ID of the corresponding download operation.
30713                 </p></description>
30714             </descriptive>
30715             <Type type="long"/>
30716           </Argument>
30717           <Argument name="fullPath">
30718             <descriptive>
30719                 <description><p>
30720  The final full path for the downloaded file.
30721                 </p></description>
30722             </descriptive>
30723             <Type type="DOMString"/>
30724           </Argument>
30725         </ArgumentList>
30726       </Operation>
30727       <Operation name="onfailed" id="::Download::DownloadCallback::onfailed">
30728         <webidl>       void onfailed(long downloadId, <ref>WebAPIError</ref> error);</webidl>
30729         <descriptive>
30730             <brief>
30731  Called when the download operation fails.
30732             </brief>
30733             <version>
30734  2.0
30735             </version>
30736         </descriptive>
30737         <Type type="void"/>
30738         <ArgumentList>
30739           <Argument name="downloadId">
30740             <descriptive>
30741                 <description><p>
30742  The ID of the corresponding download operation.
30743                 </p></description>
30744             </descriptive>
30745             <Type type="long"/>
30746           </Argument>
30747           <Argument name="error">
30748             <descriptive>
30749                 <description><p>
30750  The reason for the download failure.
30751                 </p></description>
30752             </descriptive>
30753             <Type name="WebAPIError"/>
30754           </Argument>
30755         </ArgumentList>
30756       </Operation>
30757     </Interface>
30758   </Module>
30759   <Module name="Filesystem" id="::Filesystem">
30760     <webidl>module Filesystem {
30761   enum FileMode { &quot;r&quot;, &quot;rw&quot;, &quot;w&quot;, &quot;a&quot; };
30762   
30763   enum FileSystemStorageType { &quot;INTERNAL&quot;, &quot;EXTERNAL&quot; };
30764   
30765   enum FileSystemStorageState { &quot;MOUNTED&quot;, &quot;REMOVED&quot;, &quot;UNMOUNTABLE&quot; };
30766   
30767   [NoInterfaceObject] interface FileSystemManagerObject {
30768     readonly attribute <ref>FileSystemManager</ref> filesystem;
30769   };
30770   <ref>Tizen</ref> implements <ref>FileSystemManagerObject</ref>;
30771
30772   [NoInterfaceObject] interface FileSystemManager {
30773     readonly attribute long maxPathLength;
30774
30775     void resolve(DOMString location,
30776                  <ref>FileSuccessCallback</ref> onsuccess,
30777                  optional <ref>ErrorCallback</ref>? onerror,
30778                  optional <ref>FileMode</ref>? mode) raises(<ref>WebAPIException</ref>);
30779
30780     void getStorage(DOMString label,
30781                     <ref>FileSystemStorageSuccessCallback</ref> onsuccess,
30782                     optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);
30783
30784     void listStorages(<ref>FileSystemStorageArraySuccessCallback</ref> onsuccess,
30785                       optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);
30786
30787     long addStorageStateChangeListener(<ref>FileSystemStorageSuccessCallback</ref> onsuccess,
30788                                        optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);
30789
30790     void removeStorageStateChangeListener(long watchId) raises(<ref>WebAPIException</ref>);
30791   };
30792
30793   [NoInterfaceObject] interface FileSystemStorage {
30794     readonly attribute DOMString label;
30795
30796     readonly attribute <ref>FileSystemStorageType</ref> type;
30797
30798     readonly attribute <ref>FileSystemStorageState</ref> state;
30799   };
30800
30801   [NoInterfaceObject] interface File {
30802     readonly attribute <ref>File</ref>? parent;
30803
30804     readonly attribute boolean readOnly;
30805
30806     readonly attribute boolean isFile;
30807
30808     readonly attribute boolean isDirectory;
30809
30810     readonly attribute Date? created;
30811
30812     readonly attribute Date? modified;
30813
30814     readonly attribute DOMString path;
30815
30816     readonly attribute DOMString name;
30817
30818     readonly attribute DOMString fullPath;
30819
30820     readonly attribute unsigned long long fileSize;
30821
30822     readonly attribute long length;
30823
30824     DOMString toURI() raises(<ref>WebAPIException</ref>);
30825
30826     void listFiles(<ref>FileArraySuccessCallback</ref> onsuccess,
30827                    optional <ref>ErrorCallback</ref>? onerror,
30828                    optional <ref>FileFilter</ref>? filter) raises(<ref>WebAPIException</ref>);
30829
30830     void openStream(<ref>FileMode</ref> mode,
30831                     <ref>FileStreamSuccessCallback</ref> onsuccess,
30832                     optional <ref>ErrorCallback</ref>? onerror,
30833                     optional DOMString? encoding) raises(<ref>WebAPIException</ref>);
30834
30835     void readAsText(<ref>FileStringSuccessCallback</ref> onsuccess,
30836                     optional <ref>ErrorCallback</ref>? onerror,
30837                     optional DOMString? encoding) raises(<ref>WebAPIException</ref>);
30838
30839     void copyTo(DOMString originFilePath,
30840                 DOMString destinationFilePath,
30841                 boolean overwrite,
30842                 optional <ref>SuccessCallback</ref>? onsuccess,
30843                 optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);
30844
30845     void moveTo(DOMString originFilePath,
30846                 DOMString destinationFilePath,
30847                 boolean overwrite,
30848                 optional <ref>SuccessCallback</ref>? onsuccess,
30849                 optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);
30850
30851     <ref>File</ref> createDirectory(DOMString dirPath) raises(<ref>WebAPIException</ref>);
30852
30853     <ref>File</ref> createFile(DOMString relativeFilePath) raises(<ref>WebAPIException</ref>);
30854
30855     <ref>File</ref> resolve(DOMString filePath) raises(<ref>WebAPIException</ref>);
30856
30857     void deleteDirectory(DOMString directoryPath,
30858                          boolean recursive,
30859                          optional <ref>SuccessCallback</ref>? onsuccess,
30860                          optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);
30861
30862     void deleteFile(DOMString filePath,
30863                     optional <ref>SuccessCallback</ref>? onsuccess,
30864                     optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);
30865   };
30866
30867
30868   dictionary FileFilter {
30869     DOMString name;
30870
30871     Date startModified;
30872
30873     Date endModified;
30874
30875     Date startCreated;
30876
30877     Date endCreated;
30878   };
30879
30880   [NoInterfaceObject] interface FileStream {
30881     readonly attribute boolean eof;
30882
30883     attribute long position setraises(<ref>WebAPIException</ref>);
30884
30885     readonly attribute long bytesAvailable;
30886
30887     void close();
30888
30889     DOMString read(long charCount) raises(<ref>WebAPIException</ref>);
30890
30891     octet[] readBytes(long byteCount) raises(<ref>WebAPIException</ref>);
30892
30893     DOMString readBase64(long byteCount) raises(<ref>WebAPIException</ref>);
30894
30895     void write(DOMString stringData) raises(<ref>WebAPIException</ref>);
30896
30897     void writeBytes(octet[] byteData) raises(<ref>WebAPIException</ref>);
30898
30899     void writeBase64(DOMString base64Data) raises(<ref>WebAPIException</ref>);
30900   };
30901
30902   [Callback=FunctionOnly, NoInterfaceObject] interface FileSuccessCallback {
30903     void onsuccess(<ref>File</ref> file);
30904   };
30905
30906   [Callback=FunctionOnly, NoInterfaceObject] interface FileSystemStorageArraySuccessCallback {
30907     void onsuccess(<ref>FileSystemStorage</ref>[] storages);
30908   };
30909
30910   [Callback=FunctionOnly, NoInterfaceObject] interface FileSystemStorageSuccessCallback {
30911     void onsuccess(<ref>FileSystemStorage</ref> storage);
30912   };
30913
30914   [Callback=FunctionOnly, NoInterfaceObject] interface FileStringSuccessCallback {
30915     void onsuccess(DOMString fileStr);
30916   };
30917
30918   [Callback=FunctionOnly, NoInterfaceObject] interface FileStreamSuccessCallback {
30919     void onsuccess(<ref>FileStream</ref> filestream);
30920   };
30921
30922   [Callback=FunctionOnly, NoInterfaceObject] interface FileArraySuccessCallback {
30923     void onsuccess(<ref>File</ref>[] files);
30924   };
30925 };</webidl>
30926     <descriptive>
30927         <brief>
30928  This API provides access to a device's filesystem.
30929         </brief>
30930        <description>
30931         <p>
30932 The filesystem is represented as an abstract collection of disjointed filesystem virtual
30933 root locations, each corresponding to a specific location in the device
30934 filesystem. The filesystem API exposes the hierarchies below these root
30935 locations as a single virtual filesystem, but provides no access to other
30936 parts of the device filesystem.
30937         </p>
30938         <p>
30939 Each virtual root has a string name. Each file or directory within the virtual
30940 filesystem is addressed using a fully-qualified path of the form:
30941 <em>&#60;root name&#62;/&#60;path&#62;</em> where <em>&#60;rootname&#62;</em> is
30942 the name of the virtual root and <em>&#60;path&#62;</em> is the path to the file or
30943 directory relative to that root.
30944         </p>
30945         <p>
30946 The following virtual roots MUST be supported:
30947         </p>
30948         <ul>
30949           <li>
30950 images: the images location           </li>
30951           <li>
30952 videos: the videos location           </li>
30953           <li>
30954 music: the sounds location           </li>
30955           <li>
30956 documents: the documents location           </li>
30957           <li>
30958 downloads: the location for downloaded items           </li>
30959           <li>
30960 ringtones: the location for ringtones (read-only location)           </li>
30961           <li>
30962 wgt-package: the widget package location (read-only location)           </li>
30963           <li>
30964 wgt-private: the widget private storage           </li>
30965           <li>
30966 wgt-private-tmp: the widget private volatile storage area          </li>
30967         </ul>
30968         <p>
30969 The file URI path is also supported. if you want to access other paths out of virtual root, 
30970 for example '/tmp/', 'file:///tmp' could be used as location parameter.
30971         </p>
30972         <p>
30973 To access specific locations from those specified above, a file handle
30974 must be retrieved using the filesystem.resolve call.
30975         </p>
30976         <p>
30977 A file handle represents either a file or a directory. For a file, the
30978 isFile attribute is <em>true</em>. For a directory, the isDirectory attribute
30979 is <em>true</em>. A file can be opened for read and write operations, using a
30980 FileStream handle. A list of files and sub-directories can be obtained from a
30981 directory and a resolve method exists to resolve files or sub-directories
30982 more conveniently than processing directory listings.
30983         </p>
30984         <p>
30985 The implementation MUST support the use of the following
30986 characters in file names:
30987         </p>
30988         <ul>
30989           <li>
30990 Letters (azAZ)          </li>
30991           <li>
30992 Numbers (0-9)          </li>
30993           <li>
30994 Blank spaces          </li>
30995           <li>
30996 Underscores (&quot;_&quot;)          </li>
30997           <li>
30998 Hyphens (&quot;-&quot;)          </li>
30999           <li>
31000 Periods (&quot;.&quot;)          </li>
31001         </ul>
31002         <p>
31003 The implementation MAY support additional characters in file names,
31004 depending on platform support.
31005         </p>
31006         <p>
31007 The implementation MAY forbid the use of additional characters in file
31008 names, depending on the platform. The use of the path separator &quot;/&quot;
31009 in file names MUST NOT be allowed. The &quot;/&quot; character is used as the (path)
31010 component separator.
31011         </p>
31012         <p>
31013 Some other file name and path characteristics are platform-dependent,
31014 for example, maximum path length, file name length, case sensitivity, additional
31015 character support, etc. Therefore, it is recommended that you avoid any dependency
31016 on aspects that cannot be supported across many platforms.
31017         </p>
31018         <p>
31019 When a path is used to interact with the underlying filesystem,
31020 the encoding used for the file path SHOULD be the platform default.
31021         </p>
31022         <p>
31023 For more information on the Filesystem features, see <a href="../../org.tizen.web.appprogramming/html/guide/io_guide/filesystem.htm">File System Guide</a>.
31024         </p>
31025        </description>
31026         <version>
31027  1.0
31028         </version>
31029     </descriptive>
31030     <Enum name="FileMode" id="::Filesystem::FileMode">
31031       <webidl>  enum FileMode { &quot;r&quot;, &quot;rw&quot;, &quot;w&quot;, &quot;a&quot; };</webidl>
31032       <descriptive>
31033           <brief>
31034  The file mode provided when opening.
31035           </brief>
31036          <description>
31037           <p>
31038 Value &quot;r&quot; to obtain read-only access, &quot;rw&quot; to obtain read and write
31039 access, &quot;w&quot; to obtain write access and &quot;a&quot; for appending.
31040           </p>
31041          </description>
31042           <version>
31043  1.0
31044           </version>
31045       </descriptive>
31046       <EnumValue stringvalue="r">
31047         <webidl> &quot;r</webidl>
31048       </EnumValue>
31049       <EnumValue stringvalue="rw">
31050         <webidl> &quot;rw</webidl>
31051       </EnumValue>
31052       <EnumValue stringvalue="w">
31053         <webidl> &quot;w</webidl>
31054       </EnumValue>
31055       <EnumValue stringvalue="a">
31056         <webidl> &quot;a</webidl>
31057       </EnumValue>
31058     </Enum>
31059     <Enum name="FileSystemStorageType" id="::Filesystem::FileSystemStorageType">
31060       <webidl>  enum FileSystemStorageType { &quot;INTERNAL&quot;, &quot;EXTERNAL&quot; };</webidl>
31061       <descriptive>
31062           <brief>
31063  The type of storage.
31064           </brief>
31065          <description>
31066           <ul>
31067             <li>
31068 INTERNAL: Internal storage is storage that cannot be removed, such as a
31069 flash memory.            </li>
31070             <li>
31071 EXTERNAL: External storage is removable storage, such as a USB drive or
31072 memory cards.            </li>
31073           </ul>
31074          </description>
31075           <version>
31076  1.0
31077           </version>
31078       </descriptive>
31079       <EnumValue stringvalue="INTERNAL">
31080         <webidl> &quot;INTERNAL</webidl>
31081       </EnumValue>
31082       <EnumValue stringvalue="EXTERNAL">
31083         <webidl> &quot;EXTERNAL</webidl>
31084       </EnumValue>
31085     </Enum>
31086     <Enum name="FileSystemStorageState" id="::Filesystem::FileSystemStorageState">
31087       <webidl>  enum FileSystemStorageState { &quot;MOUNTED&quot;, &quot;REMOVED&quot;, &quot;UNMOUNTABLE&quot; };</webidl>
31088       <descriptive>
31089           <brief>
31090  The state of the storage.
31091           </brief>
31092          <description>
31093           <ul>
31094             <li>
31095 MOUNTED: The device is mounted and can be browsed.            </li>
31096             <li>
31097 REMOVED: The device was removed. This states only applies to external drives.            </li>
31098             <li>
31099 UNMOUNTABLE: The device cannot be mounted due to an error.            </li>
31100           </ul>
31101          </description>
31102           <version>
31103  1.0
31104           </version>
31105       </descriptive>
31106       <EnumValue stringvalue="MOUNTED">
31107         <webidl> &quot;MOUNTED</webidl>
31108       </EnumValue>
31109       <EnumValue stringvalue="REMOVED">
31110         <webidl> &quot;REMOVED</webidl>
31111       </EnumValue>
31112       <EnumValue stringvalue="UNMOUNTABLE">
31113         <webidl> &quot;UNMOUNTABLE</webidl>
31114       </EnumValue>
31115     </Enum>
31116     <Interface name="FileSystemManagerObject" id="::Filesystem::FileSystemManagerObject">
31117       <webidl>  [NoInterfaceObject] interface FileSystemManagerObject {
31118     readonly attribute <ref>FileSystemManager</ref> filesystem;
31119   };</webidl>
31120       <descriptive>
31121           <brief>
31122  Defines what is instantiated in the tizen object.
31123           </brief>
31124          <description>
31125           <p>
31126 There will be a tizen.filesystem object that allows accessing the
31127 functionality of the filesystem API.
31128           </p>
31129          </description>
31130           <version>
31131  1.0
31132           </version>
31133       </descriptive>
31134       <ExtendedAttributeList>
31135         <ExtendedAttribute name="NoInterfaceObject">
31136           <webidl>NoInterfaceObject</webidl>
31137         </ExtendedAttribute>
31138       </ExtendedAttributeList>
31139       <Attribute readonly="readonly" name="filesystem" id="::Filesystem::FileSystemManagerObject::filesystem">
31140         <webidl>    readonly attribute <ref>FileSystemManager</ref> filesystem;</webidl>
31141         <Type name="FileSystemManager"/>
31142       </Attribute>
31143     </Interface>
31144     <Implements name1="Tizen" name2="FileSystemManagerObject">
31145       <webidl>  <ref>Tizen</ref> implements <ref>FileSystemManagerObject</ref>;</webidl>
31146     </Implements>
31147     <Interface name="FileSystemManager" id="::Filesystem::FileSystemManager">
31148       <webidl>  [NoInterfaceObject] interface FileSystemManager {
31149     readonly attribute long maxPathLength;
31150
31151     void resolve(DOMString location,
31152                  <ref>FileSuccessCallback</ref> onsuccess,
31153                  optional <ref>ErrorCallback</ref>? onerror,
31154                  optional <ref>FileMode</ref>? mode) raises(<ref>WebAPIException</ref>);
31155
31156     void getStorage(DOMString label,
31157                     <ref>FileSystemStorageSuccessCallback</ref> onsuccess,
31158                     optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);
31159
31160     void listStorages(<ref>FileSystemStorageArraySuccessCallback</ref> onsuccess,
31161                       optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);
31162
31163     long addStorageStateChangeListener(<ref>FileSystemStorageSuccessCallback</ref> onsuccess,
31164                                        optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);
31165
31166     void removeStorageStateChangeListener(long watchId) raises(<ref>WebAPIException</ref>);
31167   };</webidl>
31168       <descriptive>
31169           <brief>
31170  The file system manager interface that provides access to the filesystem API.
31171           </brief>
31172          <description>
31173           <p>
31174 This manager exposes the filesystem base API, and provides functionality, such as
31175 determining root and default locations, resolving a given location
31176 into a file handle, and registering filesystem listeners for
31177 filesystem events.
31178           </p>
31179          </description>
31180           <version>
31181  1.0
31182           </version>
31183           <Code> var documentsDir;
31184  function onsuccess(files) {
31185    for(var i = 0; i &#60; files.length; i++) {
31186      console.log(&quot;File Name is &quot; + files[i].name); // displays file name
31187    }
31188
31189    var testFile = documentsDir.createFile(&quot;test.txt&quot;);
31190
31191    if (testFile != null) {
31192      testFile.openStream(
31193        &quot;w&quot;,
31194        function(fs){
31195          fs.write(&quot;HelloWorld&quot;);
31196          fs.close();
31197        }, function(e){
31198          console.log(&quot;Error &quot; + e.message);
31199        }, &quot;UTF-8&quot;
31200      );
31201    }
31202  }
31203
31204  function onerror(error) {
31205    console.log(&quot;The error &quot; + error.message + &quot; occurred when listing the files in the selected folder&quot;);
31206  }
31207
31208  tizen.filesystem.resolve(
31209    'documents', 
31210    function(dir){
31211      documentsDir = dir;
31212      dir.listFiles(onsuccess, onerror);
31213    }, function(e){
31214      console.log(&quot;Error&quot; + e.message);
31215    }, &quot;rw&quot;
31216  );
31217  </Code>
31218       </descriptive>
31219       <ExtendedAttributeList>
31220         <ExtendedAttribute name="NoInterfaceObject">
31221           <webidl>NoInterfaceObject</webidl>
31222         </ExtendedAttribute>
31223       </ExtendedAttributeList>
31224       <Attribute readonly="readonly" name="maxPathLength" id="::Filesystem::FileSystemManager::maxPathLength">
31225         <webidl>    readonly attribute long maxPathLength;</webidl>
31226         <descriptive>
31227             <brief>
31228  Contains the platform-dependent maximum path length.
31229             </brief>
31230             <version>
31231  1.0
31232             </version>
31233             <Code> console.log(&quot;The maximum path length is &quot; + tizen.filesystem.maxPathLength);
31234  </Code>
31235         </descriptive>
31236         <Type type="long"/>
31237       </Attribute>
31238       <Operation name="resolve" id="::Filesystem::FileSystemManager::resolve">
31239         <webidl>    void resolve(DOMString location,
31240                  <ref>FileSuccessCallback</ref> onsuccess,
31241                  optional <ref>ErrorCallback</ref>? onerror,
31242                  optional <ref>FileMode</ref>? mode) raises(<ref>WebAPIException</ref>);</webidl>
31243         <descriptive>
31244             <brief>
31245  Resolves a location to a file handle.
31246             </brief>
31247            <description>
31248             <p>
31249 It validates and resolves the given location to a file handle.
31250 If the operation completes successfully, the handle is returned
31251 in the FileSuccessCallback.
31252 A valid location is prefixed with a valid root or
31253 default location and must address an existing,
31254 accessible file or directory.
31255             </p>
31256             <p>
31257 A location can contain virtual path like (<var>documents/some_file.txt</var>)
31258 or it can be a file's URI (<var>file:///my_strange_path/some_file.png</var>).
31259             </p>
31260             <p>
31261 The list of root locations that MUST be supported by a compliant
31262 implementation are:
31263             </p>
31264             <ul>
31265               <li>
31266 documents: Describes the default folder in which text documents
31267 (such as pdf, doc...) are stored by default in the device. For example, in some
31268 platforms it corresponds to the &quot;My Documents&quot; folder.              </li>
31269               <li>
31270 images: Describes the default folder in which still images, like
31271 pictures (such as jpg, gif, png, etc.), are stored in the
31272 device by default. For example, in some platforms it corresponds to the &quot;My Images&quot;
31273 folder.              </li>
31274               <li>
31275 music: Describes the default folder in which sound clips (such as mp3,
31276 aac, etc.) are stored in the device by default. For example, in some platforms it
31277 corresponds to the &quot;My Music&quot; folder.              </li>
31278               <li>
31279 videos: Describes the default folder in which video clips (such as
31280 avi, mp4, etc.) are stored in the device by default. For example, in some platforms
31281 it corresponds to the &quot;My Videos&quot; folder.              </li>
31282               <li>
31283 downloads: Describes the default folder in which files downloaded
31284 (such as by a browser, e-mail client, etc.) are stored by default in the
31285 device. For example, in some platforms it corresponds to the &quot;Downloads&quot; folder.
31286               </li>
31287               <li>
31288 ringtones: Describes the default folder in which ringtones (such as mp3, etc)
31289 are stored by default in the device.               </li>
31290               <li>
31291 wgt-package: Describes the read-only folder in which the content of
31292 the widget file was extracted to.              </li>
31293               <li>
31294 wgt-private: Describes a private folder in which a widget can
31295 store information. This folder MUST be accessible only to the
31296 widget. Other widgets or applications MUST NOT access the
31297 information stored there.              </li>
31298               <li>
31299 wgt-private-tmp: Describes a temporary, private folder in which a widget
31300 can store data that is available during one widget execution
31301 cycle. Content of this folder MAY be removed from this directory
31302 when the widget is closed or the Web Runtime is restarted.
31303 This folder MUST be accessible only to the widget. Other
31304 widgets or applications MUST NOT have access to it.              </li>
31305             </ul>
31306             <p>
31307 The mode parameter specifies whether the resulting File object
31308 has read-only access (&quot;r&quot; access), read and write access (&quot;rw&quot; access),
31309 append access (&quot;a&quot; access), or write access (&quot;w&quot; access) 
31310 to the root location containing directory tree. 
31311 Permission for the requested access is obtained from the security framework. 
31312 Once the resulting File object has access, access is inherited by
31313 any other File objects derived from this instance without any
31314 further reference to the security framework, as noted in
31315 descriptions of certain methods of File.
31316             </p>
31317             <p>
31318 The ErrorCallback is launched with these error types:
31319             </p>
31320             <ul>
31321               <li>
31322 InvalidValuesError: If any of the input parameters contain an invalid value.
31323 For example, the mode is not valid (that is not &quot;r&quot;, &quot;rw&quot;, &quot;a&quot;, or &quot;w&quot;).              </li>
31324               <li>
31325 NotFoundError: The location input argument does not correspond to a valid location.              </li>
31326               <li>
31327 UnknownError: In any other error case.               </li>
31328             </ul>
31329            </description>
31330             <version>
31331  1.0
31332             </version>
31333             <privilegelevel>
31334  public
31335             </privilegelevel>
31336             <privilege>
31337  http://tizen.org/privilege/filesystem.read
31338             </privilege>
31339             <Code> tizen.filesystem.resolve(
31340    'images',
31341    function(dir) {
31342      console.log(&quot;Mount point Name is &quot; +  dir.path);
31343    }, function(e) {
31344      console.log(&quot;Error: &quot; + e.message);
31345    }, &quot;r&quot;
31346  );
31347  </Code>
31348         </descriptive>
31349         <Type type="void"/>
31350         <ArgumentList>
31351           <Argument name="location">
31352             <descriptive>
31353                 <description><p>
31354  Location to resolve.
31355                 </p></description>
31356             </descriptive>
31357             <Type type="DOMString"/>
31358           </Argument>
31359           <Argument name="onsuccess">
31360             <descriptive>
31361                 <description><p>
31362  Called when the location has been.
31363 successfully resolved, passing the newly created File object.
31364                 </p></description>
31365             </descriptive>
31366             <Type name="FileSuccessCallback"/>
31367           </Argument>
31368           <Argument optional="optional" name="onerror">
31369             <descriptive>
31370                 <description><p>
31371  Called if an error occurred.
31372                 </p></description>
31373             </descriptive>
31374             <Type name="ErrorCallback" nullable="nullable"/>
31375           </Argument>
31376           <Argument optional="optional" name="mode">
31377             <descriptive>
31378                 <description><p>
31379  Optional string of value &quot;r&quot; to obtain read-only access,
31380 &quot;rw&quot; to obtain read and write access, &quot;a&quot; to obtain append access,
31381 or &quot;w&quot; to obtain write access to all files and
31382 directories that can be reached from the File object passed
31383 to onsuccess. Defaults to &quot;rw&quot; if absent or <em>null</em>.
31384                 </p></description>
31385             </descriptive>
31386             <Type name="FileMode" nullable="nullable"/>
31387           </Argument>
31388         </ArgumentList>
31389         <Raises>
31390           <RaiseException name="WebAPIException">
31391             <descriptive>
31392                 <description><p>
31393  with error type TypeMismatchError, if the input parameter
31394 is not compatible with the expected type for that parameter.
31395                 </p></description>
31396                 <description><p>
31397  with error type SecurityError, if the application does not have the privilege to call this method.
31398                 </p></description>
31399                 <description><p>
31400  with error type NotSupportedError, if the feature is not supported.
31401                 </p></description>
31402             </descriptive>
31403           </RaiseException>
31404         </Raises>
31405       </Operation>
31406       <Operation name="getStorage" id="::Filesystem::FileSystemManager::getStorage">
31407         <webidl>    void getStorage(DOMString label,
31408                     <ref>FileSystemStorageSuccessCallback</ref> onsuccess,
31409                     optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);</webidl>
31410         <descriptive>
31411             <brief>
31412  Gets information about a storage based on its label.
31413             </brief>
31414            <description>
31415             <p>
31416 Get storage information based on its label (example: &quot;MyThumbDrive&quot;,
31417 &quot;InternalFlash&quot;). The onsuccess will receive as input argument the data
31418 structure containing additional information about the drive.
31419             </p>
31420             <p>
31421 The ErrorCallback is launched with these error types:
31422             </p>
31423             <ul>
31424               <li>
31425 NotFoundError: No drive was found with the given label.              </li>
31426               <li>
31427 InvalidValuesError: If any of the input parameters contain an invalid value.              </li>
31428               <li>
31429 UnknownError: In any other error case.               </li>
31430             </ul>
31431            </description>
31432             <version>
31433  1.0
31434             </version>
31435             <privilegelevel>
31436  public
31437             </privilegelevel>
31438             <privilege>
31439  http://tizen.org/privilege/filesystem.read
31440             </privilege>
31441             <Code> function onStorage(storage) {
31442      // Do something
31443  }
31444
31445  function onStorageError(e) {
31446  console.log(&quot;Storage not found!&quot; + e.message);
31447  }
31448
31449  tizen.filesystem.getStorage(&quot;music&quot;, onStorage, onStorageError);
31450  </Code>
31451         </descriptive>
31452         <Type type="void"/>
31453         <ArgumentList>
31454           <Argument name="label">
31455             <descriptive>
31456                 <description><p>
31457  Storage label.
31458                 </p></description>
31459             </descriptive>
31460             <Type type="DOMString"/>
31461           </Argument>
31462           <Argument name="onsuccess">
31463             <descriptive>
31464                 <description><p>
31465  Called when the list of storage is available,
31466 passing the storage list to the callback.
31467                 </p></description>
31468             </descriptive>
31469             <Type name="FileSystemStorageSuccessCallback"/>
31470           </Argument>
31471           <Argument optional="optional" name="onerror">
31472             <descriptive>
31473                 <description><p>
31474  Called if an error occurred.
31475                 </p></description>
31476             </descriptive>
31477             <Type name="ErrorCallback" nullable="nullable"/>
31478           </Argument>
31479         </ArgumentList>
31480         <Raises>
31481           <RaiseException name="WebAPIException">
31482             <descriptive>
31483                 <description><p>
31484  with error type TypeMismatchError, if the input parameter
31485 is not compatible with the expected type for that parameter.
31486                 </p></description>
31487                 <description><p>
31488  with error type SecurityError, if the application does not have the privilege to call this method.
31489                 </p></description>
31490                 <description><p>
31491  with error type NotSupportedError, if the feature is not supported.
31492                 </p></description>
31493             </descriptive>
31494           </RaiseException>
31495         </Raises>
31496       </Operation>
31497       <Operation name="listStorages" id="::Filesystem::FileSystemManager::listStorages">
31498         <webidl>    void listStorages(<ref>FileSystemStorageArraySuccessCallback</ref> onsuccess,
31499                       optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);</webidl>
31500         <descriptive>
31501             <brief>
31502  Lists the available storages on the device.
31503             </brief>
31504            <description>
31505             <p>
31506 Get the list of available internal and external storage devices. The
31507 onsuccess will receive as input argument a list of the data
31508 structure containing additional information about each drive found.
31509 Can get storages would have a label named as 'internal0', virtual roots (images, documents,...), 'removable1', 'removable2'.
31510 'removable1' label would be used to resolve sdcard and 'removable2' label would be used to resolve usb host, if supported.
31511 The vfat filesystem used widly as sdcard filesystem is not case-sensitive. 
31512 If you want to handle the file on sdcard, you need to consider case-sensitive filenames are regarded as same name.
31513             </p>
31514             <p>
31515 Labels can be different, depends on platform implementation.
31516             </p>
31517             <p>
31518 The ErrorCallback is launched with these error types:
31519             </p>
31520             <ul>
31521               <li>
31522 InvalidValuesError: If any of the input parameters contain an invalid value.              </li>
31523               <li>
31524 UnknownError: In any other error case.               </li>
31525             </ul>
31526            </description>
31527             <version>
31528  1.0
31529             </version>
31530             <privilegelevel>
31531  public
31532             </privilegelevel>
31533             <privilege>
31534  http://tizen.org/privilege/filesystem.read
31535             </privilege>
31536             <Code> function alertForCorruptedRemovableDrives(storages) {
31537      for (var i = 0; i &#60; storages.length; i++) {
31538          if (storages[i].type != &quot;EXTERNAL&quot;)
31539              continue;
31540          if (storages[i].state == &quot;UNMOUNTABLE&quot;)
31541              console.log(&quot;External drive &quot; + storages[i].label + &quot; is corrupted.&quot;);
31542      }
31543  }
31544
31545  tizen.filesystem.listStorages(alertForCorruptedRemovableDrives);
31546  </Code>
31547         </descriptive>
31548         <Type type="void"/>
31549         <ArgumentList>
31550           <Argument name="onsuccess">
31551             <descriptive>
31552                 <description><p>
31553  Called when the list of storage is available,
31554 passing the storage list to the callback.
31555                 </p></description>
31556             </descriptive>
31557             <Type name="FileSystemStorageArraySuccessCallback"/>
31558           </Argument>
31559           <Argument optional="optional" name="onerror">
31560             <descriptive>
31561                 <description><p>
31562  Called if an error occurred.
31563                 </p></description>
31564             </descriptive>
31565             <Type name="ErrorCallback" nullable="nullable"/>
31566           </Argument>
31567         </ArgumentList>
31568         <Raises>
31569           <RaiseException name="WebAPIException">
31570             <descriptive>
31571                 <description><p>
31572  with error type TypeMismatchError, if the input parameter
31573 is not compatible with the expected type for that parameter.
31574                 </p></description>
31575                 <description><p>
31576  with error type SecurityError, if the application does not have the privilege to call this method.
31577                 </p></description>
31578                 <description><p>
31579  with error type NotSupportedError, if the feature is not supported.
31580                 </p></description>
31581             </descriptive>
31582           </RaiseException>
31583         </Raises>
31584       </Operation>
31585       <Operation name="addStorageStateChangeListener" id="::Filesystem::FileSystemManager::addStorageStateChangeListener">
31586         <webidl>    long addStorageStateChangeListener(<ref>FileSystemStorageSuccessCallback</ref> onsuccess,
31587                                        optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);</webidl>
31588         <descriptive>
31589             <brief>
31590  Subscribes to notifications when a storage state changes.
31591             </brief>
31592            <description>
31593             <p>
31594 The most common usage for this method would be to watch notifications of
31595 additions and removals of external storages.
31596             </p>
31597             <p>
31598 When executed, the implementation MUST immediately return a subscription identifier that identifies
31599 the watch operation. After returning the identifier, the watch operation is started
31600 asynchronously. The onsuccess MUST be invoked every time
31601 a storage state changes. If the attempt fails, the onerror (if present)
31602 MUST be invoked with the relevant error type.
31603             </p>
31604             <p>
31605 The watch operation MUST continue until the removeStorageStateChangeListener() method is
31606 called with the corresponding subscription identifier.
31607             </p>
31608            </description>
31609             <version>
31610  1.0
31611             </version>
31612             <privilegelevel>
31613  public
31614             </privilegelevel>
31615             <privilege>
31616  http://tizen.org/privilege/filesystem.write
31617             </privilege>
31618             <Code> var watchID;
31619  function onStorageStateChanged(storage) {
31620      if (storage.state == &quot;MOUNTED&quot;)
31621          console.log(&quot;Storage &quot; + storage.label + &quot; was added!&quot;);
31622  }
31623
31624  watchID = tizen.filesystem.addStorageStateChangeListener(onStorageStateChanged);
31625  </Code>
31626         </descriptive>
31627         <Type type="long">
31628           <descriptive>
31629               <description><p>
31630  long The identifier used to clear the watch subscription.
31631               </p></description>
31632           </descriptive>
31633         </Type>
31634         <ArgumentList>
31635           <Argument name="onsuccess">
31636             <descriptive>
31637                 <description><p>
31638  To be invoked in every change on storage state.
31639                 </p></description>
31640             </descriptive>
31641             <Type name="FileSystemStorageSuccessCallback"/>
31642           </Argument>
31643           <Argument optional="optional" name="onerror">
31644             <descriptive>
31645                 <description><p>
31646  To be invoked in case of error during the watch process.
31647                 </p></description>
31648             </descriptive>
31649             <Type name="ErrorCallback" nullable="nullable"/>
31650           </Argument>
31651         </ArgumentList>
31652         <Raises>
31653           <RaiseException name="WebAPIException">
31654             <descriptive>
31655                 <description><p>
31656  with error type TypeMismatchError, if any input parameter
31657 is not compatible with the expected type for that parameter.
31658                 </p></description>
31659                 <description><p>
31660  with error type SecurityError, if the application does not have the privilege to call this method.
31661                 </p></description>
31662                 <description><p>
31663  with error type NotSupportedError, if the feature is not supported.
31664                 </p></description>
31665                 <description><p>
31666  with error type UnknownError, if any other error case.
31667                 </p></description>
31668             </descriptive>
31669           </RaiseException>
31670         </Raises>
31671       </Operation>
31672       <Operation name="removeStorageStateChangeListener" id="::Filesystem::FileSystemManager::removeStorageStateChangeListener">
31673         <webidl>    void removeStorageStateChangeListener(long watchId) raises(<ref>WebAPIException</ref>);</webidl>
31674         <descriptive>
31675             <brief>
31676  Unsubscribes a storage watch operation.
31677             </brief>
31678            <description>
31679             <p>
31680 If the watchId argument is valid and corresponds to a subscription already in
31681 place, the watch process MUST immediately stop and no further callbacks MUST be
31682 invoked.
31683             </p>
31684            </description>
31685             <version>
31686  1.0
31687             </version>
31688             <privilegelevel>
31689  public
31690             </privilegelevel>
31691             <privilege>
31692  http://tizen.org/privilege/filesystem.write
31693             </privilege>
31694             <Code> var watchID;
31695  function onStorageStateChanged(storage) {
31696      if (storage.state == &quot;MOUNTED&quot;)
31697          console.log(&quot;Storage &quot; + storage.label + &quot; was added!&quot;);
31698      tizen.filesystem.removeStorageStateChangeListener(watchID);
31699  }
31700
31701  watchID = tizen.filesystem.addStorageStateChangeListener(onStorageStateChanged);
31702  
31703
31704  </Code>
31705         </descriptive>
31706         <Type type="void"/>
31707         <ArgumentList>
31708           <Argument name="watchId">
31709             <descriptive>
31710                 <description><p>
31711  Subscription Identifier.
31712                 </p></description>
31713             </descriptive>
31714             <Type type="long"/>
31715           </Argument>
31716         </ArgumentList>
31717         <Raises>
31718           <RaiseException name="WebAPIException">
31719             <descriptive>
31720                 <description><p>
31721  with error type TypeMismatchError, if any input parameter
31722 is not compatible with the expected type for that parameter.
31723                 </p></description>
31724                 <description><p>
31725  with error type InvalidValuesError, if any of the input 
31726 parameters contain an invalid value.
31727                 </p></description>
31728                 <description><p>
31729  with error type SecurityError, if the application does not have the privilege to call this method.
31730                 </p></description>
31731                 <description><p>
31732  with error type NotSupportedError, if the feature is not supported.
31733                 </p></description>
31734                 <description><p>
31735  with error type UnknownError, if any other error case.      
31736                 </p></description>
31737                 <description><p>
31738  with error type NotFoundError, if the watchId does not exist.      
31739                 </p></description>
31740             </descriptive>
31741           </RaiseException>
31742         </Raises>
31743       </Operation>
31744     </Interface>
31745     <Interface name="FileSystemStorage" id="::Filesystem::FileSystemStorage">
31746       <webidl>  [NoInterfaceObject] interface FileSystemStorage {
31747     readonly attribute DOMString label;
31748
31749     readonly attribute <ref>FileSystemStorageType</ref> type;
31750
31751     readonly attribute <ref>FileSystemStorageState</ref> state;
31752   };</webidl>
31753       <descriptive>
31754           <brief>
31755  The FileSystemStorage interface.
31756           </brief>
31757          <description>
31758           <p>
31759 This interface gives additional information about a storage, such as if the
31760 device is mounted, if it's a removable drive or not, or the device's name.
31761 To retrieve the mount point, the resolve() method should be used using
31762 the label as argument.
31763           </p>
31764          </description>
31765           <version>
31766  1.0
31767           </version>
31768       </descriptive>
31769       <ExtendedAttributeList>
31770         <ExtendedAttribute name="NoInterfaceObject">
31771           <webidl>NoInterfaceObject</webidl>
31772         </ExtendedAttribute>
31773       </ExtendedAttributeList>
31774       <Attribute readonly="readonly" name="label" id="::Filesystem::FileSystemStorage::label">
31775         <webidl>    readonly attribute DOMString label;</webidl>
31776         <descriptive>
31777             <brief>
31778  The storage name.
31779             </brief>
31780            <description>
31781             <p>
31782 Used as input for functions like getStorage() and also used as 'location' parameter for File.resolve() and FileSystemManager.resolve().
31783             </p>
31784            </description>
31785             <version>
31786  1.0
31787             </version>
31788         </descriptive>
31789         <Type type="DOMString"/>
31790       </Attribute>
31791       <Attribute readonly="readonly" name="type" id="::Filesystem::FileSystemStorage::type">
31792         <webidl>    readonly attribute <ref>FileSystemStorageType</ref> type;</webidl>
31793         <descriptive>
31794             <brief>
31795  The storage type.
31796             </brief>
31797            <description>
31798             <p>
31799 Defines whether the storage is internal or external.
31800             </p>
31801            </description>
31802             <version>
31803  1.0
31804             </version>
31805         </descriptive>
31806         <Type name="FileSystemStorageType"/>
31807       </Attribute>
31808       <Attribute readonly="readonly" name="state" id="::Filesystem::FileSystemStorage::state">
31809         <webidl>    readonly attribute <ref>FileSystemStorageState</ref> state;</webidl>
31810         <descriptive>
31811             <brief>
31812  The storage state.
31813             </brief>
31814            <description>
31815             <p>
31816 Defines whether the storage is mounted or not.
31817             </p>
31818            </description>
31819             <version>
31820  1.0
31821             </version>
31822         </descriptive>
31823         <Type name="FileSystemStorageState"/>
31824       </Attribute>
31825     </Interface>
31826     <Interface name="File" id="::Filesystem::File">
31827       <webidl>  [NoInterfaceObject] interface File {
31828     readonly attribute <ref>File</ref>? parent;
31829
31830     readonly attribute boolean readOnly;
31831
31832     readonly attribute boolean isFile;
31833
31834     readonly attribute boolean isDirectory;
31835
31836     readonly attribute Date? created;
31837
31838     readonly attribute Date? modified;
31839
31840     readonly attribute DOMString path;
31841
31842     readonly attribute DOMString name;
31843
31844     readonly attribute DOMString fullPath;
31845
31846     readonly attribute unsigned long long fileSize;
31847
31848     readonly attribute long length;
31849
31850     DOMString toURI() raises(<ref>WebAPIException</ref>);
31851
31852     void listFiles(<ref>FileArraySuccessCallback</ref> onsuccess,
31853                    optional <ref>ErrorCallback</ref>? onerror,
31854                    optional <ref>FileFilter</ref>? filter) raises(<ref>WebAPIException</ref>);
31855
31856     void openStream(<ref>FileMode</ref> mode,
31857                     <ref>FileStreamSuccessCallback</ref> onsuccess,
31858                     optional <ref>ErrorCallback</ref>? onerror,
31859                     optional DOMString? encoding) raises(<ref>WebAPIException</ref>);
31860
31861     void readAsText(<ref>FileStringSuccessCallback</ref> onsuccess,
31862                     optional <ref>ErrorCallback</ref>? onerror,
31863                     optional DOMString? encoding) raises(<ref>WebAPIException</ref>);
31864
31865     void copyTo(DOMString originFilePath,
31866                 DOMString destinationFilePath,
31867                 boolean overwrite,
31868                 optional <ref>SuccessCallback</ref>? onsuccess,
31869                 optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);
31870
31871     void moveTo(DOMString originFilePath,
31872                 DOMString destinationFilePath,
31873                 boolean overwrite,
31874                 optional <ref>SuccessCallback</ref>? onsuccess,
31875                 optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);
31876
31877     <ref>File</ref> createDirectory(DOMString dirPath) raises(<ref>WebAPIException</ref>);
31878
31879     <ref>File</ref> createFile(DOMString relativeFilePath) raises(<ref>WebAPIException</ref>);
31880
31881     <ref>File</ref> resolve(DOMString filePath) raises(<ref>WebAPIException</ref>);
31882
31883     void deleteDirectory(DOMString directoryPath,
31884                          boolean recursive,
31885                          optional <ref>SuccessCallback</ref>? onsuccess,
31886                          optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);
31887
31888     void deleteFile(DOMString filePath,
31889                     optional <ref>SuccessCallback</ref>? onsuccess,
31890                     optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);
31891   };</webidl>
31892       <descriptive>
31893           <brief>
31894  The file interface.
31895           </brief>
31896          <description>
31897           <p>
31898 This interface represents the file abstraction in use.
31899 A file handle represents a file
31900 if the isFile property is <em>true</em>, if the isFile property is <em>false</em>, the file
31901 handle represents a directory.
31902 If a file handle represents a directory, it can address files and directories.
31903           </p>
31904           <p>
31905 The file object permissions for the file object location and tree rooted
31906 at that location depends upon the mode defined in the resolve method.
31907 When a File object creates a child File object, 
31908 the new File object inherits its access rights from
31909 the parent object without any reference to the security framework, as
31910 noted in certain methods of File.
31911           </p>
31912           <p>
31913 A file handle representing a file can be opened for I/O operations,
31914 such as reading and writing.
31915           </p>
31916           <p>
31917 A file handle representing a directory can be used for listing all
31918 files and directories rooted as the file handle location.
31919           </p>
31920          </description>
31921           <version>
31922  1.0
31923           </version>
31924           <Code> function onsuccess(files) {
31925    for(var i = 0; i &#60; files.length; i++) {
31926      // alerts each name of dir's contents
31927      console.log(files[i].name);
31928    }
31929  }
31930
31931  function onerror(error) {
31932    console.log(&quot;The error &quot; + error.message +
31933                &quot; occurred when listing the files in the selected folder&quot;);
31934  }
31935
31936  // list directory contents
31937  dir.listFiles(onsuccess, onerror);
31938  </Code>
31939       </descriptive>
31940       <ExtendedAttributeList>
31941         <ExtendedAttribute name="NoInterfaceObject">
31942           <webidl>NoInterfaceObject</webidl>
31943         </ExtendedAttribute>
31944       </ExtendedAttributeList>
31945       <Attribute readonly="readonly" name="parent" id="::Filesystem::File::parent">
31946         <webidl>    readonly attribute <ref>File</ref>? parent;</webidl>
31947         <descriptive>
31948             <brief>
31949  The parent directory handle.
31950             </brief>
31951            <description>
31952             <p>
31953 <em>null</em> if there is no parent directory.
31954             </p>
31955             <p>
31956 If there is no parent directory, this represents a root location.
31957             </p>
31958            </description>
31959             <version>
31960  1.0
31961             </version>
31962             <Code> // list directory contents
31963  dir.listFiles(onsuccess, onerror);
31964
31965  function onsuccess(files) {
31966    for(var i = 0; i &#60; files.length; i++) {
31967      // prints the file parent, should contain the
31968      // same value for all the files in the loop
31969      console.log(&quot;All the files should have the same parent &quot; +
31970                  files[i].parent);
31971    }
31972  }
31973
31974  function onerror(error){
31975    console.log(&quot;The error &quot; + error.message +
31976                &quot; occurred when listing the files in the selected folder&quot;);
31977  }
31978  </Code>
31979         </descriptive>
31980         <Type name="File" nullable="nullable"/>
31981       </Attribute>
31982       <Attribute readonly="readonly" name="readOnly" id="::Filesystem::File::readOnly">
31983         <webidl>    readonly attribute boolean readOnly;</webidl>
31984         <descriptive>
31985             <brief>
31986  The file/directory access state in the filesystem.
31987             </brief>
31988            <description>
31989             <p>
31990 <em>true</em> if object has read-only access at its location.
31991             </p>
31992             <p>
31993 <em>false</em> if object has write access at its location.
31994             </p>
31995             <p>
31996 This attribute represents the actual state of a
31997 file or directory in the filesystem. Its value is not affected by
31998 the mode used in FileSystemManager.resolve that was used to
31999 create the File object from which this File object was obtained.
32000             </p>
32001            </description>
32002             <version>
32003  1.0
32004             </version>
32005             <Code> // list directory contents
32006  dir.listFiles(onsuccess, onerror);
32007
32008  function onsuccess(files) {
32009    for(var i = 0; i &#60; files.length; i++) {
32010      if(files[i].readOnly)
32011        console.log(&quot;Cannot write to file &quot; + files[i].name);
32012      else
32013        console.log(&quot;Can write to file &quot; + files[i].name);
32014    }
32015  }
32016
32017  function onerror(error) {
32018    console.log(&quot;The error &quot; + error.message + &quot; occurred when listing the files in the selected folder&quot;);
32019  }
32020  </Code>
32021         </descriptive>
32022         <Type type="boolean"/>
32023       </Attribute>
32024       <Attribute readonly="readonly" name="isFile" id="::Filesystem::File::isFile">
32025         <webidl>    readonly attribute boolean isFile;</webidl>
32026         <descriptive>
32027             <brief>
32028  The file type.
32029             </brief>
32030            <description>
32031             <p>
32032 <em>true</em> if this handle is a file.
32033 <em>false</em> if this handle is a directory.
32034             </p>
32035            </description>
32036             <version>
32037  1.0
32038             </version>
32039         </descriptive>
32040         <Type type="boolean"/>
32041       </Attribute>
32042       <Attribute readonly="readonly" name="isDirectory" id="::Filesystem::File::isDirectory">
32043         <webidl>    readonly attribute boolean isDirectory;</webidl>
32044         <descriptive>
32045             <brief>
32046  The file type.
32047             </brief>
32048            <description>
32049             <p>
32050 <em>true</em> if this handle is a directory,
32051 <em>false</em> if this handle is a file.
32052             </p>
32053            </description>
32054             <version>
32055  1.0
32056             </version>
32057         </descriptive>
32058         <Type type="boolean"/>
32059       </Attribute>
32060       <Attribute readonly="readonly" name="created" id="::Filesystem::File::created">
32061         <webidl>    readonly attribute Date? created;</webidl>
32062         <descriptive>
32063             <brief>
32064  The creation timestamp of this file.
32065             </brief>
32066            <description>
32067             <p>
32068 This is the timestamp when the file was first created in the filesystem.
32069 Equivalent to the timestamp when a call to createFile() succeeds.
32070             </p>
32071             <p>
32072 If the platform does not support this attribute, it MUST
32073 be <em>null</em>.
32074             </p>
32075             <p>
32076 It is unspecified and platform-dependent if the creation
32077 timestamp changes when a file is moved.
32078             </p>
32079            </description>
32080             <version>
32081  1.0
32082             </version>
32083         </descriptive>
32084         <Type type="Date" nullable="nullable"/>
32085       </Attribute>
32086       <Attribute readonly="readonly" name="modified" id="::Filesystem::File::modified">
32087         <webidl>    readonly attribute Date? modified;</webidl>
32088         <descriptive>
32089             <brief>
32090  The modification timestamp.
32091             </brief>
32092            <description>
32093             <p>
32094 The modification timestamp of this file. This is the timestamp
32095 of the most recent modification to the file, usually when the last
32096 write operation succeeded. Opening a file for reading does not change
32097 the modification timestamp.
32098             </p>
32099             <p>
32100 If the platform does not support this attribute, it MUST
32101 be <em>null</em>.
32102             </p>
32103             <p>
32104 It is unspecified and platform-dependent if the modified
32105 timestamp changes when a file is moved.
32106             </p>
32107            </description>
32108             <version>
32109  1.0
32110             </version>
32111             <Code> console.log(file.modified); // displays the modification timestamp
32112  </Code>
32113         </descriptive>
32114         <Type type="Date" nullable="nullable"/>
32115       </Attribute>
32116       <Attribute readonly="readonly" name="path" id="::Filesystem::File::path">
32117         <webidl>    readonly attribute DOMString path;</webidl>
32118         <descriptive>
32119             <brief>
32120  The path of this file, excluding the file name.
32121             </brief>
32122            <description>
32123             <p>
32124 This is the path of this file, beginning with the name of the root containing the file,
32125 up to and including the directory containing the file, but excluding the file name.
32126             </p>
32127             <p>
32128 Except in a special case of the File representing the root itself, the last
32129 character is always the character '/'.
32130             </p>
32131             <p>
32132 For example, if a file is located at music/ramones/volume1/RockawayBeach.mp3,
32133 the path would be music/ramones/volume1/.
32134             </p>
32135             <p>
32136 For example, if a directory is located at music/ramones/volume1, the path would be
32137 music/ramones/.
32138             </p>
32139             <p>
32140 For the virtual roots, the path is same as the name of the virtual root. 
32141 For example, if the root is music, then the path is music. If the root is documents, then the path is documents.
32142             </p>
32143            </description>
32144             <version>
32145  1.0
32146             </version>
32147             <Code> console.log(file.path); // should be 'music/' if the file is music/foo.mp3
32148  </Code>
32149         </descriptive>
32150         <Type type="DOMString"/>
32151       </Attribute>
32152       <Attribute readonly="readonly" name="name" id="::Filesystem::File::name">
32153         <webidl>    readonly attribute DOMString name;</webidl>
32154         <descriptive>
32155             <brief>
32156  The file name, excluding any path components.
32157             </brief>
32158            <description>
32159             <p>
32160 This is the name of this file, excluding the root name and any other path components.
32161             </p>
32162             <p>
32163 For example, if a file is located at
32164 music/ramones/volume1/RockawayBeach.mp3, the name would be RockawayBeach.mp3.
32165             </p>
32166             <p>
32167 For example, if a directory is located at music/ramones/volume1, the
32168 name would be volume1.
32169             </p>
32170             <p>
32171 For the special case of the root itself, the name is an empty string.
32172             </p>
32173            </description>
32174             <version>
32175  1.0
32176             </version>
32177             <Code> console.log(file.name); // should be foo.mp3 if the file path is music/foo.mp3
32178  </Code>
32179         </descriptive>
32180         <Type type="DOMString"/>
32181       </Attribute>
32182       <Attribute readonly="readonly" name="fullPath" id="::Filesystem::File::fullPath">
32183         <webidl>    readonly attribute DOMString fullPath;</webidl>
32184         <descriptive>
32185             <brief>
32186  The full path of this file.
32187             </brief>
32188            <description>
32189             <p>
32190 The full path of this file, beginning with the name of the root containing the file,
32191 and including the name of the file or directory itself.
32192             </p>
32193             <p>
32194 For instance, for a file, if the file is located at
32195 music/ramones/volume1/RockawayBeach.mp3, then the fullPath is
32196 music/ramones/volume1/RockawayBeach.mp3.
32197             </p>
32198             <p>
32199 For a directory, if the directory is located at music/ramones/volume1, then the
32200 fullPath is music/ramones/volume1.
32201             </p>
32202             <p>
32203 For the special case of the root itself, if the root is music, then the fullPath is
32204 music.
32205             </p>
32206             <p>
32207 The fullPath is always equal to path + name.
32208             </p>
32209            </description>
32210             <version>
32211  1.0
32212             </version>
32213             <Code> console.log(file.fullPath); // should be music/track1.mp3 if the file is music/track1.mp3
32214  </Code>
32215         </descriptive>
32216         <Type type="DOMString"/>
32217       </Attribute>
32218       <Attribute readonly="readonly" name="fileSize" id="::Filesystem::File::fileSize">
32219         <webidl>    readonly attribute unsigned long long fileSize;</webidl>
32220         <descriptive>
32221             <brief>
32222  The size of this file, in bytes.
32223             </brief>
32224            <description>
32225             <p>
32226 If there's an attempt to read this attribute on a directory,
32227 <em>undefined</em> is returned. To retrieve the
32228 number of files and directories contained in the directory,
32229 use the length attribute, instead.
32230             </p>
32231            </description>
32232             <version>
32233  1.0
32234             </version>
32235             <Code> console.log(file.fileSize); // displays the file size
32236  </Code>
32237         </descriptive>
32238         <Type type="unsigned long long"/>
32239       </Attribute>
32240       <Attribute readonly="readonly" name="length" id="::Filesystem::File::length">
32241         <webidl>    readonly attribute long length;</webidl>
32242         <descriptive>
32243             <brief>
32244  The number of files and directories contained in this file handle.
32245             </brief>
32246            <description>
32247             <p>
32248 If there's an attempt to read this attribute on a file,
32249 <em>undefined</em> is returned. To retrieve the
32250 size of a file, use the fileSize attribute instead.
32251             </p>
32252            </description>
32253             <version>
32254  1.0
32255             </version>
32256             <Code> console.log(file.length); // '3' if the directory contains two files and one sub-directory
32257  </Code>
32258         </descriptive>
32259         <Type type="long"/>
32260       </Attribute>
32261       <Operation name="toURI" id="::Filesystem::File::toURI">
32262         <webidl>    DOMString toURI() raises(<ref>WebAPIException</ref>);</webidl>
32263         <descriptive>
32264             <brief>
32265  Returns a URI for the file.
32266             </brief>
32267            <description>
32268             <p>
32269 Returns a URI that can be used to identify this entry (such as using it
32270 as the src attribute on an HTML img element). The URI has no specific
32271 expiration, it should be valid at least as long as the file exists.
32272             </p>
32273             <p>
32274 When this method is invoked, the implementation MUST generate a URI.
32275             </p>
32276             <p>
32277 If that URI corresponds to any of the public virtual roots (that is
32278 images, videos, music, documents, and downloads) the URI
32279 MUST be globally unique and could be used by any widget.
32280             </p>
32281             <p>
32282 If that URI corresponds to a file located in any of the widget private
32283 areas (such as wgt-package, wgt-private, wgt-private-tmp). The generated
32284 URI MUST be unique for that file and for the widget making the request
32285 (such as including some derived from the widget id in the URI). 
32286 These URIs MUST NOT be accessible to other widgets,
32287 apart from the one invoking this method.
32288             </p>
32289            </description>
32290             <version>
32291  1.0
32292             </version>
32293             <privilegelevel>
32294  public
32295             </privilegelevel>
32296             <privilege>
32297  http://tizen.org/privilege/filesystem.read
32298             </privilege>
32299             <Code> // 'file:///opt/usr/media/music/ramones/RockawayBeach.mp3' if the file is
32300  // music/ramones/RockawayBeach.mp3
32301  console.log(file.toURI());
32302  </Code>
32303         </descriptive>
32304         <Type type="DOMString">
32305           <descriptive>
32306               <description><p>
32307  DOMString The URI that identifies the file or <em>null</em> if an error occurs.
32308               </p></description>
32309           </descriptive>
32310         </Type>
32311         <ArgumentList/>
32312         <Raises>
32313           <RaiseException name="WebAPIException">
32314             <descriptive>
32315                 <description><p>
32316  with error type NotSupportedError, if the feature is not supported.
32317                 </p></description>
32318                 <description><p>
32319  with error type SecurityError, if the application does not have the privilege to call this method.
32320                 </p></description>
32321                 <description><p>
32322  with error type UnknownError in any other error situation.     
32323                 </p></description>
32324             </descriptive>
32325           </RaiseException>
32326         </Raises>
32327       </Operation>
32328       <Operation name="listFiles" id="::Filesystem::File::listFiles">
32329         <webidl>    void listFiles(<ref>FileArraySuccessCallback</ref> onsuccess,
32330                    optional <ref>ErrorCallback</ref>? onerror,
32331                    optional <ref>FileFilter</ref>? filter) raises(<ref>WebAPIException</ref>);</webidl>
32332         <descriptive>
32333             <brief>
32334  Returns the list of all files in this directory.
32335             </brief>
32336            <description>
32337             <p>
32338 The list of files will be passed as a File[] in the onsuccess
32339 and contains directories and files. However, the directories &quot;.&quot; and &quot;..&quot;
32340 MUST NOT be returned. Each File object part of the array MUST inherit
32341 all the access rights (that is one of the values in FileMode) from the File object in which
32342 this method was invoked.
32343             </p>
32344             <p>
32345 If the filter is passed and contains valid values, only those directories
32346 and files in the directory that match the filter criteria specified
32347 in the FileFilter interface MUST be returned in the onsuccess.
32348 If no filter is passed, the filter is <em>null</em> or undefined, or the filter contains invalid
32349 values, the implementation MUST return the full list of files in the directory.
32350             </p>
32351             <p>
32352 If the directory does not contain any files or directories, or
32353 the filter criteria is unmatched to any files or directories, the onsuccess will be
32354 invoked with an empty array.
32355             </p>
32356             <p>
32357 The ErrorCallback is launched with these error types:
32358             </p>
32359             <ul>
32360               <li>
32361 IOError: The operation is launched on a file (not a directory).              </li>
32362               <li>
32363 InvalidValuesError: If any of the input parameters contain an invalid value.              </li>
32364               <li>
32365 UnknownError: In any other error case.               </li>
32366             </ul>
32367            </description>
32368             <version>
32369  1.0
32370             </version>
32371             <privilegelevel>
32372  public
32373             </privilegelevel>
32374             <privilege>
32375  http://tizen.org/privilege/filesystem.read
32376             </privilege>
32377             <Code> function onsuccess(files) {
32378    console.log(&quot;There are &quot; + files.length  + &quot; in the selected folder&quot;);
32379  }
32380
32381  function onerror(error) {
32382    console.log(&quot;The error &quot; + error.message + &quot; occurred when listing the files in the selected folder&quot;);
32383  }
32384
32385  tizen.filesystem.resolve(
32386      &quot;documents&quot;,
32387      function(dir){
32388        dir.listFiles(onsuccess, onerror);
32389      }, function(e){
32390        console.log(&quot;Error &quot; + e.message);
32391      }, &quot;r&quot;
32392  );
32393  </Code>
32394         </descriptive>
32395         <Type type="void"/>
32396         <ArgumentList>
32397           <Argument name="onsuccess">
32398             <descriptive>
32399                 <description><p>
32400  Called when the list operation has been successfully completed.
32401                 </p></description>
32402             </descriptive>
32403             <Type name="FileArraySuccessCallback"/>
32404           </Argument>
32405           <Argument optional="optional" name="onerror">
32406             <descriptive>
32407                 <description><p>
32408  Called if an error occurred.
32409                 </p></description>
32410             </descriptive>
32411             <Type name="ErrorCallback" nullable="nullable"/>
32412           </Argument>
32413           <Argument optional="optional" name="filter">
32414             <descriptive>
32415                 <description><p>
32416  Used to restrict the listed files.
32417                 </p></description>
32418             </descriptive>
32419             <Type name="FileFilter" nullable="nullable"/>
32420           </Argument>
32421         </ArgumentList>
32422         <Raises>
32423           <RaiseException name="WebAPIException">
32424             <descriptive>
32425                 <description><p>
32426  with error type TypeMismatchError, if the input parameter
32427 is not compatible with the expected type for that parameter.
32428                 </p></description>
32429                 <description><p>
32430  with error type SecurityError, if the application does not have the privilege to call this method.
32431                 </p></description>
32432                 <description><p>
32433  with error type NotSupportedError, if the feature is not supported.
32434                 </p></description>
32435             </descriptive>
32436           </RaiseException>
32437         </Raises>
32438       </Operation>
32439       <Operation name="openStream" id="::Filesystem::File::openStream">
32440         <webidl>    void openStream(<ref>FileMode</ref> mode,
32441                     <ref>FileStreamSuccessCallback</ref> onsuccess,
32442                     optional <ref>ErrorCallback</ref>? onerror,
32443                     optional DOMString? encoding) raises(<ref>WebAPIException</ref>);</webidl>
32444         <descriptive>
32445             <brief>
32446  Opens the file in the given mode supporting the given
32447 encoding.
32448             </brief>
32449            <description>
32450             <p>
32451 This operation is performed asynchronously. If the file is opened
32452 successfully, the onsuccess is invoked with a FileStream
32453 that can be used for reading and writing the file, depending on the
32454 mode. The return FileStream instance includes a file pointer, which represents
32455 the current position in the file. The filepointer will, by default, be at the start of the file,
32456 except in the case of opening with append (&quot;a&quot;) mode, in which case
32457 the filepointer points to the end of the file.
32458             </p>
32459             <p>
32460 The ErrorCallback is launched with these error types:
32461             </p>
32462             <ul>
32463               <li>
32464 InvalidValuesError: If any of the input parameters contains an invalid value.               </li>
32465               <li>
32466 IOError: The operation is launched on a directory (not a file), the file is not
32467 valid or it does not exist.              </li>
32468               <li>
32469 UnknownError: In any other error case.              </li>
32470             </ul>
32471            </description>
32472             <version>
32473  1.0
32474             </version>
32475             <privilegelevel>
32476  public
32477             </privilegelevel>
32478             <privilege>
32479  http://tizen.org/privilege/filesystem.read
32480             </privilege>
32481             <Code> var documentsDir;
32482  function onsuccess(files) {
32483    for(var i = 0; i &#60; files.length; i++) {
32484      console.log(&quot;File Name is &quot; + files[i].name); // displays file name
32485    }
32486
32487    var testFile = documentsDir.createFile(&quot;test.txt&quot;);
32488    if (testFile != null) {
32489      testFile.openStream(
32490          &quot;w&quot;,
32491          function(fs){
32492            fs.write(&quot;HelloWorld&quot;);
32493            fs.close();
32494          }, function(e){
32495            console.log(&quot;Error &quot; + e.message);
32496          }, &quot;UTF-8&quot;
32497      );
32498    }
32499  }
32500
32501  function onerror(error) {
32502    console.log(&quot;The error &quot; + error.message + &quot; occurred when listing the files in the selected folder&quot;);
32503  }
32504
32505  tizen.filesystem.resolve(
32506      'documents',
32507      function(dir){
32508        documentsDir = dir; dir.listFiles(onsuccess,onerror);
32509      }, function(e) {
32510        console.log(&quot;Error&quot; + e.message);
32511      }, &quot;rw&quot;
32512  );
32513  </Code>
32514         </descriptive>
32515         <Type type="void"/>
32516         <ArgumentList>
32517           <Argument name="mode">
32518             <descriptive>
32519                 <description><p>
32520  The mode for opening a file:
32521 <b>&quot;r&quot;</b> for reading
32522 <b>&quot;a&quot;</b> for appending
32523 <b>&quot;w&quot;</b> for [over]writing
32524 <b>&quot;rw&quot;</b> for reading and writing
32525                 </p></description>
32526             </descriptive>
32527             <Type name="FileMode"/>
32528           </Argument>
32529           <Argument name="onsuccess">
32530             <descriptive>
32531                 <description><p>
32532  Called when the file has been opened.
32533                 </p></description>
32534             </descriptive>
32535             <Type name="FileStreamSuccessCallback"/>
32536           </Argument>
32537           <Argument optional="optional" name="onerror">
32538             <descriptive>
32539                 <description><p>
32540  Called if an error occurred.
32541                 </p></description>
32542             </descriptive>
32543             <Type name="ErrorCallback" nullable="nullable"/>
32544           </Argument>
32545           <Argument optional="optional" name="encoding">
32546             <descriptive>
32547                 <description><p>
32548  The encoding for read/write operations on the file,
32549 at least the following encodings MUST be supported:
32550 &quot;<a href="http://www.ietf.org/rfc/rfc2279.txt">UTF-8</a>&quot; default encoding,
32551 &quot;<a href="http://en.wikipedia.org/wiki/ISO/IEC_8859-1">ISO-8859-1</a>&quot; latin1 encoding.
32552 If no encoding is passed by the developer, then the default platform encoding
32553 MUST be used.
32554                 </p></description>
32555             </descriptive>
32556             <Type type="DOMString" nullable="nullable"/>
32557           </Argument>
32558         </ArgumentList>
32559         <Raises>
32560           <RaiseException name="WebAPIException">
32561             <descriptive>
32562                 <description><p>
32563  with error type TypeMismatchError, if the input parameter
32564 is not compatible with the expected type for that parameter.
32565                 </p></description>
32566                 <description><p>
32567  with error type SecurityError, if the application does not have the privilege to call this method.
32568                 </p></description>
32569                 <description><p>
32570  with error type NotSupportedError, if the feature is not supported.
32571                 </p></description>
32572             </descriptive>
32573           </RaiseException>
32574         </Raises>
32575       </Operation>
32576       <Operation name="readAsText" id="::Filesystem::File::readAsText">
32577         <webidl>    void readAsText(<ref>FileStringSuccessCallback</ref> onsuccess,
32578                     optional <ref>ErrorCallback</ref>? onerror,
32579                     optional DOMString? encoding) raises(<ref>WebAPIException</ref>);</webidl>
32580         <descriptive>
32581             <brief>
32582  Reads the content of a file as a DOMString.
32583             </brief>
32584            <description>
32585             <p>
32586 If the operation is successfully executed, the onsuccess is
32587 invoked and a DOMString is passed as input parameter that represents
32588 the file content in the format determined by the encoding parameter.
32589             </p>
32590             <p>
32591 The ErrorCallback is launched with these error types:
32592             </p>
32593             <ul>
32594               <li>
32595 InvalidValuesError: If any of the input parameters contain an invalid value.              </li>
32596               <li>
32597 IOError: The operation is launched on a directory (not a file), the file is not
32598 valid, or the file does not exist.              </li>
32599               <li>
32600 UnknownError: In any other error case.              </li>
32601             </ul>
32602            </description>
32603             <version>
32604  1.0
32605             </version>
32606             <privilegelevel>
32607  public
32608             </privilegelevel>
32609             <privilege>
32610  http://tizen.org/privilege/filesystem.read
32611             </privilege>
32612             <Code> function onsuccess(files) {
32613    for(var i = 0; i &#60; files.length; i++) {
32614      console.log(&quot;File Name is &quot; + files[i].name); // displays file name
32615      if (files[i].isDirectory == false)
32616        files[i].readAsText(
32617            function(str){
32618              console.log(&quot;The file content &quot; + str);
32619            }, function(e){
32620              console.log(&quot;Error &quot; + e.message);
32621            }, &quot;UTF-8&quot;
32622        );
32623    }
32624  }
32625
32626  function onerror(error) {
32627    console.log(&quot;The error &quot; + error.message + &quot; occurred when listing the files in the selected folder&quot;);
32628  }
32629
32630  var documentsDir;
32631  tizen.filesystem.resolve(
32632      'documents', 
32633      function(dir){
32634        documentsDir = dir;
32635        dir.listFiles(onsuccess,onerror);
32636      }, function(e) {
32637        console.log(&quot;Error&quot; + e.message);
32638      }, &quot;rw&quot;
32639  );
32640  </Code>
32641         </descriptive>
32642         <Type type="void"/>
32643         <ArgumentList>
32644           <Argument name="onsuccess">
32645             <descriptive>
32646                 <description><p>
32647  Called when the file has been successfully read.
32648                 </p></description>
32649             </descriptive>
32650             <Type name="FileStringSuccessCallback"/>
32651           </Argument>
32652           <Argument optional="optional" name="onerror">
32653             <descriptive>
32654                 <description><p>
32655  If an error occurs while reading the file.
32656                 </p></description>
32657             </descriptive>
32658             <Type name="ErrorCallback" nullable="nullable"/>
32659           </Argument>
32660           <Argument optional="optional" name="encoding">
32661             <descriptive>
32662                 <description><p>
32663  The encoding for read/write operations on the file,
32664 at least the following encodings MUST be supported:
32665 &quot;<a href="http://www.ietf.org/rfc/rfc2279.txt">UTF-8</a>&quot; default encoding,
32666 &quot;<a href="http://en.wikipedia.org/wiki/ISO/IEC_8859-1">ISO-8859-1</a>&quot; latin1 encoding.
32667 If no encoding is passed by the developer, then the default platform
32668 encoding MUST be used.
32669                 </p></description>
32670             </descriptive>
32671             <Type type="DOMString" nullable="nullable"/>
32672           </Argument>
32673         </ArgumentList>
32674         <Raises>
32675           <RaiseException name="WebAPIException">
32676             <descriptive>
32677                 <description><p>
32678  with error type TypeMismatchError, if the input parameter
32679 is not compatible with the expected type for that parameter.
32680                 </p></description>
32681                 <description><p>
32682  with error type SecurityError, if the application does not have the privilege to call this method.
32683                 </p></description>
32684                 <description><p>
32685  with error type NotSupportedError, if the feature is not supported.
32686                 </p></description>
32687             </descriptive>
32688           </RaiseException>
32689         </Raises>
32690       </Operation>
32691       <Operation name="copyTo" id="::Filesystem::File::copyTo">
32692         <webidl>    void copyTo(DOMString originFilePath,
32693                 DOMString destinationFilePath,
32694                 boolean overwrite,
32695                 optional <ref>SuccessCallback</ref>? onsuccess,
32696                 optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);</webidl>
32697         <descriptive>
32698             <brief>
32699  Copies (and overwrites if possible and specified) a file or a
32700 directory from a specified location to another specified location.
32701             </brief>
32702            <description>
32703             <p>
32704 The copy of the file or directory identified by the originFilePath parameter
32705 MUST be created in the path passed in the destinationFilePath parameter.
32706             </p>
32707             <p>
32708 The file or directory to be copied MUST be under the Directory from which the method
32709 is invoked, otherwise the operation MUST NOT be performed.
32710             </p>
32711             <p>
32712 If the copy is performed successfully, the onsuccess is invoked.
32713             </p>
32714             <p>
32715 The ErrorCallback is launched with these error types:
32716             </p>
32717             <ul>
32718               <li>
32719 InvalidValuesError: If any of the input parameters contain an invalid value.              </li>
32720               <li>
32721 NotFoundError: originFilePath does not correspond to a valid file or destinationPath is not a valid path.              </li>
32722               <li>
32723 IOError: The File in which the copyTo method is invoked is a file (not a directory), 
32724 originFilePath corresponds to a file or directory in use by another process,
32725 overwrite parameter is <em>false</em> and destinationFilePath corresponds to an existing
32726 file or directory.              </li>
32727               <li>
32728 UnknownError: In any other error case.              </li>
32729             </ul>
32730            </description>
32731             <version>
32732  1.0
32733             </version>
32734             <privilegelevel>
32735  public
32736             </privilegelevel>
32737             <privilege>
32738  http://tizen.org/privilege/filesystem.write
32739             </privilege>
32740             <Code> var documentsDir;
32741  function onsuccess(files) {
32742    for(var i = 0; i &#60; files.length; i++) {
32743      if (files[i].isDirectory == false) {
32744        documentsDir.copyTo(files[i].fullPath,
32745                            &quot;images/backup/&quot; + files[i].name,
32746                            false,
32747                            function(){console.log(&quot;file copied&quot;);});
32748      }
32749    }
32750  }
32751
32752  function onerror(error) {
32753    console.log(&quot;The error &quot; + error.message +
32754                &quot; occurred when listing the files in the selected folder&quot;);
32755  }
32756
32757  tizen.filesystem.resolve(
32758      'documents', 
32759      function(dir){
32760        documentsDir = dir;
32761        dir.listFiles(onsuccess, onerror);
32762      }, function(e) {
32763        console.log(&quot;Error&quot; + e.message);
32764      }, &quot;rw&quot;
32765  );
32766  </Code>
32767         </descriptive>
32768         <Type type="void"/>
32769         <ArgumentList>
32770           <Argument name="originFilePath">
32771             <descriptive>
32772                 <description><p>
32773  The origin full virtual file or directory path, it must be under the current directory.
32774                 </p></description>
32775             </descriptive>
32776             <Type type="DOMString"/>
32777           </Argument>
32778           <Argument name="destinationFilePath">
32779             <descriptive>
32780                 <description><p>
32781  The new full virtual file path or directory path.
32782                 </p></description>
32783             </descriptive>
32784             <Type type="DOMString"/>
32785           </Argument>
32786           <Argument name="overwrite">
32787             <descriptive>
32788                 <description><p>
32789  <em>true</em> enforces overwriting an existing file.
32790                 </p></description>
32791             </descriptive>
32792             <Type type="boolean"/>
32793           </Argument>
32794           <Argument optional="optional" name="onsuccess">
32795             <descriptive>
32796                 <description><p>
32797  Called when the file has been copied.
32798                 </p></description>
32799             </descriptive>
32800             <Type name="SuccessCallback" nullable="nullable"/>
32801           </Argument>
32802           <Argument optional="optional" name="onerror">
32803             <descriptive>
32804                 <description><p>
32805  Called if an error occurred.
32806                 </p></description>
32807             </descriptive>
32808             <Type name="ErrorCallback" nullable="nullable"/>
32809           </Argument>
32810         </ArgumentList>
32811         <Raises>
32812           <RaiseException name="WebAPIException">
32813             <descriptive>
32814                 <description><p>
32815  with error type TypeMismatchError, if the input parameter
32816 is not compatible with the expected type for that parameter.
32817                 </p></description>
32818                 <description><p>
32819  with error type SecurityError, if the application does not have the privilege to call this method.
32820                 </p></description>
32821                 <description><p>
32822  with error type NotSupportedError, if the feature is not supported.
32823                 </p></description>
32824             </descriptive>
32825           </RaiseException>
32826         </Raises>
32827       </Operation>
32828       <Operation name="moveTo" id="::Filesystem::File::moveTo">
32829         <webidl>    void moveTo(DOMString originFilePath,
32830                 DOMString destinationFilePath,
32831                 boolean overwrite,
32832                 optional <ref>SuccessCallback</ref>? onsuccess,
32833                 optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);</webidl>
32834         <descriptive>
32835             <brief>
32836  Moves a file or a directory from a specified location to another.
32837             </brief>
32838            <description>
32839             <p>
32840 The file or directory will be moved (and will overwrite if possible and specified)
32841 atomically to the given path. This operation is different from 
32842 instantiating copyTo and then deleting the original file, as on certain
32843 platforms, this operation does not require extra disk space.
32844             </p>
32845             <p>
32846 The file or directory identified by the originFilePath parameter
32847 MUST be moved to the path passed in the destinationFilePath parameter.
32848             </p>
32849             <p>
32850 The file to be moved MUST be under the Directory from which the method
32851 is invoked, otherwise the operation MUST NOT be performed.
32852             </p>
32853             <p>
32854 If the file or directory is moved successfully, the onsuccess is
32855 invoked.
32856             </p>
32857             <p>
32858 The ErrorCallback is launched with these error types:
32859             </p>
32860             <ul>
32861               <li>
32862 InvalidValuesError: If any of the input parameters contain an invalid value.               </li>
32863               <li>
32864 NotFoundError: originFilePath does not correspond to a valid file or destinationPath is not a valid path.              </li>
32865               <li>
32866 IOError: The File in which the moveTo method is invoked is a file (not a directory),
32867 originFilePath corresponds to a file or directory in use by another process,
32868 overwrite parameter is <em>false</em> and destinationFilePath corresponds to an existing
32869 file or directory.              </li>
32870               <li>
32871 UnknownError: In any other error case.              </li>
32872             </ul>
32873            </description>
32874             <version>
32875  1.0
32876             </version>
32877             <privilegelevel>
32878  public
32879             </privilegelevel>
32880             <privilege>
32881  http://tizen.org/privilege/filesystem.write
32882             </privilege>
32883             <Code> var documentsDir;
32884  function onsuccess(files) {
32885    for(var i = 0; i &#60; files.length; i++) {
32886      if (files[i].isDirectory == false) {
32887        documentsDir.moveTo(files[i].fullPath,
32888                            &quot;images/newFolder/&quot; + files[i].name,
32889                            false,
32890                            function(){console.log(&quot;file moved&quot;);});
32891      }
32892    }
32893  }
32894
32895  function onerror(error) {
32896    console.log(&quot;The error &quot; + error.message +
32897                &quot; occurred during listing the files in the selected folder&quot;);
32898  }
32899
32900  tizen.filesystem.resolve(
32901      'documents', 
32902      function(dir){
32903        documentsDir = dir;
32904        dir.listFiles(onsuccess, onerror);
32905      }, function(e) {
32906        console.log(&quot;Error&quot; + e.message);
32907      }, &quot;rw&quot;
32908  );
32909  </Code>
32910         </descriptive>
32911         <Type type="void"/>
32912         <ArgumentList>
32913           <Argument name="originFilePath">
32914             <descriptive>
32915                 <description><p>
32916  The origin full virtual file or directory path, it must be under the current directory.
32917                 </p></description>
32918             </descriptive>
32919             <Type type="DOMString"/>
32920           </Argument>
32921           <Argument name="destinationFilePath">
32922             <descriptive>
32923                 <description><p>
32924  The new full virtual file path or directory path.
32925                 </p></description>
32926             </descriptive>
32927             <Type type="DOMString"/>
32928           </Argument>
32929           <Argument name="overwrite">
32930             <descriptive>
32931                 <description><p>
32932  <em>true</em> enforces overwriting an existing file.
32933                 </p></description>
32934             </descriptive>
32935             <Type type="boolean"/>
32936           </Argument>
32937           <Argument optional="optional" name="onsuccess">
32938             <descriptive>
32939                 <description><p>
32940  Called when the file has been moved.
32941                 </p></description>
32942             </descriptive>
32943             <Type name="SuccessCallback" nullable="nullable"/>
32944           </Argument>
32945           <Argument optional="optional" name="onerror">
32946             <descriptive>
32947                 <description><p>
32948  Called if an error occurred.
32949                 </p></description>
32950             </descriptive>
32951             <Type name="ErrorCallback" nullable="nullable"/>
32952           </Argument>
32953         </ArgumentList>
32954         <Raises>
32955           <RaiseException name="WebAPIException">
32956             <descriptive>
32957                 <description><p>
32958  with error type TypeMismatchError, if the input parameter
32959 is not compatible with the expected type for that parameter.
32960                 </p></description>
32961                 <description><p>
32962  with error type SecurityError, if the application does not have the privilege to call this method.
32963                 </p></description>
32964                 <description><p>
32965  with error type NotSupportedError, if the feature is not supported.
32966                 </p></description>
32967             </descriptive>
32968           </RaiseException>
32969         </Raises>
32970       </Operation>
32971       <Operation name="createDirectory" id="::Filesystem::File::createDirectory">
32972         <webidl>    <ref>File</ref> createDirectory(DOMString dirPath) raises(<ref>WebAPIException</ref>);</webidl>
32973         <descriptive>
32974             <brief>
32975  Creates a new directory.
32976             </brief>
32977            <description>
32978             <p>
32979 A new directory will be created relative to the current
32980 directory that this operation is performed on. The implementation will attempt to
32981 create all necessary sub-directories specified in the dirPath, as well. The use of &quot;.&quot;
32982 or &quot;..&quot; in path components is not supported.
32983             </p>
32984             <p>
32985 This operation can only be performed on file handlers that
32986 represent a directory (that is, <var>isDirectory == true</var>).
32987             </p>
32988             <p>
32989 If the directory is successfully created, it will be returned.
32990             </p>
32991             <p>
32992 In case the directory cannot be created, an error MUST be thrown
32993 with the appropriate error type.
32994             </p>
32995            </description>
32996             <version>
32997  1.0
32998             </version>
32999             <privilegelevel>
33000  public
33001             </privilegelevel>
33002             <privilege>
33003  http://tizen.org/privilege/filesystem.write
33004             </privilege>
33005             <Code> var dir; //Directory object obtained from filesystem API
33006  var newDir = dir.createDirectory(&quot;newDir&quot;);
33007  var anotherNewDir = dir.createDirectory(&quot;newDir1/subNewDir1&quot;);
33008  </Code>
33009         </descriptive>
33010         <Type name="File">
33011           <descriptive>
33012               <description><p>
33013  File The file handle of the new directory. The new File object
33014 will have &quot;rw&quot; access rights, as it inherits this from
33015 the File object on which the createDirectory() method is
33016 called.
33017               </p></description>
33018           </descriptive>
33019         </Type>
33020         <ArgumentList>
33021           <Argument name="dirPath">
33022             <descriptive>
33023                 <description><p>
33024  The relative directory path, it should only contain
33025 characters supported by the underlying filesystem.
33026                 </p></description>
33027             </descriptive>
33028             <Type type="DOMString"/>
33029           </Argument>
33030         </ArgumentList>
33031         <Raises>
33032           <RaiseException name="WebAPIException">
33033             <descriptive>
33034                 <description><p>
33035  with error type IOError, if the dirPath already exists.
33036                 </p></description>
33037                 <description><p>
33038  with error type InvalidValuesError, if the dirPath does not contain a valid path.
33039                 </p></description>
33040                 <description><p>
33041  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
33042                 </p></description>
33043                 <description><p>
33044  with error type SecurityError, if the application does not have the privilege to call this method.
33045                 </p></description>
33046                 <description><p>
33047  with error type NotSupportedError, if the feature is not supported.
33048                 </p></description>
33049                 <description><p>
33050  with error type UnknownError in any other error case.     
33051                 </p></description>
33052             </descriptive>
33053           </RaiseException>
33054         </Raises>
33055       </Operation>
33056       <Operation name="createFile" id="::Filesystem::File::createFile">
33057         <webidl>    <ref>File</ref> createFile(DOMString relativeFilePath) raises(<ref>WebAPIException</ref>);</webidl>
33058         <descriptive>
33059             <brief>
33060  Creates a new empty file in a specified location.
33061             </brief>
33062            <description>
33063             <p>
33064 A new empty file is created in the given path relative
33065 to the directory indicated by current 'File' object's 'path' attribute.
33066 The use of &quot;.&quot; or &quot;..&quot; in path components is not supported.
33067 This operation can only be performed on file handlers that
33068 represent a directory (that is, <var>isDirectory == true</var>).
33069             </p>
33070             <p>
33071 If the file is successfully created, a file handler MUST
33072 be returned by this method.
33073             </p>
33074             <p>
33075 In case the file cannot be created, an error MUST be thrown
33076 with the appropriate error type.
33077             </p>
33078            </description>
33079             <version>
33080  1.0
33081             </version>
33082             <privilegelevel>
33083  public
33084             </privilegelevel>
33085             <privilege>
33086  http://tizen.org/privilege/filesystem.write
33087             </privilege>
33088             <Code> var newFile = dir.createFile(&quot;newFilePath&quot;);
33089  </Code>
33090         </descriptive>
33091         <Type name="File">
33092           <descriptive>
33093               <description><p>
33094  File The file handle of the new empty file. The new File object
33095 will have &quot;rw&quot; access rights, as it inherits this from
33096 the File object on which the createFile() method is
33097 called.
33098               </p></description>
33099           </descriptive>
33100         </Type>
33101         <ArgumentList>
33102           <Argument name="relativeFilePath">
33103             <descriptive>
33104                 <description><p>
33105  The new file path, it should only contain characters supported by the underlying filesystem.
33106                 </p></description>
33107             </descriptive>
33108             <Type type="DOMString"/>
33109           </Argument>
33110         </ArgumentList>
33111         <Raises>
33112           <RaiseException name="WebAPIException">
33113             <descriptive>
33114                 <description><p>
33115  with error type IOError, if the filePath already exists.
33116                 </p></description>
33117                 <description><p>
33118  with error type InvalidValuesError, if the filePath contains an invalid value.
33119                 </p></description>
33120                 <description><p>
33121  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
33122                 </p></description>
33123                 <description><p>
33124  with error type SecurityError, if the application does not have the privilege to call this method.
33125                 </p></description>
33126                 <description><p>
33127  with error type NotSupportedError, if the feature is not supported.
33128                 </p></description>
33129                 <description><p>
33130  with error type UnknownError, in any other error case.     
33131                 </p></description>
33132             </descriptive>
33133           </RaiseException>
33134         </Raises>
33135       </Operation>
33136       <Operation name="resolve" id="::Filesystem::File::resolve">
33137         <webidl>    <ref>File</ref> resolve(DOMString filePath) raises(<ref>WebAPIException</ref>);</webidl>
33138         <descriptive>
33139             <brief>
33140  Resolves an existing file or directory relative to
33141 the current directory this operation is performed on, and
33142 returns a file handle for it.
33143             </brief>
33144            <description>
33145             <p>
33146 The filePath is not allowed to contain the &quot;.&quot; or &quot;..&quot; directories.
33147             </p>
33148             <p>
33149 The encoding of file paths is <a href="http://www.ietf.org/rfc/rfc2279.txt">UTF-8</a>.
33150             </p>
33151            </description>
33152             <version>
33153  1.0
33154             </version>
33155             <privilegelevel>
33156  public
33157             </privilegelevel>
33158             <privilege>
33159  http://tizen.org/privilege/filesystem.read
33160             </privilege>
33161             <Code> var file;
33162  // Resolves helloWorld.doc file that is located in the
33163  // documents root location
33164  tizen.filesystem.resolve(
33165    'documents', 
33166    function(dir){ file = dir.resolve(&quot;helloWorld.doc&quot;);},
33167    function(e){ console.log(&quot;Error&quot; + e.message);},
33168    &quot;rw&quot;);
33169  </Code>
33170         </descriptive>
33171         <Type name="File">
33172           <descriptive>
33173               <description><p>
33174  File The file handle of the file. The new File object will inherit its access
33175 rights from the File object on which this resolve() method
33176 is called.
33177               </p></description>
33178           </descriptive>
33179         </Type>
33180         <ArgumentList>
33181           <Argument name="filePath">
33182             <descriptive>
33183                 <description><p>
33184  The relative file/directory path/file URI to resolve.
33185                 </p></description>
33186             </descriptive>
33187             <Type type="DOMString"/>
33188           </Argument>
33189         </ArgumentList>
33190         <Raises>
33191           <RaiseException name="WebAPIException">
33192             <descriptive>
33193                 <description><p>
33194  with error type TypeMismatchError, if the input parameter
33195 is not compatible with the expected type for that parameter.
33196                 </p></description>
33197                 <description><p>
33198  with error type InvalidValuesError, if the file path contains an
33199 invalid value.
33200                 </p></description>
33201                 <description><p>
33202  with error type IOError, if the method is executed in a File object
33203 that does not represent a directory (that is, isDirectory attribute is false).
33204                 </p></description>
33205                 <description><p>
33206  with error type NotFoundError, if a file does not exist for the passed
33207 file path.
33208                 </p></description>
33209                 <description><p>
33210  with error type SecurityError, if the application does not have the privilege to call this method.
33211                 </p></description>
33212                 <description><p>
33213  with error type NotSupportedError, if the feature is not supported.
33214                 </p></description>
33215                 <description><p>
33216  with error type UnknownError in any other error case.     
33217                 </p></description>
33218             </descriptive>
33219           </RaiseException>
33220         </Raises>
33221       </Operation>
33222       <Operation name="deleteDirectory" id="::Filesystem::File::deleteDirectory">
33223         <webidl>    void deleteDirectory(DOMString directoryPath,
33224                          boolean recursive,
33225                          optional <ref>SuccessCallback</ref>? onsuccess,
33226                          optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);</webidl>
33227         <descriptive>
33228             <brief>
33229  Deletes a specified directory and directory tree if specified.
33230             </brief>
33231            <description>
33232             <p>
33233 This function attempts to asynchronously delete a directory or directory tree under the current
33234 directory.
33235             </p>
33236             <p>
33237 If the recursive parameter is set to <em>true</em>, all the directories and files under the specified
33238 directory MUST be deleted. If the recursive parameter is set to false, the directory will
33239 only be deleted if it is empty, otherwise an IOError error type will be passed in onerror.
33240             </p>
33241             <p>
33242 The directory to be deleted MUST be under the Directory that the method
33243 is invoked from, otherwise the operation MUST NOT be performed.
33244 If the deletion is performed successfully, the onsuccess is invoked.
33245             </p>
33246             <p>
33247 The ErrorCallback is launched with these error types:
33248             </p>
33249             <ul>
33250               <li>
33251 InvalidValuesError: If any of the input parameters contain an invalid value.               </li>
33252               <li>
33253 NotFoundError: The passed directory does not correspond to a valid directory.               </li>
33254               <li>
33255 IOError: The File in which the delete method is invoked
33256 is a file (not a directory), the directory is in use by another process
33257 or the directory is not empty and recursive argument is <em>false</em>.
33258 This code will be also used if a recursive deletion partially fails
33259 and any data deleted so far cannot be recovered. This may occur
33260 due to the lack of filesystem permissions or if any
33261 directories or files are opened by other processes.              </li>
33262               <li>
33263 UnknownError: In any other error case.              </li>
33264             </ul>
33265            </description>
33266             <version>
33267  1.0
33268             </version>
33269             <privilegelevel>
33270  public
33271             </privilegelevel>
33272             <privilege>
33273  http://tizen.org/privilege/filesystem.write
33274             </privilege>
33275             <Code> var documentsDir;
33276  function onsuccess(files) {
33277    for(var i = 0; i &#60; files.length; i++) {
33278      if (files[i].isDirectory) {
33279        documentsDir.deleteDirectory(
33280            files[i].fullPath,
33281            false,
33282            function(){
33283              console.log(&quot;Directory Deleted&quot;);
33284            }, function(e) {
33285              console.log(&quot;Error&quot; + e.message);
33286            });
33287      } else {
33288        documentsDir.deleteFile(
33289            files[i].fullPath,
33290            function(){
33291              console.log(&quot;File Deleted&quot;);
33292            }, function(e) {
33293              console.log(&quot;Error&quot; + e.message);
33294            });
33295      }
33296    }
33297  }
33298
33299  function onerror(error) {
33300    console.log(&quot;The error &quot; + error.message + &quot; occurred when listing the files in the selected folder&quot;);
33301  }
33302
33303  tizen.filesystem.resolve(
33304      'documents', 
33305      function(dir){
33306        documentsDir = dir;
33307        dir.listFiles(onsuccess,onerror);
33308      }, function(e) {
33309        console.log(&quot;Error&quot; + e.message);
33310      }, &quot;rw&quot;
33311  );
33312  </Code>
33313         </descriptive>
33314         <Type type="void"/>
33315         <ArgumentList>
33316           <Argument name="directoryPath">
33317             <descriptive>
33318                 <description><p>
33319  The full virtual path to the directory to be deleted (must be under the current one).
33320                 </p></description>
33321             </descriptive>
33322             <Type type="DOMString"/>
33323           </Argument>
33324           <Argument name="recursive">
33325             <descriptive>
33326                 <description><p>
33327  <em>true</em> means a recursive deletion. This
33328 will delete all data in all subdirectories. Use with caution.
33329                 </p></description>
33330             </descriptive>
33331             <Type type="boolean"/>
33332           </Argument>
33333           <Argument optional="optional" name="onsuccess">
33334             <descriptive>
33335                 <description><p>
33336  Called if the directory is successfully deleted.
33337                 </p></description>
33338             </descriptive>
33339             <Type name="SuccessCallback" nullable="nullable"/>
33340           </Argument>
33341           <Argument optional="optional" name="onerror">
33342             <descriptive>
33343                 <description><p>
33344  Called if an error occurred.
33345                 </p></description>
33346             </descriptive>
33347             <Type name="ErrorCallback" nullable="nullable"/>
33348           </Argument>
33349         </ArgumentList>
33350         <Raises>
33351           <RaiseException name="WebAPIException">
33352             <descriptive>
33353                 <description><p>
33354  with error type TypeMismatchError, if the input parameter
33355 is not compatible with the expected type for that parameter.
33356                 </p></description>
33357                 <description><p>
33358  with error type SecurityError, if the application does not have the privilege to call this method.
33359                 </p></description>
33360                 <description><p>
33361  with error type NotSupportedError, if the feature is not supported.
33362                 </p></description>
33363             </descriptive>
33364           </RaiseException>
33365         </Raises>
33366       </Operation>
33367       <Operation name="deleteFile" id="::Filesystem::File::deleteFile">
33368         <webidl>    void deleteFile(DOMString filePath,
33369                     optional <ref>SuccessCallback</ref>? onsuccess,
33370                     optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);</webidl>
33371         <descriptive>
33372             <brief>
33373  Deletes a specified file.
33374             </brief>
33375            <description>
33376             <p>
33377 This function attempts to asynchronously delete a file under the current directory.
33378             </p>
33379             <p>
33380 The file to be deleted MUST be under the Directory from which the method
33381 is invoked, otherwise the operation MUST NOT be performed.
33382             </p>
33383             <p>
33384 If the deletion is performed successfully, the onsuccess is invoked.
33385             </p>
33386             <p>
33387 The ErrorCallback is launched with these error types:
33388             </p>
33389             <ul>
33390               <li>
33391 InvalidValuesError: If any of the input parameters contain an invalid value.               </li>
33392               <li>
33393 NotFoundError: The file does not correspond to a valid file.               </li>
33394               <li>
33395 IOError: The file in which the delete method is invoked
33396 is a directory (not a file), the file is in use by another process,
33397 or there is no permission in the file system.              </li>
33398               <li>
33399 UnknownError: In any other error case.              </li>
33400             </ul>
33401            </description>
33402             <version>
33403  1.0
33404             </version>
33405             <privilegelevel>
33406  public
33407             </privilegelevel>
33408             <privilege>
33409  http://tizen.org/privilege/filesystem.write
33410             </privilege>
33411             <Code> function onsuccess(files) {
33412    for(var i = 0; i &#60; files.length; i++) {
33413      if (files[i].isDirectory) {
33414        documentsDir.deleteDirectory(
33415            files[i].fullPath,
33416            false,
33417            function(){
33418              console.log(&quot;Directory Deleted&quot;);
33419            }, function(e) {
33420              console.log(&quot;Error&quot; + e.message);
33421            });
33422      } else {
33423        documentsDir.deleteFile(
33424            files[i].fullPath,
33425            function(){
33426              console.log(&quot;File Deleted&quot;);
33427            }, function(e) {
33428              console.log(&quot;Error&quot; + e.message);
33429            });
33430      }
33431    }
33432  }
33433
33434  function onerror(error) {
33435    console.log(&quot;The error &quot; + error.message + &quot; occurred when listing the files in the selected folder&quot;);
33436  }
33437
33438  var documentsDir;
33439  tizen.filesystem.resolve(
33440    'documents', 
33441    function(dir){
33442      documentsDir = dir;
33443      dir.listFiles(onsuccess,onerror);
33444    }, function(e){
33445      console.log(&quot;Error&quot; + e.message);
33446    }, &quot;rw&quot;
33447  );
33448  </Code>
33449         </descriptive>
33450         <Type type="void"/>
33451         <ArgumentList>
33452           <Argument name="filePath">
33453             <descriptive>
33454                 <description><p>
33455  The full virtual path to the file to be deleted (must be under the current directory).
33456                 </p></description>
33457             </descriptive>
33458             <Type type="DOMString"/>
33459           </Argument>
33460           <Argument optional="optional" name="onsuccess">
33461             <descriptive>
33462                 <description><p>
33463  Called if the file is successfully deleted.
33464                 </p></description>
33465             </descriptive>
33466             <Type name="SuccessCallback" nullable="nullable"/>
33467           </Argument>
33468           <Argument optional="optional" name="onerror">
33469             <descriptive>
33470                 <description><p>
33471  Called if an error occurred.
33472                 </p></description>
33473             </descriptive>
33474             <Type name="ErrorCallback" nullable="nullable"/>
33475           </Argument>
33476         </ArgumentList>
33477         <Raises>
33478           <RaiseException name="WebAPIException">
33479             <descriptive>
33480                 <description><p>
33481  with error type TypeMismatchError, if the input parameter
33482 is not compatible with the expected type for that parameter.
33483                 </p></description>
33484                 <description><p>
33485  with error type SecurityError, if the application does not have the privilege to call this method.
33486                 </p></description>
33487                 <description><p>
33488  with error type NotSupportedError, if the feature is not supported.
33489                 </p></description>
33490             </descriptive>
33491           </RaiseException>
33492         </Raises>
33493       </Operation>
33494     </Interface>
33495     <Dictionary name="FileFilter" id="::Filesystem::FileFilter">
33496       <webidl>  dictionary FileFilter {
33497     DOMString name;
33498
33499     Date startModified;
33500
33501     Date endModified;
33502
33503     Date startCreated;
33504
33505     Date endCreated;
33506   };</webidl>
33507       <descriptive>
33508           <brief>
33509  Dictionary created to filter the items returned by the listFiles method.
33510           </brief>
33511          <description>
33512           <p>
33513 When this dictionary is passed in the listFiles method, the result-set of
33514 the listFiles method MUST only contain the file items entries that match
33515 the attribute values of the filter.
33516 The result set of the listFiles method does not guarantee any sort order.
33517           </p>
33518           <p>
33519 A file item only matches the FileFilter object if all the attributes of the file item match
33520 all the attribute values of the filter which are defined (that is, only matching values other
33521 than undefined or <em>null</em>). This is similar to an SQL &quot;AND&quot; operation.
33522           </p>
33523           <p>
33524 An attribute of the file entry matches the FileFilter attribute value in accordance with the
33525 following rules:
33526           </p>
33527           <ul>
33528             <li>
33529 For FileFilter attributes of type DOMString, an entry matches this value only if its
33530 corresponding attribute is an exact match. If the filter contains U+0025 'PERCENT SIGN' it is
33531 interpreted as a wildcard character and '%' matches any string of any length, including no
33532 length. If wildcards are used, the behavior is similar to the LIKE condition in SQL. To
33533 specify that a 'PERCENT SIGN' character is to be considered literally instead of interpreting it
33534 as a wildcard, developers may escape it with the backslash character (\).
33535 The matching is not case sensitive, such as &quot;FOO&quot; matches a &quot;foo&quot; or an &quot;f%&quot; filter.
33536             </li>
33537             <li>
33538 For File entry attributes of type Date, attributes start and end are included to allow
33539 filtering of File entries between two supplied dates. If either or both of these attributes are
33540 specified, the following rules apply:
33541 A) If both start and end dates are specified (that is, other than <em>null</em>), a File entry matches the
33542 filter if it's corresponding attribute is the same as either start or end or between the two
33543 supplied dates (that is, after start and before end).
33544 B) If only the start attribute contains a value (other than <em>null</em>), a File entry matches the
33545 filter if its corresponding attribute is later than or equal to the start one.
33546 C) If only the end date contains a value (other than <em>null</em>), a file matches the filter if its
33547 corresponding attribute is earlier than or equal to the end date.
33548             </li>
33549           </ul>
33550          </description>
33551           <version>
33552  1.0
33553           </version>
33554       </descriptive>
33555       <DictionaryMember name="name" id="::Filesystem::FileFilter::name">
33556         <webidl>    DOMString name;</webidl>
33557         <descriptive>
33558             <brief>
33559  Used for filtering the File name attribute.
33560             </brief>
33561            <description>
33562             <p>
33563 Files which name corresponds with this attribute
33564 (either exactly or with the specified wildcards) match
33565 this filtering criteria.
33566             </p>
33567            </description>
33568             <version>
33569  1.0
33570             </version>
33571         </descriptive>
33572         <Type type="DOMString"/>
33573       </DictionaryMember>
33574       <DictionaryMember name="startModified" id="::Filesystem::FileFilter::startModified">
33575         <webidl>    Date startModified;</webidl>
33576         <descriptive>
33577             <brief>
33578  Used for filtering the File modified attribute.
33579             </brief>
33580            <description>
33581             <p>
33582 Files with modified date later than this attribute or equal to it match
33583 the filtering criteria.
33584             </p>
33585            </description>
33586             <version>
33587  1.0
33588             </version>
33589         </descriptive>
33590         <Type type="Date"/>
33591       </DictionaryMember>
33592       <DictionaryMember name="endModified" id="::Filesystem::FileFilter::endModified">
33593         <webidl>    Date endModified;</webidl>
33594         <descriptive>
33595             <brief>
33596  Used for filtering the File created attribute.
33597             </brief>
33598            <description>
33599             <p>
33600 Files with modified date earlier than this attribute or equal to it
33601 match the filtering criteria.
33602             </p>
33603            </description>
33604             <version>
33605  1.0
33606             </version>
33607         </descriptive>
33608         <Type type="Date"/>
33609       </DictionaryMember>
33610       <DictionaryMember name="startCreated" id="::Filesystem::FileFilter::startCreated">
33611         <webidl>    Date startCreated;</webidl>
33612         <descriptive>
33613             <brief>
33614  Used for filtering the File created attribute.
33615             </brief>
33616            <description>
33617             <p>
33618 Files with created date later than this attribute or equal to it match
33619 the filtering criteria.
33620             </p>
33621            </description>
33622             <version>
33623  1.0
33624             </version>
33625         </descriptive>
33626         <Type type="Date"/>
33627       </DictionaryMember>
33628       <DictionaryMember name="endCreated" id="::Filesystem::FileFilter::endCreated">
33629         <webidl>    Date endCreated;</webidl>
33630         <descriptive>
33631             <brief>
33632  Used for filtering the File created attribute.
33633             </brief>
33634            <description>
33635             <p>
33636 Files with created date earlier than this attribute or equal to it
33637 match the filtering criteria.
33638             </p>
33639            </description>
33640             <version>
33641  1.0
33642             </version>
33643         </descriptive>
33644         <Type type="Date"/>
33645       </DictionaryMember>
33646     </Dictionary>
33647     <Interface name="FileStream" id="::Filesystem::FileStream">
33648       <webidl>  [NoInterfaceObject] interface FileStream {
33649     readonly attribute boolean eof;
33650
33651     attribute long position setraises(<ref>WebAPIException</ref>);
33652
33653     readonly attribute long bytesAvailable;
33654
33655     void close();
33656
33657     DOMString read(long charCount) raises(<ref>WebAPIException</ref>);
33658
33659     octet[] readBytes(long byteCount) raises(<ref>WebAPIException</ref>);
33660
33661     DOMString readBase64(long byteCount) raises(<ref>WebAPIException</ref>);
33662
33663     void write(DOMString stringData) raises(<ref>WebAPIException</ref>);
33664
33665     void writeBytes(octet[] byteData) raises(<ref>WebAPIException</ref>);
33666
33667     void writeBase64(DOMString base64Data) raises(<ref>WebAPIException</ref>);
33668   };</webidl>
33669       <descriptive>
33670           <brief>
33671  FileStream API.
33672           </brief>
33673          <description>
33674           <p>
33675 A FileStream represents a handle to a File opened for read and/or
33676 write operations. Read and write operations are performed relative
33677 to a position attribute, which is a pointer that represents the current position in the file.
33678           </p>
33679           <p>
33680 A series of read/write methods are available that permit both binary and
33681 text to be processed.
33682           </p>
33683           <p>
33684 Once a file stream is closed, any operation attempted on this stream
33685 will result in a standard JavaScript error.
33686           </p>
33687           <p>
33688 The read/write operations in this interface do not throw any security
33689 exceptions as the access rights are expected to be granted through the initial
33690 resolve() method or through the openStream() method of the File interface.
33691 Therefore, all actions performed on a successfully resolved File and FileStream are
33692 expected to succeed. This avoids successive asynchronous calls and may potentially increase
33693 application for a user.
33694           </p>
33695          </description>
33696           <version>
33697  1.0
33698           </version>
33699       </descriptive>
33700       <ExtendedAttributeList>
33701         <ExtendedAttribute name="NoInterfaceObject">
33702           <webidl>NoInterfaceObject</webidl>
33703         </ExtendedAttribute>
33704       </ExtendedAttributeList>
33705       <Attribute readonly="readonly" name="eof" id="::Filesystem::FileStream::eof">
33706         <webidl>    readonly attribute boolean eof;</webidl>
33707         <descriptive>
33708             <brief>
33709  Indicates whether or not the current file pointer is at the end
33710 of the file.
33711             </brief>
33712            <description>
33713             <p>
33714 If <em>true</em>, this attribute indicates that the file pointer is at the end of the file.
33715             </p>
33716             <p>
33717 If <em>false</em>, this attribute indicates that the file pointer is not at the end of the file
33718 and may be anywhere within the file.
33719             </p>
33720            </description>
33721             <version>
33722  1.0
33723             </version>
33724             <Code> if(stream.eof) {
33725    // file has been read completely
33726  }
33727  </Code>
33728         </descriptive>
33729         <Type type="boolean"/>
33730       </Attribute>
33731       <Attribute name="position" id="::Filesystem::FileStream::position">
33732         <webidl>    attribute long position setraises(<ref>WebAPIException</ref>);</webidl>
33733         <descriptive>
33734             <brief>
33735  Gets/sets stream position for reads/writes.
33736             </brief>
33737            <description>
33738             <p>
33739 The stream position is an offset of bytes from the start of
33740 the file stream. When invoking an operation that reads or
33741 writes from the stream, the operation will take place from the
33742 byte defined by this position attribute. If the read or write
33743 operation is successful, the position of the stream is advanced
33744 by the number of bytes read or written. If the read/write operation is not
33745 successful, the position of the stream is unchanged.
33746             </p>
33747            </description>
33748             <version>
33749  1.0
33750             </version>
33751             <Code> console.log(stream.position); // displays current stream position
33752  // alters current stream position to the begin of the file,
33753  // like seek() in C
33754  stream.position = 0;
33755  </Code>
33756         </descriptive>
33757         <Type type="long"/>
33758         <SetRaises>
33759           <RaiseException name="WebAPIException"/>
33760         </SetRaises>
33761       </Attribute>
33762       <Attribute readonly="readonly" name="bytesAvailable" id="::Filesystem::FileStream::bytesAvailable">
33763         <webidl>    readonly attribute long bytesAvailable;</webidl>
33764         <descriptive>
33765             <brief>
33766  Returns the number of bytes that are available for
33767 reading from the stream.
33768             </brief>
33769            <description>
33770             <p>
33771 The number of bytes available for reading is the maximum
33772 amount of bytes that can be read in the next read operation.
33773 It corresponds to the number of bytes available after the file pointer
33774 denoted by the position attribute.
33775             </p>
33776             <p>
33777 -1 if eof is <em>true</em>.
33778             </p>
33779            </description>
33780             <version>
33781  1.0
33782             </version>
33783             <Code> console.log(stream.bytesAvailable); // displays the available bytes to be read
33784  </Code>
33785         </descriptive>
33786         <Type type="long"/>
33787       </Attribute>
33788       <Operation name="close" id="::Filesystem::FileStream::close">
33789         <webidl>    void close();</webidl>
33790         <descriptive>
33791             <brief>
33792  Closes this FileStream.
33793             </brief>
33794            <description>
33795             <p>
33796 Flushes any pending buffered writes and closes the File. Always succeeds.
33797 Note that pending writes might not succeed.
33798             </p>
33799            </description>
33800             <version>
33801  1.0
33802             </version>
33803             <privilegelevel>
33804  public
33805             </privilegelevel>
33806             <privilege>
33807  http://tizen.org/privilege/filesystem.read
33808             </privilege>
33809             <Code> stream.close(); // closes this stream, no subsequent access to stream allowed
33810  </Code>
33811         </descriptive>
33812         <Type type="void"/>
33813         <ArgumentList/>
33814       </Operation>
33815       <Operation name="read" id="::Filesystem::FileStream::read">
33816         <webidl>    DOMString read(long charCount) raises(<ref>WebAPIException</ref>);</webidl>
33817         <descriptive>
33818             <brief>
33819  Reads the specified number of characters from this FileStream.
33820             </brief>
33821            <description>
33822             <p>
33823 Reads the specified number of characters after the position file pointer and returns them as a string.
33824 The resulting string length might be shorter than charCount if eof
33825 is <em>true</em>.
33826             </p>
33827            </description>
33828             <version>
33829  1.0
33830             </version>
33831             <privilegelevel>
33832  public
33833             </privilegelevel>
33834             <privilege>
33835  http://tizen.org/privilege/filesystem.read
33836             </privilege>
33837             <Code> var text = stream.read(file.fileSize);
33838  stream.close();
33839  </Code>
33840         </descriptive>
33841         <Type type="DOMString">
33842           <descriptive>
33843               <description><p>
33844  DOMString The result of read characters as a string.
33845               </p></description>
33846           </descriptive>
33847         </Type>
33848         <ArgumentList>
33849           <Argument name="charCount">
33850             <descriptive>
33851                 <description><p>
33852  Number of characters being read.
33853                 </p></description>
33854             </descriptive>
33855             <Type type="long"/>
33856           </Argument>
33857         </ArgumentList>
33858         <Raises>
33859           <RaiseException name="WebAPIException">
33860             <descriptive>
33861                 <description><p>
33862  with error type IOError, if a read error occurs, such as the bytes in the stream
33863 cannot be decoded with the encoding in use.
33864                 </p></description>
33865                 <description><p>
33866  with error type TypeMismatchError, if the input parameter
33867 is not compatible with the expected type for that parameter.
33868                 </p></description>
33869                 <description><p>
33870  with error type InvalidValuesError, if any of the input 
33871 parameters contain an invalid value.
33872                 </p></description>
33873                 <description><p>
33874  with error type SecurityError, if the application does not have the privilege to call this method.
33875                 </p></description>
33876                 <description><p>
33877  with error type NotSupportedError, if the feature is not supported.
33878                 </p></description>
33879             </descriptive>
33880           </RaiseException>
33881         </Raises>
33882       </Operation>
33883       <Operation name="readBytes" id="::Filesystem::FileStream::readBytes">
33884         <webidl>    octet[] readBytes(long byteCount) raises(<ref>WebAPIException</ref>);</webidl>
33885         <descriptive>
33886             <brief>
33887  Reads the specified number of bytes from this FileStream.
33888             </brief>
33889             <version>
33890  1.0
33891             </version>
33892             <privilegelevel>
33893  public
33894             </privilegelevel>
33895             <privilege>
33896  http://tizen.org/privilege/filesystem.read
33897             </privilege>
33898             <Code> // reads up to 256 bytes from the stream
33899  var raw = stream.readBytes(256);
33900  for(var i = 0; i &#60; raw.length; i++) {
33901    // raw[i] contains the i-th byte of the current data chunk
33902  }
33903  </Code>
33904         </descriptive>
33905         <Type type="array">
33906           <descriptive>
33907               <description><p>
33908  octet[] The result of read bytes as a byte (or number) array.
33909               </p></description>
33910           </descriptive>
33911           <Type type="octet"/>
33912         </Type>
33913         <ArgumentList>
33914           <Argument name="byteCount">
33915             <descriptive>
33916                 <description><p>
33917  Number of bytes being read.
33918                 </p></description>
33919             </descriptive>
33920             <Type type="long"/>
33921           </Argument>
33922         </ArgumentList>
33923         <Raises>
33924           <RaiseException name="WebAPIException">
33925             <descriptive>
33926                 <description><p>
33927  with error type IOError, if a read error occurs.
33928                 </p></description>
33929                 <description><p>
33930  with error type TypeMismatchError, if the input parameter
33931 is not compatible with the expected type for that parameter.
33932                 </p></description>
33933                 <description><p>
33934  with error type InvalidValuesError, if any of the input 
33935 parameters contain an invalid value.
33936                 </p></description>
33937                 <description><p>
33938  with error type SecurityError, if the application does not have the privilege to call this method.
33939                 </p></description>
33940                 <description><p>
33941  with error type NotSupportedError, if the feature is not supported.
33942                 </p></description>
33943             </descriptive>
33944           </RaiseException>
33945         </Raises>
33946       </Operation>
33947       <Operation name="readBase64" id="::Filesystem::FileStream::readBase64">
33948         <webidl>    DOMString readBase64(long byteCount) raises(<ref>WebAPIException</ref>);</webidl>
33949         <descriptive>
33950             <brief>
33951  Reads the specified number of bytes from this FileStream, encoding
33952 the result in base64.
33953             </brief>
33954             <version>
33955  1.0
33956             </version>
33957             <privilegelevel>
33958  public
33959             </privilegelevel>
33960             <privilege>
33961  http://tizen.org/privilege/filesystem.read
33962             </privilege>
33963             <Code> // reads up to 256 bytes from the stream
33964  var base64 = stream.readBase64(256);
33965  </Code>
33966         </descriptive>
33967         <Type type="DOMString">
33968           <descriptive>
33969               <description><p>
33970  DOMString The result of read bytes as base64 encoding string.
33971               </p></description>
33972           </descriptive>
33973         </Type>
33974         <ArgumentList>
33975           <Argument name="byteCount">
33976             <descriptive>
33977                 <description><p>
33978  Number of bytes being read.
33979                 </p></description>
33980             </descriptive>
33981             <Type type="long"/>
33982           </Argument>
33983         </ArgumentList>
33984         <Raises>
33985           <RaiseException name="WebAPIException">
33986             <descriptive>
33987                 <description><p>
33988  with error type IOError, if a read error occurs.
33989                 </p></description>
33990                 <description><p>
33991  with error type TypeMismatchError, if the input parameter
33992 is not compatible with the expected type for that parameter.
33993                 </p></description>
33994                 <description><p>
33995  with error type InvalidValuesError, if any of the input 
33996 parameters contain an invalid value.
33997                 </p></description>
33998                 <description><p>
33999  with error type SecurityError, if the application does not have the privilege to call this method.
34000                 </p></description>
34001                 <description><p>
34002  with error type NotSupportedError, if the feature is not supported.
34003                 </p></description>
34004             </descriptive>
34005           </RaiseException>
34006         </Raises>
34007       </Operation>
34008       <Operation name="write" id="::Filesystem::FileStream::write">
34009         <webidl>    void write(DOMString stringData) raises(<ref>WebAPIException</ref>);</webidl>
34010         <descriptive>
34011             <brief>
34012  Writes the specified DOMString to this FileStream.
34013             </brief>
34014             <version>
34015  1.0
34016             </version>
34017             <privilegelevel>
34018  public
34019             </privilegelevel>
34020             <privilege>
34021  http://tizen.org/privilege/filesystem.write
34022             </privilege>
34023             <Code> var text = &quot;Hello world&quot;;
34024  stream.write(text);
34025  </Code>
34026         </descriptive>
34027         <Type type="void"/>
34028         <ArgumentList>
34029           <Argument name="stringData">
34030             <descriptive>
34031                 <description><p>
34032  The actual string to be written.
34033                 </p></description>
34034             </descriptive>
34035             <Type type="DOMString"/>
34036           </Argument>
34037         </ArgumentList>
34038         <Raises>
34039           <RaiseException name="WebAPIException">
34040             <descriptive>
34041                 <description><p>
34042  with error type IOError, if a write error occurs.
34043                 </p></description>
34044                 <description><p>
34045  with error type TypeMismatchError, if the input parameter
34046 is not compatible with the expected type for that parameter.
34047                 </p></description>
34048                 <description><p>
34049  with error type SecurityError, if the application does not have the privilege to call this method.
34050                 </p></description>
34051                 <description><p>
34052  with error type NotSupportedError, if the feature is not supported.
34053                 </p></description>
34054             </descriptive>
34055           </RaiseException>
34056         </Raises>
34057       </Operation>
34058       <Operation name="writeBytes" id="::Filesystem::FileStream::writeBytes">
34059         <webidl>    void writeBytes(octet[] byteData) raises(<ref>WebAPIException</ref>);</webidl>
34060         <descriptive>
34061             <brief>
34062  Writes the specified bytes to this FileStream.
34063             </brief>
34064             <version>
34065  1.0
34066             </version>
34067             <privilegelevel>
34068  public
34069             </privilegelevel>
34070             <privilege>
34071  http://tizen.org/privilege/filesystem.write
34072             </privilege>
34073             <Code> var bytes = in.readBytes(256);
34074  out.writeBytes(bytes); // writes the bytes read from in to out
34075  </Code>
34076         </descriptive>
34077         <Type type="void"/>
34078         <ArgumentList>
34079           <Argument name="byteData">
34080             <descriptive>
34081                 <description><p>
34082  The byte data array being written.
34083                 </p></description>
34084             </descriptive>
34085             <Type type="array">
34086               <Type type="octet"/>
34087             </Type>
34088           </Argument>
34089         </ArgumentList>
34090         <Raises>
34091           <RaiseException name="WebAPIException">
34092             <descriptive>
34093                 <description><p>
34094  with error type IOError, if a write error occurs.
34095                 </p></description>
34096                 <description><p>
34097  with error type TypeMismatchError, if the input parameter
34098 is not compatible with the expected type for that parameter.
34099                 </p></description>
34100                 <description><p>
34101  with error type SecurityError, if the application does not have the privilege to call this method.
34102                 </p></description>
34103                 <description><p>
34104  with error type NotSupportedError, if the feature is not supported.
34105                 </p></description>
34106             </descriptive>
34107           </RaiseException>
34108         </Raises>
34109       </Operation>
34110       <Operation name="writeBase64" id="::Filesystem::FileStream::writeBase64">
34111         <webidl>    void writeBase64(DOMString base64Data) raises(<ref>WebAPIException</ref>);</webidl>
34112         <descriptive>
34113             <brief>
34114  Converts the specified base64 DOMString to bytes and writes the
34115 result to this FileStream.
34116             </brief>
34117             <version>
34118  1.0
34119             </version>
34120             <privilegelevel>
34121  public
34122             </privilegelevel>
34123             <privilege>
34124  http://tizen.org/privilege/filesystem.write
34125             </privilege>
34126             <Code> var base64 = in.readBase64(256);
34127  out.writeBase64(base64); // writes the base64 data read from in to out
34128  </Code>
34129         </descriptive>
34130         <Type type="void"/>
34131         <ArgumentList>
34132           <Argument name="base64Data">
34133             <descriptive>
34134                 <description><p>
34135  The base64 data being written.
34136                 </p></description>
34137             </descriptive>
34138             <Type type="DOMString"/>
34139           </Argument>
34140         </ArgumentList>
34141         <Raises>
34142           <RaiseException name="WebAPIException">
34143             <descriptive>
34144                 <description><p>
34145  with error type IOError, if an error occurs during writeBase64.
34146                 </p></description>
34147                 <description><p>
34148  with error type TypeMismatchError, if the input parameter
34149 is not compatible with the expected type for that parameter.
34150                 </p></description>
34151                 <description><p>
34152  with error type SecurityError, if the application does not have the privilege to call this method.
34153                 </p></description>
34154                 <description><p>
34155  with error type NotSupportedError, if the feature is not supported.
34156                 </p></description>
34157             </descriptive>
34158           </RaiseException>
34159         </Raises>
34160       </Operation>
34161     </Interface>
34162     <Interface name="FileSuccessCallback" id="::Filesystem::FileSuccessCallback">
34163       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface FileSuccessCallback {
34164     void onsuccess(<ref>File</ref> file);
34165   };</webidl>
34166       <descriptive>
34167           <brief>
34168  The file system specific success callback.
34169           </brief>
34170          <description>
34171           <p>
34172 This callback interface specifies a success callback with 
34173 a File object as input argument. It is used in asynchronous
34174 operations, such as FileSystemManager.resolve() and
34175 copying, moving, and deleting files.
34176           </p>
34177          </description>
34178           <version>
34179  1.0
34180           </version>
34181       </descriptive>
34182       <ExtendedAttributeList>
34183         <ExtendedAttribute name="Callback" value="FunctionOnly">
34184           <webidl>Callback</webidl>
34185         </ExtendedAttribute>
34186         <ExtendedAttribute name="NoInterfaceObject">
34187           <webidl> NoInterfaceObject</webidl>
34188         </ExtendedAttribute>
34189       </ExtendedAttributeList>
34190       <Operation name="onsuccess" id="::Filesystem::FileSuccessCallback::onsuccess">
34191         <webidl>    void onsuccess(<ref>File</ref> file);</webidl>
34192         <descriptive>
34193             <brief>
34194  The method invoked when the asynchronous call completes successfully.
34195             </brief>
34196             <version>
34197  1.0
34198             </version>
34199         </descriptive>
34200         <Type type="void"/>
34201         <ArgumentList>
34202           <Argument name="file">
34203             <descriptive>
34204                 <description><p>
34205  The file resulting from the asynchronous call.
34206                 </p></description>
34207             </descriptive>
34208             <Type name="File"/>
34209           </Argument>
34210         </ArgumentList>
34211       </Operation>
34212     </Interface>
34213     <Interface name="FileSystemStorageArraySuccessCallback" id="::Filesystem::FileSystemStorageArraySuccessCallback">
34214       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface FileSystemStorageArraySuccessCallback {
34215     void onsuccess(<ref>FileSystemStorage</ref>[] storages);
34216   };</webidl>
34217       <descriptive>
34218           <brief>
34219  The success callback to retrieve FileSystemStorage objects.
34220           </brief>
34221          <description>
34222           <p>
34223 This callback interface specifies a success callback with 
34224 an array of FileSystemStorage objects as input argument. It is used in asynchronous
34225 operations, such as FileSystemManager.listStorages().
34226           </p>
34227          </description>
34228           <version>
34229  1.0
34230           </version>
34231       </descriptive>
34232       <ExtendedAttributeList>
34233         <ExtendedAttribute name="Callback" value="FunctionOnly">
34234           <webidl>Callback</webidl>
34235         </ExtendedAttribute>
34236         <ExtendedAttribute name="NoInterfaceObject">
34237           <webidl> NoInterfaceObject</webidl>
34238         </ExtendedAttribute>
34239       </ExtendedAttributeList>
34240       <Operation name="onsuccess" id="::Filesystem::FileSystemStorageArraySuccessCallback::onsuccess">
34241         <webidl>    void onsuccess(<ref>FileSystemStorage</ref>[] storages);</webidl>
34242         <descriptive>
34243             <brief>
34244  The method invoked when the asynchronous call completes successfully.
34245             </brief>
34246             <version>
34247  1.0
34248             </version>
34249         </descriptive>
34250         <Type type="void"/>
34251         <ArgumentList>
34252           <Argument name="storages">
34253             <descriptive>
34254                 <description><p>
34255  List of available storage devices.
34256                 </p></description>
34257             </descriptive>
34258             <Type type="array">
34259               <Type name="FileSystemStorage"/>
34260             </Type>
34261           </Argument>
34262         </ArgumentList>
34263       </Operation>
34264     </Interface>
34265     <Interface name="FileSystemStorageSuccessCallback" id="::Filesystem::FileSystemStorageSuccessCallback">
34266       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface FileSystemStorageSuccessCallback {
34267     void onsuccess(<ref>FileSystemStorage</ref> storage);
34268   };</webidl>
34269       <descriptive>
34270           <brief>
34271  The success callback to retrieve a FileSystemStorage object.
34272           </brief>
34273          <description>
34274           <p>
34275 This callback interface specifies a success callback with 
34276 a FileSystmeStorage object as input argument. It is used in asynchronous
34277 operations, such as FileSystemManager.getStorage() and
34278 FileSystemManager.addStorageStateChangeListener().
34279           </p>
34280          </description>
34281           <version>
34282  1.0
34283           </version>
34284       </descriptive>
34285       <ExtendedAttributeList>
34286         <ExtendedAttribute name="Callback" value="FunctionOnly">
34287           <webidl>Callback</webidl>
34288         </ExtendedAttribute>
34289         <ExtendedAttribute name="NoInterfaceObject">
34290           <webidl> NoInterfaceObject</webidl>
34291         </ExtendedAttribute>
34292       </ExtendedAttributeList>
34293       <Operation name="onsuccess" id="::Filesystem::FileSystemStorageSuccessCallback::onsuccess">
34294         <webidl>    void onsuccess(<ref>FileSystemStorage</ref> storage);</webidl>
34295         <descriptive>
34296             <brief>
34297  The method invoked when the asynchronous call completes successfully.
34298             </brief>
34299             <version>
34300  1.0
34301             </version>
34302         </descriptive>
34303         <Type type="void"/>
34304         <ArgumentList>
34305           <Argument name="storage">
34306             <descriptive>
34307                 <description><p>
34308  The storage device structure.
34309                 </p></description>
34310             </descriptive>
34311             <Type name="FileSystemStorage"/>
34312           </Argument>
34313         </ArgumentList>
34314       </Operation>
34315     </Interface>
34316     <Interface name="FileStringSuccessCallback" id="::Filesystem::FileStringSuccessCallback">
34317       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface FileStringSuccessCallback {
34318     void onsuccess(DOMString fileStr);
34319   };</webidl>
34320       <descriptive>
34321           <brief>
34322  The success callback to read the content of a file as a DOMString.
34323           </brief>
34324          <description>
34325           <p>
34326 This callback interface specifies a success callback with 
34327 a DOMString object as input argument. It is used in asynchronous
34328 operations, such as File.readAsText().
34329           </p>
34330          </description>
34331           <version>
34332  1.0
34333           </version>
34334       </descriptive>
34335       <ExtendedAttributeList>
34336         <ExtendedAttribute name="Callback" value="FunctionOnly">
34337           <webidl>Callback</webidl>
34338         </ExtendedAttribute>
34339         <ExtendedAttribute name="NoInterfaceObject">
34340           <webidl> NoInterfaceObject</webidl>
34341         </ExtendedAttribute>
34342       </ExtendedAttributeList>
34343       <Operation name="onsuccess" id="::Filesystem::FileStringSuccessCallback::onsuccess">
34344         <webidl>    void onsuccess(DOMString fileStr);</webidl>
34345         <descriptive>
34346             <brief>
34347  The method invoked when the asynchronous call completes successfully.
34348             </brief>
34349             <version>
34350  1.0
34351             </version>
34352         </descriptive>
34353         <Type type="void"/>
34354         <ArgumentList>
34355           <Argument name="fileStr">
34356             <descriptive>
34357                 <description><p>
34358  The file represented as a DOMString resulting from the asynchronous call.
34359                 </p></description>
34360             </descriptive>
34361             <Type type="DOMString"/>
34362           </Argument>
34363         </ArgumentList>
34364       </Operation>
34365     </Interface>
34366     <Interface name="FileStreamSuccessCallback" id="::Filesystem::FileStreamSuccessCallback">
34367       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface FileStreamSuccessCallback {
34368     void onsuccess(<ref>FileStream</ref> filestream);
34369   };</webidl>
34370       <descriptive>
34371           <brief>
34372  The success callback to open a file for raw access.
34373           </brief>
34374          <description>
34375           <p>
34376 This callback interface specifies a success callback with 
34377 a FileStream object as input argument. It is used by asynchronous
34378 methods, such as File.openStream().
34379           </p>
34380          </description>
34381           <version>
34382  1.0
34383           </version>
34384       </descriptive>
34385       <ExtendedAttributeList>
34386         <ExtendedAttribute name="Callback" value="FunctionOnly">
34387           <webidl>Callback</webidl>
34388         </ExtendedAttribute>
34389         <ExtendedAttribute name="NoInterfaceObject">
34390           <webidl> NoInterfaceObject</webidl>
34391         </ExtendedAttribute>
34392       </ExtendedAttributeList>
34393       <Operation name="onsuccess" id="::Filesystem::FileStreamSuccessCallback::onsuccess">
34394         <webidl>    void onsuccess(<ref>FileStream</ref> filestream);</webidl>
34395         <descriptive>
34396             <brief>
34397  The method invoked when the File.openStream asynchronous call completes successfully.
34398             </brief>
34399             <version>
34400  1.0
34401             </version>
34402         </descriptive>
34403         <Type type="void"/>
34404         <ArgumentList>
34405           <Argument name="filestream">
34406             <descriptive>
34407                 <description><p>
34408  The filestream to access file content.
34409                 </p></description>
34410             </descriptive>
34411             <Type name="FileStream"/>
34412           </Argument>
34413         </ArgumentList>
34414       </Operation>
34415     </Interface>
34416     <Interface name="FileArraySuccessCallback" id="::Filesystem::FileArraySuccessCallback">
34417       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface FileArraySuccessCallback {
34418     void onsuccess(<ref>File</ref>[] files);
34419   };</webidl>
34420       <descriptive>
34421           <brief>
34422  The file system specific success callback for listing methods.
34423           </brief>
34424          <description>
34425           <p>
34426 This callback interface specifies a success callback with a function
34427 taking an array of File objects as input argument. It is used in asynchronous
34428 methods, such as File.listFiles().
34429           </p>
34430          </description>
34431           <version>
34432  1.0
34433           </version>
34434       </descriptive>
34435       <ExtendedAttributeList>
34436         <ExtendedAttribute name="Callback" value="FunctionOnly">
34437           <webidl>Callback</webidl>
34438         </ExtendedAttribute>
34439         <ExtendedAttribute name="NoInterfaceObject">
34440           <webidl> NoInterfaceObject</webidl>
34441         </ExtendedAttribute>
34442       </ExtendedAttributeList>
34443       <Operation name="onsuccess" id="::Filesystem::FileArraySuccessCallback::onsuccess">
34444         <webidl>    void onsuccess(<ref>File</ref>[] files);</webidl>
34445         <descriptive>
34446             <brief>
34447  The method invoked when the asynchronous call completes successfully.
34448             </brief>
34449             <version>
34450  1.0
34451             </version>
34452         </descriptive>
34453         <Type type="void"/>
34454         <ArgumentList>
34455           <Argument name="files">
34456             <descriptive>
34457                 <description><p>
34458  The files resulting from the asynchronous call.
34459                 </p></description>
34460             </descriptive>
34461             <Type type="array">
34462               <Type name="File"/>
34463             </Type>
34464           </Argument>
34465         </ArgumentList>
34466       </Operation>
34467     </Interface>
34468   </Module>
34469   <Module name="MessagePort" id="::MessagePort">
34470     <webidl>module MessagePort {
34471
34472   [NoInterfaceObject] interface MessagePortManagerObject {
34473     readonly attribute <ref>MessagePortManager</ref> messageport;
34474   };
34475   <ref>Tizen</ref> implements <ref>MessagePortManagerObject</ref>;
34476
34477   [NoInterfaceObject] interface MessagePortManager {
34478
34479     <ref>LocalMessagePort</ref> requestLocalMessagePort(DOMString localMessagePortName) raises(<ref>WebAPIException</ref>);
34480
34481     <ref>LocalMessagePort</ref> requestTrustedLocalMessagePort(DOMString localMessagePortName) raises(<ref>WebAPIException</ref>);
34482
34483     <ref>RemoteMessagePort</ref> requestRemoteMessagePort(<ref>ApplicationId</ref> appId, DOMString remoteMessagePortName) raises(<ref>WebAPIException</ref>);
34484
34485     <ref>RemoteMessagePort</ref> requestTrustedRemoteMessagePort(<ref>ApplicationId</ref> appId, DOMString remoteMessagePortName) raises(<ref>WebAPIException</ref>);
34486   };
34487
34488   [NoInterfaceObject] interface LocalMessagePort {
34489
34490     readonly attribute DOMString messagePortName;
34491
34492     readonly attribute boolean isTrusted;
34493
34494     long addMessagePortListener(<ref>MessagePortCallback</ref> listener) raises(<ref>WebAPIException</ref>);
34495
34496     void removeMessagePortListener(long watchId) raises(<ref>WebAPIException</ref>);
34497   };
34498
34499   [NoInterfaceObject] interface RemoteMessagePort {
34500
34501     readonly attribute DOMString messagePortName;
34502
34503     readonly attribute <ref>ApplicationId</ref> appId;
34504
34505     readonly attribute boolean isTrusted;
34506
34507     void sendMessage(<ref>MessagePortDataItem</ref>[] data, optional <ref>LocalMessagePort</ref>? localMessagePort) raises(<ref>WebAPIException</ref>);
34508   };
34509
34510   dictionary MessagePortDataItem {
34511     DOMString key;
34512     DOMString value;
34513   };
34514
34515   [Callback=FunctionOnly, NoInterfaceObject] interface MessagePortCallback {
34516     void onreceived(<ref>MessagePortDataItem</ref>[] data, <ref>RemoteMessagePort</ref>? remoteMessagePort);
34517   };
34518 };</webidl>
34519     <descriptive>
34520         <brief>
34521  This API provides the functionality for communicating with other applications.
34522         </brief>
34523         <version>
34524  2.1
34525         </version>
34526     </descriptive>
34527     <Interface name="MessagePortManagerObject" id="::MessagePort::MessagePortManagerObject">
34528       <webidl>  [NoInterfaceObject] interface MessagePortManagerObject {
34529     readonly attribute <ref>MessagePortManager</ref> messageport;
34530   };</webidl>
34531       <descriptive>
34532           <brief>
34533  The <em>MessagePortManagerObject</em> interface defines what is instantiated by the Tizen object from the Tizen Platform.
34534           </brief>
34535          <description>
34536           <p>
34537 There is a <em>tizen.messageport</em> object that allows access to the functionality of the Message Port API.
34538           </p>
34539          </description>
34540           <version>
34541  2.1
34542           </version>
34543       </descriptive>
34544       <ExtendedAttributeList>
34545         <ExtendedAttribute name="NoInterfaceObject">
34546           <webidl>NoInterfaceObject</webidl>
34547         </ExtendedAttribute>
34548       </ExtendedAttributeList>
34549       <Attribute readonly="readonly" name="messageport" id="::MessagePort::MessagePortManagerObject::messageport">
34550         <webidl>    readonly attribute <ref>MessagePortManager</ref> messageport;</webidl>
34551         <Type name="MessagePortManager"/>
34552       </Attribute>
34553     </Interface>
34554     <Implements name1="Tizen" name2="MessagePortManagerObject">
34555       <webidl>  <ref>Tizen</ref> implements <ref>MessagePortManagerObject</ref>;</webidl>
34556     </Implements>
34557     <Interface name="MessagePortManager" id="::MessagePort::MessagePortManager">
34558       <webidl>  [NoInterfaceObject] interface MessagePortManager {
34559
34560     <ref>LocalMessagePort</ref> requestLocalMessagePort(DOMString localMessagePortName) raises(<ref>WebAPIException</ref>);
34561
34562     <ref>LocalMessagePort</ref> requestTrustedLocalMessagePort(DOMString localMessagePortName) raises(<ref>WebAPIException</ref>);
34563
34564     <ref>RemoteMessagePort</ref> requestRemoteMessagePort(<ref>ApplicationId</ref> appId, DOMString remoteMessagePortName) raises(<ref>WebAPIException</ref>);
34565
34566     <ref>RemoteMessagePort</ref> requestTrustedRemoteMessagePort(<ref>ApplicationId</ref> appId, DOMString remoteMessagePortName) raises(<ref>WebAPIException</ref>);
34567   };</webidl>
34568       <descriptive>
34569           <brief>
34570  The <em>MessagePortManager</em> interface provides methods to request message port to communicate.
34571           </brief>
34572           <version>
34573  2.1
34574           </version>
34575       </descriptive>
34576       <ExtendedAttributeList>
34577         <ExtendedAttribute name="NoInterfaceObject">
34578           <webidl>NoInterfaceObject</webidl>
34579         </ExtendedAttribute>
34580       </ExtendedAttributeList>
34581       <Operation name="requestLocalMessagePort" id="::MessagePort::MessagePortManager::requestLocalMessagePort">
34582         <webidl>    <ref>LocalMessagePort</ref> requestLocalMessagePort(DOMString localMessagePortName) raises(<ref>WebAPIException</ref>);</webidl>
34583         <descriptive>
34584             <brief>
34585  Requests a LocalMessage Port instance to start receiving message from another application.
34586             </brief>
34587             <version>
34588  2.1
34589             </version>
34590             <Code> // Requests the LocalMessagePort instance with the specified message port name
34591  var localMsgPort = tizen.messageport.requestLocalMessagePort('MessagePortA');
34592  </Code>
34593         </descriptive>
34594         <Type name="LocalMessagePort">
34595           <descriptive>
34596               <description><p>
34597  LocalMessagePort The LocalMessagePort instance.
34598               </p></description>
34599           </descriptive>
34600         </Type>
34601         <ArgumentList>
34602           <Argument name="localMessagePortName">
34603             <descriptive>
34604                 <description><p>
34605  The name of the local message port to retrieve.<br/>The LocalMessagePort instances are identical for the same message port name.
34606                 </p></description>
34607             </descriptive>
34608             <Type type="DOMString"/>
34609           </Argument>
34610         </ArgumentList>
34611         <Raises>
34612           <RaiseException name="WebAPIException">
34613             <descriptive>
34614                 <description><p>
34615  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
34616                 </p></description>
34617                 <description><p>
34618  with error type InvalidValuesError, if the input parameter contains an invalid value.
34619                 </p></description>
34620                 <description><p>
34621  with error type UnknownError, if any other error occurs.
34622                 </p></description>
34623             </descriptive>
34624           </RaiseException>
34625         </Raises>
34626       </Operation>
34627       <Operation name="requestTrustedLocalMessagePort" id="::MessagePort::MessagePortManager::requestTrustedLocalMessagePort">
34628         <webidl>    <ref>LocalMessagePort</ref> requestTrustedLocalMessagePort(DOMString localMessagePortName) raises(<ref>WebAPIException</ref>);</webidl>
34629         <descriptive>
34630             <brief>
34631  Requests a trusted LocalMessagePort instance to receive message from another application.
34632             </brief>
34633            <description>
34634             <p>
34635 Trusted local message port can communicate with applications that are signed with same certificate.
34636             </p>
34637            </description>
34638             <version>
34639  2.1
34640             </version>
34641             <Code> // Requests the LocalMessagePort instance with the specified message port name
34642  var localMsgPort = tizen.messageport.requestTrustedLocalMessagePort('MessagePortB');
34643  </Code>
34644         </descriptive>
34645         <Type name="LocalMessagePort">
34646           <descriptive>
34647               <description><p>
34648  LocalMessagePort The trusted LocalMessagePort instance.
34649               </p></description>
34650           </descriptive>
34651         </Type>
34652         <ArgumentList>
34653           <Argument name="localMessagePortName">
34654             <descriptive>
34655                 <description><p>
34656  The name of local message port.<br/>The LocalMessagePort instances are identical for the same message port name.
34657                 </p></description>
34658             </descriptive>
34659             <Type type="DOMString"/>
34660           </Argument>
34661         </ArgumentList>
34662         <Raises>
34663           <RaiseException name="WebAPIException">
34664             <descriptive>
34665                 <description><p>
34666  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
34667                 </p></description>
34668                 <description><p>
34669  with error type InvalidValuesError, if the input parameter contains an invalid value.
34670                 </p></description>
34671                 <description><p>
34672  with error type UnknownError, if any other error occurs.
34673                 </p></description>
34674             </descriptive>
34675           </RaiseException>
34676         </Raises>
34677       </Operation>
34678       <Operation name="requestRemoteMessagePort" id="::MessagePort::MessagePortManager::requestRemoteMessagePort">
34679         <webidl>    <ref>RemoteMessagePort</ref> requestRemoteMessagePort(<ref>ApplicationId</ref> appId, DOMString remoteMessagePortName) raises(<ref>WebAPIException</ref>);</webidl>
34680         <descriptive>
34681             <brief>
34682  Requests a RemoteMessagePort instance to send message to another application.
34683             </brief>
34684            <description>
34685             <p>
34686 If the message port name and application ID is the same, the platform returns the same RemoteMessagePort instance.
34687             </p>
34688            </description>
34689             <version>
34690  2.1
34691             </version>
34692             <Code> // Requests the RemoteMessagePort instance with the specified message port name
34693  var remoteMsgPort = tizen.messageport.requestRemoteMessagePort('6xaeuflskd.App1', 'MessagePortA');
34694  </Code>
34695         </descriptive>
34696         <Type name="RemoteMessagePort">
34697           <descriptive>
34698               <description><p>
34699  RemoteMessagePort The RemoteMessagePort instance.
34700               </p></description>
34701           </descriptive>
34702         </Type>
34703         <ArgumentList>
34704           <Argument name="appId">
34705             <descriptive>
34706                 <description><p>
34707  The ID of the application to send messages.
34708                 </p></description>
34709             </descriptive>
34710             <Type name="ApplicationId"/>
34711           </Argument>
34712           <Argument name="remoteMessagePortName">
34713             <descriptive>
34714                 <description><p>
34715  The name of remote message port.
34716                 </p></description>
34717             </descriptive>
34718             <Type type="DOMString"/>
34719           </Argument>
34720         </ArgumentList>
34721         <Raises>
34722           <RaiseException name="WebAPIException">
34723             <descriptive>
34724                 <description><p>
34725  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
34726                 </p></description>
34727                 <description><p>
34728  with error type InvalidValuesError, if an input parameter contains an invalid value.
34729                 </p></description>
34730                 <description><p>
34731  with error type NotFoundError, if the port of the target application is not found.
34732                 </p></description>
34733                 <description><p>
34734  with error type UnknownError, if any other error occurs.
34735                 </p></description>
34736             </descriptive>
34737           </RaiseException>
34738         </Raises>
34739       </Operation>
34740       <Operation name="requestTrustedRemoteMessagePort" id="::MessagePort::MessagePortManager::requestTrustedRemoteMessagePort">
34741         <webidl>    <ref>RemoteMessagePort</ref> requestTrustedRemoteMessagePort(<ref>ApplicationId</ref> appId, DOMString remoteMessagePortName) raises(<ref>WebAPIException</ref>);</webidl>
34742         <descriptive>
34743             <brief>
34744  Requests a trusted RemoteMessagePort instance to receive message from another application.
34745             </brief>
34746            <description>
34747             <p>
34748 If the message port name and application ID is the same, the platform returns the same RemoteMessagePort instance.
34749 Trusted remote message port can communicate with applications that are signed with same certificate.
34750             </p>
34751            </description>
34752             <version>
34753  2.1
34754             </version>
34755             <Code> // Requests the RemoteMessagePort instance with the specified message port name.
34756  var remoteMsgPort = tizen.messageport.requestTrustedRemoteMessagePort('6xauflskd.App1', 'MessagePortB');
34757  </Code>
34758         </descriptive>
34759         <Type name="RemoteMessagePort">
34760           <descriptive>
34761               <description><p>
34762  RemoteMessagePort The trusted RemoteMessagePort instance.
34763               </p></description>
34764           </descriptive>
34765         </Type>
34766         <ArgumentList>
34767           <Argument name="appId">
34768             <descriptive>
34769                 <description><p>
34770  The ID of the application to send messages.
34771                 </p></description>
34772             </descriptive>
34773             <Type name="ApplicationId"/>
34774           </Argument>
34775           <Argument name="remoteMessagePortName">
34776             <descriptive>
34777                 <description><p>
34778  The name of remote message port.
34779                 </p></description>
34780             </descriptive>
34781             <Type type="DOMString"/>
34782           </Argument>
34783         </ArgumentList>
34784         <Raises>
34785           <RaiseException name="WebAPIException">
34786             <descriptive>
34787                 <description><p>
34788  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
34789                 </p></description>
34790                 <description><p>
34791  with error type InvalidValuesError, if an input parameter contains an invalid value.
34792                 </p></description>
34793                 <description><p>
34794  with error type NotFoundError, if the port of the target application is not found.
34795                 </p></description>
34796                 <description><p>
34797  with error type InvalidAccessError, if the target application is not signed with the same certification.
34798                 </p></description>
34799                 <description><p>
34800  with error type UnknownError, if any other error occurs
34801                 </p></description>
34802             </descriptive>
34803           </RaiseException>
34804         </Raises>
34805       </Operation>
34806     </Interface>
34807     <Interface name="LocalMessagePort" id="::MessagePort::LocalMessagePort">
34808       <webidl>  [NoInterfaceObject] interface LocalMessagePort {
34809
34810     readonly attribute DOMString messagePortName;
34811
34812     readonly attribute boolean isTrusted;
34813
34814     long addMessagePortListener(<ref>MessagePortCallback</ref> listener) raises(<ref>WebAPIException</ref>);
34815
34816     void removeMessagePortListener(long watchId) raises(<ref>WebAPIException</ref>);
34817   };</webidl>
34818       <descriptive>
34819           <brief>
34820  The <em>LocalMessagePort</em> interface provides methods to receive data.
34821           </brief>
34822           <version>
34823  2.1
34824           </version>
34825       </descriptive>
34826       <ExtendedAttributeList>
34827         <ExtendedAttribute name="NoInterfaceObject">
34828           <webidl>NoInterfaceObject</webidl>
34829         </ExtendedAttribute>
34830       </ExtendedAttributeList>
34831       <Attribute readonly="readonly" name="messagePortName" id="::MessagePort::LocalMessagePort::messagePortName">
34832         <webidl>    readonly attribute DOMString messagePortName;</webidl>
34833         <descriptive>
34834             <brief>
34835  An attribute that stores the name of the message port name.
34836             </brief>
34837             <version>
34838  2.1
34839             </version>
34840         </descriptive>
34841         <Type type="DOMString"/>
34842       </Attribute>
34843       <Attribute readonly="readonly" name="isTrusted" id="::MessagePort::LocalMessagePort::isTrusted">
34844         <webidl>    readonly attribute boolean isTrusted;</webidl>
34845         <descriptive>
34846             <brief>
34847  An attribute that determines whether the message port is trusted or not.
34848             </brief>
34849             <version>
34850  2.1
34851             </version>
34852         </descriptive>
34853         <Type type="boolean"/>
34854       </Attribute>
34855       <Operation name="addMessagePortListener" id="::MessagePort::LocalMessagePort::addMessagePortListener">
34856         <webidl>    long addMessagePortListener(<ref>MessagePortCallback</ref> listener) raises(<ref>WebAPIException</ref>);</webidl>
34857         <descriptive>
34858             <brief>
34859  Adds a message port listener to receive messages from other applications.
34860             </brief>
34861             <version>
34862  2.1.
34863             </version>
34864             <Code> function onreceived(data, remoteMsgPort) {
34865    console.log('Received data to \'' + remoteMsgPort.messagePortName + '\'');
34866  }
34867
34868  var localMsgPort = tizen.messageport.requestLocalMessagePort('MessagePortA');
34869  var watchId = localMsgPort.addMessagePortListener(onreceived);
34870  </Code>
34871         </descriptive>
34872         <Type type="long">
34873           <descriptive>
34874               <description><p>
34875  long ID of the listener that is later used to remove the listener.
34876               </p></description>
34877           </descriptive>
34878         </Type>
34879         <ArgumentList>
34880           <Argument name="listener">
34881             <descriptive>
34882                 <description><p>
34883  The method to invoke when a message is received.
34884                 </p></description>
34885             </descriptive>
34886             <Type name="MessagePortCallback"/>
34887           </Argument>
34888         </ArgumentList>
34889         <Raises>
34890           <RaiseException name="WebAPIException">
34891             <descriptive>
34892                 <description><p>
34893  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
34894                 </p></description>
34895                 <description><p>
34896  with error type InvalidValuesError, if the input parameter contains an invalid value.
34897                 </p></description>
34898                 <description><p>
34899  with error type UnknownError, if any other error occurs.
34900                 </p></description>
34901             </descriptive>
34902           </RaiseException>
34903         </Raises>
34904       </Operation>
34905       <Operation name="removeMessagePortListener" id="::MessagePort::LocalMessagePort::removeMessagePortListener">
34906         <webidl>    void removeMessagePortListener(long watchId) raises(<ref>WebAPIException</ref>);</webidl>
34907         <descriptive>
34908             <brief>
34909  Removes the message port listener.
34910             </brief>
34911             <version>
34912  2.1.
34913             </version>
34914             <Code> var localMsgPort = tizen.messageport.requestLocalMessagePort('MessagePortA');
34915  var watchId = localMsgPort.addMessagePortListener(onreceived);
34916  // Communication routines of your app...
34917  localMsgPort.removeMessagePortListener(watchId);
34918  </Code>
34919         </descriptive>
34920         <Type type="void"/>
34921         <ArgumentList>
34922           <Argument name="watchId">
34923             <descriptive>
34924                 <description><p>
34925  ID to identify the listener.
34926                 </p></description>
34927             </descriptive>
34928             <Type type="long"/>
34929           </Argument>
34930         </ArgumentList>
34931         <Raises>
34932           <RaiseException name="WebAPIException">
34933             <descriptive>
34934                 <description><p>
34935  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
34936                 </p></description>
34937                 <description><p>
34938  with error type InvalidValuesError, if the input parameter contains an invalid value.
34939                 </p></description>
34940                 <description><p>
34941  with error type NotFoundError, if the watch ID has not been found.
34942                 </p></description>
34943                 <description><p>
34944  with error type UnknownError, if any other error occurs.
34945                 </p></description>
34946             </descriptive>
34947           </RaiseException>
34948         </Raises>
34949       </Operation>
34950     </Interface>
34951     <Interface name="RemoteMessagePort" id="::MessagePort::RemoteMessagePort">
34952       <webidl>  [NoInterfaceObject] interface RemoteMessagePort {
34953
34954     readonly attribute DOMString messagePortName;
34955
34956     readonly attribute <ref>ApplicationId</ref> appId;
34957
34958     readonly attribute boolean isTrusted;
34959
34960     void sendMessage(<ref>MessagePortDataItem</ref>[] data, optional <ref>LocalMessagePort</ref>? localMessagePort) raises(<ref>WebAPIException</ref>);
34961   };</webidl>
34962       <descriptive>
34963           <brief>
34964  The <em>RemoteMessagePort</em> interface provides methods to send messages.
34965           </brief>
34966           <version>
34967  2.1
34968           </version>
34969       </descriptive>
34970       <ExtendedAttributeList>
34971         <ExtendedAttribute name="NoInterfaceObject">
34972           <webidl>NoInterfaceObject</webidl>
34973         </ExtendedAttribute>
34974       </ExtendedAttributeList>
34975       <Attribute readonly="readonly" name="messagePortName" id="::MessagePort::RemoteMessagePort::messagePortName">
34976         <webidl>    readonly attribute DOMString messagePortName;</webidl>
34977         <descriptive>
34978             <brief>
34979  An attribute to store the message port name.
34980             </brief>
34981             <version>
34982  2.1
34983             </version>
34984         </descriptive>
34985         <Type type="DOMString"/>
34986       </Attribute>
34987       <Attribute readonly="readonly" name="appId" id="::MessagePort::RemoteMessagePort::appId">
34988         <webidl>    readonly attribute <ref>ApplicationId</ref> appId;</webidl>
34989         <descriptive>
34990             <brief>
34991  An attribute that store the application ID to connect with.
34992             </brief>
34993             <version>
34994  2.1
34995             </version>
34996         </descriptive>
34997         <Type name="ApplicationId"/>
34998       </Attribute>
34999       <Attribute readonly="readonly" name="isTrusted" id="::MessagePort::RemoteMessagePort::isTrusted">
35000         <webidl>    readonly attribute boolean isTrusted;</webidl>
35001         <descriptive>
35002             <brief>
35003  An attribute that determines whether the message port is trusted or not.
35004             </brief>
35005             <version>
35006  2.1
35007             </version>
35008         </descriptive>
35009         <Type type="boolean"/>
35010       </Attribute>
35011       <Operation name="sendMessage" id="::MessagePort::RemoteMessagePort::sendMessage">
35012         <webidl>    void sendMessage(<ref>MessagePortDataItem</ref>[] data, optional <ref>LocalMessagePort</ref>? localMessagePort) raises(<ref>WebAPIException</ref>);</webidl>
35013         <descriptive>
35014             <brief>
35015  Sends messages to the specified application.
35016             </brief>
35017            <description>
35018             <p>
35019 The sent messages will be ignored without any notice, unless the target application added one or more listeners to the target local message port.
35020             </p>
35021            </description>
35022             <version>
35023  2.1
35024             </version>
35025             <Code> // Sends message
35026  var localMsgPort = tizen.messageport.requestLocalMessagePort('MessagePortA');
35027  var remoteMsgPort = tizen.messageport.requestRemoteMessagePort('6xaeuflskd.App1', 'MessagePortB');
35028  localMsgPort.addMessagePortListener(function(items, remoteport) {
35029    // ...
35030    if(remoteport !== null) {
35031      remoteport.sendMessage([{key:'RESULT', value:'OK'}]);
35032    }
35033  });
35034  remoteMsgPort.sendMessage(
35035    [
35036      { key:'CMD', value:'openWindow' },
35037      { key:'OPTION', value:'bx' }
35038    ]
35039    , localMsgPort);
35040  </Code>
35041         </descriptive>
35042         <Type type="void"/>
35043         <ArgumentList>
35044           <Argument name="data">
35045             <descriptive>
35046                 <description><p>
35047  Data array of data to send.
35048                 </p></description>
35049             </descriptive>
35050             <Type type="array">
35051               <Type name="MessagePortDataItem"/>
35052             </Type>
35053           </Argument>
35054           <Argument optional="optional" name="localMessagePort">
35055             <descriptive>
35056                 <description><p>
35057  <em>LocalMessagePort<em> object that gives local message port of the current application. It can be used to receive reply messages from the other end of the message port. The order of items in this array is not guaranteed to be preserved during data transfer, and values of <em>key</em> within this array must not be duplicated or empty.
35058 </em></em>                </p></description>
35059             </descriptive>
35060             <Type name="LocalMessagePort" nullable="nullable"/>
35061           </Argument>
35062         </ArgumentList>
35063         <Raises>
35064           <RaiseException name="WebAPIException">
35065             <descriptive>
35066                 <description><p>
35067  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
35068                 </p></description>
35069                 <description><p>
35070  with error type InvalidValuesError, if an input parameter contains an invalid value.
35071                 </p></description>
35072                 <description><p>
35073  with error type QuotaExceededError, if the size of message has exceeded the maximum limit.
35074                 </p></description>
35075                 <description><p>
35076  with error type UnknownError, if any other error occurs.
35077                 </p></description>
35078             </descriptive>
35079           </RaiseException>
35080         </Raises>
35081       </Operation>
35082     </Interface>
35083     <Dictionary name="MessagePortDataItem" id="::MessagePort::MessagePortDataItem">
35084       <webidl>  dictionary MessagePortDataItem {
35085     DOMString key;
35086     DOMString value;
35087   };</webidl>
35088       <descriptive>
35089           <brief>
35090  A dictionary for specifying the data item that is transferred.
35091           </brief>
35092           <version>
35093  2.1
35094           </version>
35095       </descriptive>
35096       <DictionaryMember name="key" id="::MessagePort::MessagePortDataItem::key">
35097         <webidl>    DOMString key;</webidl>
35098         <Type type="DOMString"/>
35099       </DictionaryMember>
35100       <DictionaryMember name="value" id="::MessagePort::MessagePortDataItem::value">
35101         <webidl>    DOMString value;</webidl>
35102         <Type type="DOMString"/>
35103       </DictionaryMember>
35104     </Dictionary>
35105     <Interface name="MessagePortCallback" id="::MessagePort::MessagePortCallback">
35106       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface MessagePortCallback {
35107     void onreceived(<ref>MessagePortDataItem</ref>[] data, <ref>RemoteMessagePort</ref>? remoteMessagePort);
35108   };</webidl>
35109       <descriptive>
35110           <brief>
35111  This interface defines notification callbacks for receiving data from other applications.
35112           </brief>
35113           <version>
35114  2.1
35115           </version>
35116       </descriptive>
35117       <ExtendedAttributeList>
35118         <ExtendedAttribute name="Callback" value="FunctionOnly">
35119           <webidl>Callback</webidl>
35120         </ExtendedAttribute>
35121         <ExtendedAttribute name="NoInterfaceObject">
35122           <webidl> NoInterfaceObject</webidl>
35123         </ExtendedAttribute>
35124       </ExtendedAttributeList>
35125       <Operation name="onreceived" id="::MessagePort::MessagePortCallback::onreceived">
35126         <webidl>    void onreceived(<ref>MessagePortDataItem</ref>[] data, <ref>RemoteMessagePort</ref>? remoteMessagePort);</webidl>
35127         <descriptive>
35128             <brief>
35129  Called when data is received from other applications via the specified message port name.
35130             </brief>
35131             <version>
35132  2.1
35133             </version>
35134         </descriptive>
35135         <Type type="void"/>
35136         <ArgumentList>
35137           <Argument name="data">
35138             <descriptive>
35139                 <description><p>
35140  An array of data received from another application.
35141                 </p></description>
35142             </descriptive>
35143             <Type type="array">
35144               <Type name="MessagePortDataItem"/>
35145             </Type>
35146           </Argument>
35147           <Argument name="remoteMessagePort">
35148             <descriptive>
35149                 <description><p>
35150  The RemoteMessagePort port that can be used to reply for the received message.
35151                 </p></description>
35152             </descriptive>
35153             <Type name="RemoteMessagePort" nullable="nullable"/>
35154           </Argument>
35155         </ArgumentList>
35156       </Operation>
35157     </Interface>
35158   </Module>
35159   <Module name="Messaging" id="::Messaging">
35160     <webidl>module Messaging {
35161
35162   [NoInterfaceObject] interface MessageManagerObject {
35163     readonly attribute <ref>Messaging</ref> messaging;
35164   };
35165   <ref>Tizen</ref> implements <ref>MessageManagerObject</ref>;
35166
35167   enum MessageServiceTag {&quot;messaging.sms&quot;, &quot;messaging.mms&quot;, &quot;messaging.email&quot; };
35168   
35169   typedef DOMString MessageId;
35170   
35171   typedef DOMString MessageAttachmentId;
35172
35173   typedef DOMString MessageConvId;
35174
35175   typedef DOMString MessageFolderId;  
35176
35177   [Constructor(<ref>MessageServiceTag</ref> type, optional <ref>MessageInit</ref>? messageInitDict)]
35178   interface Message {
35179
35180     readonly attribute <ref>MessageId</ref>? id;
35181
35182     readonly attribute <ref>MessageConvId</ref>? conversationId;
35183
35184     readonly attribute <ref>MessageFolderId</ref>? folderId;
35185
35186     readonly attribute <ref>MessageServiceTag</ref> type;
35187
35188     readonly attribute Date? timestamp;
35189
35190     readonly attribute DOMString? from;
35191
35192     attribute DOMString[] to setraises(<ref>WebAPIException</ref>);
35193
35194     attribute DOMString[] cc setraises(<ref>WebAPIException</ref>);
35195
35196     attribute DOMString[] bcc setraises(<ref>WebAPIException</ref>);
35197
35198     attribute <ref>MessageBody</ref> body setraises(<ref>WebAPIException</ref>);
35199
35200     attribute boolean isRead setraises(<ref>WebAPIException</ref>);
35201
35202     readonly attribute boolean hasAttachment;
35203
35204     attribute boolean isHighPriority setraises(<ref>WebAPIException</ref>);
35205
35206     attribute DOMString subject setraises(<ref>WebAPIException</ref>);
35207
35208     readonly attribute <ref>MessageId</ref>? inResponseTo setraises(<ref>WebAPIException</ref>);
35209
35210     readonly attribute DOMString messageStatus;
35211
35212     attribute <ref>MessageAttachment</ref>[] attachments setraises(<ref>WebAPIException</ref>);
35213   };
35214   dictionary MessageInit
35215   {
35216
35217     DOMString subject;
35218
35219     DOMString[] to;
35220
35221     DOMString[] cc;
35222
35223     DOMString[] bcc;
35224
35225     DOMString plainBody;
35226
35227     DOMString htmlBody;
35228
35229     boolean isHighPriority;
35230   };
35231
35232   [NoInterfaceObject] interface MessageBody {
35233
35234     readonly attribute <ref>MessageId</ref> messageId;
35235
35236     readonly attribute boolean loaded;
35237
35238     attribute DOMString plainBody setraises(<ref>WebAPIException</ref>);
35239
35240     attribute DOMString htmlBody setraises(<ref>WebAPIException</ref>);
35241
35242     attribute <ref>MessageAttachment</ref>[] inlineAttachments setraises(<ref>WebAPIException</ref>);
35243   };
35244
35245   [Constructor(DOMString filePath, optional DOMString? mimeType)]
35246   interface MessageAttachment {
35247     
35248     readonly attribute <ref>MessageAttachmentId</ref>? id;
35249     
35250     readonly attribute <ref>MessageId</ref>? messageId;
35251     
35252     readonly attribute DOMString? mimeType;
35253     
35254     readonly attribute DOMString? filePath;
35255   };
35256
35257   [NoInterfaceObject] interface Messaging {
35258
35259     void getMessageServices(<ref>MessageServiceTag</ref> messageServiceType,
35260                             <ref>MessageServiceArraySuccessCallback</ref> successCallback,
35261                             optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
35262   };
35263
35264   [Callback=FunctionOnly, NoInterfaceObject] interface MessageServiceArraySuccessCallback {
35265
35266     void onsuccess(<ref>MessageService</ref>[] services);
35267
35268   };
35269
35270
35271   [NoInterfaceObject] interface MessageService {
35272
35273     readonly attribute DOMString id;
35274
35275     readonly attribute <ref>MessageServiceTag</ref> type;
35276
35277     readonly attribute DOMString name;
35278                     
35279     void sendMessage(<ref>Message</ref> message,
35280                      optional <ref>MessageRecipientsCallback</ref>? successCallback,
35281                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
35282
35283     void loadMessageBody(<ref>Message</ref> message,
35284                          <ref>MessageBodySuccessCallback</ref> successCallback,
35285                          optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
35286
35287     void loadMessageAttachment(<ref>MessageAttachment</ref> attachment,
35288                                <ref>MessageAttachmentSuccessCallback</ref> successCallback,
35289                                optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
35290
35291     long sync(optional <ref>SuccessCallback</ref>? successCallback,
35292               optional <ref>ErrorCallback</ref>? errorCallback,
35293               optional unsigned long? limit) raises(<ref>WebAPIException</ref>);
35294
35295     long syncFolder(<ref>MessageFolder</ref> folder,
35296                     optional <ref>SuccessCallback</ref>? successCallback,
35297                     optional <ref>ErrorCallback</ref>? errorCallback,
35298                     optional unsigned long? limit) raises(<ref>WebAPIException</ref>);
35299
35300     void stopSync(long opId) raises(<ref>WebAPIException</ref>);
35301
35302     readonly attribute <ref>MessageStorage</ref> messageStorage getraises(<ref>WebAPIException</ref>);
35303   };
35304
35305   [Callback=FunctionOnly, NoInterfaceObject] interface MessageRecipientsCallback {
35306
35307     void onsuccess(DOMString[] recipients);
35308
35309    };
35310
35311   [Callback=FunctionOnly, NoInterfaceObject] interface MessageBodySuccessCallback {
35312
35313      void onsuccess(<ref>Message</ref> message);
35314   };
35315
35316   [Callback=FunctionOnly, NoInterfaceObject] interface MessageAttachmentSuccessCallback {
35317
35318      void onsuccess(<ref>MessageAttachment</ref> attachment);
35319    };
35320
35321   [NoInterfaceObject] interface MessageStorage {
35322
35323     void addDraftMessage(<ref>Message</ref> message,
35324                          optional <ref>SuccessCallback</ref>? successCallback,
35325                          optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
35326
35327     void findMessages(<ref>AbstractFilter</ref> filter,
35328                       <ref>MessageArraySuccessCallback</ref> successCallback,
35329                       optional <ref>ErrorCallback</ref>? errorCallback,
35330                       optional <ref>SortMode</ref>? sort,
35331                       optional unsigned long? limit,
35332                       optional unsigned long? offset) raises(<ref>WebAPIException</ref>);
35333
35334     void removeMessages(<ref>Message</ref>[] messages,
35335                         optional <ref>SuccessCallback</ref>? successCallback,
35336                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
35337
35338     void updateMessages(<ref>Message</ref>[] messages,
35339                         optional <ref>SuccessCallback</ref>? successCallback,
35340                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
35341
35342     void findConversations(<ref>AbstractFilter</ref> filter,
35343                            <ref>MessageConversationArraySuccessCallback</ref> successCallback,
35344                            optional <ref>ErrorCallback</ref>? errorCallback,
35345                            optional <ref>SortMode</ref>? sort,
35346                            optional unsigned long? limit,
35347                            optional unsigned long? offset) raises(<ref>WebAPIException</ref>);
35348
35349     void removeConversations(<ref>MessageConversation</ref>[] conversations,
35350                              optional <ref>SuccessCallback</ref>? successCallback,
35351                              optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
35352
35353
35354     void findFolders(<ref>AbstractFilter</ref> filter,
35355                      <ref>MessageFolderArraySuccessCallback</ref> successCallback,
35356                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
35357
35358     long addMessagesChangeListener(<ref>MessagesChangeCallback</ref> messagesChangeCallback,
35359                                    optional <ref>AbstractFilter</ref>? filter) raises(<ref>WebAPIException</ref>);
35360
35361     long addConversationsChangeListener(<ref>MessageConversationsChangeCallback</ref> conversationsChangeCallback,
35362                                         optional <ref>AbstractFilter</ref>? filter) raises(<ref>WebAPIException</ref>);
35363
35364     long addFoldersChangeListener(<ref>MessageFoldersChangeCallback</ref> foldersChangeCallback,
35365                                   optional <ref>AbstractFilter</ref>? filter) raises(<ref>WebAPIException</ref>);
35366
35367     void removeChangeListener(long watchId) raises(<ref>WebAPIException</ref>);
35368   };
35369
35370   [Callback=FunctionOnly, NoInterfaceObject] interface MessageArraySuccessCallback {
35371
35372     void onsuccess(<ref>Message</ref>[] messages);
35373   };
35374
35375   [Callback=FunctionOnly, NoInterfaceObject] interface MessageConversationArraySuccessCallback {
35376
35377     void onsuccess(<ref>MessageConversation</ref>[] conversations);
35378   };
35379
35380   [Callback=FunctionOnly, NoInterfaceObject] interface MessageFolderArraySuccessCallback {
35381
35382     void onsuccess(<ref>MessageFolder</ref>[] folders);
35383   };
35384
35385   [Callback, NoInterfaceObject] interface MessagesChangeCallback {
35386
35387     void messagesadded(<ref>Message</ref>[] addedMessages);
35388
35389     void messagesupdated(<ref>Message</ref>[] updatedMessages);
35390
35391     void messagesremoved(<ref>Message</ref>[] removedMessages);
35392   };
35393
35394   [Callback, NoInterfaceObject] interface MessageConversationsChangeCallback {
35395
35396     void conversationsadded(<ref>MessageConversation</ref>[] addedConversations);
35397
35398     void conversationsupdated(<ref>MessageConversation</ref>[] updatedConversations);
35399
35400     void conversationsremoved(<ref>MessageConversation</ref>[] removedConversations);
35401   };
35402
35403   [Callback, NoInterfaceObject] interface MessageFoldersChangeCallback {
35404  
35405     void foldersadded(<ref>MessageFolder</ref>[] addedFolders);
35406
35407     void foldersupdated(<ref>MessageFolder</ref>[] updatedFolders);
35408
35409     void foldersremoved(<ref>MessageFolder</ref>[] removedFolders);
35410   };
35411
35412   [NoInterfaceObject] interface MessageConversation {
35413
35414     readonly attribute <ref>MessageConvId</ref> id;
35415
35416     readonly attribute <ref>MessageServiceTag</ref> type;
35417
35418     readonly attribute Date timestamp;
35419      
35420     readonly attribute unsigned long messageCount;
35421
35422     readonly attribute unsigned long unreadMessages;
35423
35424     readonly attribute DOMString preview;
35425
35426     readonly attribute DOMString subject;
35427
35428     readonly attribute boolean isRead;
35429
35430     readonly attribute DOMString from;
35431
35432     readonly attribute DOMString[] to;
35433
35434     readonly attribute DOMString[] cc;
35435
35436     readonly attribute DOMString[] bcc;
35437
35438     readonly attribute <ref>MessageId</ref> lastMessageId;
35439   };
35440
35441   [NoInterfaceObject] interface MessageFolder {
35442
35443     readonly attribute <ref>MessageFolderId</ref> id;
35444
35445     readonly attribute <ref>MessageFolderId</ref> parentId;
35446
35447     readonly attribute DOMString serviceId;
35448
35449     readonly attribute <ref>MessageServiceTag</ref> contentType;
35450
35451     attribute DOMString name setraises(<ref>WebAPIException</ref>);
35452
35453     readonly attribute DOMString path;
35454
35455     readonly attribute DOMString type;
35456
35457     attribute boolean synchronizable setraises(<ref>WebAPIException</ref>);
35458   };
35459
35460 };</webidl>
35461     <descriptive>
35462         <brief>
35463  This API provides interfaces and methods for managing SMS, MMS, and email messages.
35464         </brief>
35465        <description>
35466         <p>
35467 The Messaging API provides access to these capabilities:
35468         </p>
35469         <ul>
35470           <li>
35471 Sending messages through different technologies: SMS, MMS, and email messages.          </li>
35472           <li>
35473 Retrieving available message services.          </li>
35474           <li>
35475 Searching for messages.          </li>
35476           <li>
35477 Managing messages: update, delete, and add.          </li>
35478           <li>
35479 Subscribing to receive notifications of message storage modifications.          </li>
35480           <li>
35481 Fetching conversations and subscribing to conversation updates.          </li>
35482         </ul>
35483         <p>
35484 For more information on the Messaging features, see <a href="../../org.tizen.web.appprogramming/html/guide/communication_guide/messaging.htm">Messaging Guide</a>.
35485         </p>
35486        </description>
35487         <version>
35488  1.0
35489         </version>
35490         <def-api-feature identifier="http://tizen.org/feature/network.telephony">
35491           <descriptive>
35492            <description>
35493             <p>
35494 To guarantee this application running on a device with SMS feature, define below in the config file: 
35495             </p>
35496            </description>
35497           </descriptive>
35498         </def-api-feature>
35499         <def-api-feature identifier="http://tizen.org/feature/network.telephony.mms">
35500           <descriptive>
35501            <description>
35502             <p>
35503 To guarantee this application running on a device with MMS feature, define below in the config file: 
35504             </p>
35505            </description>
35506           </descriptive>
35507         </def-api-feature>
35508     </descriptive>
35509     <Interface name="MessageManagerObject" id="::Messaging::MessageManagerObject">
35510       <webidl>  [NoInterfaceObject] interface MessageManagerObject {
35511     readonly attribute <ref>Messaging</ref> messaging;
35512   };</webidl>
35513       <descriptive>
35514           <brief>
35515  This interface defines what is instantiated by the Tizen object.
35516           </brief>
35517          <description>
35518           <p>
35519 There is a <em>tizen.messaging </em>object that allows access to the Messaging API.
35520           </p>
35521          </description>
35522           <version>
35523  1.0
35524           </version>
35525       </descriptive>
35526       <ExtendedAttributeList>
35527         <ExtendedAttribute name="NoInterfaceObject">
35528           <webidl>NoInterfaceObject</webidl>
35529         </ExtendedAttribute>
35530       </ExtendedAttributeList>
35531       <Attribute readonly="readonly" name="messaging" id="::Messaging::MessageManagerObject::messaging">
35532         <webidl>    readonly attribute <ref>Messaging</ref> messaging;</webidl>
35533         <Type name="Messaging"/>
35534       </Attribute>
35535     </Interface>
35536     <Implements name1="Tizen" name2="MessageManagerObject">
35537       <webidl>  <ref>Tizen</ref> implements <ref>MessageManagerObject</ref>;</webidl>
35538     </Implements>
35539     <Enum name="MessageServiceTag" id="::Messaging::MessageServiceTag">
35540       <webidl>  enum MessageServiceTag {&quot;messaging.sms&quot;, &quot;messaging.mms&quot;, &quot;messaging.email&quot; };</webidl>
35541       <descriptive>
35542           <brief>
35543  The supported Messaging service tags.
35544 The following values are supported in this release:
35545           </brief>
35546          <description>
35547           <ul>
35548             <li>
35549 messaging.sms, for SMS services            </li>
35550             <li>
35551 messaging.mms, for MMS services            </li>
35552             <li>
35553 messaging.email, for email services            </li>
35554           </ul>
35555          </description>
35556           <version>
35557  1.0
35558           </version>
35559       </descriptive>
35560       <EnumValue stringvalue="messaging.sms">
35561         <webidl>&quot;messaging.sms</webidl>
35562       </EnumValue>
35563       <EnumValue stringvalue="messaging.mms">
35564         <webidl> &quot;messaging.mms</webidl>
35565       </EnumValue>
35566       <EnumValue stringvalue="messaging.email">
35567         <webidl> &quot;messaging.email</webidl>
35568       </EnumValue>
35569     </Enum>
35570     <Typedef name="MessageId" id="::Messaging::MessageId">
35571       <webidl>  typedef DOMString MessageId;</webidl>
35572       <descriptive>
35573           <brief>
35574  The Message identifier.
35575           </brief>
35576           <version>
35577  1.0
35578           </version>
35579       </descriptive>
35580       <Type type="DOMString"/>
35581     </Typedef>
35582     <Typedef name="MessageAttachmentId" id="::Messaging::MessageAttachmentId">
35583       <webidl>  typedef DOMString MessageAttachmentId;</webidl>
35584       <descriptive>
35585           <brief>
35586  The MessageAttachment identifier within a message.
35587           </brief>
35588           <version>
35589  1.0
35590           </version>
35591       </descriptive>
35592       <Type type="DOMString"/>
35593     </Typedef>
35594     <Typedef name="MessageConvId" id="::Messaging::MessageConvId">
35595       <webidl>  typedef DOMString MessageConvId;</webidl>
35596       <descriptive>
35597           <brief>
35598  The MessageConversation identifier.
35599           </brief>
35600           <version>
35601  1.0
35602           </version>
35603       </descriptive>
35604       <Type type="DOMString"/>
35605     </Typedef>
35606     <Typedef name="MessageFolderId" id="::Messaging::MessageFolderId">
35607       <webidl>  typedef DOMString MessageFolderId;</webidl>
35608       <descriptive>
35609           <brief>
35610  The identifier of an email folder .
35611           </brief>
35612           <version>
35613  1.0
35614           </version>
35615       </descriptive>
35616       <Type type="DOMString"/>
35617     </Typedef>
35618     <Interface name="Message" id="::Messaging::Message">
35619       <webidl>  [Constructor(<ref>MessageServiceTag</ref> type, optional <ref>MessageInit</ref>? messageInitDict)]
35620   interface Message {
35621
35622     readonly attribute <ref>MessageId</ref>? id;
35623
35624     readonly attribute <ref>MessageConvId</ref>? conversationId;
35625
35626     readonly attribute <ref>MessageFolderId</ref>? folderId;
35627
35628     readonly attribute <ref>MessageServiceTag</ref> type;
35629
35630     readonly attribute Date? timestamp;
35631
35632     readonly attribute DOMString? from;
35633
35634     attribute DOMString[] to setraises(<ref>WebAPIException</ref>);
35635
35636     attribute DOMString[] cc setraises(<ref>WebAPIException</ref>);
35637
35638     attribute DOMString[] bcc setraises(<ref>WebAPIException</ref>);
35639
35640     attribute <ref>MessageBody</ref> body setraises(<ref>WebAPIException</ref>);
35641
35642     attribute boolean isRead setraises(<ref>WebAPIException</ref>);
35643
35644     readonly attribute boolean hasAttachment;
35645
35646     attribute boolean isHighPriority setraises(<ref>WebAPIException</ref>);
35647
35648     attribute DOMString subject setraises(<ref>WebAPIException</ref>);
35649
35650     readonly attribute <ref>MessageId</ref>? inResponseTo setraises(<ref>WebAPIException</ref>);
35651
35652     readonly attribute DOMString messageStatus;
35653
35654     attribute <ref>MessageAttachment</ref>[] attachments setraises(<ref>WebAPIException</ref>);
35655   };</webidl>
35656       <descriptive>
35657           <brief>
35658  Defines the content and attributes of a message.
35659           </brief>
35660          <description>
35661           <p>
35662 This interface allows a web application to define the set of properties
35663 linked to a message.
35664           </p>
35665           <p>
35666 It also allows an application to retrieve the content of a
35667 message through <em>MessageStorage </em>methods. In these
35668 cases, the implementation can return, in some situations, only the meta-information
35669 of a message without the loaded body. In such situations, the method <em>MessageService.loadMessageBody() </em>should be used.
35670           </p>
35671          </description>
35672           <version>
35673  1.0
35674           </version>
35675           <Code> // Define the success callback.
35676  var messageSentCallback = function(recipients) {
35677    console.log(&quot;Message sent successfully to &quot; + recipients.length + &quot; recipients.&quot;);
35678  }
35679
35680  // Define the error callback.
35681  function errorCallback(err) {
35682    console.log(err.name + &quot; error: &quot; + err.message);
35683  }
35684  
35685  function serviceListCB(services) {
35686    if (services.length > 0) {
35687       var msg = new tizen.Message(&quot;messaging.sms&quot;, {plainBody: &quot;Tizen first SMS message.&quot;});
35688       services[0].sendMessage(msg, messageSentCallback, errorCallback);
35689    }
35690  }
35691
35692  tizen.messaging.getMessageServices(&quot;messaging.sms&quot;,
35693                                     serviceListCB,
35694                                     errorCallback);
35695  </Code>
35696       </descriptive>
35697       <ExtendedAttributeList>
35698         <ExtendedAttribute name="Constructor">
35699           <webidl>Constructor(<ref>MessageServiceTag</ref> type, optional <ref>MessageInit</ref>? messageInitDict)</webidl>
35700           <ArgumentList>
35701             <Argument name="type">
35702               <Type name="MessageServiceTag"/>
35703             </Argument>
35704             <Argument optional="optional" name="messageInitDict">
35705               <Type name="MessageInit" nullable="nullable"/>
35706             </Argument>
35707           </ArgumentList>
35708         </ExtendedAttribute>
35709       </ExtendedAttributeList>
35710       <Attribute readonly="readonly" name="id" id="::Messaging::Message::id">
35711         <webidl>    readonly attribute <ref>MessageId</ref>? id;</webidl>
35712         <descriptive>
35713             <brief>
35714  The message identifier.
35715             </brief>
35716            <description>
35717             <p>
35718 The ID is locally unique and persistent property, assigned by the device or the Web runtime (WRT).
35719 For new messages created using the Message constructor, the ID is assigned on the first occasion when a message is processed by the underlying platform, such as a call to MessageService.send(). Before the ID is assigned, it is set to <var>null</var>.
35720             </p>
35721             <p>
35722 By default, this attribute is set to <var>null</var>.
35723             </p>
35724            </description>
35725             <version>
35726  1.0
35727             </version>
35728         </descriptive>
35729         <Type name="MessageId" nullable="nullable"/>
35730       </Attribute>
35731       <Attribute readonly="readonly" name="conversationId" id="::Messaging::Message::conversationId">
35732         <webidl>    readonly attribute <ref>MessageConvId</ref>? conversationId;</webidl>
35733         <descriptive>
35734             <brief>
35735  The identifier of the conversation to which the message belongs.
35736             </brief>
35737            <description>
35738             <p>
35739 By default, this attribute is set to <var>null</var>.
35740             </p>
35741            </description>
35742             <version>
35743  1.0
35744             </version>
35745         </descriptive>
35746         <Type name="MessageConvId" nullable="nullable"/>
35747       </Attribute>
35748       <Attribute readonly="readonly" name="folderId" id="::Messaging::Message::folderId">
35749         <webidl>    readonly attribute <ref>MessageFolderId</ref>? folderId;</webidl>
35750         <descriptive>
35751             <brief>
35752  The identifier of the folder to which the message belongs.
35753             </brief>
35754            <description>
35755             <p>
35756 By default, this attribute is set to null.
35757             </p>
35758             <p>
35759 For SMS and MMS, <em>folderId </em>can be one of these values:
35760             </p>
35761             <ul>
35762               <li>
35763 INBOX = 1,              </li>
35764               <li>
35765 OUTBOX = 2,              </li>
35766               <li>
35767 DRAFTS = 3,              </li>
35768               <li>
35769 SENTBOX = 4              </li>
35770             </ul>
35771            </description>
35772             <version>
35773  1.0
35774             </version>
35775         </descriptive>
35776         <Type name="MessageFolderId" nullable="nullable"/>
35777       </Attribute>
35778       <Attribute readonly="readonly" name="type" id="::Messaging::Message::type">
35779         <webidl>    readonly attribute <ref>MessageServiceTag</ref> type;</webidl>
35780         <descriptive>
35781             <brief>
35782  The type of a given message.          
35783             </brief>
35784             <version>
35785  1.0
35786             </version>
35787         </descriptive>
35788         <Type name="MessageServiceTag"/>
35789       </Attribute>
35790       <Attribute readonly="readonly" name="timestamp" id="::Messaging::Message::timestamp">
35791         <webidl>    readonly attribute Date? timestamp;</webidl>
35792         <descriptive>
35793             <brief>
35794  The timestamp of a message.
35795             </brief>
35796            <description>
35797             <p>
35798 For a received message, the timestamps indicates the time at which a message is received.
35799 For a sent message, the timestamp indicates the time at which a message is sent.
35800 For a draft message, the timestamp indicates the time at which a message is added.
35801 By default, this attribute is set to <var>null</var>.
35802             </p>
35803            </description>
35804             <version>
35805  1.0
35806             </version>
35807         </descriptive>
35808         <Type type="Date" nullable="nullable"/>
35809       </Attribute>
35810       <Attribute readonly="readonly" name="from" id="::Messaging::Message::from">
35811         <webidl>    readonly attribute DOMString? from;</webidl>
35812         <descriptive>
35813             <brief>
35814  The source address (or source phone number) of a message.
35815             </brief>
35816            <description>
35817             <p>
35818 This property is set up by the device or the web runtime environment.
35819 By default, this attribute is set to null.
35820             </p>
35821            </description>
35822             <version>
35823  1.0
35824             </version>
35825         </descriptive>
35826         <Type type="DOMString" nullable="nullable"/>
35827       </Attribute>
35828       <Attribute name="to" id="::Messaging::Message::to">
35829         <webidl>    attribute DOMString[] to setraises(<ref>WebAPIException</ref>);</webidl>
35830         <descriptive>
35831             <brief>
35832  The destination of a message.
35833             </brief>
35834             <version>
35835  1.0
35836             </version>
35837         </descriptive>
35838         <Type type="array">
35839           <Type type="DOMString"/>
35840         </Type>
35841         <SetRaises>
35842           <RaiseException name="WebAPIException"/>
35843         </SetRaises>
35844       </Attribute>
35845       <Attribute name="cc" id="::Messaging::Message::cc">
35846         <webidl>    attribute DOMString[] cc setraises(<ref>WebAPIException</ref>);</webidl>
35847         <descriptive>
35848             <brief>
35849  The carbon copy address of a message.
35850             </brief>
35851            <description>
35852             <p>
35853 This property is used only for email messages.
35854             </p>
35855            </description>
35856             <version>
35857  1.0
35858             </version>
35859         </descriptive>
35860         <Type type="array">
35861           <Type type="DOMString"/>
35862         </Type>
35863         <SetRaises>
35864           <RaiseException name="WebAPIException"/>
35865         </SetRaises>
35866       </Attribute>
35867       <Attribute name="bcc" id="::Messaging::Message::bcc">
35868         <webidl>    attribute DOMString[] bcc setraises(<ref>WebAPIException</ref>);</webidl>
35869         <descriptive>
35870             <brief>
35871  The blind carbon copy (bcc) address of a message.
35872             </brief>
35873            <description>
35874             <p>
35875 This property is used only with email messages.
35876             </p>
35877            </description>
35878             <version>
35879  1.0
35880             </version>
35881         </descriptive>
35882         <Type type="array">
35883           <Type type="DOMString"/>
35884         </Type>
35885         <SetRaises>
35886           <RaiseException name="WebAPIException"/>
35887         </SetRaises>
35888       </Attribute>
35889       <Attribute name="body" id="::Messaging::Message::body">
35890         <webidl>    attribute <ref>MessageBody</ref> body setraises(<ref>WebAPIException</ref>);</webidl>
35891         <descriptive>
35892             <brief>
35893  An attribute to store the body of a message.
35894             </brief>
35895             <version>
35896  1.0
35897             </version>
35898         </descriptive>
35899         <Type name="MessageBody"/>
35900         <SetRaises>
35901           <RaiseException name="WebAPIException"/>
35902         </SetRaises>
35903       </Attribute>
35904       <Attribute name="isRead" id="::Messaging::Message::isRead">
35905         <webidl>    attribute boolean isRead setraises(<ref>WebAPIException</ref>);</webidl>
35906         <descriptive>
35907             <brief>
35908  An attribute to indicate the read state for a message.
35909             </brief>
35910            <description>
35911             <p>
35912 This property is set to <var>true</var> if the message has been read. Else it is set to <var>false</var>.
35913             </p>
35914            </description>
35915             <version>
35916  1.0
35917             </version>
35918         </descriptive>
35919         <Type type="boolean"/>
35920         <SetRaises>
35921           <RaiseException name="WebAPIException"/>
35922         </SetRaises>
35923       </Attribute>
35924       <Attribute readonly="readonly" name="hasAttachment" id="::Messaging::Message::hasAttachment">
35925         <webidl>    readonly attribute boolean hasAttachment;</webidl>
35926         <descriptive>
35927             <brief>
35928  An attribute to indicate whether an attachment(s) exists or not.
35929             </brief>
35930            <description>
35931             <p>
35932 It is set to <var>true</var> if a message has one or more attachments.
35933             </p>
35934             <p>
35935 This property is used only with email and MMS messages.(It is valid when body is loaded)
35936             </p>
35937            </description>
35938             <version>
35939  1.0
35940             </version>
35941         </descriptive>
35942         <Type type="boolean"/>
35943       </Attribute>
35944       <Attribute name="isHighPriority" id="::Messaging::Message::isHighPriority">
35945         <webidl>    attribute boolean isHighPriority setraises(<ref>WebAPIException</ref>);</webidl>
35946         <descriptive>
35947             <brief>
35948  An attribute to indicate the priority of a message.
35949             </brief>
35950            <description>
35951             <p>
35952 It is set to <var>true</var> if the message has a high priority. Else it is set to <var>false</var>, if the message has a normal or low priority.
35953             </p>
35954             <p>
35955 This property is used only with email messages.
35956             </p>
35957            </description>
35958             <version>
35959  1.0
35960             </version>
35961         </descriptive>
35962         <Type type="boolean"/>
35963         <SetRaises>
35964           <RaiseException name="WebAPIException"/>
35965         </SetRaises>
35966       </Attribute>
35967       <Attribute name="subject" id="::Messaging::Message::subject">
35968         <webidl>    attribute DOMString subject setraises(<ref>WebAPIException</ref>);</webidl>
35969         <descriptive>
35970             <brief>
35971  An attribute to store the subject of a message.
35972             </brief>
35973            <description>
35974             <p>
35975 This property is used only with email and MMS messages.
35976             </p>
35977            </description>
35978             <version>
35979  1.0
35980             </version>
35981         </descriptive>
35982         <Type type="DOMString"/>
35983         <SetRaises>
35984           <RaiseException name="WebAPIException"/>
35985         </SetRaises>
35986       </Attribute>
35987       <Attribute readonly="readonly" name="inResponseTo" id="::Messaging::Message::inResponseTo">
35988         <webidl>    readonly attribute <ref>MessageId</ref>? inResponseTo setraises(<ref>WebAPIException</ref>);</webidl>
35989         <descriptive>
35990             <brief>
35991  The identifier of the original message.
35992             </brief>
35993            <description>
35994             <p>
35995 If the message was replied to or forwarded, this property contains the ID of the original message, otherwise it is set to <var>null</var>.
35996             </p>
35997            </description>
35998             <version>
35999  1.0
36000             </version>
36001         </descriptive>
36002         <Type name="MessageId" nullable="nullable"/>
36003         <SetRaises>
36004           <RaiseException name="WebAPIException"/>
36005         </SetRaises>
36006       </Attribute>
36007       <Attribute readonly="readonly" name="messageStatus" id="::Messaging::Message::messageStatus">
36008         <webidl>    readonly attribute DOMString messageStatus;</webidl>
36009         <descriptive>
36010             <brief>
36011  The status of a given message.
36012             </brief>
36013            <description>
36014             <p>
36015 It can be one of these values:
36016             </p>
36017             <ul>
36018               <li>
36019 SENT              </li>
36020               <li>
36021 SENDING              </li>
36022               <li>
36023 FAILED              </li>
36024               <li>
36025 DRAFT              </li>
36026             </ul>
36027             <p>
36028 If the status of the current message does not correspond to any item from
36029 the list, an empty value is returned.
36030             </p>
36031            </description>
36032             <version>
36033  1.0
36034             </version>
36035         </descriptive>
36036         <Type type="DOMString"/>
36037       </Attribute>
36038       <Attribute name="attachments" id="::Messaging::Message::attachments">
36039         <webidl>    attribute <ref>MessageAttachment</ref>[] attachments setraises(<ref>WebAPIException</ref>);</webidl>
36040         <descriptive>
36041             <brief>
36042  The list of the message attachments.
36043             </brief>
36044            <description>
36045             <p>
36046 This array is empty if the message does not have attachments or the message body is not loaded and the attachment info is inaccessible (in this case, the <em>hasAttachment</em> attribute is checked after loading message body).
36047             </p>
36048            </description>
36049             <version>
36050  1.0
36051             </version>
36052             <Code> // Define the success callback.
36053  function serviceListCB(services) {
36054      if (services.length > 0) {
36055          var msg = new tizen.Message(&quot;messaging.email&quot;);    
36056          msg.attachments = [new tizen.MessageAttachment(&quot;images/myimage.png&quot;, &quot;image/png&quot;),
36057                             new tizen.MessageAttachment(&quot;documents/mydoc.pdf&quot;, &quot;text/pdf&quot;)];
36058      }
36059  }
36060
36061  tizen.messaging.getMessageServices(&quot;messaging.email&quot;, serviceListCB);
36062
36063      
36064 </Code>
36065         </descriptive>
36066         <Type type="array">
36067           <Type name="MessageAttachment"/>
36068         </Type>
36069         <SetRaises>
36070           <RaiseException name="WebAPIException"/>
36071         </SetRaises>
36072       </Attribute>
36073     </Interface>
36074     <Dictionary name="MessageInit" id="::Messaging::MessageInit">
36075       <webidl>  dictionary MessageInit
36076   {
36077
36078     DOMString subject;
36079
36080     DOMString[] to;
36081
36082     DOMString[] cc;
36083
36084     DOMString[] bcc;
36085
36086     DOMString plainBody;
36087
36088     DOMString htmlBody;
36089
36090     boolean isHighPriority;
36091   };</webidl>
36092       <descriptive>
36093           <brief>
36094  Provides specific message attributes upon message creation.
36095           </brief>
36096          <description>
36097           <p>
36098 This interface is used to input parameters when messages are created using
36099 the Message constructor.
36100           </p>
36101           <p>
36102 All the attributes are optional and are <var>undefined </var>by default, unless otherwise stated in the parameter description.
36103           </p>
36104          </description>
36105           <version>
36106  1.0
36107           </version>
36108       </descriptive>
36109       <DictionaryMember name="subject" id="::Messaging::MessageInit::subject">
36110         <webidl>    DOMString subject;</webidl>
36111         <descriptive>
36112             <brief>
36113  The subject of a message.
36114             </brief>
36115            <description>
36116             <p>
36117 This property is used only with email and MMS messages.
36118             </p>
36119            </description>
36120             <version>
36121  1.0
36122             </version>
36123         </descriptive>
36124         <Type type="DOMString"/>
36125       </DictionaryMember>
36126       <DictionaryMember name="to" id="::Messaging::MessageInit::to">
36127         <webidl>    DOMString[] to;</webidl>
36128         <descriptive>
36129             <brief>
36130  The destination addresses (or phone numbers) of a message.
36131             </brief>
36132             <version>
36133  1.0
36134             </version>
36135         </descriptive>
36136         <Type type="array">
36137           <Type type="DOMString"/>
36138         </Type>
36139       </DictionaryMember>
36140       <DictionaryMember name="cc" id="::Messaging::MessageInit::cc">
36141         <webidl>    DOMString[] cc;</webidl>
36142         <descriptive>
36143             <brief>
36144  The carbon copy addresses of a message.
36145             </brief>
36146            <description>
36147             <p>
36148 This property is used only with email messages.
36149             </p>
36150            </description>
36151             <version>
36152  1.0
36153             </version>
36154         </descriptive>
36155         <Type type="array">
36156           <Type type="DOMString"/>
36157         </Type>
36158       </DictionaryMember>
36159       <DictionaryMember name="bcc" id="::Messaging::MessageInit::bcc">
36160         <webidl>    DOMString[] bcc;</webidl>
36161         <descriptive>
36162             <brief>
36163  The blind carbon copy addresses of a message.
36164             </brief>
36165            <description>
36166             <p>
36167 This property is used only with email messages.
36168             </p>
36169            </description>
36170             <version>
36171  1.0
36172             </version>
36173         </descriptive>
36174         <Type type="array">
36175           <Type type="DOMString"/>
36176         </Type>
36177       </DictionaryMember>
36178       <DictionaryMember name="plainBody" id="::Messaging::MessageInit::plainBody">
36179         <webidl>    DOMString plainBody;</webidl>
36180         <descriptive>
36181             <brief>
36182  The plain text representation of a message body.
36183             </brief>
36184             <version>
36185  1.0
36186             </version>
36187         </descriptive>
36188         <Type type="DOMString"/>
36189       </DictionaryMember>
36190       <DictionaryMember name="htmlBody" id="::Messaging::MessageInit::htmlBody">
36191         <webidl>    DOMString htmlBody;</webidl>
36192         <descriptive>
36193             <brief>
36194  The HTML representation of a message body.
36195             </brief>
36196            <description>
36197             <p>
36198 This property is used only with email messages.
36199             </p>
36200            </description>
36201             <version>
36202  1.0
36203             </version>
36204         </descriptive>
36205         <Type type="DOMString"/>
36206       </DictionaryMember>
36207       <DictionaryMember name="isHighPriority" id="::Messaging::MessageInit::isHighPriority">
36208         <webidl>    boolean isHighPriority;</webidl>
36209         <descriptive>
36210             <brief>
36211  The priority of a message.
36212             </brief>
36213            <description>
36214             <p>
36215 This property is set to <var>true</var> if the message has a high priority. Else it is set to <var>false</var> if the message has a normal or low priority.
36216             </p>
36217             <p>
36218 This property is used only with email messages.
36219             </p>
36220            </description>
36221             <version>
36222  1.0
36223             </version>
36224         </descriptive>
36225         <Type type="boolean"/>
36226       </DictionaryMember>
36227     </Dictionary>
36228     <Interface name="MessageBody" id="::Messaging::MessageBody">
36229       <webidl>  [NoInterfaceObject] interface MessageBody {
36230
36231     readonly attribute <ref>MessageId</ref> messageId;
36232
36233     readonly attribute boolean loaded;
36234
36235     attribute DOMString plainBody setraises(<ref>WebAPIException</ref>);
36236
36237     attribute DOMString htmlBody setraises(<ref>WebAPIException</ref>);
36238
36239     attribute <ref>MessageAttachment</ref>[] inlineAttachments setraises(<ref>WebAPIException</ref>);
36240   };</webidl>
36241       <descriptive>
36242           <brief>
36243  This interface describes a message body.
36244           </brief>
36245          <description>
36246           <p>
36247 Message body is comprised of a plain text, an HTML, and inline attachments.
36248           </p>
36249          </description>
36250           <version>
36251  1.0
36252           </version>
36253       </descriptive>
36254       <ExtendedAttributeList>
36255         <ExtendedAttribute name="NoInterfaceObject">
36256           <webidl>NoInterfaceObject</webidl>
36257         </ExtendedAttribute>
36258       </ExtendedAttributeList>
36259       <Attribute readonly="readonly" name="messageId" id="::Messaging::MessageBody::messageId">
36260         <webidl>    readonly attribute <ref>MessageId</ref> messageId;</webidl>
36261         <descriptive>
36262             <brief>
36263  The ID of a parent message.
36264             </brief>
36265            <description>
36266             <p>
36267 It holds the ID of the message containing this body.
36268             </p>
36269            </description>
36270             <version>
36271  1.0
36272             </version>
36273         </descriptive>
36274         <Type name="MessageId"/>
36275       </Attribute>
36276       <Attribute readonly="readonly" name="loaded" id="::Messaging::MessageBody::loaded">
36277         <webidl>    readonly attribute boolean loaded;</webidl>
36278         <descriptive>
36279             <brief>
36280  An attribute to indicate whether the message body has been loaded or not.
36281             </brief>
36282            <description>
36283             <p>
36284 It is set to <var>true </var>if the message body is loaded, else it is set to<var> false </var>if the object is not loaded.
36285 The default value is <var>false</var>.
36286             </p>
36287            </description>
36288             <version>
36289  1.0
36290             </version>
36291         </descriptive>
36292         <Type type="boolean"/>
36293       </Attribute>
36294       <Attribute name="plainBody" id="::Messaging::MessageBody::plainBody">
36295         <webidl>    attribute DOMString plainBody setraises(<ref>WebAPIException</ref>);</webidl>
36296         <descriptive>
36297             <brief>
36298  The plain text representation of a message body.
36299             </brief>
36300             <version>
36301  1.0
36302             </version>
36303         </descriptive>
36304         <Type type="DOMString"/>
36305         <SetRaises>
36306           <RaiseException name="WebAPIException"/>
36307         </SetRaises>
36308       </Attribute>
36309       <Attribute name="htmlBody" id="::Messaging::MessageBody::htmlBody">
36310         <webidl>    attribute DOMString htmlBody setraises(<ref>WebAPIException</ref>);</webidl>
36311         <descriptive>
36312             <brief>
36313  The HTML representation of a message body.
36314             </brief>
36315            <description>
36316             <p>
36317 This attribute holds an empty string if the message does not have any HTML body content.
36318 This property is used only with email messages.
36319             </p>
36320            </description>
36321             <version>
36322  1.0
36323             </version>
36324         </descriptive>
36325         <Type type="DOMString"/>
36326         <SetRaises>
36327           <RaiseException name="WebAPIException"/>
36328         </SetRaises>
36329       </Attribute>
36330       <Attribute name="inlineAttachments" id="::Messaging::MessageBody::inlineAttachments">
36331         <webidl>    attribute <ref>MessageAttachment</ref>[] inlineAttachments setraises(<ref>WebAPIException</ref>);</webidl>
36332         <descriptive>
36333             <brief>
36334  The list of the inline attachments.
36335             </brief>
36336            <description>
36337             <p>
36338 This array is empty, if the message does not have inline attachment or the message body is not loaded and attachments info is inaccessible (in this case the <em>loaded</em> attribute is checked).
36339             </p>
36340             <p>
36341 To indicate where to show an inline attachment within the HTML body, a link of the following format should be provided:
36342 &quot;&lt;img src=&quot;The file name of a inline attachment&quot;>&quot; 
36343 This property is used only with email messages.
36344             </p>
36345            </description>
36346             <version>
36347  1.0
36348             </version>
36349             <Code> // Define the success callback.
36350  function serviceListCB(services) {
36351      if (services.length > 0) {
36352          var msg = new tizen.Message(&quot;messaging.email&quot;);
36353          msg.body.htmlBody = &quot;&lt;html>&lt;body>&lt;img src='myimage.png'>&lt;/body>&lt;/html>&quot;;
36354          msg.body.inlineAttachments = [new tizen.MessageAttachment(&quot;images/myimage.png&quot;)];
36355      }
36356  }
36357
36358  tizen.messaging.getMessageServices(&quot;messaging.email&quot;, serviceListCB);
36359
36360  </Code>
36361         </descriptive>
36362         <Type type="array">
36363           <Type name="MessageAttachment"/>
36364         </Type>
36365         <SetRaises>
36366           <RaiseException name="WebAPIException"/>
36367         </SetRaises>
36368       </Attribute>
36369     </Interface>
36370     <Interface name="MessageAttachment" id="::Messaging::MessageAttachment">
36371       <webidl>  [Constructor(DOMString filePath, optional DOMString? mimeType)]
36372   interface MessageAttachment {
36373     
36374     readonly attribute <ref>MessageAttachmentId</ref>? id;
36375     
36376     readonly attribute <ref>MessageId</ref>? messageId;
36377     
36378     readonly attribute DOMString? mimeType;
36379     
36380     readonly attribute DOMString? filePath;
36381   };</webidl>
36382       <descriptive>
36383           <brief>
36384  This interface defines the content and attributes of a message attachment.
36385           </brief>
36386           <version>
36387  1.0
36388           </version>
36389       </descriptive>
36390       <ExtendedAttributeList>
36391         <ExtendedAttribute name="Constructor">
36392           <webidl>Constructor(DOMString filePath, optional DOMString? mimeType)</webidl>
36393           <ArgumentList>
36394             <Argument name="filePath">
36395               <Type type="DOMString"/>
36396             </Argument>
36397             <Argument optional="optional" name="mimeType">
36398               <Type type="DOMString" nullable="nullable"/>
36399             </Argument>
36400           </ArgumentList>
36401         </ExtendedAttribute>
36402       </ExtendedAttributeList>
36403       <Attribute readonly="readonly" name="id" id="::Messaging::MessageAttachment::id">
36404         <webidl>    readonly attribute <ref>MessageAttachmentId</ref>? id;</webidl>
36405         <descriptive>
36406             <brief>
36407  The ID of an attachment.
36408             </brief>
36409            <description>
36410             <p>
36411 It holds the identifier of the attachment within its parent message.
36412             </p>
36413             <p>
36414 By default, this attribute is set to <var>null</var>.
36415             </p>
36416            </description>
36417             <version>
36418  1.0
36419             </version>
36420         </descriptive>
36421         <Type name="MessageAttachmentId" nullable="nullable"/>
36422       </Attribute>
36423       <Attribute readonly="readonly" name="messageId" id="::Messaging::MessageAttachment::messageId">
36424         <webidl>    readonly attribute <ref>MessageId</ref>? messageId;</webidl>
36425         <descriptive>
36426             <brief>
36427  The ID of a parent message.
36428             </brief>
36429            <description>
36430             <p>
36431 By default, this attribute is set to <var>null</var>.
36432             </p>
36433            </description>
36434             <version>
36435  1.0
36436             </version>
36437         </descriptive>
36438         <Type name="MessageId" nullable="nullable"/>
36439       </Attribute>
36440       <Attribute readonly="readonly" name="mimeType" id="::Messaging::MessageAttachment::mimeType">
36441         <webidl>    readonly attribute DOMString? mimeType;</webidl>
36442         <descriptive>
36443             <brief>
36444  The attachment MIME type.
36445             </brief>
36446            <description>
36447             <p>
36448 It describes the MIME type of an attachment, for example; &quot;text/html&quot;.
36449             </p>
36450             <p>
36451 By default, this attribute is set to <var>null</var>.
36452             </p>
36453            </description>
36454             <version>
36455  1.0
36456             </version>
36457         </descriptive>
36458         <Type type="DOMString" nullable="nullable"/>
36459       </Attribute>
36460       <Attribute readonly="readonly" name="filePath" id="::Messaging::MessageAttachment::filePath">
36461         <webidl>    readonly attribute DOMString? filePath;</webidl>
36462         <descriptive>
36463             <brief>
36464  The location path to a loaded attachment file.
36465             </brief>
36466            <description>
36467             <p>
36468 It holds the location path to a loaded attachment file, appropriate for the Filesystem API. It is set to <var>null</var> if the attachment is not loaded from the remote servaer.
36469             </p>
36470            </description>
36471             <version>
36472  1.0
36473             </version>
36474         </descriptive>
36475         <Type type="DOMString" nullable="nullable"/>
36476       </Attribute>
36477     </Interface>
36478     <Interface name="Messaging" id="::Messaging::Messaging">
36479       <webidl>  [NoInterfaceObject] interface Messaging {
36480
36481     void getMessageServices(<ref>MessageServiceTag</ref> messageServiceType,
36482                             <ref>MessageServiceArraySuccessCallback</ref> successCallback,
36483                             optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
36484   };</webidl>
36485       <descriptive>
36486           <brief>
36487  This interface retrieves messaging services.
36488           </brief>
36489          <description>
36490           <p>
36491 Fetches all existing messaging services by type or a messaging service of a given type
36492 for concrete account.
36493           </p>
36494          </description>
36495           <version>
36496  1.0
36497           </version>
36498           <Code> // Define the success callback.
36499  function serviceListCB(services) {
36500    if (services.length > 0) {
36501      var msg = new tizen.Message(&quot;messaging.sms&quot;);
36502    }
36503  }
36504
36505  // Define error callback.
36506  function errorCallback(error) {
36507    console.log(&quot;Cannot get messaging service &quot; + error.message);
36508  }
36509
36510  tizen.messaging.getMessageServices(&quot;messaging.sms&quot;, serviceListCB,
36511                                      errorCallback);
36512  </Code>
36513       </descriptive>
36514       <ExtendedAttributeList>
36515         <ExtendedAttribute name="NoInterfaceObject">
36516           <webidl>NoInterfaceObject</webidl>
36517         </ExtendedAttribute>
36518       </ExtendedAttributeList>
36519       <Operation name="getMessageServices" id="::Messaging::Messaging::getMessageServices">
36520         <webidl>    void getMessageServices(<ref>MessageServiceTag</ref> messageServiceType,
36521                             <ref>MessageServiceArraySuccessCallback</ref> successCallback,
36522                             optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
36523         <descriptive>
36524             <brief>
36525  Gets the messaging service of a given type for a given account, or all existing services supporting the given type, if <em>serviceId </em>is not given.
36526             </brief>
36527            <description>
36528             <p>
36529 The errorCallback is launched with these error types:
36530             </p>
36531             <ul>
36532               <li>
36533 InvalidValuesError - If any of the input parameters contain an invalid value, the encoding is not valid or onsuccess is null. 
36534 Please note that to allow developers to ignore errors, errorCallback accepts null as a valid value.              </li>
36535               <li>
36536 UnknownError - In any other error case.              </li>
36537             </ul>
36538            </description>
36539             <version>
36540  1.0
36541             </version>
36542             <Code> // Define the error callback.
36543  function errorCallback(error) {
36544    console.log(&quot;Cannot get messaging service &quot; + error.message);
36545  }
36546
36547  // Define the success callback.
36548  function serviceListCB(services) {
36549    console.log(&quot;Found &quot; + services.length + &quot;email services&quot;);
36550  }
36551
36552  tizen.messaging.getMessageServices(&quot;messaging.email&quot;, serviceListCB,
36553                                       errorCallback);
36554  </Code>
36555         </descriptive>
36556         <Type type="void"/>
36557         <ArgumentList>
36558           <Argument name="messageServiceType">
36559             <descriptive>
36560                 <description><p>
36561  Type of the services to be retrieved.
36562                 </p></description>
36563             </descriptive>
36564             <Type name="MessageServiceTag"/>
36565           </Argument>
36566           <Argument name="successCallback">
36567             <descriptive>
36568                 <description><p>
36569  The method invoked when the services are successfully retrieved.
36570                 </p></description>
36571             </descriptive>
36572             <Type name="MessageServiceArraySuccessCallback"/>
36573           </Argument>
36574           <Argument optional="optional" name="errorCallback">
36575             <descriptive>
36576                 <description><p>
36577  The method invoked when an error occurs.
36578                 </p></description>
36579             </descriptive>
36580             <Type name="ErrorCallback" nullable="nullable"/>
36581           </Argument>
36582         </ArgumentList>
36583         <Raises>
36584           <RaiseException name="WebAPIException">
36585             <descriptive>
36586                 <description><p>
36587  with error type TypeMismatchError, if any input parameter
36588 is not compatible with the expected type for that parameter.
36589                 </p></description>
36590                 <description><p>
36591  with error type NotSupportedError, if this feature is not supported.
36592                 </p></description>
36593             </descriptive>
36594           </RaiseException>
36595         </Raises>
36596       </Operation>
36597     </Interface>
36598     <Interface name="MessageServiceArraySuccessCallback" id="::Messaging::MessageServiceArraySuccessCallback">
36599       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface MessageServiceArraySuccessCallback {
36600
36601     void onsuccess(<ref>MessageService</ref>[] services);
36602
36603   };</webidl>
36604       <descriptive>
36605           <brief>
36606  Defines callback(s) for retrieving message services.
36607           </brief>
36608           <version>
36609  1.0
36610           </version>
36611       </descriptive>
36612       <ExtendedAttributeList>
36613         <ExtendedAttribute name="Callback" value="FunctionOnly">
36614           <webidl>Callback</webidl>
36615         </ExtendedAttribute>
36616         <ExtendedAttribute name="NoInterfaceObject">
36617           <webidl> NoInterfaceObject</webidl>
36618         </ExtendedAttribute>
36619       </ExtendedAttributeList>
36620       <Operation name="onsuccess" id="::Messaging::MessageServiceArraySuccessCallback::onsuccess">
36621         <webidl>    void onsuccess(<ref>MessageService</ref>[] services);</webidl>
36622         <descriptive>
36623             <brief>
36624  Called when finding message services is successful.
36625             </brief>
36626             <version>
36627  1.0
36628             </version>
36629         </descriptive>
36630         <Type type="void"/>
36631         <ArgumentList>
36632           <Argument name="services">
36633             <descriptive>
36634                 <description><p>
36635  Array of available <em>MessageService</em> objects on the device.
36636                 </p></description>
36637             </descriptive>
36638             <Type type="array">
36639               <Type name="MessageService"/>
36640             </Type>
36641           </Argument>
36642         </ArgumentList>
36643       </Operation>
36644     </Interface>
36645     <Interface name="MessageService" id="::Messaging::MessageService">
36646       <webidl>  [NoInterfaceObject] interface MessageService {
36647
36648     readonly attribute DOMString id;
36649
36650     readonly attribute <ref>MessageServiceTag</ref> type;
36651
36652     readonly attribute DOMString name;
36653                     
36654     void sendMessage(<ref>Message</ref> message,
36655                      optional <ref>MessageRecipientsCallback</ref>? successCallback,
36656                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
36657
36658     void loadMessageBody(<ref>Message</ref> message,
36659                          <ref>MessageBodySuccessCallback</ref> successCallback,
36660                          optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
36661
36662     void loadMessageAttachment(<ref>MessageAttachment</ref> attachment,
36663                                <ref>MessageAttachmentSuccessCallback</ref> successCallback,
36664                                optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
36665
36666     long sync(optional <ref>SuccessCallback</ref>? successCallback,
36667               optional <ref>ErrorCallback</ref>? errorCallback,
36668               optional unsigned long? limit) raises(<ref>WebAPIException</ref>);
36669
36670     long syncFolder(<ref>MessageFolder</ref> folder,
36671                     optional <ref>SuccessCallback</ref>? successCallback,
36672                     optional <ref>ErrorCallback</ref>? errorCallback,
36673                     optional unsigned long? limit) raises(<ref>WebAPIException</ref>);
36674
36675     void stopSync(long opId) raises(<ref>WebAPIException</ref>);
36676
36677     readonly attribute <ref>MessageStorage</ref> messageStorage getraises(<ref>WebAPIException</ref>);
36678   };</webidl>
36679       <descriptive>
36680           <brief>
36681  This interface allows a web application to manipulate and send messages and supports the message creating, sending, and fetching capabilities.
36682           </brief>
36683          <description>
36684           <p>
36685 Messages created through this API are not persistent in device memory until the implementation attempts to send the message using the sendMessage() method. On performing the sendMessage() method, the message is available in the relevant folder (such as sent and drafts), depending on the result of the operation.
36686           </p>
36687           <p>
36688 The interface allows fetching of messages for all folders belonging to one account, with synchronizable flag set, using the sync() method, or for a given folder using the syncFolder() method.
36689           </p>
36690           <p>
36691 The interface allows fetching of the message body for a given message using loadMessageBody() method.
36692           </p>
36693          </description>
36694           <version>
36695  1.0
36696           </version>
36697           <Code> // Define the success callback.
36698  function messageSent(recipients) {
36699    console.log(&quot;The SMS has been sent&quot;);
36700  }
36701
36702  // Define the error callback.
36703  function messageFailed(error) {
36704    console.log(&quot;The SMS could not be sent &quot; + error.message);
36705  }
36706
36707  // Define service error callback.
36708  function serviceErrorCB(error) {
36709    console.log(&quot;Cannot get messaging service &quot; + error.message);
36710  }
36711
36712  // Define the success callback.
36713  function serviceListCB(services) {
36714    if (services.length > 0) {
36715      // SMS sending example
36716      var msg = new tizen.Message(&quot;messaging.sms&quot;, {plainBody:&quot;I will arrive in 10 minutes.&quot;,
36717                                   to:[&quot;+34666666666&quot;]});
36718      // Send request
36719      services[0].sendMessage(msg, messageSent, messageFailed);
36720    }
36721  }
36722
36723  tizen.messaging.getMessageServices(&quot;messaging.sms&quot;,
36724                                     serviceListCB,
36725                                     serviceErrorCB);
36726  </Code>
36727       </descriptive>
36728       <ExtendedAttributeList>
36729         <ExtendedAttribute name="NoInterfaceObject">
36730           <webidl>NoInterfaceObject</webidl>
36731         </ExtendedAttribute>
36732       </ExtendedAttributeList>
36733       <Attribute readonly="readonly" name="id" id="::Messaging::MessageService::id">
36734         <webidl>    readonly attribute DOMString id;</webidl>
36735         <descriptive>
36736             <brief>
36737  The unique identifier of this Messaging service. 
36738             </brief>
36739             <version>
36740  1.0.
36741             </version>
36742         </descriptive>
36743         <Type type="DOMString"/>
36744       </Attribute>
36745       <Attribute readonly="readonly" name="type" id="::Messaging::MessageService::type">
36746         <webidl>    readonly attribute <ref>MessageServiceTag</ref> type;</webidl>
36747         <descriptive>
36748             <brief>
36749  The tag supported by this messaging service.
36750             </brief>
36751             <version>
36752  1.0
36753             </version>
36754         </descriptive>
36755         <Type name="MessageServiceTag"/>
36756       </Attribute>
36757       <Attribute readonly="readonly" name="name" id="::Messaging::MessageService::name">
36758         <webidl>    readonly attribute DOMString name;</webidl>
36759         <descriptive>
36760             <brief>
36761  The messaging service name taken from the messaging service
36762             </brief>
36763             <version>
36764  1.0.
36765             </version>
36766         </descriptive>
36767         <Type type="DOMString"/>
36768       </Attribute>
36769       <Operation name="sendMessage" id="::Messaging::MessageService::sendMessage">
36770         <webidl>    void sendMessage(<ref>Message</ref> message,
36771                      optional <ref>MessageRecipientsCallback</ref>? successCallback,
36772                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
36773         <descriptive>
36774             <brief>
36775  Sends a specified message.
36776             </brief>
36777            <description>
36778             <p>
36779 For messaging technologies in which the message is sent individually to every recipient(such as SMS), individual notification must be supported as follows:
36780             </p>
36781             <p>
36782 For every individual recipient in the destination list, if the message cannot be sent to that recipient, the onerror() method of the errorCallback argument must be invoked with the corresponding error type as input parameter.
36783 These error types may be passed, depending on the error conditions:
36784             </p>
36785             <ul>
36786               <li>
36787  NetworkError - If the network connection is not accessible.              </li>
36788               <li>
36789  InvalidValuesError - If any of the input parameters contains an invalid value.              </li>
36790               <li>
36791  UnknownError - If any other error occurs.              </li>
36792             </ul>
36793             <p>
36794 The error message contains the name of the recipient who has failed to receive the sent message.
36795             </p>
36796             <p>
36797 When the operation is fully completed (that is, the implementation has the
36798 result of the send operation for all recipients), the onsuccess() 
36799 method of the successCallback will be invoked with an array of recipients who received 
36800 the sent message, as input parameter.
36801             </p>
36802            </description>
36803             <version>
36804  1.0
36805             </version>
36806             <privilegelevel>
36807  public
36808             </privilegelevel>
36809             <privilege>
36810  http://tizen.org/privilege/messaging.write
36811             </privilege>
36812             <Code> // Define the success callback
36813  function messageSent(recipients) {
36814    for (var i = 0; i &#60; recipients.length; i++) {
36815      console.log(&quot;The SMS has been sent to &quot; + recipients[i]);
36816    }
36817  }
36818
36819  // Define the error callback.
36820  function messageFailed(error) {
36821    console.log(&quot;The SMS could not be sent &quot; + error.message);
36822  }
36823
36824  // Define the success callback.
36825  function serviceListCB(services) {
36826    if (services.length > 0) {
36827      // SMS sending example
36828      var msg = new tizen.Message(&quot;messaging.sms&quot;, {plainBody: &quot;I will arrive in 10 minutes.&quot;,
36829                                  to: [&quot;+34666666666&quot;, &quot;+34888888888&quot;]});
36830      // Send request
36831      services[0].sendMessage(msg, messageSent, messageFailed);
36832    }
36833  }
36834  tizen.messaging.getMessageServices(&quot;messaging.sms&quot;, serviceListCB);
36835  </Code>
36836         </descriptive>
36837         <Type type="void"/>
36838         <ArgumentList>
36839           <Argument name="message">
36840             <descriptive>
36841                 <description><p>
36842  The message to be sent.
36843                 </p></description>
36844             </descriptive>
36845             <Type name="Message"/>
36846           </Argument>
36847           <Argument optional="optional" name="successCallback">
36848             <descriptive>
36849                 <description><p>
36850  The method to be invoked when the message is successfully sent.
36851                 </p></description>
36852             </descriptive>
36853             <Type name="MessageRecipientsCallback" nullable="nullable"/>
36854           </Argument>
36855           <Argument optional="optional" name="errorCallback">
36856             <descriptive>
36857                 <description><p>
36858  The method to be invoked when the sending request has failed.
36859                 </p></description>
36860             </descriptive>
36861             <Type name="ErrorCallback" nullable="nullable"/>
36862           </Argument>
36863         </ArgumentList>
36864         <Raises>
36865           <RaiseException name="WebAPIException">
36866             <descriptive>
36867                 <description><p>
36868  with error type TypeMismatchError, if any input parameter
36869 is not compatible with the expected type for that parameter.
36870                 </p></description>
36871                 <description><p>
36872  with error type SecurityError, if the application does not have the privilege to call this method.
36873                 </p></description>
36874                 <description><p>
36875  with error type NotSupportedError, if this feature is not supported.
36876                 </p></description>
36877             </descriptive>
36878           </RaiseException>
36879         </Raises>
36880       </Operation>
36881       <Operation name="loadMessageBody" id="::Messaging::MessageService::loadMessageBody">
36882         <webidl>    void loadMessageBody(<ref>Message</ref> message,
36883                          <ref>MessageBodySuccessCallback</ref> successCallback,
36884                          optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
36885         <descriptive>
36886             <brief>
36887  Loads the body for a specified message.
36888             </brief>
36889            <description>
36890             <p>
36891 It is the back end's responsibility to detect which MIME parts of the message are related to the message body and should be loaded.
36892 If the message body is already loaded, the onsuccess() method of the successCallback will be invoked immediately.
36893             </p>
36894             <p>
36895 The errorCallback is launched with these error types:
36896             </p>
36897             <ul>
36898               <li>
36899  InvalidValuesError - If any of the input parameters contains an invalid value.              </li>
36900               <li>
36901  UnknownError - If any other error occurs.              </li>
36902             </ul>
36903            </description>
36904             <version>
36905  1.0
36906             </version>
36907             <privilegelevel>
36908  public
36909             </privilegelevel>
36910             <privilege>
36911  http://tizen.org/privilege/messaging.write
36912             </privilege>
36913             <Code> // Assume messaging service is initialized.
36914  var service; 
36915  // Define the success body loaded callback.
36916  function successCallback(message) {
36917    console.log (&quot;body for message: &quot; + message.subject + &quot;from: &quot; + message.from + &quot;loaded.&quot;);
36918  }
36919  // Define error callback.
36920  function errorCallback(error) {
36921    console.log(&quot;Cannot load message body&quot; + error.message);
36922  }
36923
36924  function messageQueryCallback(messages) {
36925    for (var i = 0; i &#60; messages.length; i++) {
36926      var message = messages[i];
36927      if (!message.body.loaded) {
36928         service.loadMessageBody(message, successCallback, errorCallback);
36929      }
36930    }
36931  }
36932
36933  service.messageStorage.findMessages(new tizen.AttributeFilter(&quot;type&quot;, &quot;EXACTLY&quot;, &quot;messaging.email&quot;), messageQueryCallback);
36934  </Code>
36935         </descriptive>
36936         <Type type="void"/>
36937         <ArgumentList>
36938           <Argument name="message">
36939             <descriptive>
36940                 <description><p>
36941  Message with the body to be loaded.
36942                 </p></description>
36943             </descriptive>
36944             <Type name="Message"/>
36945           </Argument>
36946           <Argument name="successCallback">
36947             <descriptive>
36948                 <description><p>
36949  The method to be invoked when the message body is successfully loaded.
36950                 </p></description>
36951             </descriptive>
36952             <Type name="MessageBodySuccessCallback"/>
36953           </Argument>
36954           <Argument optional="optional" name="errorCallback">
36955             <descriptive>
36956                 <description><p>
36957  The method to be invoked when the loading request fails.
36958                 </p></description>
36959             </descriptive>
36960             <Type name="ErrorCallback" nullable="nullable"/>
36961           </Argument>
36962         </ArgumentList>
36963         <Raises>
36964           <RaiseException name="WebAPIException">
36965             <descriptive>
36966                 <description><p>
36967  with error type TypeMismatchError, if any input parameter
36968 is not compatible with the expected type for that parameter.
36969                 </p></description>
36970                 <description><p>
36971  with error type SecurityError, if the application does not have the privilege to call this method.
36972                 </p></description>
36973                 <description><p>
36974  with error type NotSupportedError, if this feature is not supported.
36975                 </p></description>
36976             </descriptive>
36977           </RaiseException>
36978         </Raises>
36979       </Operation>
36980       <Operation name="loadMessageAttachment" id="::Messaging::MessageService::loadMessageAttachment">
36981         <webidl>    void loadMessageAttachment(<ref>MessageAttachment</ref> attachment,
36982                                <ref>MessageAttachmentSuccessCallback</ref> successCallback,
36983                                optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
36984         <descriptive>
36985             <brief>
36986  Loads a specified message attachment.
36987             </brief>
36988            <description>
36989             <p>
36990 This method is used only for email services. If the message attachment is already loaded, the onsuccess() method of the successCallback is invoked immediately.
36991             </p>
36992             <p>
36993 The errorCallback is launched with these error types:
36994             </p>
36995             <ul>
36996               <li>
36997  InvalidValuesError - If any of the input parameters contains an invalid value.              </li>
36998               <li>
36999  UnknownError - If any other error occurs.              </li>
37000             </ul>
37001            </description>
37002             <version>
37003  1.0
37004             </version>
37005             <privilegelevel>
37006  public
37007             </privilegelevel>
37008             <privilege>
37009  http://tizen.org/privilege/messaging.write
37010             </privilege>
37011             <Code> // Assume messaging service is initialized.
37012  var service;
37013  // Define success body loaded callback
37014  function successCallback(attachment) {
37015    console.log(&quot;attachment&quot; + attachment.id + &quot;is loaded to:&quot; + attachment.filePath);
37016  }
37017  // Define error callback
37018  function errorCallback(error) {
37019    console.log(&quot;Cannot load message attachment&quot; + error.message);
37020  }
37021
37022  function messagesFoundCB(messages) {
37023    for (var i = 0; i &#60; messages.length; i++) {
37024      var message = messages[i];
37025      if (!message.attachments[0].loaded) {
37026         service.loadMessageAttachment(message.attachments[0], successCallback, errorCallback);
37027      }
37028    }
37029  }
37030
37031  service.messageStorage.findMessages(new tizen.AttributeFilter(&quot;hasAttachment&quot;, &quot;EXACTLY&quot;, true), messagesFoundCB);
37032  </Code>
37033         </descriptive>
37034         <Type type="void"/>
37035         <ArgumentList>
37036           <Argument name="attachment">
37037             <descriptive>
37038                 <description><p>
37039  Message attachment to be loaded.
37040                 </p></description>
37041             </descriptive>
37042             <Type name="MessageAttachment"/>
37043           </Argument>
37044           <Argument name="successCallback">
37045             <descriptive>
37046                 <description><p>
37047  The method to be invoked when the message attachment is successfully loaded.
37048                 </p></description>
37049             </descriptive>
37050             <Type name="MessageAttachmentSuccessCallback"/>
37051           </Argument>
37052           <Argument optional="optional" name="errorCallback">
37053             <descriptive>
37054                 <description><p>
37055  The method to be invoked when the loading request fails.
37056                 </p></description>
37057             </descriptive>
37058             <Type name="ErrorCallback" nullable="nullable"/>
37059           </Argument>
37060         </ArgumentList>
37061         <Raises>
37062           <RaiseException name="WebAPIException">
37063             <descriptive>
37064                 <description><p>
37065  with error type TypeMismatchError, if any input parameter
37066 is not compatible with the expected type for that parameter.
37067                 </p></description>
37068                 <description><p>
37069  with error type SecurityError, if the application does not have the privilege to call this method.
37070                 </p></description>
37071                 <description><p>
37072  with error type NotSupportedError, if this feature is not supported.
37073                 </p></description>
37074             </descriptive>
37075           </RaiseException>
37076         </Raises>
37077       </Operation>
37078       <Operation name="sync" id="::Messaging::MessageService::sync">
37079         <webidl>    long sync(optional <ref>SuccessCallback</ref>? successCallback,
37080               optional <ref>ErrorCallback</ref>? errorCallback,
37081               optional unsigned long? limit) raises(<ref>WebAPIException</ref>);</webidl>
37082         <descriptive>
37083             <brief>
37084  Synchronizes the service content with an external mail server.
37085             </brief>
37086            <description>
37087             <p>
37088 This method is used only for email services. This method performs the same actions as syncFolder for every folder with Synchronizable flag set within the current Messaging service.
37089             </p>
37090             <p>
37091 The errorCallback is launched with these error types:
37092             </p>
37093             <ul>
37094               <li>
37095  InvalidValuesError - If any of the input parameters contains an invalid value.              </li>
37096               <li>
37097  AbortError - If the operation has been stopped.              </li>
37098               <li>
37099  UnknownError - If any other error occurs.              </li>
37100             </ul>
37101            </description>
37102             <version>
37103  1.0
37104             </version>
37105             <privilegelevel>
37106  public
37107             </privilegelevel>
37108             <privilege>
37109  http://tizen.org/privilege/messaging.write
37110             </privilege>
37111             <Code> // Define the success callback.
37112  function serviceSynced() {
37113    console.log(&quot;New messages are fetched!&quot;);
37114  }
37115
37116  // Define the success callback.
37117  function servicesListSuccessCB(services) {
37118    services[0].sync(serviceSynced, null, 30);
37119    // Subscribe to MessageStorage notification
37120  }
37121  tizen.messaging.getMessageServices(&quot;messaging.email&quot;, servicesListSuccessCB);
37122  </Code>
37123         </descriptive>
37124         <Type type="long">
37125           <descriptive>
37126               <description><p>
37127  long The identifier which can be used to stop this service operation.
37128               </p></description>
37129           </descriptive>
37130         </Type>
37131         <ArgumentList>
37132           <Argument optional="optional" name="successCallback">
37133             <descriptive>
37134                 <description><p>
37135  The method to be invoked when all the actions are completed successfully.
37136                 </p></description>
37137             </descriptive>
37138             <Type name="SuccessCallback" nullable="nullable"/>
37139           </Argument>
37140           <Argument optional="optional" name="errorCallback">
37141             <descriptive>
37142                 <description><p>
37143  The method to be invoked when the request fails.
37144                 </p></description>
37145             </descriptive>
37146             <Type name="ErrorCallback" nullable="nullable"/>
37147           </Argument>
37148           <Argument optional="optional" name="limit">
37149             <descriptive>
37150                 <description><p>
37151  The maximum amount of messages retrieved within each folder.
37152                 </p></description>
37153             </descriptive>
37154             <Type type="unsigned long" nullable="nullable"/>
37155           </Argument>
37156         </ArgumentList>
37157         <Raises>
37158           <RaiseException name="WebAPIException">
37159             <descriptive>
37160                 <description><p>
37161  with error type TypeMismatchError, if any input parameter
37162 is not compatible with the expected type for that parameter.
37163                 </p></description>
37164                 <description><p>
37165  with error type SecurityError, if the application does not have the privilege to call this method.
37166                 </p></description>
37167                 <description><p>
37168  with error type NotSupportedError, if this feature is not supported.
37169                 </p></description>
37170             </descriptive>
37171           </RaiseException>
37172         </Raises>
37173       </Operation>
37174       <Operation name="syncFolder" id="::Messaging::MessageService::syncFolder">
37175         <webidl>    long syncFolder(<ref>MessageFolder</ref> folder,
37176                     optional <ref>SuccessCallback</ref>? successCallback,
37177                     optional <ref>ErrorCallback</ref>? errorCallback,
37178                     optional unsigned long? limit) raises(<ref>WebAPIException</ref>);</webidl>
37179         <descriptive>
37180             <brief>
37181  Synchronizes the folder content with an external mail server.
37182             </brief>
37183            <description>
37184             <p>
37185 This method is used only for email services. This method performs the following actions:
37186             </p>
37187             <ul>
37188               <li>
37189 Exports local changes within a given folder from device to server.              </li>
37190               <li>
37191 Retrieves the list of available messages from within the given folder.              </li>
37192             </ul>
37193             <p>
37194 Messages that are retrieved from a given folder, even if synchronizable flag for this folder is not set.
37195 The backend is responsible in deciding which data is retrieved for every message. It can be:
37196             </p>
37197             <ul>
37198               <li>
37199 Message header details              </li>
37200               <li>
37201 Whole message body              </li>
37202             </ul>
37203             <p>
37204 The limit of latest messages for the given folder must be retrieved and put into <em>MessageStorage</em>. If the limit is not set, the entire folder must be retrieved.
37205             </p>
37206             <p>
37207 The errorCallback is launched with these error types:
37208             </p>
37209             <ul>
37210               <li>
37211  InvalidValuesError - If any of the input parameters contains an invalid value.              </li>
37212               <li>
37213  AbortError - If the operation is stopped.              </li>
37214               <li>
37215  UnknownError - If any other error occurs.              </li>
37216             </ul>
37217            </description>
37218             <version>
37219  1.0
37220             </version>
37221             <privilegelevel>
37222  public
37223             </privilegelevel>
37224             <privilege>
37225  http://tizen.org/privilege/messaging.write
37226             </privilege>
37227             <Code> var emailService; // Assume email service is initialized
37228   // Define the error callback.
37229  function errorCallback(err) {
37230    console.log(err.name + &quot; error: &quot; + err.message);
37231  }
37232  function serviceCallback(services) {
37233    emailService = services[0];
37234    var filter = new tizen.AttributeFilter(&quot;serviceId&quot;, &quot;EXACTLY&quot;, emailService.id);
37235
37236    emailService.messageStorage.findFolders(filter, folderQueryCallback);
37237  }
37238   
37239  // Define the success callback.
37240  function folderSynced() {
37241    console.log(&quot;New messages are fetched!&quot;);
37242  }
37243  function folderQueryCallback(folders) {
37244    console.log(folders.length + &quot; folders(s) found!&quot;);
37245    for (var i = 0; i &#60; folders.length; i++) {
37246      emailService.syncFolder (folders[i], folderSynced, null, 30);
37247    }
37248  }
37249  
37250  tizen.messaging.getMessageServices(&quot;messaging.email&quot;, serviceCallback, errorCallback);
37251  </Code>
37252         </descriptive>
37253         <Type type="long">
37254           <descriptive>
37255               <description><p>
37256  long The identifier which can be used to stop this service operation.
37257               </p></description>
37258           </descriptive>
37259         </Type>
37260         <ArgumentList>
37261           <Argument name="folder">
37262             <descriptive>
37263                 <description><p>
37264  The folder to be synchronized.
37265                 </p></description>
37266             </descriptive>
37267             <Type name="MessageFolder"/>
37268           </Argument>
37269           <Argument optional="optional" name="successCallback">
37270             <descriptive>
37271                 <description><p>
37272  The method to be invoked when all actions are completed successfully.
37273                 </p></description>
37274             </descriptive>
37275             <Type name="SuccessCallback" nullable="nullable"/>
37276           </Argument>
37277           <Argument optional="optional" name="errorCallback">
37278             <descriptive>
37279                 <description><p>
37280  The method to be invoked when the request fails.
37281                 </p></description>
37282             </descriptive>
37283             <Type name="ErrorCallback" nullable="nullable"/>
37284           </Argument>
37285           <Argument optional="optional" name="limit">
37286             <descriptive>
37287                 <description><p>
37288  The maximum amount of messages retrieved within a given folder.
37289                 </p></description>
37290             </descriptive>
37291             <Type type="unsigned long" nullable="nullable"/>
37292           </Argument>
37293         </ArgumentList>
37294         <Raises>
37295           <RaiseException name="WebAPIException">
37296             <descriptive>
37297                 <description><p>
37298  with error type TypeMismatchError, if any input parameter
37299 is not compatible with the expected type for that parameter.
37300                 </p></description>
37301                 <description><p>
37302  with error type SecurityError, if the application does not have the privilege to call this method.
37303                 </p></description>
37304                 <description><p>
37305  with error type NotSupportedError, if this feature is not supported.
37306                 </p></description>
37307             </descriptive>
37308           </RaiseException>
37309         </Raises>
37310       </Operation>
37311       <Operation name="stopSync" id="::Messaging::MessageService::stopSync">
37312         <webidl>    void stopSync(long opId) raises(<ref>WebAPIException</ref>);</webidl>
37313         <descriptive>
37314             <brief>
37315  Stops sync() and syncFoler() operation.
37316             </brief>
37317            <description>
37318             <p>
37319 If the <em>operationId </em>argument is valid and corresponds to a service operation already in progress, the operation must be stopped and its error callback must be invoked with error type AbortError.
37320             </p>
37321             <p>
37322 If the <em>operationId </em>argument is not valid or does not correspond to a valid service operation, the method will return without any further action.
37323             </p>
37324            </description>
37325             <version>
37326  1.0
37327             </version>
37328         </descriptive>
37329         <Type type="void"/>
37330         <ArgumentList>
37331           <Argument name="opId">
37332             <descriptive>
37333                 <description><p>
37334   A service operation identifier.
37335                 </p></description>
37336             </descriptive>
37337             <Type type="long"/>
37338           </Argument>
37339         </ArgumentList>
37340         <Raises>
37341           <RaiseException name="WebAPIException">
37342             <descriptive>
37343                 <description><p>
37344  with error type TypeMismatchError, if any input parameter
37345 is not compatible with the expected type for that parameter.
37346                 </p></description>
37347                 <description><p>
37348  with error type InvalidValuesError, if any of the input parameters contains an invalid value.
37349                 </p></description>
37350             </descriptive>
37351           </RaiseException>
37352         </Raises>
37353       </Operation>
37354       <Attribute readonly="readonly" name="messageStorage" id="::Messaging::MessageService::messageStorage">
37355         <webidl>    readonly attribute <ref>MessageStorage</ref> messageStorage getraises(<ref>WebAPIException</ref>);</webidl>
37356         <descriptive>
37357             <brief>
37358  An attribute to access <em>MessageStorage </em>for this messaging service.
37359             </brief>
37360            <description>
37361             <p>
37362 If the backend does not support <em>MessageStorage </em>for this messaging service, a WebAPIException is raised with error type NotSupportedError.
37363             </p>
37364            </description>
37365             <version>
37366  1.0
37367             </version>
37368         </descriptive>
37369         <Type name="MessageStorage"/>
37370         <GetRaises>
37371           <RaiseException name="WebAPIException"/>
37372         </GetRaises>
37373       </Attribute>
37374     </Interface>
37375     <Interface name="MessageRecipientsCallback" id="::Messaging::MessageRecipientsCallback">
37376       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface MessageRecipientsCallback {
37377
37378     void onsuccess(DOMString[] recipients);
37379
37380    };</webidl>
37381       <descriptive>
37382           <brief>
37383  This interface specifies the methods to be called for the sendMessage() operation.
37384           </brief>
37385           <version>
37386  1.0
37387           </version>
37388       </descriptive>
37389       <ExtendedAttributeList>
37390         <ExtendedAttribute name="Callback" value="FunctionOnly">
37391           <webidl>Callback</webidl>
37392         </ExtendedAttribute>
37393         <ExtendedAttribute name="NoInterfaceObject">
37394           <webidl> NoInterfaceObject</webidl>
37395         </ExtendedAttribute>
37396       </ExtendedAttributeList>
37397       <Operation name="onsuccess" id="::Messaging::MessageRecipientsCallback::onsuccess">
37398         <webidl>    void onsuccess(DOMString[] recipients);</webidl>
37399         <descriptive>
37400             <brief>
37401  Called when the message sending is finished.
37402             </brief>
37403             <version>
37404  1.0
37405             </version>
37406         </descriptive>
37407         <Type type="void"/>
37408         <ArgumentList>
37409           <Argument name="recipients">
37410             <descriptive>
37411                 <description><p>
37412  The recipients of the message.
37413                 </p></description>
37414             </descriptive>
37415             <Type type="array">
37416               <Type type="DOMString"/>
37417             </Type>
37418           </Argument>
37419         </ArgumentList>
37420       </Operation>
37421     </Interface>
37422     <Interface name="MessageBodySuccessCallback" id="::Messaging::MessageBodySuccessCallback">
37423       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface MessageBodySuccessCallback {
37424
37425      void onsuccess(<ref>Message</ref> message);
37426   };</webidl>
37427       <descriptive>
37428           <brief>
37429  This interface specifies a success callback function that takes a message as the input argument.
37430 It is used in the loadMessageBody() asynchronous operation.
37431           </brief>
37432           <version>
37433  1.0
37434           </version>
37435       </descriptive>
37436       <ExtendedAttributeList>
37437         <ExtendedAttribute name="Callback" value="FunctionOnly">
37438           <webidl>Callback</webidl>
37439         </ExtendedAttribute>
37440         <ExtendedAttribute name="NoInterfaceObject">
37441           <webidl> NoInterfaceObject</webidl>
37442         </ExtendedAttribute>
37443       </ExtendedAttributeList>
37444       <Operation name="onsuccess" id="::Messaging::MessageBodySuccessCallback::onsuccess">
37445         <webidl>     void onsuccess(<ref>Message</ref> message);</webidl>
37446         <descriptive>
37447             <brief>
37448  Called when the asynchronous query completes successfully.
37449             </brief>
37450             <version>
37451  1.0
37452             </version>
37453         </descriptive>
37454         <Type type="void"/>
37455         <ArgumentList>
37456           <Argument name="message">
37457             <descriptive>
37458                 <description><p>
37459  The message containing the loaded body.
37460                 </p></description>
37461             </descriptive>
37462             <Type name="Message"/>
37463           </Argument>
37464         </ArgumentList>
37465       </Operation>
37466     </Interface>
37467     <Interface name="MessageAttachmentSuccessCallback" id="::Messaging::MessageAttachmentSuccessCallback">
37468       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface MessageAttachmentSuccessCallback {
37469
37470      void onsuccess(<ref>MessageAttachment</ref> attachment);
37471    };</webidl>
37472       <descriptive>
37473           <brief>
37474  This callback interface specifies a success callback function that takes the loaded attachment as the input argument.
37475 It is used in the loadMessageAttachment() asynchronous operation.
37476           </brief>
37477           <version>
37478  1.0
37479           </version>
37480       </descriptive>
37481       <ExtendedAttributeList>
37482         <ExtendedAttribute name="Callback" value="FunctionOnly">
37483           <webidl>Callback</webidl>
37484         </ExtendedAttribute>
37485         <ExtendedAttribute name="NoInterfaceObject">
37486           <webidl> NoInterfaceObject</webidl>
37487         </ExtendedAttribute>
37488       </ExtendedAttributeList>
37489       <Operation name="onsuccess" id="::Messaging::MessageAttachmentSuccessCallback::onsuccess">
37490         <webidl>     void onsuccess(<ref>MessageAttachment</ref> attachment);</webidl>
37491         <descriptive>
37492             <brief>
37493  Called when the asynchronous query completes successfully.
37494             </brief>
37495             <version>
37496  1.0
37497             </version>
37498         </descriptive>
37499         <Type type="void"/>
37500         <ArgumentList>
37501           <Argument name="attachment">
37502             <descriptive>
37503                 <description><p>
37504  The loaded attachment.
37505                 </p></description>
37506             </descriptive>
37507             <Type name="MessageAttachment"/>
37508           </Argument>
37509         </ArgumentList>
37510       </Operation>
37511     </Interface>
37512     <Interface name="MessageStorage" id="::Messaging::MessageStorage">
37513       <webidl>  [NoInterfaceObject] interface MessageStorage {
37514
37515     void addDraftMessage(<ref>Message</ref> message,
37516                          optional <ref>SuccessCallback</ref>? successCallback,
37517                          optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
37518
37519     void findMessages(<ref>AbstractFilter</ref> filter,
37520                       <ref>MessageArraySuccessCallback</ref> successCallback,
37521                       optional <ref>ErrorCallback</ref>? errorCallback,
37522                       optional <ref>SortMode</ref>? sort,
37523                       optional unsigned long? limit,
37524                       optional unsigned long? offset) raises(<ref>WebAPIException</ref>);
37525
37526     void removeMessages(<ref>Message</ref>[] messages,
37527                         optional <ref>SuccessCallback</ref>? successCallback,
37528                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
37529
37530     void updateMessages(<ref>Message</ref>[] messages,
37531                         optional <ref>SuccessCallback</ref>? successCallback,
37532                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
37533
37534     void findConversations(<ref>AbstractFilter</ref> filter,
37535                            <ref>MessageConversationArraySuccessCallback</ref> successCallback,
37536                            optional <ref>ErrorCallback</ref>? errorCallback,
37537                            optional <ref>SortMode</ref>? sort,
37538                            optional unsigned long? limit,
37539                            optional unsigned long? offset) raises(<ref>WebAPIException</ref>);
37540
37541     void removeConversations(<ref>MessageConversation</ref>[] conversations,
37542                              optional <ref>SuccessCallback</ref>? successCallback,
37543                              optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
37544
37545
37546     void findFolders(<ref>AbstractFilter</ref> filter,
37547                      <ref>MessageFolderArraySuccessCallback</ref> successCallback,
37548                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
37549
37550     long addMessagesChangeListener(<ref>MessagesChangeCallback</ref> messagesChangeCallback,
37551                                    optional <ref>AbstractFilter</ref>? filter) raises(<ref>WebAPIException</ref>);
37552
37553     long addConversationsChangeListener(<ref>MessageConversationsChangeCallback</ref> conversationsChangeCallback,
37554                                         optional <ref>AbstractFilter</ref>? filter) raises(<ref>WebAPIException</ref>);
37555
37556     long addFoldersChangeListener(<ref>MessageFoldersChangeCallback</ref> foldersChangeCallback,
37557                                   optional <ref>AbstractFilter</ref>? filter) raises(<ref>WebAPIException</ref>);
37558
37559     void removeChangeListener(long watchId) raises(<ref>WebAPIException</ref>);
37560   };</webidl>
37561       <descriptive>
37562           <brief>
37563  This interface allows management capabilities using a web application to query, update, and delete messages, and subscribe to <em>MessageStorage </em>changes. In addition to simple message queries, the <em>MessageStorage </em>interface provides functionality to find conversations and folders.
37564           </brief>
37565          <description>
37566           <p>
37567 The conversation object represents a group of messages combined by the set of message fields. Email conversations are grouped by subject, while chat messages are grouped by sender and recipient fields.
37568           </p>
37569          </description>
37570           <version>
37571  1.0
37572           </version>
37573       </descriptive>
37574       <ExtendedAttributeList>
37575         <ExtendedAttribute name="NoInterfaceObject">
37576           <webidl>NoInterfaceObject</webidl>
37577         </ExtendedAttribute>
37578       </ExtendedAttributeList>
37579       <Operation name="addDraftMessage" id="::Messaging::MessageStorage::addDraftMessage">
37580         <webidl>    void addDraftMessage(<ref>Message</ref> message,
37581                          optional <ref>SuccessCallback</ref>? successCallback,
37582                          optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
37583         <descriptive>
37584             <brief>
37585  Adds a draft message to <em>MessageStorage</em> and these messages are stored in the Drafts folder.
37586             </brief>
37587            <description>
37588             <p>
37589 The errorCallback is launched with these error types:
37590             </p>
37591             <ul>
37592               <li>
37593  InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
37594               <li>
37595  UnknownError - If any other error occurs.              </li>
37596             </ul>
37597            </description>
37598             <version>
37599  1.0
37600             </version>
37601             <privilegelevel>
37602  public
37603             </privilegelevel>
37604             <privilege>
37605  http://tizen.org/privilege/messaging.write
37606             </privilege>
37607             <Code> // Define success callback
37608  function successCallback() {
37609    console.log(&quot;Draft message added&quot;);
37610  }
37611
37612  // Define error callback
37613  function errorCallback(error) {
37614    console.log(&quot;Cannot add draft message &quot; + error.message);
37615  }
37616
37617  // Define service query success callback.
37618  function serviceListCB(services) {
37619    if (services.length > 0) {
37620      var msg = new tizen.Message(&quot;messaging.sms&quot;, {plainBody: &quot;Tizen draft SMS message.&quot;});
37621      services[0].messageStorage.addDraftMessage(msg,
37622                                                 successCallback,
37623                                                 errorCallback);
37624    }
37625  }
37626  tizen.messaging.getMessageServices(&quot;messaging.sms&quot;, serviceListCB);
37627  </Code>
37628         </descriptive>
37629         <Type type="void"/>
37630         <ArgumentList>
37631           <Argument name="message">
37632             <descriptive>
37633                 <description><p>
37634  The draft message to add to the storage.
37635                 </p></description>
37636             </descriptive>
37637             <Type name="Message"/>
37638           </Argument>
37639           <Argument optional="optional" name="successCallback">
37640             <descriptive>
37641                 <description><p>
37642  The method called when draft messages successfully added.
37643                 </p></description>
37644             </descriptive>
37645             <Type name="SuccessCallback" nullable="nullable"/>
37646           </Argument>
37647           <Argument optional="optional" name="errorCallback">
37648             <descriptive>
37649                 <description><p>
37650  The method called when an error occurs.
37651                 </p></description>
37652             </descriptive>
37653             <Type name="ErrorCallback" nullable="nullable"/>
37654           </Argument>
37655         </ArgumentList>
37656         <Raises>
37657           <RaiseException name="WebAPIException">
37658             <descriptive>
37659                 <description><p>
37660  with error type TypeMismatchError, if any input parameter
37661 is not compatible with the expected type for that parameter or if the method is invoked for an incoming message.
37662                 </p></description>
37663                 <description><p>
37664  with error type SecurityError, if the application does not have the privilege to call this method.
37665                 </p></description>
37666                 <description><p>
37667  with error type NotSupportedError, if this feature is not supported.
37668                 </p></description>
37669             </descriptive>
37670           </RaiseException>
37671         </Raises>
37672       </Operation>
37673       <Operation name="findMessages" id="::Messaging::MessageStorage::findMessages">
37674         <webidl>    void findMessages(<ref>AbstractFilter</ref> filter,
37675                       <ref>MessageArraySuccessCallback</ref> successCallback,
37676                       optional <ref>ErrorCallback</ref>? errorCallback,
37677                       optional <ref>SortMode</ref>? sort,
37678                       optional unsigned long? limit,
37679                       optional unsigned long? offset) raises(<ref>WebAPIException</ref>);</webidl>
37680         <descriptive>
37681             <brief>
37682  Finds messages from <em>MessageStorage</em>.
37683             </brief>
37684            <description>
37685             <p>
37686 The errorCallback is launched with these error types:
37687             </p>
37688             <ul>
37689               <li>
37690  InvalidValuesError - If any of the input parameters contains an invalid value.              </li>
37691               <li>
37692  UnknownError - If any other error occurs.              </li>
37693             </ul>
37694            </description>
37695             <version>
37696  1.0
37697             </version>
37698             <privilegelevel>
37699  public
37700             </privilegelevel>
37701             <privilege>
37702  http://tizen.org/privilege/messaging.read
37703             </privilege>
37704             <Code> var service; // Assume messaging service is initialized
37705  var messageStorage = service.messageStorage; 
37706  function messageArrayCB(messages) {
37707    console.log(messages.length + &quot; message(s) fetched!&quot;);
37708    for (var i = 0; i &#60; messages.length; i++) {
37709      console.log(i + &quot;. message from &quot; + messages[i].from);
37710    }
37711  }
37712
37713  // Define error callback
37714  function errorCallback(error) {
37715    console.log(&quot;Cannot query messages&quot; + error.message);
37716  }
37717
37718  var filter = new tizen.AttributeFilter(&quot;from&quot;, &quot;CONTAINS&quot;, &quot;2593&quot;);
37719  messageStorage.findMessages(filter, messageArrayCB, errorCallback);
37720  </Code>
37721         </descriptive>
37722         <Type type="void"/>
37723         <ArgumentList>
37724           <Argument name="filter">
37725             <descriptive>
37726                 <description><p>
37727  The criteria to be used when filtering.
37728                 </p></description>
37729             </descriptive>
37730             <Type name="AbstractFilter"/>
37731           </Argument>
37732           <Argument name="successCallback">
37733             <descriptive>
37734                 <description><p>
37735  The method called when the invocation ends successfully.
37736                 </p></description>
37737             </descriptive>
37738             <Type name="MessageArraySuccessCallback"/>
37739           </Argument>
37740           <Argument optional="optional" name="errorCallback">
37741             <descriptive>
37742                 <description><p>
37743  The method called when an error occurs.
37744                 </p></description>
37745             </descriptive>
37746             <Type name="ErrorCallback" nullable="nullable"/>
37747           </Argument>
37748           <Argument optional="optional" name="sort">
37749             <descriptive>
37750                 <description><p>
37751  The sorting mode for the query.
37752                 </p></description>
37753             </descriptive>
37754             <Type name="SortMode" nullable="nullable"/>
37755           </Argument>
37756           <Argument optional="optional" name="limit">
37757             <descriptive>
37758                 <description><p>
37759  The maximum limit the query result is set to as specified by the parameter (It is the same meaning as SQL LIMIT).
37760 If <var>0</var>, there is no limit set.
37761                 </p></description>
37762             </descriptive>
37763             <Type type="unsigned long" nullable="nullable"/>
37764           </Argument>
37765           <Argument optional="optional" name="offset">
37766             <descriptive>
37767                 <description><p>
37768  The offset in the result set, from where the results are listed (It is the same semantics as SQL OFFSET).<br/>The number of results listed is maximum the specified <em>limit</em> parameter. Defaults to<var> 0</var>, meaning no offset.
37769                 </p></description>
37770             </descriptive>
37771             <Type type="unsigned long" nullable="nullable"/>
37772           </Argument>
37773         </ArgumentList>
37774         <Raises>
37775           <RaiseException name="WebAPIException">
37776             <descriptive>
37777                 <description><p>
37778  with error type TypeMismatchError, if any input parameter
37779 is not compatible with the expected type for that parameter.
37780                 </p></description>
37781                 <description><p>
37782  with error type SecurityError, if the application does not have the privilege to call this method.
37783                 </p></description>
37784                 <description><p>
37785  with error type NotSupportedError, if this feature is not supported.
37786                 </p></description>
37787             </descriptive>
37788           </RaiseException>
37789         </Raises>
37790       </Operation>
37791       <Operation name="removeMessages" id="::Messaging::MessageStorage::removeMessages">
37792         <webidl>    void removeMessages(<ref>Message</ref>[] messages,
37793                         optional <ref>SuccessCallback</ref>? successCallback,
37794                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
37795         <descriptive>
37796             <brief>
37797  Removes messages from <em>MessageStorage</em>.
37798             </brief>
37799            <description>
37800             <p>
37801 The errorCallback is launched with these error types:
37802             </p>
37803             <ul>
37804               <li>
37805 InvalidValuesError - If any of the input parameters contain an invalid value              </li>
37806               <li>
37807  UnknownError - If any other error occurs.              </li>
37808             </ul>
37809            </description>
37810             <version>
37811  1.0
37812             </version>
37813             <privilegelevel>
37814  public
37815             </privilegelevel>
37816             <privilege>
37817  http://tizen.org/privilege/messaging.write
37818             </privilege>
37819             <Code> // Define success callback
37820  var service; // Assume messaging service is initialized
37821  var messageStorage = service.messageStorage; 
37822  function successCallback() {
37823    console.log(&quot;Messages were deleted&quot;);
37824  }
37825
37826  // Define error callback
37827  function errorCallback(error) {
37828    console.log(&quot;Cannot delete messages &quot; + error.message);
37829  }
37830
37831  function messageArrayCB(messages) {
37832    if (messages.length > 0) {
37833      messageStorage.removeMessages(messages, successCallback, errorCallback);
37834    } else {
37835      console.log(&quot;No messages found&quot;);
37836    }
37837  }
37838
37839  var filter = new tizen.AttributeFilter(&quot;from&quot;, &quot;CONTAINS&quot;, &quot;2593&quot;);
37840  messageStorage.findMessages(filter, messageArrayCB);
37841  </Code>
37842         </descriptive>
37843         <Type type="void"/>
37844         <ArgumentList>
37845           <Argument name="messages">
37846             <descriptive>
37847                 <description><p>
37848  An array of messages to delete.
37849                 </p></description>
37850             </descriptive>
37851             <Type type="array">
37852               <Type name="Message"/>
37853             </Type>
37854           </Argument>
37855           <Argument optional="optional" name="successCallback">
37856             <descriptive>
37857                 <description><p>
37858  The method called when messages are successfully deleted.
37859                 </p></description>
37860             </descriptive>
37861             <Type name="SuccessCallback" nullable="nullable"/>
37862           </Argument>
37863           <Argument optional="optional" name="errorCallback">
37864             <descriptive>
37865                 <description><p>
37866  The method called when an error occurs.
37867                 </p></description>
37868             </descriptive>
37869             <Type name="ErrorCallback" nullable="nullable"/>
37870           </Argument>
37871         </ArgumentList>
37872         <Raises>
37873           <RaiseException name="WebAPIException">
37874             <descriptive>
37875                 <description><p>
37876  with error type TypeMismatchError, if any input parameter
37877 is not compatible with the expected type for that parameter.
37878                 </p></description>
37879                 <description><p>
37880  with error type SecurityError, if the application does not have the privilege to call this method.
37881                 </p></description>
37882                 <description><p>
37883  with error type NotSupportedError, if this feature is not supported.
37884                 </p></description>
37885             </descriptive>
37886           </RaiseException>
37887         </Raises>
37888       </Operation>
37889       <Operation name="updateMessages" id="::Messaging::MessageStorage::updateMessages">
37890         <webidl>    void updateMessages(<ref>Message</ref>[] messages,
37891                         optional <ref>SuccessCallback</ref>? successCallback,
37892                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
37893         <descriptive>
37894             <brief>
37895  Updates messages in <em>MessageStorage</em>.
37896             </brief>
37897            <description>
37898             <p>
37899 The backend must check whether the required updates can be applied and invoke the errorCallback method, if they cannot be checked.
37900 Depending on the backend synchronization settings, the local changes in <em>MessageStorage</em> can be rewritten as a result of invoking the sync() or syncFolder() methods of the related message service.
37901             </p>
37902             <p>
37903 The errorCallback is launched with these error types:
37904             </p>
37905             <ul>
37906               <li>
37907  InvalidValuesError - If any of the input parameters contains an invalid value.              </li>
37908               <li>
37909  UnknownError - If any other error occurs.              </li>
37910             </ul>
37911            </description>
37912             <version>
37913  1.0
37914             </version>
37915             <privilegelevel>
37916  public
37917             </privilegelevel>
37918             <privilege>
37919  http://tizen.org/privilege/messaging.write
37920             </privilege>
37921             <Code> var service; // Assume messaging service is initialized
37922  var messageStorage = service.messageStorage; 
37923
37924  // Define success callback
37925  function successCallback() {
37926    console.log(&quot;Messages were updated&quot;);
37927  }
37928
37929  // Define error callback
37930  function errorCallback(error) {
37931    console.log(&quot;Cannot update messages &quot; + error.message);
37932  }
37933
37934  function messageArrayCB(messages) {
37935    if (messages.length > 0) {
37936      messages[0].isRead = true;
37937      messageStorage.updateMessages([messages[0]], successCallback, errorCallback);
37938    } else {
37939      console.log(&quot;No messages found&quot;);
37940    }
37941  }
37942
37943  var filter = new tizen.AttributeFilter('isRead', 'EXACTLY', false);
37944  messageStorage.findMessages(filter, messageArrayCB);
37945
37946  </Code>
37947         </descriptive>
37948         <Type type="void"/>
37949         <ArgumentList>
37950           <Argument name="messages">
37951             <descriptive>
37952                 <description><p>
37953  An array to update
37954                 </p></description>
37955             </descriptive>
37956             <Type type="array">
37957               <Type name="Message"/>
37958             </Type>
37959           </Argument>
37960           <Argument optional="optional" name="successCallback">
37961             <descriptive>
37962                 <description><p>
37963  The method called when messages are successfully updated.
37964                 </p></description>
37965             </descriptive>
37966             <Type name="SuccessCallback" nullable="nullable"/>
37967           </Argument>
37968           <Argument optional="optional" name="errorCallback">
37969             <descriptive>
37970                 <description><p>
37971  The method called when an error occurs.
37972                 </p></description>
37973             </descriptive>
37974             <Type name="ErrorCallback" nullable="nullable"/>
37975           </Argument>
37976         </ArgumentList>
37977         <Raises>
37978           <RaiseException name="WebAPIException">
37979             <descriptive>
37980                 <description><p>
37981  with error type TypeMismatchError, if any input parameter
37982 is not compatible with the expected type for that parameter.
37983                 </p></description>
37984                 <description><p>
37985  with error type SecurityError, if the application does not have the privilege to call this method.
37986                 </p></description>
37987                 <description><p>
37988  with error type NotSupportedError, if this feature is not supported.
37989                 </p></description>
37990             </descriptive>
37991           </RaiseException>
37992         </Raises>
37993       </Operation>
37994       <Operation name="findConversations" id="::Messaging::MessageStorage::findConversations">
37995         <webidl>    void findConversations(<ref>AbstractFilter</ref> filter,
37996                            <ref>MessageConversationArraySuccessCallback</ref> successCallback,
37997                            optional <ref>ErrorCallback</ref>? errorCallback,
37998                            optional <ref>SortMode</ref>? sort,
37999                            optional unsigned long? limit,
38000                            optional unsigned long? offset) raises(<ref>WebAPIException</ref>);</webidl>
38001         <descriptive>
38002             <brief>
38003  Finds conversations from <em>MessageStorage</em>.
38004             </brief>
38005            <description>
38006             <p>
38007 The errorCallback is launched with these error types:
38008             </p>
38009             <ul>
38010               <li>
38011  InvalidValuesError - If any of the input parameters contains an invalid value.              </li>
38012               <li>
38013  UnknownError - If any other error occurs.              </li>
38014             </ul>
38015            </description>
38016             <version>
38017  1.0
38018             </version>
38019             <privilegelevel>
38020  public
38021             </privilegelevel>
38022             <privilege>
38023  http://tizen.org/privilege/messaging.read
38024             </privilege>
38025             <Code> var service; // Assume messaging service is initialized
38026  var messageStorage = service.messageStorage; 
38027  function conversationsArrayCB(conversations) {
38028    console.log(conversations.length + &quot; conversation(s) found!&quot;);
38029    for (var i = 0; i &#60; conversations.length; i++) {
38030      console.log(i + &quot;. conversation preview &quot; + conversations[i].preview);
38031    }
38032  }
38033
38034  // Define error callback.
38035  function errorCallback(error) {
38036    console.log(&quot;Cannot query conversations&quot; + error.message);
38037  }
38038
38039  var filter = new tizen.AttributeFilter('from', 'CONTAINS', '2593');
38040  messageStorage.findConversations(filter, conversationsArrayCB, errorCallback);
38041  </Code>
38042         </descriptive>
38043         <Type type="void"/>
38044         <ArgumentList>
38045           <Argument name="filter">
38046             <descriptive>
38047                 <description><p>
38048  The criteria to be used when filtering.
38049                 </p></description>
38050             </descriptive>
38051             <Type name="AbstractFilter"/>
38052           </Argument>
38053           <Argument name="successCallback">
38054             <descriptive>
38055                 <description><p>
38056  The method called when the invocation ends successfully.
38057                 </p></description>
38058             </descriptive>
38059             <Type name="MessageConversationArraySuccessCallback"/>
38060           </Argument>
38061           <Argument optional="optional" name="errorCallback">
38062             <descriptive>
38063                 <description><p>
38064  The method called when an error occurs.
38065                 </p></description>
38066             </descriptive>
38067             <Type name="ErrorCallback" nullable="nullable"/>
38068           </Argument>
38069           <Argument optional="optional" name="sort">
38070             <descriptive>
38071                 <description><p>
38072  The sorting rules for the query.
38073                 </p></description>
38074             </descriptive>
38075             <Type name="SortMode" nullable="nullable"/>
38076           </Argument>
38077           <Argument optional="optional" name="limit">
38078             <descriptive>
38079                 <description><p>
38080  The maximum limit the query result is set to as specified by the parameter (It is the same meaning as SQL LIMIT).
38081 If set to <var>0</var>, there is no limit set.
38082                 </p></description>
38083             </descriptive>
38084             <Type type="unsigned long" nullable="nullable"/>
38085           </Argument>
38086           <Argument optional="optional" name="offset">
38087             <descriptive>
38088                 <description><p>
38089  The offset in the result set, from where the results are listed (It is the same semantics as SQL OFFSET).<br/>The number of results listed is maximum the specified <em>limit</em> parameter. Defaults to<var> 0</var>, meaning no offset.
38090                 </p></description>
38091             </descriptive>
38092             <Type type="unsigned long" nullable="nullable"/>
38093           </Argument>
38094         </ArgumentList>
38095         <Raises>
38096           <RaiseException name="WebAPIException">
38097             <descriptive>
38098                 <description><p>
38099  with error type TypeMismatchError, if any input parameter
38100 is not compatible with the expected type for that parameter.
38101                 </p></description>
38102                 <description><p>
38103  with error type SecurityError, if the application does not have the privilege to call this method.
38104                 </p></description>
38105                 <description><p>
38106  with error type NotSupportedError, if this feature is not supported.
38107                 </p></description>
38108             </descriptive>
38109           </RaiseException>
38110         </Raises>
38111       </Operation>
38112       <Operation name="removeConversations" id="::Messaging::MessageStorage::removeConversations">
38113         <webidl>    void removeConversations(<ref>MessageConversation</ref>[] conversations,
38114                              optional <ref>SuccessCallback</ref>? successCallback,
38115                              optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
38116         <descriptive>
38117             <brief>
38118  Removes conversations from <em>MessageStorage</em>.
38119             </brief>
38120            <description>
38121             <p>
38122 The errorCallback is launched with these error types:
38123             </p>
38124             <ul>
38125               <li>
38126  InvalidValuesError - If any of the input parameters contains an invalid value.              </li>
38127               <li>
38128  UnknownError - If any other error occurs.              </li>
38129             </ul>
38130            </description>
38131             <version>
38132  1.0
38133             </version>
38134             <privilegelevel>
38135  public
38136             </privilegelevel>
38137             <privilege>
38138  http://tizen.org/privilege/messaging.write
38139             </privilege>
38140             <Code> var service; // Assume messaging service is initialized
38141  var messageStorage = service.messageStorage; 
38142  // Define success callback.
38143  function successCallback() {
38144    console.log(&quot;Conversations deleted&quot;);
38145  }
38146
38147  // Define error callback.
38148  function errorCallback(error) {
38149    console.log(&quot;Cannot delete conversations &quot; + error.message);
38150  }
38151
38152  function conversationsArrayCB(conversations) {
38153    if (conversations.length > 0) {
38154      messageStorage.removeConversations(conversations, successCallback,
38155                                                        errorCallback);
38156    } else {
38157      console.log(&quot;No conversations found&quot;);
38158    }
38159    console.log(&quot;Deleted &quot; + conversations.length + &quot; conversation(s)&quot;);
38160  }
38161
38162  // Define error callback.
38163  function queryErrorCB(error) {
38164    console.log(&quot;Cannot query conversations&quot; + error.message);
38165  }
38166
38167  var filter = new tizen.AttributeFilter('from', 'CONTAINS', '2593');
38168  messageStorage.findConversations(filter, conversationsArrayCB,
38169                                           queryErrorCB);
38170  </Code>
38171         </descriptive>
38172         <Type type="void"/>
38173         <ArgumentList>
38174           <Argument name="conversations">
38175             <descriptive>
38176                 <description><p>
38177  An array of conversations to delete.
38178                 </p></description>
38179             </descriptive>
38180             <Type type="array">
38181               <Type name="MessageConversation"/>
38182             </Type>
38183           </Argument>
38184           <Argument optional="optional" name="successCallback">
38185             <descriptive>
38186                 <description><p>
38187  The method called when conversations are successfully deleted.
38188                 </p></description>
38189             </descriptive>
38190             <Type name="SuccessCallback" nullable="nullable"/>
38191           </Argument>
38192           <Argument optional="optional" name="errorCallback">
38193             <descriptive>
38194                 <description><p>
38195  The method called when an error occurs.
38196                 </p></description>
38197             </descriptive>
38198             <Type name="ErrorCallback" nullable="nullable"/>
38199           </Argument>
38200         </ArgumentList>
38201         <Raises>
38202           <RaiseException name="WebAPIException">
38203             <descriptive>
38204                 <description><p>
38205  with error type TypeMismatchError, if any input parameter
38206 is not compatible with the expected type for that parameter.
38207                 </p></description>
38208                 <description><p>
38209  with error type SecurityError, if the application does not have the privilege to call this method.
38210                 </p></description>
38211                 <description><p>
38212  with error type NotSupportedError, if this feature is not supported.
38213                 </p></description>
38214             </descriptive>
38215           </RaiseException>
38216         </Raises>
38217       </Operation>
38218       <Operation name="findFolders" id="::Messaging::MessageStorage::findFolders">
38219         <webidl>    void findFolders(<ref>AbstractFilter</ref> filter,
38220                      <ref>MessageFolderArraySuccessCallback</ref> successCallback,
38221                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
38222         <descriptive>
38223             <brief>
38224  Queries folders from MessageStorage.
38225             </brief>
38226            <description>
38227             <p>
38228 The errorCallback is launched with these error types:
38229             </p>
38230             <ul>
38231               <li>
38232  InvalidValuesError: If any of the input parameters contains an invalid value.              </li>
38233               <li>
38234  UnknownError: In any other error case.               </li>
38235             </ul>
38236            </description>
38237             <version>
38238  1.0
38239             </version>
38240             <privilegelevel>
38241  public
38242             </privilegelevel>
38243             <privilege>
38244  http://tizen.org/privilege/messaging.read
38245             </privilege>
38246             <Code> var service; // Assume messaging service is initialized
38247  var messageStorage = service.messageStorage; 
38248  function folderArrayCB(folders) {
38249    console.log(folders.length + &quot; folders(s) found!&quot;);
38250    for (var i = 0; i &#60; folders.length; i++) {
38251      console.log(i + &quot;, folder: &quot; + folders[i].name);
38252    }
38253  }
38254  var filter = new tizen.AttributeFilter(&quot;serviceId&quot;, &quot;EXACTLY&quot;, service.id);
38255  messageStorage.findFolders(filter, folderArrayCB);
38256  </Code>
38257         </descriptive>
38258         <Type type="void"/>
38259         <ArgumentList>
38260           <Argument name="filter">
38261             <descriptive>
38262                 <description><p>
38263  The criteria used when filtering.
38264                 </p></description>
38265             </descriptive>
38266             <Type name="AbstractFilter"/>
38267           </Argument>
38268           <Argument name="successCallback">
38269             <descriptive>
38270                 <description><p>
38271  The method called when the invocation ends successfully.
38272                 </p></description>
38273             </descriptive>
38274             <Type name="MessageFolderArraySuccessCallback"/>
38275           </Argument>
38276           <Argument optional="optional" name="errorCallback">
38277             <descriptive>
38278                 <description><p>
38279  The method called when an error occurs.
38280                 </p></description>
38281             </descriptive>
38282             <Type name="ErrorCallback" nullable="nullable"/>
38283           </Argument>
38284         </ArgumentList>
38285         <Raises>
38286           <RaiseException name="WebAPIException">
38287             <descriptive>
38288                 <description><p>
38289  with error type TypeMismatchError, if any input parameter
38290 is not compatible with the expected type for that parameter.
38291                 </p></description>
38292                 <description><p>
38293  with error type SecurityError, if the application does not have the privilege to call this method.
38294                 </p></description>
38295                 <description><p>
38296  with error type NotSupportedError, if this feature is not supported.
38297                 </p></description>
38298             </descriptive>
38299           </RaiseException>
38300         </Raises>
38301       </Operation>
38302       <Operation name="addMessagesChangeListener" id="::Messaging::MessageStorage::addMessagesChangeListener">
38303         <webidl>    long addMessagesChangeListener(<ref>MessagesChangeCallback</ref> messagesChangeCallback,
38304                                    optional <ref>AbstractFilter</ref>? filter) raises(<ref>WebAPIException</ref>);</webidl>
38305         <descriptive>
38306             <brief>
38307  Adds a listener to subscribe to notification for MessageStorage changes.
38308             </brief>
38309            <description>
38310             <p>
38311 The errorCallback is launched with these error types:
38312             </p>
38313             <ul>
38314               <li>
38315  InvalidValuesError - If any of the input parameters contains an invalid value.              </li>
38316               <li>
38317  UnknownError - If any other error occurs.               </li>
38318             </ul>
38319            </description>
38320             <version>
38321  1.0
38322             </version>
38323             <privilegelevel>
38324  public
38325             </privilegelevel>
38326             <privilege>
38327  http://tizen.org/privilege/messaging.read
38328             </privilege>
38329             <Code> var service; // Assume messaging service is initialized
38330  var messageStorage = service.messageStorage; 
38331  var messageChangeCallback = {
38332        messagesupdated: function(messages) {
38333          console.log(messages.length + &quot; message(s) updated&quot;);},
38334        messagesadded: function(messages) {
38335          console.log(messages.length + &quot; message(s) added&quot;);},
38336        messagesremoved: function(messages) {
38337          console.log(messages.length + &quot; message(s) removed&quot;);}
38338  };
38339
38340  messageStorage.addMessagesChangeListener(messageChangeCallback);
38341  </Code>
38342         </descriptive>
38343         <Type type="long">
38344           <descriptive>
38345               <description><p>
38346  long The subscription identifier.
38347               </p></description>
38348           </descriptive>
38349         </Type>
38350         <ArgumentList>
38351           <Argument name="messagesChangeCallback">
38352             <descriptive>
38353                 <description><p>
38354  Callback that is called when the MessageStorage is changed.
38355                 </p></description>
38356             </descriptive>
38357             <Type name="MessagesChangeCallback"/>
38358           </Argument>
38359           <Argument optional="optional" name="filter">
38360             <descriptive>
38361                 <description><p>
38362  The criteria to be used when filtering.
38363                 </p></description>
38364             </descriptive>
38365             <Type name="AbstractFilter" nullable="nullable"/>
38366           </Argument>
38367         </ArgumentList>
38368         <Raises>
38369           <RaiseException name="WebAPIException">
38370             <descriptive>
38371                 <description><p>
38372  with error type TypeMismatchError, if any input parameter
38373 is not compatible with the expected type for that parameter.
38374                 </p></description>
38375                 <description><p>
38376  with error type SecurityError, if the application does not have the privilege to call this method.
38377                 </p></description>
38378                 <description><p>
38379  with error type NotSupportedError, if this feature is not supported.
38380                 </p></description>
38381             </descriptive>
38382           </RaiseException>
38383         </Raises>
38384       </Operation>
38385       <Operation name="addConversationsChangeListener" id="::Messaging::MessageStorage::addConversationsChangeListener">
38386         <webidl>    long addConversationsChangeListener(<ref>MessageConversationsChangeCallback</ref> conversationsChangeCallback,
38387                                         optional <ref>AbstractFilter</ref>? filter) raises(<ref>WebAPIException</ref>);</webidl>
38388         <descriptive>
38389             <brief>
38390  Adds a listener to subscribe to notifications for MessageConversation changes.
38391             </brief>
38392            <description>
38393             <p>
38394 The errorCallback is launched with these error types:
38395             </p>
38396             <ul>
38397               <li>
38398  InvalidValuesError - If any of the input parameters contains an invalid value.              </li>
38399               <li>
38400  UnknownError - If any other error occurs.              </li>
38401             </ul>
38402            </description>
38403             <version>
38404  1.0
38405             </version>
38406             <privilegelevel>
38407  public
38408             </privilegelevel>
38409             <privilege>
38410  http://tizen.org/privilege/messaging.read
38411             </privilege>
38412             <Code> var service; // Assume messaging service is initialized
38413  var messageStorage = service.messageStorage; 
38414  var conversationChangeCB = {
38415        conversationsupdated: function(conversations) {
38416          console.log(conversations.length + &quot; conversations(s) updated&quot;);},
38417        conversationsadded: function(conversations) {
38418          console.log(conversations.length + &quot; conversations(s) added&quot;);},
38419        conversationsremoved: function(conversations) {
38420          console.log(conversations.length + &quot; conversations(s) removed&quot;);}
38421  };
38422
38423  messageStorage.addConversationsChangeListener(conversationChangeCB);
38424  </Code>
38425         </descriptive>
38426         <Type type="long">
38427           <descriptive>
38428               <description><p>
38429  long The subscription identifier.
38430               </p></description>
38431           </descriptive>
38432         </Type>
38433         <ArgumentList>
38434           <Argument name="conversationsChangeCallback">
38435             <descriptive>
38436                 <description><p>
38437  Callback that is called when the MessageStorage is changed.
38438                 </p></description>
38439             </descriptive>
38440             <Type name="MessageConversationsChangeCallback"/>
38441           </Argument>
38442           <Argument optional="optional" name="filter">
38443             <descriptive>
38444                 <description><p>
38445  The criteria to be used when filtering.
38446                 </p></description>
38447             </descriptive>
38448             <Type name="AbstractFilter" nullable="nullable"/>
38449           </Argument>
38450         </ArgumentList>
38451         <Raises>
38452           <RaiseException name="WebAPIException">
38453             <descriptive>
38454                 <description><p>
38455  with error type TypeMismatchError, if any input parameter
38456 is not compatible with the expected type for that parameter.
38457                 </p></description>
38458                 <description><p>
38459  with error type SecurityError, if the application does not have the privilege to call this method.
38460                 </p></description>
38461                 <description><p>
38462  with error type NotSupportedError, if this feature is not supported.
38463                 </p></description>
38464             </descriptive>
38465           </RaiseException>
38466         </Raises>
38467       </Operation>
38468       <Operation name="addFoldersChangeListener" id="::Messaging::MessageStorage::addFoldersChangeListener">
38469         <webidl>    long addFoldersChangeListener(<ref>MessageFoldersChangeCallback</ref> foldersChangeCallback,
38470                                   optional <ref>AbstractFilter</ref>? filter) raises(<ref>WebAPIException</ref>);</webidl>
38471         <descriptive>
38472             <brief>
38473  Adds a listener to subscribe to notifications for MessageFolder changes.
38474             </brief>
38475            <description>
38476             <p>
38477 The errorCallback is launched with these error types:
38478             </p>
38479             <ul>
38480               <li>
38481  InvalidValuesError - If any of the input parameters contains an invalid value.              </li>
38482               <li>
38483  UnknownError - If any other error occurs.              </li>
38484             </ul>
38485            </description>
38486             <version>
38487  1.0
38488             </version>
38489             <privilegelevel>
38490  public
38491             </privilegelevel>
38492             <privilege>
38493  http://tizen.org/privilege/messaging.read
38494             </privilege>
38495             <Code> var service; // Assume messaging service is initialized
38496  var messageStorage = service.messageStorage; 
38497  var folderChangeCB = {
38498        foldersupdated: function(folders) {
38499          console.log(folders.length + &quot; folders(s) updated&quot;);},
38500        foldersadded: function(folders) {
38501          console.log(folders.length + &quot; folders(s) added&quot;);},
38502        foldersremoved: function(folders) {
38503          console.log(folders.length + &quot; folders(s) removed&quot;);}
38504  };
38505
38506  messageStorage.addFoldersChangeListener(folderChangeCB);
38507  </Code>
38508         </descriptive>
38509         <Type type="long">
38510           <descriptive>
38511               <description><p>
38512  long The subscription identifier.
38513               </p></description>
38514           </descriptive>
38515         </Type>
38516         <ArgumentList>
38517           <Argument name="foldersChangeCallback">
38518             <descriptive>
38519                 <description><p>
38520  Callback that is called when the MessageStorage is changed.
38521                 </p></description>
38522             </descriptive>
38523             <Type name="MessageFoldersChangeCallback"/>
38524           </Argument>
38525           <Argument optional="optional" name="filter">
38526             <descriptive>
38527                 <description><p>
38528  The criteria to be used when filtering.
38529                 </p></description>
38530             </descriptive>
38531             <Type name="AbstractFilter" nullable="nullable"/>
38532           </Argument>
38533         </ArgumentList>
38534         <Raises>
38535           <RaiseException name="WebAPIException">
38536             <descriptive>
38537                 <description><p>
38538  with error type TypeMismatchError, if any input parameter
38539 is not compatible with the expected type for that parameter.
38540                 </p></description>
38541                 <description><p>
38542  with error type SecurityError, if the application does not have the privilege to call this method.
38543                 </p></description>
38544                 <description><p>
38545  with error type NotSupportedError, if this feature is not supported.
38546                 </p></description>
38547             </descriptive>
38548           </RaiseException>
38549         </Raises>
38550       </Operation>
38551       <Operation name="removeChangeListener" id="::Messaging::MessageStorage::removeChangeListener">
38552         <webidl>    void removeChangeListener(long watchId) raises(<ref>WebAPIException</ref>);</webidl>
38553         <descriptive>
38554             <brief>
38555  Removes a listener to unsubscribe from receiving message notifications.
38556             </brief>
38557            <description>
38558             <p>
38559 The errorCallback is launched with these error types:
38560             </p>
38561             <ul>
38562               <li>
38563  InvalidValuesError - If any of the input parameters contains an invalid value.              </li>
38564               <li>
38565  UnknownError - If any other error occurs.              </li>
38566             </ul>
38567             <p>
38568 If the <em>subscriptionId </em>argument is valid and corresponds to a subscription already in place, the subscription process must stop immediately and further <em>MessagingStorage </em>change notifications must not be invoked.
38569 If the <em>subscriptionId argument does not correspond to a valid subscription, the method will return without any further action.
38570 </em>            </p>
38571            </description>
38572             <version>
38573  1.0
38574             </version>
38575             <privilegelevel>
38576  public
38577             </privilegelevel>
38578             <privilege>
38579  http://tizen.org/privilege/messaging.read
38580             </privilege>
38581             <Code> var watchId;
38582  var service; // Assume messaging service is initialized
38583  var messageStorage = service.messageStorage; 
38584  var folderChangeCB = {
38585        foldersupdated: function(folders) {
38586          console.log(folders.length + &quot; folders(s) updated. Cancel watching.&quot;);
38587          messageStorage.removeChangeListener(watchId); },
38588        foldersadded: function(folders) {
38589          console.log(folders.length + &quot; folders(s) added. Cancel watching.&quot;);
38590          messageStorage.removeChangeListener(watchId); },
38591        foldersremoved: function(folders) {
38592          console.log(folders.length + &quot; folders(s) removed. Cancel watching.&quot;);
38593          messageStorage.removeChangeListener(watchId);}
38594  };
38595
38596  watchId = messageStorage.addFoldersChangeListener(folderChangeCB);
38597
38598  </Code>
38599         </descriptive>
38600         <Type type="void"/>
38601         <ArgumentList>
38602           <Argument name="watchId">
38603             <descriptive>
38604                 <description><p>
38605  An identifier of the subscription returned by addMessagesChangeListener, addConversationsChangeListener or
38606 addFoldersChangeListener methods.
38607                 </p></description>
38608             </descriptive>
38609             <Type type="long"/>
38610           </Argument>
38611         </ArgumentList>
38612         <Raises>
38613           <RaiseException name="WebAPIException">
38614             <descriptive>
38615                 <description><p>
38616  with error type TypeMismatchError, if any input parameter
38617 is not compatible with the expected type for that parameter.
38618                 </p></description>
38619                 <description><p>
38620  with error type SecurityError, if the application does not have the privilege to call this method.
38621                 </p></description>
38622                 <description><p>
38623  with error type NotSupportedError, if this feature is not supported.
38624                 </p></description>
38625             </descriptive>
38626           </RaiseException>
38627         </Raises>
38628       </Operation>
38629     </Interface>
38630     <Interface name="MessageArraySuccessCallback" id="::Messaging::MessageArraySuccessCallback">
38631       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface MessageArraySuccessCallback {
38632
38633     void onsuccess(<ref>Message</ref>[] messages);
38634   };</webidl>
38635       <descriptive>
38636           <brief>
38637  findMessages specific success callback.
38638           </brief>
38639          <description>
38640           <p>
38641 This callback interface specifies a success callback function,
38642 taking a list of messages that satisfy the filtering criteria as the input argument.
38643 It is used in the findMessages asynchronous operation.
38644           </p>
38645          </description>
38646           <version>
38647  1.0
38648           </version>
38649       </descriptive>
38650       <ExtendedAttributeList>
38651         <ExtendedAttribute name="Callback" value="FunctionOnly">
38652           <webidl>Callback</webidl>
38653         </ExtendedAttribute>
38654         <ExtendedAttribute name="NoInterfaceObject">
38655           <webidl> NoInterfaceObject</webidl>
38656         </ExtendedAttribute>
38657       </ExtendedAttributeList>
38658       <Operation name="onsuccess" id="::Messaging::MessageArraySuccessCallback::onsuccess">
38659         <webidl>    void onsuccess(<ref>Message</ref>[] messages);</webidl>
38660         <descriptive>
38661             <brief>
38662  Method invoked when an asynchronous query completes successfully.
38663             </brief>
38664             <version>
38665  1.0
38666             </version>
38667         </descriptive>
38668         <Type type="void"/>
38669         <ArgumentList>
38670           <Argument name="messages">
38671             <descriptive>
38672                 <description><p>
38673  Array of messages that satisfy the query.
38674                 </p></description>
38675             </descriptive>
38676             <Type type="array">
38677               <Type name="Message"/>
38678             </Type>
38679           </Argument>
38680         </ArgumentList>
38681       </Operation>
38682     </Interface>
38683     <Interface name="MessageConversationArraySuccessCallback" id="::Messaging::MessageConversationArraySuccessCallback">
38684       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface MessageConversationArraySuccessCallback {
38685
38686     void onsuccess(<ref>MessageConversation</ref>[] conversations);
38687   };</webidl>
38688       <descriptive>
38689           <brief>
38690  findConversations specific success callback.
38691           </brief>
38692          <description>
38693           <p>
38694 This callback interface specifies a success callback function,
38695 taking a list of conversations that satisfy the filtering criteria as the input argument.
38696 It is used in the findConversations asynchronous operation.
38697           </p>
38698          </description>
38699           <version>
38700  1.0
38701           </version>
38702       </descriptive>
38703       <ExtendedAttributeList>
38704         <ExtendedAttribute name="Callback" value="FunctionOnly">
38705           <webidl>Callback</webidl>
38706         </ExtendedAttribute>
38707         <ExtendedAttribute name="NoInterfaceObject">
38708           <webidl> NoInterfaceObject</webidl>
38709         </ExtendedAttribute>
38710       </ExtendedAttributeList>
38711       <Operation name="onsuccess" id="::Messaging::MessageConversationArraySuccessCallback::onsuccess">
38712         <webidl>    void onsuccess(<ref>MessageConversation</ref>[] conversations);</webidl>
38713         <descriptive>
38714             <brief>
38715  Method invoked when an asynchronous query completes successfully.
38716             </brief>
38717             <version>
38718  1.0
38719             </version>
38720         </descriptive>
38721         <Type type="void"/>
38722         <ArgumentList>
38723           <Argument name="conversations">
38724             <descriptive>
38725                 <description><p>
38726  Array of conversations that satisfy the query.
38727                 </p></description>
38728             </descriptive>
38729             <Type type="array">
38730               <Type name="MessageConversation"/>
38731             </Type>
38732           </Argument>
38733         </ArgumentList>
38734       </Operation>
38735     </Interface>
38736     <Interface name="MessageFolderArraySuccessCallback" id="::Messaging::MessageFolderArraySuccessCallback">
38737       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface MessageFolderArraySuccessCallback {
38738
38739     void onsuccess(<ref>MessageFolder</ref>[] folders);
38740   };</webidl>
38741       <descriptive>
38742           <brief>
38743  findFolders specific success callback.
38744           </brief>
38745          <description>
38746           <p>
38747 This callback interface specifies a success callback function,
38748 taking a list of folders that satisfy the filtering criteria as the input argument.
38749 It is used in the findFolders asynchronous operation.
38750           </p>
38751          </description>
38752           <version>
38753  1.0
38754           </version>
38755       </descriptive>
38756       <ExtendedAttributeList>
38757         <ExtendedAttribute name="Callback" value="FunctionOnly">
38758           <webidl>Callback</webidl>
38759         </ExtendedAttribute>
38760         <ExtendedAttribute name="NoInterfaceObject">
38761           <webidl> NoInterfaceObject</webidl>
38762         </ExtendedAttribute>
38763       </ExtendedAttributeList>
38764       <Operation name="onsuccess" id="::Messaging::MessageFolderArraySuccessCallback::onsuccess">
38765         <webidl>    void onsuccess(<ref>MessageFolder</ref>[] folders);</webidl>
38766         <descriptive>
38767             <brief>
38768  Method invoked when an asynchronous query completes successfully.
38769             </brief>
38770             <version>
38771  1.0
38772             </version>
38773         </descriptive>
38774         <Type type="void"/>
38775         <ArgumentList>
38776           <Argument name="folders">
38777             <descriptive>
38778                 <description><p>
38779  Array of folders that satisfy the query.
38780                 </p></description>
38781             </descriptive>
38782             <Type type="array">
38783               <Type name="MessageFolder"/>
38784             </Type>
38785           </Argument>
38786         </ArgumentList>
38787       </Operation>
38788     </Interface>
38789     <Interface name="MessagesChangeCallback" id="::Messaging::MessagesChangeCallback">
38790       <webidl>  [Callback, NoInterfaceObject] interface MessagesChangeCallback {
38791
38792     void messagesadded(<ref>Message</ref>[] addedMessages);
38793
38794     void messagesupdated(<ref>Message</ref>[] updatedMessages);
38795
38796     void messagesremoved(<ref>Message</ref>[] removedMessages);
38797   };</webidl>
38798       <descriptive>
38799           <brief>
38800  watchMessagesChanges callback.
38801           </brief>
38802          <description>
38803           <p>
38804 This callback interface specifies a callback as a set of functions that will be
38805 invoked when messages from MessageStorage change. Each function takes a list of messages as the input argument.
38806           </p>
38807          </description>
38808           <version>
38809  1.0
38810           </version>
38811       </descriptive>
38812       <ExtendedAttributeList>
38813         <ExtendedAttribute name="Callback">
38814           <webidl>Callback</webidl>
38815         </ExtendedAttribute>
38816         <ExtendedAttribute name="NoInterfaceObject">
38817           <webidl> NoInterfaceObject</webidl>
38818         </ExtendedAttribute>
38819       </ExtendedAttributeList>
38820       <Operation name="messagesadded" id="::Messaging::MessagesChangeCallback::messagesadded">
38821         <webidl>    void messagesadded(<ref>Message</ref>[] addedMessages);</webidl>
38822         <descriptive>
38823             <brief>
38824  Method invoked when messages are added to the MessageStorage.
38825             </brief>
38826             <version>
38827  1.0
38828             </version>
38829         </descriptive>
38830         <Type type="void"/>
38831         <ArgumentList>
38832           <Argument name="addedMessages">
38833             <descriptive>
38834                 <description><p>
38835  Array of added messages.
38836                 </p></description>
38837             </descriptive>
38838             <Type type="array">
38839               <Type name="Message"/>
38840             </Type>
38841           </Argument>
38842         </ArgumentList>
38843       </Operation>
38844       <Operation name="messagesupdated" id="::Messaging::MessagesChangeCallback::messagesupdated">
38845         <webidl>    void messagesupdated(<ref>Message</ref>[] updatedMessages);</webidl>
38846         <descriptive>
38847             <brief>
38848  Method invoked when messages are updated in MessageStorage.
38849             </brief>
38850             <version>
38851  1.0
38852             </version>
38853         </descriptive>
38854         <Type type="void"/>
38855         <ArgumentList>
38856           <Argument name="updatedMessages">
38857             <descriptive>
38858                 <description><p>
38859  Array of updated messages.
38860                 </p></description>
38861             </descriptive>
38862             <Type type="array">
38863               <Type name="Message"/>
38864             </Type>
38865           </Argument>
38866         </ArgumentList>
38867       </Operation>
38868       <Operation name="messagesremoved" id="::Messaging::MessagesChangeCallback::messagesremoved">
38869         <webidl>    void messagesremoved(<ref>Message</ref>[] removedMessages);</webidl>
38870         <descriptive>
38871             <brief>
38872  Method invoked when messages are removed from MessageStorage.
38873             </brief>
38874             <version>
38875  1.0
38876             </version>
38877         </descriptive>
38878         <Type type="void"/>
38879         <ArgumentList>
38880           <Argument name="removedMessages">
38881             <descriptive>
38882                 <description><p>
38883  Array of removed messages. It contains only MessageId attribute.
38884                 </p></description>
38885             </descriptive>
38886             <Type type="array">
38887               <Type name="Message"/>
38888             </Type>
38889           </Argument>
38890         </ArgumentList>
38891       </Operation>
38892     </Interface>
38893     <Interface name="MessageConversationsChangeCallback" id="::Messaging::MessageConversationsChangeCallback">
38894       <webidl>  [Callback, NoInterfaceObject] interface MessageConversationsChangeCallback {
38895
38896     void conversationsadded(<ref>MessageConversation</ref>[] addedConversations);
38897
38898     void conversationsupdated(<ref>MessageConversation</ref>[] updatedConversations);
38899
38900     void conversationsremoved(<ref>MessageConversation</ref>[] removedConversations);
38901   };</webidl>
38902       <descriptive>
38903           <brief>
38904  watchConversationsChanges callback.
38905           </brief>
38906          <description>
38907           <p>
38908 This callback interface specifies a callback as a set of functions that will be
38909 invoked when conversations from MessageStorage change. Each function takes a list of conversations as the input argument.
38910           </p>
38911          </description>
38912           <version>
38913  1.0
38914           </version>
38915       </descriptive>
38916       <ExtendedAttributeList>
38917         <ExtendedAttribute name="Callback">
38918           <webidl>Callback</webidl>
38919         </ExtendedAttribute>
38920         <ExtendedAttribute name="NoInterfaceObject">
38921           <webidl> NoInterfaceObject</webidl>
38922         </ExtendedAttribute>
38923       </ExtendedAttributeList>
38924       <Operation name="conversationsadded" id="::Messaging::MessageConversationsChangeCallback::conversationsadded">
38925         <webidl>    void conversationsadded(<ref>MessageConversation</ref>[] addedConversations);</webidl>
38926         <descriptive>
38927             <brief>
38928  Method invoked when conversations are added to MessageStorage.
38929             </brief>
38930             <version>
38931  1.0
38932             </version>
38933         </descriptive>
38934         <Type type="void"/>
38935         <ArgumentList>
38936           <Argument name="addedConversations">
38937             <descriptive>
38938                 <description><p>
38939  Array of added conversations.
38940                 </p></description>
38941             </descriptive>
38942             <Type type="array">
38943               <Type name="MessageConversation"/>
38944             </Type>
38945           </Argument>
38946         </ArgumentList>
38947       </Operation>
38948       <Operation name="conversationsupdated" id="::Messaging::MessageConversationsChangeCallback::conversationsupdated">
38949         <webidl>    void conversationsupdated(<ref>MessageConversation</ref>[] updatedConversations);</webidl>
38950         <descriptive>
38951             <brief>
38952  Method invoked when conversations are updated in MessageStorage.
38953             </brief>
38954             <version>
38955  1.0
38956             </version>
38957         </descriptive>
38958         <Type type="void"/>
38959         <ArgumentList>
38960           <Argument name="updatedConversations">
38961             <descriptive>
38962                 <description><p>
38963  Array of updated conversations.
38964                 </p></description>
38965             </descriptive>
38966             <Type type="array">
38967               <Type name="MessageConversation"/>
38968             </Type>
38969           </Argument>
38970         </ArgumentList>
38971       </Operation>
38972       <Operation name="conversationsremoved" id="::Messaging::MessageConversationsChangeCallback::conversationsremoved">
38973         <webidl>    void conversationsremoved(<ref>MessageConversation</ref>[] removedConversations);</webidl>
38974         <descriptive>
38975             <brief>
38976  Method invoked when conversations are removed from MessageStorage.
38977             </brief>
38978             <version>
38979  1.0
38980             </version>
38981         </descriptive>
38982         <Type type="void"/>
38983         <ArgumentList>
38984           <Argument name="removedConversations">
38985             <descriptive>
38986                 <description><p>
38987  Array of removed conversations. It contains only MessageConvId attribute.
38988                 </p></description>
38989             </descriptive>
38990             <Type type="array">
38991               <Type name="MessageConversation"/>
38992             </Type>
38993           </Argument>
38994         </ArgumentList>
38995       </Operation>
38996     </Interface>
38997     <Interface name="MessageFoldersChangeCallback" id="::Messaging::MessageFoldersChangeCallback">
38998       <webidl>  [Callback, NoInterfaceObject] interface MessageFoldersChangeCallback {
38999  
39000     void foldersadded(<ref>MessageFolder</ref>[] addedFolders);
39001
39002     void foldersupdated(<ref>MessageFolder</ref>[] updatedFolders);
39003
39004     void foldersremoved(<ref>MessageFolder</ref>[] removedFolders);
39005   };</webidl>
39006       <descriptive>
39007           <brief>
39008  This callback interface specifies a callback as a set of functions that are invoked when message folders from <em>MessageStorage </em>change. Each function takes a list of folders as the input argument.
39009           </brief>
39010           <version>
39011  1.0
39012           </version>
39013       </descriptive>
39014       <ExtendedAttributeList>
39015         <ExtendedAttribute name="Callback">
39016           <webidl>Callback</webidl>
39017         </ExtendedAttribute>
39018         <ExtendedAttribute name="NoInterfaceObject">
39019           <webidl> NoInterfaceObject</webidl>
39020         </ExtendedAttribute>
39021       </ExtendedAttributeList>
39022       <Operation name="foldersadded" id="::Messaging::MessageFoldersChangeCallback::foldersadded">
39023         <webidl>    void foldersadded(<ref>MessageFolder</ref>[] addedFolders);</webidl>
39024         <descriptive>
39025             <brief>
39026  Called when folders are added to <em>MessageStorage</em>.
39027             </brief>
39028             <version>
39029  1.0
39030             </version>
39031         </descriptive>
39032         <Type type="void"/>
39033         <ArgumentList>
39034           <Argument name="addedFolders">
39035             <descriptive>
39036                 <description><p>
39037  An array of added folders.
39038                 </p></description>
39039             </descriptive>
39040             <Type type="array">
39041               <Type name="MessageFolder"/>
39042             </Type>
39043           </Argument>
39044         </ArgumentList>
39045       </Operation>
39046       <Operation name="foldersupdated" id="::Messaging::MessageFoldersChangeCallback::foldersupdated">
39047         <webidl>    void foldersupdated(<ref>MessageFolder</ref>[] updatedFolders);</webidl>
39048         <descriptive>
39049             <brief>
39050  Called when folders are updated in <em>MessageStorage</em>.
39051             </brief>
39052             <version>
39053  1.0
39054             </version>
39055         </descriptive>
39056         <Type type="void"/>
39057         <ArgumentList>
39058           <Argument name="updatedFolders">
39059             <descriptive>
39060                 <description><p>
39061  An array of updated folders.
39062                 </p></description>
39063             </descriptive>
39064             <Type type="array">
39065               <Type name="MessageFolder"/>
39066             </Type>
39067           </Argument>
39068         </ArgumentList>
39069       </Operation>
39070       <Operation name="foldersremoved" id="::Messaging::MessageFoldersChangeCallback::foldersremoved">
39071         <webidl>    void foldersremoved(<ref>MessageFolder</ref>[] removedFolders);</webidl>
39072         <descriptive>
39073             <brief>
39074  Called when folders are removed from <em>MessageStorage</em>.
39075             </brief>
39076             <version>
39077  1.0
39078             </version>
39079         </descriptive>
39080         <Type type="void"/>
39081         <ArgumentList>
39082           <Argument name="removedFolders">
39083             <descriptive>
39084                 <description><p>
39085  Array of removed folders. It contains only MessageFolderId attribute.
39086                 </p></description>
39087             </descriptive>
39088             <Type type="array">
39089               <Type name="MessageFolder"/>
39090             </Type>
39091           </Argument>
39092         </ArgumentList>
39093       </Operation>
39094     </Interface>
39095     <Interface name="MessageConversation" id="::Messaging::MessageConversation">
39096       <webidl>  [NoInterfaceObject] interface MessageConversation {
39097
39098     readonly attribute <ref>MessageConvId</ref> id;
39099
39100     readonly attribute <ref>MessageServiceTag</ref> type;
39101
39102     readonly attribute Date timestamp;
39103      
39104     readonly attribute unsigned long messageCount;
39105
39106     readonly attribute unsigned long unreadMessages;
39107
39108     readonly attribute DOMString preview;
39109
39110     readonly attribute DOMString subject;
39111
39112     readonly attribute boolean isRead;
39113
39114     readonly attribute DOMString from;
39115
39116     readonly attribute DOMString[] to;
39117
39118     readonly attribute DOMString[] cc;
39119
39120     readonly attribute DOMString[] bcc;
39121
39122     readonly attribute <ref>MessageId</ref> lastMessageId;
39123   };</webidl>
39124       <descriptive>
39125           <brief>
39126  This interface defines the message conversation (also known as the thread of messages).
39127           </brief>
39128          <description>
39129           <p>
39130 This interface allows a web application to get the set of properties linked to a conversation.
39131 This interface provides only read-only attributes.
39132           </p>
39133          </description>
39134           <version>
39135  1.0
39136           </version>
39137       </descriptive>
39138       <ExtendedAttributeList>
39139         <ExtendedAttribute name="NoInterfaceObject">
39140           <webidl>NoInterfaceObject</webidl>
39141         </ExtendedAttribute>
39142       </ExtendedAttributeList>
39143       <Attribute readonly="readonly" name="id" id="::Messaging::MessageConversation::id">
39144         <webidl>    readonly attribute <ref>MessageConvId</ref> id;</webidl>
39145         <descriptive>
39146             <brief>
39147  The conversation identifier.
39148             </brief>
39149            <description>
39150             <p>
39151 The ID is locally unique and persistent property, assigned by the device or the Web runtime (WRT).
39152             </p>
39153            </description>
39154             <version>
39155  1.0
39156             </version>
39157         </descriptive>
39158         <Type name="MessageConvId"/>
39159       </Attribute>
39160       <Attribute readonly="readonly" name="type" id="::Messaging::MessageConversation::type">
39161         <webidl>    readonly attribute <ref>MessageServiceTag</ref> type;</webidl>
39162         <descriptive>
39163             <brief>
39164  The type of a given conversation.
39165             </brief>
39166             <version>
39167  1.0
39168             </version>
39169         </descriptive>
39170         <Type name="MessageServiceTag"/>
39171       </Attribute>
39172       <Attribute readonly="readonly" name="timestamp" id="::Messaging::MessageConversation::timestamp">
39173         <webidl>    readonly attribute Date timestamp;</webidl>
39174         <descriptive>
39175             <brief>
39176  The timestamp of the latest message in a conversation.
39177             </brief>
39178            <description>
39179             <p>
39180 This property is set up by the device or the Web runtime environment.
39181             </p>
39182            </description>
39183             <version>
39184  1.0
39185             </version>
39186         </descriptive>
39187         <Type type="Date"/>
39188       </Attribute>
39189       <Attribute readonly="readonly" name="messageCount" id="::Messaging::MessageConversation::messageCount">
39190         <webidl>    readonly attribute unsigned long messageCount;</webidl>
39191         <descriptive>
39192             <brief>
39193  The count of messages in a conversation.
39194             </brief>
39195             <version>
39196  1.0
39197             </version>
39198         </descriptive>
39199         <Type type="unsigned long"/>
39200       </Attribute>
39201       <Attribute readonly="readonly" name="unreadMessages" id="::Messaging::MessageConversation::unreadMessages">
39202         <webidl>    readonly attribute unsigned long unreadMessages;</webidl>
39203         <descriptive>
39204             <brief>
39205  The count of unread messages in a conversation.
39206             </brief>
39207             <version>
39208  1.0
39209             </version>
39210         </descriptive>
39211         <Type type="unsigned long"/>
39212       </Attribute>
39213       <Attribute readonly="readonly" name="preview" id="::Messaging::MessageConversation::preview">
39214         <webidl>    readonly attribute DOMString preview;</webidl>
39215         <descriptive>
39216             <brief>
39217  A preview of the latest message in a conversation.
39218             </brief>
39219             <version>
39220  1.0
39221             </version>
39222         </descriptive>
39223         <Type type="DOMString"/>
39224       </Attribute>
39225       <Attribute readonly="readonly" name="subject" id="::Messaging::MessageConversation::subject">
39226         <webidl>    readonly attribute DOMString subject;</webidl>
39227         <descriptive>
39228             <brief>
39229  The subject of a conversation (applicable for group chats, MMS, email).
39230             </brief>
39231             <version>
39232  1.0
39233             </version>
39234         </descriptive>
39235         <Type type="DOMString"/>
39236       </Attribute>
39237       <Attribute readonly="readonly" name="isRead" id="::Messaging::MessageConversation::isRead">
39238         <webidl>    readonly attribute boolean isRead;</webidl>
39239         <descriptive>
39240             <brief>
39241  An attribute to indicate whether the latest message in a conversation has been read or not.
39242             </brief>
39243            <description>
39244             <p>
39245 This property is set to <var>true</var> if the message has been read, else it is set to <var>false</var>.
39246             </p>
39247            </description>
39248             <version>
39249  1.0
39250             </version>
39251         </descriptive>
39252         <Type type="boolean"/>
39253       </Attribute>
39254       <Attribute readonly="readonly" name="from" id="::Messaging::MessageConversation::from">
39255         <webidl>    readonly attribute DOMString from;</webidl>
39256         <descriptive>
39257             <brief>
39258  The source address (or source phone number) of the latest message in the conversation.
39259             </brief>
39260            <description>
39261             <p>
39262 This property is set up by the device or the Web runtime environment.
39263             </p>
39264            </description>
39265             <version>
39266  1.0
39267             </version>
39268         </descriptive>
39269         <Type type="DOMString"/>
39270       </Attribute>
39271       <Attribute readonly="readonly" name="to" id="::Messaging::MessageConversation::to">
39272         <webidl>    readonly attribute DOMString[] to;</webidl>
39273         <descriptive>
39274             <brief>
39275  The destination of the latest message in a conversation.
39276             </brief>
39277             <version>
39278  1.0
39279             </version>
39280         </descriptive>
39281         <Type type="array">
39282           <Type type="DOMString"/>
39283         </Type>
39284       </Attribute>
39285       <Attribute readonly="readonly" name="cc" id="::Messaging::MessageConversation::cc">
39286         <webidl>    readonly attribute DOMString[] cc;</webidl>
39287         <descriptive>
39288             <brief>
39289  The carbon copy (cc) address of the latest message in a conversation.
39290             </brief>
39291            <description>
39292             <p>
39293 This property is used only for email.
39294             </p>
39295            </description>
39296             <version>
39297  1.0
39298             </version>
39299         </descriptive>
39300         <Type type="array">
39301           <Type type="DOMString"/>
39302         </Type>
39303       </Attribute>
39304       <Attribute readonly="readonly" name="bcc" id="::Messaging::MessageConversation::bcc">
39305         <webidl>    readonly attribute DOMString[] bcc;</webidl>
39306         <descriptive>
39307             <brief>
39308  The blind carbon copy (bcc) address of the latest message in a conversation.
39309             </brief>
39310            <description>
39311             <p>
39312 This property is used only for email.
39313             </p>
39314            </description>
39315             <version>
39316  1.0
39317             </version>
39318         </descriptive>
39319         <Type type="array">
39320           <Type type="DOMString"/>
39321         </Type>
39322       </Attribute>
39323       <Attribute readonly="readonly" name="lastMessageId" id="::Messaging::MessageConversation::lastMessageId">
39324         <webidl>    readonly attribute <ref>MessageId</ref> lastMessageId;</webidl>
39325         <descriptive>
39326             <brief>
39327  The identifier of a latest message in a conversation.
39328             </brief>
39329            <description>
39330             <p>
39331 This property is set up by the device or the Web runtime environment.
39332             </p>
39333            </description>
39334             <version>
39335  1.0
39336             </version>
39337         </descriptive>
39338         <Type name="MessageId"/>
39339       </Attribute>
39340     </Interface>
39341     <Interface name="MessageFolder" id="::Messaging::MessageFolder">
39342       <webidl>  [NoInterfaceObject] interface MessageFolder {
39343
39344     readonly attribute <ref>MessageFolderId</ref> id;
39345
39346     readonly attribute <ref>MessageFolderId</ref> parentId;
39347
39348     readonly attribute DOMString serviceId;
39349
39350     readonly attribute <ref>MessageServiceTag</ref> contentType;
39351
39352     attribute DOMString name setraises(<ref>WebAPIException</ref>);
39353
39354     readonly attribute DOMString path;
39355
39356     readonly attribute DOMString type;
39357
39358     attribute boolean synchronizable setraises(<ref>WebAPIException</ref>);
39359   };</webidl>
39360       <descriptive>
39361           <brief>
39362  This interface defines the email folder.
39363           </brief>
39364          <description>
39365           <p>
39366 This interface allows a web application to get the set of properties that are linked to an email folder.
39367           </p>
39368           <p>
39369 The concept of folders is present in several email protocols, such as IMAP, Mail For Exchange.
39370           </p>
39371           <p>
39372 If the Messaging service does not represent email or an email protocol supporting the concept of folders on a server, this service has one folder which is the standard INBOX folder.
39373           </p>
39374          </description>
39375           <version>
39376  1.0
39377           </version>
39378       </descriptive>
39379       <ExtendedAttributeList>
39380         <ExtendedAttribute name="NoInterfaceObject">
39381           <webidl>NoInterfaceObject</webidl>
39382         </ExtendedAttribute>
39383       </ExtendedAttributeList>
39384       <Attribute readonly="readonly" name="id" id="::Messaging::MessageFolder::id">
39385         <webidl>    readonly attribute <ref>MessageFolderId</ref> id;</webidl>
39386         <descriptive>
39387             <brief>
39388  The folder identifier.
39389 The ID is locally unique and persistent property, assigned by the device or the Web runtime (WRT).
39390             </brief>
39391             <version>
39392  1.0
39393             </version>
39394         </descriptive>
39395         <Type name="MessageFolderId"/>
39396       </Attribute>
39397       <Attribute readonly="readonly" name="parentId" id="::Messaging::MessageFolder::parentId">
39398         <webidl>    readonly attribute <ref>MessageFolderId</ref> parentId;</webidl>
39399         <descriptive>
39400             <brief>
39401  The identifier for the parent folder of  a specified folder.
39402             </brief>
39403            <description>
39404             <p>
39405 If this folder is a root folder, the parent folder ID is <var>null</var>.
39406             </p>
39407            </description>
39408             <version>
39409  1.0
39410             </version>
39411         </descriptive>
39412         <Type name="MessageFolderId"/>
39413       </Attribute>
39414       <Attribute readonly="readonly" name="serviceId" id="::Messaging::MessageFolder::serviceId">
39415         <webidl>    readonly attribute DOMString serviceId;</webidl>
39416         <descriptive>
39417             <brief>
39418  The identifier of the service to which a specified folder belongs.
39419             </brief>
39420             <version>
39421  1.0.
39422             </version>
39423         </descriptive>
39424         <Type type="DOMString"/>
39425       </Attribute>
39426       <Attribute readonly="readonly" name="contentType" id="::Messaging::MessageFolder::contentType">
39427         <webidl>    readonly attribute <ref>MessageServiceTag</ref> contentType;</webidl>
39428         <descriptive>
39429             <brief>
39430  The type of the messages contained within a folder.
39431             </brief>
39432             <version>
39433  1.0
39434             </version>
39435         </descriptive>
39436         <Type name="MessageServiceTag"/>
39437       </Attribute>
39438       <Attribute name="name" id="::Messaging::MessageFolder::name">
39439         <webidl>    attribute DOMString name setraises(<ref>WebAPIException</ref>);</webidl>
39440         <descriptive>
39441             <brief>
39442  The visible name of a folder.
39443             </brief>
39444            <description>
39445             <p>
39446 Can be modified. By default, it contains the folder name from the server.
39447             </p>
39448             <p>
39449 In case the current Messaging service does not support remote folders on the server (and this folder is the only one that the current service has), this attribute contains the service name, by default.
39450             </p>
39451            </description>
39452             <version>
39453  1.0
39454             </version>
39455         </descriptive>
39456         <Type type="DOMString"/>
39457         <SetRaises>
39458           <RaiseException name="WebAPIException"/>
39459         </SetRaises>
39460       </Attribute>
39461       <Attribute readonly="readonly" name="path" id="::Messaging::MessageFolder::path">
39462         <webidl>    readonly attribute DOMString path;</webidl>
39463         <descriptive>
39464             <brief>
39465  The whole path of a remote folder on the server.
39466             </brief>
39467            <description>
39468             <p>
39469 If the current Messaging service does not support remote folders on the server,
39470 this attribute will be empty.
39471             </p>
39472            </description>
39473             <version>
39474  1.0
39475             </version>
39476         </descriptive>
39477         <Type type="DOMString"/>
39478       </Attribute>
39479       <Attribute readonly="readonly" name="type" id="::Messaging::MessageFolder::type">
39480         <webidl>    readonly attribute DOMString type;</webidl>
39481         <descriptive>
39482             <brief>
39483  The standard type of a folder.
39484             </brief>
39485            <description>
39486             <p>
39487 It can be one of the following values:
39488             </p>
39489             <ul>
39490               <li>
39491 INBOX              </li>
39492               <li>
39493 OUTBOX              </li>
39494               <li>
39495 DRAFTS              </li>
39496               <li>
39497 SENTBOX              </li>
39498             </ul>
39499             <p>
39500 If this folder is not a standard folder, an empty value must be returned.
39501             </p>
39502             <p>
39503 This property is unique for each type within one Messaging service.
39504             </p>
39505            </description>
39506             <version>
39507  1.0
39508             </version>
39509         </descriptive>
39510         <Type type="DOMString"/>
39511       </Attribute>
39512       <Attribute name="synchronizable" id="::Messaging::MessageFolder::synchronizable">
39513         <webidl>    attribute boolean synchronizable setraises(<ref>WebAPIException</ref>);</webidl>
39514         <descriptive>
39515             <brief>
39516  An attribute to show whether this folder should be synchronized or not.
39517             </brief>
39518            <description>
39519             <p>
39520 This attribute affects the behavior of the MessageService.sync() method.
39521             </p>
39522            </description>
39523             <version>
39524  1.0
39525             </version>
39526         </descriptive>
39527         <Type type="boolean"/>
39528         <SetRaises>
39529           <RaiseException name="WebAPIException"/>
39530         </SetRaises>
39531       </Attribute>
39532     </Interface>
39533   </Module>
39534   <Module name="NetworkBearerSelection" id="::NetworkBearerSelection">
39535     <webidl>module NetworkBearerSelection {
39536
39537   enum NetworkType { &quot;CELLULAR&quot;, &quot;UNKNOWN&quot; };
39538
39539   [NoInterfaceObject] interface NetworkBearerSelectionObject {
39540     readonly attribute <ref>NetworkBearerSelection</ref> networkbearerselection;
39541   };
39542   <ref>Tizen</ref> implements <ref>NetworkBearerSelectionObject</ref>;
39543
39544   [NoInterfaceObject] interface NetworkBearerSelection {
39545
39546     void requestRouteToHost(<ref>NetworkType</ref> networkType,
39547                             DOMString domainName,
39548                             <ref>NetworkSuccessCallback</ref> successCallback,
39549                             optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
39550
39551     void releaseRouteToHost(<ref>NetworkType</ref> networkType,
39552                             DOMString domainName,
39553                             <ref>SuccessCallback</ref> successCallback,
39554                             optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
39555   };
39556   
39557   [Callback, NoInterfaceObject] interface NetworkSuccessCallback {
39558     void onsuccess();
39559
39560     void ondisconnected();    
39561   };    
39562 };</webidl>
39563     <descriptive>
39564         <brief>
39565  This specification defines interfaces and methods providing Web applications to access the devices.
39566         </brief>
39567        <description>
39568         <p>
39569 This API provides interfaces and methods for users to set network bearer selection.
39570         </p>
39571        </description>
39572         <version>
39573  2.1
39574         </version>
39575         <def-api-feature identifier="http://tizen.org/feature/network.telephony">
39576           <descriptive>
39577            <description>
39578             <p>
39579  
39580 To guarantee this application running on a device with telephony feature, define below in the config file: 
39581             </p>
39582            </description>
39583           </descriptive>
39584         </def-api-feature>
39585     </descriptive>
39586     <Enum name="NetworkType" id="::NetworkBearerSelection::NetworkType">
39587       <webidl>  enum NetworkType { &quot;CELLULAR&quot;, &quot;UNKNOWN&quot; };</webidl>
39588       <descriptive>
39589           <brief>
39590  An enumerator that defines the type of a network.
39591           </brief>
39592           <version>
39593  2.1
39594           </version>
39595       </descriptive>
39596       <EnumValue stringvalue="CELLULAR">
39597         <webidl> &quot;CELLULAR</webidl>
39598       </EnumValue>
39599       <EnumValue stringvalue="UNKNOWN">
39600         <webidl> &quot;UNKNOWN</webidl>
39601       </EnumValue>
39602     </Enum>
39603     <Interface name="NetworkBearerSelectionObject" id="::NetworkBearerSelection::NetworkBearerSelectionObject">
39604       <webidl>  [NoInterfaceObject] interface NetworkBearerSelectionObject {
39605     readonly attribute <ref>NetworkBearerSelection</ref> networkbearerselection;
39606   };</webidl>
39607       <descriptive>
39608           <brief>
39609  Defines what is instantiated the Tizen object from the Tizen Platform.
39610           </brief>
39611          <description>
39612           <p>
39613 There is a <em>tizen.networkbearerselection </em>object that allows accessing the functionality of the Networkbearerselection API.
39614           </p>
39615          </description>
39616           <version>
39617  2.1
39618           </version>
39619       </descriptive>
39620       <ExtendedAttributeList>
39621         <ExtendedAttribute name="NoInterfaceObject">
39622           <webidl>NoInterfaceObject</webidl>
39623         </ExtendedAttribute>
39624       </ExtendedAttributeList>
39625       <Attribute readonly="readonly" name="networkbearerselection" id="::NetworkBearerSelection::NetworkBearerSelectionObject::networkbearerselection">
39626         <webidl>    readonly attribute <ref>NetworkBearerSelection</ref> networkbearerselection;</webidl>
39627         <Type name="NetworkBearerSelection"/>
39628       </Attribute>
39629     </Interface>
39630     <Implements name1="Tizen" name2="NetworkBearerSelectionObject">
39631       <webidl>  <ref>Tizen</ref> implements <ref>NetworkBearerSelectionObject</ref>;</webidl>
39632     </Implements>
39633     <Interface name="NetworkBearerSelection" id="::NetworkBearerSelection::NetworkBearerSelection">
39634       <webidl>  [NoInterfaceObject] interface NetworkBearerSelection {
39635
39636     void requestRouteToHost(<ref>NetworkType</ref> networkType,
39637                             DOMString domainName,
39638                             <ref>NetworkSuccessCallback</ref> successCallback,
39639                             optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
39640
39641     void releaseRouteToHost(<ref>NetworkType</ref> networkType,
39642                             DOMString domainName,
39643                             <ref>SuccessCallback</ref> successCallback,
39644                             optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
39645   };</webidl>
39646       <descriptive>
39647           <brief>
39648  This entry interface provides methods to query the network bearer selection.
39649           </brief>
39650          <description>
39651           <p>
39652 This API offers methods for network bearer selection.
39653           </p>
39654          </description>
39655           <version>
39656  2.1
39657           </version>
39658       </descriptive>
39659       <ExtendedAttributeList>
39660         <ExtendedAttribute name="NoInterfaceObject">
39661           <webidl>NoInterfaceObject</webidl>
39662         </ExtendedAttribute>
39663       </ExtendedAttributeList>
39664       <Operation name="requestRouteToHost" id="::NetworkBearerSelection::NetworkBearerSelection::requestRouteToHost">
39665         <webidl>    void requestRouteToHost(<ref>NetworkType</ref> networkType,
39666                             DOMString domainName,
39667                             <ref>NetworkSuccessCallback</ref> successCallback,
39668                             optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
39669         <descriptive>
39670             <brief>
39671  Requests a specific network connection.
39672             </brief>
39673            <description>
39674             <p>
39675 The function must asynchronously acquire success or fail.
39676             </p>
39677             <p>
39678 When called, it starts a request process defined with these set of steps:
39679             </p>
39680             <ul>
39681               <li>
39682 1. Open &quot;networkType&quot; network connection.              </li>
39683               <li>
39684 2. Resolve &quot;domainName&quot; to IP.              </li>
39685               <li>
39686 3. Change the routing path bound to domainName's IP to use the specific network type.              </li>
39687               <li>
39688 4. If previous steps have been successfully accomplished, call onsuccess() callback function.<br/>If previous steps have failed, call ondisconnected() callback function.<br/>If network is disconnected, the routing path will be deleted and ondisconnected() is called.              </li>
39689             </ul>
39690            </description>
39691             <version>
39692  2.1
39693             </version>
39694             <Code> var statuscb = {
39695    onsuccess: function() { console.log(&quot;onsuccess func is called&quot;); },
39696    ondisconnected: function() { console.log(&quot;ondisconnected func is called&quot;); } 
39697  };
39698  function ecb(e) { console.log(&quot;error callback is called : &quot; + e.message + &quot; : &quot; + e.code); }
39699  tizen.networkbearerselection.requestRouteToHost(&quot;CELLULAR&quot;, &quot;www.tizen.org&quot;, statuscb, ecb);
39700          
39701 </Code>
39702             <privilegelevel>
39703  partner
39704             </privilegelevel>
39705             <privilege>
39706  http://tizen.org/privilege/networkbearerselection
39707             </privilege>
39708         </descriptive>
39709         <Type type="void"/>
39710         <ArgumentList>
39711           <Argument name="networkType">
39712             <descriptive>
39713                 <description><p>
39714  The network type.
39715                 </p></description>
39716             </descriptive>
39717             <Type name="NetworkType"/>
39718           </Argument>
39719           <Argument name="domainName">
39720             <descriptive>
39721                 <description><p>
39722  The domain name.
39723                 </p></description>
39724             </descriptive>
39725             <Type type="DOMString"/>
39726           </Argument>
39727           <Argument name="successCallback">
39728             <descriptive>
39729                 <description><p>
39730  To be invoked if data network connection is connected or not.
39731                 </p></description>
39732             </descriptive>
39733             <Type name="NetworkSuccessCallback"/>
39734           </Argument>
39735           <Argument optional="optional" name="errorCallback">
39736             <descriptive>
39737                 <description><p>
39738  To be invoked if the request is failed.
39739                 </p></description>
39740             </descriptive>
39741             <Type name="ErrorCallback" nullable="nullable"/>
39742           </Argument>
39743         </ArgumentList>
39744         <Raises>
39745           <RaiseException name="WebAPIException">
39746             <descriptive>
39747                 <description><p>
39748  with error type NotSupportedError, if this feature is not supported.
39749                 </p></description>
39750                 <description><p>
39751  with error type SecurityError, if the application does not have the privilege to call this method.
39752                 </p></description>
39753                 <description><p>
39754  with error type UnknownError, if any other error occurs.
39755                 </p></description>
39756             </descriptive>
39757           </RaiseException>
39758         </Raises>
39759       </Operation>
39760       <Operation name="releaseRouteToHost" id="::NetworkBearerSelection::NetworkBearerSelection::releaseRouteToHost">
39761         <webidl>    void releaseRouteToHost(<ref>NetworkType</ref> networkType,
39762                             DOMString domainName,
39763                             <ref>SuccessCallback</ref> successCallback,
39764                             optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
39765         <descriptive>
39766             <brief>
39767  Releases a specific network connection.
39768             </brief>
39769            <description>
39770             <p>
39771 The function must asynchronously acquire success or fail.
39772             </p>
39773             <p>
39774 When called, it closes a network connection.
39775             </p>
39776            </description>
39777             <version>
39778  2.1
39779             </version>
39780             <Code> function scb() { console.log(&quot;success callback is called&quot;); }
39781  function ecb(e) { console.log(&quot;error callback is called : &quot; + e.message + &quot; : &quot; + e.code); }
39782  var statuscb = {
39783    onsuccess: function() { 
39784      console.log(&quot;onsuccess func is called&quot;); 
39785      tizen.networkbearerselection.releaseRouteToHost(&quot;CELLULAR&quot;, &quot;www.google.com&quot;, scb, ecb);
39786    },
39787    ondisconnected: function() { console.log(&quot;ondisconnected func is called&quot;); } 
39788  };
39789  tizen.networkbearerselection.requestRouteToHost(&quot;CELLULAR&quot;, &quot;www.google.com&quot;, statuscb, ecb);
39790           
39791 </Code>
39792             <privilegelevel>
39793  partner
39794             </privilegelevel>
39795             <privilege>
39796  http://tizen.org/privilege/networkbearerselection
39797             </privilege>
39798         </descriptive>
39799         <Type type="void"/>
39800         <ArgumentList>
39801           <Argument name="networkType">
39802             <descriptive>
39803                 <description><p>
39804  The network type.
39805                 </p></description>
39806             </descriptive>
39807             <Type name="NetworkType"/>
39808           </Argument>
39809           <Argument name="domainName">
39810             <descriptive>
39811                 <description><p>
39812  The domain name.
39813                 </p></description>
39814             </descriptive>
39815             <Type type="DOMString"/>
39816           </Argument>
39817           <Argument name="successCallback">
39818             <descriptive>
39819                 <description><p>
39820  To be invoked if data network connection is released.
39821                 </p></description>
39822             </descriptive>
39823             <Type name="SuccessCallback"/>
39824           </Argument>
39825           <Argument optional="optional" name="errorCallback">
39826             <descriptive>
39827                 <description><p>
39828  To be invoked if the release is failed.
39829                 </p></description>
39830             </descriptive>
39831             <Type name="ErrorCallback" nullable="nullable"/>
39832           </Argument>
39833         </ArgumentList>
39834         <Raises>
39835           <RaiseException name="WebAPIException">
39836             <descriptive>
39837                 <description><p>
39838  with error type NotSupportedError, if this feature is not supported.
39839                 </p></description>
39840                 <description><p>
39841  with error type SecurityError, if the application does not have the privilege to call this method.
39842                 </p></description>
39843                 <description><p>
39844  with error type UnknownError, if any other error occurs.
39845                 </p></description>
39846             </descriptive>
39847           </RaiseException>
39848         </Raises>
39849       </Operation>
39850     </Interface>
39851     <Interface name="NetworkSuccessCallback" id="::NetworkBearerSelection::NetworkSuccessCallback">
39852       <webidl>  [Callback, NoInterfaceObject] interface NetworkSuccessCallback {
39853     void onsuccess();
39854
39855     void ondisconnected();    
39856   };</webidl>
39857       <descriptive>
39858           <brief>
39859  This interface provides a success callback specific to NetworkBearerSelection.
39860           </brief>
39861          <description>
39862           <p>
39863 It is used in asynchronous operations with requestRouteToHost().
39864           </p>
39865          </description>
39866           <version>
39867  2.1
39868           </version>
39869       </descriptive>
39870       <ExtendedAttributeList>
39871         <ExtendedAttribute name="Callback">
39872           <webidl>Callback</webidl>
39873         </ExtendedAttribute>
39874         <ExtendedAttribute name="NoInterfaceObject">
39875           <webidl> NoInterfaceObject</webidl>
39876         </ExtendedAttribute>
39877       </ExtendedAttributeList>
39878       <Operation name="onsuccess" id="::NetworkBearerSelection::NetworkSuccessCallback::onsuccess">
39879         <webidl>    void onsuccess();</webidl>
39880         <descriptive>
39881             <brief>
39882  Called when a network is connected successfully.
39883             </brief>
39884             <version>
39885  2.1
39886             </version>
39887         </descriptive>
39888         <Type type="void"/>
39889         <ArgumentList/>
39890       </Operation>
39891       <Operation name="ondisconnected" id="::NetworkBearerSelection::NetworkSuccessCallback::ondisconnected">
39892         <webidl>    void ondisconnected();</webidl>
39893         <descriptive>
39894             <brief>
39895  Called when a network is disconnected.
39896             </brief>
39897             <version>
39898  2.1
39899             </version>
39900         </descriptive>
39901         <Type type="void"/>
39902         <ArgumentList/>
39903       </Operation>
39904     </Interface>
39905   </Module>
39906   <Module name="NFC" id="::NFC">
39907     <webidl>module NFC {
39908   enum NDEFRecordTextEncoding { &quot;UTF8&quot;, &quot;UTF16&quot; };
39909
39910   enum NFCTagType { &quot;GENERIC_TARGET&quot;, &quot;ISO14443_A&quot;, &quot;ISO14443_4A&quot;, &quot;ISO14443_3A&quot;,
39911   &quot;MIFARE_MINI&quot;, &quot;MIFARE_1K&quot;, &quot;MIFARE_4K&quot;, &quot;MIFARE_ULTRA&quot;, &quot;MIFARE_DESFIRE&quot;,
39912   &quot;ISO14443_B&quot;, &quot;ISO14443_4B&quot;, &quot;ISO14443_BPRIME&quot;, &quot;FELICA&quot;, &quot;JEWEL&quot;, &quot;ISO15693&quot;,
39913   &quot;UNKNOWN_TARGET&quot; };
39914   
39915   [NoInterfaceObject] interface NFCManagerObject {
39916     readonly attribute <ref>NFCManager</ref> nfc;
39917   };
39918   <ref>Tizen</ref> implements <ref>NFCManagerObject</ref>;
39919
39920   [NoInterfaceObject] interface NFCManager {
39921     const short NFC_RECORD_TNF_EMPTY = 0;
39922     const short NFC_RECORD_TNF_WELL_KNOWN = 1;
39923     const short NFC_RECORD_TNF_MIME_MEDIA = 2;
39924     const short NFC_RECORD_TNF_URI = 3;
39925     const short NFC_RECORD_TNF_EXTERNAL_RTD = 4;
39926     const short NFC_RECORD_TNF_UNKNOWN = 5;
39927     const short NFC_RECORD_TNF_UNCHANGED = 6;
39928
39929     <ref>NFCAdapter</ref> getDefaultAdapter() raises(<ref>WebAPIException</ref>);
39930
39931     void setExclusiveMode(boolean mode) raises(<ref>WebAPIException</ref>);
39932   };
39933
39934
39935   [NoInterfaceObject] interface NFCAdapter {
39936     readonly attribute boolean powered ;
39937
39938
39939     void setPowered(boolean state,
39940                     optional <ref>SuccessCallback</ref>? successCallback,
39941                     optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
39942
39943
39944     void setTagListener(<ref>NFCTagDetectCallback</ref> detectCallback,
39945                         optional <ref>NFCTagType</ref>[]? tagFilter) raises(<ref>WebAPIException</ref>);
39946
39947     void setPeerListener(<ref>NFCPeerDetectCallback</ref> detectCallback) raises(<ref>WebAPIException</ref>);
39948
39949     void unsetTagListener() raises(<ref>WebAPIException</ref>);
39950
39951     void unsetPeerListener() raises(<ref>WebAPIException</ref>);
39952
39953     <ref>NDEFMessage</ref>? getCachedMessage() raises(<ref>WebAPIException</ref>);
39954
39955   };
39956
39957
39958   [NoInterfaceObject] interface NFCTag {
39959     readonly attribute <ref>NFCTagType</ref> type;
39960
39961     readonly attribute boolean isSupportedNDEF;
39962
39963     readonly attribute long ndefSize;
39964
39965     readonly attribute object properties;
39966
39967     readonly attribute boolean isConnected;
39968
39969
39970      void readNDEF(<ref>NDEFMessageReadCallback</ref> readCallback,
39971                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
39972
39973     void writeNDEF(<ref>NDEFMessage</ref> ndefMessage,
39974                    optional <ref>SuccessCallback</ref>? successCallback,
39975                    optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
39976
39977     void transceive(byte[] data,
39978                     <ref>ByteArraySuccessCallback</ref> dataCallback,
39979                     optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
39980   };
39981
39982
39983   [NoInterfaceObject] interface NFCPeer {
39984     readonly attribute boolean isConnected;
39985     
39986     void setReceiveNDEFListener(<ref>NDEFMessageReadCallback</ref> successCallback) raises(<ref>WebAPIException</ref>);
39987
39988     void unsetReceiveNDEFListener() raises(<ref>WebAPIException</ref>);
39989
39990     void sendNDEF(<ref>NDEFMessage</ref> ndefMessage,
39991                   optional <ref>SuccessCallback</ref>? successCallback,
39992                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
39993
39994   };
39995
39996   [Constructor(),
39997    Constructor(<ref>NDEFRecord</ref>[] ndefRecords),
39998    Constructor(byte[] rawData)]
39999   interface NDEFMessage {
40000     readonly attribute long recordCount;
40001     
40002     attribute <ref>NDEFRecord</ref>[] records;
40003
40004     byte[] toByte() raises(<ref>WebAPIException</ref>);
40005   };
40006
40007   [Constructor(short tnf, byte[] type, byte[] payload, optional byte[]? id),
40008    Constructor(byte[] raw_data)]
40009   interface NDEFRecord {
40010     readonly attribute short tnf;
40011
40012     readonly attribute byte[] type;
40013
40014     readonly attribute byte[] id;
40015     
40016     readonly attribute byte[] payload;
40017   };
40018
40019   [Constructor(DOMString text, DOMString languageCode, optional DOMString? encoding)]
40020   interface NDEFRecordText : <ref>NDEFRecord</ref> {
40021     readonly attribute DOMString text;
40022     
40023     readonly attribute DOMString languageCode;
40024     
40025     readonly attribute <ref>NDEFRecordTextEncoding</ref> encoding;
40026   };
40027
40028   [Constructor(DOMString uri)]
40029   interface NDEFRecordURI : <ref>NDEFRecord</ref> {
40030     readonly attribute DOMString uri;
40031   };
40032   [Constructor(DOMString mimeType, byte[] data)]
40033   interface NDEFRecordMedia : <ref>NDEFRecord</ref> {
40034     readonly attribute DOMString mimeType;
40035   };
40036
40037  
40038   [Callback, NoInterfaceObject] interface NFCTagDetectCallback {
40039     void onattach(<ref>NFCTag</ref> nfcTag);
40040     void ondetach();
40041   };
40042
40043   [Callback, NoInterfaceObject] interface NFCPeerDetectCallback {
40044     void onattach(<ref>NFCPeer</ref> nfcPeer);
40045     void ondetach();
40046   };
40047
40048   [Callback=FunctionOnly, NoInterfaceObject] interface NDEFMessageReadCallback {
40049     void onsuccess(<ref>NDEFMessage</ref> ndefMessage);
40050   };
40051
40052   [Callback=FunctionOnly, NoInterfaceObject] interface ByteArraySuccessCallback {
40053     void onsuccess(byte[] data);
40054   };
40055
40056 };</webidl>
40057     <descriptive>
40058         <brief>
40059   This interface specifies a protocol for simple wireless interconnection of 
40060 closely coupled devices operating at 13.56 MHz using Near Field Communication (NFC),
40061 which is an international standard (ISO/IEC 18092). 
40062 To know more, see <a href="http://www.nfc-forum.org/specs/spec_list/">Technical Specifications</a>.
40063         </brief>
40064        <description>
40065         <p>
40066 There are three groups of application scenarios for NFC:
40067         </p>
40068         <ul>
40069           <li>
40070 Exchanging some digital information or data by holding a device close to a wireless tag.          </li>
40071           <li>
40072 Exchanging some information or data between two devices by holding them close to each other.          </li>
40073           <li>
40074 Making payments by holding mobile phones close to point of sales terminals instead of swiping smart cards.          </li>
40075         </ul>
40076         <p>
40077 For more information on the NFC features, see <a href="../../org.tizen.web.appprogramming/html/guide/communication_guide/nfc.htm">NFC Guide</a>.
40078         </p>
40079        </description>
40080         <version>
40081  1.0
40082         </version>
40083         <def-api-feature identifier="http://tizen.org/feature/network.nfc">
40084           <descriptive>
40085            <description>
40086             <p>
40087 To guarantee this application running on a device with NFC feature, define below in the config file: 
40088             </p>
40089            </description>
40090           </descriptive>
40091         </def-api-feature>
40092     </descriptive>
40093     <Enum name="NDEFRecordTextEncoding" id="::NFC::NDEFRecordTextEncoding">
40094       <webidl>  enum NDEFRecordTextEncoding { &quot;UTF8&quot;, &quot;UTF16&quot; };</webidl>
40095       <descriptive>
40096           <brief>
40097  An enumerator that defines an encoding format for an NDEF record text.
40098           </brief>
40099           <version>
40100  1.0
40101           </version>
40102       </descriptive>
40103       <EnumValue stringvalue="UTF8">
40104         <webidl> &quot;UTF8</webidl>
40105       </EnumValue>
40106       <EnumValue stringvalue="UTF16">
40107         <webidl> &quot;UTF16</webidl>
40108       </EnumValue>
40109     </Enum>
40110     <Enum name="NFCTagType" id="::NFC::NFCTagType">
40111       <webidl>  enum NFCTagType { &quot;GENERIC_TARGET&quot;, &quot;ISO14443_A&quot;, &quot;ISO14443_4A&quot;, &quot;ISO14443_3A&quot;,
40112   &quot;MIFARE_MINI&quot;, &quot;MIFARE_1K&quot;, &quot;MIFARE_4K&quot;, &quot;MIFARE_ULTRA&quot;, &quot;MIFARE_DESFIRE&quot;,
40113   &quot;ISO14443_B&quot;, &quot;ISO14443_4B&quot;, &quot;ISO14443_BPRIME&quot;, &quot;FELICA&quot;, &quot;JEWEL&quot;, &quot;ISO15693&quot;,
40114   &quot;UNKNOWN_TARGET&quot; };</webidl>
40115       <descriptive>
40116           <brief>
40117  An enumerator that defines the type of NFC tag.
40118           </brief>
40119          <description>
40120           <p>
40121 The following values are supported:
40122           </p>
40123           <ul>
40124             <li>
40125 GENERIC_TARGET            </li>
40126             <li>
40127 ISO14443_A            </li>
40128             <li>
40129 ISO14443_4A            </li>
40130             <li>
40131 ISO14443_3A            </li>
40132             <li>
40133 MIFARE_MINI            </li>
40134             <li>
40135 MIFARE_1K            </li>
40136             <li>
40137 MIFARE_4K            </li>
40138             <li>
40139 MIFARE_ULTRA            </li>
40140             <li>
40141 MIFARE_DESFIRE            </li>
40142             <li>
40143 ISO14443_B            </li>
40144             <li>
40145 ISO14443_4B            </li>
40146             <li>
40147 ISO14443_BPRIME            </li>
40148             <li>
40149 FELICA            </li>
40150             <li>
40151 JEWEL            </li>
40152             <li>
40153 ISO15693            </li>
40154             <li>
40155 UNKNOWN_TARGET            </li>
40156           </ul>
40157          </description>
40158           <version>
40159  1.0
40160           </version>
40161       </descriptive>
40162       <EnumValue stringvalue="GENERIC_TARGET">
40163         <webidl> &quot;GENERIC_TARGET</webidl>
40164       </EnumValue>
40165       <EnumValue stringvalue="ISO14443_A">
40166         <webidl> &quot;ISO14443_A</webidl>
40167       </EnumValue>
40168       <EnumValue stringvalue="ISO14443_4A">
40169         <webidl> &quot;ISO14443_4A</webidl>
40170       </EnumValue>
40171       <EnumValue stringvalue="ISO14443_3A">
40172         <webidl> &quot;ISO14443_3A</webidl>
40173       </EnumValue>
40174       <EnumValue stringvalue="MIFARE_MINI">
40175         <webidl>  &quot;MIFARE_MINI</webidl>
40176       </EnumValue>
40177       <EnumValue stringvalue="MIFARE_1K">
40178         <webidl> &quot;MIFARE_1K</webidl>
40179       </EnumValue>
40180       <EnumValue stringvalue="MIFARE_4K">
40181         <webidl> &quot;MIFARE_4K</webidl>
40182       </EnumValue>
40183       <EnumValue stringvalue="MIFARE_ULTRA">
40184         <webidl> &quot;MIFARE_ULTRA</webidl>
40185       </EnumValue>
40186       <EnumValue stringvalue="MIFARE_DESFIRE">
40187         <webidl> &quot;MIFARE_DESFIRE</webidl>
40188       </EnumValue>
40189       <EnumValue stringvalue="ISO14443_B">
40190         <webidl>  &quot;ISO14443_B</webidl>
40191       </EnumValue>
40192       <EnumValue stringvalue="ISO14443_4B">
40193         <webidl> &quot;ISO14443_4B</webidl>
40194       </EnumValue>
40195       <EnumValue stringvalue="ISO14443_BPRIME">
40196         <webidl> &quot;ISO14443_BPRIME</webidl>
40197       </EnumValue>
40198       <EnumValue stringvalue="FELICA">
40199         <webidl> &quot;FELICA</webidl>
40200       </EnumValue>
40201       <EnumValue stringvalue="JEWEL">
40202         <webidl> &quot;JEWEL</webidl>
40203       </EnumValue>
40204       <EnumValue stringvalue="ISO15693">
40205         <webidl> &quot;ISO15693</webidl>
40206       </EnumValue>
40207       <EnumValue stringvalue="UNKNOWN_TARGET">
40208         <webidl>  &quot;UNKNOWN_TARGET</webidl>
40209       </EnumValue>
40210     </Enum>
40211     <Interface name="NFCManagerObject" id="::NFC::NFCManagerObject">
40212       <webidl>  [NoInterfaceObject] interface NFCManagerObject {
40213     readonly attribute <ref>NFCManager</ref> nfc;
40214   };</webidl>
40215       <descriptive>
40216           <brief>
40217  This interface defines what is instantiated by the <em>Tizen</em> object from the Tizen Platform.
40218 There will be a <em>tizen.nfc </em>object that allows access to the functionality of the NFC API.
40219           </brief>
40220           <version>
40221  1.0
40222           </version>
40223       </descriptive>
40224       <ExtendedAttributeList>
40225         <ExtendedAttribute name="NoInterfaceObject">
40226           <webidl>NoInterfaceObject</webidl>
40227         </ExtendedAttribute>
40228       </ExtendedAttributeList>
40229       <Attribute readonly="readonly" name="nfc" id="::NFC::NFCManagerObject::nfc">
40230         <webidl>    readonly attribute <ref>NFCManager</ref> nfc;</webidl>
40231         <Type name="NFCManager"/>
40232       </Attribute>
40233     </Interface>
40234     <Implements name1="Tizen" name2="NFCManagerObject">
40235       <webidl>  <ref>Tizen</ref> implements <ref>NFCManagerObject</ref>;</webidl>
40236     </Implements>
40237     <Interface name="NFCManager" id="::NFC::NFCManager">
40238       <webidl>  [NoInterfaceObject] interface NFCManager {
40239     const short NFC_RECORD_TNF_EMPTY = 0;
40240     const short NFC_RECORD_TNF_WELL_KNOWN = 1;
40241     const short NFC_RECORD_TNF_MIME_MEDIA = 2;
40242     const short NFC_RECORD_TNF_URI = 3;
40243     const short NFC_RECORD_TNF_EXTERNAL_RTD = 4;
40244     const short NFC_RECORD_TNF_UNKNOWN = 5;
40245     const short NFC_RECORD_TNF_UNCHANGED = 6;
40246
40247     <ref>NFCAdapter</ref> getDefaultAdapter() raises(<ref>WebAPIException</ref>);
40248
40249     void setExclusiveMode(boolean mode) raises(<ref>WebAPIException</ref>);
40250   };</webidl>
40251       <descriptive>
40252           <brief>
40253  Accesses to the NFC tag/target.
40254           </brief>
40255          <description>
40256           <p>
40257 It provides access to the API functionalities through the tizen.nfc interface.
40258           </p>
40259          </description>
40260           <version>
40261  1.0
40262           </version>
40263       </descriptive>
40264       <ExtendedAttributeList>
40265         <ExtendedAttribute name="NoInterfaceObject">
40266           <webidl>NoInterfaceObject</webidl>
40267         </ExtendedAttribute>
40268       </ExtendedAttributeList>
40269       <Const name="NFC_RECORD_TNF_EMPTY" value="0" id="::NFC::NFCManager::NFC_RECORD_TNF_EMPTY">
40270         <webidl>    const short NFC_RECORD_TNF_EMPTY = 0;</webidl>
40271         <descriptive>
40272             <brief>
40273  A constant to indicate empty format of NDEF record's type field.
40274             </brief>
40275             <version>
40276  1.0
40277             </version>
40278         </descriptive>
40279         <Type type="short"/>
40280       </Const>
40281       <Const name="NFC_RECORD_TNF_WELL_KNOWN" value="1" id="::NFC::NFCManager::NFC_RECORD_TNF_WELL_KNOWN">
40282         <webidl>    const short NFC_RECORD_TNF_WELL_KNOWN = 1;</webidl>
40283         <descriptive>
40284             <brief>
40285  A constant to indicate Record Type Definition (RTD) format of NDEF record's type field.
40286             </brief>
40287             <version>
40288  1.0
40289             </version>
40290         </descriptive>
40291         <Type type="short"/>
40292       </Const>
40293       <Const name="NFC_RECORD_TNF_MIME_MEDIA" value="2" id="::NFC::NFCManager::NFC_RECORD_TNF_MIME_MEDIA">
40294         <webidl>    const short NFC_RECORD_TNF_MIME_MEDIA = 2;</webidl>
40295         <descriptive>
40296             <brief>
40297  A constant to indicate MIME media types format in RFC 2046 [RFC 2046] of NDEF record's type field.
40298             </brief>
40299             <version>
40300  1.0
40301             </version>
40302         </descriptive>
40303         <Type type="short"/>
40304       </Const>
40305       <Const name="NFC_RECORD_TNF_URI" value="3" id="::NFC::NFCManager::NFC_RECORD_TNF_URI">
40306         <webidl>    const short NFC_RECORD_TNF_URI = 3;</webidl>
40307         <descriptive>
40308             <brief>
40309  A constant to indicate absolute URI, as defined in RFC 3986 [RFC 3986] format in RFC 2046 [RFC 2046] of NDEF record's type field.
40310             </brief>
40311             <version>
40312  1.0
40313             </version>
40314         </descriptive>
40315         <Type type="short"/>
40316       </Const>
40317       <Const name="NFC_RECORD_TNF_EXTERNAL_RTD" value="4" id="::NFC::NFCManager::NFC_RECORD_TNF_EXTERNAL_RTD">
40318         <webidl>    const short NFC_RECORD_TNF_EXTERNAL_RTD = 4;</webidl>
40319         <descriptive>
40320             <brief>
40321  A constant to indicate NFC forum external type [NFC RTD] format in RFC 2046 [RFC 2046] of NDEF record's type field.
40322             </brief>
40323             <version>
40324  1.0
40325             </version>
40326         </descriptive>
40327         <Type type="short"/>
40328       </Const>
40329       <Const name="NFC_RECORD_TNF_UNKNOWN" value="5" id="::NFC::NFCManager::NFC_RECORD_TNF_UNKNOWN">
40330         <webidl>    const short NFC_RECORD_TNF_UNKNOWN = 5;</webidl>
40331         <descriptive>
40332             <brief>
40333  A constant to indicate unknown type format in RFC 2046 [RFC 2046] of NDEF record's type field.
40334             </brief>
40335             <version>
40336  1.0
40337             </version>
40338         </descriptive>
40339         <Type type="short"/>
40340       </Const>
40341       <Const name="NFC_RECORD_TNF_UNCHANGED" value="6" id="::NFC::NFCManager::NFC_RECORD_TNF_UNCHANGED">
40342         <webidl>    const short NFC_RECORD_TNF_UNCHANGED = 6;</webidl>
40343         <descriptive>
40344             <brief>
40345  A constant to indicate whether the payload is an intermediate or final chunk of a chunked NDEF record.
40346             </brief>
40347             <version>
40348  1.0
40349             </version>
40350         </descriptive>
40351         <Type type="short"/>
40352       </Const>
40353       <Operation name="getDefaultAdapter" id="::NFC::NFCManager::getDefaultAdapter">
40354         <webidl>    <ref>NFCAdapter</ref> getDefaultAdapter() raises(<ref>WebAPIException</ref>);</webidl>
40355         <descriptive>
40356             <brief>
40357  Gets the default NFC adapter of the device.
40358             </brief>
40359             <version>
40360  1.0
40361             </version>
40362             <privilege>
40363  http://tizen.org/privilege/nfc.common
40364             </privilege>
40365             <privilegelevel>
40366  public
40367             </privilegelevel>
40368             <Code> try {
40369   var adapter = tizen.nfc.getDefaultAdapter() ;
40370  } catch (err) {
40371   console.log (err.name +&quot;: &quot; + err.message);
40372  }
40373  </Code>
40374         </descriptive>
40375         <Type name="NFCAdapter">
40376           <descriptive>
40377               <description><p>
40378  NFCAdapter The default NFCAdapter object.
40379               </p></description>
40380           </descriptive>
40381         </Type>
40382         <ArgumentList/>
40383         <Raises>
40384           <RaiseException name="WebAPIException">
40385             <descriptive>
40386                 <description><p>
40387  with error type SecurityError, if the application does not have the privilege to call this method.
40388                 </p></description>
40389                 <description><p>
40390  with error type UnknownError in any other error case.
40391                 </p></description>
40392             </descriptive>
40393           </RaiseException>
40394         </Raises>
40395       </Operation>
40396       <Operation name="setExclusiveMode" id="::NFC::NFCManager::setExclusiveMode">
40397         <webidl>    void setExclusiveMode(boolean mode) raises(<ref>WebAPIException</ref>);</webidl>
40398         <descriptive>
40399             <brief>
40400  Gives priority to the current application for NFC operations over other applications when it is in the foreground.
40401             </brief>
40402            <description>
40403             <p>
40404 If the current application has the priority and is on the foreground, the system stops sending
40405 application control requests that are used to pick an application to handle a request about NFC.
40406 Such a request is usually sent, for example, when detecting an NFC tag or receiving an NDEF message
40407 from a connected NFC peer-to-peer target.
40408             </p>
40409             <p>
40410 When the current application moves to the background, it loses the priority.
40411             </p>
40412             <p>
40413 The exclusive mode can only be set when NFC is on. If NFC is off, the mode is ignored.
40414             </p>
40415            </description>
40416             <version>
40417  2.1
40418             </version>
40419             <privilege>
40420  http://tizen.org/privilege/nfc.common
40421             </privilege>
40422             <privilegelevel>
40423  public
40424             </privilegelevel>
40425             <Code> try {
40426    tizen.nfc.setExclusiveMode(true) ;
40427  } catch (err) {
40428    console.log (err.name + &quot;: &quot; + err.message);
40429  }
40430  </Code>
40431         </descriptive>
40432         <Type type="void"/>
40433         <ArgumentList>
40434           <Argument name="mode">
40435             <descriptive>
40436                 <description><p>
40437  The value of exclusive mode.
40438                 </p></description>
40439             </descriptive>
40440             <Type type="boolean"/>
40441           </Argument>
40442         </ArgumentList>
40443         <Raises>
40444           <RaiseException name="WebAPIException">
40445             <descriptive>
40446                 <description><p>
40447  with error type SecurityError, if the application does not have the privilege to call this method.
40448                 </p></description>
40449                 <description><p>
40450  with error type UnknownError in any other error case.
40451                 </p></description>
40452             </descriptive>
40453           </RaiseException>
40454         </Raises>
40455       </Operation>
40456     </Interface>
40457     <Interface name="NFCAdapter" id="::NFC::NFCAdapter">
40458       <webidl>  [NoInterfaceObject] interface NFCAdapter {
40459     readonly attribute boolean powered ;
40460
40461
40462     void setPowered(boolean state,
40463                     optional <ref>SuccessCallback</ref>? successCallback,
40464                     optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
40465
40466
40467     void setTagListener(<ref>NFCTagDetectCallback</ref> detectCallback,
40468                         optional <ref>NFCTagType</ref>[]? tagFilter) raises(<ref>WebAPIException</ref>);
40469
40470     void setPeerListener(<ref>NFCPeerDetectCallback</ref> detectCallback) raises(<ref>WebAPIException</ref>);
40471
40472     void unsetTagListener() raises(<ref>WebAPIException</ref>);
40473
40474     void unsetPeerListener() raises(<ref>WebAPIException</ref>);
40475
40476     <ref>NDEFMessage</ref>? getCachedMessage() raises(<ref>WebAPIException</ref>);
40477
40478   };</webidl>
40479       <descriptive>
40480           <brief>
40481  This interface provides access to control the adapter by offering methods to control local NFC behaviors, such as turning on/off an adapter.
40482           </brief>
40483           <version>
40484  1.0
40485           </version>
40486       </descriptive>
40487       <ExtendedAttributeList>
40488         <ExtendedAttribute name="NoInterfaceObject">
40489           <webidl>NoInterfaceObject</webidl>
40490         </ExtendedAttribute>
40491       </ExtendedAttributeList>
40492       <Attribute readonly="readonly" name="powered" id="::NFC::NFCAdapter::powered">
40493         <webidl>    readonly attribute boolean powered ;</webidl>
40494         <descriptive>
40495             <brief>
40496  The state of the NFC adapter.
40497             </brief>
40498             <version>
40499  1.0
40500             </version>
40501         </descriptive>
40502         <Type type="boolean"/>
40503       </Attribute>
40504       <Operation name="setPowered" id="::NFC::NFCAdapter::setPowered">
40505         <webidl>    void setPowered(boolean state,
40506                     optional <ref>SuccessCallback</ref>? successCallback,
40507                     optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
40508         <descriptive>
40509             <brief>
40510  Sets the power of an NFC adapter to either a on state or a off state.
40511             </brief>
40512            <description>
40513             <p>
40514 The ErrorCallback is launched with these error types:
40515             </p>
40516             <ul>
40517               <li>
40518  ServiceNotAvailableError - If the NFC device is busy.              </li>
40519               <li>
40520  UnknownError - If any other error occurs.              </li>
40521             </ul>
40522            </description>
40523             <version>
40524  1.0
40525             </version>
40526             <privilege>
40527  http://tizen.org/privilege/nfc.admin
40528             </privilege>
40529             <privilegelevel>
40530  public
40531             </privilegelevel>
40532             <Code> var gNfcAdapter;
40533  var onPowerOn = function(){ // Called when NFC adapter is powered on
40534    try {
40535      console.log(&quot;Power on succeed&quot;);
40536      // Implement NFC communication routines ...
40537      gNfcAdapter.setPowered(
40538          false, // Disable NFC adapter
40539          function () {console.log(&quot;Power off succeed&quot;); }, // Handle success
40540          function () {console.log(&quot;Power off failed&quot;); }); // Handle failure
40541    } catch (err) {
40542      console.log (err.name + &quot;: &quot; + err.message);
40543    }
40544  };
40545  try {
40546    gNfcAdapter = tizen.nfc.getDefaultAdapter();
40547    if (!gNfcAdapter.powered) {
40548      gNfcAdapter.setPowered(
40549          true, // Enable NFC adapter
40550          onPowerOn,                                     // Handle succes
40551          function () {console.log(&quot;Power on failed&quot;)}); // Handle failure
40552    } else {
40553      onPowerOn();
40554    }
40555  } catch (err) {
40556    console.log (err.name + &quot;: &quot; + err.message);
40557  }
40558  </Code>
40559         </descriptive>
40560         <Type type="void"/>
40561         <ArgumentList>
40562           <Argument name="state">
40563             <descriptive>
40564                 <description><p>
40565  The state of NFC adapter, <var>true</var> means on, <var>false</var> means off
40566                 </p></description>
40567             </descriptive>
40568             <Type type="boolean"/>
40569           </Argument>
40570           <Argument optional="optional" name="successCallback">
40571             <descriptive>
40572                 <description><p>
40573  The method to call when NFC adapter is 
40574 enabled or disabled successfully.
40575                 </p></description>
40576             </descriptive>
40577             <Type name="SuccessCallback" nullable="nullable"/>
40578           </Argument>
40579           <Argument optional="optional" name="errorCallback">
40580             <descriptive>
40581                 <description><p>
40582  The method to call when an error occurs.
40583                 </p></description>
40584             </descriptive>
40585             <Type name="ErrorCallback" nullable="nullable"/>
40586           </Argument>
40587         </ArgumentList>
40588         <Raises>
40589           <RaiseException name="WebAPIException">
40590             <descriptive>
40591                 <description><p>
40592  with error type TypeMismatchError, if the input parameter
40593 is not compatible with the expected type for that parameter.
40594                 </p></description>
40595                 <description><p>
40596  with error type SecurityError, if this functionality is not allowed
40597                 </p></description>
40598             </descriptive>
40599           </RaiseException>
40600         </Raises>
40601       </Operation>
40602       <Operation name="setTagListener" id="::NFC::NFCAdapter::setTagListener">
40603         <webidl>    void setTagListener(<ref>NFCTagDetectCallback</ref> detectCallback,
40604                         optional <ref>NFCTagType</ref>[]? tagFilter) raises(<ref>WebAPIException</ref>);</webidl>
40605         <descriptive>
40606             <brief>
40607  Registers a callback function to invoke when an NFC tag is detected.
40608             </brief>
40609            <description>
40610             <p>
40611 If the registration completes successfully, the detectCallback must be
40612 invoked when NFC tag is detected. 
40613             </p>
40614             <p>
40615 If no tagFilter is passed, it shall consider the default tagFilter, that is to set all tag types.
40616             </p>
40617            </description>
40618             <version>
40619  1.0
40620             </version>
40621             <privilege>
40622  http://tizen.org/privilege/nfc.tag
40623             </privilege>
40624             <privilegelevel>
40625  public
40626             </privilegelevel>
40627             <Code> var adapter = tizen.nfc.getDefaultAdapter();
40628  var onSuccessCB = {onattach : function(nfcTag) {
40629      console.log(&quot;NFC Tag's type is &quot; + nfcTag.type);
40630    }, ondetach : function() {
40631      console.log(&quot;NFC Tag is detached&quot;);
40632    }};
40633  adapter.setTagListener(onSuccessCB);
40634  </Code>
40635         </descriptive>
40636         <Type type="void"/>
40637         <ArgumentList>
40638           <Argument name="detectCallback">
40639             <descriptive>
40640                 <description><p>
40641  The method to invoke when a NFC tag is successfully detected.
40642                 </p></description>
40643             </descriptive>
40644             <Type name="NFCTagDetectCallback"/>
40645           </Argument>
40646           <Argument optional="optional" name="tagFilter">
40647             <descriptive>
40648                 <description><p>
40649  A filter to be used when specific NFC tag is detected.
40650                 </p></description>
40651             </descriptive>
40652             <Type type="array" nullable="nullable">
40653               <Type name="NFCTagType"/>
40654             </Type>
40655           </Argument>
40656         </ArgumentList>
40657         <Raises>
40658           <RaiseException name="WebAPIException">
40659             <descriptive>
40660                 <description><p>
40661  with error type TypeMismatchError, if the input parameter
40662 is not compatible with the expected type for that parameter.
40663                 </p></description>
40664                 <description><p>
40665  with error type SecurityError, if the application does not have the privilege to call this method.
40666                 </p></description>
40667                 <description><p>
40668  with error type ServiceNotAvailableError, if the NFC service is not available.
40669                 </p></description>
40670                 <description><p>
40671  with error type UnknownError in any other error case.
40672                 </p></description>
40673             </descriptive>
40674           </RaiseException>
40675         </Raises>
40676       </Operation>
40677       <Operation name="setPeerListener" id="::NFC::NFCAdapter::setPeerListener">
40678         <webidl>    void setPeerListener(<ref>NFCPeerDetectCallback</ref> detectCallback) raises(<ref>WebAPIException</ref>);</webidl>
40679         <descriptive>
40680             <brief>
40681  Registers a callback function to be invoked when NFC peer-to-peer target is detected.
40682             </brief>
40683            <description>
40684             <p>
40685 If the registration completes successfully, the detectCallback must be
40686 invoked when NFC peer-to-peer target is detected. 
40687             </p>
40688            </description>
40689             <version>
40690  1.0
40691             </version>
40692             <privilege>
40693  http://tizen.org/privilege/nfc.p2p
40694             </privilege>
40695             <privilegelevel>
40696  public
40697             </privilegelevel>
40698             <Code> var adapter = tizen.nfc.getDefaultAdapter();
40699  var onSuccessCB = {onattach : function(nfcPeer) {
40700      console.log(&quot;NFC Target is detected&quot;);
40701    }, ondetach : function() {
40702      console.log(&quot;NFC Target is detached&quot;);
40703    }};
40704  adapter.setPeerListener(onSuccessCB);
40705  </Code>
40706         </descriptive>
40707         <Type type="void"/>
40708         <ArgumentList>
40709           <Argument name="detectCallback">
40710             <descriptive>
40711                 <description><p>
40712  The method to invoke when a NFC peer-to-peer target is successfully detected.
40713                 </p></description>
40714             </descriptive>
40715             <Type name="NFCPeerDetectCallback"/>
40716           </Argument>
40717         </ArgumentList>
40718         <Raises>
40719           <RaiseException name="WebAPIException">
40720             <descriptive>
40721                 <description><p>
40722  with error type TypeMismatchError, if the input parameter
40723 is not compatible with the expected type for that parameter.
40724                 </p></description>
40725                 <description><p>
40726  with error type SecurityError, if the application does not have the privilege to call this method.
40727                 </p></description>
40728                 <description><p>
40729  with error type ServiceNotAvailableError, if the NFC service is not available.
40730                 </p></description>
40731                 <description><p>
40732  with error type UnknownError in any other error case.
40733                 </p></description>
40734             </descriptive>
40735           </RaiseException>
40736         </Raises>
40737       </Operation>
40738       <Operation name="unsetTagListener" id="::NFC::NFCAdapter::unsetTagListener">
40739         <webidl>    void unsetTagListener() raises(<ref>WebAPIException</ref>);</webidl>
40740         <descriptive>
40741             <brief>
40742  Unregisters the listener for detecting an NFC tag.
40743             </brief>
40744             <version>
40745  1.0
40746             </version>
40747             <privilege>
40748  http://tizen.org/privilege/nfc.tag
40749             </privilege>
40750             <privilegelevel>
40751  public
40752             </privilegelevel>
40753             <Code> var adapter = tizen.nfc.getDefaultAdapter();
40754
40755  // Receives NFCTag
40756  var onSuccessCB = {onattach : function(nfcTag) {
40757      console.log(&quot;NFC Tag's type is &quot; + nfcTag.type);
40758    }, ondetach : function() {
40759      console.log(&quot;NFC Tag is detached&quot;);
40760    }};
40761
40762  // Unregister the listener
40763  function unsetListen() {
40764    adapter.unsetTagListener();
40765  }
40766
40767  // Registers to be notified when NFC tag is detected.
40768  adapter.setTagListener(onSuccessCB)
40769  </Code>
40770         </descriptive>
40771         <Type type="void"/>
40772         <ArgumentList/>
40773         <Raises>
40774           <RaiseException name="WebAPIException">
40775             <descriptive>
40776                 <description><p>
40777  with error type SecurityError, if the application does not have the privilege to call this method.
40778                 </p></description>
40779                 <description><p>
40780  with error type ServiceNotAvailableError, if the NFC service is not available.
40781                 </p></description>
40782                 <description><p>
40783  with error type UnknownError in any other error case.
40784                 </p></description>
40785             </descriptive>
40786           </RaiseException>
40787         </Raises>
40788       </Operation>
40789       <Operation name="unsetPeerListener" id="::NFC::NFCAdapter::unsetPeerListener">
40790         <webidl>    void unsetPeerListener() raises(<ref>WebAPIException</ref>);</webidl>
40791         <descriptive>
40792             <brief>
40793  Unregisters the listener for detecting an NFC peer-to-peer target.
40794             </brief>
40795             <version>
40796  1.0
40797             </version>
40798             <privilege>
40799  http://tizen.org/privilege/nfc.p2p
40800             </privilege>
40801             <privilegelevel>
40802  public
40803             </privilegelevel>
40804             <Code> var adapter = tizen.nfc.getDefaultAdapter();
40805
40806  // Receives an NFC peer.
40807  var onSuccessCB = {onattach : function(nfcPeer) {
40808      console.log(&quot;NFC Target is detected&quot;);
40809    }, ondetach : function() {
40810      console.log(&quot;NFC Target is detached&quot;);
40811    }};
40812
40813  // Unregisters the listener.
40814  function unsetListen() {
40815    adapter.unsetPeerListener();
40816  }
40817
40818  // Registers to be notified when NFC peer-to-peer target is detected.
40819  adapter.setPeerListener(onSuccessCB)
40820  </Code>
40821         </descriptive>
40822         <Type type="void"/>
40823         <ArgumentList/>
40824         <Raises>
40825           <RaiseException name="WebAPIException">
40826             <descriptive>
40827                 <description><p>
40828  with error type SecurityError, if the application does not have the privilege to call this method.
40829                 </p></description>
40830                 <description><p>
40831  with error type ServiceNotAvailableError, if the NFC service is not available.
40832                 </p></description>
40833                 <description><p>
40834  with error type UnknownError in any other error case.
40835                 </p></description>
40836             </descriptive>
40837           </RaiseException>
40838         </Raises>
40839       </Operation>
40840       <Operation name="getCachedMessage" id="::NFC::NFCAdapter::getCachedMessage">
40841         <webidl>    <ref>NDEFMessage</ref>? getCachedMessage() raises(<ref>WebAPIException</ref>);</webidl>
40842         <descriptive>
40843             <brief>
40844  Gets the NDEF message cached when the tag is detected.
40845             </brief>
40846            <description>
40847             <p>
40848 If the operation completes successfully, the NDEF Message that was last read
40849 should be returned. 
40850             </p>
40851            </description>
40852             <version>
40853  1.0
40854             </version>
40855             <privilege>
40856  http://tizen.org/privilege/nfc.common
40857             </privilege>
40858             <privilegelevel>
40859  public
40860             </privilegelevel>
40861             <Code> // Gets the cached message
40862  var cachedMessage = tizen.nfc.getDefaultAdapter().getCachedMessage();
40863  </Code>
40864         </descriptive>
40865         <Type name="NDEFMessage" nullable="nullable">
40866           <descriptive>
40867               <description><p>
40868  The NDEF Message that was last read.
40869               </p></description>
40870           </descriptive>
40871         </Type>
40872         <ArgumentList/>
40873         <Raises>
40874           <RaiseException name="WebAPIException">
40875             <descriptive>
40876                 <description><p>
40877  with error type SecurityError, if the application does not have the privilege to call this method.
40878                 </p></description>
40879                 <description><p>
40880  with error type UnknownError in any other error case.
40881                 </p></description>
40882             </descriptive>
40883           </RaiseException>
40884         </Raises>
40885       </Operation>
40886     </Interface>
40887     <Interface name="NFCTag" id="::NFC::NFCTag">
40888       <webidl>  [NoInterfaceObject] interface NFCTag {
40889     readonly attribute <ref>NFCTagType</ref> type;
40890
40891     readonly attribute boolean isSupportedNDEF;
40892
40893     readonly attribute long ndefSize;
40894
40895     readonly attribute object properties;
40896
40897     readonly attribute boolean isConnected;
40898
40899
40900      void readNDEF(<ref>NDEFMessageReadCallback</ref> readCallback,
40901                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
40902
40903     void writeNDEF(<ref>NDEFMessage</ref> ndefMessage,
40904                    optional <ref>SuccessCallback</ref>? successCallback,
40905                    optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
40906
40907     void transceive(byte[] data,
40908                     <ref>ByteArraySuccessCallback</ref> dataCallback,
40909                     optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
40910   };</webidl>
40911       <descriptive>
40912           <brief>
40913  This interface provides accesses to the NFC tag.
40914           </brief>
40915           <version>
40916  1.0
40917           </version>
40918       </descriptive>
40919       <ExtendedAttributeList>
40920         <ExtendedAttribute name="NoInterfaceObject">
40921           <webidl>NoInterfaceObject</webidl>
40922         </ExtendedAttribute>
40923       </ExtendedAttributeList>
40924       <Attribute readonly="readonly" name="type" id="::NFC::NFCTag::type">
40925         <webidl>    readonly attribute <ref>NFCTagType</ref> type;</webidl>
40926         <descriptive>
40927             <brief>
40928  The type of the NFC tag.
40929             </brief>
40930             <version>
40931  1.0
40932             </version>
40933         </descriptive>
40934         <Type name="NFCTagType"/>
40935       </Attribute>
40936       <Attribute readonly="readonly" name="isSupportedNDEF" id="::NFC::NFCTag::isSupportedNDEF">
40937         <webidl>    readonly attribute boolean isSupportedNDEF;</webidl>
40938         <descriptive>
40939             <brief>
40940  An attribute to check if the NFC Tag supports NDEF format.
40941             </brief>
40942             <version>
40943  1.0
40944             </version>
40945         </descriptive>
40946         <Type type="boolean"/>
40947       </Attribute>
40948       <Attribute readonly="readonly" name="ndefSize" id="::NFC::NFCTag::ndefSize">
40949         <webidl>    readonly attribute long ndefSize;</webidl>
40950         <descriptive>
40951             <brief>
40952  The size of NDEF message stored in the tag.
40953             </brief>
40954             <version>
40955  1.0
40956             </version>
40957         </descriptive>
40958         <Type type="long"/>
40959       </Attribute>
40960       <Attribute readonly="readonly" name="properties" id="::NFC::NFCTag::properties">
40961         <webidl>    readonly attribute object properties;</webidl>
40962         <descriptive>
40963             <brief>
40964  The value is all tag information.
40965             </brief>
40966            <description>
40967             <p>
40968 It is pairs of key and value.
40969 The array's index is the pair's key and value is its value.
40970             </p>
40971            </description>
40972             <Code> var adapter = tizen.nfc.getDefaultAdapter();
40973  var onSuccessCB = {onattach : function(nfcTag) {
40974      console.log(&quot;NFC Tag's type is &quot; + nfcTag.type);
40975      for(var i in nfcTag.properties) {
40976        console.log(&quot;key:&quot; + i + &quot; value:&quot; + nfcTag.properties[i]);
40977      }
40978    }, ondetach : function() {
40979      console.log(&quot;NFC Tag is detached&quot;);
40980    }};
40981  adapter.setTagListener(onSuccessCB);
40982
40983  </Code>
40984             <version>
40985  1.0
40986             </version>
40987         </descriptive>
40988         <Type type="object"/>
40989       </Attribute>
40990       <Attribute readonly="readonly" name="isConnected" id="::NFC::NFCTag::isConnected">
40991         <webidl>    readonly attribute boolean isConnected;</webidl>
40992         <descriptive>
40993             <brief>
40994  The value is necessary to check if this tag is connected.
40995             </brief>
40996             <version>
40997  1.0
40998             </version>
40999         </descriptive>
41000         <Type type="boolean"/>
41001       </Attribute>
41002       <Operation name="readNDEF" id="::NFC::NFCTag::readNDEF">
41003         <webidl>     void readNDEF(<ref>NDEFMessageReadCallback</ref> readCallback,
41004                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
41005         <descriptive>
41006             <brief>
41007  Reads the NDEF data from the NFC tag.
41008             </brief>
41009            <description>
41010             <p>
41011 The ErrorCallback is launched with these error types:
41012             </p>
41013             <ul>
41014               <li>
41015  ServiceNotAvailableError - If the NFC service is not available.              </li>
41016               <li>
41017  UnknownError - If any other error occurs.              </li>
41018             </ul>
41019            </description>
41020             <version>
41021  1.0
41022             </version>
41023             <privilege>
41024  http://tizen.org/privilege/nfc.tag
41025             </privilege>
41026             <privilegelevel>
41027  public
41028             </privilegelevel>
41029         </descriptive>
41030         <Type type="void"/>
41031         <ArgumentList>
41032           <Argument name="readCallback">
41033             <descriptive>
41034                 <description><p>
41035  The method invoked in case of successfully reading the NDEF Data.
41036                 </p></description>
41037             </descriptive>
41038             <Type name="NDEFMessageReadCallback"/>
41039           </Argument>
41040           <Argument optional="optional" name="errorCallback">
41041             <descriptive>
41042                 <description><p>
41043  The method invoked in case of any error during reading the NDEF Data.
41044                 </p></description>
41045             </descriptive>
41046             <Type name="ErrorCallback" nullable="nullable"/>
41047           </Argument>
41048         </ArgumentList>
41049         <Raises>
41050           <RaiseException name="WebAPIException">
41051             <descriptive>
41052                 <description><p>
41053  with error type TypeMismatchError, if the input parameter
41054 is not compatible with the expected type for that parameter.
41055                 </p></description>
41056                 <description><p>
41057  with error type SecurityError, if the application does not have the privilege to call this method.
41058                 </p></description>
41059                 <description><p>
41060  with error type NotSupportedError, if current Tag doesn't support NDEF format.
41061                 </p></description>
41062             </descriptive>
41063           </RaiseException>
41064         </Raises>
41065       </Operation>
41066       <Operation name="writeNDEF" id="::NFC::NFCTag::writeNDEF">
41067         <webidl>    void writeNDEF(<ref>NDEFMessage</ref> ndefMessage,
41068                    optional <ref>SuccessCallback</ref>? successCallback,
41069                    optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
41070         <descriptive>
41071             <brief>
41072  Writes the NDEF data to the NFC tag.
41073             </brief>
41074            <description>
41075             <p>
41076 The ErrorCallback is launched with these error types:
41077             </p>
41078             <ul>
41079               <li>
41080  InvalidValuesError: If any of the input parameters contain an invalid value.              </li>
41081               <li>
41082  ServiceNotAvailableError: If the NFC service is not available.               </li>
41083               <li>
41084  UnknownError: In any other error case.               </li>
41085             </ul>
41086            </description>
41087             <version>
41088  1.0
41089             </version>
41090             <privilege>
41091  http://tizen.org/privilege/nfc.tag
41092             </privilege>
41093             <privilegelevel>
41094  public
41095             </privilegelevel>
41096         </descriptive>
41097         <Type type="void"/>
41098         <ArgumentList>
41099           <Argument name="ndefMessage">
41100             <descriptive>
41101                 <description><p>
41102  The NDEF message to write to NFC tag.
41103                 </p></description>
41104             </descriptive>
41105             <Type name="NDEFMessage"/>
41106           </Argument>
41107           <Argument optional="optional" name="successCallback">
41108             <descriptive>
41109                 <description><p>
41110  The method invoked in case of successfully writing the NDEF Data.
41111                 </p></description>
41112             </descriptive>
41113             <Type name="SuccessCallback" nullable="nullable"/>
41114           </Argument>
41115           <Argument optional="optional" name="errorCallback">
41116             <descriptive>
41117                 <description><p>
41118  The method invoked in case of any error during writing the NDEF Data.
41119                 </p></description>
41120             </descriptive>
41121             <Type name="ErrorCallback" nullable="nullable"/>
41122           </Argument>
41123         </ArgumentList>
41124         <Raises>
41125           <RaiseException name="WebAPIException">
41126             <descriptive>
41127                 <description><p>
41128  with error type TypeMismatchError, if the input parameter
41129 is not compatible with the expected type for that parameter.
41130                 </p></description>
41131                 <description><p>
41132  with error type SecurityError, if the application does not have the privilege to call this method.
41133                 </p></description>
41134                 <description><p>
41135  with error type NotSupportedError, if current Tag doesn't support NDEF format.
41136                 </p></description>
41137             </descriptive>
41138           </RaiseException>
41139         </Raises>
41140       </Operation>
41141       <Operation name="transceive" id="::NFC::NFCTag::transceive">
41142         <webidl>    void transceive(byte[] data,
41143                     <ref>ByteArraySuccessCallback</ref> dataCallback,
41144                     optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
41145         <descriptive>
41146             <brief>
41147  Access the raw format card. The transceive function is the only way to access the raw format card (not formatted).
41148 Each tag type requires its own command to access tags.
41149 This API provides low level access of tag operation. (Note that you must know each tag technology.)
41150             </brief>
41151            <description>
41152             <p>
41153 The ErrorCallback is launched with these error types:
41154             </p>
41155             <ul>
41156               <li>
41157  InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
41158               <li>
41159  ServiceNotAvailableError - If the NFC service is not available.              </li>
41160               <li>
41161  UnknownError - If any other error occurs.              </li>
41162             </ul>
41163            </description>
41164             <version>
41165  1.0
41166             </version>
41167             <privilege>
41168  http://tizen.org/privilege/nfc.tag
41169             </privilege>
41170             <privilegelevel>
41171  public
41172             </privilegelevel>
41173         </descriptive>
41174         <Type type="void"/>
41175         <ArgumentList>
41176           <Argument name="data">
41177             <descriptive>
41178                 <description><p>
41179  The raw data to transceive with the NFC tag.
41180                 </p></description>
41181             </descriptive>
41182             <Type type="array">
41183               <Type type="byte"/>
41184             </Type>
41185           </Argument>
41186           <Argument name="dataCallback">
41187             <descriptive>
41188                 <description><p>
41189  Invoked in case of successfully transceiving the raw data.
41190                 </p></description>
41191             </descriptive>
41192             <Type name="ByteArraySuccessCallback"/>
41193           </Argument>
41194           <Argument optional="optional" name="errorCallback">
41195             <descriptive>
41196                 <description><p>
41197  Invoked in case of any error during transceiving the NDEF Data.
41198                 </p></description>
41199             </descriptive>
41200             <Type name="ErrorCallback" nullable="nullable"/>
41201           </Argument>
41202         </ArgumentList>
41203         <Raises>
41204           <RaiseException name="WebAPIException">
41205             <descriptive>
41206                 <description><p>
41207  with error type TypeMismatchError, if the input parameter
41208 is not compatible with the expected type for that parameter.
41209                 </p></description>
41210                 <description><p>
41211  with error type SecurityError, if the application does not have the privilege to call this method.
41212                 </p></description>
41213             </descriptive>
41214           </RaiseException>
41215         </Raises>
41216       </Operation>
41217     </Interface>
41218     <Interface name="NFCPeer" id="::NFC::NFCPeer">
41219       <webidl>  [NoInterfaceObject] interface NFCPeer {
41220     readonly attribute boolean isConnected;
41221     
41222     void setReceiveNDEFListener(<ref>NDEFMessageReadCallback</ref> successCallback) raises(<ref>WebAPIException</ref>);
41223
41224     void unsetReceiveNDEFListener() raises(<ref>WebAPIException</ref>);
41225
41226     void sendNDEF(<ref>NDEFMessage</ref> ndefMessage,
41227                   optional <ref>SuccessCallback</ref>? successCallback,
41228                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
41229
41230   };</webidl>
41231       <descriptive>
41232           <brief>
41233  An interface that provides access to the NFC peer-to-peer target.
41234           </brief>
41235           <version>
41236  1.0
41237           </version>
41238       </descriptive>
41239       <ExtendedAttributeList>
41240         <ExtendedAttribute name="NoInterfaceObject">
41241           <webidl>NoInterfaceObject</webidl>
41242         </ExtendedAttribute>
41243       </ExtendedAttributeList>
41244       <Attribute readonly="readonly" name="isConnected" id="::NFC::NFCPeer::isConnected">
41245         <webidl>    readonly attribute boolean isConnected;</webidl>
41246         <descriptive>
41247             <brief>
41248  The value is necessary to check if this NFC peer-to-peer target is connected.
41249             </brief>
41250             <version>
41251  1.0
41252             </version>
41253         </descriptive>
41254         <Type type="boolean"/>
41255       </Attribute>
41256       <Operation name="setReceiveNDEFListener" id="::NFC::NFCPeer::setReceiveNDEFListener">
41257         <webidl>    void setReceiveNDEFListener(<ref>NDEFMessageReadCallback</ref> successCallback) raises(<ref>WebAPIException</ref>);</webidl>
41258         <descriptive>
41259             <brief>
41260  Registers a callback function to be invoked when an NDEF message is received from the connected NFC peer-to-peer target.
41261             </brief>
41262             <version>
41263  1.0
41264             </version>
41265             <privilege>
41266  http://tizen.org/privilege/nfc.p2p
41267             </privilege>
41268             <privilegelevel>
41269  public
41270             </privilegelevel>
41271             <Code> var adapter = tizen.nfc.getDefaultAdapter();
41272
41273  // Receives NFCPeer
41274  var onSuccessCB = {onattach : function(nfcPeer) {
41275      console.log(&quot;NFC Target is detected&quot;);
41276      nfcPeer.setReceiveNDEFListener(
41277          function(message){
41278             console.log(&quot;Receive message&quot;);
41279          });
41280    }, ondetach : function() {
41281      console.log(&quot;NFC Target is detached&quot;);
41282    }};
41283
41284  adapter.setPeerListener(onSuccessCB);
41285  </Code>
41286         </descriptive>
41287         <Type type="void"/>
41288         <ArgumentList>
41289           <Argument name="successCallback">
41290             <descriptive>
41291                 <description><p>
41292  Invoked in case of successful receiving the message.
41293                 </p></description>
41294             </descriptive>
41295             <Type name="NDEFMessageReadCallback"/>
41296           </Argument>
41297         </ArgumentList>
41298         <Raises>
41299           <RaiseException name="WebAPIException">
41300             <descriptive>
41301                 <description><p>
41302  with error type TypeMismatchError, if the input parameter
41303 is not compatible with the expected type for that parameter.
41304                 </p></description>
41305                 <description><p>
41306  with error type SecurityError, if the application does not have the privilege to call this method.
41307                 </p></description>
41308                 <description><p>
41309  with error type ServiceNotAvailableError, if the NFC service is not available.
41310                 </p></description>
41311                 <description><p>
41312  with error type UnknownError in any other error case.
41313                 </p></description>
41314             </descriptive>
41315           </RaiseException>
41316         </Raises>
41317       </Operation>
41318       <Operation name="unsetReceiveNDEFListener" id="::NFC::NFCPeer::unsetReceiveNDEFListener">
41319         <webidl>    void unsetReceiveNDEFListener() raises(<ref>WebAPIException</ref>);</webidl>
41320         <descriptive>
41321             <brief>
41322  Unregisters the listener for receiving NDEF messages from the NFC peer-to-peer target connected.
41323             </brief>
41324             <version>
41325  1.0
41326             </version>
41327             <privilege>
41328  http://tizen.org/privilege/nfc.p2p
41329             </privilege>
41330             <privilegelevel>
41331  public
41332             </privilegelevel>
41333             <Code> var adapter = tizen.nfc.getDefaultAdapter();
41334  var onSuccessCB = {onattach : function(nfcPeer) {
41335      console.log(&quot;NFC Target is detected&quot;);
41336      nfcPeer.setReceiveNDEFListener(
41337          function(message){
41338             console.log(&quot;Receive message&quot;);
41339             nfcPeer.unsetReceiveNDEFListener();
41340          });
41341    }, ondetach : function() {
41342      console.log(&quot;NFC Target is detached&quot;);
41343    }};
41344  }
41345
41346  adapter.setPeerListener(onSuccessCB);
41347  </Code>
41348         </descriptive>
41349         <Type type="void"/>
41350         <ArgumentList/>
41351         <Raises>
41352           <RaiseException name="WebAPIException">
41353             <descriptive>
41354                 <description><p>
41355  with error type SecurityError, if the application does not have the privilege to call this method.
41356                 </p></description>
41357                 <description><p>
41358  with error type ServiceNotAvailableError, if the NFC service is not available.
41359                 </p></description>
41360                 <description><p>
41361  with error type UnknownError in any other error case.
41362                 </p></description>
41363             </descriptive>
41364           </RaiseException>
41365         </Raises>
41366       </Operation>
41367       <Operation name="sendNDEF" id="::NFC::NFCPeer::sendNDEF">
41368         <webidl>    void sendNDEF(<ref>NDEFMessage</ref> ndefMessage,
41369                   optional <ref>SuccessCallback</ref>? successCallback,
41370                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
41371         <descriptive>
41372             <brief>
41373  Sends data to the NFC peer-to-peer target.
41374             </brief>
41375            <description>
41376             <p>
41377 The ErrorCallback is launched with these error types:
41378             </p>
41379             <ul>
41380               <li>
41381  InvalidValuesError: If any of the input parameters contain an invalid value.              </li>
41382               <li>
41383  ServiceNotAvailableError: If the NFC service is not available.               </li>
41384               <li>
41385  UnknownError: In any other error case.               </li>
41386             </ul>
41387            </description>
41388             <version>
41389  1.0
41390             </version>
41391             <privilege>
41392  http://tizen.org/privilege/nfc.p2p
41393             </privilege>
41394             <privilegelevel>
41395  public
41396             </privilegelevel>
41397         </descriptive>
41398         <Type type="void"/>
41399         <ArgumentList>
41400           <Argument name="ndefMessage">
41401             <descriptive>
41402                 <description><p>
41403  The NDEF message to send to NFC peer-to-peer target.
41404                 </p></description>
41405             </descriptive>
41406             <Type name="NDEFMessage"/>
41407           </Argument>
41408           <Argument optional="optional" name="successCallback">
41409             <descriptive>
41410                 <description><p>
41411  Invoked in case of successfully sending data to NFC peer-to-peer target.
41412                 </p></description>
41413             </descriptive>
41414             <Type name="SuccessCallback" nullable="nullable"/>
41415           </Argument>
41416           <Argument optional="optional" name="errorCallback">
41417             <descriptive>
41418                 <description><p>
41419  Invoked in case of any error during sending.
41420                 </p></description>
41421             </descriptive>
41422             <Type name="ErrorCallback" nullable="nullable"/>
41423           </Argument>
41424         </ArgumentList>
41425         <Raises>
41426           <RaiseException name="WebAPIException">
41427             <descriptive>
41428                 <description><p>
41429  with error type TypeMismatchError, if the input parameter
41430 is not compatible with the expected type for that parameter.
41431                 </p></description>
41432                 <description><p>
41433  with error type SecurityError, if the application does not have the privilege to call this method.
41434                 </p></description>
41435             </descriptive>
41436           </RaiseException>
41437         </Raises>
41438       </Operation>
41439     </Interface>
41440     <Interface name="NDEFMessage" id="::NFC::NDEFMessage">
41441       <webidl>  [Constructor(),
41442    Constructor(<ref>NDEFRecord</ref>[] ndefRecords),
41443    Constructor(byte[] rawData)]
41444   interface NDEFMessage {
41445     readonly attribute long recordCount;
41446     
41447     attribute <ref>NDEFRecord</ref>[] records;
41448
41449     byte[] toByte() raises(<ref>WebAPIException</ref>);
41450   };</webidl>
41451       <descriptive>
41452           <brief>
41453  The NDEFMessage interface. An NDEFmessage is composed of multiple NDEFRecords.
41454 The NDEFMessage must have at least one NDEFRecord.
41455           </brief>
41456           <version>
41457  1.0
41458           </version>
41459       </descriptive>
41460       <ExtendedAttributeList>
41461         <ExtendedAttribute name="Constructor">
41462           <webidl>Constructor()</webidl>
41463           <ArgumentList/>
41464         </ExtendedAttribute>
41465         <ExtendedAttribute name="Constructor">
41466           <webidl>   Constructor(<ref>NDEFRecord</ref>[] ndefRecords)</webidl>
41467           <ArgumentList>
41468             <Argument name="ndefRecords">
41469               <Type type="array">
41470                 <Type name="NDEFRecord"/>
41471               </Type>
41472             </Argument>
41473           </ArgumentList>
41474         </ExtendedAttribute>
41475         <ExtendedAttribute name="Constructor">
41476           <webidl>   Constructor(byte[] rawData)</webidl>
41477           <ArgumentList>
41478             <Argument name="rawData">
41479               <Type type="array">
41480                 <Type type="byte"/>
41481               </Type>
41482             </Argument>
41483           </ArgumentList>
41484         </ExtendedAttribute>
41485       </ExtendedAttributeList>
41486       <Attribute readonly="readonly" name="recordCount" id="::NFC::NDEFMessage::recordCount">
41487         <webidl>    readonly attribute long recordCount;</webidl>
41488         <descriptive>
41489             <brief>
41490  The number of records in the NDEFMessage.
41491             </brief>
41492             <version>
41493  1.0
41494             </version>
41495         </descriptive>
41496         <Type type="long"/>
41497       </Attribute>
41498       <Attribute name="records" id="::NFC::NDEFMessage::records">
41499         <webidl>    attribute <ref>NDEFRecord</ref>[] records;</webidl>
41500         <descriptive>
41501             <brief>
41502  The array of NDEFRecord objects in the NDEFMessage.
41503             </brief>
41504             <version>
41505  1.0
41506             </version>
41507         </descriptive>
41508         <Type type="array">
41509           <Type name="NDEFRecord"/>
41510         </Type>
41511       </Attribute>
41512       <Operation name="toByte" id="::NFC::NDEFMessage::toByte">
41513         <webidl>    byte[] toByte() raises(<ref>WebAPIException</ref>);</webidl>
41514         <descriptive>
41515             <brief>
41516  Gets the serial byte array of the NDEF message.
41517             </brief>
41518            <description>
41519             <p>
41520 If the operation completes successfully, it returns the serial byte array of the NDEF message.
41521             </p>
41522            </description>
41523             <version>
41524  1.0
41525             </version>
41526             <Code> // Gets the cached message.
41527  var cachedMessage = tizen.nfc.getDefaultAdapter().getCachedMessage();
41528  var raw = cachedMessage.toByte();
41529  </Code>
41530         </descriptive>
41531         <Type type="array">
41532           <descriptive>
41533               <description><p>
41534  byte[] The raw data in the NDEFMessage.
41535               </p></description>
41536           </descriptive>
41537           <Type type="byte"/>
41538         </Type>
41539         <ArgumentList/>
41540         <Raises>
41541           <RaiseException name="WebAPIException">
41542             <descriptive>
41543                 <description><p>
41544  with error type TypeMismatchError, if the records whose type is not NDEFRecord are included in the NDEFMessage.
41545                 </p></description>
41546                 <description><p>
41547  with error type UnknownError in any other error case.
41548                 </p></description>
41549             </descriptive>
41550           </RaiseException>
41551         </Raises>
41552       </Operation>
41553     </Interface>
41554     <Interface name="NDEFRecord" id="::NFC::NDEFRecord">
41555       <webidl>  [Constructor(short tnf, byte[] type, byte[] payload, optional byte[]? id),
41556    Constructor(byte[] raw_data)]
41557   interface NDEFRecord {
41558     readonly attribute short tnf;
41559
41560     readonly attribute byte[] type;
41561
41562     readonly attribute byte[] id;
41563     
41564     readonly attribute byte[] payload;
41565   };</webidl>
41566       <descriptive>
41567           <brief>
41568  The NDEFRecord interface.
41569           </brief>
41570           <version>
41571  1.0
41572           </version>
41573       </descriptive>
41574       <ExtendedAttributeList>
41575         <ExtendedAttribute name="Constructor">
41576           <webidl>Constructor(short tnf, byte[] type, byte[] payload, optional byte[]? id)</webidl>
41577           <ArgumentList>
41578             <Argument name="tnf">
41579               <Type type="short"/>
41580             </Argument>
41581             <Argument name="type">
41582               <Type type="array">
41583                 <Type type="byte"/>
41584               </Type>
41585             </Argument>
41586             <Argument name="payload">
41587               <Type type="array">
41588                 <Type type="byte"/>
41589               </Type>
41590             </Argument>
41591             <Argument optional="optional" name="id">
41592               <Type type="array" nullable="nullable">
41593                 <Type type="byte"/>
41594               </Type>
41595             </Argument>
41596           </ArgumentList>
41597         </ExtendedAttribute>
41598         <ExtendedAttribute name="Constructor">
41599           <webidl>   Constructor(byte[] raw_data)</webidl>
41600           <ArgumentList>
41601             <Argument name="raw_data">
41602               <Type type="array">
41603                 <Type type="byte"/>
41604               </Type>
41605             </Argument>
41606           </ArgumentList>
41607         </ExtendedAttribute>
41608       </ExtendedAttributeList>
41609       <Attribute readonly="readonly" name="tnf" id="::NFC::NDEFRecord::tnf">
41610         <webidl>    readonly attribute short tnf;</webidl>
41611         <descriptive>
41612             <brief>
41613  The value of the record type (TNF value).
41614             </brief>
41615            <description>
41616             <p>
41617 At least the following values must be supported:
41618             </p>
41619             <ul>
41620               <li>
41621 NFC_RECORD_TNF_EMPTY - The record type is empty              </li>
41622               <li>
41623 NFC_RECORD_TNF_WELL_KNOWN - Record Type Definition (RTD) format [NFC RTD]              </li>
41624               <li>
41625 NFC_RECORD_TNF_MIME_MEDIA - MIME media types in RFC 2046 [RFC 2046]              </li>
41626               <li>
41627 NFC_RECORD_TNF_URI - Absolute URI as defined in RFC 3986 [RFC 3986]              </li>
41628               <li>
41629 NFC_RECORD_TNF_EXTERNAL_RTD - NFC forum external type [NFC RTD]              </li>
41630               <li>
41631 NFC_RECORD_TNF_UNKNOWN - The payload type is unknown              </li>
41632               <li>
41633 NFC_RECORD_TNF_UNCHANGED - It means the payload is an intermediate or final chunk of a chunked NDEF record              </li>
41634             </ul>
41635            </description>
41636             <version>
41637  1.0
41638             </version>
41639         </descriptive>
41640         <Type type="short"/>
41641       </Attribute>
41642       <Attribute readonly="readonly" name="type" id="::NFC::NDEFRecord::type">
41643         <webidl>    readonly attribute byte[] type;</webidl>
41644         <descriptive>
41645             <brief>
41646  The specified type in byte array.
41647             </brief>
41648            <description>
41649             <p>
41650 The byte array contains <var>0</var> to <var>255</var> bytes.
41651             </p>
41652            </description>
41653             <version>
41654  1.0
41655             </version>
41656         </descriptive>
41657         <Type type="array">
41658           <Type type="byte"/>
41659         </Type>
41660       </Attribute>
41661       <Attribute readonly="readonly" name="id" id="::NFC::NDEFRecord::id">
41662         <webidl>    readonly attribute byte[] id;</webidl>
41663         <descriptive>
41664             <brief>
41665  The record ID.
41666             </brief>
41667            <description>
41668             <p>
41669 The byte array contains <var>0</var> to <var>255</var> bytes.
41670             </p>
41671             <p>
41672 By default, this attribute is set to an empty array.
41673             </p>
41674            </description>
41675             <version>
41676  1.0
41677             </version>
41678         </descriptive>
41679         <Type type="array">
41680           <Type type="byte"/>
41681         </Type>
41682       </Attribute>
41683       <Attribute readonly="readonly" name="payload" id="::NFC::NDEFRecord::payload">
41684         <webidl>    readonly attribute byte[] payload;</webidl>
41685         <descriptive>
41686             <brief>
41687  The record payload.
41688             </brief>
41689            <description>
41690             <p>
41691 The byte array contains <var>0</var> to <var>(2 ** 32 - 1)</var> bytes.
41692             </p>
41693            </description>
41694             <version>
41695  1.0
41696             </version>
41697             <Code> // Creates a new NDEF record.
41698  var newRecord = new tizen.NDEFRecordURI(&quot;https://www.tizen.org/&quot;);
41699  var payload = newRecord.payload;
41700  </Code>
41701         </descriptive>
41702         <Type type="array">
41703           <Type type="byte"/>
41704         </Type>
41705       </Attribute>
41706     </Interface>
41707     <Interface name="NDEFRecordText" id="::NFC::NDEFRecordText">
41708       <webidl>  [Constructor(DOMString text, DOMString languageCode, optional DOMString? encoding)]
41709   interface NDEFRecordText : <ref>NDEFRecord</ref> {
41710     readonly attribute DOMString text;
41711     
41712     readonly attribute DOMString languageCode;
41713     
41714     readonly attribute <ref>NDEFRecordTextEncoding</ref> encoding;
41715   };</webidl>
41716       <descriptive>
41717           <brief>
41718  The NDEFRecord that has the text type payload.
41719           </brief>
41720           <version>
41721  1.0
41722           </version>
41723       </descriptive>
41724       <ExtendedAttributeList>
41725         <ExtendedAttribute name="Constructor">
41726           <webidl>Constructor(DOMString text, DOMString languageCode, optional DOMString? encoding)</webidl>
41727           <ArgumentList>
41728             <Argument name="text">
41729               <Type type="DOMString"/>
41730             </Argument>
41731             <Argument name="languageCode">
41732               <Type type="DOMString"/>
41733             </Argument>
41734             <Argument optional="optional" name="encoding">
41735               <Type type="DOMString" nullable="nullable"/>
41736             </Argument>
41737           </ArgumentList>
41738         </ExtendedAttribute>
41739       </ExtendedAttributeList>
41740       <InterfaceInheritance>
41741         <Name name="NDEFRecord"/>
41742       </InterfaceInheritance>
41743       <Attribute readonly="readonly" name="text" id="::NFC::NDEFRecordText::text">
41744         <webidl>    readonly attribute DOMString text;</webidl>
41745         <descriptive>
41746             <brief>
41747  The encoded text.
41748             </brief>
41749             <version>
41750  1.0
41751             </version>
41752         </descriptive>
41753         <Type type="DOMString"/>
41754       </Attribute>
41755       <Attribute readonly="readonly" name="languageCode" id="::NFC::NDEFRecordText::languageCode">
41756         <webidl>    readonly attribute DOMString languageCode;</webidl>
41757         <descriptive>
41758             <brief>
41759  The language code string value, followed by IANA[RFC 3066] (for example, en-US, ko-KR).
41760             </brief>
41761             <version>
41762  1.0
41763             </version>
41764         </descriptive>
41765         <Type type="DOMString"/>
41766       </Attribute>
41767       <Attribute readonly="readonly" name="encoding" id="::NFC::NDEFRecordText::encoding">
41768         <webidl>    readonly attribute <ref>NDEFRecordTextEncoding</ref> encoding;</webidl>
41769         <descriptive>
41770             <brief>
41771  The encoding type. By default, this attribute is set to UTF8.
41772             </brief>
41773             <version>
41774  1.0
41775             </version>
41776         </descriptive>
41777         <Type name="NDEFRecordTextEncoding"/>
41778       </Attribute>
41779     </Interface>
41780     <Interface name="NDEFRecordURI" id="::NFC::NDEFRecordURI">
41781       <webidl>  [Constructor(DOMString uri)]
41782   interface NDEFRecordURI : <ref>NDEFRecord</ref> {
41783     readonly attribute DOMString uri;
41784   };</webidl>
41785       <descriptive>
41786           <brief>
41787  The NDEFRecord that has URI type payload.
41788           </brief>
41789           <version>
41790  1.0
41791           </version>
41792       </descriptive>
41793       <ExtendedAttributeList>
41794         <ExtendedAttribute name="Constructor">
41795           <webidl>Constructor(DOMString uri)</webidl>
41796           <ArgumentList>
41797             <Argument name="uri">
41798               <Type type="DOMString"/>
41799             </Argument>
41800           </ArgumentList>
41801         </ExtendedAttribute>
41802       </ExtendedAttributeList>
41803       <InterfaceInheritance>
41804         <Name name="NDEFRecord"/>
41805       </InterfaceInheritance>
41806       <Attribute readonly="readonly" name="uri" id="::NFC::NDEFRecordURI::uri">
41807         <webidl>    readonly attribute DOMString uri;</webidl>
41808         <descriptive>
41809             <brief>
41810  The URI string that is stored in the payload.
41811             </brief>
41812             <version>
41813  1.0
41814             </version>
41815         </descriptive>
41816         <Type type="DOMString"/>
41817       </Attribute>
41818     </Interface>
41819     <Interface name="NDEFRecordMedia" id="::NFC::NDEFRecordMedia">
41820       <webidl>  [Constructor(DOMString mimeType, byte[] data)]
41821   interface NDEFRecordMedia : <ref>NDEFRecord</ref> {
41822     readonly attribute DOMString mimeType;
41823   };</webidl>
41824       <descriptive>
41825           <brief>
41826  The NDEFRecord that has mime type payload.
41827           </brief>
41828           <version>
41829  1.0
41830           </version>
41831       </descriptive>
41832       <ExtendedAttributeList>
41833         <ExtendedAttribute name="Constructor">
41834           <webidl>Constructor(DOMString mimeType, byte[] data)</webidl>
41835           <descriptive>
41836              <description>
41837               <ul>
41838                 <li>
41839 <b>data</b> : Mime type payload. The byte array contains <var>0</var> to <var>(2 ** 32 - 1)</var> bytes.                </li>
41840               </ul>
41841              </description>
41842           </descriptive>
41843           <ArgumentList>
41844             <Argument name="mimeType">
41845               <Type type="DOMString"/>
41846             </Argument>
41847             <Argument name="data">
41848               <Type type="array">
41849                 <Type type="byte"/>
41850               </Type>
41851             </Argument>
41852           </ArgumentList>
41853         </ExtendedAttribute>
41854       </ExtendedAttributeList>
41855       <InterfaceInheritance>
41856         <Name name="NDEFRecord"/>
41857       </InterfaceInheritance>
41858       <Attribute readonly="readonly" name="mimeType" id="::NFC::NDEFRecordMedia::mimeType">
41859         <webidl>    readonly attribute DOMString mimeType;</webidl>
41860         <descriptive>
41861             <brief>
41862  The mime type [RFC 2046] (for example, text/plain, image/jpeg ).
41863             </brief>
41864             <version>
41865  1.0
41866             </version>
41867         </descriptive>
41868         <Type type="DOMString"/>
41869       </Attribute>
41870     </Interface>
41871     <Interface name="NFCTagDetectCallback" id="::NFC::NFCTagDetectCallback">
41872       <webidl>  [Callback, NoInterfaceObject] interface NFCTagDetectCallback {
41873     void onattach(<ref>NFCTag</ref> nfcTag);
41874     void ondetach();
41875   };</webidl>
41876       <descriptive>
41877           <brief>
41878  The success callback to be invoked when an NFC tag is detected or lost.
41879           </brief>
41880          <description>
41881           <p>
41882 This callback interface specifies two methods:
41883           </p>
41884           <ul>
41885             <li>
41886  onattach: invoked when an NFC tag is detected            </li>
41887             <li>
41888  ondetach: invoked when the NFC tag is lost            </li>
41889           </ul>
41890           <p>
41891 It is used in NFCAdapter.setTagListener().
41892           </p>
41893          </description>
41894           <version>
41895  1.0
41896           </version>
41897       </descriptive>
41898       <ExtendedAttributeList>
41899         <ExtendedAttribute name="Callback">
41900           <webidl>Callback</webidl>
41901         </ExtendedAttribute>
41902         <ExtendedAttribute name="NoInterfaceObject">
41903           <webidl> NoInterfaceObject</webidl>
41904         </ExtendedAttribute>
41905       </ExtendedAttributeList>
41906       <Operation name="onattach" id="::NFC::NFCTagDetectCallback::onattach">
41907         <webidl>    void onattach(<ref>NFCTag</ref> nfcTag);</webidl>
41908         <descriptive>
41909             <brief>
41910  The method invoked when a tag is attached.
41911             </brief>
41912             <version>
41913  1.0
41914             </version>
41915         </descriptive>
41916         <Type type="void"/>
41917         <ArgumentList>
41918           <Argument name="nfcTag">
41919             <descriptive>
41920                 <description><p>
41921  The attached NFC tag.
41922                 </p></description>
41923             </descriptive>
41924             <Type name="NFCTag"/>
41925           </Argument>
41926         </ArgumentList>
41927       </Operation>
41928       <Operation name="ondetach" id="::NFC::NFCTagDetectCallback::ondetach">
41929         <webidl>    void ondetach();</webidl>
41930         <descriptive>
41931             <brief>
41932  The method invoked when the connected tag is detached.
41933             </brief>
41934             <version>
41935  1.0
41936             </version>
41937         </descriptive>
41938         <Type type="void"/>
41939         <ArgumentList/>
41940       </Operation>
41941     </Interface>
41942     <Interface name="NFCPeerDetectCallback" id="::NFC::NFCPeerDetectCallback">
41943       <webidl>  [Callback, NoInterfaceObject] interface NFCPeerDetectCallback {
41944     void onattach(<ref>NFCPeer</ref> nfcPeer);
41945     void ondetach();
41946   };</webidl>
41947       <descriptive>
41948           <brief>
41949  The success callback to be invoked when an NFC peer-to-peer target is detected or lost.
41950           </brief>
41951          <description>
41952           <p>
41953 This callback interface specifies two methods:
41954           </p>
41955           <ul>
41956             <li>
41957  onattach: invoked when an NFC peer-to-peer target is detected            </li>
41958             <li>
41959  ondetach: invoked when the NFC peer-to-peer target is lost            </li>
41960           </ul>
41961           <p>
41962 It is used in NFCAdapter.setPeerListener().
41963           </p>
41964          </description>
41965           <version>
41966  1.0
41967           </version>
41968       </descriptive>
41969       <ExtendedAttributeList>
41970         <ExtendedAttribute name="Callback">
41971           <webidl>Callback</webidl>
41972         </ExtendedAttribute>
41973         <ExtendedAttribute name="NoInterfaceObject">
41974           <webidl> NoInterfaceObject</webidl>
41975         </ExtendedAttribute>
41976       </ExtendedAttributeList>
41977       <Operation name="onattach" id="::NFC::NFCPeerDetectCallback::onattach">
41978         <webidl>    void onattach(<ref>NFCPeer</ref> nfcPeer);</webidl>
41979         <descriptive>
41980             <brief>
41981  The method invoked when the NFC peer-to-peer target is attached.
41982             </brief>
41983             <version>
41984  1.0
41985             </version>
41986         </descriptive>
41987         <Type type="void"/>
41988         <ArgumentList>
41989           <Argument name="nfcPeer">
41990             <descriptive>
41991                 <description><p>
41992  The attached NFC peer-to-peer target.
41993                 </p></description>
41994             </descriptive>
41995             <Type name="NFCPeer"/>
41996           </Argument>
41997         </ArgumentList>
41998       </Operation>
41999       <Operation name="ondetach" id="::NFC::NFCPeerDetectCallback::ondetach">
42000         <webidl>    void ondetach();</webidl>
42001         <descriptive>
42002             <brief>
42003  The method invoked when the NFC peer-to-peer target connected is detached.
42004             </brief>
42005             <version>
42006  1.0
42007             </version>
42008         </descriptive>
42009         <Type type="void"/>
42010         <ArgumentList/>
42011       </Operation>
42012     </Interface>
42013     <Interface name="NDEFMessageReadCallback" id="::NFC::NDEFMessageReadCallback">
42014       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface NDEFMessageReadCallback {
42015     void onsuccess(<ref>NDEFMessage</ref> ndefMessage);
42016   };</webidl>
42017       <descriptive>
42018           <brief>
42019  The success callback to be invoked when data has been read successfully from the NFC tag or target.
42020           </brief>
42021          <description>
42022           <p>
42023 This callback interface specifies a success method with 
42024 an NDEF message as an input parameter.
42025 It is used in asynchronous
42026 operations, such as NFCTag.readNDEF() or NFCPeer.setReceiveNDEFListener().
42027           </p>
42028          </description>
42029           <version>
42030  1.0
42031           </version>
42032       </descriptive>
42033       <ExtendedAttributeList>
42034         <ExtendedAttribute name="Callback" value="FunctionOnly">
42035           <webidl>Callback</webidl>
42036         </ExtendedAttribute>
42037         <ExtendedAttribute name="NoInterfaceObject">
42038           <webidl> NoInterfaceObject</webidl>
42039         </ExtendedAttribute>
42040       </ExtendedAttributeList>
42041       <Operation name="onsuccess" id="::NFC::NDEFMessageReadCallback::onsuccess">
42042         <webidl>    void onsuccess(<ref>NDEFMessage</ref> ndefMessage);</webidl>
42043         <descriptive>
42044             <brief>
42045  The method invoked when the asynchronous call completes successfully.
42046             </brief>
42047             <version>
42048  1.0
42049             </version>
42050         </descriptive>
42051         <Type type="void"/>
42052         <ArgumentList>
42053           <Argument name="ndefMessage">
42054             <descriptive>
42055                 <description><p>
42056  NDEF message that is read from the NFC tag or target.
42057                 </p></description>
42058             </descriptive>
42059             <Type name="NDEFMessage"/>
42060           </Argument>
42061         </ArgumentList>
42062       </Operation>
42063     </Interface>
42064     <Interface name="ByteArraySuccessCallback" id="::NFC::ByteArraySuccessCallback">
42065       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface ByteArraySuccessCallback {
42066     void onsuccess(byte[] data);
42067   };</webidl>
42068       <descriptive>
42069           <brief>
42070  The success callback to be invoked when NFCTag.transceive() completes successfully.
42071           </brief>
42072          <description>
42073           <p>
42074 This callback interface specifies a success method, with
42075 a raw data as an input parameter. It is used in NFCTag.transceive().
42076           </p>
42077          </description>
42078           <version>
42079  1.0
42080           </version>
42081       </descriptive>
42082       <ExtendedAttributeList>
42083         <ExtendedAttribute name="Callback" value="FunctionOnly">
42084           <webidl>Callback</webidl>
42085         </ExtendedAttribute>
42086         <ExtendedAttribute name="NoInterfaceObject">
42087           <webidl> NoInterfaceObject</webidl>
42088         </ExtendedAttribute>
42089       </ExtendedAttributeList>
42090       <Operation name="onsuccess" id="::NFC::ByteArraySuccessCallback::onsuccess">
42091         <webidl>    void onsuccess(byte[] data);</webidl>
42092         <descriptive>
42093             <brief>
42094  The method invoked when the asynchronous call completes successfully.
42095             </brief>
42096             <version>
42097  1.0
42098             </version>
42099         </descriptive>
42100         <Type type="void"/>
42101         <ArgumentList>
42102           <Argument name="data">
42103             <descriptive>
42104                 <description><p>
42105  The raw data that is read from NFC tag or response of transceive operation.
42106                 </p></description>
42107             </descriptive>
42108             <Type type="array">
42109               <Type type="byte"/>
42110             </Type>
42111           </Argument>
42112         </ArgumentList>
42113       </Operation>
42114     </Interface>
42115   </Module>
42116   <Module name="Notification" id="::Notification">
42117     <webidl>module Notification {
42118
42119     typedef DOMString NotificationId;
42120     
42121     enum NotificationType { &quot;STATUS&quot; };
42122
42123     enum StatusNotificationType { &quot;SIMPLE&quot;, &quot;THUMBNAIL&quot;, &quot;ONGOING&quot;, &quot;PROGRESS&quot; };
42124
42125     enum NotificationProgressType { &quot;PERCENTAGE&quot;,  &quot;BYTE&quot; };
42126
42127
42128     [NoInterfaceObject] interface NotificationObject {
42129         readonly attribute <ref>NotificationManager</ref> notification;
42130     };
42131     <ref>Tizen</ref> implements <ref>NotificationObject</ref>;
42132
42133     [NoInterfaceObject] interface NotificationManager {
42134
42135     void post(<ref>Notification</ref> notification) raises(<ref>WebAPIException</ref>);
42136
42137     void update(<ref>Notification</ref> notification) raises(<ref>WebAPIException</ref>);
42138
42139     void remove(<ref>NotificationId</ref> id) raises(<ref>WebAPIException</ref>);
42140
42141     void removeAll() raises(<ref>WebAPIException</ref>);
42142
42143     <ref>Notification</ref> get(<ref>NotificationId</ref> id) raises(<ref>WebAPIException</ref>);
42144
42145     <ref>Notification</ref>[] getAll() raises(<ref>WebAPIException</ref>);
42146
42147     };
42148
42149     
42150     [NoInterfaceObject] interface Notification {
42151     
42152     
42153     readonly attribute <ref>NotificationId</ref> id;
42154
42155     readonly attribute <ref>NotificationType</ref> type;
42156
42157     readonly attribute Date postedTime;
42158
42159     attribute DOMString title;
42160
42161     attribute DOMString? content;
42162
42163     };
42164
42165        
42166     dictionary StatusNotificationInit {
42167         DOMString? content;
42168         DOMString? iconPath; 
42169         DOMString? soundPath;
42170         boolean? vibration;
42171         <ref>ApplicationControl</ref>? appControl;
42172         <ref>ApplicationId</ref>? appId;
42173         <ref>NotificationProgressType</ref>? progressType;
42174         unsigned long? progressValue;
42175         long? number;
42176         DOMString? subIconPath;
42177         <ref>NotificationDetailInfo</ref>[]? detailInfo;
42178         DOMString? ledColor;
42179         unsigned long ledOnPeriod;
42180         unsigned long ledOffPeriod;
42181         DOMString? backgroundImagePath;
42182         DOMString[]? thumbnails;
42183     };
42184     
42185    [Constructor(<ref>StatusNotificationType</ref> statusType, DOMString title, optional <ref>StatusNotificationInit</ref>? notificationInitDict)]
42186
42187
42188     interface StatusNotification : <ref>Notification</ref> {
42189
42190     readonly attribute <ref>StatusNotificationType</ref> statusType;
42191     
42192     attribute DOMString? iconPath;
42193
42194     attribute DOMString? subIconPath;
42195
42196     attribute long? number;
42197     
42198     attribute <ref>NotificationDetailInfo</ref>[]? detailInfo;
42199
42200     attribute DOMString? ledColor;
42201
42202     attribute unsigned long ledOnPeriod;
42203
42204     attribute unsigned long ledOffPeriod;
42205
42206      attribute DOMString? backgroundImagePath;
42207
42208      attribute DOMString[]? thumbnails;
42209
42210      attribute DOMString? soundPath;
42211   
42212      attribute boolean vibration;
42213
42214      attribute <ref>ApplicationControl</ref>? appControl;
42215
42216      attribute <ref>ApplicationId</ref>? appId;
42217
42218      attribute <ref>NotificationProgressType</ref> progressType;  
42219
42220      attribute unsigned long? progressValue;
42221     };
42222
42223
42224 [Constructor(DOMString mainText, optional DOMString? subText)]
42225     interface NotificationDetailInfo {
42226     attribute DOMString mainText;
42227
42228     attribute DOMString? subText;
42229     };
42230     
42231 };</webidl>
42232     <descriptive>
42233         <brief>
42234  The Notification API provides a way to notify users of events that happen in an application.
42235         </brief>
42236        <description>
42237         <p>
42238 For more information on the Notification features, see <a href="../../org.tizen.web.appprogramming/html/guide/ui_guide/notification.htm">Notification Guide</a>.
42239         </p>
42240        </description>
42241         <version>
42242  2.0
42243         </version>
42244     </descriptive>
42245     <Typedef name="NotificationId" id="::Notification::NotificationId">
42246       <webidl>    typedef DOMString NotificationId;</webidl>
42247       <descriptive>
42248           <brief>
42249  A notification ID.
42250           </brief>
42251           <version>
42252  2.0
42253           </version>
42254       </descriptive>
42255       <Type type="DOMString"/>
42256     </Typedef>
42257     <Enum name="NotificationType" id="::Notification::NotificationType">
42258       <webidl>    enum NotificationType { &quot;STATUS&quot; };</webidl>
42259       <descriptive>
42260           <brief>
42261  A notification type.
42262           </brief>
42263          <description>
42264           <p>
42265 The following notification type is supported: 
42266           </p>
42267           <ul>
42268             <li>
42269 STATUS - The posted status notification is displayed in status bar and the notification tray.
42270 The status notification consists of icon, title, content, and time. The status notification can have application control to launch the specific application when selected by the user.            </li>
42271           </ul>
42272          </description>
42273           <version>
42274  2.0
42275           </version>
42276       </descriptive>
42277       <EnumValue stringvalue="STATUS">
42278         <webidl> &quot;STATUS</webidl>
42279       </EnumValue>
42280     </Enum>
42281     <Enum name="StatusNotificationType" id="::Notification::StatusNotificationType">
42282       <webidl>    enum StatusNotificationType { &quot;SIMPLE&quot;, &quot;THUMBNAIL&quot;, &quot;ONGOING&quot;, &quot;PROGRESS&quot; };</webidl>
42283       <descriptive>
42284           <brief>
42285  A status notification type.
42286           </brief>
42287          <description>
42288           <p>
42289 The following status notification types are supported: 
42290           </p>
42291           <ul>
42292             <li>
42293 SIMPLE - A basic status notification type that is removed automatically when selected by the user. All simple status notifications can be removed by user interaction.            </li>
42294             <li>
42295 THUMBNAIL - The thumbnail status notification posts a thumbnail-format notification which includes several thumbnail image paths.
42296 The thumbnail status notification is also removed by a user selection.
42297             </li>
42298             <li>
42299 ONGOING - A status notification type that informs the user about an application is running or not. However, an ongoing status notification should be removed by the application that posted the notification.            </li>
42300             <li>
42301 PROGRESS - A status notification that displays the information on the progress of a job. However, this status notification should be removed by the application that posted the notification.            </li>
42302           </ul>
42303          </description>
42304           <version>
42305  2.0
42306           </version>
42307       </descriptive>
42308       <EnumValue stringvalue="SIMPLE">
42309         <webidl> &quot;SIMPLE</webidl>
42310       </EnumValue>
42311       <EnumValue stringvalue="THUMBNAIL">
42312         <webidl> &quot;THUMBNAIL</webidl>
42313       </EnumValue>
42314       <EnumValue stringvalue="ONGOING">
42315         <webidl> &quot;ONGOING</webidl>
42316       </EnumValue>
42317       <EnumValue stringvalue="PROGRESS">
42318         <webidl> &quot;PROGRESS</webidl>
42319       </EnumValue>
42320     </Enum>
42321     <Enum name="NotificationProgressType" id="::Notification::NotificationProgressType">
42322       <webidl>    enum NotificationProgressType { &quot;PERCENTAGE&quot;,  &quot;BYTE&quot; };</webidl>
42323       <descriptive>
42324           <brief>
42325  A notification progress type.
42326           </brief>
42327          <description>
42328           <p>
42329 Supporting notification progress types are: 
42330           </p>
42331           <ul>
42332             <li>
42333  &quot;BYTE&quot; - The progress is indicated in bytes.            </li>
42334             <li>
42335  &quot;PERCENTAGE&quot; -The progress is indicated in percentage.            </li>
42336           </ul>
42337          </description>
42338           <version>
42339  2.1
42340           </version>
42341       </descriptive>
42342       <EnumValue stringvalue="PERCENTAGE">
42343         <webidl> &quot;PERCENTAGE</webidl>
42344       </EnumValue>
42345       <EnumValue stringvalue="BYTE">
42346         <webidl>  &quot;BYTE</webidl>
42347       </EnumValue>
42348     </Enum>
42349     <Interface name="NotificationObject" id="::Notification::NotificationObject">
42350       <webidl>    [NoInterfaceObject] interface NotificationObject {
42351         readonly attribute <ref>NotificationManager</ref> notification;
42352     };</webidl>
42353       <descriptive>
42354           <brief>
42355  Defines what is instantiated by the <em>Tizen</em> object.
42356           </brief>
42357          <description>
42358           <p>
42359 There is a <em>tizen.notification</em> object that allows access to the
42360 Notification API.
42361           </p>
42362          </description>
42363           <version>
42364  2.0
42365           </version>
42366       </descriptive>
42367       <ExtendedAttributeList>
42368         <ExtendedAttribute name="NoInterfaceObject">
42369           <webidl>NoInterfaceObject</webidl>
42370         </ExtendedAttribute>
42371       </ExtendedAttributeList>
42372       <Attribute readonly="readonly" name="notification" id="::Notification::NotificationObject::notification">
42373         <webidl>        readonly attribute <ref>NotificationManager</ref> notification;</webidl>
42374         <Type name="NotificationManager"/>
42375       </Attribute>
42376     </Interface>
42377     <Implements name1="Tizen" name2="NotificationObject">
42378       <webidl>    <ref>Tizen</ref> implements <ref>NotificationObject</ref>;</webidl>
42379     </Implements>
42380     <Interface name="NotificationManager" id="::Notification::NotificationManager">
42381       <webidl>    [NoInterfaceObject] interface NotificationManager {
42382
42383     void post(<ref>Notification</ref> notification) raises(<ref>WebAPIException</ref>);
42384
42385     void update(<ref>Notification</ref> notification) raises(<ref>WebAPIException</ref>);
42386
42387     void remove(<ref>NotificationId</ref> id) raises(<ref>WebAPIException</ref>);
42388
42389     void removeAll() raises(<ref>WebAPIException</ref>);
42390
42391     <ref>Notification</ref> get(<ref>NotificationId</ref> id) raises(<ref>WebAPIException</ref>);
42392
42393     <ref>Notification</ref>[] getAll() raises(<ref>WebAPIException</ref>);
42394
42395     };</webidl>
42396       <descriptive>
42397           <brief>
42398  Notification manager interface that provides access to the API.
42399           </brief>
42400          <description>
42401           <p>
42402 This interface provides access to the notification object.
42403           </p>
42404          </description>
42405           <version>
42406  2.0
42407           </version>
42408       </descriptive>
42409       <ExtendedAttributeList>
42410         <ExtendedAttribute name="NoInterfaceObject">
42411           <webidl>NoInterfaceObject</webidl>
42412         </ExtendedAttribute>
42413       </ExtendedAttributeList>
42414       <Operation name="post" id="::Notification::NotificationManager::post">
42415         <webidl>    void post(<ref>Notification</ref> notification) raises(<ref>WebAPIException</ref>);</webidl>
42416         <descriptive>
42417             <brief>
42418  Posts a notification to display.
42419             </brief>
42420             <version>
42421  2.0
42422             </version>
42423             <privilegelevel>
42424  public
42425             </privilegelevel>
42426             <privilege>
42427  http://tizen.org/privilege/notification
42428             </privilege>
42429             <Code> try {
42430       var appControl = new tizen.ApplicationControl(
42431                        &quot;http://tizen.org/appcontrol/operation/create_content&quot;,
42432                        null,
42433                        &quot;image/jpg&quot;,
42434                        null);
42435       var notificationDict = {
42436                   content : &quot;This is a simple notification.&quot;,
42437                   iconPath : &quot;images/image1.jpg&quot;,
42438                   soundPath : &quot;music/Over the horizon.mp3&quot;, 
42439                   vibration : true, 
42440                   appControl : appControl};
42441        
42442       var notification = new tizen.StatusNotification(&quot;SIMPLE&quot;, 
42443                   &quot;Simple notification&quot;, notificationDict);
42444                        
42445       tizen.notification.post(notification);
42446  } catch (err) {
42447       console.log (err.name + &quot;: &quot; + err.message);
42448  }
42449  </Code>
42450         </descriptive>
42451         <Type type="void"/>
42452         <ArgumentList>
42453           <Argument name="notification">
42454             <descriptive>
42455                 <description><p>
42456  A notification to post.
42457                 </p></description>
42458             </descriptive>
42459             <Type name="Notification"/>
42460           </Argument>
42461         </ArgumentList>
42462         <Raises>
42463           <RaiseException name="WebAPIException">
42464             <descriptive>
42465                 <description><p>
42466  with error type TypeMismatchError, if any of the input parameter is not compatible with the expected type for that parameter.
42467                 </p></description>
42468                 <description><p>
42469  with error type InvalidValuesError, if any of the input 
42470 parameters contain an invalid value.
42471                 </p></description>
42472                 <description><p>
42473  with error type SecurityError, if the application does not have the privilege to call this method.
42474                 </p></description>
42475                 <description><p>
42476  with error type UnknownError if any other error occurs. 
42477                 </p></description>
42478             </descriptive>
42479           </RaiseException>
42480         </Raises>
42481       </Operation>
42482       <Operation name="update" id="::Notification::NotificationManager::update">
42483         <webidl>    void update(<ref>Notification</ref> notification) raises(<ref>WebAPIException</ref>);</webidl>
42484         <descriptive>
42485             <brief>
42486  Updates a previously posted notification. 
42487             </brief>
42488             <version>
42489  2.0
42490             </version>
42491             <privilegelevel>
42492  public
42493             </privilegelevel>
42494             <privilege>
42495  http://tizen.org/privilege/notification
42496             </privilege>
42497             <Code> try {
42498       // Uses a variable for the previously posted notification.
42499       notification.content = &quot;My notification&quot;;
42500       tizen.notification.update(notification); 
42501  } catch (err) {
42502       console.log (err.name + &quot;: &quot; + err.message);
42503  }
42504    
42505 </Code>
42506         </descriptive>
42507         <Type type="void"/>
42508         <ArgumentList>
42509           <Argument name="notification">
42510             <descriptive>
42511                 <description><p>
42512  A notification to update.
42513                 </p></description>
42514             </descriptive>
42515             <Type name="Notification"/>
42516           </Argument>
42517         </ArgumentList>
42518         <Raises>
42519           <RaiseException name="WebAPIException">
42520             <descriptive>
42521                 <description><p>
42522  with error type TypeMismatchError, if any of the input parameter is not compatible with the expected type for that parameter.
42523                 </p></description>
42524                 <description><p>
42525  with error type InvalidValuesError, if any of the input 
42526 parameters contain an invalid value.
42527                 </p></description>
42528                 <description><p>
42529  with error type SecurityError, if the application does not have the privilege to call this method.
42530                 </p></description>
42531                 <description><p>
42532  with error type UnknownError if any other error occurs. 
42533                 </p></description>
42534             </descriptive>
42535           </RaiseException>
42536         </Raises>
42537       </Operation>
42538       <Operation name="remove" id="::Notification::NotificationManager::remove">
42539         <webidl>    void remove(<ref>NotificationId</ref> id) raises(<ref>WebAPIException</ref>);</webidl>
42540         <descriptive>
42541             <brief>
42542  Removes a previously posted notification. 
42543             </brief>
42544             <version>
42545  2.0
42546             </version>
42547             <privilegelevel>
42548  public
42549             </privilegelevel>
42550             <privilege>
42551  http://tizen.org/privilege/notification
42552             </privilege>
42553             <Code> try {
42554       // Uses a variable for the previously posted notification.
42555       tizen.notification.remove(notification.id); 
42556  } catch (err) {
42557       console.log (err.name + &quot;: &quot; + err.message);
42558  }
42559    
42560 </Code>
42561         </descriptive>
42562         <Type type="void"/>
42563         <ArgumentList>
42564           <Argument name="id">
42565             <descriptive>
42566                 <description><p>
42567  A previously posted notification ID to remove.
42568                 </p></description>
42569             </descriptive>
42570             <Type name="NotificationId"/>
42571           </Argument>
42572         </ArgumentList>
42573         <Raises>
42574           <RaiseException name="WebAPIException">
42575             <descriptive>
42576                 <description><p>
42577  with error type TypeMismatchError, if any of the input parameter is not compatible with the expected type for that parameter.
42578                 </p></description>
42579                 <description><p>
42580  with error type NotFoundError, if NotificationId is not found in the previously posted notifications.
42581                 </p></description>
42582                 <description><p>
42583  with error type SecurityError, if the application does not have the privilege to call this method.
42584                 </p></description>
42585                 <description><p>
42586  with error type UnknownError if any other error occurs. 
42587                 </p></description>
42588             </descriptive>
42589           </RaiseException>
42590         </Raises>
42591       </Operation>
42592       <Operation name="removeAll" id="::Notification::NotificationManager::removeAll">
42593         <webidl>    void removeAll() raises(<ref>WebAPIException</ref>);</webidl>
42594         <descriptive>
42595             <brief>
42596  Removes all notifications that have been posted by the current application.
42597             </brief>
42598             <version>
42599  2.0
42600             </version>
42601             <privilegelevel>
42602  public
42603             </privilegelevel>
42604             <privilege>
42605  http://tizen.org/privilege/notification
42606             </privilege>
42607             <Code> try {
42608       tizen.notification.removeAll(); 
42609  } catch (err) {
42610       console.log (err.name + &quot;: &quot; + err.message);
42611  }
42612    
42613 </Code>
42614         </descriptive>
42615         <Type type="void"/>
42616         <ArgumentList/>
42617         <Raises>
42618           <RaiseException name="WebAPIException">
42619             <descriptive>
42620                 <description><p>
42621  with error type SecurityError, if the application does not have the privilege to call this method.
42622                 </p></description>
42623                 <description><p>
42624  with error type UnknownError if any other error occurs. 
42625                 </p></description>
42626             </descriptive>
42627           </RaiseException>
42628         </Raises>
42629       </Operation>
42630       <Operation name="get" id="::Notification::NotificationManager::get">
42631         <webidl>    <ref>Notification</ref> get(<ref>NotificationId</ref> id) raises(<ref>WebAPIException</ref>);</webidl>
42632         <descriptive>
42633             <brief>
42634  Gets a notification that has previously been posted by the current application. Note that the obtaining notification's progressType is <em>PERCENTAGE</em>            </brief>
42635             <version>
42636  2.0
42637             </version>
42638             <Code> try {
42639       // Uses a variable for the previously posted notification
42640       // Saves notification ID for future use
42641       var myId = notification.id;
42642        
42643       var myNotification = tizen.notification.get(myId); 
42644  } catch (err) {
42645       console.log (err.name + &quot;: &quot; + err.message);
42646  }
42647    
42648 </Code>
42649         </descriptive>
42650         <Type name="Notification"/>
42651         <ArgumentList>
42652           <Argument name="id">
42653             <descriptive>
42654                 <description><p>
42655  A previously posted notification ID.
42656                 </p></description>
42657             </descriptive>
42658             <Type name="NotificationId"/>
42659           </Argument>
42660         </ArgumentList>
42661         <Raises>
42662           <RaiseException name="WebAPIException">
42663             <descriptive>
42664                 <description><p>
42665  with error type NotFoundError, if NotificationId is not found in the previously posted notifications.
42666                 </p></description>
42667                 <description><p>
42668  with error type UnknownError if any other error occurs. 
42669                 </p></description>
42670             </descriptive>
42671           </RaiseException>
42672         </Raises>
42673       </Operation>
42674       <Operation name="getAll" id="::Notification::NotificationManager::getAll">
42675         <webidl>    <ref>Notification</ref>[] getAll() raises(<ref>WebAPIException</ref>);</webidl>
42676         <descriptive>
42677             <brief>
42678  Gets all notifications that have previously been posted by the current application. Note that the obtaining notification's progressType is <em>PERCENTAGE</em>            </brief>
42679             <version>
42680  2.0
42681             </version>
42682             <Code> try {
42683      var notifications = tizen.notification.getAll();
42684      var index = 0;
42685      
42686      for ( index = 0; notifications.length > index; index++ )
42687      {
42688          console.log(notifications[index].id);
42689          console.log(notifications[index].title);
42690          console.log(notifications[index].statusType);
42691          console.log(notifications[index].type);
42692          console.log(notifications[index].content);
42693          console.log(notifications[index].postedTime);
42694          console.log(notifications[index].iconPath);
42695          console.log(notifications[index].soundPath);
42696          console.log(notifications[index].vibration);
42697          console.log(notifications[index].appControl);
42698      }
42699  } catch (err) {
42700      console.log (err.name + &quot;: &quot; + err.message);
42701  }
42702  </Code>
42703         </descriptive>
42704         <Type type="array">
42705           <Type name="Notification"/>
42706         </Type>
42707         <ArgumentList/>
42708         <Raises>
42709           <RaiseException name="WebAPIException">
42710             <descriptive>
42711                 <description><p>
42712  with error type UnknownError, if any other error occurs. 
42713                 </p></description>
42714             </descriptive>
42715           </RaiseException>
42716         </Raises>
42717       </Operation>
42718     </Interface>
42719     <Interface name="Notification" id="::Notification::Notification">
42720       <webidl>    [NoInterfaceObject] interface Notification {
42721     
42722     
42723     readonly attribute <ref>NotificationId</ref> id;
42724
42725     readonly attribute <ref>NotificationType</ref> type;
42726
42727     readonly attribute Date postedTime;
42728
42729     attribute DOMString title;
42730
42731     attribute DOMString? content;
42732
42733     };</webidl>
42734       <descriptive>
42735           <brief>
42736  This interface offers common attributes to represent <em>Notification</em> object.
42737           </brief>
42738           <version>
42739  2.0
42740           </version>
42741       </descriptive>
42742       <ExtendedAttributeList>
42743         <ExtendedAttribute name="NoInterfaceObject">
42744           <webidl>NoInterfaceObject</webidl>
42745         </ExtendedAttribute>
42746       </ExtendedAttributeList>
42747       <Attribute readonly="readonly" name="id" id="::Notification::Notification::id">
42748         <webidl>    readonly attribute <ref>NotificationId</ref> id;</webidl>
42749         <descriptive>
42750             <brief>
42751  The Notification identifier. Before the notification is posted, this value is undefined.
42752             </brief>
42753             <version>
42754  2.0
42755             </version>
42756         </descriptive>
42757         <Type name="NotificationId"/>
42758       </Attribute>
42759       <Attribute readonly="readonly" name="type" id="::Notification::Notification::type">
42760         <webidl>    readonly attribute <ref>NotificationType</ref> type;</webidl>
42761         <descriptive>
42762             <brief>
42763  The Notification type.
42764             </brief>
42765             <version>
42766  2.0
42767             </version>
42768         </descriptive>
42769         <Type name="NotificationType"/>
42770       </Attribute>
42771       <Attribute readonly="readonly" name="postedTime" id="::Notification::Notification::postedTime">
42772         <webidl>    readonly attribute Date postedTime;</webidl>
42773         <descriptive>
42774             <brief>
42775  The time that the notification is posted. Before the notification is posted, this value is undefined.
42776             </brief>
42777             <version>
42778  2.0
42779             </version>
42780         </descriptive>
42781         <Type type="Date"/>
42782       </Attribute>
42783       <Attribute name="title" id="::Notification::Notification::title">
42784         <webidl>    attribute DOMString title;</webidl>
42785         <descriptive>
42786             <brief>
42787  The title to display in a notification.
42788             </brief>
42789             <version>
42790  2.0
42791             </version>
42792         </descriptive>
42793         <Type type="DOMString"/>
42794       </Attribute>
42795       <Attribute name="content" id="::Notification::Notification::content">
42796         <webidl>    attribute DOMString? content;</webidl>
42797         <descriptive>
42798             <brief>
42799  The content to display in a notification.
42800             </brief>
42801             <version>
42802  2.0
42803             </version>
42804         </descriptive>
42805         <Type type="DOMString" nullable="nullable"/>
42806       </Attribute>
42807     </Interface>
42808     <Dictionary name="StatusNotificationInit" id="::Notification::StatusNotificationInit">
42809       <webidl>    dictionary StatusNotificationInit {
42810         DOMString? content;
42811         DOMString? iconPath; 
42812         DOMString? soundPath;
42813         boolean? vibration;
42814         <ref>ApplicationControl</ref>? appControl;
42815         <ref>ApplicationId</ref>? appId;
42816         <ref>NotificationProgressType</ref>? progressType;
42817         unsigned long? progressValue;
42818         long? number;
42819         DOMString? subIconPath;
42820         <ref>NotificationDetailInfo</ref>[]? detailInfo;
42821         DOMString? ledColor;
42822         unsigned long ledOnPeriod;
42823         unsigned long ledOffPeriod;
42824         DOMString? backgroundImagePath;
42825         DOMString[]? thumbnails;
42826     };</webidl>
42827       <descriptive>
42828           <brief>
42829  The properties of StatusNotification, to pass a constructor.
42830           </brief>
42831           <version>
42832  2.0
42833           </version>
42834       </descriptive>
42835       <DictionaryMember name="content" id="::Notification::StatusNotificationInit::content">
42836         <webidl>        DOMString? content;</webidl>
42837         <Type type="DOMString" nullable="nullable"/>
42838       </DictionaryMember>
42839       <DictionaryMember name="iconPath" id="::Notification::StatusNotificationInit::iconPath">
42840         <webidl>        DOMString? iconPath;</webidl>
42841         <Type type="DOMString" nullable="nullable"/>
42842       </DictionaryMember>
42843       <DictionaryMember name="soundPath" id="::Notification::StatusNotificationInit::soundPath">
42844         <webidl>        DOMString? soundPath;</webidl>
42845         <Type type="DOMString" nullable="nullable"/>
42846       </DictionaryMember>
42847       <DictionaryMember name="vibration" id="::Notification::StatusNotificationInit::vibration">
42848         <webidl>        boolean? vibration;</webidl>
42849         <Type type="boolean" nullable="nullable"/>
42850       </DictionaryMember>
42851       <DictionaryMember name="appControl" id="::Notification::StatusNotificationInit::appControl">
42852         <webidl>        <ref>ApplicationControl</ref>? appControl;</webidl>
42853         <Type name="ApplicationControl" nullable="nullable"/>
42854       </DictionaryMember>
42855       <DictionaryMember name="appId" id="::Notification::StatusNotificationInit::appId">
42856         <webidl>        <ref>ApplicationId</ref>? appId;</webidl>
42857         <Type name="ApplicationId" nullable="nullable"/>
42858       </DictionaryMember>
42859       <DictionaryMember name="progressType" id="::Notification::StatusNotificationInit::progressType">
42860         <webidl>        <ref>NotificationProgressType</ref>? progressType;</webidl>
42861         <Type name="NotificationProgressType" nullable="nullable"/>
42862       </DictionaryMember>
42863       <DictionaryMember name="progressValue" id="::Notification::StatusNotificationInit::progressValue">
42864         <webidl>        unsigned long? progressValue;</webidl>
42865         <Type type="unsigned long" nullable="nullable"/>
42866       </DictionaryMember>
42867       <DictionaryMember name="number" id="::Notification::StatusNotificationInit::number">
42868         <webidl>        long? number;</webidl>
42869         <Type type="long" nullable="nullable"/>
42870       </DictionaryMember>
42871       <DictionaryMember name="subIconPath" id="::Notification::StatusNotificationInit::subIconPath">
42872         <webidl>        DOMString? subIconPath;</webidl>
42873         <Type type="DOMString" nullable="nullable"/>
42874       </DictionaryMember>
42875       <DictionaryMember name="detailInfo" id="::Notification::StatusNotificationInit::detailInfo">
42876         <webidl>        <ref>NotificationDetailInfo</ref>[]? detailInfo;</webidl>
42877         <Type type="array" nullable="nullable">
42878           <Type name="NotificationDetailInfo"/>
42879         </Type>
42880       </DictionaryMember>
42881       <DictionaryMember name="ledColor" id="::Notification::StatusNotificationInit::ledColor">
42882         <webidl>        DOMString? ledColor;</webidl>
42883         <Type type="DOMString" nullable="nullable"/>
42884       </DictionaryMember>
42885       <DictionaryMember name="ledOnPeriod" id="::Notification::StatusNotificationInit::ledOnPeriod">
42886         <webidl>        unsigned long ledOnPeriod;</webidl>
42887         <Type type="unsigned long"/>
42888       </DictionaryMember>
42889       <DictionaryMember name="ledOffPeriod" id="::Notification::StatusNotificationInit::ledOffPeriod">
42890         <webidl>        unsigned long ledOffPeriod;</webidl>
42891         <Type type="unsigned long"/>
42892       </DictionaryMember>
42893       <DictionaryMember name="backgroundImagePath" id="::Notification::StatusNotificationInit::backgroundImagePath">
42894         <webidl>        DOMString? backgroundImagePath;</webidl>
42895         <Type type="DOMString" nullable="nullable"/>
42896       </DictionaryMember>
42897       <DictionaryMember name="thumbnails" id="::Notification::StatusNotificationInit::thumbnails">
42898         <webidl>        DOMString[]? thumbnails;</webidl>
42899         <Type type="array" nullable="nullable">
42900           <Type type="DOMString"/>
42901         </Type>
42902       </DictionaryMember>
42903     </Dictionary>
42904     <Interface name="StatusNotification" id="::Notification::StatusNotification">
42905       <webidl>   [Constructor(<ref>StatusNotificationType</ref> statusType, DOMString title, optional <ref>StatusNotificationInit</ref>? notificationInitDict)]
42906
42907
42908     interface StatusNotification : <ref>Notification</ref> {
42909
42910     readonly attribute <ref>StatusNotificationType</ref> statusType;
42911     
42912     attribute DOMString? iconPath;
42913
42914     attribute DOMString? subIconPath;
42915
42916     attribute long? number;
42917     
42918     attribute <ref>NotificationDetailInfo</ref>[]? detailInfo;
42919
42920     attribute DOMString? ledColor;
42921
42922     attribute unsigned long ledOnPeriod;
42923
42924     attribute unsigned long ledOffPeriod;
42925
42926      attribute DOMString? backgroundImagePath;
42927
42928      attribute DOMString[]? thumbnails;
42929
42930      attribute DOMString? soundPath;
42931   
42932      attribute boolean vibration;
42933
42934      attribute <ref>ApplicationControl</ref>? appControl;
42935
42936      attribute <ref>ApplicationId</ref>? appId;
42937
42938      attribute <ref>NotificationProgressType</ref> progressType;  
42939
42940      attribute unsigned long? progressValue;
42941     };</webidl>
42942       <descriptive>
42943           <brief>
42944  This interface represents status notification and offers additional attributes to represent notification displayed in notification tray.
42945           </brief>
42946          <description>
42947           <p>
42948 All notification must have a title attribute.
42949           </p>
42950          </description>
42951           <version>
42952  2.0
42953           </version>
42954       </descriptive>
42955       <ExtendedAttributeList>
42956         <ExtendedAttribute name="Constructor">
42957           <webidl>Constructor(<ref>StatusNotificationType</ref> statusType, DOMString title, optional <ref>StatusNotificationInit</ref>? notificationInitDict)</webidl>
42958           <ArgumentList>
42959             <Argument name="statusType">
42960               <Type name="StatusNotificationType"/>
42961             </Argument>
42962             <Argument name="title">
42963               <Type type="DOMString"/>
42964             </Argument>
42965             <Argument optional="optional" name="notificationInitDict">
42966               <Type name="StatusNotificationInit" nullable="nullable"/>
42967             </Argument>
42968           </ArgumentList>
42969         </ExtendedAttribute>
42970       </ExtendedAttributeList>
42971       <InterfaceInheritance>
42972         <Name name="Notification"/>
42973       </InterfaceInheritance>
42974       <Attribute readonly="readonly" name="statusType" id="::Notification::StatusNotification::statusType">
42975         <webidl>    readonly attribute <ref>StatusNotificationType</ref> statusType;</webidl>
42976         <descriptive>
42977             <brief>
42978  The status notification type. 
42979             </brief>
42980             <version>
42981  2.0
42982             </version>
42983         </descriptive>
42984         <Type name="StatusNotificationType"/>
42985       </Attribute>
42986       <Attribute name="iconPath" id="::Notification::StatusNotification::iconPath">
42987         <webidl>    attribute DOMString? iconPath;</webidl>
42988         <descriptive>
42989             <brief>
42990  The icon path to display in the notification. 
42991             </brief>
42992             <version>
42993  2.0
42994             </version>
42995         </descriptive>
42996         <Type type="DOMString" nullable="nullable"/>
42997       </Attribute>
42998       <Attribute name="subIconPath" id="::Notification::StatusNotification::subIconPath">
42999         <webidl>    attribute DOMString? subIconPath;</webidl>
43000         <descriptive>
43001             <brief>
43002  The sub icon path to display in the notification. 
43003             </brief>
43004             <version>
43005  2.1
43006             </version>
43007         </descriptive>
43008         <Type type="DOMString" nullable="nullable"/>
43009       </Attribute>
43010       <Attribute name="number" id="::Notification::StatusNotification::number">
43011         <webidl>    attribute long? number;</webidl>
43012         <descriptive>
43013             <brief>
43014  The number of events to display in the notification. 
43015             </brief>
43016             <version>
43017  2.1
43018             </version>
43019         </descriptive>
43020         <Type type="long" nullable="nullable"/>
43021       </Attribute>
43022       <Attribute name="detailInfo" id="::Notification::StatusNotification::detailInfo">
43023         <webidl>    attribute <ref>NotificationDetailInfo</ref>[]? detailInfo;</webidl>
43024         <descriptive>
43025             <brief>
43026  Appends lines of the detail information to the notification.
43027 This attribute is available in simple status notification.
43028 By default, this attribute is initialized with an empty array.
43029 The maximum number of detail information elements in the array is 2.
43030             </brief>
43031             <version>
43032  2.1
43033             </version>
43034         </descriptive>
43035         <Type type="array" nullable="nullable">
43036           <Type name="NotificationDetailInfo"/>
43037         </Type>
43038       </Attribute>
43039       <Attribute name="ledColor" id="::Notification::StatusNotification::ledColor">
43040         <webidl>    attribute DOMString? ledColor;</webidl>
43041         <descriptive>
43042             <brief>
43043  Sets the notification LED indicator color property. 
43044 The color is a numerical RGB value(#rrggbb). The format of a RGB value in hexadecimal notation is a &quot;#&quot; immediately followed by exactly six hexadecimal characters(0-9, A-F). The color format is case-insensitive.
43045 The LED indicator color will show its a close approximation.
43046 LED will only light on when screen is off. To turn the LED off, set &quot;#000000&quot; or null to ledColor. 
43047 This method has effects when the device has notification LED.
43048             </brief>
43049             <Code> try {
43050       var notificationDict = {
43051                   content : &quot;This is a simple notification.&quot;,
43052                   iconPath : &quot;images/image1.jpg&quot;,
43053                   soundPath : &quot;music/Over the horizon.mp3&quot;,
43054                   vibration : true,
43055                   ledColor : &quot;#FFFF00&quot;, 
43056                   ledOnPeriod: 1000,
43057                   ledOffPeriod : 500 };
43058
43059       var notification = new tizen.StatusNotification(&quot;SIMPLE&quot;,
43060                   &quot;Simple notification&quot;, notificationDict);
43061
43062       tizen.notification.post(notification);
43063  } catch (err) {
43064       console.log (err.name + &quot;: &quot; + err.message);
43065  }
43066  </Code>
43067             <version>
43068  2.2
43069             </version>
43070         </descriptive>
43071         <Type type="DOMString" nullable="nullable"/>
43072       </Attribute>
43073       <Attribute name="ledOnPeriod" id="::Notification::StatusNotification::ledOnPeriod">
43074         <webidl>    attribute unsigned long ledOnPeriod;</webidl>
43075         <descriptive>
43076             <brief>
43077  The milliseconds for which the light is on
43078 The light continuously toggles on (ledOnPeriod) and off (ledOffPeriod).
43079 By default, this attribute is set to 0
43080             </brief>
43081             <version>
43082  2.2
43083             </version>
43084         </descriptive>
43085         <Type type="unsigned long"/>
43086       </Attribute>
43087       <Attribute name="ledOffPeriod" id="::Notification::StatusNotification::ledOffPeriod">
43088         <webidl>    attribute unsigned long ledOffPeriod;</webidl>
43089         <descriptive>
43090             <brief>
43091  The milliseconds for which the light is off
43092 By default, this attribute is set to 0
43093             </brief>
43094             <version>
43095  2.2
43096             </version>
43097         </descriptive>
43098         <Type type="unsigned long"/>
43099       </Attribute>
43100       <Attribute name="backgroundImagePath" id="::Notification::StatusNotification::backgroundImagePath">
43101         <webidl>     attribute DOMString? backgroundImagePath;</webidl>
43102         <descriptive>
43103             <brief>
43104  The image path to use as the background of the notification.
43105 This attribute is available on simple or thumbnail status notifications.
43106             </brief>
43107             <version>
43108  2.1
43109             </version>
43110         </descriptive>
43111         <Type type="DOMString" nullable="nullable"/>
43112       </Attribute>
43113       <Attribute name="thumbnails" id="::Notification::StatusNotification::thumbnails">
43114         <webidl>     attribute DOMString[]? thumbnails;</webidl>
43115         <descriptive>
43116             <brief>
43117  The image paths associated with the thumbnail status notification.
43118 By default, this attribute is initialized with an empty array.
43119 The maximum number of thumbnail path elements in the array is 4.
43120             </brief>
43121             <version>
43122  2.1
43123             </version>
43124         </descriptive>
43125         <Type type="array" nullable="nullable">
43126           <Type type="DOMString"/>
43127         </Type>
43128       </Attribute>
43129       <Attribute name="soundPath" id="::Notification::StatusNotification::soundPath">
43130         <webidl>     attribute DOMString? soundPath;</webidl>
43131         <descriptive>
43132             <brief>
43133  The path of a sound file to play when the notification is shown.
43134             </brief>
43135             <version>
43136  2.0
43137             </version>
43138         </descriptive>
43139         <Type type="DOMString" nullable="nullable"/>
43140       </Attribute>
43141       <Attribute name="vibration" id="::Notification::StatusNotification::vibration">
43142         <webidl>     attribute boolean vibration;</webidl>
43143         <descriptive>
43144             <brief>
43145  Holds whether to vibrate when the notification is shown. By default, this attribute is set to false.
43146             </brief>
43147             <version>
43148  2.0
43149             </version>
43150         </descriptive>
43151         <Type type="boolean"/>
43152       </Attribute>
43153       <Attribute name="appControl" id="::Notification::StatusNotification::appControl">
43154         <webidl>     attribute <ref>ApplicationControl</ref>? appControl;</webidl>
43155         <descriptive>
43156             <brief>
43157  Holds the application control to launch an application when the notification is selected from the notification tray. 
43158             </brief>
43159             <version>
43160  2.0
43161             </version>
43162         </descriptive>
43163         <Type name="ApplicationControl" nullable="nullable"/>
43164       </Attribute>
43165       <Attribute name="appId" id="::Notification::StatusNotification::appId">
43166         <webidl>     attribute <ref>ApplicationId</ref>? appId;</webidl>
43167         <descriptive>
43168             <brief>
43169  Holds the application ID to launch when the notification is selected from the notification tray. 
43170             </brief>
43171             <version>
43172  2.0
43173             </version>
43174             <Code> try {
43175  
43176       // Gets a current application information with tizen.application.getAppInfo
43177       var myappInfo = tizen.application.getAppInfo();
43178
43179       var notificationDict = {
43180                   content : &quot;This is a simple notification.&quot;,
43181                   iconPath : &quot;images/image1.jpg&quot;,
43182                   soundPath : &quot;music/Over the horizon.mp3&quot;, 
43183                   vibration : true, 
43184                   appId : myappInfo.id };
43185        
43186       var notification = new tizen.StatusNotification(&quot;SIMPLE&quot;, 
43187                   &quot;Simple notification&quot;, notificationDict);
43188                        
43189       tizen.notification.post(notification);
43190  } catch (err) {
43191       console.log (err.name + &quot;: &quot; + err.message);
43192  }
43193  </Code>
43194         </descriptive>
43195         <Type name="ApplicationId" nullable="nullable"/>
43196       </Attribute>
43197       <Attribute name="progressType" id="::Notification::StatusNotification::progressType">
43198         <webidl>     attribute <ref>NotificationProgressType</ref> progressType;</webidl>
43199         <descriptive>
43200             <brief>
43201  Defines the type for an ongoing notification's progress. 
43202 By default, this attribute is set to PERCENTAGE.
43203             </brief>
43204             <version>
43205  2.1
43206             </version>
43207         </descriptive>
43208         <Type name="NotificationProgressType"/>
43209       </Attribute>
43210       <Attribute name="progressValue" id="::Notification::StatusNotification::progressValue">
43211         <webidl>     attribute unsigned long? progressValue;</webidl>
43212         <descriptive>
43213             <brief>
43214  Defines the current notification progress value (<em>PERCENTAGE</em> or <em>BYTE</em>), depending on the <em>progressType</em>            </brief>
43215            <description>
43216             <p>
43217 If progressValue is set, the progressbar will be displayed in notification. The progressValue can change the amount of progress as it moves forward or backward. Or gets a progress value of current notification
43218 If 0, the indeterminate progressbar will be shown.
43219 This attribute is only available for StatusNotifcation of type <em>PROGRESS</em>.
43220             </p>
43221             <p>
43222 Application should keep the progress value for its job because 
43223 the saved value in the notification status tray would be different from 
43224 exact progress value.
43225             </p>
43226             <p>
43227 Range of <em>progressValue</em>: percent (0 to 100).
43228             </p>
43229            </description>
43230             <Code> try {
43231       var appControl = new tizen.ApplicationControl(
43232       &quot;http://tizen.org/appcontrol/operation/create_content&quot;,
43233       null,
43234       &quot;image/jpg&quot;,
43235       null);
43236       
43237       var notificationDict = {
43238                   content : &quot;This is a progress notificaiton.&quot;,
43239                   iconPath : &quot;images/image2.jpg&quot;,
43240                   soundPath : &quot;music/Over the horizon.mp3&quot;, 
43241                   vibration : true, 
43242                   appControl : appControl,
43243                   progressValue : 20};
43244       // Constructs the progress notification
43245       var notification = new tizen.StatusNotification(&quot;PROGRESS&quot;, 
43246                          &quot;Progress notification&quot;, notificationDict); 
43247       // Posts the notification
43248       tizen.notification.post(notification);
43249
43250       // Updates the progress value of the notification
43251       notification.progressValue = 59;
43252       tizen.notification.update(notification);
43253
43254       
43255  } catch (err) {
43256      console.log (err.name + &quot;: &quot; + err.message);
43257  }
43258  </Code>
43259             <version>
43260  2.0
43261             </version>
43262         </descriptive>
43263         <Type type="unsigned long" nullable="nullable"/>
43264       </Attribute>
43265     </Interface>
43266     <Interface name="NotificationDetailInfo" id="::Notification::NotificationDetailInfo">
43267       <webidl>[Constructor(DOMString mainText, optional DOMString? subText)]
43268     interface NotificationDetailInfo {
43269     attribute DOMString mainText;
43270
43271     attribute DOMString? subText;
43272     };</webidl>
43273       <descriptive>
43274           <brief>
43275  The NotificationDetailInfo object that contains the detail information to the notification.
43276           </brief>
43277           <version>
43278  2.1
43279           </version>
43280           <Code> var detailInfo1 = new tizen.NotificationDetailInfo('Missed Call from James', 'Feb 11 2013');
43281  notification.detailInfo = [detailInfo1];
43282 </Code>
43283       </descriptive>
43284       <ExtendedAttributeList>
43285         <ExtendedAttribute name="Constructor">
43286           <webidl>Constructor(DOMString mainText, optional DOMString? subText)</webidl>
43287           <ArgumentList>
43288             <Argument name="mainText">
43289               <Type type="DOMString"/>
43290             </Argument>
43291             <Argument optional="optional" name="subText">
43292               <Type type="DOMString" nullable="nullable"/>
43293             </Argument>
43294           </ArgumentList>
43295         </ExtendedAttribute>
43296       </ExtendedAttributeList>
43297       <Attribute name="mainText" id="::Notification::NotificationDetailInfo::mainText">
43298         <webidl>    attribute DOMString mainText;</webidl>
43299         <descriptive>
43300             <brief>
43301  The main content of the detail information.
43302 This attribute is available on simple status notifications.
43303             </brief>
43304             <version>
43305  2.1
43306             </version>
43307         </descriptive>
43308         <Type type="DOMString"/>
43309       </Attribute>
43310       <Attribute name="subText" id="::Notification::NotificationDetailInfo::subText">
43311         <webidl>    attribute DOMString? subText;</webidl>
43312         <descriptive>
43313             <brief>
43314  The secondary content of the detail information.
43315             </brief>
43316            <description>
43317             <p>
43318 By default, this attribute is set to null.
43319             </p>
43320            </description>
43321             <version>
43322  2.1
43323             </version>
43324         </descriptive>
43325         <Type type="DOMString" nullable="nullable"/>
43326       </Attribute>
43327     </Interface>
43328   </Module>
43329   <Module name="Package" id="::Package">
43330     <webidl>module Package {&#13;
43331 &#13;
43332 &#13;
43333     typedef DOMString PackageId;&#13;
43334 &#13;
43335 &#13;
43336     [NoInterfaceObject] interface PackageManagerObject {&#13;
43337         readonly attribute <ref>PackageManager</ref> package;&#13;
43338     };&#13;
43339     <ref>Tizen</ref> implements <ref>PackageManagerObject</ref>;&#13;
43340 &#13;
43341 &#13;
43342     [NoInterfaceObject] interface PackageManager {&#13;
43343 &#13;
43344 &#13;
43345         void install(DOMString path,&#13;
43346                      <ref>PackageProgressCallback</ref> progressCallback,&#13;
43347                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
43348 &#13;
43349 &#13;
43350         void uninstall(<ref>PackageId</ref> id, &#13;
43351                        <ref>PackageProgressCallback</ref> progressCallback,&#13;
43352                        optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
43353 &#13;
43354 &#13;
43355 &#13;
43356 &#13;
43357         void getPackagesInfo(<ref>PackageInformationArraySuccessCallback</ref> successCallback,&#13;
43358                              optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
43359 &#13;
43360 &#13;
43361         <ref>PackageInformation</ref> getPackageInfo(optional <ref>PackageId</ref>? id) raises(<ref>WebAPIException</ref>);&#13;
43362 &#13;
43363 &#13;
43364         void setPackageInfoEventListener(<ref>PackageInformationEventCallback</ref> eventCallback) raises(<ref>WebAPIException</ref>);&#13;
43365         &#13;
43366 &#13;
43367         void unsetPackageInfoEventListener() raises(<ref>WebAPIException</ref>);&#13;
43368     &#13;
43369     };&#13;
43370 &#13;
43371 &#13;
43372     [NoInterfaceObject] interface PackageInformation {&#13;
43373 &#13;
43374         readonly attribute <ref>PackageId</ref> id;&#13;
43375 &#13;
43376 &#13;
43377         readonly attribute DOMString name;&#13;
43378 &#13;
43379 &#13;
43380         readonly attribute DOMString iconPath;&#13;
43381 &#13;
43382 &#13;
43383         readonly attribute DOMString version;&#13;
43384 &#13;
43385 &#13;
43386         readonly attribute long totalSize;&#13;
43387 &#13;
43388 &#13;
43389         readonly attribute long dataSize;&#13;
43390 &#13;
43391 &#13;
43392         readonly attribute Date lastModified;&#13;
43393 &#13;
43394 &#13;
43395         readonly attribute DOMString author;&#13;
43396 &#13;
43397 &#13;
43398         readonly attribute DOMString description;&#13;
43399 &#13;
43400 &#13;
43401         readonly attribute <ref>ApplicationId</ref>[] appIds;&#13;
43402 &#13;
43403     };&#13;
43404 &#13;
43405 &#13;
43406     [Callback=FunctionOnly, NoInterfaceObject] interface PackageInformationArraySuccessCallback {&#13;
43407 &#13;
43408 &#13;
43409         void onsuccess(<ref>PackageInformation</ref>[] informationArray);&#13;
43410     };&#13;
43411 &#13;
43412 &#13;
43413     [Callback, NoInterfaceObject] interface PackageProgressCallback {&#13;
43414 &#13;
43415 &#13;
43416         void onprogress(<ref>PackageId</ref> id, short progress);&#13;
43417 &#13;
43418 &#13;
43419         void oncomplete(<ref>PackageId</ref> id);&#13;
43420     };&#13;
43421 &#13;
43422 &#13;
43423     [Callback, NoInterfaceObject] interface PackageInformationEventCallback {&#13;
43424 &#13;
43425 &#13;
43426         void oninstalled(<ref>PackageInformation</ref> info);&#13;
43427 &#13;
43428 &#13;
43429         void onupdated(<ref>PackageInformation</ref> info);&#13;
43430 &#13;
43431 &#13;
43432         void onuninstalled(<ref>PackageId</ref> id);&#13;
43433     };&#13;
43434 &#13;
43435 };</webidl>
43436     <descriptive>
43437         <brief>
43438  This API provides functionalities to install or uninstall packages, and retrieve information about installed packages.<br/>It also provides a listener method so that an application is able to be notified when there is a change on the installed packages.
43439 For more information on the Package features, see <a href="../../org.tizen.web.appprogramming/html/guide/app_guide/package.htm">Package Guide</a>.
43440         </brief>
43441         <version>
43442  2.1
43443         </version>
43444     </descriptive>
43445     <Typedef name="PackageId" id="::Package::PackageId">
43446       <webidl>    typedef DOMString PackageId;</webidl>
43447       <descriptive>
43448           <brief>
43449  A unique ID for an installed package.
43450           </brief>
43451           <version>
43452  2.1
43453           </version>
43454       </descriptive>
43455       <Type type="DOMString"/>
43456     </Typedef>
43457     <Interface name="PackageManagerObject" id="::Package::PackageManagerObject">
43458       <webidl>    [NoInterfaceObject] interface PackageManagerObject {&#13;
43459         readonly attribute <ref>PackageManager</ref> package;&#13;
43460     };</webidl>
43461       <descriptive>
43462           <brief>
43463  This interface defines what is instantiated by the <em>Tizen </em>object from the Tizen Platform.
43464           </brief>
43465          <description>
43466           <p>
43467 There is a <em>tizen.package </em>object that allows access to Package API functionality.
43468           </p>
43469          </description>
43470           <version>
43471  2.1
43472           </version>
43473       </descriptive>
43474       <ExtendedAttributeList>
43475         <ExtendedAttribute name="NoInterfaceObject">
43476           <webidl>NoInterfaceObject</webidl>
43477         </ExtendedAttribute>
43478       </ExtendedAttributeList>
43479       <Attribute readonly="readonly" name="package" id="::Package::PackageManagerObject::package">
43480         <webidl>        readonly attribute <ref>PackageManager</ref> package;</webidl>
43481         <Type name="PackageManager"/>
43482       </Attribute>
43483     </Interface>
43484     <Implements name1="Tizen" name2="PackageManagerObject">
43485       <webidl>    <ref>Tizen</ref> implements <ref>PackageManagerObject</ref>;</webidl>
43486     </Implements>
43487     <Interface name="PackageManager" id="::Package::PackageManager">
43488       <webidl>    [NoInterfaceObject] interface PackageManager {&#13;
43489 &#13;
43490 &#13;
43491         void install(DOMString path,&#13;
43492                      <ref>PackageProgressCallback</ref> progressCallback,&#13;
43493                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
43494 &#13;
43495 &#13;
43496         void uninstall(<ref>PackageId</ref> id, &#13;
43497                        <ref>PackageProgressCallback</ref> progressCallback,&#13;
43498                        optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
43499 &#13;
43500 &#13;
43501 &#13;
43502 &#13;
43503         void getPackagesInfo(<ref>PackageInformationArraySuccessCallback</ref> successCallback,&#13;
43504                              optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
43505 &#13;
43506 &#13;
43507         <ref>PackageInformation</ref> getPackageInfo(optional <ref>PackageId</ref>? id) raises(<ref>WebAPIException</ref>);&#13;
43508 &#13;
43509 &#13;
43510         void setPackageInfoEventListener(<ref>PackageInformationEventCallback</ref> eventCallback) raises(<ref>WebAPIException</ref>);&#13;
43511         &#13;
43512 &#13;
43513         void unsetPackageInfoEventListener() raises(<ref>WebAPIException</ref>);&#13;
43514     &#13;
43515     };</webidl>
43516       <descriptive>
43517           <brief>
43518  This interface defines the package manager.
43519           </brief>
43520           <version>
43521  2.1
43522           </version>
43523       </descriptive>
43524       <ExtendedAttributeList>
43525         <ExtendedAttribute name="NoInterfaceObject">
43526           <webidl>NoInterfaceObject</webidl>
43527         </ExtendedAttribute>
43528       </ExtendedAttributeList>
43529       <Operation name="install" id="::Package::PackageManager::install">
43530         <webidl>        void install(DOMString path,&#13;
43531                      <ref>PackageProgressCallback</ref> progressCallback,&#13;
43532                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
43533         <descriptive>
43534             <brief>
43535  Installs a package with a specified package path on a device.
43536             </brief>
43537            <description>
43538             <p>
43539 This API provides a way to notify the progress and completion of an installation request through PackageProgressCallback.
43540             </p>
43541             <p>
43542 The <em>ErrorCallback() </em>is launched with these error types:
43543             </p>
43544             <ul>
43545               <li>
43546 NotFoundError - If the package is not found in the specified path.              </li>
43547               <li>
43548 UnknownError - If it is not allowed to install the package by platform or any other platform error occurs.              </li>
43549             </ul>
43550            </description>
43551             <version>
43552  2.1
43553             </version>
43554             <privilegelevel>
43555  platform
43556             </privilegelevel>
43557             <privilege>
43558  http://tizen.org/privilege/packagemanager.install
43559             </privilege>
43560             <remark>
43561  Virtual path cannot be used for the parameter. First, you need to convert any virtual path to a file URI path using the resolve function in the Filesystem API before passing it to the function.
43562             </remark>
43563             <Code> var onInstallation = {
43564       onprogress: function(packageId, percentage) {
43565          console.log(&quot;On installation(&quot; + packageId + &quot;) : progress(&quot; + percentage + &quot;)&quot;);
43566       },
43567       oncomplete: function(packageId) {
43568          console.log(&quot;Installation(&quot; + packageId + &quot;) Complete&quot;);
43569       }
43570  }
43571
43572  var onError = function (err) {
43573       console.log(&quot;Error occurred on installation : &quot; + err.name);
43574  }
43575
43576  // Let's assume that &quot;test.wgt&quot; file is exist in the downloads directory
43577  tizen.filesystem.resolve(&quot;downloads/test.wgt&quot;,
43578      function (file) {
43579          console.log(&quot;file path : &quot; + file.path);
43580          tizen.package.install(file.toURI(), onInstallation, onError);
43581      },
43582      function (err) {
43583          console.log(&quot;Error occurred on resolve : &quot; + err.name);
43584      },
43585      &quot;r&quot;);
43586
43587  </Code>
43588         </descriptive>
43589         <Type type="void"/>
43590         <ArgumentList>
43591           <Argument name="path">
43592             <descriptive>
43593                 <description><p>
43594  The package path to install
43595                 </p></description>
43596             </descriptive>
43597             <Type type="DOMString"/>
43598           </Argument>
43599           <Argument name="progressCallback">
43600             <descriptive>
43601                 <description><p>
43602  The method to invoke when the installation is in progress or has been completed
43603                 </p></description>
43604             </descriptive>
43605             <Type name="PackageProgressCallback"/>
43606           </Argument>
43607           <Argument optional="optional" name="errorCallback">
43608             <descriptive>
43609                 <description><p>
43610  The method to invoke when an error occurs
43611                 </p></description>
43612             </descriptive>
43613             <Type name="ErrorCallback" nullable="nullable"/>
43614           </Argument>
43615         </ArgumentList>
43616         <Raises>
43617           <RaiseException name="WebAPIException">
43618             <descriptive>
43619                 <description><p>
43620  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
43621                 </p></description>
43622                 <description><p>
43623  with error type SecurityError, if the application does not have the privilege to call this method.
43624                 </p></description>
43625             </descriptive>
43626           </RaiseException>
43627         </Raises>
43628       </Operation>
43629       <Operation name="uninstall" id="::Package::PackageManager::uninstall">
43630         <webidl>        void uninstall(<ref>PackageId</ref> id, &#13;
43631                        <ref>PackageProgressCallback</ref> progressCallback,&#13;
43632                        optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
43633         <descriptive>
43634             <brief>
43635  Uninstalls the package with a specified package ID.
43636             </brief>
43637            <description>
43638             <p>
43639 This API provides a way to notify about the progress and completion of an uninstallation request through PackageProgressCallback.
43640             </p>
43641             <p>
43642 The <em>ErrorCallback() </em>is launched with these error types:
43643             </p>
43644             <ul>
43645               <li>
43646 NotFoundError - If the package is not found with specified ID.              </li>
43647               <li>
43648 UnknownError - If it is not allowed to uninstall the package from the platform or any other platform error occurs.              </li>
43649             </ul>
43650            </description>
43651             <version>
43652  2.1
43653             </version>
43654             <privilegelevel>
43655  platform
43656             </privilegelevel>
43657             <privilege>
43658  http://tizen.org/privilege/packagemanager.install
43659             </privilege>
43660             <remark>
43661  Some preloaded packages cannot be uninstalled. In this case, ErrorCallback with UnKnownError type will be launched.
43662             </remark>
43663             <Code> var onUninstallation = {
43664       onprogress: function(packageId, percentage) {
43665          console.log(&quot;On Uninstallation(&quot; + packageId + &quot;) : progress(&quot; + percentage + &quot;)&quot;);
43666       },
43667       oncomplete: function(packageId) {
43668          console.log(&quot;Uninstallation(&quot; + packageId + &quot;) Complete&quot;);
43669       }
43670  };
43671
43672  var onError = function (err) {
43673       console.log(&quot;Error occurred on installation : &quot; + err.name);
43674  };
43675
43676  // Let's assume that the package id to uninstall is &quot;testapp001&quot;
43677  tizen.package.uninstall(&quot;testapp001&quot;, onUninstallation, onError);
43678  </Code>
43679         </descriptive>
43680         <Type type="void"/>
43681         <ArgumentList>
43682           <Argument name="id">
43683             <descriptive>
43684                 <description><p>
43685  The package ID to uninstall
43686                 </p></description>
43687             </descriptive>
43688             <Type name="PackageId"/>
43689           </Argument>
43690           <Argument name="progressCallback">
43691             <descriptive>
43692                 <description><p>
43693  The method to invoke when uninstallation is in progress or has been completed
43694                 </p></description>
43695             </descriptive>
43696             <Type name="PackageProgressCallback"/>
43697           </Argument>
43698           <Argument optional="optional" name="errorCallback">
43699             <descriptive>
43700                 <description><p>
43701  The method to invoke when an error occurs
43702                 </p></description>
43703             </descriptive>
43704             <Type name="ErrorCallback" nullable="nullable"/>
43705           </Argument>
43706         </ArgumentList>
43707         <Raises>
43708           <RaiseException name="WebAPIException">
43709             <descriptive>
43710                 <description><p>
43711  with error type TypeMismatchError, if an input parameter is not compatible with the expected type for that parameter.
43712                 </p></description>
43713                 <description><p>
43714  with error type SecurityError, if the application does not have the privilege to call this method.
43715                 </p></description>
43716             </descriptive>
43717           </RaiseException>
43718         </Raises>
43719       </Operation>
43720       <Operation name="getPackagesInfo" id="::Package::PackageManager::getPackagesInfo">
43721         <webidl>        void getPackagesInfo(<ref>PackageInformationArraySuccessCallback</ref> successCallback,&#13;
43722                              optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
43723         <descriptive>
43724             <brief>
43725  Gets information of the installed packages.
43726             </brief>
43727            <description>
43728             <p>
43729 The result contains the snapshots of the installed packages information.
43730             </p>
43731             <p>
43732 The <em>errorCallback()</em> is launched with this error type:
43733             </p>
43734             <ul>
43735               <li>
43736 UnknownError - If any other platform error occurs.              </li>
43737             </ul>
43738            </description>
43739             <version>
43740  2.1
43741             </version>
43742             <privilegelevel>
43743  public
43744             </privilegelevel>
43745             <privilege>
43746  http://tizen.org/privilege/package.info
43747             </privilege>
43748             <Code> function onListInstalledPackages(packages) {
43749      for (var i = 0; i &#60; packages.length; i++) {
43750          console.log(&quot;Package id[&quot;+i+&quot;] : &quot; +packages[i].id);
43751      }
43752  }
43753
43754  tizen.package.getPackagesInfo(
43755      onListInstalledPackages,
43756      function (err) {console.log(&quot;Can't obtain packages list&quot; + err.name);});
43757  </Code>
43758         </descriptive>
43759         <Type type="void"/>
43760         <ArgumentList>
43761           <Argument name="successCallback">
43762             <descriptive>
43763                 <description><p>
43764  The method to call when an invocation ends successfully
43765                 </p></description>
43766             </descriptive>
43767             <Type name="PackageInformationArraySuccessCallback"/>
43768           </Argument>
43769           <Argument optional="optional" name="errorCallback">
43770             <descriptive>
43771                 <description><p>
43772  The method to call when an error occurs
43773                 </p></description>
43774             </descriptive>
43775             <Type name="ErrorCallback" nullable="nullable"/>
43776           </Argument>
43777         </ArgumentList>
43778         <Raises>
43779           <RaiseException name="WebAPIException">
43780             <descriptive>
43781                 <description><p>
43782  with error type TypeMismatchError, if an input parameter is not compatible with the expected type for that parameter.
43783                 </p></description>
43784                 <description><p>
43785  with error type SecurityError, if the application does not have the privilege to call this method.
43786                 </p></description>
43787             </descriptive>
43788           </RaiseException>
43789         </Raises>
43790       </Operation>
43791       <Operation name="getPackageInfo" id="::Package::PackageManager::getPackageInfo">
43792         <webidl>        <ref>PackageInformation</ref> getPackageInfo(optional <ref>PackageId</ref>? id) raises(<ref>WebAPIException</ref>);</webidl>
43793         <descriptive>
43794             <brief>
43795  Gets information of an installed package.
43796             </brief>
43797            <description>
43798             <p>
43799 If the ID is set to <var>null</var> or not set at all, it returns package information of the current application.
43800 The list of installed packages and their package IDs is obtained using <em>getPackagesInfo()</em>.
43801             </p>
43802            </description>
43803             <version>
43804  2.1
43805             </version>
43806             <privilegelevel>
43807  public
43808             </privilegelevel>
43809             <privilege>
43810  http://tizen.org/privilege/package.info
43811             </privilege>
43812             <Code> var packageInfo = tizen.package.getPackageInfo(null);
43813
43814  console.log(&quot;Current Package ID : &quot; + packageInfo.id);
43815  </Code>
43816         </descriptive>
43817         <Type name="PackageInformation">
43818           <descriptive>
43819               <description><p>
43820  PackageInformation The information of a package
43821               </p></description>
43822           </descriptive>
43823         </Type>
43824         <ArgumentList>
43825           <Argument optional="optional" name="id">
43826             <descriptive>
43827                 <description><p>
43828  A string representing package ID. If the ID is not provided, the package information of the calling application is returned.
43829                 </p></description>
43830             </descriptive>
43831             <Type name="PackageId" nullable="nullable"/>
43832           </Argument>
43833         </ArgumentList>
43834         <Raises>
43835           <RaiseException name="WebAPIException">
43836             <descriptive>
43837                 <description><p>
43838  with error type TypeMismatchError, if an input parameter is not compatible with the expected type for that parameter.
43839                 </p></description>
43840                 <description><p>
43841  with error type SecurityError, if the application does not have the privilege to call this method.
43842                 </p></description>
43843                 <description><p>
43844  with error type NotFoundError, if the package with the specified ID is not found.
43845                 </p></description>
43846                 <description><p>
43847  with error type UnknownError, if the package information cannot be retrieved because of a platform error.
43848                 </p></description>
43849             </descriptive>
43850           </RaiseException>
43851         </Raises>
43852       </Operation>
43853       <Operation name="setPackageInfoEventListener" id="::Package::PackageManager::setPackageInfoEventListener">
43854         <webidl>        void setPackageInfoEventListener(<ref>PackageInformationEventCallback</ref> eventCallback) raises(<ref>WebAPIException</ref>);</webidl>
43855         <descriptive>
43856             <brief>
43857  Sets a listener to receive notifications for any changes made to the list of installed packages.
43858             </brief>
43859            <description>
43860             <p>
43861 This method sets a <em>PackageInformationEventCallback</em> type callback that is triggered when a package is installed, removed or updated.
43862             </p>
43863             <p>
43864 The callback lasts until <em>unsetPackageInfoEventListener()</em> method is called.
43865             </p>
43866            </description>
43867             <version>
43868  2.1
43869             </version>
43870             <privilegelevel>
43871  public
43872             </privilegelevel>
43873             <privilege>
43874  http://tizen.org/privilege/package.info
43875             </privilege>
43876             <Code> var packageEventCallback = {
43877     oninstalled: function(packageInfo) {
43878        console.log('The package ' + packageInfo.name + ' is installed');
43879     },
43880     onupdated: function(packageInfo) {
43881        console.log('The package ' + packageInfo.name + ' is updated');
43882     },
43883     onuninstalled: function(packageId) {
43884        console.log('The package ' + packageId + ' is uninstalled');
43885     }
43886  };
43887
43888  tizen.package.setPackageInfoEventListener(packageEventCallback);
43889  </Code>
43890         </descriptive>
43891         <Type type="void"/>
43892         <ArgumentList>
43893           <Argument name="eventCallback">
43894             <descriptive>
43895                 <description><p>
43896  The method to be called when any change is made to the list of installed packages.
43897                 </p></description>
43898             </descriptive>
43899             <Type name="PackageInformationEventCallback"/>
43900           </Argument>
43901         </ArgumentList>
43902         <Raises>
43903           <RaiseException name="WebAPIException">
43904             <descriptive>
43905                 <description><p>
43906  with error type TypeMismatchError, if an input parameter is not compatible with the expected type for that parameter.
43907                 </p></description>
43908                 <description><p>
43909  with error type SecurityError, if the application does not have the privilege to call this method.
43910                 </p></description>
43911                 <description><p>
43912  with error type UnknownError, if the package list change event cannot be generated because of a platform error.
43913                 </p></description>
43914             </descriptive>
43915           </RaiseException>
43916         </Raises>
43917       </Operation>
43918       <Operation name="unsetPackageInfoEventListener" id="::Package::PackageManager::unsetPackageInfoEventListener">
43919         <webidl>        void unsetPackageInfoEventListener() raises(<ref>WebAPIException</ref>);</webidl>
43920         <descriptive>
43921             <brief>
43922  Unsets the listener to stop receiving package notifications.
43923             </brief>
43924             <version>
43925  2.1
43926             </version>
43927             <privilegelevel>
43928  public
43929             </privilegelevel>
43930             <privilege>
43931  http://tizen.org/privilege/package.info
43932             </privilege>
43933             <Code> tizen.package.unsetPackageInfoEventListener();
43934  </Code>
43935         </descriptive>
43936         <Type type="void"/>
43937         <ArgumentList/>
43938         <Raises>
43939           <RaiseException name="WebAPIException">
43940             <descriptive>
43941                 <description><p>
43942  with error type SecurityError, if the application does not have the privilege to call this method.
43943                 </p></description>
43944                 <description><p>
43945  with error type UnknownError, if the listener removal request fails because of a platform error.
43946                 </p></description>
43947             </descriptive>
43948           </RaiseException>
43949         </Raises>
43950       </Operation>
43951     </Interface>
43952     <Interface name="PackageInformation" id="::Package::PackageInformation">
43953       <webidl>    [NoInterfaceObject] interface PackageInformation {&#13;
43954 &#13;
43955         readonly attribute <ref>PackageId</ref> id;&#13;
43956 &#13;
43957 &#13;
43958         readonly attribute DOMString name;&#13;
43959 &#13;
43960 &#13;
43961         readonly attribute DOMString iconPath;&#13;
43962 &#13;
43963 &#13;
43964         readonly attribute DOMString version;&#13;
43965 &#13;
43966 &#13;
43967         readonly attribute long totalSize;&#13;
43968 &#13;
43969 &#13;
43970         readonly attribute long dataSize;&#13;
43971 &#13;
43972 &#13;
43973         readonly attribute Date lastModified;&#13;
43974 &#13;
43975 &#13;
43976         readonly attribute DOMString author;&#13;
43977 &#13;
43978 &#13;
43979         readonly attribute DOMString description;&#13;
43980 &#13;
43981 &#13;
43982         readonly attribute <ref>ApplicationId</ref>[] appIds;&#13;
43983 &#13;
43984     };</webidl>
43985       <descriptive>
43986           <brief>
43987  This interface defines the general information available to an installed package.
43988           </brief>
43989           <version>
43990  2.1
43991           </version>
43992       </descriptive>
43993       <ExtendedAttributeList>
43994         <ExtendedAttribute name="NoInterfaceObject">
43995           <webidl>NoInterfaceObject</webidl>
43996         </ExtendedAttribute>
43997       </ExtendedAttributeList>
43998       <Attribute readonly="readonly" name="id" id="::Package::PackageInformation::id">
43999         <webidl>        readonly attribute <ref>PackageId</ref> id;</webidl>
44000         <descriptive>
44001             <brief>
44002  An attribute to store the identifier of a package.
44003             </brief>
44004             <version>
44005  2.1
44006             </version>
44007         </descriptive>
44008         <Type name="PackageId"/>
44009       </Attribute>
44010       <Attribute readonly="readonly" name="name" id="::Package::PackageInformation::name">
44011         <webidl>        readonly attribute DOMString name;</webidl>
44012         <descriptive>
44013             <brief>
44014  An attribute to store the package name.
44015             </brief>
44016             <version>
44017  2.1
44018             </version>
44019         </descriptive>
44020         <Type type="DOMString"/>
44021       </Attribute>
44022       <Attribute readonly="readonly" name="iconPath" id="::Package::PackageInformation::iconPath">
44023         <webidl>        readonly attribute DOMString iconPath;</webidl>
44024         <descriptive>
44025             <brief>
44026  An attribute to store the icon path of a package.
44027             </brief>
44028             <version>
44029  2.1
44030             </version>
44031         </descriptive>
44032         <Type type="DOMString"/>
44033       </Attribute>
44034       <Attribute readonly="readonly" name="version" id="::Package::PackageInformation::version">
44035         <webidl>        readonly attribute DOMString version;</webidl>
44036         <descriptive>
44037             <brief>
44038  An attribute to store the package version.
44039             </brief>
44040             <version>
44041  2.1
44042             </version>
44043         </descriptive>
44044         <Type type="DOMString"/>
44045       </Attribute>
44046       <Attribute readonly="readonly" name="totalSize" id="::Package::PackageInformation::totalSize">
44047         <webidl>        readonly attribute long totalSize;</webidl>
44048         <descriptive>
44049             <brief>
44050  An attribute to store the total installed size(package + data) of a package.
44051             </brief>
44052             <version>
44053  2.1
44054             </version>
44055         </descriptive>
44056         <Type type="long"/>
44057       </Attribute>
44058       <Attribute readonly="readonly" name="dataSize" id="::Package::PackageInformation::dataSize">
44059         <webidl>        readonly attribute long dataSize;</webidl>
44060         <descriptive>
44061             <brief>
44062  An attribute to store the current data size of a package.
44063             </brief>
44064             <version>
44065  2.1
44066             </version>
44067         </descriptive>
44068         <Type type="long"/>
44069       </Attribute>
44070       <Attribute readonly="readonly" name="lastModified" id="::Package::PackageInformation::lastModified">
44071         <webidl>        readonly attribute Date lastModified;</webidl>
44072         <descriptive>
44073             <brief>
44074  An attribute to store the latest installed or updated time of a package.
44075             </brief>
44076             <version>
44077  2.1
44078             </version>
44079         </descriptive>
44080         <Type type="Date"/>
44081       </Attribute>
44082       <Attribute readonly="readonly" name="author" id="::Package::PackageInformation::author">
44083         <webidl>        readonly attribute DOMString author;</webidl>
44084         <descriptive>
44085             <brief>
44086  An attribute to store the author of a package.
44087             </brief>
44088             <version>
44089  2.1
44090             </version>
44091         </descriptive>
44092         <Type type="DOMString"/>
44093       </Attribute>
44094       <Attribute readonly="readonly" name="description" id="::Package::PackageInformation::description">
44095         <webidl>        readonly attribute DOMString description;</webidl>
44096         <descriptive>
44097             <brief>
44098  An attribute to store the package description.
44099             </brief>
44100             <version>
44101  2.1
44102             </version>
44103         </descriptive>
44104         <Type type="DOMString"/>
44105       </Attribute>
44106       <Attribute readonly="readonly" name="appIds" id="::Package::PackageInformation::appIds">
44107         <webidl>        readonly attribute <ref>ApplicationId</ref>[] appIds;</webidl>
44108         <descriptive>
44109             <brief>
44110  An attribute to store the application ID list of a package.
44111             </brief>
44112             <version>
44113  2.1
44114             </version>
44115         </descriptive>
44116         <Type type="array">
44117           <Type name="ApplicationId"/>
44118         </Type>
44119       </Attribute>
44120     </Interface>
44121     <Interface name="PackageInformationArraySuccessCallback" id="::Package::PackageInformationArraySuccessCallback">
44122       <webidl>    [Callback=FunctionOnly, NoInterfaceObject] interface PackageInformationArraySuccessCallback {&#13;
44123 &#13;
44124 &#13;
44125         void onsuccess(<ref>PackageInformation</ref>[] informationArray);&#13;
44126     };</webidl>
44127       <descriptive>
44128           <brief>
44129  This interface invokes the success callback with an array of <em>PackageInformation </em>objects as an input parameter when the installed package list is retrieved.
44130           </brief>
44131          <description>
44132           <p>
44133 It is used in <em>tizen.package.getPackagesInfo()</em>.
44134           </p>
44135          </description>
44136           <version>
44137  2.1
44138           </version>
44139       </descriptive>
44140       <ExtendedAttributeList>
44141         <ExtendedAttribute name="Callback" value="FunctionOnly">
44142           <webidl>Callback</webidl>
44143         </ExtendedAttribute>
44144         <ExtendedAttribute name="NoInterfaceObject">
44145           <webidl> NoInterfaceObject</webidl>
44146         </ExtendedAttribute>
44147       </ExtendedAttributeList>
44148       <Operation name="onsuccess" id="::Package::PackageInformationArraySuccessCallback::onsuccess">
44149         <webidl>        void onsuccess(<ref>PackageInformation</ref>[] informationArray);</webidl>
44150         <descriptive>
44151             <brief>
44152  Called when the asynchronous call completes successfully.
44153             </brief>
44154             <version>
44155  2.1
44156             </version>
44157         </descriptive>
44158         <Type type="void"/>
44159         <ArgumentList>
44160           <Argument name="informationArray">
44161             <descriptive>
44162                 <description><p>
44163  A list of installed packages information.
44164                 </p></description>
44165             </descriptive>
44166             <Type type="array">
44167               <Type name="PackageInformation"/>
44168             </Type>
44169           </Argument>
44170         </ArgumentList>
44171       </Operation>
44172     </Interface>
44173     <Interface name="PackageProgressCallback" id="::Package::PackageProgressCallback">
44174       <webidl>    [Callback, NoInterfaceObject] interface PackageProgressCallback {&#13;
44175 &#13;
44176 &#13;
44177         void onprogress(<ref>PackageId</ref> id, short progress);&#13;
44178 &#13;
44179 &#13;
44180         void oncomplete(<ref>PackageId</ref> id);&#13;
44181     };</webidl>
44182       <descriptive>
44183           <brief>
44184  This callback interface specifies subscriptions for any notification on the progress or completion of requests.
44185           </brief>
44186           <version>
44187  2.1
44188           </version>
44189       </descriptive>
44190       <ExtendedAttributeList>
44191         <ExtendedAttribute name="Callback">
44192           <webidl>Callback</webidl>
44193         </ExtendedAttribute>
44194         <ExtendedAttribute name="NoInterfaceObject">
44195           <webidl> NoInterfaceObject</webidl>
44196         </ExtendedAttribute>
44197       </ExtendedAttributeList>
44198       <Operation name="onprogress" id="::Package::PackageProgressCallback::onprogress">
44199         <webidl>        void onprogress(<ref>PackageId</ref> id, short progress);</webidl>
44200         <descriptive>
44201             <brief>
44202  Called while the request is in progress.
44203             </brief>
44204             <version>
44205  2.1
44206             </version>
44207         </descriptive>
44208         <Type type="void"/>
44209         <ArgumentList>
44210           <Argument name="id">
44211             <descriptive>
44212                 <description><p>
44213  The package ID
44214                 </p></description>
44215             </descriptive>
44216             <Type name="PackageId"/>
44217           </Argument>
44218           <Argument name="progress">
44219             <descriptive>
44220                 <description><p>
44221  The progress in percentage.
44222                 </p></description>
44223             </descriptive>
44224             <Type type="short"/>
44225           </Argument>
44226         </ArgumentList>
44227       </Operation>
44228       <Operation name="oncomplete" id="::Package::PackageProgressCallback::oncomplete">
44229         <webidl>        void oncomplete(<ref>PackageId</ref> id);</webidl>
44230         <descriptive>
44231             <brief>
44232  Called while the request is completed.
44233             </brief>
44234             <version>
44235  2.1
44236             </version>
44237         </descriptive>
44238         <Type type="void"/>
44239         <ArgumentList>
44240           <Argument name="id">
44241             <descriptive>
44242                 <description><p>
44243  The package ID
44244                 </p></description>
44245             </descriptive>
44246             <Type name="PackageId"/>
44247           </Argument>
44248         </ArgumentList>
44249       </Operation>
44250     </Interface>
44251     <Interface name="PackageInformationEventCallback" id="::Package::PackageInformationEventCallback">
44252       <webidl>    [Callback, NoInterfaceObject] interface PackageInformationEventCallback {&#13;
44253 &#13;
44254 &#13;
44255         void oninstalled(<ref>PackageInformation</ref> info);&#13;
44256 &#13;
44257 &#13;
44258         void onupdated(<ref>PackageInformation</ref> info);&#13;
44259 &#13;
44260 &#13;
44261         void onuninstalled(<ref>PackageId</ref> id);&#13;
44262     };</webidl>
44263       <descriptive>
44264           <brief>
44265  This callback interface specifies methods that are invoked when a package is installed, updated, or uninstalled.
44266           </brief>
44267           <version>
44268  2.1
44269           </version>
44270       </descriptive>
44271       <ExtendedAttributeList>
44272         <ExtendedAttribute name="Callback">
44273           <webidl>Callback</webidl>
44274         </ExtendedAttribute>
44275         <ExtendedAttribute name="NoInterfaceObject">
44276           <webidl> NoInterfaceObject</webidl>
44277         </ExtendedAttribute>
44278       </ExtendedAttributeList>
44279       <Operation name="oninstalled" id="::Package::PackageInformationEventCallback::oninstalled">
44280         <webidl>        void oninstalled(<ref>PackageInformation</ref> info);</webidl>
44281         <descriptive>
44282             <brief>
44283  Called when a package is installed.
44284             </brief>
44285             <version>
44286  2.1
44287             </version>
44288         </descriptive>
44289         <Type type="void"/>
44290         <ArgumentList>
44291           <Argument name="info">
44292             <descriptive>
44293                 <description><p>
44294  The information of the installed package
44295                 </p></description>
44296             </descriptive>
44297             <Type name="PackageInformation"/>
44298           </Argument>
44299         </ArgumentList>
44300       </Operation>
44301       <Operation name="onupdated" id="::Package::PackageInformationEventCallback::onupdated">
44302         <webidl>        void onupdated(<ref>PackageInformation</ref> info);</webidl>
44303         <descriptive>
44304             <brief>
44305  Called when a package is updated.
44306             </brief>
44307             <version>
44308  2.1
44309             </version>
44310         </descriptive>
44311         <Type type="void"/>
44312         <ArgumentList>
44313           <Argument name="info">
44314             <descriptive>
44315                 <description><p>
44316  The information of the updated package
44317                 </p></description>
44318             </descriptive>
44319             <Type name="PackageInformation"/>
44320           </Argument>
44321         </ArgumentList>
44322       </Operation>
44323       <Operation name="onuninstalled" id="::Package::PackageInformationEventCallback::onuninstalled">
44324         <webidl>        void onuninstalled(<ref>PackageId</ref> id);</webidl>
44325         <descriptive>
44326             <brief>
44327  Called when a package is uninstalled.
44328             </brief>
44329             <version>
44330  2.1
44331             </version>
44332         </descriptive>
44333         <Type type="void"/>
44334         <ArgumentList>
44335           <Argument name="id">
44336             <descriptive>
44337                 <description><p>
44338  The ID of the uninstalled package
44339                 </p></description>
44340             </descriptive>
44341             <Type name="PackageId"/>
44342           </Argument>
44343         </ArgumentList>
44344       </Operation>
44345     </Interface>
44346   </Module>
44347   <Module name="Power" id="::Power">
44348     <webidl>module Power {
44349
44350     enum PowerResource    { &quot;SCREEN&quot;, &quot;CPU&quot; };
44351
44352     enum PowerScreenState { &quot;SCREEN_OFF&quot;, &quot;SCREEN_DIM&quot;, &quot;SCREEN_NORMAL&quot;, &quot;SCREEN_BRIGHT&quot; };
44353
44354     enum PowerCpuState { &quot;CPU_AWAKE&quot; };
44355
44356     typedef (<ref>PowerScreenState</ref> or <ref>PowerCpuState</ref>) PowerState;
44357
44358     [NoInterfaceObject] interface PowerManagerObject {
44359         readonly attribute <ref>PowerManager</ref> power;
44360     };
44361     <ref>Tizen</ref> implements <ref>PowerManagerObject</ref>;
44362
44363    [NoInterfaceObject] interface PowerManager {
44364        void request(<ref>PowerResource</ref> resource, <ref>PowerState</ref> state) raises(<ref>WebAPIException</ref>);
44365
44366        void release(<ref>PowerResource</ref> resource) raises(<ref>WebAPIException</ref>);
44367
44368        void setScreenStateChangeListener(<ref>ScreenStateChangeCallback</ref> listener) raises(<ref>WebAPIException</ref>);
44369
44370        void unsetScreenStateChangeListener() raises(<ref>WebAPIException</ref>);
44371
44372        double getScreenBrightness() raises(<ref>WebAPIException</ref>);
44373
44374        void setScreenBrightness(double brightness) raises(<ref>WebAPIException</ref>);
44375
44376        boolean isScreenOn() raises(<ref>WebAPIException</ref>);
44377
44378        void restoreScreenBrightness() raises(<ref>WebAPIException</ref>);
44379
44380        void turnScreenOn() raises(<ref>WebAPIException</ref>);
44381
44382        void turnScreenOff() raises(<ref>WebAPIException</ref>);
44383    };
44384
44385    [Callback=FunctionOnly, NoInterfaceObject] interface ScreenStateChangeCallback {
44386        void onchanged(<ref>PowerScreenState</ref> previousState, <ref>PowerScreenState</ref> changedState);
44387    };
44388
44389 };</webidl>
44390     <descriptive>
44391         <brief>
44392  This API provides support for requesting power management related resource states.
44393         </brief>
44394        <description>
44395         <p>
44396 For more information on the Power features, see <a href="../../org.tizen.web.appprogramming/html/guide/sys_guide/power.htm">Power Guide</a>.
44397         </p>
44398        </description>
44399         <version>
44400  2.0
44401         </version>
44402     </descriptive>
44403     <Enum name="PowerResource" id="::Power::PowerResource">
44404       <webidl>    enum PowerResource    { &quot;SCREEN&quot;, &quot;CPU&quot; };</webidl>
44405       <descriptive>
44406           <brief>
44407  An enumerator that defines power resources with values aligned with <em>SystemInfo </em>property values.
44408           </brief>
44409          <description>
44410           <p>
44411 We support screen and cpu resources for now.
44412 Supported power resource states are provided in PowerScreenState and PowerCpuState enums respectively prefixed by the corresponding resource type.
44413           </p>
44414          </description>
44415           <version>
44416  2.0
44417           </version>
44418       </descriptive>
44419       <EnumValue stringvalue="SCREEN">
44420         <webidl> &quot;SCREEN</webidl>
44421       </EnumValue>
44422       <EnumValue stringvalue="CPU">
44423         <webidl> &quot;CPU</webidl>
44424       </EnumValue>
44425     </Enum>
44426     <Enum name="PowerScreenState" id="::Power::PowerScreenState">
44427       <webidl>    enum PowerScreenState { &quot;SCREEN_OFF&quot;, &quot;SCREEN_DIM&quot;, &quot;SCREEN_NORMAL&quot;, &quot;SCREEN_BRIGHT&quot; };</webidl>
44428       <descriptive>
44429           <brief>
44430  An enumerator that indicates the power state for screen resource.
44431           </brief>
44432          <description>
44433           <p>
44434 The supported values are:
44435           </p>
44436           <ul>
44437             <li>
44438 SCREEN_OFF - This screen state cannot be requested but can only be used in the state change callback.            </li>
44439             <li>
44440 SCREEN_DIM - The minimal screen state is set to <em>DIM</em> and device does not change to <em>OFF</em> state automatically.            </li>
44441             <li>
44442 SCREEN_NORMAL - The minimal screen state is set to <em>NORMAL</em> and device does not change to <em>DIM</em> state automatically.            </li>
44443             <li>
44444 SCREEN_BRIGHT (Deprecated) - The minimal screen state is set to <em>BRIGHT</em> and device does not change to <em>NORMAL</em> state automatically.            </li>
44445           </ul>
44446           <p>
44447 <em>DIM</em> state refers to the screen that the backlight is turned off
44448 <em>NORMAL</em> state refers to the default screen brightness that a user has configured for the device.
44449 <em>BRIGHT(Deprecated)</em> state refers to the maximum screen brightness that the device provides.
44450 Note that the change in brightness does not affect the system brightness setting, i.e., the system brightness value is automatically restored when the resource is released or the process is completed.
44451           </p>
44452          </description>
44453           <deprecated>
44454  SCREEN_BRIGHT is deprecated.
44455           </deprecated>
44456           <version>
44457  2.0
44458           </version>
44459       </descriptive>
44460       <EnumValue stringvalue="SCREEN_OFF">
44461         <webidl> &quot;SCREEN_OFF</webidl>
44462       </EnumValue>
44463       <EnumValue stringvalue="SCREEN_DIM">
44464         <webidl> &quot;SCREEN_DIM</webidl>
44465       </EnumValue>
44466       <EnumValue stringvalue="SCREEN_NORMAL">
44467         <webidl> &quot;SCREEN_NORMAL</webidl>
44468       </EnumValue>
44469       <EnumValue stringvalue="SCREEN_BRIGHT">
44470         <webidl> &quot;SCREEN_BRIGHT</webidl>
44471       </EnumValue>
44472     </Enum>
44473     <Enum name="PowerCpuState" id="::Power::PowerCpuState">
44474       <webidl>    enum PowerCpuState { &quot;CPU_AWAKE&quot; };</webidl>
44475       <descriptive>
44476           <brief>
44477  An enumerator that indicates the power state for cpu resource.
44478           </brief>
44479          <description>
44480           <p>
44481 The supported values are:
44482           </p>
44483           <ul>
44484             <li>
44485 CPU_AWAKE - The cpu state is set to be awaken and it does not go to <em>SLEEP</em> state automatically.            </li>
44486           </ul>
44487          </description>
44488           <version>
44489  2.0
44490           </version>
44491       </descriptive>
44492       <EnumValue stringvalue="CPU_AWAKE">
44493         <webidl> &quot;CPU_AWAKE</webidl>
44494       </EnumValue>
44495     </Enum>
44496     <Typedef name="PowerState" id="::Power::PowerState">
44497       <webidl>    typedef (<ref>PowerScreenState</ref> or <ref>PowerCpuState</ref>) PowerState;</webidl>
44498       <descriptive>
44499           <brief>
44500  The supported power states in general.
44501 It can be either a PowerScreenState or a PowerCpuState.
44502           </brief>
44503           <version>
44504  2.0
44505           </version>
44506       </descriptive>
44507       <Type type="union">
44508         <Type name="PowerScreenState"/>
44509         <Type name="PowerCpuState"/>
44510       </Type>
44511     </Typedef>
44512     <Interface name="PowerManagerObject" id="::Power::PowerManagerObject">
44513       <webidl>    [NoInterfaceObject] interface PowerManagerObject {
44514         readonly attribute <ref>PowerManager</ref> power;
44515     };</webidl>
44516       <descriptive>
44517           <brief>
44518  This interface defines what is instantiated by the <em>Tizen</em> object from the Tizen Platform.
44519           </brief>
44520          <description>
44521           <p>
44522 There will be a <em>tizen.power </em>object that allows accessing of a functionality of the Power API.
44523           </p>
44524          </description>
44525           <version>
44526  2.0
44527           </version>
44528       </descriptive>
44529       <ExtendedAttributeList>
44530         <ExtendedAttribute name="NoInterfaceObject">
44531           <webidl>NoInterfaceObject</webidl>
44532         </ExtendedAttribute>
44533       </ExtendedAttributeList>
44534       <Attribute readonly="readonly" name="power" id="::Power::PowerManagerObject::power">
44535         <webidl>        readonly attribute <ref>PowerManager</ref> power;</webidl>
44536         <Type name="PowerManager"/>
44537       </Attribute>
44538     </Interface>
44539     <Implements name1="Tizen" name2="PowerManagerObject">
44540       <webidl>    <ref>Tizen</ref> implements <ref>PowerManagerObject</ref>;</webidl>
44541     </Implements>
44542     <Interface name="PowerManager" id="::Power::PowerManager">
44543       <webidl>   [NoInterfaceObject] interface PowerManager {
44544        void request(<ref>PowerResource</ref> resource, <ref>PowerState</ref> state) raises(<ref>WebAPIException</ref>);
44545
44546        void release(<ref>PowerResource</ref> resource) raises(<ref>WebAPIException</ref>);
44547
44548        void setScreenStateChangeListener(<ref>ScreenStateChangeCallback</ref> listener) raises(<ref>WebAPIException</ref>);
44549
44550        void unsetScreenStateChangeListener() raises(<ref>WebAPIException</ref>);
44551
44552        double getScreenBrightness() raises(<ref>WebAPIException</ref>);
44553
44554        void setScreenBrightness(double brightness) raises(<ref>WebAPIException</ref>);
44555
44556        boolean isScreenOn() raises(<ref>WebAPIException</ref>);
44557
44558        void restoreScreenBrightness() raises(<ref>WebAPIException</ref>);
44559
44560        void turnScreenOn() raises(<ref>WebAPIException</ref>);
44561
44562        void turnScreenOff() raises(<ref>WebAPIException</ref>);
44563    };</webidl>
44564       <descriptive>
44565           <brief>
44566  This interface is used to request resource states, however, these requests can be overridden by the system. If the requests are overridden, the application is notified with the provided listener callback.
44567           </brief>
44568           <version>
44569  2.0
44570           </version>
44571       </descriptive>
44572       <ExtendedAttributeList>
44573         <ExtendedAttribute name="NoInterfaceObject">
44574           <webidl>NoInterfaceObject</webidl>
44575         </ExtendedAttribute>
44576       </ExtendedAttributeList>
44577       <Operation name="request" id="::Power::PowerManager::request">
44578         <webidl>       void request(<ref>PowerResource</ref> resource, <ref>PowerState</ref> state) raises(<ref>WebAPIException</ref>);</webidl>
44579         <descriptive>
44580             <brief>
44581  Requests the minimum-state for a power resource.
44582             </brief>
44583             <version>
44584  2.0
44585             </version>
44586             <privilegelevel>
44587  public
44588             </privilegelevel>
44589             <privilege>
44590  http://tizen.org/privilege/power
44591             </privilege>
44592             <Code> tizen.power.request(&quot;SCREEN&quot;, &quot;SCREEN_NORMAL&quot;);
44593  </Code>
44594         </descriptive>
44595         <Type type="void"/>
44596         <ArgumentList>
44597           <Argument name="resource">
44598             <descriptive>
44599                 <description><p>
44600  The power resource for which the request is made.
44601                 </p></description>
44602             </descriptive>
44603             <Type name="PowerResource"/>
44604           </Argument>
44605           <Argument name="state">
44606             <descriptive>
44607                 <description><p>
44608  The minimal power state in which the power resource is desired to be.
44609                 </p></description>
44610             </descriptive>
44611             <Type name="PowerState"/>
44612           </Argument>
44613         </ArgumentList>
44614         <Raises>
44615           <RaiseException name="WebAPIException">
44616             <descriptive>
44617                 <description><p>
44618  with error type TypeMismatchError, if the input parameter is not
44619 compatible with the expected type.
44620                 </p></description>
44621                 <description><p>
44622  with error type NotSupportedError, if this feature is not supported.
44623                 </p></description>
44624                 <description><p>
44625  with error type InvalidValuesError, if any of the input
44626 parameters contain an invalid value.
44627                 </p></description>
44628                 <description><p>
44629  with error type SecurityError, if the application does not have the privilege to call this method.
44630                 </p></description>
44631                 <description><p>
44632  with error type UnknownError in any other error case.
44633                 </p></description>
44634             </descriptive>
44635           </RaiseException>
44636         </Raises>
44637       </Operation>
44638       <Operation name="release" id="::Power::PowerManager::release">
44639         <webidl>       void release(<ref>PowerResource</ref> resource) raises(<ref>WebAPIException</ref>);</webidl>
44640         <descriptive>
44641             <brief>
44642  Releases the power state request for the given resource.
44643             </brief>
44644             <version>
44645  2.0
44646             </version>
44647             <Code> // Release SCREEN resource.
44648  tizen.power.release(&quot;SCREEN&quot;);
44649  </Code>
44650         </descriptive>
44651         <Type type="void"/>
44652         <ArgumentList>
44653           <Argument name="resource">
44654             <descriptive>
44655                 <description><p>
44656  The resource for which requests are to be removed.
44657                 </p></description>
44658             </descriptive>
44659             <Type name="PowerResource"/>
44660           </Argument>
44661         </ArgumentList>
44662         <Raises>
44663           <RaiseException name="WebAPIException">
44664             <descriptive>
44665                 <description><p>
44666  with error type TypeMismatchError, if the input parameter is not
44667 compatible with the expected type.
44668                 </p></description>
44669                 <description><p>
44670  with error type NotSupportedError, if this feature is not supported.
44671                 </p></description>
44672                 <description><p>
44673  with error type InvalidValuesError, if any of the input
44674 parameters contain an invalid value.
44675                 </p></description>
44676                 <description><p>
44677  with error type UnknownError in any other error case.
44678                 </p></description>
44679             </descriptive>
44680           </RaiseException>
44681         </Raises>
44682       </Operation>
44683       <Operation name="setScreenStateChangeListener" id="::Power::PowerManager::setScreenStateChangeListener">
44684         <webidl>       void setScreenStateChangeListener(<ref>ScreenStateChangeCallback</ref> listener) raises(<ref>WebAPIException</ref>);</webidl>
44685         <descriptive>
44686             <brief>
44687  Sets the screen state change callback and monitors its state changes.
44688             </brief>
44689             <version>
44690  2.0
44691             </version>
44692             <Code> function onScreenStateChanged(previousState, changedState) {
44693    console.log(&quot;Screen state changed from &quot; + previousState + &quot; to &quot; + changedState);
44694  }
44695
44696  // Set the screen state change listener.
44697  tizen.power.setScreenStateChangeListener(onScreenStateChanged);
44698  </Code>
44699         </descriptive>
44700         <Type type="void"/>
44701         <ArgumentList>
44702           <Argument name="listener">
44703             <descriptive>
44704                 <description><p>
44705  The screen state change callback.
44706                 </p></description>
44707             </descriptive>
44708             <Type name="ScreenStateChangeCallback"/>
44709           </Argument>
44710         </ArgumentList>
44711         <Raises>
44712           <RaiseException name="WebAPIException">
44713             <descriptive>
44714                 <description><p>
44715  with error type TypeMismatchError, if the input parameter is not
44716 compatible with the expected type.
44717                 </p></description>
44718                 <description><p>
44719  with error type NotSupportedError, if this feature is not supported.
44720                 </p></description>
44721                 <description><p>
44722  with error type InvalidValuesError, if any of the input
44723 parameters contain an invalid value.
44724                 </p></description>
44725                 <description><p>
44726  with error type UnknownError in any other error case.
44727                 </p></description>
44728             </descriptive>
44729           </RaiseException>
44730         </Raises>
44731       </Operation>
44732       <Operation name="unsetScreenStateChangeListener" id="::Power::PowerManager::unsetScreenStateChangeListener">
44733         <webidl>       void unsetScreenStateChangeListener() raises(<ref>WebAPIException</ref>);</webidl>
44734         <descriptive>
44735             <brief>
44736  Unsets the screen state change callback and stop monitoring it.
44737             </brief>
44738             <version>
44739  2.0
44740             </version>
44741             <Code> // Unset the screen state change listener.
44742  tizen.power.unsetScreenStateChangeListener();
44743  </Code>
44744         </descriptive>
44745         <Type type="void"/>
44746         <ArgumentList/>
44747         <Raises>
44748           <RaiseException name="WebAPIException">
44749             <descriptive>
44750                 <description><p>
44751  with error type NotSupportedError, if this feature is not supported.
44752                 </p></description>
44753                 <description><p>
44754  with error type UnknownError in any other error case.
44755                 </p></description>
44756             </descriptive>
44757           </RaiseException>
44758         </Raises>
44759       </Operation>
44760       <Operation name="getScreenBrightness" id="::Power::PowerManager::getScreenBrightness">
44761         <webidl>       double getScreenBrightness() raises(<ref>WebAPIException</ref>);</webidl>
44762         <descriptive>
44763             <brief>
44764  Gets the screen brightness level of an application, from 0 to 1.
44765             </brief>
44766             <version>
44767  2.0
44768             </version>
44769             <Code> // Get the current screen brightness value.
44770  var screenBrightness = tizen.power.getScreenBrightness();
44771  </Code>
44772         </descriptive>
44773         <Type type="double">
44774           <descriptive>
44775               <description><p>
44776  double Current screen brightness value.
44777               </p></description>
44778           </descriptive>
44779         </Type>
44780         <ArgumentList/>
44781         <Raises>
44782           <RaiseException name="WebAPIException">
44783             <descriptive>
44784                 <description><p>
44785  with error type NotSupportedError, if this feature is not supported.
44786                 </p></description>
44787                 <description><p>
44788  with error type UnknownError in any other error case.
44789                 </p></description>
44790             </descriptive>
44791           </RaiseException>
44792         </Raises>
44793       </Operation>
44794       <Operation name="setScreenBrightness" id="::Power::PowerManager::setScreenBrightness">
44795         <webidl>       void setScreenBrightness(double brightness) raises(<ref>WebAPIException</ref>);</webidl>
44796         <descriptive>
44797             <brief>
44798  Sets the screen brightness level for an application, from 0 to 1.
44799             </brief>
44800            <description>
44801             <p>
44802 An approximation is made for best effort when the given value is not exactly applicable by the hardware or system.
44803             </p>
44804            </description>
44805             <version>
44806  2.0
44807             </version>
44808             <privilegelevel>
44809  public
44810             </privilegelevel>
44811             <privilege>
44812  http://tizen.org/privilege/power
44813             </privilege>
44814             <Code> // Set the screen brightness value for the application.
44815  tizen.power.setScreenBrightness(1);
44816  </Code>
44817         </descriptive>
44818         <Type type="void"/>
44819         <ArgumentList>
44820           <Argument name="brightness">
44821             <descriptive>
44822                 <description><p>
44823  The screen brightness value to set.
44824                 </p></description>
44825             </descriptive>
44826             <Type type="double"/>
44827           </Argument>
44828         </ArgumentList>
44829         <Raises>
44830           <RaiseException name="WebAPIException">
44831             <descriptive>
44832                 <description><p>
44833  with error type TypeMismatchError, if the input parameter is not
44834 compatible with the expected type.
44835                 </p></description>
44836                 <description><p>
44837  with error type NotSupportedError, if this feature is not supported.
44838                 </p></description>
44839                 <description><p>
44840  with error type InvalidValuesError, if any of the input
44841 parameters contain an invalid value.
44842                 </p></description>
44843                 <description><p>
44844  with error type SecurityError, if the application does not have the privilege to call this method.
44845                 </p></description>
44846                 <description><p>
44847  with error type UnknownError in any other error case.
44848                 </p></description>
44849             </descriptive>
44850           </RaiseException>
44851         </Raises>
44852       </Operation>
44853       <Operation name="isScreenOn" id="::Power::PowerManager::isScreenOn">
44854         <webidl>       boolean isScreenOn() raises(<ref>WebAPIException</ref>);</webidl>
44855         <descriptive>
44856             <brief>
44857  Returns <var>true</var> if the screen is on.
44858             </brief>
44859             <version>
44860  2.0
44861             </version>
44862             <Code> // Check whether the screen is on or off.
44863  var isScreenOn = tizen.power.isScreenOn();
44864  </Code>
44865         </descriptive>
44866         <Type type="boolean">
44867           <descriptive>
44868               <description><p>
44869  boolean true if screen is on.
44870               </p></description>
44871           </descriptive>
44872         </Type>
44873         <ArgumentList/>
44874         <Raises>
44875           <RaiseException name="WebAPIException">
44876             <descriptive>
44877                 <description><p>
44878  with error type NotSupportedError, if this feature is not supported.
44879                 </p></description>
44880                 <description><p>
44881  with error type UnknownError in any other error case.
44882                 </p></description>
44883             </descriptive>
44884           </RaiseException>
44885         </Raises>
44886       </Operation>
44887       <Operation name="restoreScreenBrightness" id="::Power::PowerManager::restoreScreenBrightness">
44888         <webidl>       void restoreScreenBrightness() raises(<ref>WebAPIException</ref>);</webidl>
44889         <descriptive>
44890             <brief>
44891  Restores the screen brightness to the system default setting value.
44892             </brief>
44893             <version>
44894  2.0
44895             </version>
44896             <Code> // Restore the screen brightness value to the system default setting value.
44897  tizen.power.restoreScreenBrightness();
44898  </Code>
44899         </descriptive>
44900         <Type type="void"/>
44901         <ArgumentList/>
44902         <Raises>
44903           <RaiseException name="WebAPIException">
44904             <descriptive>
44905                 <description><p>
44906  with error type NotSupportedError, if this feature is not supported.
44907                 </p></description>
44908                 <description><p>
44909  with error type UnknownError in any other error case.
44910                 </p></description>
44911             </descriptive>
44912           </RaiseException>
44913         </Raises>
44914       </Operation>
44915       <Operation name="turnScreenOn" id="::Power::PowerManager::turnScreenOn">
44916         <webidl>       void turnScreenOn() raises(<ref>WebAPIException</ref>);</webidl>
44917         <descriptive>
44918             <brief>
44919  Turns on the screen.
44920             </brief>
44921            <description>
44922             <p>
44923 This API triggers turn-on process and then updates the status when it completes. While the operation is on-going, the isScreenOn() method returns false.
44924             </p>
44925            </description>
44926             <version>
44927  2.0
44928             </version>
44929             <privilegelevel>
44930  public
44931             </privilegelevel>
44932             <privilege>
44933  http://tizen.org/privilege/power
44934             </privilege>
44935             <Code> // Turn on the screen.
44936  tizen.power.turnScreenOn();
44937  </Code>
44938         </descriptive>
44939         <Type type="void"/>
44940         <ArgumentList/>
44941         <Raises>
44942           <RaiseException name="WebAPIException">
44943             <descriptive>
44944                 <description><p>
44945  with error type NotSupportedError, if this feature is not supported.
44946                 </p></description>
44947                 <description><p>
44948  with error type SecurityError, if the application does not have the privilege to call this method.
44949                 </p></description>
44950                 <description><p>
44951  with error type UnknownError in any other error case.
44952                 </p></description>
44953             </descriptive>
44954           </RaiseException>
44955         </Raises>
44956       </Operation>
44957       <Operation name="turnScreenOff" id="::Power::PowerManager::turnScreenOff">
44958         <webidl>       void turnScreenOff() raises(<ref>WebAPIException</ref>);</webidl>
44959         <descriptive>
44960             <brief>
44961  Turns off the screen.
44962             </brief>
44963            <description>
44964             <p>
44965 This API triggers turn-off process and then updates the status when it completes. While the operation is on-going, the isScreenOn() method returns true
44966             </p>
44967            </description>
44968             <version>
44969  2.0
44970             </version>
44971             <privilegelevel>
44972  public
44973             </privilegelevel>
44974             <privilege>
44975  http://tizen.org/privilege/power
44976             </privilege>
44977             <Code> // Turn off the screen.
44978  tizen.power.turnScreenOff();
44979  </Code>
44980         </descriptive>
44981         <Type type="void"/>
44982         <ArgumentList/>
44983         <Raises>
44984           <RaiseException name="WebAPIException">
44985             <descriptive>
44986                 <description><p>
44987  with error type NotSupportedError, if this feature is not supported.
44988                 </p></description>
44989                 <description><p>
44990  with error type SecurityError, if the application does not have the privilege to call this method.
44991                 </p></description>
44992                 <description><p>
44993  with error type UnknownError in any other error case.
44994                 </p></description>
44995             </descriptive>
44996           </RaiseException>
44997         </Raises>
44998       </Operation>
44999     </Interface>
45000     <Interface name="ScreenStateChangeCallback" id="::Power::ScreenStateChangeCallback">
45001       <webidl>   [Callback=FunctionOnly, NoInterfaceObject] interface ScreenStateChangeCallback {
45002        void onchanged(<ref>PowerScreenState</ref> previousState, <ref>PowerScreenState</ref> changedState);
45003    };</webidl>
45004       <descriptive>
45005           <brief>
45006  This callback interface defines notification for the screen state changes.
45007           </brief>
45008           <version>
45009  2.0
45010           </version>
45011       </descriptive>
45012       <ExtendedAttributeList>
45013         <ExtendedAttribute name="Callback" value="FunctionOnly">
45014           <webidl>Callback</webidl>
45015         </ExtendedAttribute>
45016         <ExtendedAttribute name="NoInterfaceObject">
45017           <webidl> NoInterfaceObject</webidl>
45018         </ExtendedAttribute>
45019       </ExtendedAttributeList>
45020       <Operation name="onchanged" id="::Power::ScreenStateChangeCallback::onchanged">
45021         <webidl>       void onchanged(<ref>PowerScreenState</ref> previousState, <ref>PowerScreenState</ref> changedState);</webidl>
45022         <descriptive>
45023             <brief>
45024  Called on screen state change.
45025             </brief>
45026             <version>
45027  2.0
45028             </version>
45029         </descriptive>
45030         <Type type="void"/>
45031         <ArgumentList>
45032           <Argument name="previousState">
45033             <descriptive>
45034                 <description><p>
45035  The previous screen state.
45036                 </p></description>
45037             </descriptive>
45038             <Type name="PowerScreenState"/>
45039           </Argument>
45040           <Argument name="changedState">
45041             <descriptive>
45042                 <description><p>
45043  The changed screen state.
45044                 </p></description>
45045             </descriptive>
45046             <Type name="PowerScreenState"/>
45047           </Argument>
45048         </ArgumentList>
45049       </Operation>
45050     </Interface>
45051   </Module>
45052   <Module name="Push" id="::Push">
45053     <webidl>module Push {&#13;
45054 &#13;
45055     typedef DOMString PushRegistrationId;&#13;
45056 &#13;
45057 &#13;
45058     [NoInterfaceObject] interface PushManagerObject {&#13;
45059         readonly attribute <ref>PushManager</ref> push;&#13;
45060     };&#13;
45061     <ref>Tizen</ref> implements <ref>PushManagerObject</ref>;&#13;
45062 &#13;
45063 &#13;
45064     [NoInterfaceObject] interface PushManager {&#13;
45065 &#13;
45066       void registerService(<ref>ApplicationControl</ref> appControl, <ref>PushRegisterSuccessCallback</ref> successCallback,&#13;
45067                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
45068 &#13;
45069 &#13;
45070       void unregisterService(optional <ref>SuccessCallback</ref>? successCallback,&#13;
45071                     optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
45072 &#13;
45073 &#13;
45074       void connectService(<ref>PushNotificationCallback</ref> notificationCallback) raises(<ref>WebAPIException</ref>);&#13;
45075 &#13;
45076 &#13;
45077       void disconnectService() raises(<ref>WebAPIException</ref>);&#13;
45078 &#13;
45079 &#13;
45080       <ref>PushRegistrationId</ref> getRegistrationId() raises(<ref>WebAPIException</ref>);&#13;
45081     };&#13;
45082 &#13;
45083 &#13;
45084     [NoInterfaceObject] interface PushMessage {&#13;
45085 &#13;
45086         readonly attribute DOMString appData;&#13;
45087 &#13;
45088 &#13;
45089         readonly attribute DOMString alertMessage;&#13;
45090 &#13;
45091 &#13;
45092         readonly attribute Date date;&#13;
45093     };&#13;
45094 &#13;
45095 &#13;
45096     [Callback=FunctionOnly, NoInterfaceObject]&#13;
45097     interface PushRegisterSuccessCallback {&#13;
45098 &#13;
45099         void onsuccess(<ref>PushRegistrationId</ref> id);&#13;
45100     };&#13;
45101 &#13;
45102 &#13;
45103     [Callback=FunctionOnly, NoInterfaceObject]&#13;
45104     interface PushNotificationCallback {&#13;
45105 &#13;
45106         void onsuccess(<ref>PushMessage</ref> message);&#13;
45107     };&#13;
45108 };</webidl>
45109     <descriptive>
45110         <brief>
45111  This API provides the functionality for receiving push notifications
45112 from Tizen push server.
45113 The push service is a client daemon that maintains a permanent connection
45114 between your device and Tizen push server in order to process your registration
45115 and deregistration requests, deliver push notifications to applications on a device.
45116         </brief>
45117        <description>
45118         <p>
45119 If the application is connected, the push service passes the notification data over
45120 the connection. Otherwise, the push service posts UI notification with the data.
45121 It will be delivered when a user launches the application by selecting the posting.
45122         </p>
45123         <p>
45124 To receive push notifications, follow the steps below:
45125         </p>
45126         <ul>
45127           <li>
45128 Get administrative permission for an application on your device          </li>
45129           <li>
45130 Register the application          </li>
45131           <li>
45132 Connect to the push service          </li>
45133           <li>
45134 Get notification data          </li>
45135         </ul>
45136         <p>
45137 For more information on the Push features, see <a href="../../org.tizen.web.appprogramming/html/guide/communication_guide/push.htm">Push Guide</a>.
45138         </p>
45139        </description>
45140         <version>
45141  2.1
45142         </version>
45143         <def-api-feature identifier="http://tizen.org/feature/network.push">
45144           <descriptive>
45145            <description>
45146             <p>
45147 To guarantee this application running on a device with Push feature, define below in the config file:
45148             </p>
45149            </description>
45150           </descriptive>
45151         </def-api-feature>
45152     </descriptive>
45153     <Typedef name="PushRegistrationId" id="::Push::PushRegistrationId">
45154       <webidl>    typedef DOMString PushRegistrationId;</webidl>
45155       <descriptive>
45156           <brief>
45157  A push service registration identifier.
45158           </brief>
45159           <version>
45160  2.1
45161           </version>
45162       </descriptive>
45163       <Type type="DOMString"/>
45164     </Typedef>
45165     <Interface name="PushManagerObject" id="::Push::PushManagerObject">
45166       <webidl>    [NoInterfaceObject] interface PushManagerObject {&#13;
45167         readonly attribute <ref>PushManager</ref> push;&#13;
45168     };</webidl>
45169       <descriptive>
45170           <brief>
45171  This interface defines what is instantiated by the <em>Tizen </em>object from the Tizen Platform.
45172           </brief>
45173          <description>
45174           <p>
45175 There will be a <em>tizen.push </em>object that allows access to the functionality of the Push API.
45176           </p>
45177          </description>
45178           <version>
45179  2.1
45180           </version>
45181       </descriptive>
45182       <ExtendedAttributeList>
45183         <ExtendedAttribute name="NoInterfaceObject">
45184           <webidl>NoInterfaceObject</webidl>
45185         </ExtendedAttribute>
45186       </ExtendedAttributeList>
45187       <Attribute readonly="readonly" name="push" id="::Push::PushManagerObject::push">
45188         <webidl>        readonly attribute <ref>PushManager</ref> push;</webidl>
45189         <Type name="PushManager"/>
45190       </Attribute>
45191     </Interface>
45192     <Implements name1="Tizen" name2="PushManagerObject">
45193       <webidl>    <ref>Tizen</ref> implements <ref>PushManagerObject</ref>;</webidl>
45194     </Implements>
45195     <Interface name="PushManager" id="::Push::PushManager">
45196       <webidl>    [NoInterfaceObject] interface PushManager {&#13;
45197 &#13;
45198       void registerService(<ref>ApplicationControl</ref> appControl, <ref>PushRegisterSuccessCallback</ref> successCallback,&#13;
45199                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
45200 &#13;
45201 &#13;
45202       void unregisterService(optional <ref>SuccessCallback</ref>? successCallback,&#13;
45203                     optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
45204 &#13;
45205 &#13;
45206       void connectService(<ref>PushNotificationCallback</ref> notificationCallback) raises(<ref>WebAPIException</ref>);&#13;
45207 &#13;
45208 &#13;
45209       void disconnectService() raises(<ref>WebAPIException</ref>);&#13;
45210 &#13;
45211 &#13;
45212       <ref>PushRegistrationId</ref> getRegistrationId() raises(<ref>WebAPIException</ref>);&#13;
45213     };</webidl>
45214       <descriptive>
45215           <brief>
45216  This interface provides methods to manage push registration and notification.
45217           </brief>
45218           <version>
45219  2.1
45220           </version>
45221       </descriptive>
45222       <ExtendedAttributeList>
45223         <ExtendedAttribute name="NoInterfaceObject">
45224           <webidl>NoInterfaceObject</webidl>
45225         </ExtendedAttribute>
45226       </ExtendedAttributeList>
45227       <Operation name="registerService" id="::Push::PushManager::registerService">
45228         <webidl>      void registerService(<ref>ApplicationControl</ref> appControl, <ref>PushRegisterSuccessCallback</ref> successCallback,&#13;
45229                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
45230         <descriptive>
45231             <brief>
45232  Registers an application to the Tizen push server.
45233             </brief>
45234             <remark>
45235  In order to use the push messaging service, see <a href="../../org.tizen.native.appprogramming/html/guide/messaging/push_messaging.htm">Push Messaging Guide</a>.
45236             </remark>
45237            <description>
45238             <p>
45239 The <em>ErrorCallback()</em> is launched with these error types:
45240             </p>
45241             <ul>
45242               <li>
45243 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
45244               <li>
45245 UnknownError - If any other error occurs.              </li>
45246             </ul>
45247            </description>
45248             <version>
45249  2.1
45250             </version>
45251             <privilegelevel>
45252  public
45253             </privilegelevel>
45254             <privilege>
45255  http://tizen.org/privilege/push
45256             </privilege>
45257             <Code> // Defines the data to be used when this process is launched by notification service.
45258  var service = new tizen.ApplicationControl(&quot;http://tizen.org/appcontrol/operation/push_test&quot;);
45259
45260  // Defines the error callback.
45261  function errorCallback(response) {
45262    console.log( 'The following error occurred: ' +  response.name);
45263  }
45264
45265  // Defines the registration success callback
45266  function registerSuccessCallback(id) {
45267    console.log(&quot;Registration succeeded with id: &quot; + id);
45268  }
45269
45270  // Requests registration.
45271  tizen.push.registerService(service, registerSuccessCallback, errorCallback);
45272  </Code>
45273         </descriptive>
45274         <Type type="void"/>
45275         <ArgumentList>
45276           <Argument name="appControl">
45277             <descriptive>
45278                 <description><p>
45279  The data to deliver via notification service when the process is not running.<br/> For more information, see <a href="../../org.tizen.web.device.apireference/tizen/application.html">Application API</a>.
45280                 </p></description>
45281             </descriptive>
45282             <Type name="ApplicationControl"/>
45283           </Argument>
45284           <Argument name="successCallback">
45285             <descriptive>
45286                 <description><p>
45287  The method to be called when the registration request succeeds.
45288                 </p></description>
45289             </descriptive>
45290             <Type name="PushRegisterSuccessCallback"/>
45291           </Argument>
45292           <Argument optional="optional" name="errorCallback">
45293             <descriptive>
45294                 <description><p>
45295  The method to be called when the registration request fails.
45296                 </p></description>
45297             </descriptive>
45298             <Type name="ErrorCallback" nullable="nullable"/>
45299           </Argument>
45300         </ArgumentList>
45301         <Raises>
45302           <RaiseException name="WebAPIException">
45303             <descriptive>
45304                 <description><p>
45305  with error type TypeMismatchError, if any input parameter
45306 is not compatible with the expected type for that parameter.
45307                 </p></description>
45308                 <description><p>
45309  with error type InvalidValuesError, if any input parameters
45310 does not contain a valid value.
45311                 </p></description>
45312                 <description><p>
45313  with error type SecurityError, if the application does not have the privilege to call this method.
45314                 </p></description>
45315                 <description><p>
45316  with error type NotSupportedError, if this feature is not supported.
45317                 </p></description>
45318                 <description><p>
45319  with error type UnknownError, if any other error occurs.
45320                 </p></description>
45321             </descriptive>
45322           </RaiseException>
45323         </Raises>
45324       </Operation>
45325       <Operation name="unregisterService" id="::Push::PushManager::unregisterService">
45326         <webidl>      void unregisterService(optional <ref>SuccessCallback</ref>? successCallback,&#13;
45327                     optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
45328         <descriptive>
45329             <brief>
45330  Unregisters an application from the Tizen push server.
45331             </brief>
45332            <description>
45333             <p>
45334 The <em>ErrorCallback()</em> is launched with these error types:
45335             </p>
45336             <ul>
45337               <li>
45338 UnknownError - If an unknown error occurs.              </li>
45339             </ul>
45340            </description>
45341             <version>
45342  2.1
45343             </version>
45344             <privilegelevel>
45345  public
45346             </privilegelevel>
45347             <privilege>
45348  http://tizen.org/privilege/push
45349             </privilege>
45350             <Code> // Defines the error callback
45351  function errorCallback(response) {
45352    console.log( 'The following error occurred: ' +  response.name);
45353  }
45354
45355  // Defines the unregistration success callback
45356  function unregisterSuccessCallback() {
45357    console.log(&quot;Unregistration succeeded.&quot;);
45358  }
45359
45360  // Requests unregistration
45361  tizen.push.unregisterService(unregisterSuccessCallback, errorCallback);
45362  </Code>
45363         </descriptive>
45364         <Type type="void"/>
45365         <ArgumentList>
45366           <Argument optional="optional" name="successCallback">
45367             <descriptive>
45368                 <description><p>
45369  The method to be called when the request is successfully unregistered.
45370                 </p></description>
45371             </descriptive>
45372             <Type name="SuccessCallback" nullable="nullable"/>
45373           </Argument>
45374           <Argument optional="optional" name="errorCallback">
45375             <descriptive>
45376                 <description><p>
45377  The method to be called when the unregistration request fails.
45378                 </p></description>
45379             </descriptive>
45380             <Type name="ErrorCallback" nullable="nullable"/>
45381           </Argument>
45382         </ArgumentList>
45383         <Raises>
45384           <RaiseException name="WebAPIException">
45385             <descriptive>
45386                 <description><p>
45387  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
45388                 </p></description>
45389                 <description><p>
45390  with error type InvalidValuesError, if any input parameters does not contain a valid value.
45391                 </p></description>
45392                 <description><p>
45393  with error type SecurityError, if the application does not have the privilege to call this method.
45394                 </p></description>
45395                 <description><p>
45396  with error type NotSupportedError, if this feature is not supported.
45397                 </p></description>
45398                 <description><p>
45399  with error type UnknownError, if any other error occurs.
45400                 </p></description>
45401             </descriptive>
45402           </RaiseException>
45403         </Raises>
45404       </Operation>
45405       <Operation name="connectService" id="::Push::PushManager::connectService">
45406         <webidl>      void connectService(<ref>PushNotificationCallback</ref> notificationCallback) raises(<ref>WebAPIException</ref>);</webidl>
45407         <descriptive>
45408             <brief>
45409  Connects to the push service and receives push notifications.
45410             </brief>
45411             <version>
45412  2.1
45413             </version>
45414             <privilegelevel>
45415  public
45416             </privilegelevel>
45417             <privilege>
45418  http://tizen.org/privilege/push
45419             </privilege>
45420             <Code> // Defines the connect success callback
45421  function notificationCallback(noti) {
45422    console.log(&quot;Notification received with alert message: &quot; + noti.alertMessage);
45423  }
45424
45425  // Requests for push service connection
45426  tizen.push.connectService(notificationCallback, errorCallback);
45427  </Code>
45428         </descriptive>
45429         <Type type="void"/>
45430         <ArgumentList>
45431           <Argument name="notificationCallback">
45432             <descriptive>
45433                 <description><p>
45434  The method to be called when the notification message arrives.
45435                 </p></description>
45436             </descriptive>
45437             <Type name="PushNotificationCallback"/>
45438           </Argument>
45439         </ArgumentList>
45440         <Raises>
45441           <RaiseException name="WebAPIException">
45442             <descriptive>
45443                 <description><p>
45444  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
45445                 </p></description>
45446                 <description><p>
45447  with error type InvalidValuesError, if any input parameters does not contain a valid value.
45448                 </p></description>
45449                 <description><p>
45450  with error type SecurityError, if the application does not have the privilege to call this method.
45451                 </p></description>
45452                 <description><p>
45453  with error type NotSupportedError, if this feature is not supported.
45454                 </p></description>
45455                 <description><p>
45456  with error type UnknownError, if any other error occurs.
45457                 </p></description>
45458             </descriptive>
45459           </RaiseException>
45460         </Raises>
45461       </Operation>
45462       <Operation name="disconnectService" id="::Push::PushManager::disconnectService">
45463         <webidl>      void disconnectService() raises(<ref>WebAPIException</ref>);</webidl>
45464         <descriptive>
45465             <brief>
45466  Disconnects to the push service and stop receiving push notifications.
45467             </brief>
45468             <version>
45469  2.1
45470             </version>
45471             <privilegelevel>
45472  public
45473             </privilegelevel>
45474             <privilege>
45475  http://tizen.org/privilege/push
45476             </privilege>
45477             <Code> // Requests disconnection
45478  tizen.push.disconnectService();
45479  </Code>
45480         </descriptive>
45481         <Type type="void"/>
45482         <ArgumentList/>
45483         <Raises>
45484           <RaiseException name="WebAPIException">
45485             <descriptive>
45486                 <description><p>
45487  with error type SecurityError, if the application does not have the privilege to call this method.
45488                 </p></description>
45489                 <description><p>
45490  with error type NotSupportedError, if this feature is not supported.
45491                 </p></description>
45492                 <description><p>
45493  with error type UnknownError, if any other error occurs.
45494                 </p></description>
45495             </descriptive>
45496           </RaiseException>
45497         </Raises>
45498       </Operation>
45499       <Operation name="getRegistrationId" id="::Push::PushManager::getRegistrationId">
45500         <webidl>      <ref>PushRegistrationId</ref> getRegistrationId() raises(<ref>WebAPIException</ref>);</webidl>
45501         <descriptive>
45502             <brief>
45503  Gets the push service registration ID for this application if the registration process was successful. <var>null </var>is returned if the application has not been registered yet.
45504             </brief>
45505             <version>
45506  2.1
45507             </version>
45508             <privilegelevel>
45509  public
45510             </privilegelevel>
45511             <privilege>
45512  http://tizen.org/privilege/push
45513             </privilege>
45514             <Code> var registrationId = tizen.push.getRegistrationId();
45515  if ( registrationId != NULL ) {
45516    console.log(&quot;The registration id: &quot; + registrationId);
45517  }
45518  </Code>
45519         </descriptive>
45520         <Type name="PushRegistrationId"/>
45521         <ArgumentList/>
45522         <Raises>
45523           <RaiseException name="WebAPIException">
45524             <descriptive>
45525                 <description><p>
45526  with error type SecurityError, if the application does not have the privilege to call this method.
45527                 </p></description>
45528                 <description><p>
45529  with error type NotSupportedError, if this feature is not supported.
45530                 </p></description>
45531                 <description><p>
45532  with error type UnknownError, if any other error occurs.
45533                 </p></description>
45534             </descriptive>
45535           </RaiseException>
45536         </Raises>
45537       </Operation>
45538     </Interface>
45539     <Interface name="PushMessage" id="::Push::PushMessage">
45540       <webidl>    [NoInterfaceObject] interface PushMessage {&#13;
45541 &#13;
45542         readonly attribute DOMString appData;&#13;
45543 &#13;
45544 &#13;
45545         readonly attribute DOMString alertMessage;&#13;
45546 &#13;
45547 &#13;
45548         readonly attribute Date date;&#13;
45549     };</webidl>
45550       <descriptive>
45551           <brief>
45552  This interface specifies the push message that is delivered from the push service.
45553           </brief>
45554           <version>
45555  2.1
45556           </version>
45557       </descriptive>
45558       <ExtendedAttributeList>
45559         <ExtendedAttribute name="NoInterfaceObject">
45560           <webidl>NoInterfaceObject</webidl>
45561         </ExtendedAttribute>
45562       </ExtendedAttributeList>
45563       <Attribute readonly="readonly" name="appData" id="::Push::PushMessage::appData">
45564         <webidl>        readonly attribute DOMString appData;</webidl>
45565         <descriptive>
45566             <brief>
45567  An attribute to store the push notification data.
45568             </brief>
45569            <description>
45570             <p>
45571 This data is the message that the sender wants to send and its length must be less than 1 KB.
45572             </p>
45573            </description>
45574             <version>
45575  2.1
45576             </version>
45577         </descriptive>
45578         <Type type="DOMString"/>
45579       </Attribute>
45580       <Attribute readonly="readonly" name="alertMessage" id="::Push::PushMessage::alertMessage">
45581         <webidl>        readonly attribute DOMString alertMessage;</webidl>
45582         <descriptive>
45583             <brief>
45584  An attribute to store the push notification message that is displayed as an alert message to the user.
45585             </brief>
45586             <version>
45587  2.1
45588             </version>
45589         </descriptive>
45590         <Type type="DOMString"/>
45591       </Attribute>
45592       <Attribute readonly="readonly" name="date" id="::Push::PushMessage::date">
45593         <webidl>        readonly attribute Date date;</webidl>
45594         <descriptive>
45595             <brief>
45596  An attribute to store the date/time when a push notification message is received.
45597             </brief>
45598             <version>
45599  2.1
45600             </version>
45601         </descriptive>
45602         <Type type="Date"/>
45603       </Attribute>
45604     </Interface>
45605     <Interface name="PushRegisterSuccessCallback" id="::Push::PushRegisterSuccessCallback">
45606       <webidl>    [Callback=FunctionOnly, NoInterfaceObject]&#13;
45607     interface PushRegisterSuccessCallback {&#13;
45608 &#13;
45609         void onsuccess(<ref>PushRegistrationId</ref> id);&#13;
45610     };</webidl>
45611       <descriptive>
45612           <brief>
45613  This interface specifies the success callback for push service registration request.
45614           </brief>
45615          <description>
45616           <p>
45617 This success callback is invoked when a push service registration request is successful.
45618           </p>
45619          </description>
45620           <version>
45621  2.1
45622           </version>
45623       </descriptive>
45624       <ExtendedAttributeList>
45625         <ExtendedAttribute name="Callback" value="FunctionOnly">
45626           <webidl>Callback</webidl>
45627         </ExtendedAttribute>
45628         <ExtendedAttribute name="NoInterfaceObject">
45629           <webidl> NoInterfaceObject</webidl>
45630         </ExtendedAttribute>
45631       </ExtendedAttributeList>
45632       <Operation name="onsuccess" id="::Push::PushRegisterSuccessCallback::onsuccess">
45633         <webidl>        void onsuccess(<ref>PushRegistrationId</ref> id);</webidl>
45634         <descriptive>
45635             <brief>
45636  Called when a push service registration request is successful.
45637             </brief>
45638             <version>
45639  2.1
45640             </version>
45641         </descriptive>
45642         <Type type="void"/>
45643         <ArgumentList>
45644           <Argument name="id">
45645             <descriptive>
45646                 <description><p>
45647  The registration ID.
45648                 </p></description>
45649             </descriptive>
45650             <Type name="PushRegistrationId"/>
45651           </Argument>
45652         </ArgumentList>
45653       </Operation>
45654     </Interface>
45655     <Interface name="PushNotificationCallback" id="::Push::PushNotificationCallback">
45656       <webidl>    [Callback=FunctionOnly, NoInterfaceObject]&#13;
45657     interface PushNotificationCallback {&#13;
45658 &#13;
45659         void onsuccess(<ref>PushMessage</ref> message);&#13;
45660     };</webidl>
45661       <descriptive>
45662           <brief>
45663  This interface specifies the notification callback for the received push notification message.
45664           </brief>
45665          <description>
45666           <p>
45667 This notification callback is invoked when the push notification message arrives.
45668           </p>
45669          </description>
45670           <version>
45671  2.1
45672           </version>
45673       </descriptive>
45674       <ExtendedAttributeList>
45675         <ExtendedAttribute name="Callback" value="FunctionOnly">
45676           <webidl>Callback</webidl>
45677         </ExtendedAttribute>
45678         <ExtendedAttribute name="NoInterfaceObject">
45679           <webidl> NoInterfaceObject</webidl>
45680         </ExtendedAttribute>
45681       </ExtendedAttributeList>
45682       <Operation name="onsuccess" id="::Push::PushNotificationCallback::onsuccess">
45683         <webidl>        void onsuccess(<ref>PushMessage</ref> message);</webidl>
45684         <descriptive>
45685             <brief>
45686  Called when the push notification message arrives.
45687             </brief>
45688             <version>
45689  2.1
45690             </version>
45691         </descriptive>
45692         <Type type="void"/>
45693         <ArgumentList>
45694           <Argument name="message">
45695             <descriptive>
45696                 <description><p>
45697  The received push notification message.
45698                 </p></description>
45699             </descriptive>
45700             <Type name="PushMessage"/>
45701           </Argument>
45702         </ArgumentList>
45703       </Operation>
45704     </Interface>
45705   </Module>
45706   <Module name="SecureElement" id="::SecureElement">
45707     <webidl>module SecureElement {&#13;
45708 &#13;
45709   [NoInterfaceObject] interface SEServiceManagerObject {&#13;
45710     readonly attribute <ref>SEService</ref> seService;&#13;
45711   };&#13;
45712   <ref>Tizen</ref> implements <ref>SEServiceManagerObject</ref>;&#13;
45713  &#13;
45714 &#13;
45715   [NoInterfaceObject] interface SEService&#13;
45716   {&#13;
45717 &#13;
45718     void getReaders(<ref>ReaderArraySuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
45719 &#13;
45720     unsigned long registerSEListener(<ref>SEChangeListener</ref> listener) raises(<ref>WebAPIException</ref>);&#13;
45721 &#13;
45722     void unregisterSEListener(unsigned long id) raises(<ref>WebAPIException</ref>);&#13;
45723 &#13;
45724 &#13;
45725     void shutdown() raises(<ref>WebAPIException</ref>);&#13;
45726   };&#13;
45727 &#13;
45728 &#13;
45729   [NoInterfaceObject] interface Reader&#13;
45730   {&#13;
45731 &#13;
45732     readonly attribute boolean isPresent;&#13;
45733 &#13;
45734     DOMString getName() raises(<ref>WebAPIException</ref>);&#13;
45735 &#13;
45736     void openSession(<ref>SessionSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
45737 &#13;
45738     void closeSessions() raises(<ref>WebAPIException</ref>);&#13;
45739   };&#13;
45740 &#13;
45741   [NoInterfaceObject] interface Session&#13;
45742   {&#13;
45743 &#13;
45744     readonly attribute boolean isClosed;&#13;
45745 &#13;
45746     void openBasicChannel(byte[] aid, <ref>ChannelSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
45747 &#13;
45748     void openLogicalChannel(byte[] aid, <ref>ChannelSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
45749 &#13;
45750     byte[] getATR() raises(<ref>WebAPIException</ref>);&#13;
45751 &#13;
45752     void close() raises(<ref>WebAPIException</ref>);&#13;
45753 &#13;
45754     void closeChannels() raises(<ref>WebAPIException</ref>);&#13;
45755   };&#13;
45756 &#13;
45757 &#13;
45758   [NoInterfaceObject] interface Channel {&#13;
45759 &#13;
45760     readonly attribute boolean isBasicChannel;&#13;
45761 &#13;
45762     void close() raises(<ref>WebAPIException</ref>);&#13;
45763     &#13;
45764 &#13;
45765     void transmit(byte[] command, <ref>TransmitSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
45766   };&#13;
45767 &#13;
45768 &#13;
45769   [Callback, NoInterfaceObject] interface SEChangeListener {&#13;
45770 &#13;
45771     void onSEReady(<ref>Reader</ref> reader);&#13;
45772 &#13;
45773     void onSENotReady(<ref>Reader</ref> reader);&#13;
45774   };&#13;
45775 &#13;
45776 &#13;
45777   [Callback=FunctionOnly, NoInterfaceObject] interface ReaderArraySuccessCallback {&#13;
45778 &#13;
45779     void onsuccess(<ref>Reader</ref>[] readers);&#13;
45780   };&#13;
45781 &#13;
45782 &#13;
45783   [Callback=FunctionOnly, NoInterfaceObject] interface SessionSuccessCallback {&#13;
45784 &#13;
45785     void onsuccess(<ref>Session</ref> session);&#13;
45786   };&#13;
45787 &#13;
45788 &#13;
45789   [Callback=FunctionOnly, NoInterfaceObject] interface ChannelSuccessCallback {&#13;
45790 &#13;
45791     void onsuccess(<ref>Channel</ref> channel);&#13;
45792   };&#13;
45793 &#13;
45794 &#13;
45795   [Callback=FunctionOnly, NoInterfaceObject] interface TransmitSuccessCallback {&#13;
45796 &#13;
45797     void onsuccess(byte[] response);&#13;
45798   };&#13;
45799 };</webidl>
45800     <descriptive>
45801         <brief>
45802  Secure Element is a secure smart card chip. It can be UICC/SIM, embedded Secure Element, or Secure SD card that is inserted in a device.
45803         </brief>
45804        <description>
45805         <p>
45806 This API provides functionality to communicate with applications in several Secure Elements.
45807         </p>
45808        </description>
45809         <version>
45810  2.1
45811         </version>
45812         <def-api-feature identifier="http://tizen.org/feature/network.secure_element">
45813           <descriptive>
45814            <description>
45815             <p>
45816 To guarantee this application running on a device with SecureElement feature, define below in the config file: 
45817             </p>
45818            </description>
45819           </descriptive>
45820         </def-api-feature>
45821     </descriptive>
45822     <Interface name="SEServiceManagerObject" id="::SecureElement::SEServiceManagerObject">
45823       <webidl>  [NoInterfaceObject] interface SEServiceManagerObject {&#13;
45824     readonly attribute <ref>SEService</ref> seService;&#13;
45825   };</webidl>
45826       <descriptive>
45827           <brief>
45828  Defines what is instantiated by the Tizen object from the Tizen Platform.
45829           </brief>
45830          <description>
45831           <p>
45832 There is a <em>tizen.seService</em> object that allows access to the functionalities of the Secure Element API.
45833           </p>
45834          </description>
45835           <version>
45836  2.1
45837           </version>
45838       </descriptive>
45839       <ExtendedAttributeList>
45840         <ExtendedAttribute name="NoInterfaceObject">
45841           <webidl>NoInterfaceObject</webidl>
45842         </ExtendedAttribute>
45843       </ExtendedAttributeList>
45844       <Attribute readonly="readonly" name="seService" id="::SecureElement::SEServiceManagerObject::seService">
45845         <webidl>    readonly attribute <ref>SEService</ref> seService;</webidl>
45846         <Type name="SEService"/>
45847       </Attribute>
45848     </Interface>
45849     <Implements name1="Tizen" name2="SEServiceManagerObject">
45850       <webidl>  <ref>Tizen</ref> implements <ref>SEServiceManagerObject</ref>;</webidl>
45851     </Implements>
45852     <Interface name="SEService" id="::SecureElement::SEService">
45853       <webidl>  [NoInterfaceObject] interface SEService&#13;
45854   {&#13;
45855 &#13;
45856     void getReaders(<ref>ReaderArraySuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
45857 &#13;
45858     unsigned long registerSEListener(<ref>SEChangeListener</ref> listener) raises(<ref>WebAPIException</ref>);&#13;
45859 &#13;
45860     void unregisterSEListener(unsigned long id) raises(<ref>WebAPIException</ref>);&#13;
45861 &#13;
45862 &#13;
45863     void shutdown() raises(<ref>WebAPIException</ref>);&#13;
45864   };</webidl>
45865       <descriptive>
45866           <brief>
45867  This interface provides access to the available Secure Element readers.
45868           </brief>
45869          <description>
45870           <p>
45871 It provides access to the API functionalities through the <em>tizen.seService</em> interface.
45872           </p>
45873          </description>
45874           <version>
45875  2.1
45876           </version>
45877       </descriptive>
45878       <ExtendedAttributeList>
45879         <ExtendedAttribute name="NoInterfaceObject">
45880           <webidl>NoInterfaceObject</webidl>
45881         </ExtendedAttribute>
45882       </ExtendedAttributeList>
45883       <Operation name="getReaders" id="::SecureElement::SEService::getReaders">
45884         <webidl>    void getReaders(<ref>ReaderArraySuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
45885         <descriptive>
45886             <brief>
45887  Gets all the available Secure Element readers.
45888             </brief>
45889            <description>
45890             <p>
45891 The ErrorCallback is launched with these error types:
45892             </p>
45893             <ul>
45894               <li>
45895  UnknownError - If any error occurs during retrieval.              </li>
45896             </ul>
45897            </description>
45898             <version>
45899  2.1
45900             </version>
45901             <privilege>
45902  http://tizen.org/privilege/secureelement
45903             </privilege>
45904             <privilegelevel>
45905  public
45906             </privilegelevel>
45907             <Code> try {
45908   function success(readers) {
45909    for (var i = 0; i &#60; readers.length; i++) {
45910     if (readers[i].isPresent) {
45911      console.log (&quot;Reader Name : &quot; + readers[i].getName());
45912     }
45913    }
45914   }
45915   function error(err) {
45916    console.log (err.name + &quot;: &quot; + err.message);
45917   }
45918   tizen.seService.getReaders(success, error);
45919  } catch (err) {
45920   console.log (err.name + &quot;: &quot; + err.message);
45921  }
45922  </Code>
45923         </descriptive>
45924         <Type type="void"/>
45925         <ArgumentList>
45926           <Argument name="successCallback">
45927             <descriptive>
45928                 <description><p>
45929  The method to be invoked when the list of available Secure Element readers has been successfully retrieved
45930                 </p></description>
45931             </descriptive>
45932             <Type name="ReaderArraySuccessCallback"/>
45933           </Argument>
45934           <Argument optional="optional" name="errorCallback">
45935             <descriptive>
45936                 <description><p>
45937  The method to call when an error occurs
45938                 </p></description>
45939             </descriptive>
45940             <Type name="ErrorCallback" nullable="nullable"/>
45941           </Argument>
45942         </ArgumentList>
45943         <Raises>
45944           <RaiseException name="WebAPIException">
45945             <descriptive>
45946                 <description><p>
45947  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
45948                 </p></description>
45949                 <description><p>
45950  with error type SecurityError, if the application does not have the privilege to call this method.
45951                 </p></description>
45952             </descriptive>
45953           </RaiseException>
45954         </Raises>
45955       </Operation>
45956       <Operation name="registerSEListener" id="::SecureElement::SEService::registerSEListener">
45957         <webidl>    unsigned long registerSEListener(<ref>SEChangeListener</ref> listener) raises(<ref>WebAPIException</ref>);</webidl>
45958         <descriptive>
45959             <brief>
45960  Registers a callback function that is invoked when an available Secure Element reader is detected.
45961             </brief>
45962             <version>
45963  2.1
45964             </version>
45965             <privilege>
45966  http://tizen.org/privilege/secureelement
45967             </privilege>
45968             <privilegelevel>
45969  public
45970             </privilegelevel>
45971             <Code> try {
45972   var seListener = tizen.seService.registerSEListener({
45973    onSEReady:function(reader) {
45974      console.log (reader.getName() + &quot;is ready.&quot;);
45975     }, onSENotReady:function(reader) {
45976      console.log (reader.getName() + &quot;is not ready.&quot;);
45977     }});
45978  } catch (err) {
45979   console.log (err.name + &quot;: &quot; + err.message);
45980  }
45981  </Code>
45982         </descriptive>
45983         <Type type="unsigned long">
45984           <descriptive>
45985               <description><p>
45986  unsigned long An identifier used to clear the watch subscription.
45987               </p></description>
45988           </descriptive>
45989         </Type>
45990         <ArgumentList>
45991           <Argument name="listener">
45992             <descriptive>
45993                 <description><p>
45994  A listener to be invoked for successful detection of available Secure Element readers.
45995                 </p></description>
45996             </descriptive>
45997             <Type name="SEChangeListener"/>
45998           </Argument>
45999         </ArgumentList>
46000         <Raises>
46001           <RaiseException name="WebAPIException">
46002             <descriptive>
46003                 <description><p>
46004  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
46005                 </p></description>
46006                 <description><p>
46007  with error type SecurityError, if the application does not have the privilege to call this method.
46008                 </p></description>
46009                 <description><p>
46010  with error type UnknownError, if any other error occurs.
46011                 </p></description>
46012             </descriptive>
46013           </RaiseException>
46014         </Raises>
46015       </Operation>
46016       <Operation name="unregisterSEListener" id="::SecureElement::SEService::unregisterSEListener">
46017         <webidl>    void unregisterSEListener(unsigned long id) raises(<ref>WebAPIException</ref>);</webidl>
46018         <descriptive>
46019             <brief>
46020  Unregisters the listener from notifying any detection of an available Secure Element reader.
46021             </brief>
46022             <version>
46023  2.1
46024             </version>
46025             <privilege>
46026  http://tizen.org/privilege/secureelement
46027             </privilege>
46028             <privilegelevel>
46029  public
46030             </privilegelevel>
46031             <Code> var seListener; //seListener obtained from registerSEListener
46032  try {
46033   tizen.seService.unregisterSEListener(seListener);
46034  } catch (err) {
46035   console.log (err.name + &quot;: &quot; + err.message);
46036  }
46037  </Code>
46038         </descriptive>
46039         <Type type="void"/>
46040         <ArgumentList>
46041           <Argument name="id">
46042             <descriptive>
46043                 <description><p>
46044  A subscription identifier that is returned by the <em>registerSEListener()</em> method.
46045                 </p></description>
46046             </descriptive>
46047             <Type type="unsigned long"/>
46048           </Argument>
46049         </ArgumentList>
46050         <Raises>
46051           <RaiseException name="WebAPIException">
46052             <descriptive>
46053                 <description><p>
46054  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
46055                 </p></description>
46056                 <description><p>
46057  with error type InvalidValuesError, if any of the input parameters contains an invalid value.
46058                 </p></description>
46059                 <description><p>
46060  with error type SecurityError, if the application does not have the privilege to call this method.
46061                 </p></description>
46062                 <description><p>
46063  with error type UnknownError, if any other error occurs.
46064                 </p></description>
46065             </descriptive>
46066           </RaiseException>
46067         </Raises>
46068       </Operation>
46069       <Operation name="shutdown" id="::SecureElement::SEService::shutdown">
46070         <webidl>    void shutdown() raises(<ref>WebAPIException</ref>);</webidl>
46071         <descriptive>
46072             <brief>
46073  Shuts down Secure Elements after releasing all resources.
46074             </brief>
46075             <version>
46076  2.1
46077             </version>
46078             <privilege>
46079  http://tizen.org/privilege/secureelement
46080             </privilege>
46081             <privilegelevel>
46082  public
46083             </privilegelevel>
46084             <Code> try {
46085   tizen.seService.shutdown();
46086  } catch (err) {
46087   console.log (err.name + &quot;: &quot; + err.message);
46088  }
46089  </Code>
46090         </descriptive>
46091         <Type type="void"/>
46092         <ArgumentList/>
46093         <Raises>
46094           <RaiseException name="WebAPIException">
46095             <descriptive>
46096                 <description><p>
46097  with error type SecurityError, if the application does not have the privilege to call this method.
46098                 </p></description>
46099                 <description><p>
46100  with error type UnknownError, if any other error occurs.
46101                 </p></description>
46102             </descriptive>
46103           </RaiseException>
46104         </Raises>
46105       </Operation>
46106     </Interface>
46107     <Interface name="Reader" id="::SecureElement::Reader">
46108       <webidl>  [NoInterfaceObject] interface Reader&#13;
46109   {&#13;
46110 &#13;
46111     readonly attribute boolean isPresent;&#13;
46112 &#13;
46113     DOMString getName() raises(<ref>WebAPIException</ref>);&#13;
46114 &#13;
46115     void openSession(<ref>SessionSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
46116 &#13;
46117     void closeSessions() raises(<ref>WebAPIException</ref>);&#13;
46118   };</webidl>
46119       <descriptive>
46120           <brief>
46121  Reader interface that is connected to this device.
46122           </brief>
46123          <description>
46124           <p>
46125 This interface offers methods to control sessions on the reader.
46126           </p>
46127          </description>
46128           <version>
46129  2.1
46130           </version>
46131       </descriptive>
46132       <ExtendedAttributeList>
46133         <ExtendedAttribute name="NoInterfaceObject">
46134           <webidl>NoInterfaceObject</webidl>
46135         </ExtendedAttribute>
46136       </ExtendedAttributeList>
46137       <Attribute readonly="readonly" name="isPresent" id="::SecureElement::Reader::isPresent">
46138         <webidl>    readonly attribute boolean isPresent;</webidl>
46139         <descriptive>
46140             <brief>
46141  An attribute to check whether a Secure Element is present on a reader.
46142             </brief>
46143             <version>
46144  2.1
46145             </version>
46146         </descriptive>
46147         <Type type="boolean"/>
46148       </Attribute>
46149       <Operation name="getName" id="::SecureElement::Reader::getName">
46150         <webidl>    DOMString getName() raises(<ref>WebAPIException</ref>);</webidl>
46151         <descriptive>
46152             <brief>
46153  Gets reader's name.
46154             </brief>
46155             <version>
46156  2.1
46157             </version>
46158             <privilege>
46159  http://tizen.org/privilege/secureelement
46160             </privilege>
46161             <privilegelevel>
46162  public
46163             </privilegelevel>
46164             <Code> try {
46165   function success(readers) {
46166    for (var i = 0; i &#60; readers.length; i++) {
46167     if (readers[i].isPresent) {
46168      console.log (&quot;Reader Name : &quot; + readers[i].getName());
46169     }
46170    }
46171   }
46172   function error(err) {
46173    console.log (err.name + &quot;: &quot; + err.message);
46174   }
46175   tizen.seService.getReaders(success, error);
46176  } catch (err) {
46177   console.log (err.name + &quot;: &quot; + err.message);
46178  }
46179  </Code>
46180         </descriptive>
46181         <Type type="DOMString">
46182           <descriptive>
46183               <description><p>
46184  DOMString The name of the reader.
46185               </p></description>
46186           </descriptive>
46187         </Type>
46188         <ArgumentList/>
46189         <Raises>
46190           <RaiseException name="WebAPIException">
46191             <descriptive>
46192                 <description><p>
46193  with error type SecurityError, if the application does not have the privilege to call this method.
46194                 </p></description>
46195                 <description><p>
46196  with error type UnknownError, if any other error occurs.
46197                 </p></description>
46198             </descriptive>
46199           </RaiseException>
46200         </Raises>
46201       </Operation>
46202       <Operation name="openSession" id="::SecureElement::Reader::openSession">
46203         <webidl>    void openSession(<ref>SessionSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
46204         <descriptive>
46205             <brief>
46206  Opens a session on a reader.
46207             </brief>
46208            <description>
46209             <p>
46210 The ErrorCallback is launched with these error types:
46211             </p>
46212             <ul>
46213               <li>
46214  IOError - An error occurred in communication with the Secure Element in this reader.              </li>
46215               <li>
46216  InvalidStateError - If a Secure Element is not present on this reader.              </li>
46217               <li>
46218  UnknownError - If any other error occurs.              </li>
46219             </ul>
46220            </description>
46221             <version>
46222  2.1
46223             </version>
46224             <privilege>
46225  http://tizen.org/privilege/secureelement
46226             </privilege>
46227             <privilegelevel>
46228  public
46229             </privilegelevel>
46230             <Code> try {
46231   function success(session) {
46232    console.log (&quot;Open Session Success : &quot; + !session.isClosed);
46233   }
46234   function error(err) {
46235    console.log (err.name + &quot;: &quot; + err.message);
46236   }
46237   reader.openSession(success, error);
46238  } catch (err) {
46239   console.log (err.name + &quot;: &quot; + err.message);
46240  }
46241  </Code>
46242         </descriptive>
46243         <Type type="void"/>
46244         <ArgumentList>
46245           <Argument name="successCallback">
46246             <descriptive>
46247                 <description><p>
46248  The method to be invoked when a session has been successfully opened
46249                 </p></description>
46250             </descriptive>
46251             <Type name="SessionSuccessCallback"/>
46252           </Argument>
46253           <Argument optional="optional" name="errorCallback">
46254             <descriptive>
46255                 <description><p>
46256  The method to be called when an error occurs
46257                 </p></description>
46258             </descriptive>
46259             <Type name="ErrorCallback" nullable="nullable"/>
46260           </Argument>
46261         </ArgumentList>
46262         <Raises>
46263           <RaiseException name="WebAPIException">
46264             <descriptive>
46265                 <description><p>
46266  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
46267                 </p></description>
46268                 <description><p>
46269  with error type SecurityError, if the application does not have the privilege to call this method.
46270                 </p></description>
46271             </descriptive>
46272           </RaiseException>
46273         </Raises>
46274       </Operation>
46275       <Operation name="closeSessions" id="::SecureElement::Reader::closeSessions">
46276         <webidl>    void closeSessions() raises(<ref>WebAPIException</ref>);</webidl>
46277         <descriptive>
46278             <brief>
46279  Closes all sessions opened on a reader.
46280             </brief>
46281             <version>
46282  2.1
46283             </version>
46284             <privilege>
46285  http://tizen.org/privilege/secureelement
46286             </privilege>
46287             <privilegelevel>
46288  public
46289             </privilegelevel>
46290             <Code> try {
46291   reader.closeSessions();
46292  } catch (err) {
46293   console.log (err.name + &quot;: &quot; + err.message);
46294  }
46295  </Code>
46296         </descriptive>
46297         <Type type="void"/>
46298         <ArgumentList/>
46299         <Raises>
46300           <RaiseException name="WebAPIException">
46301             <descriptive>
46302                 <description><p>
46303  with error type SecurityError, if the application does not have the privilege to call this method.
46304                 </p></description>
46305                 <description><p>
46306  with error type UnknownError in any other error case.
46307                 </p></description>
46308             </descriptive>
46309           </RaiseException>
46310         </Raises>
46311       </Operation>
46312     </Interface>
46313     <Interface name="Session" id="::SecureElement::Session">
46314       <webidl>  [NoInterfaceObject] interface Session&#13;
46315   {&#13;
46316 &#13;
46317     readonly attribute boolean isClosed;&#13;
46318 &#13;
46319     void openBasicChannel(byte[] aid, <ref>ChannelSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
46320 &#13;
46321     void openLogicalChannel(byte[] aid, <ref>ChannelSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
46322 &#13;
46323     byte[] getATR() raises(<ref>WebAPIException</ref>);&#13;
46324 &#13;
46325     void close() raises(<ref>WebAPIException</ref>);&#13;
46326 &#13;
46327     void closeChannels() raises(<ref>WebAPIException</ref>);&#13;
46328   };</webidl>
46329       <descriptive>
46330           <brief>
46331  This interface is connected to one of the readers and offers methods to control channels in a session.
46332           </brief>
46333           <version>
46334  2.1
46335           </version>
46336       </descriptive>
46337       <ExtendedAttributeList>
46338         <ExtendedAttribute name="NoInterfaceObject">
46339           <webidl>NoInterfaceObject</webidl>
46340         </ExtendedAttribute>
46341       </ExtendedAttributeList>
46342       <Attribute readonly="readonly" name="isClosed" id="::SecureElement::Session::isClosed">
46343         <webidl>    readonly attribute boolean isClosed;</webidl>
46344         <descriptive>
46345             <brief>
46346  An attribute to check whether a session is closed or not.
46347             </brief>
46348             <version>
46349  2.1
46350             </version>
46351         </descriptive>
46352         <Type type="boolean"/>
46353       </Attribute>
46354       <Operation name="openBasicChannel" id="::SecureElement::Session::openBasicChannel">
46355         <webidl>    void openBasicChannel(byte[] aid, <ref>ChannelSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
46356         <descriptive>
46357             <brief>
46358  Opens a basic channel in a session.
46359 The basic channel (defined in the ISO7816-4 specification) is opened by default and its channel ID is <var>0</var>.
46360 Once this channel has been opened by an application, it is considered to be &quot;locked&quot; to other applications, and they cannot open any channel, until the basic channel is closed.
46361 Some Secure Elements might always deny opening a basic channel.
46362             </brief>
46363            <description>
46364             <p>
46365 The ErrorCallback is launched with these error types:
46366             </p>
46367             <ul>
46368               <li>
46369  IOError - If an error occurs while communicating with the Secure Element in the reader.              </li>
46370               <li>
46371  SecurityError - If access to this AID or the default application on this session is not allowed .              </li>
46372               <li>
46373  InvalidStateError - If this session is closed.               </li>
46374               <li>
46375  NotFoundError - If the application of the AID does not exist in the Secure Element.              </li>
46376               <li>
46377  NoChannelError - If basic channel is unavailable.              </li>
46378               <li>
46379  UnknownError - If any other error occurs.              </li>
46380             </ul>
46381            </description>
46382             <version>
46383  2.1
46384             </version>
46385             <privilege>
46386  http://tizen.org/privilege/secureelement
46387             </privilege>
46388             <privilegelevel>
46389  public
46390             </privilegelevel>
46391             <Code> try {
46392   function successChannel(channel) {
46393    if (channel.isBasicChannel) {
46394     console.log (&quot;Basic channel is opened.&quot;);
46395    } else {
46396     console.log (&quot;Logical channel is opened.&quot;);
46397    }
46398   }
46399   function errorChannel(err) {
46400    console.log (&quot;openBasicChannel Error :&quot; + err.name +&quot;: &quot; + err.message);
46401   }
46402
46403   function successSession(session) {
46404    console.log (&quot;Open Session Success : &quot; + !session.isClosed);
46405    // This aid is for test. Use aid for your applet in secure element.
46406    session.openBasicChannel([0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe], successChannel, errorChannel);
46407   }
46408   function errorSession(err) {
46409    console.log (&quot;openSession Error : &quot; + err.name + &quot;: &quot; + err.message);
46410   }
46411   reader.openSession(successSession, errorSession);
46412  } catch (err) {
46413   console.log (err.name + &quot;: &quot; + err.message);
46414  }
46415  </Code>
46416         </descriptive>
46417         <Type type="void"/>
46418         <ArgumentList>
46419           <Argument name="aid">
46420             <descriptive>
46421                 <description><p>
46422  The id of the applet to select on this channel.<br/>If the array is empty, the default applet is selected in this session.
46423                 </p></description>
46424             </descriptive>
46425             <Type type="array">
46426               <Type type="byte"/>
46427             </Type>
46428           </Argument>
46429           <Argument name="successCallback">
46430             <descriptive>
46431                 <description><p>
46432  The method to be invoked when a basic channel has been successfully opened
46433                 </p></description>
46434             </descriptive>
46435             <Type name="ChannelSuccessCallback"/>
46436           </Argument>
46437           <Argument optional="optional" name="errorCallback">
46438             <descriptive>
46439                 <description><p>
46440  The method to be called when an error occurs
46441                 </p></description>
46442             </descriptive>
46443             <Type name="ErrorCallback" nullable="nullable"/>
46444           </Argument>
46445         </ArgumentList>
46446         <Raises>
46447           <RaiseException name="WebAPIException">
46448             <descriptive>
46449                 <description><p>
46450  with error type TypeMismatchError, if the input parameter
46451 is not compatible with the expected type for that parameter.
46452                 </p></description>
46453                 <description><p>
46454  with error type InvalidValuesError, if the AID's length is not within the limit: 5 to 16(inclusive).
46455                 </p></description>
46456                 <description><p>
46457  with error type SecurityError, if the application does not have the privilege to call this method.
46458                 </p></description>
46459             </descriptive>
46460           </RaiseException>
46461         </Raises>
46462       </Operation>
46463       <Operation name="openLogicalChannel" id="::SecureElement::Session::openLogicalChannel">
46464         <webidl>    void openLogicalChannel(byte[] aid, <ref>ChannelSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
46465         <descriptive>
46466             <brief>
46467  Opens a logical channel in a session by the specified applet id.
46468 The logical channel is defined in the ISO7816-4 specification.
46469             </brief>
46470            <description>
46471             <p>
46472 The ErrorCallback is launched with these error types:
46473             </p>
46474             <ul>
46475               <li>
46476  IOError - If an error occurs while communicating with the Secure Element in the reader.              </li>
46477               <li>
46478  SecurityError - If access to this AID or the default application in this session is not allowed.              </li>
46479               <li>
46480  InvalidStateError - If this session is closed.              </li>
46481               <li>
46482  NotFoundError - If the application of the AID does not exist in the Secure Element.              </li>
46483               <li>
46484  NoChannelError - If logical channel is unavailable.              </li>
46485               <li>
46486  UnknownError - If any other error occurs.              </li>
46487             </ul>
46488            </description>
46489             <version>
46490  2.1
46491             </version>
46492             <privilege>
46493  http://tizen.org/privilege/secureelement
46494             </privilege>
46495             <privilegelevel>
46496  public
46497             </privilegelevel>
46498             <Code> var session; //Session obtained from openSession callback
46499  try {
46500   function successChannel(channel) {
46501    if (channel.isBasicChannel) {
46502     console.log (&quot;Basic channel is opened.&quot;);
46503    } else {
46504     console.log (&quot;Logical channel is opened.&quot;);
46505    }
46506   }
46507   function errorChannel(err) {
46508    console.log (&quot;openLogicalChannel Error :&quot; + err.name + &quot;: &quot; + err.message);
46509   }
46510
46511    // This aid is for test. Use aid for your applet in secure element.
46512   session.openLogicalChannel([0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe], successChannel, errorChannel);
46513  } catch (err) {
46514   console.log (err.name + &quot;: &quot; + err.message);
46515  }
46516  </Code>
46517         </descriptive>
46518         <Type type="void"/>
46519         <ArgumentList>
46520           <Argument name="aid">
46521             <descriptive>
46522                 <description><p>
46523  The id of the applet to select on this channel<br/>If the array is empty, the default application is selected in this session.
46524                 </p></description>
46525             </descriptive>
46526             <Type type="array">
46527               <Type type="byte"/>
46528             </Type>
46529           </Argument>
46530           <Argument name="successCallback">
46531             <descriptive>
46532                 <description><p>
46533  The method to be invoked when a logical channel has been successfully opened
46534                 </p></description>
46535             </descriptive>
46536             <Type name="ChannelSuccessCallback"/>
46537           </Argument>
46538           <Argument optional="optional" name="errorCallback">
46539             <descriptive>
46540                 <description><p>
46541  The method to be called when an error occurs
46542                 </p></description>
46543             </descriptive>
46544             <Type name="ErrorCallback" nullable="nullable"/>
46545           </Argument>
46546         </ArgumentList>
46547         <Raises>
46548           <RaiseException name="WebAPIException">
46549             <descriptive>
46550                 <description><p>
46551  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
46552                 </p></description>
46553                 <description><p>
46554  with error type InvalidValuesError, if the AID's length is not within the limit: 5 to 16(inclusive).
46555                 </p></description>
46556                 <description><p>
46557  with error type SecurityError, if the application does not have the privilege to call this method.
46558                 </p></description>
46559             </descriptive>
46560           </RaiseException>
46561         </Raises>
46562       </Operation>
46563       <Operation name="getATR" id="::SecureElement::Session::getATR">
46564         <webidl>    byte[] getATR() raises(<ref>WebAPIException</ref>);</webidl>
46565         <descriptive>
46566             <brief>
46567  Gets the answer to reset(ATR) of a Secure Element.
46568             </brief>
46569             <version>
46570  2.1
46571             </version>
46572             <privilege>
46573  http://tizen.org/privilege/secureelement
46574             </privilege>
46575             <privilegelevel>
46576  public
46577             </privilegelevel>
46578             <Code> var session; //Session obtained from openSession callback
46579  try {
46580   var atr = session.getATR();
46581  } catch (err) {
46582   console.log (err.name + &quot;: &quot; + err.message);
46583  }
46584  </Code>
46585         </descriptive>
46586         <Type type="array">
46587           <descriptive>
46588               <description><p>
46589  byte[] The ATR of a Secure Element.
46590               </p></description>
46591           </descriptive>
46592           <Type type="byte"/>
46593         </Type>
46594         <ArgumentList/>
46595         <Raises>
46596           <RaiseException name="WebAPIException">
46597             <descriptive>
46598                 <description><p>
46599  with error type SecurityError, if the application does not have the privilege to call this method.
46600                 </p></description>
46601                 <description><p>
46602  with error type UnknownError, if any other error occurs.
46603                 </p></description>
46604             </descriptive>
46605           </RaiseException>
46606         </Raises>
46607       </Operation>
46608       <Operation name="close" id="::SecureElement::Session::close">
46609         <webidl>    void close() raises(<ref>WebAPIException</ref>);</webidl>
46610         <descriptive>
46611             <brief>
46612  Closes a session.
46613             </brief>
46614             <version>
46615  2.1
46616             </version>
46617             <privilege>
46618  http://tizen.org/privilege/secureelement
46619             </privilege>
46620             <privilegelevel>
46621  public
46622             </privilegelevel>
46623             <Code> var session; //Session obtained from openSession callback
46624  try {
46625   session.close();
46626  } catch (err) {
46627   console.log (err.name + &quot;: &quot; + err.message);
46628  }
46629  </Code>
46630         </descriptive>
46631         <Type type="void"/>
46632         <ArgumentList/>
46633         <Raises>
46634           <RaiseException name="WebAPIException">
46635             <descriptive>
46636                 <description><p>
46637  with error type SecurityError, if the application does not have the privilege to call this method.
46638                 </p></description>
46639                 <description><p>
46640  with error type UnknownError, if any other error occurs.
46641                 </p></description>
46642             </descriptive>
46643           </RaiseException>
46644         </Raises>
46645       </Operation>
46646       <Operation name="closeChannels" id="::SecureElement::Session::closeChannels">
46647         <webidl>    void closeChannels() raises(<ref>WebAPIException</ref>);</webidl>
46648         <descriptive>
46649             <brief>
46650  Closes all channels on this session.
46651             </brief>
46652             <version>
46653  2.1
46654             </version>
46655             <privilege>
46656  http://tizen.org/privilege/secureelement
46657             </privilege>
46658             <privilegelevel>
46659  public
46660             </privilegelevel>
46661             <Code> var session; //Session obtained from openSession callback 
46662  try {
46663   session.closeChannels();
46664  } catch (err) {
46665   console.log (err.name + &quot;: &quot; + err.message);
46666  }
46667  </Code>
46668         </descriptive>
46669         <Type type="void"/>
46670         <ArgumentList/>
46671         <Raises>
46672           <RaiseException name="WebAPIException">
46673             <descriptive>
46674                 <description><p>
46675  with error type SecurityError, if the application does not have the privilege to call this method.
46676                 </p></description>
46677                 <description><p>
46678  with error type UnknownError in any other error case.
46679                 </p></description>
46680             </descriptive>
46681           </RaiseException>
46682         </Raises>
46683       </Operation>
46684     </Interface>
46685     <Interface name="Channel" id="::SecureElement::Channel">
46686       <webidl>  [NoInterfaceObject] interface Channel {&#13;
46687 &#13;
46688     readonly attribute boolean isBasicChannel;&#13;
46689 &#13;
46690     void close() raises(<ref>WebAPIException</ref>);&#13;
46691     &#13;
46692 &#13;
46693     void transmit(byte[] command, <ref>TransmitSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
46694   };</webidl>
46695       <descriptive>
46696           <brief>
46697  This interface is open to a Secure Element and offers methods to send Application Protocol Data Units(APDU) to the Secure Element.
46698 The channel is defined in the ISO7816-4.
46699           </brief>
46700           <version>
46701  2.1
46702           </version>
46703       </descriptive>
46704       <ExtendedAttributeList>
46705         <ExtendedAttribute name="NoInterfaceObject">
46706           <webidl>NoInterfaceObject</webidl>
46707         </ExtendedAttribute>
46708       </ExtendedAttributeList>
46709       <Attribute readonly="readonly" name="isBasicChannel" id="::SecureElement::Channel::isBasicChannel">
46710         <webidl>    readonly attribute boolean isBasicChannel;</webidl>
46711         <descriptive>
46712             <brief>
46713  An attribute to check whether it is a basic channel or not.
46714             </brief>
46715             <version>
46716  2.1
46717             </version>
46718         </descriptive>
46719         <Type type="boolean"/>
46720       </Attribute>
46721       <Operation name="close" id="::SecureElement::Channel::close">
46722         <webidl>    void close() raises(<ref>WebAPIException</ref>);</webidl>
46723         <descriptive>
46724             <brief>
46725  Closes a channel.
46726             </brief>
46727             <version>
46728  2.1
46729             </version>
46730             <privilege>
46731  http://tizen.org/privilege/secureelement
46732             </privilege>
46733             <privilegelevel>
46734  public
46735             </privilegelevel>
46736             <Code> var channel; //Obtained from openLogicalChannel or openBasicChannel
46737  try {
46738   channel.close();
46739  } catch (err) {
46740   console.log (err.name + &quot;: &quot; + err.message);
46741  }
46742  </Code>
46743         </descriptive>
46744         <Type type="void"/>
46745         <ArgumentList/>
46746         <Raises>
46747           <RaiseException name="WebAPIException">
46748             <descriptive>
46749                 <description><p>
46750  with error type SecurityError, if the application does not have the privilege to call this method.
46751                 </p></description>
46752                 <description><p>
46753  with error type UnknownError, if any other error occurs.
46754                 </p></description>
46755             </descriptive>
46756           </RaiseException>
46757         </Raises>
46758       </Operation>
46759       <Operation name="transmit" id="::SecureElement::Channel::transmit">
46760         <webidl>    void transmit(byte[] command, <ref>TransmitSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
46761         <descriptive>
46762             <brief>
46763  Transmits an APDU command to a Secure Element. The APDU command is defined in ISO7816-4.
46764             </brief>
46765            <description>
46766             <p>
46767 Some commands that are not allowed to be sent are:
46768             </p>
46769             <ul>
46770               <li>
46771  MANAGE_CHANNEL commands.               </li>
46772               <li>
46773  SELECT by DF Name (p1=04).               </li>
46774               <li>
46775  The commands that CLA bytes with channel numbers are de-masked.               </li>
46776             </ul>
46777             <p>
46778 The ErrorCallback is launched with these error types:
46779             </p>
46780             <ul>
46781               <li>
46782  InvalidValuesError - If the command contain an invalid value.              </li>
46783               <li>
46784  IOError - An error occurred while communicating with the Secure Element in the reader.              </li>
46785               <li>
46786  SecurityError - If the command is not allowed.              </li>
46787               <li>
46788  InvalidStateError - If this channel is closed.              </li>
46789               <li>
46790  UnknownError - If any other error occurs.              </li>
46791             </ul>
46792            </description>
46793             <version>
46794  2.1
46795             </version>
46796             <privilege>
46797  http://tizen.org/privilege/secureelement
46798             </privilege>
46799             <privilegelevel>
46800  public
46801             </privilegelevel>
46802         </descriptive>
46803         <Type type="void"/>
46804         <ArgumentList>
46805           <Argument name="command">
46806             <descriptive>
46807                 <description><p>
46808  The APDU command to transmit through this channel
46809                 </p></description>
46810             </descriptive>
46811             <Type type="array">
46812               <Type type="byte"/>
46813             </Type>
46814           </Argument>
46815           <Argument name="successCallback">
46816             <descriptive>
46817                 <description><p>
46818  The method to be invoked when a command has been successfully transmitted
46819                 </p></description>
46820             </descriptive>
46821             <Type name="TransmitSuccessCallback"/>
46822           </Argument>
46823           <Argument optional="optional" name="errorCallback">
46824             <descriptive>
46825                 <description><p>
46826  The method to be called when an error occurs
46827                 </p></description>
46828             </descriptive>
46829             <Type name="ErrorCallback" nullable="nullable"/>
46830           </Argument>
46831         </ArgumentList>
46832         <Raises>
46833           <RaiseException name="WebAPIException">
46834             <descriptive>
46835                 <description><p>
46836  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
46837                 </p></description>
46838                 <description><p>
46839  with error type SecurityError, if the application does not have the privilege to call this method.
46840                 </p></description>
46841             </descriptive>
46842           </RaiseException>
46843         </Raises>
46844       </Operation>
46845     </Interface>
46846     <Interface name="SEChangeListener" id="::SecureElement::SEChangeListener">
46847       <webidl>  [Callback, NoInterfaceObject] interface SEChangeListener {&#13;
46848 &#13;
46849     void onSEReady(<ref>Reader</ref> reader);&#13;
46850 &#13;
46851     void onSENotReady(<ref>Reader</ref> reader);&#13;
46852   };</webidl>
46853       <descriptive>
46854           <brief>
46855  This interface provides the success callback that is invoked when a Secure Element reader is detected or lost.
46856           </brief>
46857          <description>
46858           <p>
46859 It is used in <em>SEService.registerSEListener()</em>.
46860           </p>
46861          </description>
46862           <version>
46863  2.1
46864           </version>
46865       </descriptive>
46866       <ExtendedAttributeList>
46867         <ExtendedAttribute name="Callback">
46868           <webidl>Callback</webidl>
46869         </ExtendedAttribute>
46870         <ExtendedAttribute name="NoInterfaceObject">
46871           <webidl> NoInterfaceObject</webidl>
46872         </ExtendedAttribute>
46873       </ExtendedAttributeList>
46874       <Operation name="onSEReady" id="::SecureElement::SEChangeListener::onSEReady">
46875         <webidl>    void onSEReady(<ref>Reader</ref> reader);</webidl>
46876         <descriptive>
46877             <brief>
46878  Called when a Secure Element reader is detected.
46879             </brief>
46880             <version>
46881  2.1
46882             </version>
46883         </descriptive>
46884         <Type type="void"/>
46885         <ArgumentList>
46886           <Argument name="reader">
46887             <descriptive>
46888                 <description><p>
46889  A newly detected Secure Element reader
46890                 </p></description>
46891             </descriptive>
46892             <Type name="Reader"/>
46893           </Argument>
46894         </ArgumentList>
46895       </Operation>
46896       <Operation name="onSENotReady" id="::SecureElement::SEChangeListener::onSENotReady">
46897         <webidl>    void onSENotReady(<ref>Reader</ref> reader);</webidl>
46898         <descriptive>
46899             <brief>
46900  Called when a Secure Element reader is lost.
46901             </brief>
46902             <version>
46903  2.1
46904             </version>
46905         </descriptive>
46906         <Type type="void"/>
46907         <ArgumentList>
46908           <Argument name="reader">
46909             <descriptive>
46910                 <description><p>
46911  A lost Secure Element reader
46912                 </p></description>
46913             </descriptive>
46914             <Type name="Reader"/>
46915           </Argument>
46916         </ArgumentList>
46917       </Operation>
46918     </Interface>
46919     <Interface name="ReaderArraySuccessCallback" id="::SecureElement::ReaderArraySuccessCallback">
46920       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface ReaderArraySuccessCallback {&#13;
46921 &#13;
46922     void onsuccess(<ref>Reader</ref>[] readers);&#13;
46923   };</webidl>
46924       <descriptive>
46925           <brief>
46926  This callback interface provides a success callback that is invoked when a list of available Secure Element readers is retrieved.
46927           </brief>
46928          <description>
46929           <p>
46930 It specifies a success method with an array of <em>Reader</em> objects as an input parameter.
46931 It is used in asynchronous operations such as <em>SEService.getReaders()</em>.
46932           </p>
46933          </description>
46934           <version>
46935  2.1
46936           </version>
46937       </descriptive>
46938       <ExtendedAttributeList>
46939         <ExtendedAttribute name="Callback" value="FunctionOnly">
46940           <webidl>Callback</webidl>
46941         </ExtendedAttribute>
46942         <ExtendedAttribute name="NoInterfaceObject">
46943           <webidl> NoInterfaceObject</webidl>
46944         </ExtendedAttribute>
46945       </ExtendedAttributeList>
46946       <Operation name="onsuccess" id="::SecureElement::ReaderArraySuccessCallback::onsuccess">
46947         <webidl>    void onsuccess(<ref>Reader</ref>[] readers);</webidl>
46948         <descriptive>
46949             <brief>
46950  Called when an asynchronous call completes successfully.
46951             </brief>
46952             <version>
46953  2.1
46954             </version>
46955         </descriptive>
46956         <Type type="void"/>
46957         <ArgumentList>
46958           <Argument name="readers">
46959             <descriptive>
46960                 <description><p>
46961  A list of available Secure Element readers
46962                 </p></description>
46963             </descriptive>
46964             <Type type="array">
46965               <Type name="Reader"/>
46966             </Type>
46967           </Argument>
46968         </ArgumentList>
46969       </Operation>
46970     </Interface>
46971     <Interface name="SessionSuccessCallback" id="::SecureElement::SessionSuccessCallback">
46972       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface SessionSuccessCallback {&#13;
46973 &#13;
46974     void onsuccess(<ref>Session</ref> session);&#13;
46975   };</webidl>
46976       <descriptive>
46977           <brief>
46978  This interface specifies the success callback that is invoked when a session on a specific reader is open.
46979           </brief>
46980          <description>
46981           <p>
46982 This callback interface specifies a success method with a <em>Session</em> object as an input parameter.
46983 It is used in asynchronous operations such as <em>Reader.openSession()</em>.
46984           </p>
46985          </description>
46986           <version>
46987  2.1
46988           </version>
46989       </descriptive>
46990       <ExtendedAttributeList>
46991         <ExtendedAttribute name="Callback" value="FunctionOnly">
46992           <webidl>Callback</webidl>
46993         </ExtendedAttribute>
46994         <ExtendedAttribute name="NoInterfaceObject">
46995           <webidl> NoInterfaceObject</webidl>
46996         </ExtendedAttribute>
46997       </ExtendedAttributeList>
46998       <Operation name="onsuccess" id="::SecureElement::SessionSuccessCallback::onsuccess">
46999         <webidl>    void onsuccess(<ref>Session</ref> session);</webidl>
47000         <descriptive>
47001             <brief>
47002  Called when an asynchronous call completes successfully.
47003             </brief>
47004             <version>
47005  2.1
47006             </version>
47007         </descriptive>
47008         <Type type="void"/>
47009         <ArgumentList>
47010           <Argument name="session">
47011             <descriptive>
47012                 <description><p>
47013  An open session
47014                 </p></description>
47015             </descriptive>
47016             <Type name="Session"/>
47017           </Argument>
47018         </ArgumentList>
47019       </Operation>
47020     </Interface>
47021     <Interface name="ChannelSuccessCallback" id="::SecureElement::ChannelSuccessCallback">
47022       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface ChannelSuccessCallback {&#13;
47023 &#13;
47024     void onsuccess(<ref>Channel</ref> channel);&#13;
47025   };</webidl>
47026       <descriptive>
47027           <brief>
47028  This interface specifies the success callback that is invoked when a channel is open to communicate with a specific applet.
47029           </brief>
47030          <description>
47031           <p>
47032 This callback interface specifies a success method with a <em>Channel</em> object as an input parameter.
47033 It is used in asynchronous operations such as <em>Session.openBasicChannel() </em>or <em>Session.openLogicalChannel()</em>.
47034           </p>
47035          </description>
47036           <version>
47037  2.1
47038           </version>
47039       </descriptive>
47040       <ExtendedAttributeList>
47041         <ExtendedAttribute name="Callback" value="FunctionOnly">
47042           <webidl>Callback</webidl>
47043         </ExtendedAttribute>
47044         <ExtendedAttribute name="NoInterfaceObject">
47045           <webidl> NoInterfaceObject</webidl>
47046         </ExtendedAttribute>
47047       </ExtendedAttributeList>
47048       <Operation name="onsuccess" id="::SecureElement::ChannelSuccessCallback::onsuccess">
47049         <webidl>    void onsuccess(<ref>Channel</ref> channel);</webidl>
47050         <descriptive>
47051             <brief>
47052  Called when an asynchronous call completes successfully.
47053             </brief>
47054             <version>
47055  2.1
47056             </version>
47057         </descriptive>
47058         <Type type="void"/>
47059         <ArgumentList>
47060           <Argument name="channel">
47061             <descriptive>
47062                 <description><p>
47063  An open channel
47064                 </p></description>
47065             </descriptive>
47066             <Type name="Channel"/>
47067           </Argument>
47068         </ArgumentList>
47069       </Operation>
47070     </Interface>
47071     <Interface name="TransmitSuccessCallback" id="::SecureElement::TransmitSuccessCallback">
47072       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface TransmitSuccessCallback {&#13;
47073 &#13;
47074     void onsuccess(byte[] response);&#13;
47075   };</webidl>
47076       <descriptive>
47077           <brief>
47078  This interface specifies the success callback that is invoked when <em>Channel.transmit() </em>completes successfully.
47079           </brief>
47080          <description>
47081           <p>
47082 This callback interface specifies a success method with an array of bytes as an input parameter. It is used in <em>Channel.transmit()</em>.
47083           </p>
47084          </description>
47085           <version>
47086  2.1
47087           </version>
47088       </descriptive>
47089       <ExtendedAttributeList>
47090         <ExtendedAttribute name="Callback" value="FunctionOnly">
47091           <webidl>Callback</webidl>
47092         </ExtendedAttribute>
47093         <ExtendedAttribute name="NoInterfaceObject">
47094           <webidl> NoInterfaceObject</webidl>
47095         </ExtendedAttribute>
47096       </ExtendedAttributeList>
47097       <Operation name="onsuccess" id="::SecureElement::TransmitSuccessCallback::onsuccess">
47098         <webidl>    void onsuccess(byte[] response);</webidl>
47099         <descriptive>
47100             <brief>
47101  Called when an asynchronous call completes successfully.
47102             </brief>
47103             <version>
47104  2.1
47105             </version>
47106         </descriptive>
47107         <Type type="void"/>
47108         <ArgumentList>
47109           <Argument name="response">
47110             <descriptive>
47111                 <description><p>
47112  An APDU command response that is transmitted on a channel
47113                 </p></description>
47114             </descriptive>
47115             <Type type="array">
47116               <Type type="byte"/>
47117             </Type>
47118           </Argument>
47119         </ArgumentList>
47120       </Operation>
47121     </Interface>
47122   </Module>
47123   <Module name="SystemInfo" id="::SystemInfo">
47124     <webidl>module SystemInfo {
47125
47126   enum SystemInfoPropertyId { &quot;BATTERY&quot; , &quot;CPU&quot;, &quot;STORAGE&quot;, &quot;DISPLAY&quot;, &quot;DEVICE_ORIENTATION&quot;, &quot;BUILD&quot;, &quot;LOCALE&quot;, &quot;NETWORK&quot;, &quot;WIFI_NETWORK&quot;, &quot;CELLULAR_NETWORK&quot;, &quot;SIM&quot;, &quot;PERIPHERAL&quot; };
47127
47128   enum SystemInfoNetworkType { &quot;NONE&quot;, &quot;2G&quot;, &quot;2.5G&quot;, &quot;3G&quot;, &quot;4G&quot;, &quot;WIFI&quot;, &quot;ETHERNET&quot;, &quot;UNKNOWN&quot; };
47129   
47130   enum SystemInfoDeviceOrientationStatus { &quot;PORTRAIT_PRIMARY&quot;, &quot;PORTRAIT_SECONDARY&quot;, &quot;LANDSCAPE_PRIMARY&quot;, &quot;LANDSCAPE_SECONDARY&quot; };
47131   
47132   enum SystemInfoSimState { &quot;ABSENT&quot;, &quot;INITIALIZING&quot;, &quot;READY&quot;, &quot;PIN_REQUIRED&quot;, &quot;PUK_REQUIRED&quot;, &quot;NETWORK_LOCKED&quot;, &quot;SIM_LOCKED&quot;, &quot;UNKNOWN&quot; };
47133   
47134   enum SystemInfoProfile { &quot;MOBILE_FULL&quot;, &quot;MOBILE_WEB&quot; };
47135
47136   [NoInterfaceObject] interface SystemInfoObject {
47137     readonly attribute <ref>SystemInfo</ref> systeminfo;
47138   };
47139   <ref>Tizen</ref> implements <ref>SystemInfoObject</ref>;
47140
47141   [NoInterfaceObject] interface SystemInfo {
47142
47143     <ref>SystemInfoDeviceCapability</ref> getCapabilities() raises(<ref>WebAPIException</ref>);
47144
47145     void getPropertyValue(<ref>SystemInfoPropertyId</ref> property,
47146                           <ref>SystemInfoPropertySuccessCallback</ref> successCallback,
47147                           optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
47148
47149     unsigned long addPropertyValueChangeListener(<ref>SystemInfoPropertyId</ref> property,
47150                                         <ref>SystemInfoPropertySuccessCallback</ref> successCallback,
47151                                         optional <ref>SystemInfoOptions</ref>? options) raises(<ref>WebAPIException</ref>);
47152
47153     void removePropertyValueChangeListener(unsigned long listenerId) raises(<ref>WebAPIException</ref>);
47154   };
47155
47156   [NoInterfaceObject] interface SystemInfoDeviceCapability {
47157     readonly attribute boolean bluetooth;
47158
47159     readonly attribute boolean nfc;
47160
47161     readonly attribute boolean nfcReservedPush ;
47162
47163     readonly attribute unsigned short multiTouchCount;
47164
47165     readonly attribute boolean inputKeyboard;
47166
47167     readonly attribute boolean inputKeyboardLayout;
47168
47169     readonly attribute boolean wifi;
47170
47171     readonly attribute boolean wifiDirect;
47172
47173     readonly attribute boolean opengles;
47174
47175     readonly attribute DOMString openglestextureFormat;
47176
47177     readonly attribute boolean openglesVersion1_1;
47178
47179     readonly attribute boolean openglesVersion2_0;
47180
47181     readonly attribute boolean fmRadio;
47182
47183     readonly attribute DOMString platformVersion raises(<ref>WebAPIException</ref>);
47184
47185     readonly attribute DOMString webApiVersion raises(<ref>WebAPIException</ref>);
47186
47187     readonly attribute DOMString nativeApiVersion raises(<ref>WebAPIException</ref>);
47188
47189     readonly attribute DOMString platformName;
47190
47191     readonly attribute boolean camera;
47192
47193     readonly attribute boolean cameraFront;
47194
47195     readonly attribute boolean cameraFrontFlash;
47196
47197     readonly attribute boolean cameraBack;
47198
47199     readonly attribute boolean cameraBackFlash;
47200
47201     readonly attribute boolean location;
47202
47203     readonly attribute boolean locationGps;
47204
47205     readonly attribute boolean locationWps;
47206
47207     readonly attribute boolean microphone;
47208
47209     readonly attribute boolean usbHost;
47210
47211     readonly attribute boolean usbAccessory;
47212
47213     readonly attribute boolean screenOutputRca;
47214
47215     readonly attribute boolean screenOutputHdmi;
47216
47217     readonly attribute DOMString platformCoreCpuArch;
47218
47219     readonly attribute DOMString platformCoreFpuArch;
47220
47221     readonly attribute boolean sipVoip;
47222
47223     readonly attribute DOMString duid;
47224
47225     readonly attribute boolean speechRecognition;
47226
47227     readonly attribute boolean speechSynthesis;
47228
47229     readonly attribute boolean accelerometer;
47230
47231     readonly attribute boolean accelerometerWakeup;
47232
47233     readonly attribute boolean barometer;
47234
47235     readonly attribute boolean barometerWakeup;
47236
47237     readonly attribute boolean gyroscope;
47238
47239     readonly attribute boolean gyroscopeWakeup;
47240
47241     readonly attribute boolean magnetometer;
47242
47243     readonly attribute boolean magnetometerWakeup;
47244
47245     readonly attribute boolean photometer;
47246
47247     readonly attribute boolean photometerWakeup;
47248
47249     readonly attribute boolean proximity;
47250
47251     readonly attribute boolean proximityWakeup;
47252
47253     readonly attribute boolean tiltmeter;
47254
47255     readonly attribute boolean tiltmeterWakeup;
47256
47257     readonly attribute boolean dataEncryption;
47258
47259     readonly attribute boolean graphicsAcceleration;
47260
47261     readonly attribute boolean push;
47262
47263     readonly attribute boolean telephony;
47264
47265     readonly attribute boolean telephonyMms;
47266
47267     readonly attribute boolean telephonySms;
47268
47269     readonly attribute boolean screenSizeNormal;
47270
47271     readonly attribute boolean screenSize480_800;
47272
47273     readonly attribute boolean screenSize720_1280;
47274
47275     readonly attribute boolean autoRotation;
47276
47277     readonly attribute boolean shellAppWidget;
47278
47279     readonly attribute boolean visionImageRecognition;
47280
47281     readonly attribute boolean visionQrcodeGeneration;
47282
47283     readonly attribute boolean visionQrcodeRecognition;
47284
47285     readonly attribute boolean visionFaceRecognition;
47286
47287     readonly attribute boolean secureElement;
47288         
47289     readonly attribute boolean nativeOspCompatible;
47290
47291     readonly attribute <ref>SystemInfoProfile</ref> profile;
47292   };  
47293   
47294   dictionary SystemInfoOptions {
47295     unsigned long timeout;
47296
47297     double highThreshold;
47298
47299     double lowThreshold;
47300   };
47301
47302   [Callback=FunctionOnly, NoInterfaceObject] interface SystemInfoPropertySuccessCallback {
47303     void onsuccess(<ref>SystemInfoProperty</ref> prop);
47304   };
47305
47306   [NoInterfaceObject] interface SystemInfoProperty {
47307   };
47308
47309   [NoInterfaceObject] interface SystemInfoBattery : <ref>SystemInfoProperty</ref> {
47310     readonly attribute double level;
47311
47312     readonly attribute boolean isCharging;
47313   };
47314
47315   [NoInterfaceObject] interface SystemInfoCpu : <ref>SystemInfoProperty</ref> {
47316     readonly attribute double load;
47317   };
47318
47319   [NoInterfaceObject] interface SystemInfoStorage : <ref>SystemInfoProperty</ref> {
47320     readonly attribute <ref>SystemInfoStorageUnit</ref>[] units;
47321   };
47322
47323   [NoInterfaceObject] interface SystemInfoStorageUnit : <ref>SystemInfoProperty</ref> {
47324     readonly attribute DOMString type;
47325
47326     readonly attribute unsigned long long capacity;
47327
47328     readonly attribute unsigned long long availableCapacity;
47329
47330     readonly attribute boolean isRemovable;
47331
47332     readonly attribute boolean isRemoveable;
47333   };
47334
47335   [NoInterfaceObject] interface SystemInfoDisplay : <ref>SystemInfoProperty</ref> {
47336     readonly attribute unsigned long resolutionWidth;
47337
47338     readonly attribute unsigned long resolutionHeight;
47339
47340     readonly attribute unsigned long dotsPerInchWidth;
47341
47342     readonly attribute unsigned long dotsPerInchHeight;
47343
47344     readonly attribute double physicalWidth;
47345
47346     readonly attribute double physicalHeight;
47347
47348     readonly attribute double brightness;
47349   };
47350
47351   [NoInterfaceObject] interface SystemInfoDeviceOrientation : <ref>SystemInfoProperty</ref> {
47352
47353     readonly attribute <ref>SystemInfoDeviceOrientationStatus</ref> status;
47354     readonly attribute boolean isAutoRotation;
47355   };
47356   
47357   [NoInterfaceObject] interface SystemInfoBuild : <ref>SystemInfoProperty</ref> {
47358
47359     readonly attribute DOMString model;
47360     readonly attribute DOMString manufacturer;
47361     readonly attribute DOMString buildVersion;
47362   };
47363
47364   [NoInterfaceObject] interface SystemInfoLocale : <ref>SystemInfoProperty</ref> {
47365
47366     readonly attribute DOMString language;
47367
47368     readonly attribute DOMString country;
47369   };
47370   
47371   [NoInterfaceObject] interface SystemInfoNetwork : <ref>SystemInfoProperty</ref> {    
47372
47373     readonly attribute <ref>SystemInfoNetworkType</ref> networkType;    
47374   };    
47375
47376    [NoInterfaceObject] interface SystemInfoWifiNetwork : <ref>SystemInfoProperty</ref> {    
47377
47378     readonly attribute DOMString status;    
47379     readonly attribute DOMString ssid;    
47380     readonly attribute DOMString ipAddress;    
47381      readonly attribute DOMString ipv6Address;    
47382     readonly attribute double signalStrength;    
47383   };    
47384
47385   [NoInterfaceObject] interface SystemInfoCellularNetwork : <ref>SystemInfoProperty</ref> {    
47386
47387     readonly attribute DOMString status;    
47388     readonly attribute DOMString apn;    
47389     readonly attribute DOMString ipAddress;    
47390     readonly attribute DOMString ipv6Address;    
47391     readonly attribute unsigned short mcc;    
47392     readonly attribute unsigned short mnc;    
47393     readonly attribute unsigned short cellId;    
47394     readonly attribute unsigned short lac;    
47395     readonly attribute boolean isRoaming;
47396     readonly attribute boolean isFlightMode;
47397     readonly attribute DOMString imei raises(<ref>WebAPIException</ref>);
47398   };
47399
47400   [NoInterfaceObject] interface SystemInfoSIM : <ref>SystemInfoProperty</ref> {
47401     readonly attribute <ref>SystemInfoSimState</ref> state raises(<ref>WebAPIException</ref>);
47402     readonly attribute DOMString operatorName raises(<ref>WebAPIException</ref>);
47403     readonly attribute DOMString msisdn raises(<ref>WebAPIException</ref>);
47404     readonly attribute DOMString iccid raises(<ref>WebAPIException</ref>);
47405     readonly attribute unsigned short mcc raises(<ref>WebAPIException</ref>);
47406     readonly attribute unsigned short mnc raises(<ref>WebAPIException</ref>);
47407     readonly attribute DOMString msin raises(<ref>WebAPIException</ref>);
47408     readonly attribute DOMString spn raises(<ref>WebAPIException</ref>);
47409   };    
47410   
47411   [NoInterfaceObject] interface SystemInfoPeripheral : <ref>SystemInfoProperty</ref> {
47412
47413     readonly attribute boolean isVideoOutputOn;
47414   };
47415 };</webidl>
47416     <descriptive>
47417         <brief>
47418  This specification defines interfaces and methods that provide web applications with access to various properties of a system.
47419         </brief>
47420        <description>
47421         <p>
47422 This API also provides interfaces and methods that can retrieve statuses of hardware devices, get the value of selected properties, and subscribe to asynchronous notifications of changes for selected values. 
47423         </p>
47424         <p>
47425 The following provides an overview of the tree data structure:
47426         </p>
47427         <ul>
47428           <li>
47429 BATTERY          </li>
47430           <li>
47431 CPU          </li>
47432           <li>
47433 STORAGE          </li>
47434           <li>
47435 DISPLAY          </li>
47436           <li>
47437 DEVICE_ORIENTATION          </li>
47438           <li>
47439 BUILD          </li>
47440           <li>
47441 LOCALE          </li>
47442           <li>
47443 NETWORK          </li>
47444           <li>
47445 WIFI_NETWORK          </li>
47446           <li>
47447 CELLULAR_NETWORK          </li>
47448           <li>
47449 SIM          </li>
47450           <li>
47451 PERIPHERAL          </li>
47452         </ul>
47453         <p>
47454 For more information on the SystemInfo features, see <a href="../../org.tizen.web.appprogramming/html/guide/sys_guide/systeminfo.htm">System Information Guide</a>.
47455         </p>
47456        </description>
47457         <version>
47458  1.0
47459         </version>
47460     </descriptive>
47461     <Enum name="SystemInfoPropertyId" id="::SystemInfo::SystemInfoPropertyId">
47462       <webidl>  enum SystemInfoPropertyId { &quot;BATTERY&quot; , &quot;CPU&quot;, &quot;STORAGE&quot;, &quot;DISPLAY&quot;, &quot;DEVICE_ORIENTATION&quot;, &quot;BUILD&quot;, &quot;LOCALE&quot;, &quot;NETWORK&quot;, &quot;WIFI_NETWORK&quot;, &quot;CELLULAR_NETWORK&quot;, &quot;SIM&quot;, &quot;PERIPHERAL&quot; };</webidl>
47463       <descriptive>
47464           <brief>
47465  The device property identifier.
47466           </brief>
47467           <version>
47468  2.0
47469           </version>
47470           <remark>
47471  LOCALE and PERIPHERAL are supported Since 2.1
47472           </remark>
47473       </descriptive>
47474       <EnumValue stringvalue="BATTERY">
47475         <webidl> &quot;BATTERY</webidl>
47476       </EnumValue>
47477       <EnumValue stringvalue="CPU">
47478         <webidl> &quot;CPU</webidl>
47479       </EnumValue>
47480       <EnumValue stringvalue="STORAGE">
47481         <webidl> &quot;STORAGE</webidl>
47482       </EnumValue>
47483       <EnumValue stringvalue="DISPLAY">
47484         <webidl> &quot;DISPLAY</webidl>
47485       </EnumValue>
47486       <EnumValue stringvalue="DEVICE_ORIENTATION">
47487         <webidl> &quot;DEVICE_ORIENTATION</webidl>
47488       </EnumValue>
47489       <EnumValue stringvalue="BUILD">
47490         <webidl> &quot;BUILD</webidl>
47491       </EnumValue>
47492       <EnumValue stringvalue="LOCALE">
47493         <webidl> &quot;LOCALE</webidl>
47494       </EnumValue>
47495       <EnumValue stringvalue="NETWORK">
47496         <webidl> &quot;NETWORK</webidl>
47497       </EnumValue>
47498       <EnumValue stringvalue="WIFI_NETWORK">
47499         <webidl> &quot;WIFI_NETWORK</webidl>
47500       </EnumValue>
47501       <EnumValue stringvalue="CELLULAR_NETWORK">
47502         <webidl> &quot;CELLULAR_NETWORK</webidl>
47503       </EnumValue>
47504       <EnumValue stringvalue="SIM">
47505         <webidl> &quot;SIM</webidl>
47506       </EnumValue>
47507       <EnumValue stringvalue="PERIPHERAL">
47508         <webidl> &quot;PERIPHERAL</webidl>
47509       </EnumValue>
47510     </Enum>
47511     <Enum name="SystemInfoNetworkType" id="::SystemInfo::SystemInfoNetworkType">
47512       <webidl>  enum SystemInfoNetworkType { &quot;NONE&quot;, &quot;2G&quot;, &quot;2.5G&quot;, &quot;3G&quot;, &quot;4G&quot;, &quot;WIFI&quot;, &quot;ETHERNET&quot;, &quot;UNKNOWN&quot; };</webidl>
47513       <descriptive>
47514           <brief>
47515  Data Network Type.
47516           </brief>
47517           <version>
47518  2.0
47519           </version>
47520       </descriptive>
47521       <EnumValue stringvalue="NONE">
47522         <webidl> &quot;NONE</webidl>
47523       </EnumValue>
47524       <EnumValue stringvalue="2G">
47525         <webidl> &quot;2G</webidl>
47526       </EnumValue>
47527       <EnumValue stringvalue="2.5G">
47528         <webidl> &quot;2.5G</webidl>
47529       </EnumValue>
47530       <EnumValue stringvalue="3G">
47531         <webidl> &quot;3G</webidl>
47532       </EnumValue>
47533       <EnumValue stringvalue="4G">
47534         <webidl> &quot;4G</webidl>
47535       </EnumValue>
47536       <EnumValue stringvalue="WIFI">
47537         <webidl> &quot;WIFI</webidl>
47538       </EnumValue>
47539       <EnumValue stringvalue="ETHERNET">
47540         <webidl> &quot;ETHERNET</webidl>
47541       </EnumValue>
47542       <EnumValue stringvalue="UNKNOWN">
47543         <webidl> &quot;UNKNOWN</webidl>
47544       </EnumValue>
47545     </Enum>
47546     <Enum name="SystemInfoDeviceOrientationStatus" id="::SystemInfo::SystemInfoDeviceOrientationStatus">
47547       <webidl>  enum SystemInfoDeviceOrientationStatus { &quot;PORTRAIT_PRIMARY&quot;, &quot;PORTRAIT_SECONDARY&quot;, &quot;LANDSCAPE_PRIMARY&quot;, &quot;LANDSCAPE_SECONDARY&quot; };</webidl>
47548       <descriptive>
47549           <brief>
47550  Device Orientation Status.
47551           </brief>
47552           <version>
47553  2.0
47554           </version>
47555       </descriptive>
47556       <EnumValue stringvalue="PORTRAIT_PRIMARY">
47557         <webidl> &quot;PORTRAIT_PRIMARY</webidl>
47558       </EnumValue>
47559       <EnumValue stringvalue="PORTRAIT_SECONDARY">
47560         <webidl> &quot;PORTRAIT_SECONDARY</webidl>
47561       </EnumValue>
47562       <EnumValue stringvalue="LANDSCAPE_PRIMARY">
47563         <webidl> &quot;LANDSCAPE_PRIMARY</webidl>
47564       </EnumValue>
47565       <EnumValue stringvalue="LANDSCAPE_SECONDARY">
47566         <webidl> &quot;LANDSCAPE_SECONDARY</webidl>
47567       </EnumValue>
47568     </Enum>
47569     <Enum name="SystemInfoSimState" id="::SystemInfo::SystemInfoSimState">
47570       <webidl>  enum SystemInfoSimState { &quot;ABSENT&quot;, &quot;INITIALIZING&quot;, &quot;READY&quot;, &quot;PIN_REQUIRED&quot;, &quot;PUK_REQUIRED&quot;, &quot;NETWORK_LOCKED&quot;, &quot;SIM_LOCKED&quot;, &quot;UNKNOWN&quot; };</webidl>
47571       <descriptive>
47572           <brief>
47573  Sim State.
47574           </brief>
47575           <version>
47576  2.1
47577           </version>
47578       </descriptive>
47579       <EnumValue stringvalue="ABSENT">
47580         <webidl> &quot;ABSENT</webidl>
47581       </EnumValue>
47582       <EnumValue stringvalue="INITIALIZING">
47583         <webidl> &quot;INITIALIZING</webidl>
47584       </EnumValue>
47585       <EnumValue stringvalue="READY">
47586         <webidl> &quot;READY</webidl>
47587       </EnumValue>
47588       <EnumValue stringvalue="PIN_REQUIRED">
47589         <webidl> &quot;PIN_REQUIRED</webidl>
47590       </EnumValue>
47591       <EnumValue stringvalue="PUK_REQUIRED">
47592         <webidl> &quot;PUK_REQUIRED</webidl>
47593       </EnumValue>
47594       <EnumValue stringvalue="NETWORK_LOCKED">
47595         <webidl> &quot;NETWORK_LOCKED</webidl>
47596       </EnumValue>
47597       <EnumValue stringvalue="SIM_LOCKED">
47598         <webidl> &quot;SIM_LOCKED</webidl>
47599       </EnumValue>
47600       <EnumValue stringvalue="UNKNOWN">
47601         <webidl> &quot;UNKNOWN</webidl>
47602       </EnumValue>
47603     </Enum>
47604     <Enum name="SystemInfoProfile" id="::SystemInfo::SystemInfoProfile">
47605       <webidl>  enum SystemInfoProfile { &quot;MOBILE_FULL&quot;, &quot;MOBILE_WEB&quot; };</webidl>
47606       <descriptive>
47607           <brief>
47608  Device Profile.
47609           </brief>
47610           <version>
47611  2.2
47612           </version>
47613       </descriptive>
47614       <EnumValue stringvalue="MOBILE_FULL">
47615         <webidl> &quot;MOBILE_FULL</webidl>
47616       </EnumValue>
47617       <EnumValue stringvalue="MOBILE_WEB">
47618         <webidl> &quot;MOBILE_WEB</webidl>
47619       </EnumValue>
47620     </Enum>
47621     <Interface name="SystemInfoObject" id="::SystemInfo::SystemInfoObject">
47622       <webidl>  [NoInterfaceObject] interface SystemInfoObject {
47623     readonly attribute <ref>SystemInfo</ref> systeminfo;
47624   };</webidl>
47625       <descriptive>
47626           <brief>
47627  Defines what is instantiated by the <em>Tizen </em>object from the Tizen Platform.
47628           </brief>
47629          <description>
47630           <p>
47631 There will be a tizen.systeminfo object that allows accessing the
47632 functionality of the SystemInfo API.
47633           </p>
47634          </description>
47635           <version>
47636  1.0
47637           </version>
47638       </descriptive>
47639       <ExtendedAttributeList>
47640         <ExtendedAttribute name="NoInterfaceObject">
47641           <webidl>NoInterfaceObject</webidl>
47642         </ExtendedAttribute>
47643       </ExtendedAttributeList>
47644       <Attribute readonly="readonly" name="systeminfo" id="::SystemInfo::SystemInfoObject::systeminfo">
47645         <webidl>    readonly attribute <ref>SystemInfo</ref> systeminfo;</webidl>
47646         <Type name="SystemInfo"/>
47647       </Attribute>
47648     </Interface>
47649     <Implements name1="Tizen" name2="SystemInfoObject">
47650       <webidl>  <ref>Tizen</ref> implements <ref>SystemInfoObject</ref>;</webidl>
47651     </Implements>
47652     <Interface name="SystemInfo" id="::SystemInfo::SystemInfo">
47653       <webidl>  [NoInterfaceObject] interface SystemInfo {
47654
47655     <ref>SystemInfoDeviceCapability</ref> getCapabilities() raises(<ref>WebAPIException</ref>);
47656
47657     void getPropertyValue(<ref>SystemInfoPropertyId</ref> property,
47658                           <ref>SystemInfoPropertySuccessCallback</ref> successCallback,
47659                           optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
47660
47661     unsigned long addPropertyValueChangeListener(<ref>SystemInfoPropertyId</ref> property,
47662                                         <ref>SystemInfoPropertySuccessCallback</ref> successCallback,
47663                                         optional <ref>SystemInfoOptions</ref>? options) raises(<ref>WebAPIException</ref>);
47664
47665     void removePropertyValueChangeListener(unsigned long listenerId) raises(<ref>WebAPIException</ref>);
47666   };</webidl>
47667       <descriptive>
47668           <brief>
47669  This entry interface queries the information of a system.
47670           </brief>
47671          <description>
47672           <p>
47673 This API offers methods for retrieving system information
47674 and for subscribing notifications of system information changes.
47675           </p>
47676          </description>
47677       </descriptive>
47678       <ExtendedAttributeList>
47679         <ExtendedAttribute name="NoInterfaceObject">
47680           <webidl>NoInterfaceObject</webidl>
47681         </ExtendedAttribute>
47682       </ExtendedAttributeList>
47683       <Operation name="getCapabilities" id="::SystemInfo::SystemInfo::getCapabilities">
47684         <webidl>    <ref>SystemInfoDeviceCapability</ref> getCapabilities() raises(<ref>WebAPIException</ref>);</webidl>
47685         <descriptive>
47686             <brief>
47687  Gets the capabilities of the device. 
47688             </brief>
47689            <description>
47690             <p>
47691 The function must synchronously acquire the capabilities of the device. 
47692             </p>
47693            </description>
47694             <version>
47695  2.0
47696             </version>
47697             <Code> var deviceCapabilities;
47698  deviceCapabilities = tizen.systeminfo.getCapabilities();
47699  if (deviceCapabilities.bluetooth)
47700  {
47701      console.log(&quot;Bluetooth is supported&quot;);
47702  }
47703  </Code>
47704         </descriptive>
47705         <Type name="SystemInfoDeviceCapability"/>
47706         <ArgumentList/>
47707         <Raises>
47708           <RaiseException name="WebAPIException">
47709             <descriptive>
47710                 <description><p>
47711  with error type NotSupportedError, if this feature is not supported.
47712                 </p></description>
47713                 <description><p>
47714  with error type SecurityError, if this functionality is not allowed.
47715                 </p></description>
47716                 <description><p>
47717  with error type UnknownError in any other error case.
47718                 </p></description>
47719             </descriptive>
47720           </RaiseException>
47721         </Raises>
47722       </Operation>
47723       <Operation name="getPropertyValue" id="::SystemInfo::SystemInfo::getPropertyValue">
47724         <webidl>    void getPropertyValue(<ref>SystemInfoPropertyId</ref> property,
47725                           <ref>SystemInfoPropertySuccessCallback</ref> successCallback,
47726                           optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
47727         <descriptive>
47728             <brief>
47729  Gets the current value of a specified system property.
47730             </brief>
47731            <description>
47732             <p>
47733 The function must asynchronously acquire the current value of the requested property. If it is successful,
47734 the successCallback must be invoked with an object containing the information provided by the property.
47735             </p>
47736             <p>
47737 The <em>errorCallback() </em>can be launched with any of these error types:
47738             </p>
47739             <ul>
47740               <li>
47741 UnknownError - If any other error occurs.              </li>
47742             </ul>
47743            </description>
47744             <version>
47745  1.0
47746             </version>
47747             <Code> function onSuccessCallback(battery) {
47748      console.log(&quot;The battery level is &quot; + battery.level);
47749  }
47750
47751  function onErrorCallback(error) {
47752      console.log(&quot;An error occurred &quot; + error.message);
47753  }
47754
47755  tizen.systeminfo.getPropertyValue(&quot;BATTERY&quot;, onSuccessCallback, onErrorCallback);
47756  </Code>
47757         </descriptive>
47758         <Type type="void"/>
47759         <ArgumentList>
47760           <Argument name="property">
47761             <descriptive>
47762                 <description><p>
47763  The name of the property to retrieve.
47764                 </p></description>
47765             </descriptive>
47766             <Type name="SystemInfoPropertyId"/>
47767           </Argument>
47768           <Argument name="successCallback">
47769             <descriptive>
47770                 <description><p>
47771  Function called when the properties have been successfully retrieved.
47772                 </p></description>
47773             </descriptive>
47774             <Type name="SystemInfoPropertySuccessCallback"/>
47775           </Argument>
47776           <Argument optional="optional" name="errorCallback">
47777             <descriptive>
47778                 <description><p>
47779  Function called when an error occurred while retrieving the properties.
47780                 </p></description>
47781             </descriptive>
47782             <Type name="ErrorCallback" nullable="nullable"/>
47783           </Argument>
47784         </ArgumentList>
47785         <Raises>
47786           <RaiseException name="WebAPIException">
47787             <descriptive>
47788                 <description><p>
47789  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
47790                 </p></description>
47791                 <description><p>
47792  with error type SecurityError, if this functionality is not allowed.
47793                 </p></description>
47794                 <description><p>
47795  with error type UnknownError in any other error case.
47796                 </p></description>
47797             </descriptive>
47798           </RaiseException>
47799         </Raises>
47800       </Operation>
47801       <Operation name="addPropertyValueChangeListener" id="::SystemInfo::SystemInfo::addPropertyValueChangeListener">
47802         <webidl>    unsigned long addPropertyValueChangeListener(<ref>SystemInfoPropertyId</ref> property,
47803                                         <ref>SystemInfoPropertySuccessCallback</ref> successCallback,
47804                                         optional <ref>SystemInfoOptions</ref>? options) raises(<ref>WebAPIException</ref>);</webidl>
47805         <descriptive>
47806             <brief>
47807  Adds a listener to allow tracking of changes in one or more system properties.
47808             </brief>
47809            <description>
47810             <p>
47811 When called, it immediately returns and then asynchronously starts a watch process defined by the following steps:
47812             </p>
47813             <p>
47814 1. Register the successCallback to receive system events that the status of the requested properties may have changed.
47815             </p>
47816             <p>
47817 2. When a system event is successfully received invoke the associated successCallback with an object containing the property
47818 values.
47819             </p>
47820             <p>
47821 3. Repeat step 2 until removePropertyValueChangeListener function is called.
47822             </p>
47823             <p>
47824 If property value is 'BUILD', listener would not be registered because 'BUILD' property's value is a fixed value.
47825             </p>
47826            </description>
47827             <version>
47828  1.0
47829             </version>
47830             <Code> function onSuccessCallback(battery) {
47831      console.log(&quot;Low battery:  &quot; + battery.level);
47832  }
47833
47834
47835  tizen.systeminfo.addPropertyValueChangeListener(&quot;BATTERY&quot;, onSuccessCallback, {lowThreshold : 0.2});
47836  </Code>
47837         </descriptive>
47838         <Type type="unsigned long">
47839           <descriptive>
47840               <description><p>
47841  unsigned long An identifier used to clear the watch subscription.
47842               </p></description>
47843           </descriptive>
47844         </Type>
47845         <ArgumentList>
47846           <Argument name="property">
47847             <descriptive>
47848                 <description><p>
47849  The name of the property to retrieve.
47850                 </p></description>
47851             </descriptive>
47852             <Type name="SystemInfoPropertyId"/>
47853           </Argument>
47854           <Argument name="successCallback">
47855             <descriptive>
47856                 <description><p>
47857  Function called when the properties have been successfully retrieved.
47858                 </p></description>
47859             </descriptive>
47860             <Type name="SystemInfoPropertySuccessCallback"/>
47861           </Argument>
47862           <Argument optional="optional" name="options">
47863             <descriptive>
47864                 <description><p>
47865  An object containing the various options for fetching the properties requested.
47866                 </p></description>
47867             </descriptive>
47868             <Type name="SystemInfoOptions" nullable="nullable"/>
47869           </Argument>
47870         </ArgumentList>
47871         <Raises>
47872           <RaiseException name="WebAPIException">
47873             <descriptive>
47874                 <description><p>
47875  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
47876                 </p></description>
47877                 <description><p>
47878  with error type NotSupportedError, if this feature is not supported.
47879                 </p></description>
47880                 <description><p>
47881  with error type InvalidValuesError, if any of the input 
47882 parameters contain an invalid value.
47883                 </p></description>
47884                 <description><p>
47885  with error type SecurityError, if this functionality is not allowed.
47886                 </p></description>
47887                 <description><p>
47888  with error type UnknownError in any other error case.
47889                 </p></description>
47890             </descriptive>
47891           </RaiseException>
47892         </Raises>
47893       </Operation>
47894       <Operation name="removePropertyValueChangeListener" id="::SystemInfo::SystemInfo::removePropertyValueChangeListener">
47895         <webidl>    void removePropertyValueChangeListener(unsigned long listenerId) raises(<ref>WebAPIException</ref>);</webidl>
47896         <descriptive>
47897             <brief>
47898  Unsubscribes notifications for property changes set up by addPropertyValueChangeListener.
47899             </brief>
47900            <description>
47901             <p>
47902 If a valid listenerId argument is passed that corresponds to a subscription
47903 already place, then the watch process MUST immediately terminate and no further
47904 callback is invoked. If the listenerId argument does not correspond to a valid subscription,
47905 the method should return without any further action.
47906             </p>
47907            </description>
47908             <version>
47909  1.0
47910             </version>
47911             <Code> var id = null;
47912  function onSuccessCallback(battery) {
47913     console.log(&quot;New value for Battery level is &quot; + battery.level);
47914     if (id != null) { // After receiving the first notification, we clear it
47915         tizen.systeminfo.removePropertyValueChangeListener(id);
47916     }
47917  }
47918
47919  id = tizen.systeminfo.addPropertyValueChangeListener(&quot;BATTERY&quot;, onSuccessCallback);
47920  </Code>
47921         </descriptive>
47922         <Type type="void"/>
47923         <ArgumentList>
47924           <Argument name="listenerId">
47925             <descriptive>
47926                 <description><p>
47927  An identifier of the subscription returned by the addPropertyValueChangeListener() method.
47928                 </p></description>
47929             </descriptive>
47930             <Type type="unsigned long"/>
47931           </Argument>
47932         </ArgumentList>
47933         <Raises>
47934           <RaiseException name="WebAPIException">
47935             <descriptive>
47936                 <description><p>
47937  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
47938                 </p></description>
47939                 <description><p>
47940  with error type NotSupportedError, if this feature is not supported.
47941                 </p></description>
47942                 <description><p>
47943  with error type InvalidValuesError, if any of the input 
47944 parameters contain an invalid value.
47945                 </p></description>
47946                 <description><p>
47947  with error type SecurityError, if this functionality is not allowed.
47948                 </p></description>
47949                 <description><p>
47950  with error type UnknownError in any other error case.
47951                 </p></description>
47952             </descriptive>
47953           </RaiseException>
47954         </Raises>
47955       </Operation>
47956     </Interface>
47957     <Interface name="SystemInfoDeviceCapability" id="::SystemInfo::SystemInfoDeviceCapability">
47958       <webidl>  [NoInterfaceObject] interface SystemInfoDeviceCapability {
47959     readonly attribute boolean bluetooth;
47960
47961     readonly attribute boolean nfc;
47962
47963     readonly attribute boolean nfcReservedPush ;
47964
47965     readonly attribute unsigned short multiTouchCount;
47966
47967     readonly attribute boolean inputKeyboard;
47968
47969     readonly attribute boolean inputKeyboardLayout;
47970
47971     readonly attribute boolean wifi;
47972
47973     readonly attribute boolean wifiDirect;
47974
47975     readonly attribute boolean opengles;
47976
47977     readonly attribute DOMString openglestextureFormat;
47978
47979     readonly attribute boolean openglesVersion1_1;
47980
47981     readonly attribute boolean openglesVersion2_0;
47982
47983     readonly attribute boolean fmRadio;
47984
47985     readonly attribute DOMString platformVersion raises(<ref>WebAPIException</ref>);
47986
47987     readonly attribute DOMString webApiVersion raises(<ref>WebAPIException</ref>);
47988
47989     readonly attribute DOMString nativeApiVersion raises(<ref>WebAPIException</ref>);
47990
47991     readonly attribute DOMString platformName;
47992
47993     readonly attribute boolean camera;
47994
47995     readonly attribute boolean cameraFront;
47996
47997     readonly attribute boolean cameraFrontFlash;
47998
47999     readonly attribute boolean cameraBack;
48000
48001     readonly attribute boolean cameraBackFlash;
48002
48003     readonly attribute boolean location;
48004
48005     readonly attribute boolean locationGps;
48006
48007     readonly attribute boolean locationWps;
48008
48009     readonly attribute boolean microphone;
48010
48011     readonly attribute boolean usbHost;
48012
48013     readonly attribute boolean usbAccessory;
48014
48015     readonly attribute boolean screenOutputRca;
48016
48017     readonly attribute boolean screenOutputHdmi;
48018
48019     readonly attribute DOMString platformCoreCpuArch;
48020
48021     readonly attribute DOMString platformCoreFpuArch;
48022
48023     readonly attribute boolean sipVoip;
48024
48025     readonly attribute DOMString duid;
48026
48027     readonly attribute boolean speechRecognition;
48028
48029     readonly attribute boolean speechSynthesis;
48030
48031     readonly attribute boolean accelerometer;
48032
48033     readonly attribute boolean accelerometerWakeup;
48034
48035     readonly attribute boolean barometer;
48036
48037     readonly attribute boolean barometerWakeup;
48038
48039     readonly attribute boolean gyroscope;
48040
48041     readonly attribute boolean gyroscopeWakeup;
48042
48043     readonly attribute boolean magnetometer;
48044
48045     readonly attribute boolean magnetometerWakeup;
48046
48047     readonly attribute boolean photometer;
48048
48049     readonly attribute boolean photometerWakeup;
48050
48051     readonly attribute boolean proximity;
48052
48053     readonly attribute boolean proximityWakeup;
48054
48055     readonly attribute boolean tiltmeter;
48056
48057     readonly attribute boolean tiltmeterWakeup;
48058
48059     readonly attribute boolean dataEncryption;
48060
48061     readonly attribute boolean graphicsAcceleration;
48062
48063     readonly attribute boolean push;
48064
48065     readonly attribute boolean telephony;
48066
48067     readonly attribute boolean telephonyMms;
48068
48069     readonly attribute boolean telephonySms;
48070
48071     readonly attribute boolean screenSizeNormal;
48072
48073     readonly attribute boolean screenSize480_800;
48074
48075     readonly attribute boolean screenSize720_1280;
48076
48077     readonly attribute boolean autoRotation;
48078
48079     readonly attribute boolean shellAppWidget;
48080
48081     readonly attribute boolean visionImageRecognition;
48082
48083     readonly attribute boolean visionQrcodeGeneration;
48084
48085     readonly attribute boolean visionQrcodeRecognition;
48086
48087     readonly attribute boolean visionFaceRecognition;
48088
48089     readonly attribute boolean secureElement;
48090         
48091     readonly attribute boolean nativeOspCompatible;
48092
48093     readonly attribute <ref>SystemInfoProfile</ref> profile;
48094   };</webidl>
48095       <descriptive>
48096           <brief>
48097  SystemInfoDeviceCapability object.
48098           </brief>
48099           <version>
48100  2.0
48101           </version>
48102       </descriptive>
48103       <ExtendedAttributeList>
48104         <ExtendedAttribute name="NoInterfaceObject">
48105           <webidl>NoInterfaceObject</webidl>
48106         </ExtendedAttribute>
48107       </ExtendedAttributeList>
48108       <Attribute readonly="readonly" name="bluetooth" id="::SystemInfo::SystemInfoDeviceCapability::bluetooth">
48109         <webidl>    readonly attribute boolean bluetooth;</webidl>
48110         <descriptive>
48111             <brief>
48112  Indicates whether the device supports Bluetooth.
48113             </brief>
48114             <version>
48115  2.0
48116             </version>
48117         </descriptive>
48118         <Type type="boolean"/>
48119       </Attribute>
48120       <Attribute readonly="readonly" name="nfc" id="::SystemInfo::SystemInfoDeviceCapability::nfc">
48121         <webidl>    readonly attribute boolean nfc;</webidl>
48122         <descriptive>
48123             <brief>
48124  Indicates whether the device supports NFC.
48125             </brief>
48126             <version>
48127  2.0
48128             </version>
48129         </descriptive>
48130         <Type type="boolean"/>
48131       </Attribute>
48132       <Attribute readonly="readonly" name="nfcReservedPush" id="::SystemInfo::SystemInfoDeviceCapability::nfcReservedPush">
48133         <webidl>    readonly attribute boolean nfcReservedPush ;</webidl>
48134         <descriptive>
48135             <brief>
48136  Indicates whether the device supports NFC reserved push.
48137             </brief>
48138             <version>
48139  2.1
48140             </version>
48141         </descriptive>
48142         <Type type="boolean"/>
48143       </Attribute>
48144       <Attribute readonly="readonly" name="multiTouchCount" id="::SystemInfo::SystemInfoDeviceCapability::multiTouchCount">
48145         <webidl>    readonly attribute unsigned short multiTouchCount;</webidl>
48146         <descriptive>
48147             <brief>
48148  The number of point in Multi-point touch.
48149             </brief>
48150             <version>
48151  2.0
48152             </version>
48153         </descriptive>
48154         <Type type="unsigned short"/>
48155       </Attribute>
48156       <Attribute readonly="readonly" name="inputKeyboard" id="::SystemInfo::SystemInfoDeviceCapability::inputKeyboard">
48157         <webidl>    readonly attribute boolean inputKeyboard;</webidl>
48158         <descriptive>
48159             <brief>
48160  Indicates whether the device supports the built-in Keyboard.
48161             </brief>
48162             <version>
48163  2.0
48164             </version>
48165         </descriptive>
48166         <Type type="boolean"/>
48167       </Attribute>
48168       <Attribute readonly="readonly" name="inputKeyboardLayout" id="::SystemInfo::SystemInfoDeviceCapability::inputKeyboardLayout">
48169         <webidl>    readonly attribute boolean inputKeyboardLayout;</webidl>
48170         <descriptive>
48171             <brief>
48172  Indicates whether the device supports the built-in keyboard layout.
48173             </brief>
48174             <version>
48175  2.1
48176             </version>
48177         </descriptive>
48178         <Type type="boolean"/>
48179       </Attribute>
48180       <Attribute readonly="readonly" name="wifi" id="::SystemInfo::SystemInfoDeviceCapability::wifi">
48181         <webidl>    readonly attribute boolean wifi;</webidl>
48182         <descriptive>
48183             <brief>
48184  Indicates whether the device supports Wi-Fi.
48185             </brief>
48186             <version>
48187  2.0
48188             </version>
48189         </descriptive>
48190         <Type type="boolean"/>
48191       </Attribute>
48192       <Attribute readonly="readonly" name="wifiDirect" id="::SystemInfo::SystemInfoDeviceCapability::wifiDirect">
48193         <webidl>    readonly attribute boolean wifiDirect;</webidl>
48194         <descriptive>
48195             <brief>
48196  Indicates whether the device supports Wi-Fi direct.
48197             </brief>
48198             <version>
48199  2.0
48200             </version>
48201         </descriptive>
48202         <Type type="boolean"/>
48203       </Attribute>
48204       <Attribute readonly="readonly" name="opengles" id="::SystemInfo::SystemInfoDeviceCapability::opengles">
48205         <webidl>    readonly attribute boolean opengles;</webidl>
48206         <descriptive>
48207             <brief>
48208  Indicates whether the device supports OpenGL-ES.
48209             </brief>
48210             <version>
48211  2.1
48212             </version>
48213         </descriptive>
48214         <Type type="boolean"/>
48215       </Attribute>
48216       <Attribute readonly="readonly" name="openglestextureFormat" id="::SystemInfo::SystemInfoDeviceCapability::openglestextureFormat">
48217         <webidl>    readonly attribute DOMString openglestextureFormat;</webidl>
48218         <descriptive>
48219             <brief>
48220  The device 3DC texture format for OpenGL-ES.
48221 One example of possible output is as follows: &quot;3dc/atc/etc/ptc/pvrtc/utc&quot;
48222             </brief>
48223             <version>
48224  2.1
48225             </version>
48226         </descriptive>
48227         <Type type="DOMString"/>
48228       </Attribute>
48229       <Attribute readonly="readonly" name="openglesVersion1_1" id="::SystemInfo::SystemInfoDeviceCapability::openglesVersion1_1">
48230         <webidl>    readonly attribute boolean openglesVersion1_1;</webidl>
48231         <descriptive>
48232             <brief>
48233  Indicates whether the device supports OpenGL-ES version 1.1.
48234             </brief>
48235             <version>
48236  2.0
48237             </version>
48238         </descriptive>
48239         <Type type="boolean"/>
48240       </Attribute>
48241       <Attribute readonly="readonly" name="openglesVersion2_0" id="::SystemInfo::SystemInfoDeviceCapability::openglesVersion2_0">
48242         <webidl>    readonly attribute boolean openglesVersion2_0;</webidl>
48243         <descriptive>
48244             <brief>
48245  Indicates whether the device supports OpenGL-ES version 2.0.
48246             </brief>
48247             <version>
48248  2.0
48249             </version>
48250         </descriptive>
48251         <Type type="boolean"/>
48252       </Attribute>
48253       <Attribute readonly="readonly" name="fmRadio" id="::SystemInfo::SystemInfoDeviceCapability::fmRadio">
48254         <webidl>    readonly attribute boolean fmRadio;</webidl>
48255         <descriptive>
48256             <brief>
48257  Indicates whether the device supports FM radio.
48258             </brief>
48259             <version>
48260  2.0
48261             </version>
48262         </descriptive>
48263         <Type type="boolean"/>
48264       </Attribute>
48265       <Attribute readonly="readonly" name="platformVersion" id="::SystemInfo::SystemInfoDeviceCapability::platformVersion">
48266         <webidl>    readonly attribute DOMString platformVersion raises(<ref>WebAPIException</ref>);</webidl>
48267         <descriptive>
48268             <brief>
48269  The version of the platform in the <em>[Major].[Minor].[Patch Version] </em> format. <br/>For example, <var>1.0.0 </var> represents a platform version where the major version is <var>1 </var>and the minor and build versions are <var>0</var>.
48270             </brief>
48271             <version>
48272  2.0
48273             </version>
48274             <privilegelevel>
48275  public
48276             </privilegelevel>
48277             <privilege>
48278  http://tizen.org/privilege/system
48279             </privilege>
48280         </descriptive>
48281         <Type type="DOMString"/>
48282         <Raises>
48283           <RaiseException name="WebAPIException">
48284             <descriptive>
48285                 <description><p>
48286  with error type SecurityError, if this attribute is not allowed.        
48287                 </p></description>
48288             </descriptive>
48289           </RaiseException>
48290         </Raises>
48291       </Attribute>
48292       <Attribute readonly="readonly" name="webApiVersion" id="::SystemInfo::SystemInfoDeviceCapability::webApiVersion">
48293         <webidl>    readonly attribute DOMString webApiVersion raises(<ref>WebAPIException</ref>);</webidl>
48294         <descriptive>
48295             <brief>
48296  The version of the Web API in the <em>[Major].[Minor] </em> format. <br/>For example, <var>1.0 </var>represents a web api version where the major version is <var>1 </var> and the minor version is <var>0</var>.
48297             </brief>
48298             <version>
48299  2.1
48300             </version>
48301             <privilegelevel>
48302  public
48303             </privilegelevel>
48304             <privilege>
48305  http://tizen.org/privilege/system
48306             </privilege>
48307         </descriptive>
48308         <Type type="DOMString"/>
48309         <Raises>
48310           <RaiseException name="WebAPIException">
48311             <descriptive>
48312                 <description><p>
48313  with error type SecurityError, if this attribute is not allowed.
48314                 </p></description>
48315             </descriptive>
48316           </RaiseException>
48317         </Raises>
48318       </Attribute>
48319       <Attribute readonly="readonly" name="nativeApiVersion" id="::SystemInfo::SystemInfoDeviceCapability::nativeApiVersion">
48320         <webidl>    readonly attribute DOMString nativeApiVersion raises(<ref>WebAPIException</ref>);</webidl>
48321         <descriptive>
48322             <brief>
48323  The version of the native API in the <em>[Major].[Minor] </em>format.<br/>For example, <var>1.0</var> represents a native api version where the major version is <var>1 </var>and the minor version is <var>0</var>.
48324             </brief>
48325             <version>
48326  2.1
48327             </version>
48328             <privilegelevel>
48329  public
48330             </privilegelevel>
48331             <privilege>
48332  http://tizen.org/privilege/system
48333             </privilege>
48334         </descriptive>
48335         <Type type="DOMString"/>
48336         <Raises>
48337           <RaiseException name="WebAPIException">
48338             <descriptive>
48339                 <description><p>
48340  with error type SecurityError, if this attribute is not allowed.
48341                 </p></description>
48342             </descriptive>
48343           </RaiseException>
48344         </Raises>
48345       </Attribute>
48346       <Attribute readonly="readonly" name="platformName" id="::SystemInfo::SystemInfoDeviceCapability::platformName">
48347         <webidl>    readonly attribute DOMString platformName;</webidl>
48348         <descriptive>
48349             <brief>
48350  The name of the platform.
48351             </brief>
48352             <version>
48353  2.0
48354             </version>
48355         </descriptive>
48356         <Type type="DOMString"/>
48357       </Attribute>
48358       <Attribute readonly="readonly" name="camera" id="::SystemInfo::SystemInfoDeviceCapability::camera">
48359         <webidl>    readonly attribute boolean camera;</webidl>
48360         <descriptive>
48361             <brief>
48362  Indicates whether the device supports camera.
48363             </brief>
48364             <version>
48365  2.1
48366             </version>
48367         </descriptive>
48368         <Type type="boolean"/>
48369       </Attribute>
48370       <Attribute readonly="readonly" name="cameraFront" id="::SystemInfo::SystemInfoDeviceCapability::cameraFront">
48371         <webidl>    readonly attribute boolean cameraFront;</webidl>
48372         <descriptive>
48373             <brief>
48374  Indicates whether the device supports front camera.
48375             </brief>
48376             <version>
48377  2.0
48378             </version>
48379         </descriptive>
48380         <Type type="boolean"/>
48381       </Attribute>
48382       <Attribute readonly="readonly" name="cameraFrontFlash" id="::SystemInfo::SystemInfoDeviceCapability::cameraFrontFlash">
48383         <webidl>    readonly attribute boolean cameraFrontFlash;</webidl>
48384         <descriptive>
48385             <brief>
48386  Indicates whether the device supports flash on the front camera.
48387             </brief>
48388             <version>
48389  2.0
48390             </version>
48391         </descriptive>
48392         <Type type="boolean"/>
48393       </Attribute>
48394       <Attribute readonly="readonly" name="cameraBack" id="::SystemInfo::SystemInfoDeviceCapability::cameraBack">
48395         <webidl>    readonly attribute boolean cameraBack;</webidl>
48396         <descriptive>
48397             <brief>
48398  Indicates whether the device supports back-side camera.
48399             </brief>
48400             <version>
48401  2.0
48402             </version>
48403         </descriptive>
48404         <Type type="boolean"/>
48405       </Attribute>
48406       <Attribute readonly="readonly" name="cameraBackFlash" id="::SystemInfo::SystemInfoDeviceCapability::cameraBackFlash">
48407         <webidl>    readonly attribute boolean cameraBackFlash;</webidl>
48408         <descriptive>
48409             <brief>
48410  Indicates whether the device supports flash on the back-side camera.
48411             </brief>
48412             <version>
48413  2.0
48414             </version>
48415         </descriptive>
48416         <Type type="boolean"/>
48417       </Attribute>
48418       <Attribute readonly="readonly" name="location" id="::SystemInfo::SystemInfoDeviceCapability::location">
48419         <webidl>    readonly attribute boolean location;</webidl>
48420         <descriptive>
48421             <brief>
48422  Indicates whether the device supports CPS or not.
48423             </brief>
48424             <version>
48425  2.0
48426             </version>
48427         </descriptive>
48428         <Type type="boolean"/>
48429       </Attribute>
48430       <Attribute readonly="readonly" name="locationGps" id="::SystemInfo::SystemInfoDeviceCapability::locationGps">
48431         <webidl>    readonly attribute boolean locationGps;</webidl>
48432         <descriptive>
48433             <brief>
48434  Indicates whether the device supports GPS based location feature.
48435             </brief>
48436             <version>
48437  2.0
48438             </version>
48439         </descriptive>
48440         <Type type="boolean"/>
48441       </Attribute>
48442       <Attribute readonly="readonly" name="locationWps" id="::SystemInfo::SystemInfoDeviceCapability::locationWps">
48443         <webidl>    readonly attribute boolean locationWps;</webidl>
48444         <descriptive>
48445             <brief>
48446  Indicates whether the device supports WPS based location feature.
48447             </brief>
48448             <version>
48449  2.0
48450             </version>
48451         </descriptive>
48452         <Type type="boolean"/>
48453       </Attribute>
48454       <Attribute readonly="readonly" name="microphone" id="::SystemInfo::SystemInfoDeviceCapability::microphone">
48455         <webidl>    readonly attribute boolean microphone;</webidl>
48456         <descriptive>
48457             <brief>
48458  Indicates whether the device supports microphone.
48459             </brief>
48460             <version>
48461  2.0
48462             </version>
48463         </descriptive>
48464         <Type type="boolean"/>
48465       </Attribute>
48466       <Attribute readonly="readonly" name="usbHost" id="::SystemInfo::SystemInfoDeviceCapability::usbHost">
48467         <webidl>    readonly attribute boolean usbHost;</webidl>
48468         <descriptive>
48469             <brief>
48470  Indicates whether the device supports USB host.
48471             </brief>
48472             <version>
48473  2.0
48474             </version>
48475         </descriptive>
48476         <Type type="boolean"/>
48477       </Attribute>
48478       <Attribute readonly="readonly" name="usbAccessory" id="::SystemInfo::SystemInfoDeviceCapability::usbAccessory">
48479         <webidl>    readonly attribute boolean usbAccessory;</webidl>
48480         <descriptive>
48481             <brief>
48482  Indicates whether the device supports USB accessory.
48483             </brief>
48484             <version>
48485  2.0
48486             </version>
48487         </descriptive>
48488         <Type type="boolean"/>
48489       </Attribute>
48490       <Attribute readonly="readonly" name="screenOutputRca" id="::SystemInfo::SystemInfoDeviceCapability::screenOutputRca">
48491         <webidl>    readonly attribute boolean screenOutputRca;</webidl>
48492         <descriptive>
48493             <brief>
48494  Indicates whether the device supports RCA output.
48495             </brief>
48496             <version>
48497  2.0
48498             </version>
48499         </descriptive>
48500         <Type type="boolean"/>
48501       </Attribute>
48502       <Attribute readonly="readonly" name="screenOutputHdmi" id="::SystemInfo::SystemInfoDeviceCapability::screenOutputHdmi">
48503         <webidl>    readonly attribute boolean screenOutputHdmi;</webidl>
48504         <descriptive>
48505             <brief>
48506  Indicates whether the device supports HDMI output.
48507             </brief>
48508             <version>
48509  2.0
48510             </version>
48511         </descriptive>
48512         <Type type="boolean"/>
48513       </Attribute>
48514       <Attribute readonly="readonly" name="platformCoreCpuArch" id="::SystemInfo::SystemInfoDeviceCapability::platformCoreCpuArch">
48515         <webidl>    readonly attribute DOMString platformCoreCpuArch;</webidl>
48516         <descriptive>
48517             <brief>
48518  The device CPU architecture.
48519 The possible values for this attribute are: armv6, armv7, x86.
48520             </brief>
48521             <version>
48522  2.0
48523             </version>
48524         </descriptive>
48525         <Type type="DOMString"/>
48526       </Attribute>
48527       <Attribute readonly="readonly" name="platformCoreFpuArch" id="::SystemInfo::SystemInfoDeviceCapability::platformCoreFpuArch">
48528         <webidl>    readonly attribute DOMString platformCoreFpuArch;</webidl>
48529         <descriptive>
48530             <brief>
48531  The device FPU architecture.
48532 The possible values for this attribute are: vfpv3 / sse2 / sse3 / ssse3.
48533             </brief>
48534             <version>
48535  2.0
48536             </version>
48537         </descriptive>
48538         <Type type="DOMString"/>
48539       </Attribute>
48540       <Attribute readonly="readonly" name="sipVoip" id="::SystemInfo::SystemInfoDeviceCapability::sipVoip">
48541         <webidl>    readonly attribute boolean sipVoip;</webidl>
48542         <descriptive>
48543             <brief>
48544  Indicates whether the device supports VOIP.
48545             </brief>
48546             <version>
48547  2.0
48548             </version>
48549         </descriptive>
48550         <Type type="boolean"/>
48551       </Attribute>
48552       <Attribute readonly="readonly" name="duid" id="::SystemInfo::SystemInfoDeviceCapability::duid">
48553         <webidl>    readonly attribute DOMString duid;</webidl>
48554         <descriptive>
48555             <brief>
48556  The device unique ID.
48557             </brief>
48558             <version>
48559  2.0
48560             </version>
48561         </descriptive>
48562         <Type type="DOMString"/>
48563       </Attribute>
48564       <Attribute readonly="readonly" name="speechRecognition" id="::SystemInfo::SystemInfoDeviceCapability::speechRecognition">
48565         <webidl>    readonly attribute boolean speechRecognition;</webidl>
48566         <descriptive>
48567             <brief>
48568  Indicates whether the device supports speech recognition.
48569             </brief>
48570             <version>
48571  2.0
48572             </version>
48573         </descriptive>
48574         <Type type="boolean"/>
48575       </Attribute>
48576       <Attribute readonly="readonly" name="speechSynthesis" id="::SystemInfo::SystemInfoDeviceCapability::speechSynthesis">
48577         <webidl>    readonly attribute boolean speechSynthesis;</webidl>
48578         <descriptive>
48579             <brief>
48580  Indicates whether the device supports speech synthesis.
48581             </brief>
48582             <version>
48583  2.1
48584             </version>
48585         </descriptive>
48586         <Type type="boolean"/>
48587       </Attribute>
48588       <Attribute readonly="readonly" name="accelerometer" id="::SystemInfo::SystemInfoDeviceCapability::accelerometer">
48589         <webidl>    readonly attribute boolean accelerometer;</webidl>
48590         <descriptive>
48591             <brief>
48592  Indicates whether the device supports Accelerometer sensor.
48593             </brief>
48594             <version>
48595  2.0
48596             </version>
48597         </descriptive>
48598         <Type type="boolean"/>
48599       </Attribute>
48600       <Attribute readonly="readonly" name="accelerometerWakeup" id="::SystemInfo::SystemInfoDeviceCapability::accelerometerWakeup">
48601         <webidl>    readonly attribute boolean accelerometerWakeup;</webidl>
48602         <descriptive>
48603             <brief>
48604  Indicates whether the device supports Accelerometer sensor wake-up feature.
48605             </brief>
48606             <version>
48607  2.1
48608             </version>
48609         </descriptive>
48610         <Type type="boolean"/>
48611       </Attribute>
48612       <Attribute readonly="readonly" name="barometer" id="::SystemInfo::SystemInfoDeviceCapability::barometer">
48613         <webidl>    readonly attribute boolean barometer;</webidl>
48614         <descriptive>
48615             <brief>
48616  Indicates whether the device supports Barometer sensor.
48617             </brief>
48618             <version>
48619  2.0
48620             </version>
48621         </descriptive>
48622         <Type type="boolean"/>
48623       </Attribute>
48624       <Attribute readonly="readonly" name="barometerWakeup" id="::SystemInfo::SystemInfoDeviceCapability::barometerWakeup">
48625         <webidl>    readonly attribute boolean barometerWakeup;</webidl>
48626         <descriptive>
48627             <brief>
48628  Indicates whether the device supports Barometer sensor wake-up feature.
48629             </brief>
48630             <version>
48631  2.1
48632             </version>
48633         </descriptive>
48634         <Type type="boolean"/>
48635       </Attribute>
48636       <Attribute readonly="readonly" name="gyroscope" id="::SystemInfo::SystemInfoDeviceCapability::gyroscope">
48637         <webidl>    readonly attribute boolean gyroscope;</webidl>
48638         <descriptive>
48639             <brief>
48640  Indicates whether the device supports Gyroscope sensor.
48641             </brief>
48642             <version>
48643  2.0
48644             </version>
48645         </descriptive>
48646         <Type type="boolean"/>
48647       </Attribute>
48648       <Attribute readonly="readonly" name="gyroscopeWakeup" id="::SystemInfo::SystemInfoDeviceCapability::gyroscopeWakeup">
48649         <webidl>    readonly attribute boolean gyroscopeWakeup;</webidl>
48650         <descriptive>
48651             <brief>
48652  Indicates whether the device supports Gyroscope sensor wake-up feature.
48653             </brief>
48654             <version>
48655  2.1
48656             </version>
48657         </descriptive>
48658         <Type type="boolean"/>
48659       </Attribute>
48660       <Attribute readonly="readonly" name="magnetometer" id="::SystemInfo::SystemInfoDeviceCapability::magnetometer">
48661         <webidl>    readonly attribute boolean magnetometer;</webidl>
48662         <descriptive>
48663             <brief>
48664  Indicates whether the device supports Magnetometer sensor.
48665             </brief>
48666             <version>
48667  2.0
48668             </version>
48669         </descriptive>
48670         <Type type="boolean"/>
48671       </Attribute>
48672       <Attribute readonly="readonly" name="magnetometerWakeup" id="::SystemInfo::SystemInfoDeviceCapability::magnetometerWakeup">
48673         <webidl>    readonly attribute boolean magnetometerWakeup;</webidl>
48674         <descriptive>
48675             <brief>
48676  Indicates whether the device supports Magnetometer sensor wake-up feature.
48677             </brief>
48678             <version>
48679  2.1
48680             </version>
48681         </descriptive>
48682         <Type type="boolean"/>
48683       </Attribute>
48684       <Attribute readonly="readonly" name="photometer" id="::SystemInfo::SystemInfoDeviceCapability::photometer">
48685         <webidl>    readonly attribute boolean photometer;</webidl>
48686         <descriptive>
48687             <brief>
48688  Indicates whether the device supports Photometer sensor.
48689             </brief>
48690             <version>
48691  2.1
48692             </version>
48693         </descriptive>
48694         <Type type="boolean"/>
48695       </Attribute>
48696       <Attribute readonly="readonly" name="photometerWakeup" id="::SystemInfo::SystemInfoDeviceCapability::photometerWakeup">
48697         <webidl>    readonly attribute boolean photometerWakeup;</webidl>
48698         <descriptive>
48699             <brief>
48700  Indicates whether the device supports Photometer sensor wake-up feature.
48701             </brief>
48702             <version>
48703  2.1
48704             </version>
48705         </descriptive>
48706         <Type type="boolean"/>
48707       </Attribute>
48708       <Attribute readonly="readonly" name="proximity" id="::SystemInfo::SystemInfoDeviceCapability::proximity">
48709         <webidl>    readonly attribute boolean proximity;</webidl>
48710         <descriptive>
48711             <brief>
48712  Indicates whether the device supports Proximity sensor.
48713             </brief>
48714             <version>
48715  2.0
48716             </version>
48717         </descriptive>
48718         <Type type="boolean"/>
48719       </Attribute>
48720       <Attribute readonly="readonly" name="proximityWakeup" id="::SystemInfo::SystemInfoDeviceCapability::proximityWakeup">
48721         <webidl>    readonly attribute boolean proximityWakeup;</webidl>
48722         <descriptive>
48723             <brief>
48724  Indicates whether the device supports Proximity sensor wake-up feature.
48725             </brief>
48726             <version>
48727  2.1
48728             </version>
48729         </descriptive>
48730         <Type type="boolean"/>
48731       </Attribute>
48732       <Attribute readonly="readonly" name="tiltmeter" id="::SystemInfo::SystemInfoDeviceCapability::tiltmeter">
48733         <webidl>    readonly attribute boolean tiltmeter;</webidl>
48734         <descriptive>
48735             <brief>
48736  Indicates whether the device supports Tiltmeter sensor.
48737             </brief>
48738             <version>
48739  2.1
48740             </version>
48741         </descriptive>
48742         <Type type="boolean"/>
48743       </Attribute>
48744       <Attribute readonly="readonly" name="tiltmeterWakeup" id="::SystemInfo::SystemInfoDeviceCapability::tiltmeterWakeup">
48745         <webidl>    readonly attribute boolean tiltmeterWakeup;</webidl>
48746         <descriptive>
48747             <brief>
48748  Indicates whether the device supports Tiltmeter sensor wake-up feature.
48749             </brief>
48750             <version>
48751  2.1
48752             </version>
48753         </descriptive>
48754         <Type type="boolean"/>
48755       </Attribute>
48756       <Attribute readonly="readonly" name="dataEncryption" id="::SystemInfo::SystemInfoDeviceCapability::dataEncryption">
48757         <webidl>    readonly attribute boolean dataEncryption;</webidl>
48758         <descriptive>
48759             <brief>
48760  Indicates whether the device supports data encryption.
48761             </brief>
48762             <version>
48763  2.1
48764             </version>
48765         </descriptive>
48766         <Type type="boolean"/>
48767       </Attribute>
48768       <Attribute readonly="readonly" name="graphicsAcceleration" id="::SystemInfo::SystemInfoDeviceCapability::graphicsAcceleration">
48769         <webidl>    readonly attribute boolean graphicsAcceleration;</webidl>
48770         <descriptive>
48771             <brief>
48772  Indicates whether the device supports hardware acceleration for 2D/3D graphics.
48773             </brief>
48774             <version>
48775  2.1
48776             </version>
48777         </descriptive>
48778         <Type type="boolean"/>
48779       </Attribute>
48780       <Attribute readonly="readonly" name="push" id="::SystemInfo::SystemInfoDeviceCapability::push">
48781         <webidl>    readonly attribute boolean push;</webidl>
48782         <descriptive>
48783             <brief>
48784  Indicates whether the device supports push service.
48785             </brief>
48786             <version>
48787  2.1
48788             </version>
48789         </descriptive>
48790         <Type type="boolean"/>
48791       </Attribute>
48792       <Attribute readonly="readonly" name="telephony" id="::SystemInfo::SystemInfoDeviceCapability::telephony">
48793         <webidl>    readonly attribute boolean telephony;</webidl>
48794         <descriptive>
48795             <brief>
48796  Indicates whether the device supports the telephony feature.
48797             </brief>
48798             <version>
48799  2.1
48800             </version>
48801         </descriptive>
48802         <Type type="boolean"/>
48803       </Attribute>
48804       <Attribute readonly="readonly" name="telephonyMms" id="::SystemInfo::SystemInfoDeviceCapability::telephonyMms">
48805         <webidl>    readonly attribute boolean telephonyMms;</webidl>
48806         <descriptive>
48807             <brief>
48808  Indicates whether the device supports the mms feature.
48809             </brief>
48810             <version>
48811  2.1
48812             </version>
48813         </descriptive>
48814         <Type type="boolean"/>
48815       </Attribute>
48816       <Attribute readonly="readonly" name="telephonySms" id="::SystemInfo::SystemInfoDeviceCapability::telephonySms">
48817         <webidl>    readonly attribute boolean telephonySms;</webidl>
48818         <descriptive>
48819             <brief>
48820  Indicates whether the device supports the sms feature.
48821             </brief>
48822             <version>
48823  2.1
48824             </version>
48825         </descriptive>
48826         <Type type="boolean"/>
48827       </Attribute>
48828       <Attribute readonly="readonly" name="screenSizeNormal" id="::SystemInfo::SystemInfoDeviceCapability::screenSizeNormal">
48829         <webidl>    readonly attribute boolean screenSizeNormal;</webidl>
48830         <descriptive>
48831             <brief>
48832  Indicates whether the device supports the screen normal size.
48833             </brief>
48834             <version>
48835  2.1
48836             </version>
48837         </descriptive>
48838         <Type type="boolean"/>
48839       </Attribute>
48840       <Attribute readonly="readonly" name="screenSize480_800" id="::SystemInfo::SystemInfoDeviceCapability::screenSize480_800">
48841         <webidl>    readonly attribute boolean screenSize480_800;</webidl>
48842         <descriptive>
48843             <brief>
48844  Indicates whether the device supports the 480 * 800 screen size.
48845             </brief>
48846             <version>
48847  2.1
48848             </version>
48849         </descriptive>
48850         <Type type="boolean"/>
48851       </Attribute>
48852       <Attribute readonly="readonly" name="screenSize720_1280" id="::SystemInfo::SystemInfoDeviceCapability::screenSize720_1280">
48853         <webidl>    readonly attribute boolean screenSize720_1280;</webidl>
48854         <descriptive>
48855             <brief>
48856  Indicates whether the device supports the 720 * 1280 screen size.
48857             </brief>
48858             <version>
48859  2.1
48860             </version>
48861         </descriptive>
48862         <Type type="boolean"/>
48863       </Attribute>
48864       <Attribute readonly="readonly" name="autoRotation" id="::SystemInfo::SystemInfoDeviceCapability::autoRotation">
48865         <webidl>    readonly attribute boolean autoRotation;</webidl>
48866         <descriptive>
48867             <brief>
48868  Indicates whether the device supports auto rotation.
48869             </brief>
48870             <version>
48871  2.1
48872             </version>
48873         </descriptive>
48874         <Type type="boolean"/>
48875       </Attribute>
48876       <Attribute readonly="readonly" name="shellAppWidget" id="::SystemInfo::SystemInfoDeviceCapability::shellAppWidget">
48877         <webidl>    readonly attribute boolean shellAppWidget;</webidl>
48878         <descriptive>
48879             <brief>
48880  Indicates whether the device supports shell app widget.
48881             </brief>
48882             <version>
48883  2.1
48884             </version>
48885         </descriptive>
48886         <Type type="boolean"/>
48887       </Attribute>
48888       <Attribute readonly="readonly" name="visionImageRecognition" id="::SystemInfo::SystemInfoDeviceCapability::visionImageRecognition">
48889         <webidl>    readonly attribute boolean visionImageRecognition;</webidl>
48890         <descriptive>
48891             <brief>
48892  Indicates whether the device supports vision image recognition.
48893             </brief>
48894             <version>
48895  2.1
48896             </version>
48897         </descriptive>
48898         <Type type="boolean"/>
48899       </Attribute>
48900       <Attribute readonly="readonly" name="visionQrcodeGeneration" id="::SystemInfo::SystemInfoDeviceCapability::visionQrcodeGeneration">
48901         <webidl>    readonly attribute boolean visionQrcodeGeneration;</webidl>
48902         <descriptive>
48903             <brief>
48904  Indicates whether the device supports vision qrcode generation.
48905             </brief>
48906             <version>
48907  2.1
48908             </version>
48909         </descriptive>
48910         <Type type="boolean"/>
48911       </Attribute>
48912       <Attribute readonly="readonly" name="visionQrcodeRecognition" id="::SystemInfo::SystemInfoDeviceCapability::visionQrcodeRecognition">
48913         <webidl>    readonly attribute boolean visionQrcodeRecognition;</webidl>
48914         <descriptive>
48915             <brief>
48916  Indicates whether the device supports vision qrcode recognition.
48917             </brief>
48918             <version>
48919  2.1
48920             </version>
48921         </descriptive>
48922         <Type type="boolean"/>
48923       </Attribute>
48924       <Attribute readonly="readonly" name="visionFaceRecognition" id="::SystemInfo::SystemInfoDeviceCapability::visionFaceRecognition">
48925         <webidl>    readonly attribute boolean visionFaceRecognition;</webidl>
48926         <descriptive>
48927             <brief>
48928  Indicates whether the device supports vision face recognition.
48929             </brief>
48930             <version>
48931  2.1
48932             </version>
48933         </descriptive>
48934         <Type type="boolean"/>
48935       </Attribute>
48936       <Attribute readonly="readonly" name="secureElement" id="::SystemInfo::SystemInfoDeviceCapability::secureElement">
48937         <webidl>    readonly attribute boolean secureElement;</webidl>
48938         <descriptive>
48939             <brief>
48940  Indicates whether the device supports secure element.
48941             </brief>
48942             <version>
48943  2.1
48944             </version>
48945         </descriptive>
48946         <Type type="boolean"/>
48947       </Attribute>
48948       <Attribute readonly="readonly" name="nativeOspCompatible" id="::SystemInfo::SystemInfoDeviceCapability::nativeOspCompatible">
48949         <webidl>    readonly attribute boolean nativeOspCompatible;</webidl>
48950         <descriptive>
48951             <brief>
48952  Indicates whether the device supports native osp API.
48953             </brief>
48954             <version>
48955  2.1
48956             </version>
48957         </descriptive>
48958         <Type type="boolean"/>
48959       </Attribute>
48960       <Attribute readonly="readonly" name="profile" id="::SystemInfo::SystemInfoDeviceCapability::profile">
48961         <webidl>    readonly attribute <ref>SystemInfoProfile</ref> profile;</webidl>
48962         <descriptive>
48963             <brief>
48964  Represents the profile of the current device.
48965             </brief>
48966             <version>
48967  2.2
48968             </version>
48969         </descriptive>
48970         <Type name="SystemInfoProfile"/>
48971       </Attribute>
48972     </Interface>
48973     <Dictionary name="SystemInfoOptions" id="::SystemInfo::SystemInfoOptions">
48974       <webidl>  dictionary SystemInfoOptions {
48975     unsigned long timeout;
48976
48977     double highThreshold;
48978
48979     double lowThreshold;
48980   };</webidl>
48981       <descriptive>
48982           <brief>
48983  An object containing the various options for fetching the properties requested.
48984           </brief>
48985           <version>
48986  1.0
48987           </version>
48988       </descriptive>
48989       <DictionaryMember name="timeout" id="::SystemInfo::SystemInfoOptions::timeout">
48990         <webidl>    unsigned long timeout;</webidl>
48991         <descriptive>
48992             <brief>
48993  The number of milliseconds beyond which the operation must be interrupted.
48994             </brief>
48995             <version>
48996  1.0
48997             </version>
48998         </descriptive>
48999         <Type type="unsigned long"/>
49000       </DictionaryMember>
49001       <DictionaryMember name="highThreshold" id="::SystemInfo::SystemInfoOptions::highThreshold">
49002         <webidl>    double highThreshold;</webidl>
49003         <descriptive>
49004             <brief>
49005  An attribute to indicate that the <em>successCallback()</em> method in the watch 
49006 operation will be triggered only if the device property is a number and its value is greater than or equal to this number.
49007 This attribute has no effect on the <em>get()</em> method.
49008             </brief>
49009             <version>
49010  1.0
49011             </version>
49012         </descriptive>
49013         <Type type="double"/>
49014       </DictionaryMember>
49015       <DictionaryMember name="lowThreshold" id="::SystemInfo::SystemInfoOptions::lowThreshold">
49016         <webidl>    double lowThreshold;</webidl>
49017         <descriptive>
49018             <brief>
49019  An attribute to indicate that the <em>successCallback()</em> method in the watch operation must be triggered only if the property is a number and its value is lower than or equal to this number.
49020 If both <em>highThreshold </em>and <em>lowThreshold </em>parameters are specified, the <em>successCallback()</em> is triggered if and only if the property value is either lower than the value of <em>lowThreshold</em> or higher than the value of <em>highThreshold</em>.
49021 This attribute has no effect on the get method.
49022             </brief>
49023             <version>
49024  1.0
49025             </version>
49026         </descriptive>
49027         <Type type="double"/>
49028       </DictionaryMember>
49029     </Dictionary>
49030     <Interface name="SystemInfoPropertySuccessCallback" id="::SystemInfo::SystemInfoPropertySuccessCallback">
49031       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface SystemInfoPropertySuccessCallback {
49032     void onsuccess(<ref>SystemInfoProperty</ref> prop);
49033   };</webidl>
49034       <descriptive>
49035           <brief>
49036  Systemfinfo specific success callback.
49037           </brief>
49038          <description>
49039           <p>
49040 This callback interface specifies a success callback with SystemInfoProperty as input argument. 
49041 It is used in asynchronous
49042 operations, such as getPropertyValue() or addPropertyValueChangeListener()
49043           </p>
49044          </description>
49045           <version>
49046  1.0
49047           </version>
49048       </descriptive>
49049       <ExtendedAttributeList>
49050         <ExtendedAttribute name="Callback" value="FunctionOnly">
49051           <webidl>Callback</webidl>
49052         </ExtendedAttribute>
49053         <ExtendedAttribute name="NoInterfaceObject">
49054           <webidl> NoInterfaceObject</webidl>
49055         </ExtendedAttribute>
49056       </ExtendedAttributeList>
49057       <Operation name="onsuccess" id="::SystemInfo::SystemInfoPropertySuccessCallback::onsuccess">
49058         <webidl>    void onsuccess(<ref>SystemInfoProperty</ref> prop);</webidl>
49059         <descriptive>
49060             <brief>
49061  Method invoked when the asynchronous call completes successfully.
49062             </brief>
49063             <version>
49064  1.0
49065             </version>
49066         </descriptive>
49067         <Type type="void"/>
49068         <ArgumentList>
49069           <Argument name="prop">
49070             <descriptive>
49071                 <description><p>
49072  The property returned from a successful asynchronous operation.
49073                 </p></description>
49074             </descriptive>
49075             <Type name="SystemInfoProperty"/>
49076           </Argument>
49077         </ArgumentList>
49078       </Operation>
49079     </Interface>
49080     <Interface name="SystemInfoProperty" id="::SystemInfo::SystemInfoProperty">
49081       <webidl>  [NoInterfaceObject] interface SystemInfoProperty {
49082   };</webidl>
49083       <descriptive>
49084           <brief>
49085  This is a common abstract interface used by different types of system information objects.
49086           </brief>
49087           <version>
49088  1.0
49089           </version>
49090       </descriptive>
49091       <ExtendedAttributeList>
49092         <ExtendedAttribute name="NoInterfaceObject">
49093           <webidl>NoInterfaceObject</webidl>
49094         </ExtendedAttribute>
49095       </ExtendedAttributeList>
49096     </Interface>
49097     <Interface name="SystemInfoBattery" id="::SystemInfo::SystemInfoBattery">
49098       <webidl>  [NoInterfaceObject] interface SystemInfoBattery : <ref>SystemInfoProperty</ref> {
49099     readonly attribute double level;
49100
49101     readonly attribute boolean isCharging;
49102   };</webidl>
49103       <descriptive>
49104           <brief>
49105  This property reflects the general state of the system's battery
49106           </brief>
49107           <version>
49108  1.0
49109           </version>
49110       </descriptive>
49111       <ExtendedAttributeList>
49112         <ExtendedAttribute name="NoInterfaceObject">
49113           <webidl>NoInterfaceObject</webidl>
49114         </ExtendedAttribute>
49115       </ExtendedAttributeList>
49116       <InterfaceInheritance>
49117         <Name name="SystemInfoProperty"/>
49118       </InterfaceInheritance>
49119       <Attribute readonly="readonly" name="level" id="::SystemInfo::SystemInfoBattery::level">
49120         <webidl>    readonly attribute double level;</webidl>
49121         <descriptive>
49122             <brief>
49123  An attribute to specify the remaining level of an internal battery, scaled from <var>0 </var>to <var>1</var>:
49124             </brief>
49125            <description>
49126             <ul>
49127               <li>
49128 <var>0 </var>indicates that the battery level is the lowest and the system is about to enter shutdown mode.              </li>
49129               <li>
49130 <var>1 </var>indicates that the system's charge is maximum.              </li>
49131             </ul>
49132             <p>
49133 Any threshold parameter used in a watch operation to monitor this property applies to this attribute.
49134             </p>
49135            </description>
49136             <version>
49137  1.0
49138             </version>
49139         </descriptive>
49140         <Type type="double"/>
49141       </Attribute>
49142       <Attribute readonly="readonly" name="isCharging" id="::SystemInfo::SystemInfoBattery::isCharging">
49143         <webidl>    readonly attribute boolean isCharging;</webidl>
49144         <descriptive>
49145             <brief>
49146  Indicates whether the battery source is currently charging.
49147             </brief>
49148             <version>
49149  1.0
49150             </version>
49151         </descriptive>
49152         <Type type="boolean"/>
49153       </Attribute>
49154     </Interface>
49155     <Interface name="SystemInfoCpu" id="::SystemInfo::SystemInfoCpu">
49156       <webidl>  [NoInterfaceObject] interface SystemInfoCpu : <ref>SystemInfoProperty</ref> {
49157     readonly attribute double load;
49158   };</webidl>
49159       <descriptive>
49160           <brief>
49161  This property reflects the state of the CPUs available to this system.
49162           </brief>
49163           <version>
49164  1.0
49165           </version>
49166       </descriptive>
49167       <ExtendedAttributeList>
49168         <ExtendedAttribute name="NoInterfaceObject">
49169           <webidl>NoInterfaceObject</webidl>
49170         </ExtendedAttribute>
49171       </ExtendedAttributeList>
49172       <InterfaceInheritance>
49173         <Name name="SystemInfoProperty"/>
49174       </InterfaceInheritance>
49175       <Attribute readonly="readonly" name="load" id="::SystemInfo::SystemInfoCpu::load">
49176         <webidl>    readonly attribute double load;</webidl>
49177         <descriptive>
49178             <brief>
49179   An attribute to indicate the current CPU load, as a number between <var>0.0 </var>and <var>1.0</var>, representing the minimum and maximum values allowed on this system.
49180 Any threshold parameter used in a watch function to monitor this property applies to this attribute.
49181             </brief>
49182             <version>
49183  1.0
49184             </version>
49185         </descriptive>
49186         <Type type="double"/>
49187       </Attribute>
49188     </Interface>
49189     <Interface name="SystemInfoStorage" id="::SystemInfo::SystemInfoStorage">
49190       <webidl>  [NoInterfaceObject] interface SystemInfoStorage : <ref>SystemInfoProperty</ref> {
49191     readonly attribute <ref>SystemInfoStorageUnit</ref>[] units;
49192   };</webidl>
49193       <descriptive>
49194           <brief>
49195  This property exposes the data storage devices connected to this system.
49196           </brief>
49197           <version>
49198  1.0
49199           </version>
49200       </descriptive>
49201       <ExtendedAttributeList>
49202         <ExtendedAttribute name="NoInterfaceObject">
49203           <webidl>NoInterfaceObject</webidl>
49204         </ExtendedAttribute>
49205       </ExtendedAttributeList>
49206       <InterfaceInheritance>
49207         <Name name="SystemInfoProperty"/>
49208       </InterfaceInheritance>
49209       <Attribute readonly="readonly" name="units" id="::SystemInfo::SystemInfoStorage::units">
49210         <webidl>    readonly attribute <ref>SystemInfoStorageUnit</ref>[] units;</webidl>
49211         <descriptive>
49212             <brief>
49213  The array of storage units connected to this device.
49214             </brief>
49215             <version>
49216  1.0
49217             </version>
49218         </descriptive>
49219         <Type type="array">
49220           <Type name="SystemInfoStorageUnit"/>
49221         </Type>
49222       </Attribute>
49223     </Interface>
49224     <Interface name="SystemInfoStorageUnit" id="::SystemInfo::SystemInfoStorageUnit">
49225       <webidl>  [NoInterfaceObject] interface SystemInfoStorageUnit : <ref>SystemInfoProperty</ref> {
49226     readonly attribute DOMString type;
49227
49228     readonly attribute unsigned long long capacity;
49229
49230     readonly attribute unsigned long long availableCapacity;
49231
49232     readonly attribute boolean isRemovable;
49233
49234     readonly attribute boolean isRemoveable;
49235   };</webidl>
49236       <descriptive>
49237           <brief>
49238  This property exposes a single storage device connected to this system.
49239           </brief>
49240       </descriptive>
49241       <ExtendedAttributeList>
49242         <ExtendedAttribute name="NoInterfaceObject">
49243           <webidl>NoInterfaceObject</webidl>
49244         </ExtendedAttribute>
49245       </ExtendedAttributeList>
49246       <InterfaceInheritance>
49247         <Name name="SystemInfoProperty"/>
49248       </InterfaceInheritance>
49249       <Attribute readonly="readonly" name="type" id="::SystemInfo::SystemInfoStorageUnit::type">
49250         <webidl>    readonly attribute DOMString type;</webidl>
49251         <descriptive>
49252             <brief>
49253  The type of a storage device. The value is one of the constants defined for this type.
49254             </brief>
49255            <description>
49256             <p>
49257 The supported storage unit types are:
49258             </p>
49259             <ul>
49260               <li>
49261 UNKNOWN              </li>
49262               <li>
49263 INTERNAL               </li>
49264               <li>
49265 USB_HOST              </li>
49266               <li>
49267 MMC              </li>
49268         
49269
49270             </ul>
49271            </description>
49272             <version>
49273  1.0
49274             </version>
49275         </descriptive>
49276         <Type type="DOMString"/>
49277       </Attribute>
49278       <Attribute readonly="readonly" name="capacity" id="::SystemInfo::SystemInfoStorageUnit::capacity">
49279         <webidl>    readonly attribute unsigned long long capacity;</webidl>
49280         <descriptive>
49281             <brief>
49282  The amount of data that this device can hold, in bytes.
49283             </brief>
49284             <version>
49285  1.0
49286             </version>
49287         </descriptive>
49288         <Type type="unsigned long long"/>
49289       </Attribute>
49290       <Attribute readonly="readonly" name="availableCapacity" id="::SystemInfo::SystemInfoStorageUnit::availableCapacity">
49291         <webidl>    readonly attribute unsigned long long availableCapacity;</webidl>
49292         <descriptive>
49293             <brief>
49294  The amount of available data that this device can hold, in bytes.
49295             </brief>
49296             <version>
49297  1.0
49298             </version>
49299         </descriptive>
49300         <Type type="unsigned long long"/>
49301       </Attribute>
49302       <Attribute readonly="readonly" name="isRemovable" id="::SystemInfo::SystemInfoStorageUnit::isRemovable">
49303         <webidl>    readonly attribute boolean isRemovable;</webidl>
49304         <descriptive>
49305             <brief>
49306  An attribute to indicate whether a device can be removed or not.
49307             </brief>
49308            <description>
49309             <p>
49310 The following values are supported:
49311             </p>
49312             <ul>
49313               <li>
49314 <var>true </var> - If this storage unit can be removed from the system (such as an sdcard unplugged)              </li>
49315               <li>
49316 <var>false</var> - If this storage unit cannot be removed from the system              </li>
49317             </ul>
49318            </description>
49319             <version>
49320  2.1
49321             </version>
49322         </descriptive>
49323         <Type type="boolean"/>
49324       </Attribute>
49325       <Attribute readonly="readonly" name="isRemoveable" id="::SystemInfo::SystemInfoStorageUnit::isRemoveable">
49326         <webidl>    readonly attribute boolean isRemoveable;</webidl>
49327         <descriptive>
49328             <brief>
49329  true if this unit can be removed from the system (such as an sdcard unplugged), false otherwise.
49330             </brief>
49331             <version>
49332  1.0
49333             </version>
49334             <deprecated>
49335  A typographic error.
49336             </deprecated>
49337         </descriptive>
49338         <Type type="boolean"/>
49339       </Attribute>
49340     </Interface>
49341     <Interface name="SystemInfoDisplay" id="::SystemInfo::SystemInfoDisplay">
49342       <webidl>  [NoInterfaceObject] interface SystemInfoDisplay : <ref>SystemInfoProperty</ref> {
49343     readonly attribute unsigned long resolutionWidth;
49344
49345     readonly attribute unsigned long resolutionHeight;
49346
49347     readonly attribute unsigned long dotsPerInchWidth;
49348
49349     readonly attribute unsigned long dotsPerInchHeight;
49350
49351     readonly attribute double physicalWidth;
49352
49353     readonly attribute double physicalHeight;
49354
49355     readonly attribute double brightness;
49356   };</webidl>
49357       <descriptive>
49358           <brief>
49359  This property reflects the information of the Display.
49360           </brief>
49361           <version>
49362  1.0
49363           </version>
49364       </descriptive>
49365       <ExtendedAttributeList>
49366         <ExtendedAttribute name="NoInterfaceObject">
49367           <webidl>NoInterfaceObject</webidl>
49368         </ExtendedAttribute>
49369       </ExtendedAttributeList>
49370       <InterfaceInheritance>
49371         <Name name="SystemInfoProperty"/>
49372       </InterfaceInheritance>
49373       <Attribute readonly="readonly" name="resolutionWidth" id="::SystemInfo::SystemInfoDisplay::resolutionWidth">
49374         <webidl>    readonly attribute unsigned long resolutionWidth;</webidl>
49375         <descriptive>
49376             <brief>
49377  The total number of addressable pixels in the horizontal direction of a rectangular entity
49378 (such as Camera, Display, Image, Video, ...) when held in its default orientation.
49379             </brief>
49380             <version>
49381  1.0
49382             </version>
49383         </descriptive>
49384         <Type type="unsigned long"/>
49385       </Attribute>
49386       <Attribute readonly="readonly" name="resolutionHeight" id="::SystemInfo::SystemInfoDisplay::resolutionHeight">
49387         <webidl>    readonly attribute unsigned long resolutionHeight;</webidl>
49388         <descriptive>
49389             <brief>
49390  The total number of addressable pixels in the vertical direction of a rectangular element
49391 (such as Camera, Display, Image, Video, ...) when held in its default orientation.
49392             </brief>
49393             <version>
49394  1.0
49395             </version>
49396         </descriptive>
49397         <Type type="unsigned long"/>
49398       </Attribute>
49399       <Attribute readonly="readonly" name="dotsPerInchWidth" id="::SystemInfo::SystemInfoDisplay::dotsPerInchWidth">
49400         <webidl>    readonly attribute unsigned long dotsPerInchWidth;</webidl>
49401         <descriptive>
49402             <brief>
49403  Resolution of this device, along its width, in dots per inch.
49404             </brief>
49405             <version>
49406  1.0
49407             </version>
49408         </descriptive>
49409         <Type type="unsigned long"/>
49410       </Attribute>
49411       <Attribute readonly="readonly" name="dotsPerInchHeight" id="::SystemInfo::SystemInfoDisplay::dotsPerInchHeight">
49412         <webidl>    readonly attribute unsigned long dotsPerInchHeight;</webidl>
49413         <descriptive>
49414             <brief>
49415  Resolution of this device, along its height, in dots per inch.
49416             </brief>
49417             <version>
49418  1.0
49419             </version>
49420         </descriptive>
49421         <Type type="unsigned long"/>
49422       </Attribute>
49423       <Attribute readonly="readonly" name="physicalWidth" id="::SystemInfo::SystemInfoDisplay::physicalWidth">
49424         <webidl>    readonly attribute double physicalWidth;</webidl>
49425         <descriptive>
49426             <brief>
49427  The display's physical width in millimeters.
49428             </brief>
49429             <version>
49430  1.0
49431             </version>
49432         </descriptive>
49433         <Type type="double"/>
49434       </Attribute>
49435       <Attribute readonly="readonly" name="physicalHeight" id="::SystemInfo::SystemInfoDisplay::physicalHeight">
49436         <webidl>    readonly attribute double physicalHeight;</webidl>
49437         <descriptive>
49438             <brief>
49439  The display's physical height in millimeters.
49440             </brief>
49441             <version>
49442  1.0
49443             </version>
49444         </descriptive>
49445         <Type type="double"/>
49446       </Attribute>
49447       <Attribute readonly="readonly" name="brightness" id="::SystemInfo::SystemInfoDisplay::brightness">
49448         <webidl>    readonly attribute double brightness;</webidl>
49449         <descriptive>
49450             <brief>
49451  The current brightness of a display ranging between <var>0 </var>to <var>1</var>.
49452             </brief>
49453             <version>
49454  1.0
49455             </version>
49456         </descriptive>
49457         <Type type="double"/>
49458       </Attribute>
49459     </Interface>
49460     <Interface name="SystemInfoDeviceOrientation" id="::SystemInfo::SystemInfoDeviceOrientation">
49461       <webidl>  [NoInterfaceObject] interface SystemInfoDeviceOrientation : <ref>SystemInfoProperty</ref> {
49462
49463     readonly attribute <ref>SystemInfoDeviceOrientationStatus</ref> status;
49464     readonly attribute boolean isAutoRotation;
49465   };</webidl>
49466       <descriptive>
49467           <brief>
49468  This property reflects the information of the device orientation in this system.
49469           </brief>
49470           <version>
49471  2.0
49472           </version>
49473       </descriptive>
49474       <ExtendedAttributeList>
49475         <ExtendedAttribute name="NoInterfaceObject">
49476           <webidl>NoInterfaceObject</webidl>
49477         </ExtendedAttribute>
49478       </ExtendedAttributeList>
49479       <InterfaceInheritance>
49480         <Name name="SystemInfoProperty"/>
49481       </InterfaceInheritance>
49482       <Attribute readonly="readonly" name="status" id="::SystemInfo::SystemInfoDeviceOrientation::status">
49483         <webidl>    readonly attribute <ref>SystemInfoDeviceOrientationStatus</ref> status;</webidl>
49484         <descriptive>
49485             <brief>
49486  Represents the status of the current device orientation.
49487             </brief>
49488             <version>
49489  2.0
49490             </version>
49491         </descriptive>
49492         <Type name="SystemInfoDeviceOrientationStatus"/>
49493       </Attribute>
49494       <Attribute readonly="readonly" name="isAutoRotation" id="::SystemInfo::SystemInfoDeviceOrientation::isAutoRotation">
49495         <webidl>    readonly attribute boolean isAutoRotation;</webidl>
49496         <descriptive>
49497             <brief>
49498  whether the device is in autorotation.
49499             </brief>
49500             <version>
49501  2.2
49502             </version>
49503         </descriptive>
49504         <Type type="boolean"/>
49505       </Attribute>
49506     </Interface>
49507     <Interface name="SystemInfoBuild" id="::SystemInfo::SystemInfoBuild">
49508       <webidl>  [NoInterfaceObject] interface SystemInfoBuild : <ref>SystemInfoProperty</ref> {
49509
49510     readonly attribute DOMString model;
49511     readonly attribute DOMString manufacturer;
49512     readonly attribute DOMString buildVersion;
49513   };</webidl>
49514       <descriptive>
49515           <brief>
49516  This property reflects the information of the current device.
49517           </brief>
49518           <version>
49519  2.0
49520           </version>
49521       </descriptive>
49522       <ExtendedAttributeList>
49523         <ExtendedAttribute name="NoInterfaceObject">
49524           <webidl>NoInterfaceObject</webidl>
49525         </ExtendedAttribute>
49526       </ExtendedAttributeList>
49527       <InterfaceInheritance>
49528         <Name name="SystemInfoProperty"/>
49529       </InterfaceInheritance>
49530       <Attribute readonly="readonly" name="model" id="::SystemInfo::SystemInfoBuild::model">
49531         <webidl>    readonly attribute DOMString model;</webidl>
49532         <descriptive>
49533             <brief>
49534  Represents the model name of the current device.
49535             </brief>
49536             <version>
49537  2.0
49538             </version>
49539         </descriptive>
49540         <Type type="DOMString"/>
49541       </Attribute>
49542       <Attribute readonly="readonly" name="manufacturer" id="::SystemInfo::SystemInfoBuild::manufacturer">
49543         <webidl>    readonly attribute DOMString manufacturer;</webidl>
49544         <descriptive>
49545             <brief>
49546  Represents the manufacturer of the device.
49547             </brief>
49548             <version>
49549  2.1
49550             </version>
49551         </descriptive>
49552         <Type type="DOMString"/>
49553       </Attribute>
49554       <Attribute readonly="readonly" name="buildVersion" id="::SystemInfo::SystemInfoBuild::buildVersion">
49555         <webidl>    readonly attribute DOMString buildVersion;</webidl>
49556         <descriptive>
49557             <brief>
49558  Represents the build version information of the device.
49559             </brief>
49560             <version>
49561  2.2
49562             </version>
49563         </descriptive>
49564         <Type type="DOMString"/>
49565       </Attribute>
49566     </Interface>
49567     <Interface name="SystemInfoLocale" id="::SystemInfo::SystemInfoLocale">
49568       <webidl>  [NoInterfaceObject] interface SystemInfoLocale : <ref>SystemInfoProperty</ref> {
49569
49570     readonly attribute DOMString language;
49571
49572     readonly attribute DOMString country;
49573   };</webidl>
49574       <descriptive>
49575           <brief>
49576  This property reflects the locale information of the current device.
49577           </brief>
49578           <version>
49579  2.1
49580           </version>
49581       </descriptive>
49582       <ExtendedAttributeList>
49583         <ExtendedAttribute name="NoInterfaceObject">
49584           <webidl>NoInterfaceObject</webidl>
49585         </ExtendedAttribute>
49586       </ExtendedAttributeList>
49587       <InterfaceInheritance>
49588         <Name name="SystemInfoProperty"/>
49589       </InterfaceInheritance>
49590       <Attribute readonly="readonly" name="language" id="::SystemInfo::SystemInfoLocale::language">
49591         <webidl>    readonly attribute DOMString language;</webidl>
49592         <descriptive>
49593             <brief>
49594  Indicates the current language setting in the (LANGUAGE)_(REGION) syntax.
49595 The language setting is in the ISO 630-2 format and the region setting is in the ISO 3166-1 format. 
49596 The language setting is case-sensitive.
49597             </brief>
49598             <version>
49599  2.1
49600             </version>
49601         </descriptive>
49602         <Type type="DOMString"/>
49603       </Attribute>
49604       <Attribute readonly="readonly" name="country" id="::SystemInfo::SystemInfoLocale::country">
49605         <webidl>    readonly attribute DOMString country;</webidl>
49606         <descriptive>
49607             <brief>
49608  Indicates the current country setting in the (LANGUAGE)_(REGION) syntax.
49609 The language setting is in the ISO 630-2 format and the region setting is in the ISO 3166-1 format.
49610 The country setting is case-sensitive.
49611             </brief>
49612             <version>
49613  2.1
49614             </version>
49615         </descriptive>
49616         <Type type="DOMString"/>
49617       </Attribute>
49618     </Interface>
49619     <Interface name="SystemInfoNetwork" id="::SystemInfo::SystemInfoNetwork">
49620       <webidl>  [NoInterfaceObject] interface SystemInfoNetwork : <ref>SystemInfoProperty</ref> {    
49621
49622     readonly attribute <ref>SystemInfoNetworkType</ref> networkType;    
49623   };</webidl>
49624       <descriptive>
49625           <brief>
49626  This property reflects the information of the data network in this system.    
49627           </brief>
49628           <version>
49629  2.0    
49630           </version>
49631       </descriptive>
49632       <ExtendedAttributeList>
49633         <ExtendedAttribute name="NoInterfaceObject">
49634           <webidl>NoInterfaceObject</webidl>
49635         </ExtendedAttribute>
49636       </ExtendedAttributeList>
49637       <InterfaceInheritance>
49638         <Name name="SystemInfoProperty"/>
49639       </InterfaceInheritance>
49640       <Attribute readonly="readonly" name="networkType" id="::SystemInfo::SystemInfoNetwork::networkType">
49641         <webidl>    readonly attribute <ref>SystemInfoNetworkType</ref> networkType;</webidl>
49642         <descriptive>
49643             <brief>
49644  Represents the network type of the current data network.    
49645             </brief>
49646             <version>
49647  2.0    
49648             </version>
49649         </descriptive>
49650         <Type name="SystemInfoNetworkType"/>
49651       </Attribute>
49652     </Interface>
49653     <Interface name="SystemInfoWifiNetwork" id="::SystemInfo::SystemInfoWifiNetwork">
49654       <webidl>   [NoInterfaceObject] interface SystemInfoWifiNetwork : <ref>SystemInfoProperty</ref> {    
49655
49656     readonly attribute DOMString status;    
49657     readonly attribute DOMString ssid;    
49658     readonly attribute DOMString ipAddress;    
49659      readonly attribute DOMString ipv6Address;    
49660     readonly attribute double signalStrength;    
49661   };</webidl>
49662       <descriptive>
49663           <brief>
49664  This property reflects the information of the Wi-Fi network in this system.    
49665           </brief>
49666           <version>
49667  1.0    
49668           </version>
49669       </descriptive>
49670       <ExtendedAttributeList>
49671         <ExtendedAttribute name="NoInterfaceObject">
49672           <webidl>NoInterfaceObject</webidl>
49673         </ExtendedAttribute>
49674       </ExtendedAttributeList>
49675       <InterfaceInheritance>
49676         <Name name="SystemInfoProperty"/>
49677       </InterfaceInheritance>
49678       <Attribute readonly="readonly" name="status" id="::SystemInfo::SystemInfoWifiNetwork::status">
49679         <webidl>    readonly attribute DOMString status;</webidl>
49680         <descriptive>
49681             <brief>
49682  Represents the status (ON or OFF) of the Wi-Fi interface.    
49683             </brief>
49684             <version>
49685  1.0    
49686             </version>
49687         </descriptive>
49688         <Type type="DOMString"/>
49689       </Attribute>
49690       <Attribute readonly="readonly" name="ssid" id="::SystemInfo::SystemInfoWifiNetwork::ssid">
49691         <webidl>    readonly attribute DOMString ssid;</webidl>
49692         <descriptive>
49693             <brief>
49694  Represents the SSID of a Wi-Fi network.    
49695             </brief>
49696             <version>
49697  1.0    
49698             </version>
49699         </descriptive>
49700         <Type type="DOMString"/>
49701       </Attribute>
49702       <Attribute readonly="readonly" name="ipAddress" id="::SystemInfo::SystemInfoWifiNetwork::ipAddress">
49703         <webidl>    readonly attribute DOMString ipAddress;</webidl>
49704         <descriptive>
49705             <brief>
49706  Represents the IPv4 address of Wi-Fi network.    
49707             </brief>
49708             <version>
49709  1.0    
49710             </version>
49711         </descriptive>
49712         <Type type="DOMString"/>
49713       </Attribute>
49714       <Attribute readonly="readonly" name="ipv6Address" id="::SystemInfo::SystemInfoWifiNetwork::ipv6Address">
49715         <webidl>     readonly attribute DOMString ipv6Address;</webidl>
49716         <descriptive>
49717             <brief>
49718  Represents the IPv6 address of Wi-Fi network.    
49719             </brief>
49720             <version>
49721  2.0    
49722             </version>
49723         </descriptive>
49724         <Type type="DOMString"/>
49725       </Attribute>
49726       <Attribute readonly="readonly" name="signalStrength" id="::SystemInfo::SystemInfoWifiNetwork::signalStrength">
49727         <webidl>    readonly attribute double signalStrength;</webidl>
49728         <descriptive>
49729             <brief>
49730  This connection's signal strength, as a normalized value between 0 (no signal detected) and 1 (the level is at its maximum value).    
49731             </brief>
49732             <version>
49733  1.0    
49734             </version>
49735         </descriptive>
49736         <Type type="double"/>
49737       </Attribute>
49738     </Interface>
49739     <Interface name="SystemInfoCellularNetwork" id="::SystemInfo::SystemInfoCellularNetwork">
49740       <webidl>  [NoInterfaceObject] interface SystemInfoCellularNetwork : <ref>SystemInfoProperty</ref> {    
49741
49742     readonly attribute DOMString status;    
49743     readonly attribute DOMString apn;    
49744     readonly attribute DOMString ipAddress;    
49745     readonly attribute DOMString ipv6Address;    
49746     readonly attribute unsigned short mcc;    
49747     readonly attribute unsigned short mnc;    
49748     readonly attribute unsigned short cellId;    
49749     readonly attribute unsigned short lac;    
49750     readonly attribute boolean isRoaming;
49751     readonly attribute boolean isFlightMode;
49752     readonly attribute DOMString imei raises(<ref>WebAPIException</ref>);
49753   };</webidl>
49754       <descriptive>
49755           <brief>
49756  This property reflects the information of the Cellular network in this system.    
49757           </brief>
49758           <version>
49759  1.0    
49760           </version>
49761       </descriptive>
49762       <ExtendedAttributeList>
49763         <ExtendedAttribute name="NoInterfaceObject">
49764           <webidl>NoInterfaceObject</webidl>
49765         </ExtendedAttribute>
49766       </ExtendedAttributeList>
49767       <InterfaceInheritance>
49768         <Name name="SystemInfoProperty"/>
49769       </InterfaceInheritance>
49770       <Attribute readonly="readonly" name="status" id="::SystemInfo::SystemInfoCellularNetwork::status">
49771         <webidl>    readonly attribute DOMString status;</webidl>
49772         <descriptive>
49773             <brief>
49774  Represents the status (ON or OFF) of the cellular network.    
49775             </brief>
49776             <version>
49777  1.0    
49778             </version>
49779         </descriptive>
49780         <Type type="DOMString"/>
49781       </Attribute>
49782       <Attribute readonly="readonly" name="apn" id="::SystemInfo::SystemInfoCellularNetwork::apn">
49783         <webidl>    readonly attribute DOMString apn;</webidl>
49784         <descriptive>
49785             <brief>
49786  Represents an Access Point Name of the cellular network.    
49787             </brief>
49788             <version>
49789  1.0    
49790             </version>
49791         </descriptive>
49792         <Type type="DOMString"/>
49793       </Attribute>
49794       <Attribute readonly="readonly" name="ipAddress" id="::SystemInfo::SystemInfoCellularNetwork::ipAddress">
49795         <webidl>    readonly attribute DOMString ipAddress;</webidl>
49796         <descriptive>
49797             <brief>
49798  Represents the IPv4 address of the cellular network.    
49799             </brief>
49800             <version>
49801  1.0    
49802             </version>
49803         </descriptive>
49804         <Type type="DOMString"/>
49805       </Attribute>
49806       <Attribute readonly="readonly" name="ipv6Address" id="::SystemInfo::SystemInfoCellularNetwork::ipv6Address">
49807         <webidl>    readonly attribute DOMString ipv6Address;</webidl>
49808         <descriptive>
49809             <brief>
49810  Represents the IPv6 address of the cellular network.    
49811             </brief>
49812             <version>
49813  2.0    
49814             </version>
49815         </descriptive>
49816         <Type type="DOMString"/>
49817       </Attribute>
49818       <Attribute readonly="readonly" name="mcc" id="::SystemInfo::SystemInfoCellularNetwork::mcc">
49819         <webidl>    readonly attribute unsigned short mcc;</webidl>
49820         <descriptive>
49821             <brief>
49822  Represents Mobile Country Code (MCC) of the cellular network.    
49823             </brief>
49824             <version>
49825  1.0    
49826             </version>
49827         </descriptive>
49828         <Type type="unsigned short"/>
49829       </Attribute>
49830       <Attribute readonly="readonly" name="mnc" id="::SystemInfo::SystemInfoCellularNetwork::mnc">
49831         <webidl>    readonly attribute unsigned short mnc;</webidl>
49832         <descriptive>
49833             <brief>
49834  Represents Mobile Network Code (MNC) of the cellular network. MNC is used in combination with MCC (also known as a &quot;MCC / MNC tuple&quot;) to uniquely    
49835 identify a mobile phone operator/carrier using the GSM, CDMA, iDEN, TETRA and UMTS public land mobile networks and some satellite mobile networks.    
49836             </brief>
49837             <version>
49838  1.0    
49839             </version>
49840         </descriptive>
49841         <Type type="unsigned short"/>
49842       </Attribute>
49843       <Attribute readonly="readonly" name="cellId" id="::SystemInfo::SystemInfoCellularNetwork::cellId">
49844         <webidl>    readonly attribute unsigned short cellId;</webidl>
49845         <descriptive>
49846             <brief>
49847  Represents Cell Id.    
49848             </brief>
49849             <version>
49850  1.0    
49851             </version>
49852         </descriptive>
49853         <Type type="unsigned short"/>
49854       </Attribute>
49855       <Attribute readonly="readonly" name="lac" id="::SystemInfo::SystemInfoCellularNetwork::lac">
49856         <webidl>    readonly attribute unsigned short lac;</webidl>
49857         <descriptive>
49858             <brief>
49859  Represents Location Area Code.    
49860             </brief>
49861             <version>
49862  1.0    
49863             </version>
49864         </descriptive>
49865         <Type type="unsigned short"/>
49866       </Attribute>
49867       <Attribute readonly="readonly" name="isRoaming" id="::SystemInfo::SystemInfoCellularNetwork::isRoaming">
49868         <webidl>    readonly attribute boolean isRoaming;</webidl>
49869         <descriptive>
49870             <brief>
49871  Whether the connection is set up while the device is roaming.    
49872             </brief>
49873             <version>
49874  1.0    
49875             </version>
49876         </descriptive>
49877         <Type type="boolean"/>
49878       </Attribute>
49879       <Attribute readonly="readonly" name="isFlightMode" id="::SystemInfo::SystemInfoCellularNetwork::isFlightMode">
49880         <webidl>    readonly attribute boolean isFlightMode;</webidl>
49881         <descriptive>
49882             <brief>
49883  Indicates whether the device is in flight mode.
49884             </brief>
49885             <version>
49886  2.1
49887             </version>
49888         </descriptive>
49889         <Type type="boolean"/>
49890       </Attribute>
49891       <Attribute readonly="readonly" name="imei" id="::SystemInfo::SystemInfoCellularNetwork::imei">
49892         <webidl>    readonly attribute DOMString imei raises(<ref>WebAPIException</ref>);</webidl>
49893         <descriptive>
49894             <brief>
49895  Represents the International Mobile Equipment Identity (IMEI).
49896             </brief>
49897             <version>
49898  2.1
49899             </version>
49900             <privilegelevel>
49901  partner
49902             </privilegelevel>
49903             <privilege>
49904  http://tizen.org/privilege/systemmanager
49905             </privilege>
49906         </descriptive>
49907         <Type type="DOMString"/>
49908         <Raises>
49909           <RaiseException name="WebAPIException">
49910             <descriptive>
49911                 <description><p>
49912  with error type SecurityError, if this attribute is not allowed.
49913                 </p></description>
49914             </descriptive>
49915           </RaiseException>
49916         </Raises>
49917       </Attribute>
49918     </Interface>
49919     <Interface name="SystemInfoSIM" id="::SystemInfo::SystemInfoSIM">
49920       <webidl>  [NoInterfaceObject] interface SystemInfoSIM : <ref>SystemInfoProperty</ref> {
49921     readonly attribute <ref>SystemInfoSimState</ref> state raises(<ref>WebAPIException</ref>);
49922     readonly attribute DOMString operatorName raises(<ref>WebAPIException</ref>);
49923     readonly attribute DOMString msisdn raises(<ref>WebAPIException</ref>);
49924     readonly attribute DOMString iccid raises(<ref>WebAPIException</ref>);
49925     readonly attribute unsigned short mcc raises(<ref>WebAPIException</ref>);
49926     readonly attribute unsigned short mnc raises(<ref>WebAPIException</ref>);
49927     readonly attribute DOMString msin raises(<ref>WebAPIException</ref>);
49928     readonly attribute DOMString spn raises(<ref>WebAPIException</ref>);
49929   };</webidl>
49930       <descriptive>
49931           <brief>
49932  This property reflects the information of the SIM card information.    
49933           </brief>
49934           <version>
49935  2.0
49936           </version>
49937       </descriptive>
49938       <ExtendedAttributeList>
49939         <ExtendedAttribute name="NoInterfaceObject">
49940           <webidl>NoInterfaceObject</webidl>
49941         </ExtendedAttribute>
49942       </ExtendedAttributeList>
49943       <InterfaceInheritance>
49944         <Name name="SystemInfoProperty"/>
49945       </InterfaceInheritance>
49946       <Attribute readonly="readonly" name="state" id="::SystemInfo::SystemInfoSIM::state">
49947         <webidl>    readonly attribute <ref>SystemInfoSimState</ref> state raises(<ref>WebAPIException</ref>);</webidl>
49948         <descriptive>
49949             <brief>
49950  Represents the SIM card state.
49951             </brief>
49952             <version>
49953  2.1
49954             </version>
49955             <privilegelevel>
49956  public
49957             </privilegelevel>
49958             <privilege>
49959  http://tizen.org/privilege/system
49960             </privilege>
49961         </descriptive>
49962         <Type name="SystemInfoSimState"/>
49963         <Raises>
49964           <RaiseException name="WebAPIException">
49965             <descriptive>
49966                 <description><p>
49967  with error type SecurityError, if this attribute is not allowed.
49968                 </p></description>
49969             </descriptive>
49970           </RaiseException>
49971         </Raises>
49972       </Attribute>
49973       <Attribute readonly="readonly" name="operatorName" id="::SystemInfo::SystemInfoSIM::operatorName">
49974         <webidl>    readonly attribute DOMString operatorName raises(<ref>WebAPIException</ref>);</webidl>
49975         <descriptive>
49976             <brief>
49977  Represents the Operator Name String (ONS) of Common PCN Handset Specification (CPHS) in SIM card.     
49978             </brief>
49979             <version>
49980  2.0    
49981             </version>
49982             <privilegelevel>
49983  public
49984             </privilegelevel>
49985             <privilege>
49986  http://tizen.org/privilege/system
49987             </privilege>
49988         </descriptive>
49989         <Type type="DOMString"/>
49990         <Raises>
49991           <RaiseException name="WebAPIException">
49992             <descriptive>
49993                 <description><p>
49994  with error type SecurityError, if this attribute is not allowed.
49995                 </p></description>
49996             </descriptive>
49997           </RaiseException>
49998         </Raises>
49999       </Attribute>
50000       <Attribute readonly="readonly" name="msisdn" id="::SystemInfo::SystemInfoSIM::msisdn">
50001         <webidl>    readonly attribute DOMString msisdn raises(<ref>WebAPIException</ref>);</webidl>
50002         <descriptive>
50003             <brief>
50004  Represents the SIM card subscriber number.     
50005             </brief>
50006             <version>
50007  2.0    
50008             </version>
50009             <privilegelevel>
50010  partner
50011             </privilegelevel>
50012             <privilege>
50013  http://tizen.org/privilege/systemmanager
50014             </privilege>
50015         </descriptive>
50016         <Type type="DOMString"/>
50017         <Raises>
50018           <RaiseException name="WebAPIException">
50019             <descriptive>
50020                 <description><p>
50021  with error type SecurityError, if this attribute is not allowed.
50022                 </p></description>
50023             </descriptive>
50024           </RaiseException>
50025         </Raises>
50026       </Attribute>
50027       <Attribute readonly="readonly" name="iccid" id="::SystemInfo::SystemInfoSIM::iccid">
50028         <webidl>    readonly attribute DOMString iccid raises(<ref>WebAPIException</ref>);</webidl>
50029         <descriptive>
50030             <brief>
50031  Represents the Integrated Circuit Card ID.    
50032             </brief>
50033             <version>
50034  2.0    
50035             </version>
50036             <privilegelevel>
50037  public
50038             </privilegelevel>
50039             <privilege>
50040  http://tizen.org/privilege/system
50041             </privilege>
50042         </descriptive>
50043         <Type type="DOMString"/>
50044         <Raises>
50045           <RaiseException name="WebAPIException">
50046             <descriptive>
50047                 <description><p>
50048  with error type SecurityError, if this attribute is not allowed.
50049                 </p></description>
50050             </descriptive>
50051           </RaiseException>
50052         </Raises>
50053       </Attribute>
50054       <Attribute readonly="readonly" name="mcc" id="::SystemInfo::SystemInfoSIM::mcc">
50055         <webidl>    readonly attribute unsigned short mcc raises(<ref>WebAPIException</ref>);</webidl>
50056         <descriptive>
50057             <brief>
50058  Represents the Mobile Country Code (MCC) of SIM provider.     
50059             </brief>
50060             <version>
50061  2.0    
50062             </version>
50063             <privilegelevel>
50064  public
50065             </privilegelevel>
50066             <privilege>
50067  http://tizen.org/privilege/system
50068             </privilege>
50069         </descriptive>
50070         <Type type="unsigned short"/>
50071         <Raises>
50072           <RaiseException name="WebAPIException">
50073             <descriptive>
50074                 <description><p>
50075  with error type SecurityError, if this attribute is not allowed.
50076                 </p></description>
50077             </descriptive>
50078           </RaiseException>
50079         </Raises>
50080       </Attribute>
50081       <Attribute readonly="readonly" name="mnc" id="::SystemInfo::SystemInfoSIM::mnc">
50082         <webidl>    readonly attribute unsigned short mnc raises(<ref>WebAPIException</ref>);</webidl>
50083         <descriptive>
50084             <brief>
50085  Represents the Mobile Network Code (MNC) of SIM provider.     
50086             </brief>
50087             <version>
50088  2.0    
50089             </version>
50090             <privilegelevel>
50091  public
50092             </privilegelevel>
50093             <privilege>
50094  http://tizen.org/privilege/system
50095             </privilege>
50096         </descriptive>
50097         <Type type="unsigned short"/>
50098         <Raises>
50099           <RaiseException name="WebAPIException">
50100             <descriptive>
50101                 <description><p>
50102  with error type SecurityError, if this attribute is not allowed.
50103                 </p></description>
50104             </descriptive>
50105           </RaiseException>
50106         </Raises>
50107       </Attribute>
50108       <Attribute readonly="readonly" name="msin" id="::SystemInfo::SystemInfoSIM::msin">
50109         <webidl>    readonly attribute DOMString msin raises(<ref>WebAPIException</ref>);</webidl>
50110         <descriptive>
50111             <brief>
50112  Represents the Mobile Subscription Identification Number (MSIN) of SIM provider.     
50113             </brief>
50114             <version>
50115  2.0    
50116             </version>
50117             <privilegelevel>
50118  partner
50119             </privilegelevel>
50120             <privilege>
50121  http://tizen.org/privilege/systemmanager
50122             </privilege>
50123         </descriptive>
50124         <Type type="DOMString"/>
50125         <Raises>
50126           <RaiseException name="WebAPIException">
50127             <descriptive>
50128                 <description><p>
50129  with error type SecurityError, if this attribute is not allowed.
50130                 </p></description>
50131             </descriptive>
50132           </RaiseException>
50133         </Raises>
50134       </Attribute>
50135       <Attribute readonly="readonly" name="spn" id="::SystemInfo::SystemInfoSIM::spn">
50136         <webidl>    readonly attribute DOMString spn raises(<ref>WebAPIException</ref>);</webidl>
50137         <descriptive>
50138             <brief>
50139  Represents the Service Provider Name (SPN) of SIM card.     
50140             </brief>
50141             <version>
50142  2.0    
50143             </version>
50144             <privilegelevel>
50145  public
50146             </privilegelevel>
50147             <privilege>
50148  http://tizen.org/privilege/system
50149             </privilege>
50150         </descriptive>
50151         <Type type="DOMString"/>
50152         <Raises>
50153           <RaiseException name="WebAPIException">
50154             <descriptive>
50155                 <description><p>
50156  with error type SecurityError, if this attribute is not allowed.
50157                 </p></description>
50158             </descriptive>
50159           </RaiseException>
50160         </Raises>
50161       </Attribute>
50162     </Interface>
50163     <Interface name="SystemInfoPeripheral" id="::SystemInfo::SystemInfoPeripheral">
50164       <webidl>  [NoInterfaceObject] interface SystemInfoPeripheral : <ref>SystemInfoProperty</ref> {
50165
50166     readonly attribute boolean isVideoOutputOn;
50167   };</webidl>
50168       <descriptive>
50169           <brief>
50170  This property reflects the peripheral information of the current device.
50171           </brief>
50172           <version>
50173  2.1
50174           </version>
50175       </descriptive>
50176       <ExtendedAttributeList>
50177         <ExtendedAttribute name="NoInterfaceObject">
50178           <webidl>NoInterfaceObject</webidl>
50179         </ExtendedAttribute>
50180       </ExtendedAttributeList>
50181       <InterfaceInheritance>
50182         <Name name="SystemInfoProperty"/>
50183       </InterfaceInheritance>
50184       <Attribute readonly="readonly" name="isVideoOutputOn" id="::SystemInfo::SystemInfoPeripheral::isVideoOutputOn">
50185         <webidl>    readonly attribute boolean isVideoOutputOn;</webidl>
50186         <descriptive>
50187             <brief>
50188  Represents the video out status.
50189             </brief>
50190             <version>
50191  2.1
50192             </version>
50193         </descriptive>
50194         <Type type="boolean"/>
50195       </Attribute>
50196     </Interface>
50197   </Module>
50198   <Module name="SystemSetting" id="::SystemSetting">
50199     <webidl>module SystemSetting {
50200
50201   [NoInterfaceObject] interface SystemSettingObject {
50202     readonly attribute <ref>SystemSettingManager</ref> systemsetting;
50203   };
50204     <ref>Tizen</ref> implements <ref>SystemSettingObject</ref>;
50205
50206   enum SystemSettingType {&quot;HOME_SCREEN&quot;, &quot;LOCK_SCREEN&quot;, &quot;INCOMING_CALL&quot;, &quot;NOTIFICATION_EMAIL&quot;};
50207
50208   [NoInterfaceObject] interface SystemSettingManager {
50209
50210      void setProperty(<ref>SystemSettingType</ref> type,
50211               DOMString value,
50212               <ref>SuccessCallback</ref> successCallback,
50213               optional <ref>ErrorCallback</ref>? errorCallback) raises (<ref>WebAPIException</ref>);
50214
50215      void getProperty(<ref>SystemSettingType</ref> type,
50216               <ref>SystemSettingSuccessCallback</ref> successCallback,
50217               optional <ref>ErrorCallback</ref>? errorCallback) raises (<ref>WebAPIException</ref>);
50218      
50219   };
50220
50221   [Callback=FunctionOnly, NoInterfaceObject] interface SystemSettingSuccessCallback {
50222     void onsuccess(DOMString value);
50223   };
50224
50225 };</webidl>
50226     <descriptive>
50227         <brief>
50228  This API provides interfaces and methods providing Web applications with access to various values of the system.
50229         </brief>
50230        <description>
50231         <p>
50232 This API provides an interface and method through features such as:
50233         </p>
50234         <ul>
50235           <li>
50236  HOME_SCREEN          </li>
50237           <li>
50238  LOCK_SCREEN          </li>
50239           <li>
50240  INCOMING_CALL          </li>
50241           <li>
50242  NOTIFICATION_EMAIL          </li>
50243         </ul>
50244         <p>
50245 For more information on the SystemSetting features, see <a href="../../org.tizen.web.appprogramming/html/guide/sys_guide/systemsetting.htm">System Setting Guide</a>.
50246         </p>
50247        </description>
50248         <version>
50249  2.0
50250         </version>
50251     </descriptive>
50252     <Interface name="SystemSettingObject" id="::SystemSetting::SystemSettingObject">
50253       <webidl>  [NoInterfaceObject] interface SystemSettingObject {
50254     readonly attribute <ref>SystemSettingManager</ref> systemsetting;
50255   };</webidl>
50256       <descriptive>
50257           <brief>
50258  This interface defines what is instantiated by the <em>Tizen </em>object from the Tizen Platform.
50259           </brief>
50260          <description>
50261           <p>
50262 There will be a <em>tizen.systemsetting </em>object that allows accessing the functionality of the SystemSetting API.
50263           </p>
50264          </description>
50265           <version>
50266  2.0
50267           </version>
50268       </descriptive>
50269       <ExtendedAttributeList>
50270         <ExtendedAttribute name="NoInterfaceObject">
50271           <webidl>NoInterfaceObject</webidl>
50272         </ExtendedAttribute>
50273       </ExtendedAttributeList>
50274       <Attribute readonly="readonly" name="systemsetting" id="::SystemSetting::SystemSettingObject::systemsetting">
50275         <webidl>    readonly attribute <ref>SystemSettingManager</ref> systemsetting;</webidl>
50276         <Type name="SystemSettingManager"/>
50277       </Attribute>
50278     </Interface>
50279     <Implements name1="Tizen" name2="SystemSettingObject">
50280       <webidl>    <ref>Tizen</ref> implements <ref>SystemSettingObject</ref>;</webidl>
50281     </Implements>
50282     <Enum name="SystemSettingType" id="::SystemSetting::SystemSettingType">
50283       <webidl>  enum SystemSettingType {&quot;HOME_SCREEN&quot;, &quot;LOCK_SCREEN&quot;, &quot;INCOMING_CALL&quot;, &quot;NOTIFICATION_EMAIL&quot;};</webidl>
50284       <descriptive>
50285           <brief>
50286  This enumerator indicates the type of supported system setting.
50287 The following values are supported in this release:
50288           </brief>
50289          <description>
50290           <ul>
50291             <li>
50292 HOME_SCREEN - For homescreen background image.            </li>
50293             <li>
50294 LOCK_SCREEN - For lockscreen background image.            </li>
50295             <li>
50296 INCOMING_CALL - For incoming call ringtone.            </li>
50297             <li>
50298 NOTIFICATION_EMAIL - For email notification alert tone.            </li>
50299           </ul>
50300           <p>
50301 Defines supporting setting types.
50302 The HOME_SCREEN and LOCK_SCREEN are supported for images files.
50303 The INCOMING_CALL and NOTIFICATION_EMAIL are support for sound files.
50304           </p>
50305          </description>
50306           <version>
50307  2.0
50308           </version>
50309       </descriptive>
50310       <EnumValue stringvalue="HOME_SCREEN">
50311         <webidl>&quot;HOME_SCREEN</webidl>
50312       </EnumValue>
50313       <EnumValue stringvalue="LOCK_SCREEN">
50314         <webidl> &quot;LOCK_SCREEN</webidl>
50315       </EnumValue>
50316       <EnumValue stringvalue="INCOMING_CALL">
50317         <webidl> &quot;INCOMING_CALL</webidl>
50318       </EnumValue>
50319       <EnumValue stringvalue="NOTIFICATION_EMAIL">
50320         <webidl> &quot;NOTIFICATION_EMAIL</webidl>
50321       </EnumValue>
50322     </Enum>
50323     <Interface name="SystemSettingManager" id="::SystemSetting::SystemSettingManager">
50324       <webidl>  [NoInterfaceObject] interface SystemSettingManager {
50325
50326      void setProperty(<ref>SystemSettingType</ref> type,
50327               DOMString value,
50328               <ref>SuccessCallback</ref> successCallback,
50329               optional <ref>ErrorCallback</ref>? errorCallback) raises (<ref>WebAPIException</ref>);
50330
50331      void getProperty(<ref>SystemSettingType</ref> type,
50332               <ref>SystemSettingSuccessCallback</ref> successCallback,
50333               optional <ref>ErrorCallback</ref>? errorCallback) raises (<ref>WebAPIException</ref>);
50334      
50335   };</webidl>
50336       <descriptive>
50337           <brief>
50338  This is the top-level interface for the SystemSetting API that provides
50339 access to the module functionalities.
50340           </brief>
50341       </descriptive>
50342       <ExtendedAttributeList>
50343         <ExtendedAttribute name="NoInterfaceObject">
50344           <webidl>NoInterfaceObject</webidl>
50345         </ExtendedAttribute>
50346       </ExtendedAttributeList>
50347       <Operation name="setProperty" id="::SystemSetting::SystemSettingManager::setProperty">
50348         <webidl>     void setProperty(<ref>SystemSettingType</ref> type,
50349               DOMString value,
50350               <ref>SuccessCallback</ref> successCallback,
50351               optional <ref>ErrorCallback</ref>? errorCallback) raises (<ref>WebAPIException</ref>);</webidl>
50352         <descriptive>
50353             <brief>
50354  Sets the property of a device.
50355             </brief>
50356            <description>
50357             <p>
50358 This method allows the user to set the image or sound file specified as an input parameter as the wallpaper or ringtone of a device.
50359             </p>
50360            </description>
50361             <version>
50362  2.0
50363             </version>
50364            <description>
50365             <p>
50366 The ErrorCallback is launched with these error types:
50367             </p>
50368             <ul>
50369               <li>
50370 TypeMismatchError - If any input parameter is not compatible with the expected type for that parameter.               </li>
50371               <li>
50372 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
50373               <li>
50374 UnknownError - If any other error occurs.              </li>
50375             </ul>
50376            </description>
50377             <privilegelevel>
50378  public
50379             </privilegelevel>
50380             <privilege>
50381  http://tizen.org/privilege/setting
50382             </privilege>
50383             <Code> // Define the success callback
50384  function successCallback() {
50385    console.log(&quot;Success to setProperty&quot;);
50386  }
50387
50388  // Define the error callback.
50389  function errorCallback(error) {
50390    console.log(&quot;Fail to setProperty&quot; + error.message);
50391  }
50392
50393  tizen.systemsetting.setProperty(&quot;HOME_SCREEN&quot;, &quot;/opt/usr/media/Images/image1.jpg&quot;, successCallback, errorCallback);
50394
50395  </Code>
50396         </descriptive>
50397         <Type type="void"/>
50398         <ArgumentList>
50399           <Argument name="type">
50400             <descriptive>
50401                 <description><p>
50402  The setting type to set.
50403                 </p></description>
50404             </descriptive>
50405             <Type name="SystemSettingType"/>
50406           </Argument>
50407           <Argument name="value">
50408             <descriptive>
50409                 <description><p>
50410  The location path of a wallpaper or ringtone file.
50411                 </p></description>
50412             </descriptive>
50413             <Type type="DOMString"/>
50414           </Argument>
50415           <Argument name="successCallback">
50416             <descriptive>
50417                 <description><p>
50418  To be invoked if the setting value is successfully set.
50419                 </p></description>
50420             </descriptive>
50421             <Type name="SuccessCallback"/>
50422           </Argument>
50423           <Argument optional="optional" name="errorCallback">
50424             <descriptive>
50425                 <description><p>
50426  To be invoked if the setting value cannot be set.
50427                 </p></description>
50428             </descriptive>
50429             <Type name="ErrorCallback" nullable="nullable"/>
50430           </Argument>
50431         </ArgumentList>
50432         <Raises>
50433           <RaiseException name="WebAPIException">
50434             <descriptive>
50435                 <description><p>
50436  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
50437                 </p></description>
50438                 <description><p>
50439  with error type NotSupportedError, if this feature is not supported.
50440                 </p></description>
50441                 <description><p>
50442  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
50443                 </p></description>
50444                 <description><p>
50445  with error type SecurityError, if this functionality is not allowed.
50446                 </p></description>
50447                 <description><p>
50448  with error type UnknownError in any other error case.
50449                 </p></description>
50450             </descriptive>
50451           </RaiseException>
50452         </Raises>
50453       </Operation>
50454       <Operation name="getProperty" id="::SystemSetting::SystemSettingManager::getProperty">
50455         <webidl>     void getProperty(<ref>SystemSettingType</ref> type,
50456               <ref>SystemSettingSuccessCallback</ref> successCallback,
50457               optional <ref>ErrorCallback</ref>? errorCallback) raises (<ref>WebAPIException</ref>);</webidl>
50458         <descriptive>
50459             <brief>
50460   Gets the value of the property of a device.
50461             </brief>
50462            <description>
50463             <p>
50464 This method allows the user to get the value of the specified system property as wallpaper or ringtone of a device.
50465             </p>
50466            </description>
50467             <version>
50468  2.0
50469             </version>
50470            <description>
50471             <p>
50472 The ErrorCallback is launched with these error types:
50473             </p>
50474             <ul>
50475               <li>
50476 TypeMismatchError - If any input parameter is not compatible with the expected type for that parameter.               </li>
50477               <li>
50478 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
50479               <li>
50480 UnknownError - If any other error occurs.              </li>
50481             </ul>
50482            </description>
50483             <Code> // Define the success callback
50484  function getPropertySuccessCallback(value) {
50485    console.log(&quot;Success to getProperty : &quot; + value);
50486  }
50487
50488  // Define the error callback.
50489  function errorCallback(error) {
50490    console.log(&quot;Fail to getProperty&quot; + error.message);
50491  }
50492
50493  tizen.systemsetting.getProperty(&quot;HOME_SCREEN&quot;, getPropertySuccessCallback, errorCallback);
50494
50495  </Code>
50496         </descriptive>
50497         <Type type="void"/>
50498         <ArgumentList>
50499           <Argument name="type">
50500             <descriptive>
50501                 <description><p>
50502  The type of the property to get.
50503                 </p></description>
50504             </descriptive>
50505             <Type name="SystemSettingType"/>
50506           </Argument>
50507           <Argument name="successCallback">
50508             <descriptive>
50509                 <description><p>
50510  To be invoked if the setting value is successfully retrieved.
50511                 </p></description>
50512             </descriptive>
50513             <Type name="SystemSettingSuccessCallback"/>
50514           </Argument>
50515           <Argument optional="optional" name="errorCallback">
50516             <descriptive>
50517                 <description><p>
50518  To be invoked if the setting value cannot be retrieved.
50519                 </p></description>
50520             </descriptive>
50521             <Type name="ErrorCallback" nullable="nullable"/>
50522           </Argument>
50523         </ArgumentList>
50524         <Raises>
50525           <RaiseException name="WebAPIException">
50526             <descriptive>
50527                 <description><p>
50528  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
50529                 </p></description>
50530                 <description><p>
50531  with error type NotSupportedError, if this feature is not supported.
50532                 </p></description>
50533                 <description><p>
50534  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
50535                 </p></description>
50536                 <description><p>
50537  with error type UnknownError in any other error case.     
50538                 </p></description>
50539             </descriptive>
50540           </RaiseException>
50541         </Raises>
50542       </Operation>
50543     </Interface>
50544     <Interface name="SystemSettingSuccessCallback" id="::SystemSetting::SystemSettingSuccessCallback">
50545       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface SystemSettingSuccessCallback {
50546     void onsuccess(DOMString value);
50547   };</webidl>
50548       <descriptive>
50549           <brief>
50550  The success callback for getProperty().
50551           </brief>
50552           <version>
50553  2.0
50554           </version>
50555       </descriptive>
50556       <ExtendedAttributeList>
50557         <ExtendedAttribute name="Callback" value="FunctionOnly">
50558           <webidl>Callback</webidl>
50559         </ExtendedAttribute>
50560         <ExtendedAttribute name="NoInterfaceObject">
50561           <webidl> NoInterfaceObject</webidl>
50562         </ExtendedAttribute>
50563       </ExtendedAttributeList>
50564       <Operation name="onsuccess" id="::SystemSetting::SystemSettingSuccessCallback::onsuccess">
50565         <webidl>    void onsuccess(DOMString value);</webidl>
50566         <Type type="void"/>
50567         <ArgumentList>
50568           <Argument name="value">
50569             <Type type="DOMString"/>
50570           </Argument>
50571         </ArgumentList>
50572       </Operation>
50573     </Interface>
50574   </Module>
50575   <Module name="Time" id="::Time">
50576     <webidl>module Time {
50577   
50578   enum TimeDurationUnit { &quot;MSECS&quot;, &quot;SECS&quot;, &quot;MINS&quot;, &quot;HOURS&quot;, &quot;DAYS&quot; };
50579   
50580   [NoInterfaceObject] interface TimeManagerObject {
50581     readonly attribute <ref>TimeUtil</ref> time;
50582   };
50583   <ref>Tizen</ref> implements <ref>TimeManagerObject</ref>;
50584   
50585   [NoInterfaceObject] interface TimeUtil {
50586     <ref>TZDate</ref> getCurrentDateTime() raises(<ref>WebAPIException</ref>);
50587     
50588     DOMString getLocalTimezone() raises(<ref>WebAPIException</ref>);
50589     
50590     DOMString[] getAvailableTimezones() raises(<ref>WebAPIException</ref>);
50591                                            
50592     DOMString getDateFormat(optional boolean? shortformat) raises(<ref>WebAPIException</ref>);
50593     
50594     DOMString getTimeFormat() raises(<ref>WebAPIException</ref>);
50595     
50596     boolean isLeapYear(long year) raises(<ref>WebAPIException</ref>);
50597   };
50598
50599
50600   [Constructor(optional Date? datetime, optional DOMString? timezone),
50601    Constructor(long year, long month, long day, optional long? hours, optional long? minutes, optional long? seconds, optional long? milliseconds, optional DOMString? timezone)]
50602
50603   interface TZDate {
50604     long getDate();
50605     
50606     void setDate(long date);
50607     
50608     long getDay();
50609     
50610     long getFullYear();
50611     
50612     void setFullYear(long year);
50613     
50614     long getHours();
50615     
50616     void setHours(long hours);
50617     
50618     long getMilliseconds();
50619     
50620     void setMilliseconds(long ms);
50621     
50622     long getMinutes();
50623     
50624     void setMinutes(long minutes);
50625     
50626     long getMonth();
50627     
50628     void setMonth(long month);
50629     
50630     long getSeconds();
50631     
50632     void setSeconds(long seconds);
50633     
50634     long getUTCDate();
50635     
50636     void setUTCDate(long date);
50637     
50638     long getUTCDay();
50639     
50640     long getUTCFullYear();
50641     
50642     void setUTCFullYear(long year);
50643     
50644     long getUTCHours();
50645     
50646     void setUTCHours(long hours);
50647     
50648     long getUTCMilliseconds();
50649     
50650     void setUTCMilliseconds(long ms);
50651     
50652     long getUTCMinutes();
50653     
50654     void setUTCMinutes(long minutes);
50655     
50656     long getUTCMonth();
50657     
50658     void setUTCMonth(long month);
50659     
50660     long getUTCSeconds();
50661     
50662     void setUTCSeconds(long seconds);
50663     
50664     DOMString getTimezone();
50665     
50666     <ref>TZDate</ref> toTimezone(DOMString tzid) raises(<ref>WebAPIException</ref>);
50667     
50668     <ref>TZDate</ref> toLocalTimezone() raises(<ref>WebAPIException</ref>);
50669     
50670     <ref>TZDate</ref> toUTC() raises(<ref>WebAPIException</ref>);
50671     
50672     <ref>TimeDuration</ref> difference(<ref>TZDate</ref> other) raises(<ref>WebAPIException</ref>);
50673
50674     boolean equalsTo(<ref>TZDate</ref> other) raises(<ref>WebAPIException</ref>);
50675     
50676     boolean earlierThan(<ref>TZDate</ref> other) raises(<ref>WebAPIException</ref>);
50677     
50678     boolean laterThan(<ref>TZDate</ref> other) raises(<ref>WebAPIException</ref>);
50679     
50680     <ref>TZDate</ref> addDuration(<ref>TimeDuration</ref> duration) raises(<ref>WebAPIException</ref>);
50681     
50682     DOMString toLocaleDateString();
50683     
50684     DOMString toLocaleTimeString();
50685     
50686     DOMString toLocaleString();
50687     
50688     DOMString toDateString();
50689     
50690     DOMString toTimeString();
50691     
50692     DOMString toString();
50693     
50694     DOMString getTimezoneAbbreviation() raises(<ref>WebAPIException</ref>);
50695     
50696     long secondsFromUTC() raises(<ref>WebAPIException</ref>);
50697     
50698     boolean isDST() raises(<ref>WebAPIException</ref>);
50699     
50700     <ref>TZDate</ref>? getPreviousDSTTransition() raises(<ref>WebAPIException</ref>);
50701     
50702     <ref>TZDate</ref>? getNextDSTTransition() raises(<ref>WebAPIException</ref>);
50703   };
50704   
50705   [Constructor(long long length, optional <ref>TimeDurationUnit</ref>? unit)]
50706   interface TimeDuration
50707   {   
50708     attribute long long length;
50709     
50710     attribute <ref>TimeDurationUnit</ref> unit;
50711     
50712     <ref>TimeDuration</ref> difference(<ref>TimeDuration</ref> other) raises(<ref>WebAPIException</ref>);
50713     
50714     boolean equalsTo(<ref>TimeDuration</ref> other) raises(<ref>WebAPIException</ref>);
50715     
50716     boolean lessThan(<ref>TimeDuration</ref> other) raises(<ref>WebAPIException</ref>);
50717     
50718     boolean greaterThan(<ref>TimeDuration</ref> other) raises(<ref>WebAPIException</ref>);
50719   };
50720 };</webidl>
50721     <descriptive>
50722         <brief>
50723   The Time API provides information regarding date / time and time zones.
50724         </brief>
50725         <version>
50726  1.0
50727         </version>
50728        <description>
50729         <p>
50730 The JavaScript Date object does not have full timezone support.
50731 Date objects allow only simple representations to denote a particular location's
50732 offset from Universal Coordinated Time (UTC). This is typically provided as a +/-
50733 offset from UTC-0 (also known as Greenwich Mean Time, or GMT) for example, +05:30 denotes
50734 that a location is 5 hours and 30 minutes ahead of UTC +00:00.
50735 The issue with this method is not getting the correct
50736 local time for a given date. The existing methods are sufficient for this purpose.
50737 The issue is correctly converting to and from local time and UTC for all points in
50738 time - in any of the past, present, and future - based on an initial time provided.
50739 This is important for defining relative dates, where a time in a given location may
50740 observe different UTC offsets, according to any Daylight Savings Rules (DST) in effect
50741 or any other changes that may occur to a location's time zone over time.
50742 Without the communication of the explicit time zone rules governing a given date and
50743 time, the ability to effectively calculate the offset of the local time to UTC or to
50744 any other time zone at any point in the past or future is lost. 
50745         </p>
50746         <p>
50747 This API can be used to get TZDate objects with full time zone support, convert them
50748 between timezones, retrieve available timezones.
50749         </p>
50750         <p>
50751 For more information on the Time features, see <a href="../../org.tizen.web.appprogramming/html/guide/sys_guide/time.htm">Time Guide</a>. 
50752         </p>
50753        </description>
50754     </descriptive>
50755     <Enum name="TimeDurationUnit" id="::Time::TimeDurationUnit">
50756       <webidl>  enum TimeDurationUnit { &quot;MSECS&quot;, &quot;SECS&quot;, &quot;MINS&quot;, &quot;HOURS&quot;, &quot;DAYS&quot; };</webidl>
50757       <descriptive>
50758           <brief>
50759  TimeDuration unit (milliseconds, seconds, minutes, hours or days).
50760           </brief>
50761          <description>
50762           <p>
50763 At least the following values must be supported:
50764           </p>
50765           <ul>
50766             <li>
50767 MSECS - Indicates a duration in milliseconds            </li>
50768             <li>
50769 SECS - Indicates a duration in seconds             </li>
50770             <li>
50771 MINS - Indicates a duration in minutes             </li>
50772             <li>
50773 HOURS - Indicates a duration in hours             </li>
50774             <li>
50775 DAYS - Indicates a duration in days            </li>
50776           </ul>
50777          </description>
50778           <version>
50779  1.0
50780           </version>
50781       </descriptive>
50782       <EnumValue stringvalue="MSECS">
50783         <webidl> &quot;MSECS</webidl>
50784       </EnumValue>
50785       <EnumValue stringvalue="SECS">
50786         <webidl> &quot;SECS</webidl>
50787       </EnumValue>
50788       <EnumValue stringvalue="MINS">
50789         <webidl> &quot;MINS</webidl>
50790       </EnumValue>
50791       <EnumValue stringvalue="HOURS">
50792         <webidl> &quot;HOURS</webidl>
50793       </EnumValue>
50794       <EnumValue stringvalue="DAYS">
50795         <webidl> &quot;DAYS</webidl>
50796       </EnumValue>
50797     </Enum>
50798     <Interface name="TimeManagerObject" id="::Time::TimeManagerObject">
50799       <webidl>  [NoInterfaceObject] interface TimeManagerObject {
50800     readonly attribute <ref>TimeUtil</ref> time;
50801   };</webidl>
50802       <descriptive>
50803           <brief>
50804  Defines what is instantiated in the tizen object by the Tizen Platform.
50805           </brief>
50806          <description>
50807           <p>
50808 There will be a tizen.time object that allows accessing the
50809 functionality of the Time API.
50810           </p>
50811          </description>
50812           <version>
50813  1.0
50814           </version>
50815       </descriptive>
50816       <ExtendedAttributeList>
50817         <ExtendedAttribute name="NoInterfaceObject">
50818           <webidl>NoInterfaceObject</webidl>
50819         </ExtendedAttribute>
50820       </ExtendedAttributeList>
50821       <Attribute readonly="readonly" name="time" id="::Time::TimeManagerObject::time">
50822         <webidl>    readonly attribute <ref>TimeUtil</ref> time;</webidl>
50823         <Type name="TimeUtil"/>
50824       </Attribute>
50825     </Interface>
50826     <Implements name1="Tizen" name2="TimeManagerObject">
50827       <webidl>  <ref>Tizen</ref> implements <ref>TimeManagerObject</ref>;</webidl>
50828     </Implements>
50829     <Interface name="TimeUtil" id="::Time::TimeUtil">
50830       <webidl>  [NoInterfaceObject] interface TimeUtil {
50831     <ref>TZDate</ref> getCurrentDateTime() raises(<ref>WebAPIException</ref>);
50832     
50833     DOMString getLocalTimezone() raises(<ref>WebAPIException</ref>);
50834     
50835     DOMString[] getAvailableTimezones() raises(<ref>WebAPIException</ref>);
50836                                            
50837     DOMString getDateFormat(optional boolean? shortformat) raises(<ref>WebAPIException</ref>);
50838     
50839     DOMString getTimeFormat() raises(<ref>WebAPIException</ref>);
50840     
50841     boolean isLeapYear(long year) raises(<ref>WebAPIException</ref>);
50842   };</webidl>
50843       <descriptive>
50844           <brief>
50845  The TimeUtil class that provides access to the time API.
50846           </brief>
50847          <description>
50848           <p>
50849 This interface offers methods to manage date / time as well as timezones such as:
50850           </p>
50851           <ul>
50852             <li>
50853 Get the current date / time using getCurrentDateTime().            </li>
50854             <li>
50855 Get timezones using getLocalTimezone() and getAvailableTimezones().            </li>
50856           </ul>
50857          </description>
50858           <version>
50859  1.0
50860           </version>
50861       </descriptive>
50862       <ExtendedAttributeList>
50863         <ExtendedAttribute name="NoInterfaceObject">
50864           <webidl>NoInterfaceObject</webidl>
50865         </ExtendedAttribute>
50866       </ExtendedAttributeList>
50867       <Operation name="getCurrentDateTime" id="::Time::TimeUtil::getCurrentDateTime">
50868         <webidl>    <ref>TZDate</ref> getCurrentDateTime() raises(<ref>WebAPIException</ref>);</webidl>
50869         <descriptive>
50870             <brief>
50871  Returns the current date / time.
50872             </brief>
50873             <version>
50874  1.0
50875             </version>
50876             <Code> var current_dt = tizen.time.getCurrentDateTime();
50877  console.log(&quot;current date / time is &quot; + current_dt.toLocaleString());
50878  </Code>
50879         </descriptive>
50880         <Type name="TZDate">
50881           <descriptive>
50882               <description><p>
50883  TZDate Current TZDate object.
50884               </p></description>
50885           </descriptive>
50886         </Type>
50887         <ArgumentList/>
50888         <Raises>
50889           <RaiseException name="WebAPIException">
50890             <descriptive>
50891                 <description><p>
50892  with error type UnknownError, if the call failed due to an unknown error.
50893                 </p></description>
50894             </descriptive>
50895           </RaiseException>
50896         </Raises>
50897       </Operation>
50898       <Operation name="getLocalTimezone" id="::Time::TimeUtil::getLocalTimezone">
50899         <webidl>    DOMString getLocalTimezone() raises(<ref>WebAPIException</ref>);</webidl>
50900         <descriptive>
50901             <brief>
50902  Returns identifier of the local system timezone.
50903             </brief>
50904             <version>
50905  1.0
50906             </version>
50907             <Code> console.log(&quot;The local time zone is &quot; + tizen.time.getLocalTimezone());
50908  </Code>
50909         </descriptive>
50910         <Type type="DOMString">
50911           <descriptive>
50912               <description><p>
50913  Timezone Local timezone.
50914               </p></description>
50915           </descriptive>
50916         </Type>
50917         <ArgumentList/>
50918         <Raises>
50919           <RaiseException name="WebAPIException">
50920             <descriptive>
50921                 <description><p>
50922  with error type UnknownError, if the call failed due to an unknown error.
50923                 </p></description>
50924             </descriptive>
50925           </RaiseException>
50926         </Raises>
50927       </Operation>
50928       <Operation name="getAvailableTimezones" id="::Time::TimeUtil::getAvailableTimezones">
50929         <webidl>    DOMString[] getAvailableTimezones() raises(<ref>WebAPIException</ref>);</webidl>
50930         <descriptive>
50931             <brief>
50932  Returns synchronously the identifiers of the timezones supported by the device.
50933             </brief>
50934            <description>
50935             <p>
50936 Zero or more slashes separate different components of a timezone identifier,
50937 with the most general descriptor first and the most specific one last. For example,
50938 'Europe/Berlin', 'America/Argentina/Buenos_Aires'.
50939             </p>
50940            </description>
50941             <version>
50942  1.0
50943             </version>
50944             <Code> var tzids = tizen.time.getAvailableTimezones();
50945  console.log(&quot;The device supports &quot; + tzids.length + &quot; time zones.&quot;);
50946  </Code>
50947         </descriptive>
50948         <Type type="array">
50949           <descriptive>
50950               <description><p>
50951  Array of time zone identifiers.
50952               </p></description>
50953           </descriptive>
50954           <Type type="DOMString"/>
50955         </Type>
50956         <ArgumentList/>
50957         <Raises>
50958           <RaiseException name="WebAPIException">
50959             <descriptive>
50960                 <description><p>
50961  with error type UnknownError, if the call failed due to an unknown error.
50962                 </p></description>
50963             </descriptive>
50964           </RaiseException>
50965         </Raises>
50966       </Operation>
50967       <Operation name="getDateFormat" id="::Time::TimeUtil::getDateFormat">
50968         <webidl>    DOMString getDateFormat(optional boolean? shortformat) raises(<ref>WebAPIException</ref>);</webidl>
50969         <descriptive>
50970            <description>
50971             <p>
50972 Returns the date format according to the system's locale settings.
50973             </p>
50974             <p>
50975 These expressions may be used in the returned string:
50976             </p>
50977             <ul>
50978               <li>
50979 &quot;d&quot; = day number (1 to 31)              </li>
50980               <li>
50981 &quot;D&quot; = day name              </li>
50982               <li>
50983 &quot;m&quot; = month number (1 to 12)              </li>
50984               <li>
50985 &quot;M&quot; = month name              </li>
50986               <li>
50987 &quot;y&quot; = year              </li>
50988             </ul>
50989             <p>
50990 Examples of string formats include: &quot;d/m/y&quot;, &quot;y-d-m&quot;, &quot;D, M d y&quot;.
50991             </p>
50992            </description>
50993             <version>
50994  1.0
50995             </version>
50996         </descriptive>
50997         <Type type="DOMString">
50998           <descriptive>
50999               <description><p>
51000  DOMString The date format according to the system's locale settings.
51001               </p></description>
51002           </descriptive>
51003         </Type>
51004         <ArgumentList>
51005           <Argument optional="optional" name="shortformat">
51006             <descriptive>
51007                 <description><p>
51008  Flag indicating if the user is interested in the short
51009 date format (23/10/2011) instead of a long date format (&quot;Monday, October 23 2011&quot;).
51010 By default, this attribute is set to false.
51011                 </p></description>
51012             </descriptive>
51013             <Type type="boolean" nullable="nullable"/>
51014           </Argument>
51015         </ArgumentList>
51016         <Raises>
51017           <RaiseException name="WebAPIException">
51018             <descriptive>
51019                 <description><p>
51020  with error type UnknownError, if the call failed due to an unknown error.
51021                 </p></description>
51022             </descriptive>
51023           </RaiseException>
51024         </Raises>
51025       </Operation>
51026       <Operation name="getTimeFormat" id="::Time::TimeUtil::getTimeFormat">
51027         <webidl>    DOMString getTimeFormat() raises(<ref>WebAPIException</ref>);</webidl>
51028         <descriptive>
51029            <description>
51030             <p>
51031 Returns the time format according to the system's locale settings.
51032             </p>
51033             <p>
51034 These expressions may be used in the returned string:
51035             </p>
51036             <ul>
51037               <li>
51038 &quot;h&quot; = hours (0 to 23 or 1 to 12 if AM/PM display)              </li>
51039               <li>
51040 &quot;m&quot; = minutes (0 to 59)              </li>
51041               <li>
51042 &quot;s&quot; = seconds (0 to 59)              </li>
51043               <li>
51044 &quot;ap&quot; = AM/PM display              </li>
51045             </ul>
51046             <p>
51047 Examples of string formats include: &quot;h:m:s ap&quot;, &quot;h:m:s&quot;.
51048             </p>
51049            </description>
51050             <version>
51051  1.0
51052             </version>
51053         </descriptive>
51054         <Type type="DOMString">
51055           <descriptive>
51056               <description><p>
51057  DOMString The time format according to the system's locale settings.
51058               </p></description>
51059           </descriptive>
51060         </Type>
51061         <ArgumentList/>
51062         <Raises>
51063           <RaiseException name="WebAPIException">
51064             <descriptive>
51065                 <description><p>
51066  with error type UnknownError, if the call failed due to an unknown error.
51067                 </p></description>
51068             </descriptive>
51069           </RaiseException>
51070         </Raises>
51071       </Operation>
51072       <Operation name="isLeapYear" id="::Time::TimeUtil::isLeapYear">
51073         <webidl>    boolean isLeapYear(long year) raises(<ref>WebAPIException</ref>);</webidl>
51074         <descriptive>
51075             <brief>
51076  Returns <em>true</em> if the given year is a leap year.
51077             </brief>
51078             <version>
51079  1.0
51080             </version>
51081             <Code> var current_dt = tizen.time.getCurrentDateTime();
51082  var is_leap = tizen.time.isLeapYear(current_dt.getFullYear());
51083  if (is_leap)
51084    console.log(&quot;This year is a leap year.&quot;);
51085  </Code>
51086         </descriptive>
51087         <Type type="boolean">
51088           <descriptive>
51089               <description><p>
51090  boolean <em>true</em>, if the year is a leap year.
51091               </p></description>
51092           </descriptive>
51093         </Type>
51094         <ArgumentList>
51095           <Argument name="year">
51096             <descriptive>
51097                 <description><p>
51098  Year to check.
51099                 </p></description>
51100             </descriptive>
51101             <Type type="long"/>
51102           </Argument>
51103         </ArgumentList>
51104         <Raises>
51105           <RaiseException name="WebAPIException">
51106             <descriptive>
51107                 <description><p>
51108  with error type TypeMismatchError, if the input parameter
51109 is not compatible with the expected type for that parameter.
51110                 </p></description>
51111                 <description><p>
51112  with error type InvalidValuesError, if any of the input 
51113 parameters contain an invalid value.    
51114                 </p></description>
51115                 <description><p>
51116  with error type UnknownError, if the call failed due to an unknown error.
51117                 </p></description>
51118             </descriptive>
51119           </RaiseException>
51120         </Raises>
51121       </Operation>
51122     </Interface>
51123     <Interface name="TZDate" id="::Time::TZDate">
51124       <webidl>  [Constructor(optional Date? datetime, optional DOMString? timezone),
51125    Constructor(long year, long month, long day, optional long? hours, optional long? minutes, optional long? seconds, optional long? milliseconds, optional DOMString? timezone)]
51126
51127   interface TZDate {
51128     long getDate();
51129     
51130     void setDate(long date);
51131     
51132     long getDay();
51133     
51134     long getFullYear();
51135     
51136     void setFullYear(long year);
51137     
51138     long getHours();
51139     
51140     void setHours(long hours);
51141     
51142     long getMilliseconds();
51143     
51144     void setMilliseconds(long ms);
51145     
51146     long getMinutes();
51147     
51148     void setMinutes(long minutes);
51149     
51150     long getMonth();
51151     
51152     void setMonth(long month);
51153     
51154     long getSeconds();
51155     
51156     void setSeconds(long seconds);
51157     
51158     long getUTCDate();
51159     
51160     void setUTCDate(long date);
51161     
51162     long getUTCDay();
51163     
51164     long getUTCFullYear();
51165     
51166     void setUTCFullYear(long year);
51167     
51168     long getUTCHours();
51169     
51170     void setUTCHours(long hours);
51171     
51172     long getUTCMilliseconds();
51173     
51174     void setUTCMilliseconds(long ms);
51175     
51176     long getUTCMinutes();
51177     
51178     void setUTCMinutes(long minutes);
51179     
51180     long getUTCMonth();
51181     
51182     void setUTCMonth(long month);
51183     
51184     long getUTCSeconds();
51185     
51186     void setUTCSeconds(long seconds);
51187     
51188     DOMString getTimezone();
51189     
51190     <ref>TZDate</ref> toTimezone(DOMString tzid) raises(<ref>WebAPIException</ref>);
51191     
51192     <ref>TZDate</ref> toLocalTimezone() raises(<ref>WebAPIException</ref>);
51193     
51194     <ref>TZDate</ref> toUTC() raises(<ref>WebAPIException</ref>);
51195     
51196     <ref>TimeDuration</ref> difference(<ref>TZDate</ref> other) raises(<ref>WebAPIException</ref>);
51197
51198     boolean equalsTo(<ref>TZDate</ref> other) raises(<ref>WebAPIException</ref>);
51199     
51200     boolean earlierThan(<ref>TZDate</ref> other) raises(<ref>WebAPIException</ref>);
51201     
51202     boolean laterThan(<ref>TZDate</ref> other) raises(<ref>WebAPIException</ref>);
51203     
51204     <ref>TZDate</ref> addDuration(<ref>TimeDuration</ref> duration) raises(<ref>WebAPIException</ref>);
51205     
51206     DOMString toLocaleDateString();
51207     
51208     DOMString toLocaleTimeString();
51209     
51210     DOMString toLocaleString();
51211     
51212     DOMString toDateString();
51213     
51214     DOMString toTimeString();
51215     
51216     DOMString toString();
51217     
51218     DOMString getTimezoneAbbreviation() raises(<ref>WebAPIException</ref>);
51219     
51220     long secondsFromUTC() raises(<ref>WebAPIException</ref>);
51221     
51222     boolean isDST() raises(<ref>WebAPIException</ref>);
51223     
51224     <ref>TZDate</ref>? getPreviousDSTTransition() raises(<ref>WebAPIException</ref>);
51225     
51226     <ref>TZDate</ref>? getNextDSTTransition() raises(<ref>WebAPIException</ref>);
51227   };</webidl>
51228       <descriptive>
51229           <brief>
51230  The TZDate object represents information regarding a given
51231 date / time in a predefined timezone.
51232 If its date / time is exceed the platform limit, TZDate will be invalid.
51233           </brief>
51234           <version>
51235  1.0
51236           </version>
51237       </descriptive>
51238       <ExtendedAttributeList>
51239         <ExtendedAttribute name="Constructor">
51240           <webidl>Constructor(optional Date? datetime, optional DOMString? timezone)</webidl>
51241           <ArgumentList>
51242             <Argument optional="optional" name="datetime">
51243               <Type type="Date" nullable="nullable"/>
51244             </Argument>
51245             <Argument optional="optional" name="timezone">
51246               <Type type="DOMString" nullable="nullable"/>
51247             </Argument>
51248           </ArgumentList>
51249         </ExtendedAttribute>
51250         <ExtendedAttribute name="Constructor">
51251           <webidl>   Constructor(long year, long month, long day, optional long? hours, optional long? minutes, optional long? seconds, optional long? milliseconds, optional DOMString? timezone)</webidl>
51252           <descriptive>
51253              <description>
51254               <ul>
51255                 <li>
51256 <b>year</b> : The year of TZDate. If it is between 0 and 99, 1900 will be added to it like Javascript Date object.                </li>
51257               </ul>
51258              </description>
51259           </descriptive>
51260           <ArgumentList>
51261             <Argument name="year">
51262               <Type type="long"/>
51263             </Argument>
51264             <Argument name="month">
51265               <Type type="long"/>
51266             </Argument>
51267             <Argument name="day">
51268               <Type type="long"/>
51269             </Argument>
51270             <Argument optional="optional" name="hours">
51271               <Type type="long" nullable="nullable"/>
51272             </Argument>
51273             <Argument optional="optional" name="minutes">
51274               <Type type="long" nullable="nullable"/>
51275             </Argument>
51276             <Argument optional="optional" name="seconds">
51277               <Type type="long" nullable="nullable"/>
51278             </Argument>
51279             <Argument optional="optional" name="milliseconds">
51280               <Type type="long" nullable="nullable"/>
51281             </Argument>
51282             <Argument optional="optional" name="timezone">
51283               <Type type="DOMString" nullable="nullable"/>
51284             </Argument>
51285           </ArgumentList>
51286         </ExtendedAttribute>
51287       </ExtendedAttributeList>
51288       <Operation name="getDate" id="::Time::TZDate::getDate">
51289         <webidl>    long getDate();</webidl>
51290         <descriptive>
51291             <brief>
51292  Returns the day of the month (from 1-31).
51293             </brief>
51294             <version>
51295  1.0
51296             </version>
51297         </descriptive>
51298         <Type type="long">
51299           <descriptive>
51300               <description><p>
51301  long The day of the month.
51302               </p></description>
51303           </descriptive>
51304         </Type>
51305         <ArgumentList/>
51306       </Operation>
51307       <Operation name="setDate" id="::Time::TZDate::setDate">
51308         <webidl>    void setDate(long date);</webidl>
51309         <descriptive>
51310             <brief>
51311  Sets the day of the month (from 1-31).
51312             </brief>
51313            <description>
51314             <p>
51315 If it tries to set the day bigger than the last day of the month or smaller than 1, it will be calculated automatically.
51316 For example, if TZDate's month is May and parameter is 32, it will be June 1.
51317             </p>
51318            </description>
51319             <version>
51320  1.0
51321             </version>
51322         </descriptive>
51323         <Type type="void"/>
51324         <ArgumentList>
51325           <Argument name="date">
51326             <descriptive>
51327                 <description><p>
51328  Date to set.
51329                 </p></description>
51330             </descriptive>
51331             <Type type="long"/>
51332           </Argument>
51333         </ArgumentList>
51334       </Operation>
51335       <Operation name="getDay" id="::Time::TZDate::getDay">
51336         <webidl>    long getDay();</webidl>
51337         <descriptive>
51338             <brief>
51339  Returns the day of the week (from 0-6).
51340             </brief>
51341             <version>
51342  1.0
51343             </version>
51344         </descriptive>
51345         <Type type="long">
51346           <descriptive>
51347               <description><p>
51348  long The day of the week.
51349               </p></description>
51350           </descriptive>
51351         </Type>
51352         <ArgumentList/>
51353       </Operation>
51354       <Operation name="getFullYear" id="::Time::TZDate::getFullYear">
51355         <webidl>    long getFullYear();</webidl>
51356         <descriptive>
51357             <brief>
51358  Returns the year.
51359             </brief>
51360            <description>
51361             <p>
51362 Positive values indicate AD(Anno Domini) years. 0 and negative values indicate BC(Before Christ) years.
51363 For example, 1 = AD 1, 0 = BC 1, -1 = BC 2.
51364             </p>
51365            </description>
51366             <version>
51367  1.0
51368             </version>
51369         </descriptive>
51370         <Type type="long">
51371           <descriptive>
51372               <description><p>
51373  long The year.
51374               </p></description>
51375           </descriptive>
51376         </Type>
51377         <ArgumentList/>
51378       </Operation>
51379       <Operation name="setFullYear" id="::Time::TZDate::setFullYear">
51380         <webidl>    void setFullYear(long year);</webidl>
51381         <descriptive>
51382             <brief>
51383  Sets the year.
51384             </brief>
51385             <version>
51386  1.0
51387             </version>
51388         </descriptive>
51389         <Type type="void"/>
51390         <ArgumentList>
51391           <Argument name="year">
51392             <descriptive>
51393                 <description><p>
51394  Year to set.
51395                 </p></description>
51396             </descriptive>
51397             <Type type="long"/>
51398           </Argument>
51399         </ArgumentList>
51400       </Operation>
51401       <Operation name="getHours" id="::Time::TZDate::getHours">
51402         <webidl>    long getHours();</webidl>
51403         <descriptive>
51404             <brief>
51405  Returns the hour (0-23).
51406             </brief>
51407             <version>
51408  1.0
51409             </version>
51410         </descriptive>
51411         <Type type="long">
51412           <descriptive>
51413               <description><p>
51414  long The hour.
51415               </p></description>
51416           </descriptive>
51417         </Type>
51418         <ArgumentList/>
51419       </Operation>
51420       <Operation name="setHours" id="::Time::TZDate::setHours">
51421         <webidl>    void setHours(long hours);</webidl>
51422         <descriptive>
51423             <brief>
51424  Sets the hour (0-23).
51425             </brief>
51426            <description>
51427             <p>
51428 If it tries to set the hour bigger than 23 or smaller than 0, it will be calculated automatically.
51429 For example, if hours is 24, it will set 0 and add to a date.
51430             </p>
51431            </description>
51432             <version>
51433  1.0
51434             </version>
51435         </descriptive>
51436         <Type type="void"/>
51437         <ArgumentList>
51438           <Argument name="hours">
51439             <descriptive>
51440                 <description><p>
51441  Hours to set.
51442                 </p></description>
51443             </descriptive>
51444             <Type type="long"/>
51445           </Argument>
51446         </ArgumentList>
51447       </Operation>
51448       <Operation name="getMilliseconds" id="::Time::TZDate::getMilliseconds">
51449         <webidl>    long getMilliseconds();</webidl>
51450         <descriptive>
51451             <brief>
51452  Returns the milliseconds (from 0-999).
51453             </brief>
51454             <version>
51455  1.0
51456             </version>
51457         </descriptive>
51458         <Type type="long">
51459           <descriptive>
51460               <description><p>
51461  long The milliseconds.
51462               </p></description>
51463           </descriptive>
51464         </Type>
51465         <ArgumentList/>
51466       </Operation>
51467       <Operation name="setMilliseconds" id="::Time::TZDate::setMilliseconds">
51468         <webidl>    void setMilliseconds(long ms);</webidl>
51469         <descriptive>
51470             <brief>
51471  Sets the milliseconds (from 0-999).
51472             </brief>
51473            <description>
51474             <p>
51475 If it tries to set the millisecond bigger than 999 or smaller than 0, it will be calculated automatically.
51476 For example, if ms is 1000, it will set 0 and add to a second.
51477             </p>
51478            </description>
51479             <version>
51480  1.0
51481             </version>
51482         </descriptive>
51483         <Type type="void"/>
51484         <ArgumentList>
51485           <Argument name="ms">
51486             <descriptive>
51487                 <description><p>
51488  Milliseconds to set.
51489                 </p></description>
51490             </descriptive>
51491             <Type type="long"/>
51492           </Argument>
51493         </ArgumentList>
51494       </Operation>
51495       <Operation name="getMinutes" id="::Time::TZDate::getMinutes">
51496         <webidl>    long getMinutes();</webidl>
51497         <descriptive>
51498             <brief>
51499  Returns the minutes (from 0-59).
51500             </brief>
51501             <version>
51502  1.0
51503             </version>
51504         </descriptive>
51505         <Type type="long">
51506           <descriptive>
51507               <description><p>
51508  long The minutes.
51509               </p></description>
51510           </descriptive>
51511         </Type>
51512         <ArgumentList/>
51513       </Operation>
51514       <Operation name="setMinutes" id="::Time::TZDate::setMinutes">
51515         <webidl>    void setMinutes(long minutes);</webidl>
51516         <descriptive>
51517             <brief>
51518  Sets the minutes.
51519             </brief>
51520            <description>
51521             <p>
51522 If it tries to set the minute bigger than 59 or smaller than 0, it will be calculated automatically.
51523 For example, if minutes is 60, it will set 0 and add to an hour.
51524             </p>
51525            </description>
51526             <version>
51527  1.0
51528             </version>
51529         </descriptive>
51530         <Type type="void"/>
51531         <ArgumentList>
51532           <Argument name="minutes">
51533             <descriptive>
51534                 <description><p>
51535  Minutes to set.
51536                 </p></description>
51537             </descriptive>
51538             <Type type="long"/>
51539           </Argument>
51540         </ArgumentList>
51541       </Operation>
51542       <Operation name="getMonth" id="::Time::TZDate::getMonth">
51543         <webidl>    long getMonth();</webidl>
51544         <descriptive>
51545             <brief>
51546  Returns the month (from 0-11).
51547             </brief>
51548             <version>
51549  1.0
51550             </version>
51551         </descriptive>
51552         <Type type="long">
51553           <descriptive>
51554               <description><p>
51555  long The month.
51556               </p></description>
51557           </descriptive>
51558         </Type>
51559         <ArgumentList/>
51560       </Operation>
51561       <Operation name="setMonth" id="::Time::TZDate::setMonth">
51562         <webidl>    void setMonth(long month);</webidl>
51563         <descriptive>
51564             <brief>
51565  Sets the month (from 0-11).
51566             </brief>
51567            <description>
51568             <p>
51569 If it tries to set the month bigger than 11 or smaller than 0, it will be calculated automatically.
51570 For example, if month is 12, it will set 0 and add to a year.
51571             </p>
51572            </description>
51573             <version>
51574  1.0
51575             </version>
51576         </descriptive>
51577         <Type type="void"/>
51578         <ArgumentList>
51579           <Argument name="month">
51580             <descriptive>
51581                 <description><p>
51582  Month to set.
51583                 </p></description>
51584             </descriptive>
51585             <Type type="long"/>
51586           </Argument>
51587         </ArgumentList>
51588       </Operation>
51589       <Operation name="getSeconds" id="::Time::TZDate::getSeconds">
51590         <webidl>    long getSeconds();</webidl>
51591         <descriptive>
51592             <brief>
51593  Returns the seconds (from 0-59).
51594             </brief>
51595             <version>
51596  1.0
51597             </version>
51598         </descriptive>
51599         <Type type="long">
51600           <descriptive>
51601               <description><p>
51602  long The seconds.
51603               </p></description>
51604           </descriptive>
51605         </Type>
51606         <ArgumentList/>
51607       </Operation>
51608       <Operation name="setSeconds" id="::Time::TZDate::setSeconds">
51609         <webidl>    void setSeconds(long seconds);</webidl>
51610         <descriptive>
51611             <brief>
51612  Sets the seconds (from 0-59).
51613             </brief>
51614            <description>
51615             <p>
51616 If it tries to set the second bigger than 59 or smaller than 0, it will be calculated automatically.
51617 For example, if seconds is 60, it will set 0 and add to a minute.
51618             </p>
51619            </description>
51620             <version>
51621  1.0
51622             </version>
51623         </descriptive>
51624         <Type type="void"/>
51625         <ArgumentList>
51626           <Argument name="seconds">
51627             <descriptive>
51628                 <description><p>
51629  Seconds to set.
51630                 </p></description>
51631             </descriptive>
51632             <Type type="long"/>
51633           </Argument>
51634         </ArgumentList>
51635       </Operation>
51636       <Operation name="getUTCDate" id="::Time::TZDate::getUTCDate">
51637         <webidl>    long getUTCDate();</webidl>
51638         <descriptive>
51639             <brief>
51640  Returns the day of the month, according to universal time (from 1-31).
51641             </brief>
51642             <version>
51643  1.0
51644             </version>
51645         </descriptive>
51646         <Type type="long">
51647           <descriptive>
51648               <description><p>
51649  long The day of the month, according to universal time.
51650               </p></description>
51651           </descriptive>
51652         </Type>
51653         <ArgumentList/>
51654       </Operation>
51655       <Operation name="setUTCDate" id="::Time::TZDate::setUTCDate">
51656         <webidl>    void setUTCDate(long date);</webidl>
51657         <descriptive>
51658             <brief>
51659  Sets the day of the month, according to universal time (from 1-31).
51660             </brief>
51661            <description>
51662             <p>
51663 If it tries to set the day bigger than the last day of the month or smaller than 1, it will be calculated automatically.
51664 For example, if TZDate's month is May and date is 32, it will be June 1.
51665             </p>
51666            </description>
51667             <version>
51668  1.0
51669             </version>
51670         </descriptive>
51671         <Type type="void"/>
51672         <ArgumentList>
51673           <Argument name="date">
51674             <descriptive>
51675                 <description><p>
51676  Date to set.
51677                 </p></description>
51678             </descriptive>
51679             <Type type="long"/>
51680           </Argument>
51681         </ArgumentList>
51682       </Operation>
51683       <Operation name="getUTCDay" id="::Time::TZDate::getUTCDay">
51684         <webidl>    long getUTCDay();</webidl>
51685         <descriptive>
51686             <brief>
51687  Returns the day of the week, according to universal time (from 0-6).
51688             </brief>
51689             <version>
51690  1.0
51691             </version>
51692         </descriptive>
51693         <Type type="long">
51694           <descriptive>
51695               <description><p>
51696  long The day of the week, according to universal time.
51697               </p></description>
51698           </descriptive>
51699         </Type>
51700         <ArgumentList/>
51701       </Operation>
51702       <Operation name="getUTCFullYear" id="::Time::TZDate::getUTCFullYear">
51703         <webidl>    long getUTCFullYear();</webidl>
51704         <descriptive>
51705             <brief>
51706  Returns the year, according to universal time.
51707             </brief>
51708            <description>
51709             <p>
51710 Positive values indicate AD(Anno Domini) years. 0 and negative values indicate BC(Before Christ) years.
51711 For example, 1 = AD 1, 0 = BC 1, -1 = BC 2.
51712             </p>
51713            </description>
51714             <version>
51715  1.0
51716             </version>
51717         </descriptive>
51718         <Type type="long">
51719           <descriptive>
51720               <description><p>
51721  long The year, according to universal time.
51722               </p></description>
51723           </descriptive>
51724         </Type>
51725         <ArgumentList/>
51726       </Operation>
51727       <Operation name="setUTCFullYear" id="::Time::TZDate::setUTCFullYear">
51728         <webidl>    void setUTCFullYear(long year);</webidl>
51729         <descriptive>
51730             <brief>
51731  Sets the year, according to universal time.
51732             </brief>
51733             <version>
51734  1.0
51735             </version>
51736         </descriptive>
51737         <Type type="void"/>
51738         <ArgumentList>
51739           <Argument name="year">
51740             <descriptive>
51741                 <description><p>
51742  Year to set.
51743                 </p></description>
51744             </descriptive>
51745             <Type type="long"/>
51746           </Argument>
51747         </ArgumentList>
51748       </Operation>
51749       <Operation name="getUTCHours" id="::Time::TZDate::getUTCHours">
51750         <webidl>    long getUTCHours();</webidl>
51751         <descriptive>
51752             <brief>
51753  Returns the hour, according to universal time (0-23).
51754             </brief>
51755             <version>
51756  1.0
51757             </version>
51758         </descriptive>
51759         <Type type="long">
51760           <descriptive>
51761               <description><p>
51762  long The hour, according to universal time.
51763               </p></description>
51764           </descriptive>
51765         </Type>
51766         <ArgumentList/>
51767       </Operation>
51768       <Operation name="setUTCHours" id="::Time::TZDate::setUTCHours">
51769         <webidl>    void setUTCHours(long hours);</webidl>
51770         <descriptive>
51771             <brief>
51772  Sets the hour, according to universal time (0-23).
51773             </brief>
51774            <description>
51775             <p>
51776 If it tries to set the hour bigger than 23 or smaller than 0, it will be calculated automatically.
51777 For example, if hours is 24, it will set 0 and add to a date.
51778             </p>
51779            </description>
51780             <version>
51781  1.0
51782             </version>
51783         </descriptive>
51784         <Type type="void"/>
51785         <ArgumentList>
51786           <Argument name="hours">
51787             <descriptive>
51788                 <description><p>
51789  Hours to set.
51790                 </p></description>
51791             </descriptive>
51792             <Type type="long"/>
51793           </Argument>
51794         </ArgumentList>
51795       </Operation>
51796       <Operation name="getUTCMilliseconds" id="::Time::TZDate::getUTCMilliseconds">
51797         <webidl>    long getUTCMilliseconds();</webidl>
51798         <descriptive>
51799             <brief>
51800  Returns the milliseconds, according to universal time (from 0-999).
51801             </brief>
51802             <version>
51803  1.0
51804             </version>
51805         </descriptive>
51806         <Type type="long">
51807           <descriptive>
51808               <description><p>
51809  long The milliseconds, according to universal time.
51810               </p></description>
51811           </descriptive>
51812         </Type>
51813         <ArgumentList/>
51814       </Operation>
51815       <Operation name="setUTCMilliseconds" id="::Time::TZDate::setUTCMilliseconds">
51816         <webidl>    void setUTCMilliseconds(long ms);</webidl>
51817         <descriptive>
51818             <brief>
51819  Sets the milliseconds, according to universal time (from 0-999).
51820             </brief>
51821            <description>
51822             <p>
51823 If it tries to set the millisecond bigger than 999 or smaller than 0, it will be calculated automatically.
51824 For example, if ms is 1000, it will set 0 and add to a second.
51825             </p>
51826            </description>
51827             <version>
51828  1.0
51829             </version>
51830         </descriptive>
51831         <Type type="void"/>
51832         <ArgumentList>
51833           <Argument name="ms">
51834             <descriptive>
51835                 <description><p>
51836  Milliseconds to set.
51837                 </p></description>
51838             </descriptive>
51839             <Type type="long"/>
51840           </Argument>
51841         </ArgumentList>
51842       </Operation>
51843       <Operation name="getUTCMinutes" id="::Time::TZDate::getUTCMinutes">
51844         <webidl>    long getUTCMinutes();</webidl>
51845         <descriptive>
51846             <brief>
51847  Returns the minutes, according to universal time (from 0-59).
51848             </brief>
51849             <version>
51850  1.0
51851             </version>
51852         </descriptive>
51853         <Type type="long">
51854           <descriptive>
51855               <description><p>
51856  long The minutes, according to universal time.
51857               </p></description>
51858           </descriptive>
51859         </Type>
51860         <ArgumentList/>
51861       </Operation>
51862       <Operation name="setUTCMinutes" id="::Time::TZDate::setUTCMinutes">
51863         <webidl>    void setUTCMinutes(long minutes);</webidl>
51864         <descriptive>
51865             <brief>
51866  Sets the minutes, according to universal time (from 0-59).
51867             </brief>
51868            <description>
51869             <p>
51870 If it tries to set the minute bigger than 59 or smaller than 0, it will be calculated automatically.
51871 For example, if minutes is 60, it will set 0 and add to an hour.
51872             </p>
51873            </description>
51874             <version>
51875  1.0
51876             </version>
51877         </descriptive>
51878         <Type type="void"/>
51879         <ArgumentList>
51880           <Argument name="minutes">
51881             <descriptive>
51882                 <description><p>
51883  Minutes to set.
51884                 </p></description>
51885             </descriptive>
51886             <Type type="long"/>
51887           </Argument>
51888         </ArgumentList>
51889       </Operation>
51890       <Operation name="getUTCMonth" id="::Time::TZDate::getUTCMonth">
51891         <webidl>    long getUTCMonth();</webidl>
51892         <descriptive>
51893             <brief>
51894  Returns the month, according to universal time (from 0-11).
51895             </brief>
51896             <version>
51897  1.0
51898             </version>
51899         </descriptive>
51900         <Type type="long">
51901           <descriptive>
51902               <description><p>
51903  long The month, according to universal time.
51904               </p></description>
51905           </descriptive>
51906         </Type>
51907         <ArgumentList/>
51908       </Operation>
51909       <Operation name="setUTCMonth" id="::Time::TZDate::setUTCMonth">
51910         <webidl>    void setUTCMonth(long month);</webidl>
51911         <descriptive>
51912             <brief>
51913  Sets the month, according to universal time (from 0-11).
51914             </brief>
51915            <description>
51916             <p>
51917 If it tries to set the month bigger than 11 or smaller than 0, it will be calculated automatically.
51918 For example, if month is 12, it will set 0 and add to a year.
51919             </p>
51920            </description>
51921             <version>
51922  1.0
51923             </version>
51924         </descriptive>
51925         <Type type="void"/>
51926         <ArgumentList>
51927           <Argument name="month">
51928             <descriptive>
51929                 <description><p>
51930  Month to set.
51931                 </p></description>
51932             </descriptive>
51933             <Type type="long"/>
51934           </Argument>
51935         </ArgumentList>
51936       </Operation>
51937       <Operation name="getUTCSeconds" id="::Time::TZDate::getUTCSeconds">
51938         <webidl>    long getUTCSeconds();</webidl>
51939         <descriptive>
51940             <brief>
51941  Returns the seconds, according to universal time (from 0-59).
51942             </brief>
51943             <version>
51944  1.0
51945             </version>
51946         </descriptive>
51947         <Type type="long">
51948           <descriptive>
51949               <description><p>
51950  long The seconds, according to universal time.
51951               </p></description>
51952           </descriptive>
51953         </Type>
51954         <ArgumentList/>
51955       </Operation>
51956       <Operation name="setUTCSeconds" id="::Time::TZDate::setUTCSeconds">
51957         <webidl>    void setUTCSeconds(long seconds);</webidl>
51958         <descriptive>
51959             <brief>
51960  Sets the seconds, according to universal time (from 0-59).
51961             </brief>
51962            <description>
51963             <p>
51964 If it tries to set the second bigger than 59 or smaller than 0, it will be calculated automatically.
51965 For example, if seconds is 60, it will set 0 and add to a minute.
51966             </p>
51967            </description>
51968             <version>
51969  1.0
51970             </version>
51971         </descriptive>
51972         <Type type="void"/>
51973         <ArgumentList>
51974           <Argument name="seconds">
51975             <descriptive>
51976                 <description><p>
51977  Seconds to set.
51978                 </p></description>
51979             </descriptive>
51980             <Type type="long"/>
51981           </Argument>
51982         </ArgumentList>
51983       </Operation>
51984       <Operation name="getTimezone" id="::Time::TZDate::getTimezone">
51985         <webidl>    DOMString getTimezone();</webidl>
51986         <descriptive>
51987             <brief>
51988  Returns timezone identifier.
51989             </brief>
51990            <description>
51991             <p>
51992 Zero or more slashes separate different components, with the most general
51993 descriptor first and the most specific one last. For example,
51994 'Europe/Berlin', 'America/Argentina/Buenos_Aires'.
51995             </p>
51996             <p>
51997 This attribute uniquely identifies the timezone.
51998             </p>
51999            </description>
52000             <version>
52001  1.0
52002             </version>
52003         </descriptive>
52004         <Type type="DOMString">
52005           <descriptive>
52006               <description><p>
52007  DOMString String timezone identifier. If TZDate is invalid, it will return 'Invalid Date'.
52008               </p></description>
52009           </descriptive>
52010         </Type>
52011         <ArgumentList/>
52012       </Operation>
52013       <Operation name="toTimezone" id="::Time::TZDate::toTimezone">
52014         <webidl>    <ref>TZDate</ref> toTimezone(DOMString tzid) raises(<ref>WebAPIException</ref>);</webidl>
52015         <descriptive>
52016             <brief>
52017  Returns a copy of the TZDate converted to a given time zone.
52018             </brief>
52019             <version>
52020  1.0
52021             </version>
52022         </descriptive>
52023         <Type name="TZDate">
52024           <descriptive>
52025               <description><p>
52026  TZDate New TZDate in given Timezone. 
52027               </p></description>
52028           </descriptive>
52029         </Type>
52030         <ArgumentList>
52031           <Argument name="tzid">
52032             <descriptive>
52033                 <description><p>
52034  Timezone identifier to set.
52035                 </p></description>
52036             </descriptive>
52037             <Type type="DOMString"/>
52038           </Argument>
52039         </ArgumentList>
52040         <Raises>
52041           <RaiseException name="WebAPIException">
52042             <descriptive>
52043                 <description><p>
52044  with error type TypeMismatchError, if the input parameter
52045 is not compatible with the expected type for that parameter.
52046                 </p></description>
52047                 <description><p>
52048  with error type InvalidValuesError, if the provided TZID
52049 is not recognized as a valid timezone identifier.
52050                 </p></description>
52051                 <description><p>
52052  with error type UnknownError, if the call failed due to an unknown error.
52053                 </p></description>
52054             </descriptive>
52055           </RaiseException>
52056         </Raises>
52057       </Operation>
52058       <Operation name="toLocalTimezone" id="::Time::TZDate::toLocalTimezone">
52059         <webidl>    <ref>TZDate</ref> toLocalTimezone() raises(<ref>WebAPIException</ref>);</webidl>
52060         <descriptive>
52061             <brief>
52062  Returns a copy of the TZDate converted to the local time zone.
52063             </brief>
52064             <version>
52065  1.0
52066             </version>
52067         </descriptive>
52068         <Type name="TZDate">
52069           <descriptive>
52070               <description><p>
52071  TZDate The new TZDate in local Timezone. 
52072               </p></description>
52073           </descriptive>
52074         </Type>
52075         <ArgumentList/>
52076         <Raises>
52077           <RaiseException name="WebAPIException">
52078             <descriptive>
52079                 <description><p>
52080  with error type UnknownError, if the call failed due to an unknown error.
52081                 </p></description>
52082             </descriptive>
52083           </RaiseException>
52084         </Raises>
52085       </Operation>
52086       <Operation name="toUTC" id="::Time::TZDate::toUTC">
52087         <webidl>    <ref>TZDate</ref> toUTC() raises(<ref>WebAPIException</ref>);</webidl>
52088         <descriptive>
52089             <brief>
52090  Returns a copy of the TZDate converted to Coordinated Universal Time (UTC).
52091             </brief>
52092             <version>
52093  1.0
52094             </version>
52095         </descriptive>
52096         <Type name="TZDate">
52097           <descriptive>
52098               <description><p>
52099  TZDate Date/Time in UTC.
52100               </p></description>
52101           </descriptive>
52102         </Type>
52103         <ArgumentList/>
52104         <Raises>
52105           <RaiseException name="WebAPIException">
52106             <descriptive>
52107                 <description><p>
52108  with error type UnknownError, if the call failed due to an unknown error.
52109                 </p></description>
52110             </descriptive>
52111           </RaiseException>
52112         </Raises>
52113       </Operation>
52114       <Operation name="difference" id="::Time::TZDate::difference">
52115         <webidl>    <ref>TimeDuration</ref> difference(<ref>TZDate</ref> other) raises(<ref>WebAPIException</ref>);</webidl>
52116         <descriptive>
52117             <brief>
52118  Calculates the difference with another TZDate object.
52119             </brief>
52120            <description>
52121             <p>
52122 Calculates the difference in time between <em>this</em> and other.
52123 This comparison method takes timezones into consideration for the comparison.
52124             </p>
52125             <p>
52126 The TimeDuration that is returned is effectively <em>this</em> - other.
52127 The return value is a duration in milliseconds both TZDate objects have a time component, in days, otherwise.
52128 The result value will be:
52129             </p>
52130             <ul>
52131               <li>
52132 Negative, if other is in the future              </li>
52133               <li>
52134 0 if the two date / times are equal              </li>
52135               <li>
52136 Positive, if other is in the past              </li>
52137             </ul>
52138            </description>
52139             <version>
52140  1.0
52141             </version>
52142         </descriptive>
52143         <Type name="TimeDuration">
52144           <descriptive>
52145               <description><p>
52146  TimeDuration Duration in milliseconds between the two date / time objects
52147 (or in days for comparison between dates with no time component).
52148               </p></description>
52149           </descriptive>
52150         </Type>
52151         <ArgumentList>
52152           <Argument name="other">
52153             <descriptive>
52154                 <description><p>
52155  Other Date/Time to compare to.
52156                 </p></description>
52157             </descriptive>
52158             <Type name="TZDate"/>
52159           </Argument>
52160         </ArgumentList>
52161         <Raises>
52162           <RaiseException name="WebAPIException">
52163             <descriptive>
52164                 <description><p>
52165  with error type TypeMismatchError, if the input parameter
52166 is not compatible with the expected type for that parameter.
52167                 </p></description>
52168                 <description><p>
52169  with error type UnknownError, if the call failed due to an unknown error.
52170                 </p></description>
52171             </descriptive>
52172           </RaiseException>
52173         </Raises>
52174       </Operation>
52175       <Operation name="equalsTo" id="::Time::TZDate::equalsTo">
52176         <webidl>    boolean equalsTo(<ref>TZDate</ref> other) raises(<ref>WebAPIException</ref>);</webidl>
52177         <descriptive>
52178             <brief>
52179  Checks if the TZDate is equal to another.
52180             </brief>
52181            <description>
52182             <p>
52183 This method takes the timezones into consideration and will return <em>true</em>if the two TZDate objects represent the same instant in different timezones.
52184             </p>
52185            </description>
52186             <version>
52187  1.0
52188             </version>
52189         </descriptive>
52190         <Type type="boolean">
52191           <descriptive>
52192               <description><p>
52193  boolean <em>true</em> if the 2 date/times are the same.
52194               </p></description>
52195           </descriptive>
52196         </Type>
52197         <ArgumentList>
52198           <Argument name="other">
52199             <descriptive>
52200                 <description><p>
52201  Other Date/Time to compare to.
52202                 </p></description>
52203             </descriptive>
52204             <Type name="TZDate"/>
52205           </Argument>
52206         </ArgumentList>
52207         <Raises>
52208           <RaiseException name="WebAPIException">
52209             <descriptive>
52210                 <description><p>
52211  with error type TypeMismatchError, if the input parameter
52212 is not compatible with the expected type for that parameter.
52213                 </p></description>
52214                 <description><p>
52215  with error type UnknownError, if the call failed due to an unknown error.
52216                 </p></description>
52217             </descriptive>
52218           </RaiseException>
52219         </Raises>
52220       </Operation>
52221       <Operation name="earlierThan" id="::Time::TZDate::earlierThan">
52222         <webidl>    boolean earlierThan(<ref>TZDate</ref> other) raises(<ref>WebAPIException</ref>);</webidl>
52223         <descriptive>
52224             <brief>
52225  Checks if the TZDate is earlier than another.
52226             </brief>
52227            <description>
52228             <p>
52229 This method takes the timezones into consideration.
52230             </p>
52231            </description>
52232             <version>
52233  1.0
52234             </version>
52235         </descriptive>
52236         <Type type="boolean">
52237           <descriptive>
52238               <description><p>
52239  boolean <em>true</em>, if the Date/Time is earlier than the one passed in argument.
52240               </p></description>
52241           </descriptive>
52242         </Type>
52243         <ArgumentList>
52244           <Argument name="other">
52245             <descriptive>
52246                 <description><p>
52247  Other Date/Time to compare to.
52248                 </p></description>
52249             </descriptive>
52250             <Type name="TZDate"/>
52251           </Argument>
52252         </ArgumentList>
52253         <Raises>
52254           <RaiseException name="WebAPIException">
52255             <descriptive>
52256                 <description><p>
52257  with error type TypeMismatchError, if the input parameter
52258 is not compatible with the expected type for that parameter.
52259                 </p></description>
52260                 <description><p>
52261  with error type UnknownError, if the call failed due to an unknown error.
52262                 </p></description>
52263             </descriptive>
52264           </RaiseException>
52265         </Raises>
52266       </Operation>
52267       <Operation name="laterThan" id="::Time::TZDate::laterThan">
52268         <webidl>    boolean laterThan(<ref>TZDate</ref> other) raises(<ref>WebAPIException</ref>);</webidl>
52269         <descriptive>
52270             <brief>
52271  Checks if the TZDate is later than another.
52272             </brief>
52273            <description>
52274             <p>
52275 This method takes the timezones into consideration.
52276             </p>
52277            </description>
52278             <version>
52279  1.0
52280             </version>
52281         </descriptive>
52282         <Type type="boolean">
52283           <descriptive>
52284               <description><p>
52285  boolean <em>true</em>, if the Date/Time is later than the one passed in argument.
52286               </p></description>
52287           </descriptive>
52288         </Type>
52289         <ArgumentList>
52290           <Argument name="other">
52291             <descriptive>
52292                 <description><p>
52293  Other Date/Time to compare to.
52294                 </p></description>
52295             </descriptive>
52296             <Type name="TZDate"/>
52297           </Argument>
52298         </ArgumentList>
52299         <Raises>
52300           <RaiseException name="WebAPIException">
52301             <descriptive>
52302                 <description><p>
52303  with error type TypeMismatchError, if the input parameter
52304 is not compatible with the expected type for that parameter.
52305                 </p></description>
52306                 <description><p>
52307  with error type UnknownError, if the call failed due to an unknown error.
52308                 </p></description>
52309             </descriptive>
52310           </RaiseException>
52311         </Raises>
52312       </Operation>
52313       <Operation name="addDuration" id="::Time::TZDate::addDuration">
52314         <webidl>    <ref>TZDate</ref> addDuration(<ref>TimeDuration</ref> duration) raises(<ref>WebAPIException</ref>);</webidl>
52315         <descriptive>
52316             <brief>
52317  Returns a new date by adding a duration to the current TZDate object.
52318             </brief>
52319            <description>
52320             <p>
52321 If the length of duration is negative, the new date / time will be
52322 earlier than it used to.
52323             </p>
52324             <p>
52325 Note that calling this method does not alter the current object.
52326             </p>
52327            </description>
52328             <version>
52329  1.0
52330             </version>
52331             <Code> var now = tizen.time.getCurrentDateTime();
52332  var in_one_week = now.addDuration(new tizen.TimeDuration(7, &quot;DAYS&quot;));
52333  </Code>
52334         </descriptive>
52335         <Type name="TZDate">
52336           <descriptive>
52337               <description><p>
52338  TZDate The new TZDate by adding a duration.
52339               </p></description>
52340           </descriptive>
52341         </Type>
52342         <ArgumentList>
52343           <Argument name="duration">
52344             <descriptive>
52345                 <description><p>
52346  TimeDuration to add.  
52347                 </p></description>
52348             </descriptive>
52349             <Type name="TimeDuration"/>
52350           </Argument>
52351         </ArgumentList>
52352         <Raises>
52353           <RaiseException name="WebAPIException">
52354             <descriptive>
52355                 <description><p>
52356  with error type TypeMismatchError, if the input parameter
52357 is not compatible with the expected type for that parameter. 
52358                 </p></description>
52359                 <description><p>
52360  with error type UnknownError, if the call failed due to an unknown error.
52361                 </p></description>
52362             </descriptive>
52363           </RaiseException>
52364         </Raises>
52365       </Operation>
52366       <Operation name="toLocaleDateString" id="::Time::TZDate::toLocaleDateString">
52367         <webidl>    DOMString toLocaleDateString();</webidl>
52368         <descriptive>
52369             <brief>
52370  Returns the date portion of a TZDate object as a string, using locale conventions.
52371             </brief>
52372             <version>
52373  1.0
52374             </version>
52375         </descriptive>
52376         <Type type="DOMString">
52377           <descriptive>
52378               <description><p>
52379  DOMString Date portion of the TZDate object as a string, using locale conventions. If TZDate is invalid, it will return 'Invalid Date'.
52380               </p></description>
52381           </descriptive>
52382         </Type>
52383         <ArgumentList/>
52384       </Operation>
52385       <Operation name="toLocaleTimeString" id="::Time::TZDate::toLocaleTimeString">
52386         <webidl>    DOMString toLocaleTimeString();</webidl>
52387         <descriptive>
52388             <brief>
52389  Returns the time portion of a TZDate object as a string, using locale conventions.
52390             </brief>
52391             <version>
52392  1.0
52393             </version>
52394         </descriptive>
52395         <Type type="DOMString">
52396           <descriptive>
52397               <description><p>
52398  DOMString Time portion of the TZDate object as a string, using locale conventions. If TZDate is invalid, it will return 'Invalid Date'.
52399               </p></description>
52400           </descriptive>
52401         </Type>
52402         <ArgumentList/>
52403       </Operation>
52404       <Operation name="toLocaleString" id="::Time::TZDate::toLocaleString">
52405         <webidl>    DOMString toLocaleString();</webidl>
52406         <descriptive>
52407             <brief>
52408  Converts a TZDate object to a string, using locale conventions.
52409             </brief>
52410             <version>
52411  1.0
52412             </version>
52413         </descriptive>
52414         <Type type="DOMString">
52415           <descriptive>
52416               <description><p>
52417  DOMString String representation of the TZDate object, using locale conventions. If TZDate is invalid, it will return 'Invalid Date'.
52418               </p></description>
52419           </descriptive>
52420         </Type>
52421         <ArgumentList/>
52422       </Operation>
52423       <Operation name="toDateString" id="::Time::TZDate::toDateString">
52424         <webidl>    DOMString toDateString();</webidl>
52425         <descriptive>
52426             <brief>
52427  Returns the date portion of a TZDate object as a string.
52428             </brief>
52429             <version>
52430  1.0
52431             </version>
52432         </descriptive>
52433         <Type type="DOMString">
52434           <descriptive>
52435               <description><p>
52436  DOMString Date portion of the TZDate object as a string. If TZDate is invalid, it will return 'Invalid Date'.
52437               </p></description>
52438           </descriptive>
52439         </Type>
52440         <ArgumentList/>
52441       </Operation>
52442       <Operation name="toTimeString" id="::Time::TZDate::toTimeString">
52443         <webidl>    DOMString toTimeString();</webidl>
52444         <descriptive>
52445             <brief>
52446  Returns the time portion of a TZDate object as a string.
52447             </brief>
52448             <version>
52449  1.0
52450             </version>
52451         </descriptive>
52452         <Type type="DOMString">
52453           <descriptive>
52454               <description><p>
52455  DOMString Time portion of the TZDate object as a string. If TZDate is invalid, it will return 'Invalid Date'.
52456               </p></description>
52457           </descriptive>
52458         </Type>
52459         <ArgumentList/>
52460       </Operation>
52461       <Operation name="toString" id="::Time::TZDate::toString">
52462         <webidl>    DOMString toString();</webidl>
52463         <descriptive>
52464             <brief>
52465  Converts a TZDate object to a string.
52466             </brief>
52467             <version>
52468  1.0
52469             </version>
52470         </descriptive>
52471         <Type type="DOMString">
52472           <descriptive>
52473               <description><p>
52474  DOMString String representation of the TZDate object. If TZDate is invalid, it will return 'Invalid Date'.
52475               </p></description>
52476           </descriptive>
52477         </Type>
52478         <ArgumentList/>
52479       </Operation>
52480       <Operation name="getTimezoneAbbreviation" id="::Time::TZDate::getTimezoneAbbreviation">
52481         <webidl>    DOMString getTimezoneAbbreviation() raises(<ref>WebAPIException</ref>);</webidl>
52482         <descriptive>
52483             <brief>
52484  Determines the time zone abbreviation to be used at a particular date in the time zone.
52485             </brief>
52486            <description>
52487             <p>
52488 For example, in Toronto this is currently &quot;EST&quot; during the winter months and &quot;EDT&quot; during the
52489 summer months when daylight savings time is in effect.
52490             </p>
52491            </description>
52492             <version>
52493  1.0
52494             </version>
52495             <deprecated>
52496  Some timezones return &quot;GMT[+-]hh:mm&quot;. It is inconsistent.
52497             </deprecated>
52498         </descriptive>
52499         <Type type="DOMString">
52500           <descriptive>
52501               <description><p>
52502  DOMString Abbreviation of the time zone (such as &quot;EST&quot;). If TZDate is invalid, it will return 'Invalid Date'.
52503               </p></description>
52504           </descriptive>
52505         </Type>
52506         <ArgumentList/>
52507         <Raises>
52508           <RaiseException name="WebAPIException">
52509             <descriptive>
52510                 <description><p>
52511  with error type UnknownError, if the call failed due to an unknown error.
52512                 </p></description>
52513             </descriptive>
52514           </RaiseException>
52515         </Raises>
52516       </Operation>
52517       <Operation name="secondsFromUTC" id="::Time::TZDate::secondsFromUTC">
52518         <webidl>    long secondsFromUTC() raises(<ref>WebAPIException</ref>);</webidl>
52519         <descriptive>
52520             <brief>
52521  Gets the number of seconds from Coordinated Universal Time (UTC) offset for the timezone.
52522             </brief>
52523            <description>
52524             <p>
52525 Returns the offset (in seconds) from UTC of the timezone, accounting for daylight
52526 savings if in effect in the timezone. For example, if time zone is GMT+8, it will return -32,400.
52527             </p>
52528            </description>
52529             <version>
52530  1.0
52531             </version>
52532             <Code> var offset = tizen.time.getCurrentDateTime().secondsFromUTC();
52533  var myDate = new Date();
52534  var exp_offset = myDate.getTimezoneOffset()*60;
52535  //offset is equals to exp_offset.
52536  </Code>
52537         </descriptive>
52538         <Type type="long">
52539           <descriptive>
52540               <description><p>
52541  long Offset from UTC in seconds.
52542               </p></description>
52543           </descriptive>
52544         </Type>
52545         <ArgumentList/>
52546         <Raises>
52547           <RaiseException name="WebAPIException">
52548             <descriptive>
52549                 <description><p>
52550  with error type UnknownError, if the call failed due to an unknown error.
52551                 </p></description>
52552             </descriptive>
52553           </RaiseException>
52554         </Raises>
52555       </Operation>
52556       <Operation name="isDST" id="::Time::TZDate::isDST">
52557         <webidl>    boolean isDST() raises(<ref>WebAPIException</ref>);</webidl>
52558         <descriptive>
52559             <brief>
52560  Indicates if Daylight Saving Time(DST) is active for this TZDate.
52561             </brief>
52562            <description>
52563             <p>
52564 Indicates if daylight savings are in effect for the time zone and instant
52565 identified by the TZDate object.
52566             </p>
52567            </description>
52568             <version>
52569  1.0
52570             </version>
52571         </descriptive>
52572         <Type type="boolean">
52573           <descriptive>
52574               <description><p>
52575  boolean Flag indicating if daylight saving are in effect.
52576               </p></description>
52577           </descriptive>
52578         </Type>
52579         <ArgumentList/>
52580         <Raises>
52581           <RaiseException name="WebAPIException">
52582             <descriptive>
52583                 <description><p>
52584  with error type UnknownError, if the call failed due to an unknown error.
52585                 </p></description>
52586             </descriptive>
52587           </RaiseException>
52588         </Raises>
52589       </Operation>
52590       <Operation name="getPreviousDSTTransition" id="::Time::TZDate::getPreviousDSTTransition">
52591         <webidl>    <ref>TZDate</ref>? getPreviousDSTTransition() raises(<ref>WebAPIException</ref>);</webidl>
52592         <descriptive>
52593             <brief>
52594  Returns the date of the previous daylight saving time transition for the timezone.
52595             </brief>
52596             <version>
52597  1.0
52598             </version>
52599         </descriptive>
52600         <Type name="TZDate" nullable="nullable">
52601           <descriptive>
52602               <description><p>
52603  TZDate The date of the previous daylight saving transition (before the instant identified by the TZDate).
52604               </p></description>
52605           </descriptive>
52606         </Type>
52607         <ArgumentList/>
52608         <Raises>
52609           <RaiseException name="WebAPIException">
52610             <descriptive>
52611                 <description><p>
52612  with error type UnknownError, if the call failed due to an unknown error.
52613                 </p></description>
52614             </descriptive>
52615           </RaiseException>
52616         </Raises>
52617       </Operation>
52618       <Operation name="getNextDSTTransition" id="::Time::TZDate::getNextDSTTransition">
52619         <webidl>    <ref>TZDate</ref>? getNextDSTTransition() raises(<ref>WebAPIException</ref>);</webidl>
52620         <descriptive>
52621             <brief>
52622  Returns the date of the next daylight saving time transition for the timezone.
52623             </brief>
52624             <version>
52625  1.0
52626             </version>
52627         </descriptive>
52628         <Type name="TZDate" nullable="nullable">
52629           <descriptive>
52630               <description><p>
52631  TZDate The date of the next daylight saving transition (after the instant identified by the TZDate).
52632               </p></description>
52633           </descriptive>
52634         </Type>
52635         <ArgumentList/>
52636         <Raises>
52637           <RaiseException name="WebAPIException">
52638             <descriptive>
52639                 <description><p>
52640  with error type UnknownError, if the call failed due to an unknown error.
52641                 </p></description>
52642             </descriptive>
52643           </RaiseException>
52644         </Raises>
52645       </Operation>
52646     </Interface>
52647     <Interface name="TimeDuration" id="::Time::TimeDuration">
52648       <webidl>  [Constructor(long long length, optional <ref>TimeDurationUnit</ref>? unit)]
52649   interface TimeDuration
52650   {   
52651     attribute long long length;
52652     
52653     attribute <ref>TimeDurationUnit</ref> unit;
52654     
52655     <ref>TimeDuration</ref> difference(<ref>TimeDuration</ref> other) raises(<ref>WebAPIException</ref>);
52656     
52657     boolean equalsTo(<ref>TimeDuration</ref> other) raises(<ref>WebAPIException</ref>);
52658     
52659     boolean lessThan(<ref>TimeDuration</ref> other) raises(<ref>WebAPIException</ref>);
52660     
52661     boolean greaterThan(<ref>TimeDuration</ref> other) raises(<ref>WebAPIException</ref>);
52662   };</webidl>
52663       <descriptive>
52664           <brief>
52665  The TimeDuration object that contains the length and its associated 
52666 time unit.
52667           </brief>
52668           <version>
52669  1.0
52670           </version>
52671           <Code> var now = tizen.time.getCurrentDateTime();
52672  var tomorrow = now.addDuration(new tizen.TimeDuration(1, &quot;DAYS&quot;)); // Becomes tomorrow, same time.
52673  </Code>
52674       </descriptive>
52675       <ExtendedAttributeList>
52676         <ExtendedAttribute name="Constructor">
52677           <webidl>Constructor(long long length, optional <ref>TimeDurationUnit</ref>? unit)</webidl>
52678           <ArgumentList>
52679             <Argument name="length">
52680               <Type type="long long"/>
52681             </Argument>
52682             <Argument optional="optional" name="unit">
52683               <Type name="TimeDurationUnit" nullable="nullable"/>
52684             </Argument>
52685           </ArgumentList>
52686         </ExtendedAttribute>
52687       </ExtendedAttributeList>
52688       <Attribute name="length" id="::Time::TimeDuration::length">
52689         <webidl>    attribute long long length;</webidl>
52690         <descriptive>
52691             <brief>
52692  Duration length.
52693             </brief>
52694            <description>
52695             <p>
52696 The unit of the duration length (milliseconds, seconds, minutes, hours, or days)
52697 is determined by the duration unit attribute.
52698             </p>
52699            </description>
52700             <version>
52701  1.0
52702             </version>
52703         </descriptive>
52704         <Type type="long long"/>
52705       </Attribute>
52706       <Attribute name="unit" id="::Time::TimeDuration::unit">
52707         <webidl>    attribute <ref>TimeDurationUnit</ref> unit;</webidl>
52708         <descriptive>
52709             <brief>
52710  Duration unit (milliseconds, seconds, minutes, hours, or days).
52711             </brief>
52712            <description>
52713             <p>
52714 The default value is &quot;MSECS&quot; (milliseconds unit).
52715             </p>
52716            </description>
52717             <version>
52718  1.0
52719             </version>
52720         </descriptive>
52721         <Type name="TimeDurationUnit"/>
52722       </Attribute>
52723       <Operation name="difference" id="::Time::TimeDuration::difference">
52724         <webidl>    <ref>TimeDuration</ref> difference(<ref>TimeDuration</ref> other) raises(<ref>WebAPIException</ref>);</webidl>
52725         <descriptive>
52726             <brief>
52727  Calculates the difference between two TimeDuration objects.
52728             </brief>
52729            <description>
52730             <p>
52731 Calculates the difference in time between <em>this</em> and <em>other</em>.
52732 The TimeDuration that is returned is effectively <em>first</em> - <em>other</em> (that is: positive if the first parameter is larger).
52733             </p>
52734             <p>
52735 The returned TimeDuration is the biggest possible unit without losing the precision.
52736             </p>
52737            </description>
52738             <version>
52739  1.0
52740             </version>
52741             <Code> // Compute event1.duration - event2.duration
52742  var diff = event1.duration.difference(event2.duration);
52743  if (diff.length > 0)
52744    console.log(&quot;event 1's duration is longer than event 2's&quot;);
52745  else if (diff.length == 0)
52746    console.log(&quot;event 1's duration is as long as event 2's&quot;);
52747  else
52748    console.log(&quot;event 1's duration is shorter than event 2's&quot;);
52749  </Code>
52750         </descriptive>
52751         <Type name="TimeDuration">
52752           <descriptive>
52753               <description><p>
52754  New TimeDuration object corresponding to the result of <em>this</em> - <em>other</em>.
52755               </p></description>
52756           </descriptive>
52757         </Type>
52758         <ArgumentList>
52759           <Argument name="other">
52760             <descriptive>
52761                 <description><p>
52762  Other TimeDuration object to compare to.
52763                 </p></description>
52764             </descriptive>
52765             <Type name="TimeDuration"/>
52766           </Argument>
52767         </ArgumentList>
52768         <Raises>
52769           <RaiseException name="WebAPIException">
52770             <descriptive>
52771                 <description><p>
52772  with error type TypeMismatchError, if the input parameter
52773 is not compatible with the expected type for that parameter.
52774                 </p></description>
52775                 <description><p>
52776  with error type UnknownError, if the call failed due to an unknown error.
52777                 </p></description>
52778             </descriptive>
52779           </RaiseException>
52780         </Raises>
52781       </Operation>
52782       <Operation name="equalsTo" id="::Time::TimeDuration::equalsTo">
52783         <webidl>    boolean equalsTo(<ref>TimeDuration</ref> other) raises(<ref>WebAPIException</ref>);</webidl>
52784         <descriptive>
52785             <brief>
52786  Checks if the TimeDuration is equal to another.
52787             </brief>
52788            <description>
52789             <p>
52790 This method takes the units into consideration and will return true
52791 if the two TimeDuration objects represent the same duration in different units.
52792             </p>
52793            </description>
52794             <version>
52795  1.0
52796             </version>
52797             <Code> var d1 = new tizen.TimeDuration(60, &quot;MINS&quot;); // 60 minutes
52798  var d2 = new tizen.TimeDuration(1, &quot;HOURS&quot;); // 1 hour
52799  var ret = d1.equalsTo(d2); // Returns true
52800  </Code>
52801         </descriptive>
52802         <Type type="boolean">
52803           <descriptive>
52804               <description><p>
52805  boolean <em>true</em> if the two TimeDuration object represent the same duration.
52806               </p></description>
52807           </descriptive>
52808         </Type>
52809         <ArgumentList>
52810           <Argument name="other">
52811             <descriptive>
52812                 <description><p>
52813  Other TimeDuration object to compare to.
52814                 </p></description>
52815             </descriptive>
52816             <Type name="TimeDuration"/>
52817           </Argument>
52818         </ArgumentList>
52819         <Raises>
52820           <RaiseException name="WebAPIException">
52821             <descriptive>
52822                 <description><p>
52823  with error type TypeMismatchError, if the input parameter
52824 is not compatible with the expected type for that parameter.
52825                 </p></description>
52826                 <description><p>
52827  with error type UnknownError, if the call failed due to an unknown error.
52828                 </p></description>
52829             </descriptive>
52830           </RaiseException>
52831         </Raises>
52832       </Operation>
52833       <Operation name="lessThan" id="::Time::TimeDuration::lessThan">
52834         <webidl>    boolean lessThan(<ref>TimeDuration</ref> other) raises(<ref>WebAPIException</ref>);</webidl>
52835         <descriptive>
52836             <brief>
52837  Checks if the TimeDuration is lower than another.
52838             </brief>
52839            <description>
52840             <p>
52841 This method takes the units into consideration when doing the comparison.
52842             </p>
52843            </description>
52844             <version>
52845  1.0
52846             </version>
52847             <Code> var d1 = new tizen.TimeDuration(1, &quot;HOURS&quot;); // 1 hour
52848  var d2 = new tizen.TimeDuration(120, &quot;MINS&quot;); // 120 minutes
52849  var ret = d1.lessThan(d2); // Returns true
52850  </Code>
52851         </descriptive>
52852         <Type type="boolean">
52853           <descriptive>
52854               <description><p>
52855  boolean <em>true</em> if the TimeDuration is less than <em>other</em>.
52856               </p></description>
52857           </descriptive>
52858         </Type>
52859         <ArgumentList>
52860           <Argument name="other">
52861             <descriptive>
52862                 <description><p>
52863  Other TimeDuration object to compare to.
52864                 </p></description>
52865             </descriptive>
52866             <Type name="TimeDuration"/>
52867           </Argument>
52868         </ArgumentList>
52869         <Raises>
52870           <RaiseException name="WebAPIException">
52871             <descriptive>
52872                 <description><p>
52873  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
52874                 </p></description>
52875                 <description><p>
52876  with error type UnknownError, if the call failed due to an unknown error.
52877                 </p></description>
52878             </descriptive>
52879           </RaiseException>
52880         </Raises>
52881       </Operation>
52882       <Operation name="greaterThan" id="::Time::TimeDuration::greaterThan">
52883         <webidl>    boolean greaterThan(<ref>TimeDuration</ref> other) raises(<ref>WebAPIException</ref>);</webidl>
52884         <descriptive>
52885             <brief>
52886  Checks if the TimeDuration is greater than another.
52887             </brief>
52888            <description>
52889             <p>
52890 This method takes the units into consideration when doing the comparison.
52891             </p>
52892            </description>
52893             <version>
52894  1.0
52895             </version>
52896             <Code> var d1 = new tizen.TimeDuration(120, &quot;MINS&quot;); // 120 minutes
52897  var d2 = new tizen.TimeDuration(1, &quot;HOURS&quot;); // 1 hour
52898  var ret = d1.greaterThan(d2); // Returns true
52899  </Code>
52900         </descriptive>
52901         <Type type="boolean">
52902           <descriptive>
52903               <description><p>
52904  boolean <em>true</em> if the TimeDuration is greater than <em>other</em>.
52905               </p></description>
52906           </descriptive>
52907         </Type>
52908         <ArgumentList>
52909           <Argument name="other">
52910             <descriptive>
52911                 <description><p>
52912  Other TimeDuration object to compare to.
52913                 </p></description>
52914             </descriptive>
52915             <Type name="TimeDuration"/>
52916           </Argument>
52917         </ArgumentList>
52918         <Raises>
52919           <RaiseException name="WebAPIException">
52920             <descriptive>
52921                 <description><p>
52922  with error type TypeMismatchError, if the input parameter
52923 is not compatible with the expected type for that parameter.
52924                 </p></description>
52925                 <description><p>
52926  with error type UnknownError, if the call failed due to an unknown error.
52927                 </p></description>
52928             </descriptive>
52929           </RaiseException>
52930         </Raises>
52931       </Operation>
52932     </Interface>
52933   </Module>
52934   <Module name="Tizen" id="::Tizen">
52935     <webidl>module Tizen {
52936   enum FilterMatchFlag { &quot;EXACTLY&quot;, &quot;FULLSTRING&quot;, &quot;CONTAINS&quot;, &quot;STARTSWITH&quot;, &quot;ENDSWITH&quot;, &quot;EXISTS&quot; };
52937
52938   enum SortModeOrder { &quot;ASC&quot;, &quot;DESC&quot; };
52939
52940   enum CompositeFilterType { &quot;UNION&quot;, &quot;INTERSECTION&quot; };
52941
52942   [NoInterfaceObject] interface TizenObject {
52943     readonly attribute <ref>Tizen</ref> tizen;
52944   };
52945   <ref>Window</ref> implements <ref>TizenObject</ref>;
52946
52947   [NoInterfaceObject] interface Tizen {
52948   };
52949
52950   [NoInterfaceObject] interface AbstractFilter {
52951   };
52952
52953   [Constructor(DOMString attributeName, optional <ref>FilterMatchFlag</ref>? matchFlag, optional any matchValue)]
52954   interface AttributeFilter : <ref>AbstractFilter</ref> {
52955     attribute DOMString attributeName;
52956
52957     attribute <ref>FilterMatchFlag</ref> matchFlag setraises(<ref>WebAPIException</ref>);
52958
52959     attribute any matchValue;
52960   };
52961
52962   [Constructor(DOMString attributeName, optional any initialValue, optional any endValue)]
52963   interface AttributeRangeFilter : <ref>AbstractFilter</ref> {
52964     attribute DOMString attributeName;
52965
52966     attribute any initialValue;
52967
52968     attribute any endValue;
52969   };
52970
52971   [Constructor(<ref>CompositeFilterType</ref> type, optional <ref>AbstractFilter</ref>[]? filters)]
52972   interface CompositeFilter : <ref>AbstractFilter</ref> {
52973
52974     attribute <ref>CompositeFilterType</ref> type;
52975
52976     attribute <ref>AbstractFilter</ref>[] filters;
52977   };
52978
52979   [Constructor(DOMString attributeName, optional <ref>SortModeOrder</ref>? order)]
52980   interface SortMode {
52981     attribute DOMString attributeName;
52982
52983     attribute <ref>SortModeOrder</ref> order setraises(<ref>WebAPIException</ref>);
52984   };
52985
52986   [Constructor(double latitude, double longitude)]
52987   interface SimpleCoordinates {
52988     attribute double latitude setraises(<ref>WebAPIException</ref>);
52989
52990     attribute double longitude setraises(<ref>WebAPIException</ref>);
52991   };
52992
52993   [NoInterfaceObject]
52994   interface WebAPIException {
52995     readonly attribute unsigned short code;
52996
52997     readonly attribute DOMString name;
52998
52999     readonly attribute DOMString message;
53000
53001     const unsigned short INDEX_SIZE_ERR = 1;
53002     const unsigned short DOMSTRING_SIZE_ERR = 2; 
53003     const unsigned short HIERARCHY_REQUEST_ERR = 3;
53004     const unsigned short WRONG_DOCUMENT_ERR = 4;
53005     const unsigned short INVALID_CHARACTER_ERR = 5;
53006     const unsigned short NO_DATA_ALLOWED_ERR = 6; 
53007     const unsigned short NO_MODIFICATION_ALLOWED_ERR = 7;
53008     const unsigned short NOT_FOUND_ERR = 8;
53009     const unsigned short NOT_SUPPORTED_ERR = 9;
53010     const unsigned short INUSE_ATTRIBUTE_ERR = 10; 
53011     const unsigned short INVALID_STATE_ERR = 11;
53012     const unsigned short SYNTAX_ERR = 12;
53013     const unsigned short INVALID_MODIFICATION_ERR = 13;
53014     const unsigned short NAMESPACE_ERR = 14;
53015     const unsigned short INVALID_ACCESS_ERR = 15;
53016     const unsigned short VALIDATION_ERR = 16; 
53017     const unsigned short TYPE_MISMATCH_ERR = 17;
53018     const unsigned short SECURITY_ERR = 18;
53019     const unsigned short NETWORK_ERR = 19;
53020     const unsigned short ABORT_ERR = 20;
53021     const unsigned short URL_MISMATCH_ERR = 21;
53022     const unsigned short QUOTA_EXCEEDED_ERR = 22;
53023     const unsigned short TIMEOUT_ERR = 23;
53024     const unsigned short INVALID_NODE_TYPE_ERR = 24;
53025     const unsigned short DATA_CLONE_ERR = 25;
53026   };
53027
53028   [NoInterfaceObject]
53029   interface WebAPIError {
53030     readonly attribute unsigned short code;
53031
53032     readonly attribute DOMString name;
53033
53034     readonly attribute DOMString message;
53035   };
53036
53037   [Callback=FunctionOnly, NoInterfaceObject]
53038   interface SuccessCallback {
53039     void onsuccess ();
53040   };
53041
53042   [Callback=FunctionOnly, NoInterfaceObject]
53043   interface ErrorCallback {
53044
53045     void onerror (<ref>WebAPIError</ref> error);
53046   };
53047 };</webidl>
53048     <descriptive>
53049         <brief>
53050  This API provides common Tizen functionality.
53051         </brief>
53052        <description>
53053         <p>
53054 The API provides the basic definitions that are used in the Tizen Web Device API.
53055 These include generic callbacks that are invoked when the operations succeed or fail,
53056 WebAPIError and WebAPIException that gives information of the platform's error and
53057 filters interfaces that are used to make query for searching.
53058         </p>
53059         <p>
53060 Additionally, this API specifies the location in the ECMAScript hierarchy in which
53061 the Tizen Web Device API is instantiated (<em>window.tizen</em>).
53062         </p>
53063         <p>
53064 For more information on the Tizen features, see <a href="../../org.tizen.web.appprogramming/html/guide/tizen_guide/tizen.htm">Tizen Guide</a>.  
53065         </p>
53066        </description>
53067         <version>
53068  1.0
53069         </version>
53070     </descriptive>
53071     <Enum name="FilterMatchFlag" id="::Tizen::FilterMatchFlag">
53072       <webidl>  enum FilterMatchFlag { &quot;EXACTLY&quot;, &quot;FULLSTRING&quot;, &quot;CONTAINS&quot;, &quot;STARTSWITH&quot;, &quot;ENDSWITH&quot;, &quot;EXISTS&quot; };</webidl>
53073       <descriptive>
53074           <brief>
53075  Filter match flag.
53076           </brief>
53077          <description>
53078           <p>
53079 These values are supported:
53080           </p>
53081           <ul>
53082             <li>
53083 EXACTLY - Indicates that an attribute value should match exactly with the specified default value. 
53084 For strings, this type of comparison is case-sensitive.            </li>
53085             <li>
53086 FULLSTRING - Indicates String-based comparison and that the attribute value should match the whole string (case insensitive).            </li>
53087             <li>
53088 CONTAINS - Indicates that an attribute value should contain the specified string. This type of comparison works only on strings and is case insensitive.            </li>
53089             <li>
53090 STARTSWITH - Indicates that an attribute value should start with the specified string. 
53091 This type of comparison works only on strings and is case insensitive.            </li>
53092             <li>
53093 ENDSWITH - Indicates that an attribute value should end with the specified string. This type of comparison works only on strings and is case insensitive.            </li>
53094             <li>
53095 EXISTS - Indicates that a filter comparison should match if the specified attribute exists.            </li>
53096           </ul>
53097          </description>
53098           <version>
53099  1.0
53100           </version>
53101       </descriptive>
53102       <EnumValue stringvalue="EXACTLY">
53103         <webidl> &quot;EXACTLY</webidl>
53104       </EnumValue>
53105       <EnumValue stringvalue="FULLSTRING">
53106         <webidl> &quot;FULLSTRING</webidl>
53107       </EnumValue>
53108       <EnumValue stringvalue="CONTAINS">
53109         <webidl> &quot;CONTAINS</webidl>
53110       </EnumValue>
53111       <EnumValue stringvalue="STARTSWITH">
53112         <webidl> &quot;STARTSWITH</webidl>
53113       </EnumValue>
53114       <EnumValue stringvalue="ENDSWITH">
53115         <webidl> &quot;ENDSWITH</webidl>
53116       </EnumValue>
53117       <EnumValue stringvalue="EXISTS">
53118         <webidl> &quot;EXISTS</webidl>
53119       </EnumValue>
53120     </Enum>
53121     <Enum name="SortModeOrder" id="::Tizen::SortModeOrder">
53122       <webidl>  enum SortModeOrder { &quot;ASC&quot;, &quot;DESC&quot; };</webidl>
53123       <descriptive>
53124           <brief>
53125  An enumerator that indicates the sorting order.
53126           </brief>
53127          <description>
53128           <p>
53129 The following values are supported:
53130           </p>
53131           <ul>
53132             <li>
53133 ASC - Indicates the sorting order is ascending            </li>
53134             <li>
53135 DESC - Indicates the sorting order is descending            </li>
53136           </ul>
53137          </description>
53138           <version>
53139  1.0
53140           </version>
53141       </descriptive>
53142       <EnumValue stringvalue="ASC">
53143         <webidl> &quot;ASC</webidl>
53144       </EnumValue>
53145       <EnumValue stringvalue="DESC">
53146         <webidl> &quot;DESC</webidl>
53147       </EnumValue>
53148     </Enum>
53149     <Enum name="CompositeFilterType" id="::Tizen::CompositeFilterType">
53150       <webidl>  enum CompositeFilterType { &quot;UNION&quot;, &quot;INTERSECTION&quot; };</webidl>
53151       <descriptive>
53152           <brief>
53153  An enumerator that indicates the type of composite filter.
53154           </brief>
53155          <description>
53156           <p>
53157 The following values are supported:
53158           </p>
53159           <ul>
53160             <li>
53161 UNION - Indicates that the composite is a union of filters (&quot;OR&quot; operator)            </li>
53162             <li>
53163 INTERSECTION - Indicates that the composite is an intersection of filters (&quot;AND&quot; operator)            </li>
53164           </ul>
53165          </description>
53166           <version>
53167  1.0
53168           </version>
53169       </descriptive>
53170       <EnumValue stringvalue="UNION">
53171         <webidl> &quot;UNION</webidl>
53172       </EnumValue>
53173       <EnumValue stringvalue="INTERSECTION">
53174         <webidl> &quot;INTERSECTION</webidl>
53175       </EnumValue>
53176     </Enum>
53177     <Interface name="TizenObject" id="::Tizen::TizenObject">
53178       <webidl>  [NoInterfaceObject] interface TizenObject {
53179     readonly attribute <ref>Tizen</ref> tizen;
53180   };</webidl>
53181       <descriptive>
53182           <brief>
53183  Defines the tizen interface as a part of the window global object.
53184           </brief>
53185          <description>
53186           <p>
53187 The <em>Tizen</em> interface is always available within the <em>Window </em>object in the ECMAScript hierarchy.
53188           </p>
53189          </description>
53190           <version>
53191  1.0
53192           </version>
53193       </descriptive>
53194       <ExtendedAttributeList>
53195         <ExtendedAttribute name="NoInterfaceObject">
53196           <webidl>NoInterfaceObject</webidl>
53197         </ExtendedAttribute>
53198       </ExtendedAttributeList>
53199       <Attribute readonly="readonly" name="tizen" id="::Tizen::TizenObject::tizen">
53200         <webidl>    readonly attribute <ref>Tizen</ref> tizen;</webidl>
53201         <Type name="Tizen"/>
53202       </Attribute>
53203     </Interface>
53204     <Implements name1="Window" name2="TizenObject">
53205       <webidl>  <ref>Window</ref> implements <ref>TizenObject</ref>;</webidl>
53206     </Implements>
53207     <Interface name="Tizen" id="::Tizen::Tizen">
53208       <webidl>  [NoInterfaceObject] interface Tizen {
53209   };</webidl>
53210       <descriptive>
53211           <brief>
53212  The root of Tizen Web Device API.
53213           </brief>
53214          <description>
53215           <p>
53216 This is the Tizen root interface.
53217 It is a property of the ECMAScript global object, as specified by the <em>TizenObject</em> interface.
53218           </p>
53219          </description>
53220           <version>
53221  1.0
53222           </version>
53223       </descriptive>
53224       <ExtendedAttributeList>
53225         <ExtendedAttribute name="NoInterfaceObject">
53226           <webidl>NoInterfaceObject</webidl>
53227         </ExtendedAttribute>
53228       </ExtendedAttributeList>
53229     </Interface>
53230     <Interface name="AbstractFilter" id="::Tizen::AbstractFilter">
53231       <webidl>  [NoInterfaceObject] interface AbstractFilter {
53232   };</webidl>
53233       <descriptive>
53234           <brief>
53235  This is a common interface used by different types of
53236 object filters.
53237           </brief>
53238          <description>
53239           <p>
53240 Never use this base interface directly, instead use <em>AbstractFilter</em> subtypes,
53241 such as <em>AttributeFilter</em>, <em>AttributeRangeFilter</em>, and <em>CompositeFilter</em>.
53242           </p>
53243          </description>
53244           <version>
53245  1.0
53246           </version>
53247       </descriptive>
53248       <ExtendedAttributeList>
53249         <ExtendedAttribute name="NoInterfaceObject">
53250           <webidl>NoInterfaceObject</webidl>
53251         </ExtendedAttribute>
53252       </ExtendedAttributeList>
53253     </Interface>
53254     <Interface name="AttributeFilter" id="::Tizen::AttributeFilter">
53255       <webidl>  [Constructor(DOMString attributeName, optional <ref>FilterMatchFlag</ref>? matchFlag, optional any matchValue)]
53256   interface AttributeFilter : <ref>AbstractFilter</ref> {
53257     attribute DOMString attributeName;
53258
53259     attribute <ref>FilterMatchFlag</ref> matchFlag setraises(<ref>WebAPIException</ref>);
53260
53261     attribute any matchValue;
53262   };</webidl>
53263       <descriptive>
53264           <brief>
53265  This interface represents a set of filter.
53266           </brief>
53267          <description>
53268           <p>
53269 It represents the query statement for the specified value of the <em>matchValue</em> by the rule of <em>matchFlag</em>.
53270           </p>
53271           <p>
53272 If no <em>matchValue</em> is defined, the filter will match all objects that have the attribute
53273 defined (same as the &quot;EXISTS&quot; filter works), otherwise, it will only match objects which have an attribute that matches
53274 the specified value.
53275           </p>
53276          </description>
53277           <version>
53278  1.0
53279           </version>
53280           <Code> // Define success callback
53281  function successCallback(contacts) {
53282    console.log(contacts.length + &quot; contacts found.&quot;);
53283  }
53284
53285  // Define error callback
53286  function errorCallback(error) {
53287    console.log(&quot;An error occurred: &quot; + error.message);
53288  }
53289
53290  // Create an attribute filter based on first name: &quot;First name should contain 'Chris' (case insensitive)&quot;
53291  var filter = new tizen.AttributeFilter(&quot;name.firstName&quot;, &quot;CONTAINS&quot;, &quot;Chris&quot;);
53292  // Send request on contact address book.
53293  tizen.contact.getDefaultAddressBook().find(successCallback, errorCallback, filter);
53294  </Code>
53295       </descriptive>
53296       <ExtendedAttributeList>
53297         <ExtendedAttribute name="Constructor">
53298           <webidl>Constructor(DOMString attributeName, optional <ref>FilterMatchFlag</ref>? matchFlag, optional any matchValue)</webidl>
53299           <ArgumentList>
53300             <Argument name="attributeName">
53301               <Type type="DOMString"/>
53302             </Argument>
53303             <Argument optional="optional" name="matchFlag">
53304               <Type name="FilterMatchFlag" nullable="nullable"/>
53305             </Argument>
53306             <Argument optional="optional" name="matchValue">
53307               <Type type="any"/>
53308             </Argument>
53309           </ArgumentList>
53310         </ExtendedAttribute>
53311       </ExtendedAttributeList>
53312       <InterfaceInheritance>
53313         <Name name="AbstractFilter"/>
53314       </InterfaceInheritance>
53315       <Attribute name="attributeName" id="::Tizen::AttributeFilter::attributeName">
53316         <webidl>    attribute DOMString attributeName;</webidl>
53317         <descriptive>
53318             <brief>
53319  The name of the object attribute used for filtering.
53320             </brief>
53321            <description>
53322             <p>
53323 This is the name of the object attribute exactly as it is defined in
53324 the object's interface. For attributes of complex type, use fully-qualified names
53325 (such as 'organizations.role' to filter on a contact's role in an organization).
53326             </p>
53327             <p>
53328 For attributes of an array type, the filter will match if any value in the array
53329 matches.
53330             </p>
53331            </description>
53332             <version>
53333  1.0
53334             </version>
53335         </descriptive>
53336         <Type type="DOMString"/>
53337       </Attribute>
53338       <Attribute name="matchFlag" id="::Tizen::AttributeFilter::matchFlag">
53339         <webidl>    attribute <ref>FilterMatchFlag</ref> matchFlag setraises(<ref>WebAPIException</ref>);</webidl>
53340         <descriptive>
53341             <brief>
53342  The match flag used for attribute-based filtering.
53343             </brief>
53344            <description>
53345             <p>
53346 By default, this attribute is set to &quot;EXACTLY&quot;.
53347             </p>
53348            </description>
53349             <version>
53350  1.0
53351             </version>
53352         </descriptive>
53353         <Type name="FilterMatchFlag"/>
53354         <SetRaises>
53355           <RaiseException name="WebAPIException"/>
53356         </SetRaises>
53357       </Attribute>
53358       <Attribute name="matchValue" id="::Tizen::AttributeFilter::matchValue">
53359         <webidl>    attribute any matchValue;</webidl>
53360         <descriptive>
53361             <brief>
53362  The value used for matching.
53363             </brief>
53364            <description>
53365             <p>
53366 The filter will match if the attribute value matches the given matchValue.
53367             </p>
53368             <p>
53369 This value is not used if the <em>matchFlag</em> is set to &quot;EXISTS&quot;.
53370 By default, this attribute is set to null.
53371             </p>
53372            </description>
53373             <version>
53374  1.0
53375             </version>
53376         </descriptive>
53377         <Type type="any"/>
53378       </Attribute>
53379     </Interface>
53380     <Interface name="AttributeRangeFilter" id="::Tizen::AttributeRangeFilter">
53381       <webidl>  [Constructor(DOMString attributeName, optional any initialValue, optional any endValue)]
53382   interface AttributeRangeFilter : <ref>AbstractFilter</ref> {
53383     attribute DOMString attributeName;
53384
53385     attribute any initialValue;
53386
53387     attribute any endValue;
53388   };</webidl>
53389       <descriptive>
53390           <brief>
53391  <em>AttributeRangeFilter</em> represents a filter based on an object attribute
53392 which has values that are within a particular range.
53393           </brief>
53394          <description>
53395           <p>
53396 Range filters, where only one boundary is set, are available.
53397           </p>
53398          </description>
53399           <version>
53400  1.0
53401           </version>
53402           <Code> // Define success callback
53403  function successCallback(events) {
53404    console.log(events.length + &quot; events today.&quot;);
53405  }
53406
53407  // Define error callback
53408  function errorCallback(error) {
53409    console.log(&quot;An error occurred: &quot; + error.message);
53410  }
53411
53412  // Create an attribute range filter based on event start date: &quot;All events occurring today&quot;.
53413  var now_dt = tizen.time.getCurrentDateTime();
53414  var today_begin = new tizen.TZDate(now_dt.getFullYear(), now_dt.getMonth(), now_dt.getDate());
53415  var today_end = today_begin.addDuration(new tizen.TimeDuration(1, &quot;DAYS&quot;));
53416  var filter = new tizen.AttributeRangeFilter(&quot;startDate&quot;, today_begin, today_end);
53417
53418  // Send a search request to default event calendar.
53419  tizen.calendar.getDefaultCalendar(&quot;EVENT&quot;).find(successCallback, errorCallback, filter);
53420  </Code>
53421       </descriptive>
53422       <ExtendedAttributeList>
53423         <ExtendedAttribute name="Constructor">
53424           <webidl>Constructor(DOMString attributeName, optional any initialValue, optional any endValue)</webidl>
53425           <ArgumentList>
53426             <Argument name="attributeName">
53427               <Type type="DOMString"/>
53428             </Argument>
53429             <Argument optional="optional" name="initialValue">
53430               <Type type="any"/>
53431             </Argument>
53432             <Argument optional="optional" name="endValue">
53433               <Type type="any"/>
53434             </Argument>
53435           </ArgumentList>
53436         </ExtendedAttribute>
53437       </ExtendedAttributeList>
53438       <InterfaceInheritance>
53439         <Name name="AbstractFilter"/>
53440       </InterfaceInheritance>
53441       <Attribute name="attributeName" id="::Tizen::AttributeRangeFilter::attributeName">
53442         <webidl>    attribute DOMString attributeName;</webidl>
53443         <descriptive>
53444             <brief>
53445  The name of the object attribute used for filtering.
53446             </brief>
53447            <description>
53448             <p>
53449 The value of this attribute is exactly as it is defined in the object's interface. For attributes of complex type, use fully-qualified names
53450 (such as 'organizations.role' to filter on a contact's role in an organization).
53451             </p>
53452             <p>
53453 For attributes of array type, the filter will match if any value in the array
53454 matches.
53455             </p>
53456            </description>
53457             <version>
53458  1.0
53459             </version>
53460         </descriptive>
53461         <Type type="DOMString"/>
53462       </Attribute>
53463       <Attribute name="initialValue" id="::Tizen::AttributeRangeFilter::initialValue">
53464         <webidl>    attribute any initialValue;</webidl>
53465         <descriptive>
53466             <brief>
53467  Objects with an attribute that is greater than or equal to <em>initialValue</em> will match.
53468             </brief>
53469            <description>
53470             <p>
53471 By default, this attribute is set to <var>null</var>.
53472             </p>
53473            </description>
53474             <version>
53475  1.0
53476             </version>
53477         </descriptive>
53478         <Type type="any"/>
53479       </Attribute>
53480       <Attribute name="endValue" id="::Tizen::AttributeRangeFilter::endValue">
53481         <webidl>    attribute any endValue;</webidl>
53482         <descriptive>
53483             <brief>
53484  Objects with an attribute that is strictly lower than to <em>endValue</em> will match.
53485             </brief>
53486            <description>
53487             <p>
53488 By default, this attribute is set to <var>null</var>.
53489             </p>
53490            </description>
53491             <version>
53492  1.0
53493             </version>
53494         </descriptive>
53495         <Type type="any"/>
53496       </Attribute>
53497     </Interface>
53498     <Interface name="CompositeFilter" id="::Tizen::CompositeFilter">
53499       <webidl>  [Constructor(<ref>CompositeFilterType</ref> type, optional <ref>AbstractFilter</ref>[]? filters)]
53500   interface CompositeFilter : <ref>AbstractFilter</ref> {
53501
53502     attribute <ref>CompositeFilterType</ref> type;
53503
53504     attribute <ref>AbstractFilter</ref>[] filters;
53505   };</webidl>
53506       <descriptive>
53507           <brief>
53508  <em>CompositeFilter</em> represents a set of filters.
53509           </brief>
53510          <description>
53511           <p>
53512 The composite filters can be one of the 2 types:
53513           </p>
53514           <ul>
53515             <li>
53516 The union - used to filter objects that match any of the filters it includes.            </li>
53517             <li>
53518 The intersection - used to filter objects that match all filters it includes.            </li>
53519           </ul>
53520          </description>
53521           <version>
53522  1.0
53523           </version>
53524           <Code> // Define success callback
53525  function successCallback(contacts) {
53526    console.log(contacts.length + &quot; contacts found.&quot;);
53527  }
53528
53529  // Define error callback
53530  function errorCallback(error) {
53531    console.log(&quot;An error occurred: &quot; + error.message);
53532  }
53533
53534  // Create an attribute filter based on first name: &quot;First name should contain 'Chris' (case insensitive)
53535  var firstNameFilter = new tizen.AttributeFilter(&quot;name.firstName&quot;, &quot;CONTAINS&quot;, &quot;Chris&quot;);
53536
53537  // Create an attribute filter based on last name: &quot;Last name should be exactly 'Smith' (case insensitive)
53538  var lastNameFilter = new tizen.AttributeFilter(&quot;name.lastName&quot;, &quot;EXACTLY&quot;, &quot;Smith&quot;};
53539
53540  // Create a filter based on the intersection of these two filter:
53541  // &quot;First name should contain 'Chris' AND last name should be 'Smith'&quot;.
53542  var filter = new tizen.CompositeFilter(&quot;INTERSECTION&quot;, [firstNameFilter, lastNameFilter]);
53543
53544  // Send request on contact address book.
53545  tizen.contact.getDefaultAddressBook().find(successCallback, errorCallback, filter);
53546  </Code>
53547       </descriptive>
53548       <ExtendedAttributeList>
53549         <ExtendedAttribute name="Constructor">
53550           <webidl>Constructor(<ref>CompositeFilterType</ref> type, optional <ref>AbstractFilter</ref>[]? filters)</webidl>
53551           <ArgumentList>
53552             <Argument name="type">
53553               <Type name="CompositeFilterType"/>
53554             </Argument>
53555             <Argument optional="optional" name="filters">
53556               <Type type="array" nullable="nullable">
53557                 <Type name="AbstractFilter"/>
53558               </Type>
53559             </Argument>
53560           </ArgumentList>
53561         </ExtendedAttribute>
53562       </ExtendedAttributeList>
53563       <InterfaceInheritance>
53564         <Name name="AbstractFilter"/>
53565       </InterfaceInheritance>
53566       <Attribute name="type" id="::Tizen::CompositeFilter::type">
53567         <webidl>    attribute <ref>CompositeFilterType</ref> type;</webidl>
53568         <descriptive>
53569             <brief>
53570  The composite filter type.
53571             </brief>
53572             <version>
53573  1.0
53574             </version>
53575         </descriptive>
53576         <Type name="CompositeFilterType"/>
53577       </Attribute>
53578       <Attribute name="filters" id="::Tizen::CompositeFilter::filters">
53579         <webidl>    attribute <ref>AbstractFilter</ref>[] filters;</webidl>
53580         <descriptive>
53581             <brief>
53582  The list of filters in the composite filter.
53583             </brief>
53584             <version>
53585  1.0
53586             </version>
53587         </descriptive>
53588         <Type type="array">
53589           <Type name="AbstractFilter"/>
53590         </Type>
53591       </Attribute>
53592     </Interface>
53593     <Interface name="SortMode" id="::Tizen::SortMode">
53594       <webidl>  [Constructor(DOMString attributeName, optional <ref>SortModeOrder</ref>? order)]
53595   interface SortMode {
53596     attribute DOMString attributeName;
53597
53598     attribute <ref>SortModeOrder</ref> order setraises(<ref>WebAPIException</ref>);
53599   };</webidl>
53600       <descriptive>
53601           <brief>
53602  <em>SortMode</em> is a common interface used for sorting of queried data.
53603           </brief>
53604          <description>
53605           <p>
53606 Note that the sorting result of list type attributes is not determined.
53607           </p>
53608          </description>
53609           <version>
53610  1.0
53611           </version>
53612           <Code> // Define a success callback
53613  function successCallback(contacts) {
53614    // The returned contacts are sorted by first name (ascending)
53615    console.log(contacts.length + &quot; contacts found.&quot;);
53616  }
53617
53618  // Define an error callback
53619  function errorCallback(error) {
53620    console.log(&quot;An error occurred: &quot; + error.message);
53621  }
53622
53623  // Create an attribute filter based on first name: &quot;First name should contain 'Chris' (case insensitive)&quot;
53624  var filter = new tizen.AttributeFilter(&quot;name.firstName&quot;, &quot;CONTAINS&quot;, &quot;Chris&quot;);
53625  // Sort by first name, ascending
53626  var sortMode = new tizen.SortMode(&quot;name.firstName&quot;, &quot;ASC&quot;);
53627  // Send request on contact address book.
53628  tizen.contact.getDefaultAddressBook().find(successCallback, errorCallback, filter, sortMode);
53629  </Code>
53630       </descriptive>
53631       <ExtendedAttributeList>
53632         <ExtendedAttribute name="Constructor">
53633           <webidl>Constructor(DOMString attributeName, optional <ref>SortModeOrder</ref>? order)</webidl>
53634           <ArgumentList>
53635             <Argument name="attributeName">
53636               <Type type="DOMString"/>
53637             </Argument>
53638             <Argument optional="optional" name="order">
53639               <Type name="SortModeOrder" nullable="nullable"/>
53640             </Argument>
53641           </ArgumentList>
53642         </ExtendedAttribute>
53643       </ExtendedAttributeList>
53644       <Attribute name="attributeName" id="::Tizen::SortMode::attributeName">
53645         <webidl>    attribute DOMString attributeName;</webidl>
53646         <descriptive>
53647             <brief>
53648  The name of the object attribute used for sorting.
53649             </brief>
53650             <version>
53651  1.0
53652             </version>
53653         </descriptive>
53654         <Type type="DOMString"/>
53655       </Attribute>
53656       <Attribute name="order" id="::Tizen::SortMode::order">
53657         <webidl>    attribute <ref>SortModeOrder</ref> order setraises(<ref>WebAPIException</ref>);</webidl>
53658         <descriptive>
53659             <brief>
53660  The type of the sorting.
53661             </brief>
53662            <description>
53663             <p>
53664 By default, this attribute is set to <var>ASC</var>.
53665             </p>
53666            </description>
53667             <version>
53668  1.0
53669             </version>
53670         </descriptive>
53671         <Type name="SortModeOrder"/>
53672         <SetRaises>
53673           <RaiseException name="WebAPIException"/>
53674         </SetRaises>
53675       </Attribute>
53676     </Interface>
53677     <Interface name="SimpleCoordinates" id="::Tizen::SimpleCoordinates">
53678       <webidl>  [Constructor(double latitude, double longitude)]
53679   interface SimpleCoordinates {
53680     attribute double latitude setraises(<ref>WebAPIException</ref>);
53681
53682     attribute double longitude setraises(<ref>WebAPIException</ref>);
53683   };</webidl>
53684       <descriptive>
53685           <brief>
53686  <em>SimpleCoordinates</em> represents a point (latitude and longitude) in map coordinate system.
53687           </brief>
53688          <description>
53689           <p>
53690 Latitude and longitude are of the WGS84 datum.
53691           </p>
53692          </description>
53693           <version>
53694  1.0
53695           </version>
53696       </descriptive>
53697       <ExtendedAttributeList>
53698         <ExtendedAttribute name="Constructor">
53699           <webidl>Constructor(double latitude, double longitude)</webidl>
53700           <ArgumentList>
53701             <Argument name="latitude">
53702               <Type type="double"/>
53703             </Argument>
53704             <Argument name="longitude">
53705               <Type type="double"/>
53706             </Argument>
53707           </ArgumentList>
53708         </ExtendedAttribute>
53709       </ExtendedAttributeList>
53710       <Attribute name="latitude" id="::Tizen::SimpleCoordinates::latitude">
53711         <webidl>    attribute double latitude setraises(<ref>WebAPIException</ref>);</webidl>
53712         <descriptive>
53713             <brief>
53714  Latitude.
53715             </brief>
53716             <version>
53717  1.0
53718             </version>
53719         </descriptive>
53720         <Type type="double"/>
53721         <SetRaises>
53722           <RaiseException name="WebAPIException"/>
53723         </SetRaises>
53724       </Attribute>
53725       <Attribute name="longitude" id="::Tizen::SimpleCoordinates::longitude">
53726         <webidl>    attribute double longitude setraises(<ref>WebAPIException</ref>);</webidl>
53727         <descriptive>
53728             <brief>
53729  Longitude.
53730             </brief>
53731             <version>
53732  1.0
53733             </version>
53734         </descriptive>
53735         <Type type="double"/>
53736         <SetRaises>
53737           <RaiseException name="WebAPIException"/>
53738         </SetRaises>
53739       </Attribute>
53740     </Interface>
53741     <Interface name="WebAPIException" id="::Tizen::WebAPIException">
53742       <webidl>  [NoInterfaceObject]
53743   interface WebAPIException {
53744     readonly attribute unsigned short code;
53745
53746     readonly attribute DOMString name;
53747
53748     readonly attribute DOMString message;
53749
53750     const unsigned short INDEX_SIZE_ERR = 1;
53751     const unsigned short DOMSTRING_SIZE_ERR = 2; 
53752     const unsigned short HIERARCHY_REQUEST_ERR = 3;
53753     const unsigned short WRONG_DOCUMENT_ERR = 4;
53754     const unsigned short INVALID_CHARACTER_ERR = 5;
53755     const unsigned short NO_DATA_ALLOWED_ERR = 6; 
53756     const unsigned short NO_MODIFICATION_ALLOWED_ERR = 7;
53757     const unsigned short NOT_FOUND_ERR = 8;
53758     const unsigned short NOT_SUPPORTED_ERR = 9;
53759     const unsigned short INUSE_ATTRIBUTE_ERR = 10; 
53760     const unsigned short INVALID_STATE_ERR = 11;
53761     const unsigned short SYNTAX_ERR = 12;
53762     const unsigned short INVALID_MODIFICATION_ERR = 13;
53763     const unsigned short NAMESPACE_ERR = 14;
53764     const unsigned short INVALID_ACCESS_ERR = 15;
53765     const unsigned short VALIDATION_ERR = 16; 
53766     const unsigned short TYPE_MISMATCH_ERR = 17;
53767     const unsigned short SECURITY_ERR = 18;
53768     const unsigned short NETWORK_ERR = 19;
53769     const unsigned short ABORT_ERR = 20;
53770     const unsigned short URL_MISMATCH_ERR = 21;
53771     const unsigned short QUOTA_EXCEEDED_ERR = 22;
53772     const unsigned short TIMEOUT_ERR = 23;
53773     const unsigned short INVALID_NODE_TYPE_ERR = 24;
53774     const unsigned short DATA_CLONE_ERR = 25;
53775   };</webidl>
53776       <descriptive>
53777           <brief>
53778  Generic exception interface.
53779           </brief>
53780          <description>
53781           <p>
53782 This interface will be used by the APIs to throw errors synchronously.
53783           </p>
53784           <p>
53785 The attempt to set an attribute value may or may not raise WebAPIException synchronously with error type TypeMismatchError or InvalidValuesError.
53786           </p>
53787          </description>
53788           <version>
53789  2.0
53790           </version>
53791       </descriptive>
53792       <ExtendedAttributeList>
53793         <ExtendedAttribute name="NoInterfaceObject">
53794           <webidl>NoInterfaceObject</webidl>
53795         </ExtendedAttribute>
53796       </ExtendedAttributeList>
53797       <Attribute readonly="readonly" name="code" id="::Tizen::WebAPIException::code">
53798         <webidl>    readonly attribute unsigned short code;</webidl>
53799         <descriptive>
53800             <brief>
53801  16-bit error code.
53802 For the possible values for this attribute, see <a href="http://www.w3.org/TR/dom/#domexception">DOMException</a>.
53803             </brief>
53804             <version>
53805  2.0
53806             </version>
53807         </descriptive>
53808         <Type type="unsigned short"/>
53809       </Attribute>
53810       <Attribute readonly="readonly" name="name" id="::Tizen::WebAPIException::name">
53811         <webidl>    readonly attribute DOMString name;</webidl>
53812         <descriptive>
53813             <brief>
53814  An error type. The name attribute must return the value it was initialized with.
53815 This attribute can have one of the following values: 
53816             </brief>
53817            <description>
53818             <ul>
53819               <li>
53820 UnknownError - An unknown error has occurred.              </li>
53821               <li>
53822 InvalidValuesError - The content of an object does not contain valid values.              </li>
53823               <li>
53824 IOError - An error occurred in communication with the underlying implementation and so the requested method cannot be completed.              </li>
53825               <li>
53826 ServiceNotAvailableError - The requested service is not available.              </li>
53827             </ul>
53828             <p>
53829 For other possible values for this attribute, see the values defined in <a href="http://www.w3.org/TR/dom/#error-types">DOM error types</a> 
53830             </p>
53831            </description>
53832             <version>
53833  2.0
53834             </version>
53835         </descriptive>
53836         <Type type="DOMString"/>
53837       </Attribute>
53838       <Attribute readonly="readonly" name="message" id="::Tizen::WebAPIException::message">
53839         <webidl>    readonly attribute DOMString message;</webidl>
53840         <descriptive>
53841             <brief>
53842  An error message that describes the details of an encountered error. 
53843 This attribute is mainly intended to be used for developers rather than end users, so it should not be used directly in the user interfaces as it is.
53844             </brief>
53845             <version>
53846  2.0
53847             </version>
53848         </descriptive>
53849         <Type type="DOMString"/>
53850       </Attribute>
53851       <Const name="INDEX_SIZE_ERR" value="1" id="::Tizen::WebAPIException::INDEX_SIZE_ERR">
53852         <webidl>    const unsigned short INDEX_SIZE_ERR = 1;</webidl>
53853         <descriptive>
53854             <brief>
53855  The index is not in the allowed range.
53856             </brief>
53857             <version>
53858  2.0
53859             </version>
53860         </descriptive>
53861         <Type type="unsigned short"/>
53862       </Const>
53863       <Const name="DOMSTRING_SIZE_ERR" value="2" id="::Tizen::WebAPIException::DOMSTRING_SIZE_ERR">
53864         <webidl>    const unsigned short DOMSTRING_SIZE_ERR = 2;</webidl>
53865         <descriptive>
53866             <brief>
53867  The specified range of text is too large.
53868             </brief>
53869             <version>
53870  2.0
53871             </version>
53872         </descriptive>
53873         <Type type="unsigned short"/>
53874       </Const>
53875       <Const name="HIERARCHY_REQUEST_ERR" value="3" id="::Tizen::WebAPIException::HIERARCHY_REQUEST_ERR">
53876         <webidl>    const unsigned short HIERARCHY_REQUEST_ERR = 3;</webidl>
53877         <descriptive>
53878             <brief>
53879  The operation would yield an incorrect node tree.
53880             </brief>
53881             <version>
53882  2.0
53883             </version>
53884         </descriptive>
53885         <Type type="unsigned short"/>
53886       </Const>
53887       <Const name="WRONG_DOCUMENT_ERR" value="4" id="::Tizen::WebAPIException::WRONG_DOCUMENT_ERR">
53888         <webidl>    const unsigned short WRONG_DOCUMENT_ERR = 4;</webidl>
53889         <descriptive>
53890             <brief>
53891  The object is in the wrong document.
53892             </brief>
53893             <version>
53894  2.0
53895             </version>
53896         </descriptive>
53897         <Type type="unsigned short"/>
53898       </Const>
53899       <Const name="INVALID_CHARACTER_ERR" value="5" id="::Tizen::WebAPIException::INVALID_CHARACTER_ERR">
53900         <webidl>    const unsigned short INVALID_CHARACTER_ERR = 5;</webidl>
53901         <descriptive>
53902             <brief>
53903  The string contains invalid characters.
53904             </brief>
53905             <version>
53906  2.0
53907             </version>
53908         </descriptive>
53909         <Type type="unsigned short"/>
53910       </Const>
53911       <Const name="NO_DATA_ALLOWED_ERR" value="6" id="::Tizen::WebAPIException::NO_DATA_ALLOWED_ERR">
53912         <webidl>    const unsigned short NO_DATA_ALLOWED_ERR = 6;</webidl>
53913         <descriptive>
53914             <brief>
53915  Data is specified for a node that does not support data.
53916             </brief>
53917             <version>
53918  2.0
53919             </version>
53920         </descriptive>
53921         <Type type="unsigned short"/>
53922       </Const>
53923       <Const name="NO_MODIFICATION_ALLOWED_ERR" value="7" id="::Tizen::WebAPIException::NO_MODIFICATION_ALLOWED_ERR">
53924         <webidl>    const unsigned short NO_MODIFICATION_ALLOWED_ERR = 7;</webidl>
53925         <descriptive>
53926             <brief>
53927  The object cannot be modified.
53928             </brief>
53929             <version>
53930  2.0
53931             </version>
53932         </descriptive>
53933         <Type type="unsigned short"/>
53934       </Const>
53935       <Const name="NOT_FOUND_ERR" value="8" id="::Tizen::WebAPIException::NOT_FOUND_ERR">
53936         <webidl>    const unsigned short NOT_FOUND_ERR = 8;</webidl>
53937         <descriptive>
53938             <brief>
53939  The object cannot be found here.
53940             </brief>
53941             <version>
53942  2.0
53943             </version>
53944         </descriptive>
53945         <Type type="unsigned short"/>
53946       </Const>
53947       <Const name="NOT_SUPPORTED_ERR" value="9" id="::Tizen::WebAPIException::NOT_SUPPORTED_ERR">
53948         <webidl>    const unsigned short NOT_SUPPORTED_ERR = 9;</webidl>
53949         <descriptive>
53950             <brief>
53951  The operation is not supported.
53952             </brief>
53953             <version>
53954  2.0
53955             </version>
53956         </descriptive>
53957         <Type type="unsigned short"/>
53958       </Const>
53959       <Const name="INUSE_ATTRIBUTE_ERR" value="10" id="::Tizen::WebAPIException::INUSE_ATTRIBUTE_ERR">
53960         <webidl>    const unsigned short INUSE_ATTRIBUTE_ERR = 10;</webidl>
53961         <descriptive>
53962             <brief>
53963  The specified attribute is already in use elsewhere.
53964             </brief>
53965             <version>
53966  2.0
53967             </version>
53968         </descriptive>
53969         <Type type="unsigned short"/>
53970       </Const>
53971       <Const name="INVALID_STATE_ERR" value="11" id="::Tizen::WebAPIException::INVALID_STATE_ERR">
53972         <webidl>    const unsigned short INVALID_STATE_ERR = 11;</webidl>
53973         <descriptive>
53974             <brief>
53975  The object is in an invalid state.
53976             </brief>
53977             <version>
53978  2.0
53979             </version>
53980         </descriptive>
53981         <Type type="unsigned short"/>
53982       </Const>
53983       <Const name="SYNTAX_ERR" value="12" id="::Tizen::WebAPIException::SYNTAX_ERR">
53984         <webidl>    const unsigned short SYNTAX_ERR = 12;</webidl>
53985         <descriptive>
53986             <brief>
53987  The string did not match the expected pattern.
53988             </brief>
53989             <version>
53990  2.0
53991             </version>
53992         </descriptive>
53993         <Type type="unsigned short"/>
53994       </Const>
53995       <Const name="INVALID_MODIFICATION_ERR" value="13" id="::Tizen::WebAPIException::INVALID_MODIFICATION_ERR">
53996         <webidl>    const unsigned short INVALID_MODIFICATION_ERR = 13;</webidl>
53997         <descriptive>
53998             <brief>
53999  The object cannot be modified in this way.
54000             </brief>
54001             <version>
54002  2.0
54003             </version>
54004         </descriptive>
54005         <Type type="unsigned short"/>
54006       </Const>
54007       <Const name="NAMESPACE_ERR" value="14" id="::Tizen::WebAPIException::NAMESPACE_ERR">
54008         <webidl>    const unsigned short NAMESPACE_ERR = 14;</webidl>
54009         <descriptive>
54010             <brief>
54011  The operation is not allowed by Namespaces in XML.
54012             </brief>
54013             <version>
54014  2.0
54015             </version>
54016         </descriptive>
54017         <Type type="unsigned short"/>
54018       </Const>
54019       <Const name="INVALID_ACCESS_ERR" value="15" id="::Tizen::WebAPIException::INVALID_ACCESS_ERR">
54020         <webidl>    const unsigned short INVALID_ACCESS_ERR = 15;</webidl>
54021         <descriptive>
54022             <brief>
54023  The object does not support the operation or argument.
54024             </brief>
54025             <version>
54026  2.0
54027             </version>
54028         </descriptive>
54029         <Type type="unsigned short"/>
54030       </Const>
54031       <Const name="VALIDATION_ERR" value="16" id="::Tizen::WebAPIException::VALIDATION_ERR">
54032         <webidl>    const unsigned short VALIDATION_ERR = 16;</webidl>
54033         <descriptive>
54034             <brief>
54035  The operation would cause the node to fail validation.
54036             </brief>
54037             <version>
54038  2.0
54039             </version>
54040         </descriptive>
54041         <Type type="unsigned short"/>
54042       </Const>
54043       <Const name="TYPE_MISMATCH_ERR" value="17" id="::Tizen::WebAPIException::TYPE_MISMATCH_ERR">
54044         <webidl>    const unsigned short TYPE_MISMATCH_ERR = 17;</webidl>
54045         <descriptive>
54046             <brief>
54047  The type of the object does not match the expected type.
54048             </brief>
54049             <version>
54050  2.0
54051             </version>
54052         </descriptive>
54053         <Type type="unsigned short"/>
54054       </Const>
54055       <Const name="SECURITY_ERR" value="18" id="::Tizen::WebAPIException::SECURITY_ERR">
54056         <webidl>    const unsigned short SECURITY_ERR = 18;</webidl>
54057         <descriptive>
54058             <brief>
54059  The operation is insecure.
54060             </brief>
54061             <version>
54062  2.0
54063             </version>
54064         </descriptive>
54065         <Type type="unsigned short"/>
54066       </Const>
54067       <Const name="NETWORK_ERR" value="19" id="::Tizen::WebAPIException::NETWORK_ERR">
54068         <webidl>    const unsigned short NETWORK_ERR = 19;</webidl>
54069         <descriptive>
54070             <brief>
54071  A network error occurred.
54072             </brief>
54073             <version>
54074  2.0
54075             </version>
54076         </descriptive>
54077         <Type type="unsigned short"/>
54078       </Const>
54079       <Const name="ABORT_ERR" value="20" id="::Tizen::WebAPIException::ABORT_ERR">
54080         <webidl>    const unsigned short ABORT_ERR = 20;</webidl>
54081         <descriptive>
54082             <brief>
54083  The operation was aborted.
54084             </brief>
54085             <version>
54086  2.0
54087             </version>
54088         </descriptive>
54089         <Type type="unsigned short"/>
54090       </Const>
54091       <Const name="URL_MISMATCH_ERR" value="21" id="::Tizen::WebAPIException::URL_MISMATCH_ERR">
54092         <webidl>    const unsigned short URL_MISMATCH_ERR = 21;</webidl>
54093         <descriptive>
54094             <brief>
54095  The given URL does not match another URL.
54096             </brief>
54097             <version>
54098  2.0
54099             </version>
54100         </descriptive>
54101         <Type type="unsigned short"/>
54102       </Const>
54103       <Const name="QUOTA_EXCEEDED_ERR" value="22" id="::Tizen::WebAPIException::QUOTA_EXCEEDED_ERR">
54104         <webidl>    const unsigned short QUOTA_EXCEEDED_ERR = 22;</webidl>
54105         <descriptive>
54106             <brief>
54107  The quota has been exceeded.
54108             </brief>
54109             <version>
54110  2.0
54111             </version>
54112         </descriptive>
54113         <Type type="unsigned short"/>
54114       </Const>
54115       <Const name="TIMEOUT_ERR" value="23" id="::Tizen::WebAPIException::TIMEOUT_ERR">
54116         <webidl>    const unsigned short TIMEOUT_ERR = 23;</webidl>
54117         <descriptive>
54118             <brief>
54119  The operation timed out.
54120             </brief>
54121             <version>
54122  2.0
54123             </version>
54124         </descriptive>
54125         <Type type="unsigned short"/>
54126       </Const>
54127       <Const name="INVALID_NODE_TYPE_ERR" value="24" id="::Tizen::WebAPIException::INVALID_NODE_TYPE_ERR">
54128         <webidl>    const unsigned short INVALID_NODE_TYPE_ERR = 24;</webidl>
54129         <descriptive>
54130             <brief>
54131  The supplied node is incorrect or has an incorrect ancestor for this operation.
54132             </brief>
54133             <version>
54134  2.0
54135             </version>
54136         </descriptive>
54137         <Type type="unsigned short"/>
54138       </Const>
54139       <Const name="DATA_CLONE_ERR" value="25" id="::Tizen::WebAPIException::DATA_CLONE_ERR">
54140         <webidl>    const unsigned short DATA_CLONE_ERR = 25;</webidl>
54141         <descriptive>
54142             <brief>
54143  The object cannot be cloned.
54144             </brief>
54145             <version>
54146  2.0
54147             </version>
54148         </descriptive>
54149         <Type type="unsigned short"/>
54150       </Const>
54151     </Interface>
54152     <Interface name="WebAPIError" id="::Tizen::WebAPIError">
54153       <webidl>  [NoInterfaceObject]
54154   interface WebAPIError {
54155     readonly attribute unsigned short code;
54156
54157     readonly attribute DOMString name;
54158
54159     readonly attribute DOMString message;
54160   };</webidl>
54161       <descriptive>
54162           <brief>
54163  Generic error interface.
54164           </brief>
54165          <description>
54166           <p>
54167 This interface will be used by the APIs in order to return them in the error callback of asynchronous methods.
54168           </p>
54169          </description>
54170           <version>
54171  2.0
54172           </version>
54173       </descriptive>
54174       <ExtendedAttributeList>
54175         <ExtendedAttribute name="NoInterfaceObject">
54176           <webidl>NoInterfaceObject</webidl>
54177         </ExtendedAttribute>
54178       </ExtendedAttributeList>
54179       <Attribute readonly="readonly" name="code" id="::Tizen::WebAPIError::code">
54180         <webidl>    readonly attribute unsigned short code;</webidl>
54181         <descriptive>
54182             <brief>
54183  16-bit error code.
54184 Possible values are defined in <a href="http://www.w3.org/TR/dom/#domexception">DOMException</a>.
54185             </brief>
54186             <version>
54187  2.0
54188             </version>
54189         </descriptive>
54190         <Type type="unsigned short"/>
54191       </Attribute>
54192       <Attribute readonly="readonly" name="name" id="::Tizen::WebAPIError::name">
54193         <webidl>    readonly attribute DOMString name;</webidl>
54194         <descriptive>
54195             <brief>
54196  An error type. The name attribute must return the value it was initialized with.
54197 This attribute can have one of the following values: 
54198             </brief>
54199            <description>
54200             <ul>
54201               <li>
54202 UnknownError - An unknown error has occurred.              </li>
54203               <li>
54204 InvalidValuesError - The content of an object does not contain valid values.              </li>
54205               <li>
54206 IOError - An error occurred in communication with the underlying implementation and so the requested method cannot be completed.              </li>
54207               <li>
54208 ServiceNotAvailableError - The requested service is not available.              </li>
54209             </ul>
54210             <p>
54211 For other possible values for this attribute, see the values defined in <a href="http://www.w3.org/TR/dom/#error-types">DOM error types</a> 
54212             </p>
54213            </description>
54214             <version>
54215  2.0
54216             </version>
54217         </descriptive>
54218         <Type type="DOMString"/>
54219       </Attribute>
54220       <Attribute readonly="readonly" name="message" id="::Tizen::WebAPIError::message">
54221         <webidl>    readonly attribute DOMString message;</webidl>
54222         <descriptive>
54223             <brief>
54224  An error message that describes the details of the error encountered. This attribute is not intended
54225 to be used directly in the user interfaces as it is mainly intended to be useful for developers rather than end users.
54226             </brief>
54227             <version>
54228  2.0
54229             </version>
54230         </descriptive>
54231         <Type type="DOMString"/>
54232       </Attribute>
54233     </Interface>
54234     <Interface name="SuccessCallback" id="::Tizen::SuccessCallback">
54235       <webidl>  [Callback=FunctionOnly, NoInterfaceObject]
54236   interface SuccessCallback {
54237     void onsuccess ();
54238   };</webidl>
54239       <descriptive>
54240           <brief>
54241  This interface is used in methods that do not require any return value in the success callback.
54242 In case of successful execution of an asynchronous call, <em>SuccessCallback</em> or an API defined callback must be called immediately to notify the user.
54243           </brief>
54244           <version>
54245  1.0
54246           </version>
54247           <Code>     function onSuccess() {
54248          console.log(&quot;Application launched successfully&quot;);
54249      }
54250      tizen.application.launch('0pnxz8hbsr.MyFiles', onSuccess);
54251  </Code>
54252       </descriptive>
54253       <ExtendedAttributeList>
54254         <ExtendedAttribute name="Callback" value="FunctionOnly">
54255           <webidl>Callback</webidl>
54256         </ExtendedAttribute>
54257         <ExtendedAttribute name="NoInterfaceObject">
54258           <webidl> NoInterfaceObject</webidl>
54259         </ExtendedAttribute>
54260       </ExtendedAttributeList>
54261       <Operation name="onsuccess" id="::Tizen::SuccessCallback::onsuccess">
54262         <webidl>    void onsuccess ();</webidl>
54263         <descriptive>
54264             <brief>
54265  Method invoked when the asynchronous call completes successfully.
54266             </brief>
54267             <version>
54268  1.0
54269             </version>
54270         </descriptive>
54271         <Type type="void"/>
54272         <ArgumentList/>
54273       </Operation>
54274     </Interface>
54275     <Interface name="ErrorCallback" id="::Tizen::ErrorCallback">
54276       <webidl>  [Callback=FunctionOnly, NoInterfaceObject]
54277   interface ErrorCallback {
54278
54279     void onerror (<ref>WebAPIError</ref> error);
54280   };</webidl>
54281       <descriptive>
54282           <brief>
54283  This interface is used in methods that require only an error as input parameter in the error callback.
54284 If an invalid function (such as null) is passed to the API that accepts ErrorCallback,
54285 it silently fails and there is no further action.
54286           </brief>
54287           <version>
54288  1.0
54289           </version>
54290           <Code>  // Define the error callback.
54291   function onError(error) {
54292     console.log(error.message);
54293   }
54294
54295   // Define the success callback.
54296   function onSuccess(services) {
54297      //send a message using the found service
54298   }
54299   tizen.messaging.getMessageServices(&quot;messaging.sms&quot;, onSuccess, onError);
54300  </Code>
54301       </descriptive>
54302       <ExtendedAttributeList>
54303         <ExtendedAttribute name="Callback" value="FunctionOnly">
54304           <webidl>Callback</webidl>
54305         </ExtendedAttribute>
54306         <ExtendedAttribute name="NoInterfaceObject">
54307           <webidl> NoInterfaceObject</webidl>
54308         </ExtendedAttribute>
54309       </ExtendedAttributeList>
54310       <Operation name="onerror" id="::Tizen::ErrorCallback::onerror">
54311         <webidl>    void onerror (<ref>WebAPIError</ref> error);</webidl>
54312         <descriptive>
54313             <brief>
54314  Method that is invoked when the error occurs.
54315             </brief>
54316             <version>
54317  1.0
54318             </version>
54319         </descriptive>
54320         <Type type="void"/>
54321         <ArgumentList>
54322           <Argument name="error">
54323             <descriptive>
54324                 <description><p>
54325  Generic error.
54326                 </p></description>
54327             </descriptive>
54328             <Type name="WebAPIError"/>
54329           </Argument>
54330         </ArgumentList>
54331       </Operation>
54332     </Interface>
54333   </Module>
54334   <Module name="WebSetting" id="::WebSetting">
54335     <webidl>module WebSetting {
54336
54337   [NoInterfaceObject] interface WebSettingObject {
54338     readonly attribute <ref>WebSettingManager</ref> websetting;
54339   };
54340     <ref>Tizen</ref> implements <ref>WebSettingObject</ref>;
54341
54342   [NoInterfaceObject] interface WebSettingManager {
54343
54344    void setUserAgentString(DOMString userAgent, 
54345               optional <ref>SuccessCallback</ref>? successCallback, 
54346               optional <ref>ErrorCallback</ref>? errorCallback) raises (<ref>WebAPIException</ref>);     
54347
54348    void removeAllCookies(optional <ref>SuccessCallback</ref>? successCallback, 
54349               optional <ref>ErrorCallback</ref>? errorCallback) raises (<ref>WebAPIException</ref>);     
54350               
54351    };
54352 };</webidl>
54353     <descriptive>
54354         <brief>
54355  This Web setting API defines a set of APIs that manages the setting states of the Web view in your Web application.
54356         </brief>
54357        <description>
54358         <p>
54359 A Tizen Web application includes a web view and the properties below of the web view can be managed via the Web setting API:
54360         </p>
54361         <ul>
54362           <li>
54363  Delete all the cookies saved for the web view in the Web application.           </li>
54364           <li>
54365  Set a custom user agent string of the web view in the Web application.          </li>
54366         </ul>
54367         <p>
54368 Note that all the settings using the Web setting API is bound to your application; thus, no other applications are affected via the Web setting API calls within your application.  
54369         </p>
54370        </description>
54371         <version>
54372  2.2
54373         </version>
54374     </descriptive>
54375     <Interface name="WebSettingObject" id="::WebSetting::WebSettingObject">
54376       <webidl>  [NoInterfaceObject] interface WebSettingObject {
54377     readonly attribute <ref>WebSettingManager</ref> websetting;
54378   };</webidl>
54379       <descriptive>
54380           <brief>
54381  This interface defines what is instantiated for the Web setting API by the <em>Tizen</em> object from the Tizen Platform.
54382           </brief>
54383          <description>
54384           <p>
54385 <em>tizen.websetting</em> object is available to manage the settings of the Web view in your Web application. 
54386           </p>
54387          </description>
54388           <version>
54389  2.2
54390           </version>
54391       </descriptive>
54392       <ExtendedAttributeList>
54393         <ExtendedAttribute name="NoInterfaceObject">
54394           <webidl>NoInterfaceObject</webidl>
54395         </ExtendedAttribute>
54396       </ExtendedAttributeList>
54397       <Attribute readonly="readonly" name="websetting" id="::WebSetting::WebSettingObject::websetting">
54398         <webidl>    readonly attribute <ref>WebSettingManager</ref> websetting;</webidl>
54399         <Type name="WebSettingManager"/>
54400       </Attribute>
54401     </Interface>
54402     <Implements name1="Tizen" name2="WebSettingObject">
54403       <webidl>    <ref>Tizen</ref> implements <ref>WebSettingObject</ref>;</webidl>
54404     </Implements>
54405     <Interface name="WebSettingManager" id="::WebSetting::WebSettingManager">
54406       <webidl>  [NoInterfaceObject] interface WebSettingManager {
54407
54408    void setUserAgentString(DOMString userAgent, 
54409               optional <ref>SuccessCallback</ref>? successCallback, 
54410               optional <ref>ErrorCallback</ref>? errorCallback) raises (<ref>WebAPIException</ref>);     
54411
54412    void removeAllCookies(optional <ref>SuccessCallback</ref>? successCallback, 
54413               optional <ref>ErrorCallback</ref>? errorCallback) raises (<ref>WebAPIException</ref>);     
54414               
54415    };</webidl>
54416       <descriptive>
54417           <brief>
54418  This is the top-level interface for the WebSetting API that managed the settings of the Web view in your Web application.
54419           </brief>
54420       </descriptive>
54421       <ExtendedAttributeList>
54422         <ExtendedAttribute name="NoInterfaceObject">
54423           <webidl>NoInterfaceObject</webidl>
54424         </ExtendedAttribute>
54425       </ExtendedAttributeList>
54426       <Operation name="setUserAgentString" id="::WebSetting::WebSettingManager::setUserAgentString">
54427         <webidl>   void setUserAgentString(DOMString userAgent, 
54428               optional <ref>SuccessCallback</ref>? successCallback, 
54429               optional <ref>ErrorCallback</ref>? errorCallback) raises (<ref>WebAPIException</ref>);</webidl>
54430         <descriptive>
54431             <brief>
54432  Sets the custom user agent string for your Web application.
54433             </brief>
54434            <description>
54435             <p>
54436 This method allows the user to set the user agent string of the Web view in the Web application.  By default, the Web view in your application
54437 has the same user agent string as the Tizen browser on the device. 
54438             </p>
54439             <p>
54440 The <em>ErrorCallback</em> is launched with these error types:
54441             </p>
54442             <ul>
54443               <li>
54444 UnknownError - If any error occurs while setting the user agent string.              </li>
54445               <li>
54446 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
54447             </ul>
54448            </description>
54449             <version>
54450  2.2
54451             </version>
54452             <Code> function successCallback() {
54453      console.log(&quot;The requested user agent string has just been set successfully.&quot;);
54454  }
54455
54456  tizen.websetting.setUserAgentString(&quot;the new user agent string to set&quot;, successCallback);
54457       
54458 </Code>
54459         </descriptive>
54460         <Type type="void"/>
54461         <ArgumentList>
54462           <Argument name="userAgent">
54463             <descriptive>
54464                 <description><p>
54465  User agent to set for the Web view in your Web application. 
54466                 </p></description>
54467             </descriptive>
54468             <Type type="DOMString"/>
54469           </Argument>
54470           <Argument optional="optional" name="successCallback">
54471             <descriptive>
54472                 <description><p>
54473  To be invoked if the requested setting operation succeeds.
54474                 </p></description>
54475             </descriptive>
54476             <Type name="SuccessCallback" nullable="nullable"/>
54477           </Argument>
54478           <Argument optional="optional" name="errorCallback">
54479             <descriptive>
54480                 <description><p>
54481  To be invoked if the requested setting operation fails.
54482                 </p></description>
54483             </descriptive>
54484             <Type name="ErrorCallback" nullable="nullable"/>
54485           </Argument>
54486         </ArgumentList>
54487         <Raises>
54488           <RaiseException name="WebAPIException">
54489             <descriptive>
54490                 <description><p>
54491  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
54492                 </p></description>
54493             </descriptive>
54494           </RaiseException>
54495         </Raises>
54496       </Operation>
54497       <Operation name="removeAllCookies" id="::WebSetting::WebSettingManager::removeAllCookies">
54498         <webidl>   void removeAllCookies(optional <ref>SuccessCallback</ref>? successCallback, 
54499               optional <ref>ErrorCallback</ref>? errorCallback) raises (<ref>WebAPIException</ref>);</webidl>
54500         <descriptive>
54501             <brief>
54502  Removes all the cookies saved for the Web view in your Web application.
54503             </brief>
54504            <description>
54505             <p>
54506 The Web view in your Web application can store cookies like a browser. This method allows the user to remove all the cookies saved for the Web application.  
54507             </p>
54508             <p>
54509 The <em>ErrorCallback</em> is launched with these error types:
54510             </p>
54511             <ul>
54512               <li>
54513 UnknownError - If any error occurs while deleting the cookies.              </li>
54514             </ul>
54515            </description>
54516             <version>
54517  2.2
54518             </version>
54519             <privilegelevel>
54520  public
54521             </privilegelevel>
54522             <privilege>
54523  http://tizen.org/privilege/websetting
54524             </privilege>
54525             <Code> function successCallback() {
54526      console.log(&quot;The cookies saved for your application have just been removed.&quot;);
54527  }
54528
54529  tizen.websetting.removeAllCookies(successCallback);
54530       
54531 </Code>
54532         </descriptive>
54533         <Type type="void"/>
54534         <ArgumentList>
54535           <Argument optional="optional" name="successCallback">
54536             <descriptive>
54537                 <description><p>
54538  To be invoked if the requested delete operation succeeds.  
54539                 </p></description>
54540             </descriptive>
54541             <Type name="SuccessCallback" nullable="nullable"/>
54542           </Argument>
54543           <Argument optional="optional" name="errorCallback">
54544             <descriptive>
54545                 <description><p>
54546  To be invoked if the requested delete operation fails.
54547                 </p></description>
54548             </descriptive>
54549             <Type name="ErrorCallback" nullable="nullable"/>
54550           </Argument>
54551         </ArgumentList>
54552         <Raises>
54553           <RaiseException name="WebAPIException">
54554             <descriptive>
54555                 <description><p>
54556  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
54557                 </p></description>
54558                 <description><p>
54559  with error type SecurityError, if the application does not have the privilege to call this method.
54560                 </p></description>
54561             </descriptive>
54562           </RaiseException>
54563         </Raises>
54564       </Operation>
54565     </Interface>
54566   </Module>
54567 </Definitions>