Updated Vehicle API auto completion
[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="Vehicle" id="::Vehicle">
5 <webidl>  module Vehicle {
6 interface VehicleManagerObject {
7     readonly attribute <ref>Vehicle</ref> vehicle;
8 };
9   
10 <ref>Navigator</ref> implements <ref>VehicleManagerObject</ref>;
11
12 [NoInterfaceObject]
13 interface Vehicle {
14     readonly    attribute <ref>VehicleConfigurationInterface</ref> identification;
15     readonly    attribute <ref>VehicleConfigurationInterface</ref> sizeConfiguration;
16     readonly    attribute <ref>VehicleConfigurationInterface</ref> fuelConfiguration;
17     readonly    attribute <ref>VehicleConfigurationInterface</ref> transmissionConfiguration;
18     readonly    attribute <ref>VehicleConfigurationInterface</ref> wheelConfiguration;
19     readonly    attribute <ref>VehicleSignalInterface</ref>        steeringWheelConfiguration;
20
21     readonly    attribute <ref>VehicleSignalInterface</ref> vehicleSpeed;
22     readonly    attribute <ref>VehicleSignalInterface</ref> wheelSpeed;
23     readonly    attribute <ref>VehicleSignalInterface</ref> engineSpeed;
24     readonly    attribute <ref>VehicleSignalInterface</ref> powerTrainTorque;
25     readonly    attribute <ref>VehicleSignalInterface</ref> acceleratorPedalPosition;
26     readonly    attribute <ref>VehicleSignalInterface</ref> throttlePosition;
27     readonly    attribute <ref>VehicleSignalInterface</ref> tripMeters;
28     readonly    attribute <ref>VehicleSignalInterface</ref> transmission;
29     readonly    attribute <ref>VehicleSignalInterface</ref> cruiseControlStatus;
30     readonly    attribute <ref>VehicleSignalInterface</ref> lightStatus;
31     readonly    attribute <ref>VehicleSignalInterface</ref> interiorLightStatus;
32     readonly    attribute <ref>VehicleSignalInterface</ref> horn;
33     readonly    attribute <ref>VehicleSignalInterface</ref> chime;
34     readonly    attribute <ref>VehicleSignalInterface</ref> fuel;
35     readonly    attribute <ref>VehicleSignalInterface</ref> engineOil;
36     readonly    attribute <ref>VehicleSignalInterface</ref> acceleration;
37     readonly    attribute <ref>VehicleSignalInterface</ref> engineCoolant;
38     readonly    attribute <ref>VehicleSignalInterface</ref> steeringWheel;
39     readonly    attribute <ref>VehicleSignalInterface</ref> ignitionTime;
40     readonly    attribute <ref>VehicleSignalInterface</ref> yawRate;
41     readonly    attribute <ref>VehicleSignalInterface</ref> brakeOperation;
42     readonly    attribute <ref>VehicleSignalInterface</ref> wheelTick;
43     readonly    attribute <ref>VehicleSignalInterface</ref> buttonEvent;
44     readonly    attribute <ref>VehicleSignalInterface</ref> drivingMode;
45     readonly    attribute <ref>VehicleSignalInterface</ref> nightMode;
46
47     readonly    attribute <ref>VehicleSignalInterface</ref> odometer;
48     readonly    attribute <ref>VehicleSignalInterface</ref> transmissionOil;
49     readonly    attribute <ref>VehicleSignalInterface</ref> transmissionClutch;
50     readonly    attribute <ref>VehicleSignalInterface</ref> brakeMaintenance;
51     readonly    attribute <ref>VehicleSignalInterface</ref> washerFluid;
52     readonly    attribute <ref>VehicleSignalInterface</ref> malfunctionIndicator;
53     readonly    attribute <ref>VehicleSignalInterface</ref> batteryStatus;
54     readonly    attribute <ref>VehicleSignalInterface</ref> tire;
55     readonly    attribute <ref>VehicleSignalInterface</ref> diagnostic;
56
57     readonly    attribute <ref>VehicleSignalInterface</ref>? languageConfiguration;
58     readonly    attribute <ref>VehicleSignalInterface</ref>  unitsOfMeasure;
59     readonly    attribute <ref>VehicleSignalInterface</ref>  mirror;
60     readonly    attribute <ref>VehicleSignalInterface</ref>  driveMode;
61     readonly    attribute <ref>VehicleSignalInterface</ref>  seatAdjustment;
62     readonly    attribute <ref>VehicleSignalInterface</ref>  dashboardIllumination;
63     readonly    attribute <ref>VehicleSignalInterface</ref>  vehicleSound;
64
65     readonly    attribute <ref>VehicleSignalInterface</ref> antilockBrakingSystem;
66     readonly    attribute <ref>VehicleSignalInterface</ref> tractionControlSystem;
67     readonly    attribute <ref>VehicleSignalInterface</ref> electronicStabilityControl;
68     readonly    attribute <ref>VehicleSignalInterface</ref> topSpeedLimit;
69     readonly    attribute <ref>VehicleSignalInterface</ref> airbagStatus;
70     readonly    attribute <ref>VehicleSignalInterface</ref> door;
71     readonly    attribute <ref>VehicleSignalInterface</ref> childSafetyLock;
72     readonly    attribute <ref>VehicleSignalInterface</ref> seat;
73
74     readonly    attribute <ref>VehicleSignalInterface</ref> temperature;
75     readonly    attribute <ref>VehicleSignalInterface</ref> rainSensor;
76     readonly    attribute <ref>VehicleSignalInterface</ref> wiperStatus;
77     readonly    attribute <ref>VehicleSignalInterface</ref> wiperSetting;
78     readonly    attribute <ref>VehicleSignalInterface</ref> defrost;
79     readonly    attribute <ref>VehicleSignalInterface</ref> sunroof;
80     readonly    attribute <ref>VehicleSignalInterface</ref> convertibleRoof;
81     readonly    attribute <ref>VehicleSignalInterface</ref> sideWindow;
82     readonly    attribute <ref>VehicleSignalInterface</ref> climateControl;
83     readonly    attribute <ref>VehicleSignalInterface</ref> atmosphericPressure;
84
85     readonly    attribute <ref>VehicleSignalInterface</ref> laneDepartureStatus;
86     readonly    attribute <ref>VehicleSignalInterface</ref> alarm;
87     readonly    attribute <ref>VehicleSignalInterface</ref> parkingBrake;
88     readonly    attribute <ref>VehicleSignalInterface</ref> parkingLights;
89 };
90
91 enum ZonePosition {
92     &quot;front&quot;,
93     &quot;middle&quot;,
94     &quot;right&quot;,
95     &quot;left&quot;,
96     &quot;rear&quot;,
97     &quot;center&quot;
98 };
99
100 interface Zone {
101                 attribute DOMString[] value;
102     readonly    attribute <ref>Zone</ref>        driver;
103     boolean equals (<ref>Zone</ref> zone);
104     boolean contains (<ref>Zone</ref> zone);
105 };
106
107 [Callback=FunctionOnly, NoInterfaceObject]
108 interface VehicleInterfaceCallback {
109     void onsuccess(object value);
110 };
111
112 [Callback=FunctionOnly, NoInterfaceObject]
113 interface AvailableCallback {
114     void onsuccess(<ref>Availability</ref> available);
115 };
116
117 enum VehicleError {
118     &quot;permission_denied&quot;,
119     &quot;invalid_operation&quot;,
120     &quot;timeout&quot;,
121     &quot;invalid_zone&quot;,
122     &quot;unknown&quot;
123 };
124
125 [NoInterfaceObject]
126 interface VehicleInterfaceError {
127     readonly    attribute <ref>VehicleError</ref> error;
128     readonly    attribute DOMString    message;
129 };
130
131 interface VehicleInterface {
132     <ref>Availability</ref>   availableForRetrieval (DOMString attributeName);
133     <ref>Promise</ref>        get (optional <ref>Zone</ref> zone);
134     <ref>Promise</ref>        getHistory (Date begin, Date end, optional <ref>Zone</ref> zone);
135     short          availabilityChangedListener (<ref>AvailableCallback</ref> callback);
136     void           removeAvailabilityChangedListener (short handle);
137     readonly       attribute <ref>Zone</ref>[] zones;
138     readonly       attribute boolean supported;
139     readonly       attribute boolean isLogged;
140     readonly       attribute Date ?  from;
141     readonly       attribute Date ?  to;
142 };
143
144 [NoInterfaceObject]
145 interface VehicleConfigurationInterface : <ref>VehicleInterface</ref> {};
146
147 [NoInterfaceObject]
148 interface VehicleSignalInterface : <ref>VehicleInterface</ref> {
149     <ref>Availability</ref>   availableForSubscription (DOMString attributeName);
150     <ref>Availability</ref>   availableForSetting (DOMString attributeName);
151     <ref>Promise</ref>        set (object value, optional <ref>Zone</ref> zone);
152     unsigned short subscribe (<ref>VehicleInterfaceCallback</ref> callback, optional <ref>Zone</ref> zone);
153     void           unsubscribe (unsigned short handle);
154 };
155
156 enum Availability {
157     &quot;available&quot;,
158     &quot;not_supported&quot;,
159     &quot;not_supported_yet&quot;,
160     &quot;not_supported_security_policy&quot;,
161     &quot;not_supported_business_policy&quot;,
162     &quot;not_supported_other&quot;
163 };
164
165 [NoInterfaceObject]
166 interface VehicleCommonDataType {
167     readonly    attribute <ref>DOMTimeStamp</ref>? timeStamp;
168 };
169
170 enum VehicleTypeEnum {
171     &quot;passengerCarMini&quot;,
172     &quot;passengerCarLight&quot;,
173     &quot;passengerCarCompact&quot;,
174     &quot;passengerCarMedium&quot;,
175     &quot;passengerCarHeavy&quot;,
176     &quot;sportUtilityVehicle&quot;,
177     &quot;pickupTruck&quot;,
178     &quot;van&quot;
179 };
180
181 [NoInterfaceObject]
182 interface Identification : <ref>VehicleCommonDataType</ref> {
183     readonly    attribute DOMString?       VIN;
184     readonly    attribute DOMString?       WMI;
185     readonly    attribute <ref>VehicleTypeEnum</ref>? vehicleType;
186     readonly    attribute DOMString?       brand;
187     readonly    attribute DOMString?       model;
188     readonly    attribute unsigned short?  year;
189 };
190
191 [NoInterfaceObject]
192 interface SizeConfiguration : <ref>VehicleCommonDataType</ref> {
193     readonly    attribute unsigned short?   width;
194     readonly    attribute unsigned short?   height;
195     readonly    attribute unsigned short?   length;
196     readonly    attribute unsigned short[]? doorsCount;
197     readonly    attribute unsigned short?   totalDoors;
198 };
199
200 enum FuelTypeEnum {
201     &quot;gasoline&quot;,
202     &quot;methanol&quot;,
203     &quot;ethanol&quot;,
204     &quot;diesel&quot;,
205     &quot;lpg&quot;,
206     &quot;cng&quot;,
207     &quot;electric&quot;
208 };
209
210 [NoInterfaceObject]
211 interface FuelConfiguration : <ref>VehicleCommonDataType</ref> {
212     readonly    attribute <ref>FuelTypeEnum</ref>[]? fuelType;
213     readonly    attribute <ref>Zone</ref>?           refuelPosition;
214 };
215
216 enum TransmissionGearTypeEnum {
217     &quot;auto&quot;,
218     &quot;manual&quot;
219 };
220
221 [NoInterfaceObject]
222 interface TransmissionConfiguration : <ref>VehicleCommonDataType</ref> {
223     readonly    attribute <ref>TransmissionGearTypeEnum</ref>? transmissionGearType;
224 };
225
226 [NoInterfaceObject]
227 interface WheelConfiguration : <ref>VehicleCommonDataType</ref> {
228     readonly    attribute unsigned short? wheelRadius;
229     readonly    attribute <ref>Zone</ref>?           zone;
230 };
231
232 [NoInterfaceObject]
233 interface SteeringWheelConfiguration : <ref>VehicleCommonDataType</ref> {
234     readonly    attribute boolean?        steeringWheelLeft;
235                 attribute unsigned short? steeringWheelTelescopingPosition;
236                 attribute unsigned short? steeringWheelPositionTilt;
237 };
238
239 [NoInterfaceObject]
240 interface VehicleSpeed : <ref>VehicleCommonDataType</ref> {
241     readonly    attribute unsigned short speed;
242 };
243
244 [NoInterfaceObject]
245 interface WheelSpeed : <ref>VehicleCommonDataType</ref> {
246     readonly    attribute unsigned short speed;
247     readonly    attribute <ref>Zone</ref>?          zone;
248 };
249
250 [NoInterfaceObject]
251 interface EngineSpeed : <ref>VehicleCommonDataType</ref> {
252     readonly    attribute unsigned long speed;
253 };
254
255 enum VehiclePowerMode {
256     &quot;off&quot;,
257     &quot;accessory1&quot;,
258     &quot;accessory2&quot;,
259     &quot;running&quot;
260 };
261
262 [NoInterfaceObject]
263 interface VehiclePowerModeType : <ref>VehicleCommonDataType</ref> {
264     readonly    attribute <ref>VehiclePowerMode</ref> value;
265 };
266
267 [NoInterfaceObject]
268 interface PowerTrainTorque : <ref>VehicleCommonDataType</ref> {
269     readonly    attribute short value;
270 };
271
272 [NoInterfaceObject]
273 interface AcceleratorPedalPosition : <ref>VehicleCommonDataType</ref> {
274     readonly    attribute unsigned short value;
275 };
276
277 [NoInterfaceObject]
278 interface ThrottlePosition : <ref>VehicleCommonDataType</ref> {
279     readonly    attribute unsigned short value;
280 };
281
282 [NoInterfaceObject]
283 interface Trip {
284     readonly    attribute unsigned long   distance;
285     readonly    attribute unsigned short? averageSpeed;
286     readonly    attribute unsigned short? fuelConsumption;
287 };
288
289 [NoInterfaceObject]
290 interface TripMeters : <ref>VehicleCommonDataType</ref> {
291     readonly    attribute <ref>Trip</ref>[] meters;
292 };
293
294 enum TransmissionMode {
295     &quot;park&quot;,
296     &quot;reverse&quot;,
297     &quot;neutral&quot;,
298     &quot;low&quot;,
299     &quot;drive&quot;,
300     &quot;overdrive&quot;
301 };
302
303 [NoInterfaceObject]
304 interface Transmission : <ref>VehicleCommonDataType</ref> {
305     readonly    attribute octet?            gear;
306     readonly    attribute <ref>TransmissionMode</ref>? mode;
307 };
308
309 [NoInterfaceObject]
310 interface CruiseControlStatus : <ref>VehicleCommonDataType</ref> {
311     readonly    attribute boolean        status;
312     readonly    attribute unsigned short speed;
313 };
314
315 [NoInterfaceObject]
316 interface LightStatus : <ref>VehicleCommonDataType</ref> {
317                 attribute boolean  head;
318                 attribute boolean  rightTurn;
319                 attribute boolean  leftTurn;
320                 attribute boolean  brake;
321                 attribute boolean? fog;
322                 attribute boolean  hazard;
323                 attribute boolean  parking;
324                 attribute boolean  highBeam;
325                 attribute boolean? automaticHeadlights;
326                 attribute boolean? dynamicHighBeam;
327     readonly    attribute <ref>Zone</ref>?    zone;
328 };
329
330 [NoInterfaceObject]
331 interface InteriorLightStatus : <ref>VehicleCommonDataType</ref> {
332                 attribute boolean status;
333     readonly    attribute <ref>Zone</ref>?   zone;
334 };
335
336 [NoInterfaceObject]
337 interface Horn : <ref>VehicleCommonDataType</ref> {
338                 attribute boolean status;
339 };
340
341 [NoInterfaceObject]
342 interface Chime : <ref>VehicleCommonDataType</ref> {
343     readonly    attribute boolean status;
344 };
345
346 [NoInterfaceObject]
347 interface Fuel : <ref>VehicleCommonDataType</ref> {
348     readonly    attribute unsigned short? level;
349     readonly    attribute unsigned long?  range;
350     readonly    attribute unsigned long?  instantConsumption;
351                 attribute unsigned long?  averageConsumption;
352     readonly    attribute unsigned long?  fuelConsumedSinceRestart;
353     readonly    attribute unsigned long?  timeSinceRestart;
354 };
355
356 [NoInterfaceObject]
357 interface EngineOil : <ref>VehicleCommonDataType</ref> {
358     readonly    attribute unsigned short level;
359     readonly    attribute unsigned short lifeRemaining;
360     readonly    attribute long           temperature;
361     readonly    attribute unsigned short pressure;
362     readonly    attribute boolean        change;
363 };
364
365 [NoInterfaceObject]
366 interface Acceleration : <ref>VehicleCommonDataType</ref> {
367     readonly    attribute long x;
368     readonly    attribute long y;
369     readonly    attribute long z;
370 };
371
372 [NoInterfaceObject]
373 interface EngineCoolant : <ref>VehicleCommonDataType</ref> {
374     readonly    attribute octet level;
375     readonly    attribute short temperature;
376 };
377
378 [NoInterfaceObject]
379 interface SteeringWheel : <ref>VehicleCommonDataType</ref> {
380     readonly    attribute short angle;
381 };
382
383 [NoInterfaceObject]
384 interface WheelTick : <ref>VehicleCommonDataType</ref> {
385     readonly    attribute unsigned long value;
386     readonly    attribute <ref>Zone</ref>?         zone;
387 };
388
389 [NoInterfaceObject]
390 interface IgnitionTime : <ref>VehicleCommonDataType</ref> {
391     readonly    attribute <ref>DOMTimeStamp</ref> ignitionOnTime;
392     readonly    attribute <ref>DOMTimeStamp</ref> ignitionOffTime;
393 };
394
395 [NoInterfaceObject]
396 interface YawRate : <ref>VehicleCommonDataType</ref> {
397     readonly    attribute short value;
398 };
399
400 [NoInterfaceObject]
401 interface BrakeOperation : <ref>VehicleCommonDataType</ref> {
402     readonly    attribute boolean brakePedalDepressed;
403 };
404
405 enum Button {
406     &quot;home&quot;,
407     &quot;back&quot;,
408     &quot;search&quot;,
409     &quot;call&quot;,
410     &quot;end_call&quot;,
411     &quot;media_play&quot;,
412     &quot;media_next&quot;,
413     &quot;media_previous&quot;,
414     &quot;media_pause&quot;,
415     &quot;voice_recognize&quot;,
416     &quot;enter&quot;,
417     &quot;left&quot;,
418     &quot;right&quot;,
419     &quot;up&quot;,
420     &quot;down&quot;
421 };
422
423 enum ButtonEventType {
424     &quot;press&quot;,
425     &quot;long_press&quot;,
426     &quot;release&quot;
427 };
428
429 [NoInterfaceObject]
430 interface VehicleButton {
431     readonly    attribute <ref>Button</ref>          button;
432     readonly    attribute <ref>ButtonEventType</ref> state;
433 };
434
435 [NoInterfaceObject]
436 interface ButtonEvent : <ref>VehicleCommonDataType</ref> {
437     readonly    attribute <ref>VehicleButton</ref>[] button;
438 };
439
440 [NoInterfaceObject]
441 interface DrivingMode : <ref>VehicleCommonDataType</ref> {
442     readonly    attribute boolean mode;
443 };
444
445 [NoInterfaceObject]
446 interface DrivingMode : <ref>VehicleCommonDataType</ref> {
447         readonly attribute boolean mode;
448 };
449
450 [NoInterfaceObject]
451 interface NightMode : <ref>VehicleCommonDataType</ref> {
452     readonly    attribute boolean mode;
453 };
454
455 [NoInterfaceObject]
456 interface Odometer : <ref>VehicleCommonDataType</ref> {
457     readonly    attribute unsigned long? distanceSinceStart;
458     readonly    attribute unsigned long  distanceTotal;
459 };
460
461 [NoInterfaceObject]
462 interface TransmissionOil : <ref>VehicleCommonDataType</ref> {
463     readonly    attribute octet?  wear;
464     readonly    attribute short?  temperature;
465 };
466
467 [NoInterfaceObject]
468 interface TransmissionClutch : <ref>VehicleCommonDataType</ref> {
469     readonly    attribute octet wear;
470 };
471
472 [NoInterfaceObject]
473 interface BrakeMaintenance : <ref>VehicleCommonDataType</ref> {
474     readonly    attribute octet?   fluidLevel;
475     readonly    attribute boolean? fluidLevelLow;
476     readonly    attribute octet?   padWear;
477     readonly    attribute boolean? brakesWorn;
478     readonly    attribute <ref>Zone</ref>?    zone;
479 };
480
481 [NoInterfaceObject]
482 interface WasherFluid : <ref>VehicleCommonDataType</ref> {
483     readonly    attribute unsigned short? level;
484     readonly    attribute boolean?        levelLow;
485 };
486
487 [NoInterfaceObject]
488 interface MalfunctionIndicator : <ref>VehicleCommonDataType</ref> {
489     readonly    attribute boolean on;
490 };
491
492 [NoInterfaceObject]
493 interface BatteryStatus : <ref>VehicleCommonDataType</ref> {
494     readonly    attribute unsigned short? chargeLevel;
495     readonly    attribute unsigned short? voltage;
496     readonly    attribute unsigned short? current;
497     readonly    attribute <ref>Zone</ref>?           zone;
498 };
499
500 [NoInterfaceObject]
501 interface Tire : <ref>VehicleCommonDataType</ref> {
502     readonly    attribute boolean?        pressureLow;
503     readonly    attribute unsigned short? pressure;
504     readonly    attribute short?          temperature;
505     readonly    attribute <ref>Zone</ref>?           zone;
506 };
507
508 [NoInterfaceObject]
509 interface Diagnostic : <ref>VehicleCommonDataType</ref> {
510     readonly    attribute unsigned long accumulatedEngineRuntime;
511     readonly    attribute unsigned long distanceWithMILOn;
512     readonly    attribute unsigned long distanceSinceCodeCleared;
513     readonly    attribute unsigned long timeRunMILOn;
514     readonly    attribute unsigned long timeTroubleCodeClear;
515 };
516
517 [NoInterfaceObject]
518 interface LanguageConfiguration : <ref>VehicleCommonDataType</ref> {
519                 attribute DOMString? language;
520 };
521
522 [NoInterfaceObject]
523 interface UnitsOfMeasure : <ref>VehicleCommonDataType</ref> {
524                 attribute boolean?   isMKSSystem;
525                 attribute DOMString? unitsFuelVolume;
526                 attribute DOMString? unitsDistance;
527                 attribute DOMString? unitsSpeed;
528                 attribute DOMString? unitsFuelConsumption;
529 };
530
531 [NoInterfaceObject]
532 interface Mirror : <ref>VehicleCommonDataType</ref> {
533                 attribute unsigned short? mirrorTilt;
534                 attribute unsigned short? mirrorPan;
535     readonly    attribute <ref>Zone</ref>?           zone;
536 };
537
538 [NoInterfaceObject]
539 interface SeatAdjustment : <ref>VehicleCommonDataType</ref> {
540                 attribute unsigned short? reclineSeatBack;
541                 attribute unsigned short? seatSlide;
542                 attribute unsigned short? seatCushionHeight;
543                 attribute unsigned short? seatHeadrest;
544                 attribute unsigned short? seatBackCushion;
545                 attribute unsigned short? seatSideCushion;
546     readonly    attribute <ref>Zone</ref>?           zone;
547 };
548
549 enum DriveModeEnum {
550     &quot;comfort&quot;,
551     &quot;auto&quot;,
552     &quot;sport&quot;,
553     &quot;eco&quot;,
554     &quot;manual&quot;,
555     &quot;winter&quot;
556 };
557
558 [NoInterfaceObject]
559 interface DriveMode : <ref>VehicleCommonDataType</ref> {
560                 attribute <ref>DriveModeEnum</ref>? driveMode;
561 };
562
563 [NoInterfaceObject]
564 interface DashboardIllumination : <ref>VehicleCommonDataType</ref> {
565                 attribute DOMString? dashboardIllumination;
566 };
567
568 [NoInterfaceObject]
569 interface VehicleSound : <ref>VehicleCommonDataType</ref> {
570                 attribute boolean    activeNoiseControlMode;
571                 attribute DOMString? engineSoundEnhancementMode;
572 };
573
574 [NoInterfaceObject]
575 interface AntilockBrakingSystem : <ref>VehicleCommonDataType</ref> {
576     readonly    attribute boolean enabled;
577     readonly    attribute boolean engaged;
578 };
579
580 [NoInterfaceObject]
581 interface TractionControlSystem : <ref>VehicleCommonDataType</ref> {
582     readonly    attribute boolean enabled;
583     readonly    attribute boolean engaged;
584 };
585
586 [NoInterfaceObject]
587 interface ElectronicStabilityControl : <ref>VehicleCommonDataType</ref> {
588     readonly    attribute boolean enabled;
589     readonly    attribute boolean engaged;
590 };
591
592 [NoInterfaceObject]
593 interface TopSpeedLimit : <ref>VehicleCommonDataType</ref> {
594     readonly    attribute unsigned short speed;
595 };
596
597 [NoInterfaceObject]
598 interface AirbagStatus : <ref>VehicleCommonDataType</ref> {
599     readonly    attribute boolean activated;
600     readonly    attribute boolean deployed;
601     readonly    attribute <ref>Zone</ref>?   zone;
602 };
603
604 enum DoorOpenStatus {
605     &quot;open&quot;,
606     &quot;ajar&quot;,
607     &quot;closed&quot;
608 };
609
610 [NoInterfaceObject]
611 interface Door : <ref>VehicleCommonDataType</ref> {
612     readonly    attribute <ref>DoorOpenStatus</ref> status;
613                 attribute boolean        lock;
614     readonly    attribute <ref>Zone</ref>?          zone;
615 };
616
617 [NoInterfaceObject]
618 interface ChildSafetyLock : <ref>VehicleCommonDataType</ref> {
619                 attribute boolean lock;
620     readonly    attribute <ref>Zone</ref>?   zone;
621 };
622
623 enum OccupantStatus {
624     &quot;adult&quot;,
625     &quot;child&quot;,
626     &quot;vacant&quot;
627 };
628
629 enum IdentificationType {
630     &quot;pin&quot;,
631     &quot;keyfob&quot;,
632     &quot;Bluetooth&quot;,
633     &quot;NFC&quot;,
634     &quot;fingerprint&quot;,
635     &quot;camera&quot;,
636     &quot;voice&quot;
637 };
638
639 [NoInterfaceObject]
640 interface Seat : <ref>VehicleCommonDataType</ref> {
641     readonly    attribute <ref>OccupantStatus</ref>     occupant;
642     readonly    attribute boolean            seatbelt;
643     readonly    attribute DOMString?         occupantName;
644     readonly    attribute <ref>IdentificationType</ref> identificationType;
645     readonly    attribute <ref>Zone</ref>?              zone;
646 };
647
648 [NoInterfaceObject]
649 interface Temperature : <ref>VehicleCommonDataType</ref> {
650     readonly    attribute float interiorTemperature;
651     readonly    attribute float exteriorTemperature;
652 };
653
654 [NoInterfaceObject]
655 interface RainSensor : <ref>VehicleCommonDataType</ref> {
656     readonly    attribute unsigned short rain;
657     readonly    attribute <ref>Zone</ref>?          zone;
658 };
659
660 [NoInterfaceObject]
661 interface WiperStatus : <ref>VehicleCommonDataType</ref> {
662     readonly    attribute unsigned short wiperSpeed;
663     readonly    attribute <ref>Zone</ref>?          zone;
664 };
665
666 enum WiperControl {
667     &quot;off&quot;,
668     &quot;once&quot;,
669     &quot;slowest&quot;,
670     &quot;slow&quot;,
671     &quot;middle&quot;,
672     &quot;fast&quot;,
673     &quot;fastest&quot;,
674     &quot;auto&quot;
675 };
676
677 [NoInterfaceObject]
678 interface WiperSetting : <ref>VehicleCommonDataType</ref> {
679                 attribute <ref>WiperControl</ref> wiperControl;
680     readonly    attribute <ref>Zone</ref>?        zone;
681 };
682
683 [NoInterfaceObject]
684 interface Defrost : <ref>VehicleCommonDataType</ref> {
685                 attribute boolean? defrostWindow;
686                 attribute boolean? defrostMirrors;
687     readonly    attribute <ref>Zone</ref>?    zone;
688 };
689
690 [NoInterfaceObject]
691 interface Sunroof : <ref>VehicleCommonDataType</ref> {
692                 attribute unsigned short openness;
693                 attribute unsigned short tilt;
694     readonly    attribute <ref>Zone</ref>?          zone;
695 };
696
697 enum ConvertibleRoofStatus {
698     &quot;closed&quot;,
699     &quot;closing&quot;,
700     &quot;opening&quot;,
701     &quot;opened&quot;
702 };
703
704 [NoInterfaceObject]
705 interface ConvertibleRoof : <ref>VehicleCommonDataType</ref> {
706                 attribute <ref>ConvertibleRoofStatus</ref> status;
707 };
708
709 [NoInterfaceObject]
710 interface SideWindow : <ref>VehicleCommonDataType</ref> {
711                 attribute boolean?        lock;
712                 attribute unsigned short? openness;
713     readonly    attribute <ref>Zone</ref>?           zone;
714 };
715
716 enum AirflowDirection {
717     &quot;frontpanel&quot;,
718     &quot;floorduct&quot;,
719     &quot;bilevel&quot;,
720     &quot;defrostfloor&quot;
721 };
722
723 [NoInterfaceObject]
724 interface ClimateControl : <ref>VehicleCommonDataType</ref> {
725                 attribute <ref>AirflowDirection</ref>  airflowDirection;
726                 attribute unsigned short    fanSpeedLevel;
727                 attribute short?            targetTemperature;
728                 attribute boolean           airConditioning;
729                 attribute boolean           heater;
730                 attribute unsigned short?   seatHeater;
731                 attribute unsigned short?   seatCooler;
732                 attribute boolean           airRecirculation;
733                 attribute unsigned short?   steeringWheelHeater;
734     readonly    attribute <ref>Zone</ref>?             zone;
735 };
736
737 [NoInterfaceObject]
738 interface AtmosphericPressure : <ref>VehicleCommonDataType</ref> {
739     readonly    attribute unsigned short pressure;
740 };
741
742 enum LaneDepartureStatus {
743     &quot;off&quot;,
744     &quot;pause&quot;,
745     &quot;running&quot;
746 };
747
748 [NoInterfaceObject]
749 interface LaneDepartureDetection : <ref>VehicleCommonDataType</ref> {
750     readonly    attribute <ref>LaneDepartureStatus</ref> status;
751 };
752
753 enum AlarmStatus {
754     &quot;disarmed&quot;,
755     &quot;preArmed&quot;,
756     &quot;armed&quot;,
757     &quot;alarmed&quot;
758 };
759
760 [NoInterfaceObject]
761 interface Alarm : <ref>VehicleCommonDataType</ref> {
762                 attribute <ref>AlarmStatus</ref> status;
763 };
764
765 enum ParkingBrakeStatus {
766     &quot;inactive&quot;,
767     &quot;active&quot;,
768     &quot;error&quot;
769 };
770
771 [NoInterfaceObject]
772 interface ParkingBrake : <ref>VehicleCommonDataType</ref> {
773     readonly    attribute <ref>ParkingBrakeStatus</ref> status;
774 };
775
776 [NoInterfaceObject]
777 interface ParkingLights : <ref>VehicleCommonDataType</ref> {
778     readonly    attribute boolean status;
779                 attribute boolean setting;
780 };</webidl>
781   <Interface name="VehicleManagerObject" id="::VehicleManagerObject">
782     <webidl>interface VehicleManagerObject {
783     readonly attribute <ref>Vehicle</ref> vehicle;
784 };</webidl>
785     <Attribute readonly="readonly" name="vehicle" id="::VehicleManagerObject::vehicle">
786       <webidl>    readonly attribute <ref>Vehicle</ref> vehicle;</webidl>
787       <Type name="Vehicle"/>
788     </Attribute>
789   </Interface>
790   <Implements name1="Navigator" name2="VehicleManagerObject">
791     <webidl><ref>Navigator</ref> implements <ref>VehicleManagerObject</ref>;</webidl>
792   </Implements>
793   <Interface name="Vehicle" id="::Vehicle">
794     <webidl>[NoInterfaceObject]
795 interface Vehicle {
796     readonly    attribute <ref>VehicleConfigurationInterface</ref> identification;
797     readonly    attribute <ref>VehicleConfigurationInterface</ref> sizeConfiguration;
798     readonly    attribute <ref>VehicleConfigurationInterface</ref> fuelConfiguration;
799     readonly    attribute <ref>VehicleConfigurationInterface</ref> transmissionConfiguration;
800     readonly    attribute <ref>VehicleConfigurationInterface</ref> wheelConfiguration;
801     readonly    attribute <ref>VehicleSignalInterface</ref>        steeringWheelConfiguration;
802
803     readonly    attribute <ref>VehicleSignalInterface</ref> vehicleSpeed;
804     readonly    attribute <ref>VehicleSignalInterface</ref> wheelSpeed;
805     readonly    attribute <ref>VehicleSignalInterface</ref> engineSpeed;
806     readonly    attribute <ref>VehicleSignalInterface</ref> powerTrainTorque;
807     readonly    attribute <ref>VehicleSignalInterface</ref> acceleratorPedalPosition;
808     readonly    attribute <ref>VehicleSignalInterface</ref> throttlePosition;
809     readonly    attribute <ref>VehicleSignalInterface</ref> tripMeters;
810     readonly    attribute <ref>VehicleSignalInterface</ref> transmission;
811     readonly    attribute <ref>VehicleSignalInterface</ref> cruiseControlStatus;
812     readonly    attribute <ref>VehicleSignalInterface</ref> lightStatus;
813     readonly    attribute <ref>VehicleSignalInterface</ref> interiorLightStatus;
814     readonly    attribute <ref>VehicleSignalInterface</ref> horn;
815     readonly    attribute <ref>VehicleSignalInterface</ref> chime;
816     readonly    attribute <ref>VehicleSignalInterface</ref> fuel;
817     readonly    attribute <ref>VehicleSignalInterface</ref> engineOil;
818     readonly    attribute <ref>VehicleSignalInterface</ref> acceleration;
819     readonly    attribute <ref>VehicleSignalInterface</ref> engineCoolant;
820     readonly    attribute <ref>VehicleSignalInterface</ref> steeringWheel;
821     readonly    attribute <ref>VehicleSignalInterface</ref> ignitionTime;
822     readonly    attribute <ref>VehicleSignalInterface</ref> yawRate;
823     readonly    attribute <ref>VehicleSignalInterface</ref> brakeOperation;
824     readonly    attribute <ref>VehicleSignalInterface</ref> wheelTick;
825     readonly    attribute <ref>VehicleSignalInterface</ref> buttonEvent;
826     readonly    attribute <ref>VehicleSignalInterface</ref> drivingMode;
827     readonly    attribute <ref>VehicleSignalInterface</ref> nightMode;
828
829     readonly    attribute <ref>VehicleSignalInterface</ref> odometer;
830     readonly    attribute <ref>VehicleSignalInterface</ref> transmissionOil;
831     readonly    attribute <ref>VehicleSignalInterface</ref> transmissionClutch;
832     readonly    attribute <ref>VehicleSignalInterface</ref> brakeMaintenance;
833     readonly    attribute <ref>VehicleSignalInterface</ref> washerFluid;
834     readonly    attribute <ref>VehicleSignalInterface</ref> malfunctionIndicator;
835     readonly    attribute <ref>VehicleSignalInterface</ref> batteryStatus;
836     readonly    attribute <ref>VehicleSignalInterface</ref> tire;
837     readonly    attribute <ref>VehicleSignalInterface</ref> diagnostic;
838
839     readonly    attribute <ref>VehicleSignalInterface</ref>? languageConfiguration;
840     readonly    attribute <ref>VehicleSignalInterface</ref>  unitsOfMeasure;
841     readonly    attribute <ref>VehicleSignalInterface</ref>  mirror;
842     readonly    attribute <ref>VehicleSignalInterface</ref>  driveMode;
843     readonly    attribute <ref>VehicleSignalInterface</ref>  seatAdjustment;
844     readonly    attribute <ref>VehicleSignalInterface</ref>  dashboardIllumination;
845     readonly    attribute <ref>VehicleSignalInterface</ref>  vehicleSound;
846
847     readonly    attribute <ref>VehicleSignalInterface</ref> antilockBrakingSystem;
848     readonly    attribute <ref>VehicleSignalInterface</ref> tractionControlSystem;
849     readonly    attribute <ref>VehicleSignalInterface</ref> electronicStabilityControl;
850     readonly    attribute <ref>VehicleSignalInterface</ref> topSpeedLimit;
851     readonly    attribute <ref>VehicleSignalInterface</ref> airbagStatus;
852     readonly    attribute <ref>VehicleSignalInterface</ref> door;
853     readonly    attribute <ref>VehicleSignalInterface</ref> childSafetyLock;
854     readonly    attribute <ref>VehicleSignalInterface</ref> seat;
855
856     readonly    attribute <ref>VehicleSignalInterface</ref> temperature;
857     readonly    attribute <ref>VehicleSignalInterface</ref> rainSensor;
858     readonly    attribute <ref>VehicleSignalInterface</ref> wiperStatus;
859     readonly    attribute <ref>VehicleSignalInterface</ref> wiperSetting;
860     readonly    attribute <ref>VehicleSignalInterface</ref> defrost;
861     readonly    attribute <ref>VehicleSignalInterface</ref> sunroof;
862     readonly    attribute <ref>VehicleSignalInterface</ref> convertibleRoof;
863     readonly    attribute <ref>VehicleSignalInterface</ref> sideWindow;
864     readonly    attribute <ref>VehicleSignalInterface</ref> climateControl;
865     readonly    attribute <ref>VehicleSignalInterface</ref> atmosphericPressure;
866
867     readonly    attribute <ref>VehicleSignalInterface</ref> laneDepartureStatus;
868     readonly    attribute <ref>VehicleSignalInterface</ref> alarm;
869     readonly    attribute <ref>VehicleSignalInterface</ref> parkingBrake;
870     readonly    attribute <ref>VehicleSignalInterface</ref> parkingLights;
871 };</webidl>
872     <ExtendedAttributeList>
873       <ExtendedAttribute name="NoInterfaceObject">
874         <webidl>NoInterfaceObject</webidl>
875       </ExtendedAttribute>
876     </ExtendedAttributeList>
877     <Attribute readonly="readonly" name="identification" id="::Vehicle::identification">
878       <webidl>    readonly    attribute <ref>VehicleConfigurationInterface</ref> identification;</webidl>
879       <Type name="VehicleConfigurationInterface"/>
880     </Attribute>
881     <Attribute readonly="readonly" name="sizeConfiguration" id="::Vehicle::sizeConfiguration">
882       <webidl>    readonly    attribute <ref>VehicleConfigurationInterface</ref> sizeConfiguration;</webidl>
883       <Type name="VehicleConfigurationInterface"/>
884     </Attribute>
885     <Attribute readonly="readonly" name="fuelConfiguration" id="::Vehicle::fuelConfiguration">
886       <webidl>    readonly    attribute <ref>VehicleConfigurationInterface</ref> fuelConfiguration;</webidl>
887       <Type name="VehicleConfigurationInterface"/>
888     </Attribute>
889     <Attribute readonly="readonly" name="transmissionConfiguration" id="::Vehicle::transmissionConfiguration">
890       <webidl>    readonly    attribute <ref>VehicleConfigurationInterface</ref> transmissionConfiguration;</webidl>
891       <Type name="VehicleConfigurationInterface"/>
892     </Attribute>
893     <Attribute readonly="readonly" name="wheelConfiguration" id="::Vehicle::wheelConfiguration">
894       <webidl>    readonly    attribute <ref>VehicleConfigurationInterface</ref> wheelConfiguration;</webidl>
895       <Type name="VehicleConfigurationInterface"/>
896     </Attribute>
897     <Attribute readonly="readonly" name="steeringWheelConfiguration" id="::Vehicle::steeringWheelConfiguration">
898       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref>        steeringWheelConfiguration;</webidl>
899       <Type name="VehicleSignalInterface"/>
900     </Attribute>
901     <Attribute readonly="readonly" name="vehicleSpeed" id="::Vehicle::vehicleSpeed">
902       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref> vehicleSpeed;</webidl>
903       <Type name="VehicleSignalInterface"/>
904     </Attribute>
905     <Attribute readonly="readonly" name="wheelSpeed" id="::Vehicle::wheelSpeed">
906       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref> wheelSpeed;</webidl>
907       <Type name="VehicleSignalInterface"/>
908     </Attribute>
909     <Attribute readonly="readonly" name="engineSpeed" id="::Vehicle::engineSpeed">
910       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref> engineSpeed;</webidl>
911       <Type name="VehicleSignalInterface"/>
912     </Attribute>
913     <Attribute readonly="readonly" name="powerTrainTorque" id="::Vehicle::powerTrainTorque">
914       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref> powerTrainTorque;</webidl>
915       <Type name="VehicleSignalInterface"/>
916     </Attribute>
917     <Attribute readonly="readonly" name="acceleratorPedalPosition" id="::Vehicle::acceleratorPedalPosition">
918       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref> acceleratorPedalPosition;</webidl>
919       <Type name="VehicleSignalInterface"/>
920     </Attribute>
921     <Attribute readonly="readonly" name="throttlePosition" id="::Vehicle::throttlePosition">
922       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref> throttlePosition;</webidl>
923       <Type name="VehicleSignalInterface"/>
924     </Attribute>
925     <Attribute readonly="readonly" name="tripMeters" id="::Vehicle::tripMeters">
926       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref> tripMeters;</webidl>
927       <Type name="VehicleSignalInterface"/>
928     </Attribute>
929     <Attribute readonly="readonly" name="transmission" id="::Vehicle::transmission">
930       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref> transmission;</webidl>
931       <Type name="VehicleSignalInterface"/>
932     </Attribute>
933     <Attribute readonly="readonly" name="cruiseControlStatus" id="::Vehicle::cruiseControlStatus">
934       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref> cruiseControlStatus;</webidl>
935       <Type name="VehicleSignalInterface"/>
936     </Attribute>
937     <Attribute readonly="readonly" name="lightStatus" id="::Vehicle::lightStatus">
938       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref> lightStatus;</webidl>
939       <Type name="VehicleSignalInterface"/>
940     </Attribute>
941     <Attribute readonly="readonly" name="interiorLightStatus" id="::Vehicle::interiorLightStatus">
942       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref> interiorLightStatus;</webidl>
943       <Type name="VehicleSignalInterface"/>
944     </Attribute>
945     <Attribute readonly="readonly" name="horn" id="::Vehicle::horn">
946       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref> horn;</webidl>
947       <Type name="VehicleSignalInterface"/>
948     </Attribute>
949     <Attribute readonly="readonly" name="chime" id="::Vehicle::chime">
950       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref> chime;</webidl>
951       <Type name="VehicleSignalInterface"/>
952     </Attribute>
953     <Attribute readonly="readonly" name="fuel" id="::Vehicle::fuel">
954       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref> fuel;</webidl>
955       <Type name="VehicleSignalInterface"/>
956     </Attribute>
957     <Attribute readonly="readonly" name="engineOil" id="::Vehicle::engineOil">
958       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref> engineOil;</webidl>
959       <Type name="VehicleSignalInterface"/>
960     </Attribute>
961     <Attribute readonly="readonly" name="acceleration" id="::Vehicle::acceleration">
962       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref> acceleration;</webidl>
963       <Type name="VehicleSignalInterface"/>
964     </Attribute>
965     <Attribute readonly="readonly" name="engineCoolant" id="::Vehicle::engineCoolant">
966       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref> engineCoolant;</webidl>
967       <Type name="VehicleSignalInterface"/>
968     </Attribute>
969     <Attribute readonly="readonly" name="steeringWheel" id="::Vehicle::steeringWheel">
970       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref> steeringWheel;</webidl>
971       <Type name="VehicleSignalInterface"/>
972     </Attribute>
973     <Attribute readonly="readonly" name="ignitionTime" id="::Vehicle::ignitionTime">
974       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref> ignitionTime;</webidl>
975       <Type name="VehicleSignalInterface"/>
976     </Attribute>
977     <Attribute readonly="readonly" name="yawRate" id="::Vehicle::yawRate">
978       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref> yawRate;</webidl>
979       <Type name="VehicleSignalInterface"/>
980     </Attribute>
981     <Attribute readonly="readonly" name="brakeOperation" id="::Vehicle::brakeOperation">
982       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref> brakeOperation;</webidl>
983       <Type name="VehicleSignalInterface"/>
984     </Attribute>
985     <Attribute readonly="readonly" name="wheelTick" id="::Vehicle::wheelTick">
986       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref> wheelTick;</webidl>
987       <Type name="VehicleSignalInterface"/>
988     </Attribute>
989     <Attribute readonly="readonly" name="buttonEvent" id="::Vehicle::buttonEvent">
990       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref> buttonEvent;</webidl>
991       <Type name="VehicleSignalInterface"/>
992     </Attribute>
993     <Attribute readonly="readonly" name="drivingMode" id="::Vehicle::drivingMode">
994       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref> drivingMode;</webidl>
995       <Type name="VehicleSignalInterface"/>
996     </Attribute>
997     <Attribute readonly="readonly" name="nightMode" id="::Vehicle::nightMode">
998       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref> nightMode;</webidl>
999       <Type name="VehicleSignalInterface"/>
1000     </Attribute>
1001     <Attribute readonly="readonly" name="odometer" id="::Vehicle::odometer">
1002       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref> odometer;</webidl>
1003       <Type name="VehicleSignalInterface"/>
1004     </Attribute>
1005     <Attribute readonly="readonly" name="transmissionOil" id="::Vehicle::transmissionOil">
1006       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref> transmissionOil;</webidl>
1007       <Type name="VehicleSignalInterface"/>
1008     </Attribute>
1009     <Attribute readonly="readonly" name="transmissionClutch" id="::Vehicle::transmissionClutch">
1010       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref> transmissionClutch;</webidl>
1011       <Type name="VehicleSignalInterface"/>
1012     </Attribute>
1013     <Attribute readonly="readonly" name="brakeMaintenance" id="::Vehicle::brakeMaintenance">
1014       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref> brakeMaintenance;</webidl>
1015       <Type name="VehicleSignalInterface"/>
1016     </Attribute>
1017     <Attribute readonly="readonly" name="washerFluid" id="::Vehicle::washerFluid">
1018       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref> washerFluid;</webidl>
1019       <Type name="VehicleSignalInterface"/>
1020     </Attribute>
1021     <Attribute readonly="readonly" name="malfunctionIndicator" id="::Vehicle::malfunctionIndicator">
1022       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref> malfunctionIndicator;</webidl>
1023       <Type name="VehicleSignalInterface"/>
1024     </Attribute>
1025     <Attribute readonly="readonly" name="batteryStatus" id="::Vehicle::batteryStatus">
1026       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref> batteryStatus;</webidl>
1027       <Type name="VehicleSignalInterface"/>
1028     </Attribute>
1029     <Attribute readonly="readonly" name="tire" id="::Vehicle::tire">
1030       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref> tire;</webidl>
1031       <Type name="VehicleSignalInterface"/>
1032     </Attribute>
1033     <Attribute readonly="readonly" name="diagnostic" id="::Vehicle::diagnostic">
1034       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref> diagnostic;</webidl>
1035       <Type name="VehicleSignalInterface"/>
1036     </Attribute>
1037     <Attribute readonly="readonly" name="languageConfiguration" id="::Vehicle::languageConfiguration">
1038       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref>? languageConfiguration;</webidl>
1039       <Type name="VehicleSignalInterface" nullable="nullable"/>
1040     </Attribute>
1041     <Attribute readonly="readonly" name="unitsOfMeasure" id="::Vehicle::unitsOfMeasure">
1042       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref>  unitsOfMeasure;</webidl>
1043       <Type name="VehicleSignalInterface"/>
1044     </Attribute>
1045     <Attribute readonly="readonly" name="mirror" id="::Vehicle::mirror">
1046       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref>  mirror;</webidl>
1047       <Type name="VehicleSignalInterface"/>
1048     </Attribute>
1049     <Attribute readonly="readonly" name="driveMode" id="::Vehicle::driveMode">
1050       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref>  driveMode;</webidl>
1051       <Type name="VehicleSignalInterface"/>
1052     </Attribute>
1053     <Attribute readonly="readonly" name="seatAdjustment" id="::Vehicle::seatAdjustment">
1054       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref>  seatAdjustment;</webidl>
1055       <Type name="VehicleSignalInterface"/>
1056     </Attribute>
1057     <Attribute readonly="readonly" name="dashboardIllumination" id="::Vehicle::dashboardIllumination">
1058       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref>  dashboardIllumination;</webidl>
1059       <Type name="VehicleSignalInterface"/>
1060     </Attribute>
1061     <Attribute readonly="readonly" name="vehicleSound" id="::Vehicle::vehicleSound">
1062       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref>  vehicleSound;</webidl>
1063       <Type name="VehicleSignalInterface"/>
1064     </Attribute>
1065     <Attribute readonly="readonly" name="antilockBrakingSystem" id="::Vehicle::antilockBrakingSystem">
1066       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref> antilockBrakingSystem;</webidl>
1067       <Type name="VehicleSignalInterface"/>
1068     </Attribute>
1069     <Attribute readonly="readonly" name="tractionControlSystem" id="::Vehicle::tractionControlSystem">
1070       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref> tractionControlSystem;</webidl>
1071       <Type name="VehicleSignalInterface"/>
1072     </Attribute>
1073     <Attribute readonly="readonly" name="electronicStabilityControl" id="::Vehicle::electronicStabilityControl">
1074       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref> electronicStabilityControl;</webidl>
1075       <Type name="VehicleSignalInterface"/>
1076     </Attribute>
1077     <Attribute readonly="readonly" name="topSpeedLimit" id="::Vehicle::topSpeedLimit">
1078       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref> topSpeedLimit;</webidl>
1079       <Type name="VehicleSignalInterface"/>
1080     </Attribute>
1081     <Attribute readonly="readonly" name="airbagStatus" id="::Vehicle::airbagStatus">
1082       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref> airbagStatus;</webidl>
1083       <Type name="VehicleSignalInterface"/>
1084     </Attribute>
1085     <Attribute readonly="readonly" name="door" id="::Vehicle::door">
1086       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref> door;</webidl>
1087       <Type name="VehicleSignalInterface"/>
1088     </Attribute>
1089     <Attribute readonly="readonly" name="childSafetyLock" id="::Vehicle::childSafetyLock">
1090       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref> childSafetyLock;</webidl>
1091       <Type name="VehicleSignalInterface"/>
1092     </Attribute>
1093     <Attribute readonly="readonly" name="seat" id="::Vehicle::seat">
1094       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref> seat;</webidl>
1095       <Type name="VehicleSignalInterface"/>
1096     </Attribute>
1097     <Attribute readonly="readonly" name="temperature" id="::Vehicle::temperature">
1098       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref> temperature;</webidl>
1099       <Type name="VehicleSignalInterface"/>
1100     </Attribute>
1101     <Attribute readonly="readonly" name="rainSensor" id="::Vehicle::rainSensor">
1102       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref> rainSensor;</webidl>
1103       <Type name="VehicleSignalInterface"/>
1104     </Attribute>
1105     <Attribute readonly="readonly" name="wiperStatus" id="::Vehicle::wiperStatus">
1106       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref> wiperStatus;</webidl>
1107       <Type name="VehicleSignalInterface"/>
1108     </Attribute>
1109     <Attribute readonly="readonly" name="wiperSetting" id="::Vehicle::wiperSetting">
1110       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref> wiperSetting;</webidl>
1111       <Type name="VehicleSignalInterface"/>
1112     </Attribute>
1113     <Attribute readonly="readonly" name="defrost" id="::Vehicle::defrost">
1114       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref> defrost;</webidl>
1115       <Type name="VehicleSignalInterface"/>
1116     </Attribute>
1117     <Attribute readonly="readonly" name="sunroof" id="::Vehicle::sunroof">
1118       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref> sunroof;</webidl>
1119       <Type name="VehicleSignalInterface"/>
1120     </Attribute>
1121     <Attribute readonly="readonly" name="convertibleRoof" id="::Vehicle::convertibleRoof">
1122       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref> convertibleRoof;</webidl>
1123       <Type name="VehicleSignalInterface"/>
1124     </Attribute>
1125     <Attribute readonly="readonly" name="sideWindow" id="::Vehicle::sideWindow">
1126       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref> sideWindow;</webidl>
1127       <Type name="VehicleSignalInterface"/>
1128     </Attribute>
1129     <Attribute readonly="readonly" name="climateControl" id="::Vehicle::climateControl">
1130       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref> climateControl;</webidl>
1131       <Type name="VehicleSignalInterface"/>
1132     </Attribute>
1133     <Attribute readonly="readonly" name="atmosphericPressure" id="::Vehicle::atmosphericPressure">
1134       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref> atmosphericPressure;</webidl>
1135       <Type name="VehicleSignalInterface"/>
1136     </Attribute>
1137     <Attribute readonly="readonly" name="laneDepartureStatus" id="::Vehicle::laneDepartureStatus">
1138       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref> laneDepartureStatus;</webidl>
1139       <Type name="VehicleSignalInterface"/>
1140     </Attribute>
1141     <Attribute readonly="readonly" name="alarm" id="::Vehicle::alarm">
1142       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref> alarm;</webidl>
1143       <Type name="VehicleSignalInterface"/>
1144     </Attribute>
1145     <Attribute readonly="readonly" name="parkingBrake" id="::Vehicle::parkingBrake">
1146       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref> parkingBrake;</webidl>
1147       <Type name="VehicleSignalInterface"/>
1148     </Attribute>
1149     <Attribute readonly="readonly" name="parkingLights" id="::Vehicle::parkingLights">
1150       <webidl>    readonly    attribute <ref>VehicleSignalInterface</ref> parkingLights;</webidl>
1151       <Type name="VehicleSignalInterface"/>
1152     </Attribute>
1153   </Interface>
1154   <Enum name="ZonePosition" id="::ZonePosition">
1155     <webidl>enum ZonePosition {
1156     &quot;front&quot;,
1157     &quot;middle&quot;,
1158     &quot;right&quot;,
1159     &quot;left&quot;,
1160     &quot;rear&quot;,
1161     &quot;center&quot;
1162 };</webidl>
1163     <EnumValue stringvalue="front">
1164       <webidl>    &quot;front</webidl>
1165     </EnumValue>
1166     <EnumValue stringvalue="middle">
1167       <webidl>    &quot;middle</webidl>
1168     </EnumValue>
1169     <EnumValue stringvalue="right">
1170       <webidl>    &quot;right</webidl>
1171     </EnumValue>
1172     <EnumValue stringvalue="left">
1173       <webidl>    &quot;left</webidl>
1174     </EnumValue>
1175     <EnumValue stringvalue="rear">
1176       <webidl>    &quot;rear</webidl>
1177     </EnumValue>
1178     <EnumValue stringvalue="center">
1179       <webidl>    &quot;center</webidl>
1180     </EnumValue>
1181   </Enum>
1182   <Interface name="Zone" id="::Zone">
1183     <webidl>interface Zone {
1184                 attribute DOMString[] value;
1185     readonly    attribute <ref>Zone</ref>        driver;
1186     boolean equals (<ref>Zone</ref> zone);
1187     boolean contains (<ref>Zone</ref> zone);
1188 };</webidl>
1189     <Attribute name="value" id="::Zone::value">
1190       <webidl>                attribute DOMString[] value;</webidl>
1191       <Type type="array">
1192         <Type type="DOMString"/>
1193       </Type>
1194     </Attribute>
1195     <Attribute readonly="readonly" name="driver" id="::Zone::driver">
1196       <webidl>    readonly    attribute <ref>Zone</ref>        driver;</webidl>
1197       <Type name="Zone"/>
1198     </Attribute>
1199     <Operation name="equals" id="::Zone::equals">
1200       <webidl>    boolean equals (<ref>Zone</ref> zone);</webidl>
1201       <Type type="boolean"/>
1202       <ArgumentList>
1203         <Argument name="zone">
1204           <Type name="Zone"/>
1205         </Argument>
1206       </ArgumentList>
1207     </Operation>
1208     <Operation name="contains" id="::Zone::contains">
1209       <webidl>    boolean contains (<ref>Zone</ref> zone);</webidl>
1210       <Type type="boolean"/>
1211       <ArgumentList>
1212         <Argument name="zone">
1213           <Type name="Zone"/>
1214         </Argument>
1215       </ArgumentList>
1216     </Operation>
1217   </Interface>
1218   <Interface name="VehicleInterfaceCallback" id="::VehicleInterfaceCallback">
1219     <webidl>[Callback=FunctionOnly, NoInterfaceObject]
1220 interface VehicleInterfaceCallback {
1221     void onsuccess(object value);
1222 };</webidl>
1223     <ExtendedAttributeList>
1224       <ExtendedAttribute name="Callback" value="FunctionOnly">
1225         <webidl>Callback</webidl>
1226       </ExtendedAttribute>
1227       <ExtendedAttribute name="NoInterfaceObject">
1228         <webidl> NoInterfaceObject</webidl>
1229       </ExtendedAttribute>
1230     </ExtendedAttributeList>
1231     <Operation name="onsuccess" id="::VehicleInterfaceCallback::onsuccess">
1232       <webidl>    void onsuccess(object value);</webidl>
1233       <Type type="void"/>
1234       <ArgumentList>
1235         <Argument name="value">
1236           <Type type="object"/>
1237         </Argument>
1238       </ArgumentList>
1239     </Operation>
1240   </Interface>
1241   <Interface name="AvailableCallback" id="::AvailableCallback">
1242     <webidl>[Callback=FunctionOnly, NoInterfaceObject]
1243 interface AvailableCallback {
1244     void onsuccess(<ref>Availability</ref> available);
1245 };</webidl>
1246     <ExtendedAttributeList>
1247       <ExtendedAttribute name="Callback" value="FunctionOnly">
1248         <webidl>Callback</webidl>
1249       </ExtendedAttribute>
1250       <ExtendedAttribute name="NoInterfaceObject">
1251         <webidl> NoInterfaceObject</webidl>
1252       </ExtendedAttribute>
1253     </ExtendedAttributeList>
1254     <Operation name="onsuccess" id="::AvailableCallback::onsuccess">
1255       <webidl>    void onsuccess(<ref>Availability</ref> available);</webidl>
1256       <Type type="void"/>
1257       <ArgumentList>
1258         <Argument name="available">
1259           <Type name="Availability"/>
1260         </Argument>
1261       </ArgumentList>
1262     </Operation>
1263   </Interface>
1264   <Enum name="VehicleError" id="::VehicleError">
1265     <webidl>enum VehicleError {
1266     &quot;permission_denied&quot;,
1267     &quot;invalid_operation&quot;,
1268     &quot;timeout&quot;,
1269     &quot;invalid_zone&quot;,
1270     &quot;unknown&quot;
1271 };</webidl>
1272     <EnumValue stringvalue="permission_denied">
1273       <webidl>    &quot;permission_denied</webidl>
1274     </EnumValue>
1275     <EnumValue stringvalue="invalid_operation">
1276       <webidl>    &quot;invalid_operation</webidl>
1277     </EnumValue>
1278     <EnumValue stringvalue="timeout">
1279       <webidl>    &quot;timeout</webidl>
1280     </EnumValue>
1281     <EnumValue stringvalue="invalid_zone">
1282       <webidl>    &quot;invalid_zone</webidl>
1283     </EnumValue>
1284     <EnumValue stringvalue="unknown">
1285       <webidl>    &quot;unknown</webidl>
1286     </EnumValue>
1287   </Enum>
1288   <Interface name="VehicleInterfaceError" id="::VehicleInterfaceError">
1289     <webidl>[NoInterfaceObject]
1290 interface VehicleInterfaceError {
1291     readonly    attribute <ref>VehicleError</ref> error;
1292     readonly    attribute DOMString    message;
1293 };</webidl>
1294     <ExtendedAttributeList>
1295       <ExtendedAttribute name="NoInterfaceObject">
1296         <webidl>NoInterfaceObject</webidl>
1297       </ExtendedAttribute>
1298     </ExtendedAttributeList>
1299     <Attribute readonly="readonly" name="error" id="::VehicleInterfaceError::error">
1300       <webidl>    readonly    attribute <ref>VehicleError</ref> error;</webidl>
1301       <Type name="VehicleError"/>
1302     </Attribute>
1303     <Attribute readonly="readonly" name="message" id="::VehicleInterfaceError::message">
1304       <webidl>    readonly    attribute DOMString    message;</webidl>
1305       <Type type="DOMString"/>
1306     </Attribute>
1307   </Interface>
1308   <Interface name="VehicleInterface" id="::VehicleInterface">
1309     <webidl>interface VehicleInterface {
1310     <ref>Availability</ref>   availableForRetrieval (DOMString attributeName);
1311     <ref>Promise</ref>        get (optional <ref>Zone</ref> zone);
1312     <ref>Promise</ref>        getHistory (Date begin, Date end, optional <ref>Zone</ref> zone);
1313     short          availabilityChangedListener (<ref>AvailableCallback</ref> callback);
1314     void           removeAvailabilityChangedListener (short handle);
1315     readonly       attribute <ref>Zone</ref>[] zones;
1316     readonly       attribute boolean supported;
1317     readonly       attribute boolean isLogged;
1318     readonly       attribute Date ?  from;
1319     readonly       attribute Date ?  to;
1320 };</webidl>
1321     <Operation name="availableForRetrieval" id="::VehicleInterface::availableForRetrieval">
1322       <webidl>    <ref>Availability</ref>   availableForRetrieval (DOMString attributeName);</webidl>
1323       <Type name="Availability"/>
1324       <ArgumentList>
1325         <Argument name="attributeName">
1326           <Type type="DOMString"/>
1327         </Argument>
1328       </ArgumentList>
1329     </Operation>
1330     <Operation name="get" id="::VehicleInterface::get">
1331       <webidl>    <ref>Promise</ref>        get (optional <ref>Zone</ref> zone);</webidl>
1332       <Type name="Promise"/>
1333       <ArgumentList>
1334         <Argument optional="optional" name="zone">
1335           <Type name="Zone"/>
1336         </Argument>
1337       </ArgumentList>
1338     </Operation>
1339     <Operation name="getHistory" id="::VehicleInterface::getHistory">
1340       <webidl>    <ref>Promise</ref>        getHistory (Date begin, Date end, optional <ref>Zone</ref> zone);</webidl>
1341       <Type name="Promise"/>
1342       <ArgumentList>
1343         <Argument name="begin">
1344           <Type type="Date"/>
1345         </Argument>
1346         <Argument name="end">
1347           <Type type="Date"/>
1348         </Argument>
1349         <Argument optional="optional" name="zone">
1350           <Type name="Zone"/>
1351         </Argument>
1352       </ArgumentList>
1353     </Operation>
1354     <Operation name="availabilityChangedListener" id="::VehicleInterface::availabilityChangedListener">
1355       <webidl>    short          availabilityChangedListener (<ref>AvailableCallback</ref> callback);</webidl>
1356       <Type type="short"/>
1357       <ArgumentList>
1358         <Argument name="callback">
1359           <Type name="AvailableCallback"/>
1360         </Argument>
1361       </ArgumentList>
1362     </Operation>
1363     <Operation name="removeAvailabilityChangedListener" id="::VehicleInterface::removeAvailabilityChangedListener">
1364       <webidl>    void           removeAvailabilityChangedListener (short handle);</webidl>
1365       <Type type="void"/>
1366       <ArgumentList>
1367         <Argument name="handle">
1368           <Type type="short"/>
1369         </Argument>
1370       </ArgumentList>
1371     </Operation>
1372     <Attribute readonly="readonly" name="zones" id="::VehicleInterface::zones">
1373       <webidl>    readonly       attribute <ref>Zone</ref>[] zones;</webidl>
1374       <Type type="array">
1375         <Type name="Zone"/>
1376       </Type>
1377     </Attribute>
1378     <Attribute readonly="readonly" name="supported" id="::VehicleInterface::supported">
1379       <webidl>    readonly       attribute boolean supported;</webidl>
1380       <Type type="boolean"/>
1381     </Attribute>
1382     <Attribute readonly="readonly" name="isLogged" id="::VehicleInterface::isLogged">
1383       <webidl>    readonly       attribute boolean isLogged;</webidl>
1384       <Type type="boolean"/>
1385     </Attribute>
1386     <Attribute readonly="readonly" name="from" id="::VehicleInterface::from">
1387       <webidl>    readonly       attribute Date ?  from;</webidl>
1388       <Type type="Date" nullable="nullable"/>
1389     </Attribute>
1390     <Attribute readonly="readonly" name="to" id="::VehicleInterface::to">
1391       <webidl>    readonly       attribute Date ?  to;</webidl>
1392       <Type type="Date" nullable="nullable"/>
1393     </Attribute>
1394   </Interface>
1395   <Interface name="VehicleConfigurationInterface" id="::VehicleConfigurationInterface">
1396     <webidl>[NoInterfaceObject]
1397 interface VehicleConfigurationInterface : <ref>VehicleInterface</ref> {};</webidl>
1398     <ExtendedAttributeList>
1399       <ExtendedAttribute name="NoInterfaceObject">
1400         <webidl>NoInterfaceObject</webidl>
1401       </ExtendedAttribute>
1402     </ExtendedAttributeList>
1403     <InterfaceInheritance>
1404       <Name name="VehicleInterface"/>
1405     </InterfaceInheritance>
1406   </Interface>
1407   <Interface name="VehicleSignalInterface" id="::VehicleSignalInterface">
1408     <webidl>[NoInterfaceObject]
1409 interface VehicleSignalInterface : <ref>VehicleInterface</ref> {
1410     <ref>Availability</ref>   availableForSubscription (DOMString attributeName);
1411     <ref>Availability</ref>   availableForSetting (DOMString attributeName);
1412     <ref>Promise</ref>        set (object value, optional <ref>Zone</ref> zone);
1413     unsigned short subscribe (<ref>VehicleInterfaceCallback</ref> callback, optional <ref>Zone</ref> zone);
1414     void           unsubscribe (unsigned short handle);
1415 };</webidl>
1416     <ExtendedAttributeList>
1417       <ExtendedAttribute name="NoInterfaceObject">
1418         <webidl>NoInterfaceObject</webidl>
1419       </ExtendedAttribute>
1420     </ExtendedAttributeList>
1421     <InterfaceInheritance>
1422       <Name name="VehicleInterface"/>
1423     </InterfaceInheritance>
1424     <Operation name="availableForSubscription" id="::VehicleSignalInterface::availableForSubscription">
1425       <webidl>    <ref>Availability</ref>   availableForSubscription (DOMString attributeName);</webidl>
1426       <Type name="Availability"/>
1427       <ArgumentList>
1428         <Argument name="attributeName">
1429           <Type type="DOMString"/>
1430         </Argument>
1431       </ArgumentList>
1432     </Operation>
1433     <Operation name="availableForSetting" id="::VehicleSignalInterface::availableForSetting">
1434       <webidl>    <ref>Availability</ref>   availableForSetting (DOMString attributeName);</webidl>
1435       <Type name="Availability"/>
1436       <ArgumentList>
1437         <Argument name="attributeName">
1438           <Type type="DOMString"/>
1439         </Argument>
1440       </ArgumentList>
1441     </Operation>
1442     <Operation name="set" id="::VehicleSignalInterface::set">
1443       <webidl>    <ref>Promise</ref>        set (object value, optional <ref>Zone</ref> zone);</webidl>
1444       <Type name="Promise"/>
1445       <ArgumentList>
1446         <Argument name="value">
1447           <Type type="object"/>
1448         </Argument>
1449         <Argument optional="optional" name="zone">
1450           <Type name="Zone"/>
1451         </Argument>
1452       </ArgumentList>
1453     </Operation>
1454     <Operation name="subscribe" id="::VehicleSignalInterface::subscribe">
1455       <webidl>    unsigned short subscribe (<ref>VehicleInterfaceCallback</ref> callback, optional <ref>Zone</ref> zone);</webidl>
1456       <Type type="unsigned short"/>
1457       <ArgumentList>
1458         <Argument name="callback">
1459           <Type name="VehicleInterfaceCallback"/>
1460         </Argument>
1461         <Argument optional="optional" name="zone">
1462           <Type name="Zone"/>
1463         </Argument>
1464       </ArgumentList>
1465     </Operation>
1466     <Operation name="unsubscribe" id="::VehicleSignalInterface::unsubscribe">
1467       <webidl>    void           unsubscribe (unsigned short handle);</webidl>
1468       <Type type="void"/>
1469       <ArgumentList>
1470         <Argument name="handle">
1471           <Type type="unsigned short"/>
1472         </Argument>
1473       </ArgumentList>
1474     </Operation>
1475   </Interface>
1476   <Enum name="Availability" id="::Availability">
1477     <webidl>enum Availability {
1478     &quot;available&quot;,
1479     &quot;not_supported&quot;,
1480     &quot;not_supported_yet&quot;,
1481     &quot;not_supported_security_policy&quot;,
1482     &quot;not_supported_business_policy&quot;,
1483     &quot;not_supported_other&quot;
1484 };</webidl>
1485     <EnumValue stringvalue="available">
1486       <webidl>    &quot;available</webidl>
1487     </EnumValue>
1488     <EnumValue stringvalue="not_supported">
1489       <webidl>    &quot;not_supported</webidl>
1490     </EnumValue>
1491     <EnumValue stringvalue="not_supported_yet">
1492       <webidl>    &quot;not_supported_yet</webidl>
1493     </EnumValue>
1494     <EnumValue stringvalue="not_supported_security_policy">
1495       <webidl>    &quot;not_supported_security_policy</webidl>
1496     </EnumValue>
1497     <EnumValue stringvalue="not_supported_business_policy">
1498       <webidl>    &quot;not_supported_business_policy</webidl>
1499     </EnumValue>
1500     <EnumValue stringvalue="not_supported_other">
1501       <webidl>    &quot;not_supported_other</webidl>
1502     </EnumValue>
1503   </Enum>
1504   <Interface name="VehicleCommonDataType" id="::VehicleCommonDataType">
1505     <webidl>[NoInterfaceObject]
1506 interface VehicleCommonDataType {
1507     readonly    attribute <ref>DOMTimeStamp</ref>? timeStamp;
1508 };</webidl>
1509     <ExtendedAttributeList>
1510       <ExtendedAttribute name="NoInterfaceObject">
1511         <webidl>NoInterfaceObject</webidl>
1512       </ExtendedAttribute>
1513     </ExtendedAttributeList>
1514     <Attribute readonly="readonly" name="timeStamp" id="::VehicleCommonDataType::timeStamp">
1515       <webidl>    readonly    attribute <ref>DOMTimeStamp</ref>? timeStamp;</webidl>
1516       <Type name="DOMTimeStamp" nullable="nullable"/>
1517     </Attribute>
1518   </Interface>
1519   <Enum name="VehicleTypeEnum" id="::VehicleTypeEnum">
1520     <webidl>enum VehicleTypeEnum {
1521     &quot;passengerCarMini&quot;,
1522     &quot;passengerCarLight&quot;,
1523     &quot;passengerCarCompact&quot;,
1524     &quot;passengerCarMedium&quot;,
1525     &quot;passengerCarHeavy&quot;,
1526     &quot;sportUtilityVehicle&quot;,
1527     &quot;pickupTruck&quot;,
1528     &quot;van&quot;
1529 };</webidl>
1530     <EnumValue stringvalue="passengerCarMini">
1531       <webidl>    &quot;passengerCarMini</webidl>
1532     </EnumValue>
1533     <EnumValue stringvalue="passengerCarLight">
1534       <webidl>    &quot;passengerCarLight</webidl>
1535     </EnumValue>
1536     <EnumValue stringvalue="passengerCarCompact">
1537       <webidl>    &quot;passengerCarCompact</webidl>
1538     </EnumValue>
1539     <EnumValue stringvalue="passengerCarMedium">
1540       <webidl>    &quot;passengerCarMedium</webidl>
1541     </EnumValue>
1542     <EnumValue stringvalue="passengerCarHeavy">
1543       <webidl>    &quot;passengerCarHeavy</webidl>
1544     </EnumValue>
1545     <EnumValue stringvalue="sportUtilityVehicle">
1546       <webidl>    &quot;sportUtilityVehicle</webidl>
1547     </EnumValue>
1548     <EnumValue stringvalue="pickupTruck">
1549       <webidl>    &quot;pickupTruck</webidl>
1550     </EnumValue>
1551     <EnumValue stringvalue="van">
1552       <webidl>    &quot;van</webidl>
1553     </EnumValue>
1554   </Enum>
1555   <Interface name="Identification" id="::Identification">
1556     <webidl>[NoInterfaceObject]
1557 interface Identification : <ref>VehicleCommonDataType</ref> {
1558     readonly    attribute DOMString?       VIN;
1559     readonly    attribute DOMString?       WMI;
1560     readonly    attribute <ref>VehicleTypeEnum</ref>? vehicleType;
1561     readonly    attribute DOMString?       brand;
1562     readonly    attribute DOMString?       model;
1563     readonly    attribute unsigned short?  year;
1564 };</webidl>
1565     <ExtendedAttributeList>
1566       <ExtendedAttribute name="NoInterfaceObject">
1567         <webidl>NoInterfaceObject</webidl>
1568       </ExtendedAttribute>
1569     </ExtendedAttributeList>
1570     <InterfaceInheritance>
1571       <Name name="VehicleCommonDataType"/>
1572     </InterfaceInheritance>
1573     <Attribute readonly="readonly" name="VIN" id="::Identification::VIN">
1574       <webidl>    readonly    attribute DOMString?       VIN;</webidl>
1575       <Type type="DOMString" nullable="nullable"/>
1576     </Attribute>
1577     <Attribute readonly="readonly" name="WMI" id="::Identification::WMI">
1578       <webidl>    readonly    attribute DOMString?       WMI;</webidl>
1579       <Type type="DOMString" nullable="nullable"/>
1580     </Attribute>
1581     <Attribute readonly="readonly" name="vehicleType" id="::Identification::vehicleType">
1582       <webidl>    readonly    attribute <ref>VehicleTypeEnum</ref>? vehicleType;</webidl>
1583       <Type name="VehicleTypeEnum" nullable="nullable"/>
1584     </Attribute>
1585     <Attribute readonly="readonly" name="brand" id="::Identification::brand">
1586       <webidl>    readonly    attribute DOMString?       brand;</webidl>
1587       <Type type="DOMString" nullable="nullable"/>
1588     </Attribute>
1589     <Attribute readonly="readonly" name="model" id="::Identification::model">
1590       <webidl>    readonly    attribute DOMString?       model;</webidl>
1591       <Type type="DOMString" nullable="nullable"/>
1592     </Attribute>
1593     <Attribute readonly="readonly" name="year" id="::Identification::year">
1594       <webidl>    readonly    attribute unsigned short?  year;</webidl>
1595       <Type type="unsigned short" nullable="nullable"/>
1596     </Attribute>
1597   </Interface>
1598   <Interface name="SizeConfiguration" id="::SizeConfiguration">
1599     <webidl>[NoInterfaceObject]
1600 interface SizeConfiguration : <ref>VehicleCommonDataType</ref> {
1601     readonly    attribute unsigned short?   width;
1602     readonly    attribute unsigned short?   height;
1603     readonly    attribute unsigned short?   length;
1604     readonly    attribute unsigned short[]? doorsCount;
1605     readonly    attribute unsigned short?   totalDoors;
1606 };</webidl>
1607     <ExtendedAttributeList>
1608       <ExtendedAttribute name="NoInterfaceObject">
1609         <webidl>NoInterfaceObject</webidl>
1610       </ExtendedAttribute>
1611     </ExtendedAttributeList>
1612     <InterfaceInheritance>
1613       <Name name="VehicleCommonDataType"/>
1614     </InterfaceInheritance>
1615     <Attribute readonly="readonly" name="width" id="::SizeConfiguration::width">
1616       <webidl>    readonly    attribute unsigned short?   width;</webidl>
1617       <Type type="unsigned short" nullable="nullable"/>
1618     </Attribute>
1619     <Attribute readonly="readonly" name="height" id="::SizeConfiguration::height">
1620       <webidl>    readonly    attribute unsigned short?   height;</webidl>
1621       <Type type="unsigned short" nullable="nullable"/>
1622     </Attribute>
1623     <Attribute readonly="readonly" name="length" id="::SizeConfiguration::length">
1624       <webidl>    readonly    attribute unsigned short?   length;</webidl>
1625       <Type type="unsigned short" nullable="nullable"/>
1626     </Attribute>
1627     <Attribute readonly="readonly" name="doorsCount" id="::SizeConfiguration::doorsCount">
1628       <webidl>    readonly    attribute unsigned short[]? doorsCount;</webidl>
1629       <Type type="array" nullable="nullable">
1630         <Type type="unsigned short"/>
1631       </Type>
1632     </Attribute>
1633     <Attribute readonly="readonly" name="totalDoors" id="::SizeConfiguration::totalDoors">
1634       <webidl>    readonly    attribute unsigned short?   totalDoors;</webidl>
1635       <Type type="unsigned short" nullable="nullable"/>
1636     </Attribute>
1637   </Interface>
1638   <Enum name="FuelTypeEnum" id="::FuelTypeEnum">
1639     <webidl>enum FuelTypeEnum {
1640     &quot;gasoline&quot;,
1641     &quot;methanol&quot;,
1642     &quot;ethanol&quot;,
1643     &quot;diesel&quot;,
1644     &quot;lpg&quot;,
1645     &quot;cng&quot;,
1646     &quot;electric&quot;
1647 };</webidl>
1648     <EnumValue stringvalue="gasoline">
1649       <webidl>    &quot;gasoline</webidl>
1650     </EnumValue>
1651     <EnumValue stringvalue="methanol">
1652       <webidl>    &quot;methanol</webidl>
1653     </EnumValue>
1654     <EnumValue stringvalue="ethanol">
1655       <webidl>    &quot;ethanol</webidl>
1656     </EnumValue>
1657     <EnumValue stringvalue="diesel">
1658       <webidl>    &quot;diesel</webidl>
1659     </EnumValue>
1660     <EnumValue stringvalue="lpg">
1661       <webidl>    &quot;lpg</webidl>
1662     </EnumValue>
1663     <EnumValue stringvalue="cng">
1664       <webidl>    &quot;cng</webidl>
1665     </EnumValue>
1666     <EnumValue stringvalue="electric">
1667       <webidl>    &quot;electric</webidl>
1668     </EnumValue>
1669   </Enum>
1670   <Interface name="FuelConfiguration" id="::FuelConfiguration">
1671     <webidl>[NoInterfaceObject]
1672 interface FuelConfiguration : <ref>VehicleCommonDataType</ref> {
1673     readonly    attribute <ref>FuelTypeEnum</ref>[]? fuelType;
1674     readonly    attribute <ref>Zone</ref>?           refuelPosition;
1675 };</webidl>
1676     <ExtendedAttributeList>
1677       <ExtendedAttribute name="NoInterfaceObject">
1678         <webidl>NoInterfaceObject</webidl>
1679       </ExtendedAttribute>
1680     </ExtendedAttributeList>
1681     <InterfaceInheritance>
1682       <Name name="VehicleCommonDataType"/>
1683     </InterfaceInheritance>
1684     <Attribute readonly="readonly" name="fuelType" id="::FuelConfiguration::fuelType">
1685       <webidl>    readonly    attribute <ref>FuelTypeEnum</ref>[]? fuelType;</webidl>
1686       <Type type="array" nullable="nullable">
1687         <Type name="FuelTypeEnum"/>
1688       </Type>
1689     </Attribute>
1690     <Attribute readonly="readonly" name="refuelPosition" id="::FuelConfiguration::refuelPosition">
1691       <webidl>    readonly    attribute <ref>Zone</ref>?           refuelPosition;</webidl>
1692       <Type name="Zone" nullable="nullable"/>
1693     </Attribute>
1694   </Interface>
1695   <Enum name="TransmissionGearTypeEnum" id="::TransmissionGearTypeEnum">
1696     <webidl>enum TransmissionGearTypeEnum {
1697     &quot;auto&quot;,
1698     &quot;manual&quot;
1699 };</webidl>
1700     <EnumValue stringvalue="auto">
1701       <webidl>    &quot;auto</webidl>
1702     </EnumValue>
1703     <EnumValue stringvalue="manual">
1704       <webidl>    &quot;manual</webidl>
1705     </EnumValue>
1706   </Enum>
1707   <Interface name="TransmissionConfiguration" id="::TransmissionConfiguration">
1708     <webidl>[NoInterfaceObject]
1709 interface TransmissionConfiguration : <ref>VehicleCommonDataType</ref> {
1710     readonly    attribute <ref>TransmissionGearTypeEnum</ref>? transmissionGearType;
1711 };</webidl>
1712     <ExtendedAttributeList>
1713       <ExtendedAttribute name="NoInterfaceObject">
1714         <webidl>NoInterfaceObject</webidl>
1715       </ExtendedAttribute>
1716     </ExtendedAttributeList>
1717     <InterfaceInheritance>
1718       <Name name="VehicleCommonDataType"/>
1719     </InterfaceInheritance>
1720     <Attribute readonly="readonly" name="transmissionGearType" id="::TransmissionConfiguration::transmissionGearType">
1721       <webidl>    readonly    attribute <ref>TransmissionGearTypeEnum</ref>? transmissionGearType;</webidl>
1722       <Type name="TransmissionGearTypeEnum" nullable="nullable"/>
1723     </Attribute>
1724   </Interface>
1725   <Interface name="WheelConfiguration" id="::WheelConfiguration">
1726     <webidl>[NoInterfaceObject]
1727 interface WheelConfiguration : <ref>VehicleCommonDataType</ref> {
1728     readonly    attribute unsigned short? wheelRadius;
1729     readonly    attribute <ref>Zone</ref>?           zone;
1730 };</webidl>
1731     <ExtendedAttributeList>
1732       <ExtendedAttribute name="NoInterfaceObject">
1733         <webidl>NoInterfaceObject</webidl>
1734       </ExtendedAttribute>
1735     </ExtendedAttributeList>
1736     <InterfaceInheritance>
1737       <Name name="VehicleCommonDataType"/>
1738     </InterfaceInheritance>
1739     <Attribute readonly="readonly" name="wheelRadius" id="::WheelConfiguration::wheelRadius">
1740       <webidl>    readonly    attribute unsigned short? wheelRadius;</webidl>
1741       <Type type="unsigned short" nullable="nullable"/>
1742     </Attribute>
1743     <Attribute readonly="readonly" name="zone" id="::WheelConfiguration::zone">
1744       <webidl>    readonly    attribute <ref>Zone</ref>?           zone;</webidl>
1745       <Type name="Zone" nullable="nullable"/>
1746     </Attribute>
1747   </Interface>
1748   <Interface name="SteeringWheelConfiguration" id="::SteeringWheelConfiguration">
1749     <webidl>[NoInterfaceObject]
1750 interface SteeringWheelConfiguration : <ref>VehicleCommonDataType</ref> {
1751     readonly    attribute boolean?        steeringWheelLeft;
1752                 attribute unsigned short? steeringWheelTelescopingPosition;
1753                 attribute unsigned short? steeringWheelPositionTilt;
1754 };</webidl>
1755     <ExtendedAttributeList>
1756       <ExtendedAttribute name="NoInterfaceObject">
1757         <webidl>NoInterfaceObject</webidl>
1758       </ExtendedAttribute>
1759     </ExtendedAttributeList>
1760     <InterfaceInheritance>
1761       <Name name="VehicleCommonDataType"/>
1762     </InterfaceInheritance>
1763     <Attribute readonly="readonly" name="steeringWheelLeft" id="::SteeringWheelConfiguration::steeringWheelLeft">
1764       <webidl>    readonly    attribute boolean?        steeringWheelLeft;</webidl>
1765       <Type type="boolean" nullable="nullable"/>
1766     </Attribute>
1767     <Attribute name="steeringWheelTelescopingPosition" id="::SteeringWheelConfiguration::steeringWheelTelescopingPosition">
1768       <webidl>                attribute unsigned short? steeringWheelTelescopingPosition;</webidl>
1769       <Type type="unsigned short" nullable="nullable"/>
1770     </Attribute>
1771     <Attribute name="steeringWheelPositionTilt" id="::SteeringWheelConfiguration::steeringWheelPositionTilt">
1772       <webidl>                attribute unsigned short? steeringWheelPositionTilt;</webidl>
1773       <Type type="unsigned short" nullable="nullable"/>
1774     </Attribute>
1775   </Interface>
1776   <Interface name="VehicleSpeed" id="::VehicleSpeed">
1777     <webidl>[NoInterfaceObject]
1778 interface VehicleSpeed : <ref>VehicleCommonDataType</ref> {
1779     readonly    attribute unsigned short speed;
1780 };</webidl>
1781     <ExtendedAttributeList>
1782       <ExtendedAttribute name="NoInterfaceObject">
1783         <webidl>NoInterfaceObject</webidl>
1784       </ExtendedAttribute>
1785     </ExtendedAttributeList>
1786     <InterfaceInheritance>
1787       <Name name="VehicleCommonDataType"/>
1788     </InterfaceInheritance>
1789     <Attribute readonly="readonly" name="speed" id="::VehicleSpeed::speed">
1790       <webidl>    readonly    attribute unsigned short speed;</webidl>
1791       <Type type="unsigned short"/>
1792     </Attribute>
1793   </Interface>
1794   <Interface name="WheelSpeed" id="::WheelSpeed">
1795     <webidl>[NoInterfaceObject]
1796 interface WheelSpeed : <ref>VehicleCommonDataType</ref> {
1797     readonly    attribute unsigned short speed;
1798     readonly    attribute <ref>Zone</ref>?          zone;
1799 };</webidl>
1800     <ExtendedAttributeList>
1801       <ExtendedAttribute name="NoInterfaceObject">
1802         <webidl>NoInterfaceObject</webidl>
1803       </ExtendedAttribute>
1804     </ExtendedAttributeList>
1805     <InterfaceInheritance>
1806       <Name name="VehicleCommonDataType"/>
1807     </InterfaceInheritance>
1808     <Attribute readonly="readonly" name="speed" id="::WheelSpeed::speed">
1809       <webidl>    readonly    attribute unsigned short speed;</webidl>
1810       <Type type="unsigned short"/>
1811     </Attribute>
1812     <Attribute readonly="readonly" name="zone" id="::WheelSpeed::zone">
1813       <webidl>    readonly    attribute <ref>Zone</ref>?          zone;</webidl>
1814       <Type name="Zone" nullable="nullable"/>
1815     </Attribute>
1816   </Interface>
1817   <Interface name="EngineSpeed" id="::EngineSpeed">
1818     <webidl>[NoInterfaceObject]
1819 interface EngineSpeed : <ref>VehicleCommonDataType</ref> {
1820     readonly    attribute unsigned long speed;
1821 };</webidl>
1822     <ExtendedAttributeList>
1823       <ExtendedAttribute name="NoInterfaceObject">
1824         <webidl>NoInterfaceObject</webidl>
1825       </ExtendedAttribute>
1826     </ExtendedAttributeList>
1827     <InterfaceInheritance>
1828       <Name name="VehicleCommonDataType"/>
1829     </InterfaceInheritance>
1830     <Attribute readonly="readonly" name="speed" id="::EngineSpeed::speed">
1831       <webidl>    readonly    attribute unsigned long speed;</webidl>
1832       <Type type="unsigned long"/>
1833     </Attribute>
1834   </Interface>
1835   <Enum name="VehiclePowerMode" id="::VehiclePowerMode">
1836     <webidl>enum VehiclePowerMode {
1837     &quot;off&quot;,
1838     &quot;accessory1&quot;,
1839     &quot;accessory2&quot;,
1840     &quot;running&quot;
1841 };</webidl>
1842     <EnumValue stringvalue="off">
1843       <webidl>    &quot;off</webidl>
1844     </EnumValue>
1845     <EnumValue stringvalue="accessory1">
1846       <webidl>    &quot;accessory1</webidl>
1847     </EnumValue>
1848     <EnumValue stringvalue="accessory2">
1849       <webidl>    &quot;accessory2</webidl>
1850     </EnumValue>
1851     <EnumValue stringvalue="running">
1852       <webidl>    &quot;running</webidl>
1853     </EnumValue>
1854   </Enum>
1855   <Interface name="VehiclePowerModeType" id="::VehiclePowerModeType">
1856     <webidl>[NoInterfaceObject]
1857 interface VehiclePowerModeType : <ref>VehicleCommonDataType</ref> {
1858     readonly    attribute <ref>VehiclePowerMode</ref> value;
1859 };</webidl>
1860     <ExtendedAttributeList>
1861       <ExtendedAttribute name="NoInterfaceObject">
1862         <webidl>NoInterfaceObject</webidl>
1863       </ExtendedAttribute>
1864     </ExtendedAttributeList>
1865     <InterfaceInheritance>
1866       <Name name="VehicleCommonDataType"/>
1867     </InterfaceInheritance>
1868     <Attribute readonly="readonly" name="value" id="::VehiclePowerModeType::value">
1869       <webidl>    readonly    attribute <ref>VehiclePowerMode</ref> value;</webidl>
1870       <Type name="VehiclePowerMode"/>
1871     </Attribute>
1872   </Interface>
1873   <Interface name="PowerTrainTorque" id="::PowerTrainTorque">
1874     <webidl>[NoInterfaceObject]
1875 interface PowerTrainTorque : <ref>VehicleCommonDataType</ref> {
1876     readonly    attribute short value;
1877 };</webidl>
1878     <ExtendedAttributeList>
1879       <ExtendedAttribute name="NoInterfaceObject">
1880         <webidl>NoInterfaceObject</webidl>
1881       </ExtendedAttribute>
1882     </ExtendedAttributeList>
1883     <InterfaceInheritance>
1884       <Name name="VehicleCommonDataType"/>
1885     </InterfaceInheritance>
1886     <Attribute readonly="readonly" name="value" id="::PowerTrainTorque::value">
1887       <webidl>    readonly    attribute short value;</webidl>
1888       <Type type="short"/>
1889     </Attribute>
1890   </Interface>
1891   <Interface name="AcceleratorPedalPosition" id="::AcceleratorPedalPosition">
1892     <webidl>[NoInterfaceObject]
1893 interface AcceleratorPedalPosition : <ref>VehicleCommonDataType</ref> {
1894     readonly    attribute unsigned short value;
1895 };</webidl>
1896     <ExtendedAttributeList>
1897       <ExtendedAttribute name="NoInterfaceObject">
1898         <webidl>NoInterfaceObject</webidl>
1899       </ExtendedAttribute>
1900     </ExtendedAttributeList>
1901     <InterfaceInheritance>
1902       <Name name="VehicleCommonDataType"/>
1903     </InterfaceInheritance>
1904     <Attribute readonly="readonly" name="value" id="::AcceleratorPedalPosition::value">
1905       <webidl>    readonly    attribute unsigned short value;</webidl>
1906       <Type type="unsigned short"/>
1907     </Attribute>
1908   </Interface>
1909   <Interface name="ThrottlePosition" id="::ThrottlePosition">
1910     <webidl>[NoInterfaceObject]
1911 interface ThrottlePosition : <ref>VehicleCommonDataType</ref> {
1912     readonly    attribute unsigned short value;
1913 };</webidl>
1914     <ExtendedAttributeList>
1915       <ExtendedAttribute name="NoInterfaceObject">
1916         <webidl>NoInterfaceObject</webidl>
1917       </ExtendedAttribute>
1918     </ExtendedAttributeList>
1919     <InterfaceInheritance>
1920       <Name name="VehicleCommonDataType"/>
1921     </InterfaceInheritance>
1922     <Attribute readonly="readonly" name="value" id="::ThrottlePosition::value">
1923       <webidl>    readonly    attribute unsigned short value;</webidl>
1924       <Type type="unsigned short"/>
1925     </Attribute>
1926   </Interface>
1927   <Interface name="Trip" id="::Trip">
1928     <webidl>[NoInterfaceObject]
1929 interface Trip {
1930     readonly    attribute unsigned long   distance;
1931     readonly    attribute unsigned short? averageSpeed;
1932     readonly    attribute unsigned short? fuelConsumption;
1933 };</webidl>
1934     <ExtendedAttributeList>
1935       <ExtendedAttribute name="NoInterfaceObject">
1936         <webidl>NoInterfaceObject</webidl>
1937       </ExtendedAttribute>
1938     </ExtendedAttributeList>
1939     <Attribute readonly="readonly" name="distance" id="::Trip::distance">
1940       <webidl>    readonly    attribute unsigned long   distance;</webidl>
1941       <Type type="unsigned long"/>
1942     </Attribute>
1943     <Attribute readonly="readonly" name="averageSpeed" id="::Trip::averageSpeed">
1944       <webidl>    readonly    attribute unsigned short? averageSpeed;</webidl>
1945       <Type type="unsigned short" nullable="nullable"/>
1946     </Attribute>
1947     <Attribute readonly="readonly" name="fuelConsumption" id="::Trip::fuelConsumption">
1948       <webidl>    readonly    attribute unsigned short? fuelConsumption;</webidl>
1949       <Type type="unsigned short" nullable="nullable"/>
1950     </Attribute>
1951   </Interface>
1952   <Interface name="TripMeters" id="::TripMeters">
1953     <webidl>[NoInterfaceObject]
1954 interface TripMeters : <ref>VehicleCommonDataType</ref> {
1955     readonly    attribute <ref>Trip</ref>[] meters;
1956 };</webidl>
1957     <ExtendedAttributeList>
1958       <ExtendedAttribute name="NoInterfaceObject">
1959         <webidl>NoInterfaceObject</webidl>
1960       </ExtendedAttribute>
1961     </ExtendedAttributeList>
1962     <InterfaceInheritance>
1963       <Name name="VehicleCommonDataType"/>
1964     </InterfaceInheritance>
1965     <Attribute readonly="readonly" name="meters" id="::TripMeters::meters">
1966       <webidl>    readonly    attribute <ref>Trip</ref>[] meters;</webidl>
1967       <Type type="array">
1968         <Type name="Trip"/>
1969       </Type>
1970     </Attribute>
1971   </Interface>
1972   <Enum name="TransmissionMode" id="::TransmissionMode">
1973     <webidl>enum TransmissionMode {
1974     &quot;park&quot;,
1975     &quot;reverse&quot;,
1976     &quot;neutral&quot;,
1977     &quot;low&quot;,
1978     &quot;drive&quot;,
1979     &quot;overdrive&quot;
1980 };</webidl>
1981     <EnumValue stringvalue="park">
1982       <webidl>    &quot;park</webidl>
1983     </EnumValue>
1984     <EnumValue stringvalue="reverse">
1985       <webidl>    &quot;reverse</webidl>
1986     </EnumValue>
1987     <EnumValue stringvalue="neutral">
1988       <webidl>    &quot;neutral</webidl>
1989     </EnumValue>
1990     <EnumValue stringvalue="low">
1991       <webidl>    &quot;low</webidl>
1992     </EnumValue>
1993     <EnumValue stringvalue="drive">
1994       <webidl>    &quot;drive</webidl>
1995     </EnumValue>
1996     <EnumValue stringvalue="overdrive">
1997       <webidl>    &quot;overdrive</webidl>
1998     </EnumValue>
1999   </Enum>
2000   <Interface name="Transmission" id="::Transmission">
2001     <webidl>[NoInterfaceObject]
2002 interface Transmission : <ref>VehicleCommonDataType</ref> {
2003     readonly    attribute octet?            gear;
2004     readonly    attribute <ref>TransmissionMode</ref>? mode;
2005 };</webidl>
2006     <ExtendedAttributeList>
2007       <ExtendedAttribute name="NoInterfaceObject">
2008         <webidl>NoInterfaceObject</webidl>
2009       </ExtendedAttribute>
2010     </ExtendedAttributeList>
2011     <InterfaceInheritance>
2012       <Name name="VehicleCommonDataType"/>
2013     </InterfaceInheritance>
2014     <Attribute readonly="readonly" name="gear" id="::Transmission::gear">
2015       <webidl>    readonly    attribute octet?            gear;</webidl>
2016       <Type type="octet" nullable="nullable"/>
2017     </Attribute>
2018     <Attribute readonly="readonly" name="mode" id="::Transmission::mode">
2019       <webidl>    readonly    attribute <ref>TransmissionMode</ref>? mode;</webidl>
2020       <Type name="TransmissionMode" nullable="nullable"/>
2021     </Attribute>
2022   </Interface>
2023   <Interface name="CruiseControlStatus" id="::CruiseControlStatus">
2024     <webidl>[NoInterfaceObject]
2025 interface CruiseControlStatus : <ref>VehicleCommonDataType</ref> {
2026     readonly    attribute boolean        status;
2027     readonly    attribute unsigned short speed;
2028 };</webidl>
2029     <ExtendedAttributeList>
2030       <ExtendedAttribute name="NoInterfaceObject">
2031         <webidl>NoInterfaceObject</webidl>
2032       </ExtendedAttribute>
2033     </ExtendedAttributeList>
2034     <InterfaceInheritance>
2035       <Name name="VehicleCommonDataType"/>
2036     </InterfaceInheritance>
2037     <Attribute readonly="readonly" name="status" id="::CruiseControlStatus::status">
2038       <webidl>    readonly    attribute boolean        status;</webidl>
2039       <Type type="boolean"/>
2040     </Attribute>
2041     <Attribute readonly="readonly" name="speed" id="::CruiseControlStatus::speed">
2042       <webidl>    readonly    attribute unsigned short speed;</webidl>
2043       <Type type="unsigned short"/>
2044     </Attribute>
2045   </Interface>
2046   <Interface name="LightStatus" id="::LightStatus">
2047     <webidl>[NoInterfaceObject]
2048 interface LightStatus : <ref>VehicleCommonDataType</ref> {
2049                 attribute boolean  head;
2050                 attribute boolean  rightTurn;
2051                 attribute boolean  leftTurn;
2052                 attribute boolean  brake;
2053                 attribute boolean? fog;
2054                 attribute boolean  hazard;
2055                 attribute boolean  parking;
2056                 attribute boolean  highBeam;
2057                 attribute boolean? automaticHeadlights;
2058                 attribute boolean? dynamicHighBeam;
2059     readonly    attribute <ref>Zone</ref>?    zone;
2060 };</webidl>
2061     <ExtendedAttributeList>
2062       <ExtendedAttribute name="NoInterfaceObject">
2063         <webidl>NoInterfaceObject</webidl>
2064       </ExtendedAttribute>
2065     </ExtendedAttributeList>
2066     <InterfaceInheritance>
2067       <Name name="VehicleCommonDataType"/>
2068     </InterfaceInheritance>
2069     <Attribute name="head" id="::LightStatus::head">
2070       <webidl>                attribute boolean  head;</webidl>
2071       <Type type="boolean"/>
2072     </Attribute>
2073     <Attribute name="rightTurn" id="::LightStatus::rightTurn">
2074       <webidl>                attribute boolean  rightTurn;</webidl>
2075       <Type type="boolean"/>
2076     </Attribute>
2077     <Attribute name="leftTurn" id="::LightStatus::leftTurn">
2078       <webidl>                attribute boolean  leftTurn;</webidl>
2079       <Type type="boolean"/>
2080     </Attribute>
2081     <Attribute name="brake" id="::LightStatus::brake">
2082       <webidl>                attribute boolean  brake;</webidl>
2083       <Type type="boolean"/>
2084     </Attribute>
2085     <Attribute name="fog" id="::LightStatus::fog">
2086       <webidl>                attribute boolean? fog;</webidl>
2087       <Type type="boolean" nullable="nullable"/>
2088     </Attribute>
2089     <Attribute name="hazard" id="::LightStatus::hazard">
2090       <webidl>                attribute boolean  hazard;</webidl>
2091       <Type type="boolean"/>
2092     </Attribute>
2093     <Attribute name="parking" id="::LightStatus::parking">
2094       <webidl>                attribute boolean  parking;</webidl>
2095       <Type type="boolean"/>
2096     </Attribute>
2097     <Attribute name="highBeam" id="::LightStatus::highBeam">
2098       <webidl>                attribute boolean  highBeam;</webidl>
2099       <Type type="boolean"/>
2100     </Attribute>
2101     <Attribute name="automaticHeadlights" id="::LightStatus::automaticHeadlights">
2102       <webidl>                attribute boolean? automaticHeadlights;</webidl>
2103       <Type type="boolean" nullable="nullable"/>
2104     </Attribute>
2105     <Attribute name="dynamicHighBeam" id="::LightStatus::dynamicHighBeam">
2106       <webidl>                attribute boolean? dynamicHighBeam;</webidl>
2107       <Type type="boolean" nullable="nullable"/>
2108     </Attribute>
2109     <Attribute readonly="readonly" name="zone" id="::LightStatus::zone">
2110       <webidl>    readonly    attribute <ref>Zone</ref>?    zone;</webidl>
2111       <Type name="Zone" nullable="nullable"/>
2112     </Attribute>
2113   </Interface>
2114   <Interface name="InteriorLightStatus" id="::InteriorLightStatus">
2115     <webidl>[NoInterfaceObject]
2116 interface InteriorLightStatus : <ref>VehicleCommonDataType</ref> {
2117                 attribute boolean status;
2118     readonly    attribute <ref>Zone</ref>?   zone;
2119 };</webidl>
2120     <ExtendedAttributeList>
2121       <ExtendedAttribute name="NoInterfaceObject">
2122         <webidl>NoInterfaceObject</webidl>
2123       </ExtendedAttribute>
2124     </ExtendedAttributeList>
2125     <InterfaceInheritance>
2126       <Name name="VehicleCommonDataType"/>
2127     </InterfaceInheritance>
2128     <Attribute name="status" id="::InteriorLightStatus::status">
2129       <webidl>                attribute boolean status;</webidl>
2130       <Type type="boolean"/>
2131     </Attribute>
2132     <Attribute readonly="readonly" name="zone" id="::InteriorLightStatus::zone">
2133       <webidl>    readonly    attribute <ref>Zone</ref>?   zone;</webidl>
2134       <Type name="Zone" nullable="nullable"/>
2135     </Attribute>
2136   </Interface>
2137   <Interface name="Horn" id="::Horn">
2138     <webidl>[NoInterfaceObject]
2139 interface Horn : <ref>VehicleCommonDataType</ref> {
2140                 attribute boolean status;
2141 };</webidl>
2142     <ExtendedAttributeList>
2143       <ExtendedAttribute name="NoInterfaceObject">
2144         <webidl>NoInterfaceObject</webidl>
2145       </ExtendedAttribute>
2146     </ExtendedAttributeList>
2147     <InterfaceInheritance>
2148       <Name name="VehicleCommonDataType"/>
2149     </InterfaceInheritance>
2150     <Attribute name="status" id="::Horn::status">
2151       <webidl>                attribute boolean status;</webidl>
2152       <Type type="boolean"/>
2153     </Attribute>
2154   </Interface>
2155   <Interface name="Chime" id="::Chime">
2156     <webidl>[NoInterfaceObject]
2157 interface Chime : <ref>VehicleCommonDataType</ref> {
2158     readonly    attribute boolean status;
2159 };</webidl>
2160     <ExtendedAttributeList>
2161       <ExtendedAttribute name="NoInterfaceObject">
2162         <webidl>NoInterfaceObject</webidl>
2163       </ExtendedAttribute>
2164     </ExtendedAttributeList>
2165     <InterfaceInheritance>
2166       <Name name="VehicleCommonDataType"/>
2167     </InterfaceInheritance>
2168     <Attribute readonly="readonly" name="status" id="::Chime::status">
2169       <webidl>    readonly    attribute boolean status;</webidl>
2170       <Type type="boolean"/>
2171     </Attribute>
2172   </Interface>
2173   <Interface name="Fuel" id="::Fuel">
2174     <webidl>[NoInterfaceObject]
2175 interface Fuel : <ref>VehicleCommonDataType</ref> {
2176     readonly    attribute unsigned short? level;
2177     readonly    attribute unsigned long?  range;
2178     readonly    attribute unsigned long?  instantConsumption;
2179                 attribute unsigned long?  averageConsumption;
2180     readonly    attribute unsigned long?  fuelConsumedSinceRestart;
2181     readonly    attribute unsigned long?  timeSinceRestart;
2182 };</webidl>
2183     <ExtendedAttributeList>
2184       <ExtendedAttribute name="NoInterfaceObject">
2185         <webidl>NoInterfaceObject</webidl>
2186       </ExtendedAttribute>
2187     </ExtendedAttributeList>
2188     <InterfaceInheritance>
2189       <Name name="VehicleCommonDataType"/>
2190     </InterfaceInheritance>
2191     <Attribute readonly="readonly" name="level" id="::Fuel::level">
2192       <webidl>    readonly    attribute unsigned short? level;</webidl>
2193       <Type type="unsigned short" nullable="nullable"/>
2194     </Attribute>
2195     <Attribute readonly="readonly" name="range" id="::Fuel::range">
2196       <webidl>    readonly    attribute unsigned long?  range;</webidl>
2197       <Type type="unsigned long" nullable="nullable"/>
2198     </Attribute>
2199     <Attribute readonly="readonly" name="instantConsumption" id="::Fuel::instantConsumption">
2200       <webidl>    readonly    attribute unsigned long?  instantConsumption;</webidl>
2201       <Type type="unsigned long" nullable="nullable"/>
2202     </Attribute>
2203     <Attribute name="averageConsumption" id="::Fuel::averageConsumption">
2204       <webidl>                attribute unsigned long?  averageConsumption;</webidl>
2205       <Type type="unsigned long" nullable="nullable"/>
2206     </Attribute>
2207     <Attribute readonly="readonly" name="fuelConsumedSinceRestart" id="::Fuel::fuelConsumedSinceRestart">
2208       <webidl>    readonly    attribute unsigned long?  fuelConsumedSinceRestart;</webidl>
2209       <Type type="unsigned long" nullable="nullable"/>
2210     </Attribute>
2211     <Attribute readonly="readonly" name="timeSinceRestart" id="::Fuel::timeSinceRestart">
2212       <webidl>    readonly    attribute unsigned long?  timeSinceRestart;</webidl>
2213       <Type type="unsigned long" nullable="nullable"/>
2214     </Attribute>
2215   </Interface>
2216   <Interface name="EngineOil" id="::EngineOil">
2217     <webidl>[NoInterfaceObject]
2218 interface EngineOil : <ref>VehicleCommonDataType</ref> {
2219     readonly    attribute unsigned short level;
2220     readonly    attribute unsigned short lifeRemaining;
2221     readonly    attribute long           temperature;
2222     readonly    attribute unsigned short pressure;
2223     readonly    attribute boolean        change;
2224 };</webidl>
2225     <ExtendedAttributeList>
2226       <ExtendedAttribute name="NoInterfaceObject">
2227         <webidl>NoInterfaceObject</webidl>
2228       </ExtendedAttribute>
2229     </ExtendedAttributeList>
2230     <InterfaceInheritance>
2231       <Name name="VehicleCommonDataType"/>
2232     </InterfaceInheritance>
2233     <Attribute readonly="readonly" name="level" id="::EngineOil::level">
2234       <webidl>    readonly    attribute unsigned short level;</webidl>
2235       <Type type="unsigned short"/>
2236     </Attribute>
2237     <Attribute readonly="readonly" name="lifeRemaining" id="::EngineOil::lifeRemaining">
2238       <webidl>    readonly    attribute unsigned short lifeRemaining;</webidl>
2239       <Type type="unsigned short"/>
2240     </Attribute>
2241     <Attribute readonly="readonly" name="temperature" id="::EngineOil::temperature">
2242       <webidl>    readonly    attribute long           temperature;</webidl>
2243       <Type type="long"/>
2244     </Attribute>
2245     <Attribute readonly="readonly" name="pressure" id="::EngineOil::pressure">
2246       <webidl>    readonly    attribute unsigned short pressure;</webidl>
2247       <Type type="unsigned short"/>
2248     </Attribute>
2249     <Attribute readonly="readonly" name="change" id="::EngineOil::change">
2250       <webidl>    readonly    attribute boolean        change;</webidl>
2251       <Type type="boolean"/>
2252     </Attribute>
2253   </Interface>
2254   <Interface name="Acceleration" id="::Acceleration">
2255     <webidl>[NoInterfaceObject]
2256 interface Acceleration : <ref>VehicleCommonDataType</ref> {
2257     readonly    attribute long x;
2258     readonly    attribute long y;
2259     readonly    attribute long z;
2260 };</webidl>
2261     <ExtendedAttributeList>
2262       <ExtendedAttribute name="NoInterfaceObject">
2263         <webidl>NoInterfaceObject</webidl>
2264       </ExtendedAttribute>
2265     </ExtendedAttributeList>
2266     <InterfaceInheritance>
2267       <Name name="VehicleCommonDataType"/>
2268     </InterfaceInheritance>
2269     <Attribute readonly="readonly" name="x" id="::Acceleration::x">
2270       <webidl>    readonly    attribute long x;</webidl>
2271       <Type type="long"/>
2272     </Attribute>
2273     <Attribute readonly="readonly" name="y" id="::Acceleration::y">
2274       <webidl>    readonly    attribute long y;</webidl>
2275       <Type type="long"/>
2276     </Attribute>
2277     <Attribute readonly="readonly" name="z" id="::Acceleration::z">
2278       <webidl>    readonly    attribute long z;</webidl>
2279       <Type type="long"/>
2280     </Attribute>
2281   </Interface>
2282   <Interface name="EngineCoolant" id="::EngineCoolant">
2283     <webidl>[NoInterfaceObject]
2284 interface EngineCoolant : <ref>VehicleCommonDataType</ref> {
2285     readonly    attribute octet level;
2286     readonly    attribute short temperature;
2287 };</webidl>
2288     <ExtendedAttributeList>
2289       <ExtendedAttribute name="NoInterfaceObject">
2290         <webidl>NoInterfaceObject</webidl>
2291       </ExtendedAttribute>
2292     </ExtendedAttributeList>
2293     <InterfaceInheritance>
2294       <Name name="VehicleCommonDataType"/>
2295     </InterfaceInheritance>
2296     <Attribute readonly="readonly" name="level" id="::EngineCoolant::level">
2297       <webidl>    readonly    attribute octet level;</webidl>
2298       <Type type="octet"/>
2299     </Attribute>
2300     <Attribute readonly="readonly" name="temperature" id="::EngineCoolant::temperature">
2301       <webidl>    readonly    attribute short temperature;</webidl>
2302       <Type type="short"/>
2303     </Attribute>
2304   </Interface>
2305   <Interface name="SteeringWheel" id="::SteeringWheel">
2306     <webidl>[NoInterfaceObject]
2307 interface SteeringWheel : <ref>VehicleCommonDataType</ref> {
2308     readonly    attribute short angle;
2309 };</webidl>
2310     <ExtendedAttributeList>
2311       <ExtendedAttribute name="NoInterfaceObject">
2312         <webidl>NoInterfaceObject</webidl>
2313       </ExtendedAttribute>
2314     </ExtendedAttributeList>
2315     <InterfaceInheritance>
2316       <Name name="VehicleCommonDataType"/>
2317     </InterfaceInheritance>
2318     <Attribute readonly="readonly" name="angle" id="::SteeringWheel::angle">
2319       <webidl>    readonly    attribute short angle;</webidl>
2320       <Type type="short"/>
2321     </Attribute>
2322   </Interface>
2323   <Interface name="WheelTick" id="::WheelTick">
2324     <webidl>[NoInterfaceObject]
2325 interface WheelTick : <ref>VehicleCommonDataType</ref> {
2326     readonly    attribute unsigned long value;
2327     readonly    attribute <ref>Zone</ref>?         zone;
2328 };</webidl>
2329     <ExtendedAttributeList>
2330       <ExtendedAttribute name="NoInterfaceObject">
2331         <webidl>NoInterfaceObject</webidl>
2332       </ExtendedAttribute>
2333     </ExtendedAttributeList>
2334     <InterfaceInheritance>
2335       <Name name="VehicleCommonDataType"/>
2336     </InterfaceInheritance>
2337     <Attribute readonly="readonly" name="value" id="::WheelTick::value">
2338       <webidl>    readonly    attribute unsigned long value;</webidl>
2339       <Type type="unsigned long"/>
2340     </Attribute>
2341     <Attribute readonly="readonly" name="zone" id="::WheelTick::zone">
2342       <webidl>    readonly    attribute <ref>Zone</ref>?         zone;</webidl>
2343       <Type name="Zone" nullable="nullable"/>
2344     </Attribute>
2345   </Interface>
2346   <Interface name="IgnitionTime" id="::IgnitionTime">
2347     <webidl>[NoInterfaceObject]
2348 interface IgnitionTime : <ref>VehicleCommonDataType</ref> {
2349     readonly    attribute <ref>DOMTimeStamp</ref> ignitionOnTime;
2350     readonly    attribute <ref>DOMTimeStamp</ref> ignitionOffTime;
2351 };</webidl>
2352     <ExtendedAttributeList>
2353       <ExtendedAttribute name="NoInterfaceObject">
2354         <webidl>NoInterfaceObject</webidl>
2355       </ExtendedAttribute>
2356     </ExtendedAttributeList>
2357     <InterfaceInheritance>
2358       <Name name="VehicleCommonDataType"/>
2359     </InterfaceInheritance>
2360     <Attribute readonly="readonly" name="ignitionOnTime" id="::IgnitionTime::ignitionOnTime">
2361       <webidl>    readonly    attribute <ref>DOMTimeStamp</ref> ignitionOnTime;</webidl>
2362       <Type name="DOMTimeStamp"/>
2363     </Attribute>
2364     <Attribute readonly="readonly" name="ignitionOffTime" id="::IgnitionTime::ignitionOffTime">
2365       <webidl>    readonly    attribute <ref>DOMTimeStamp</ref> ignitionOffTime;</webidl>
2366       <Type name="DOMTimeStamp"/>
2367     </Attribute>
2368   </Interface>
2369   <Interface name="YawRate" id="::YawRate">
2370     <webidl>[NoInterfaceObject]
2371 interface YawRate : <ref>VehicleCommonDataType</ref> {
2372     readonly    attribute short value;
2373 };</webidl>
2374     <ExtendedAttributeList>
2375       <ExtendedAttribute name="NoInterfaceObject">
2376         <webidl>NoInterfaceObject</webidl>
2377       </ExtendedAttribute>
2378     </ExtendedAttributeList>
2379     <InterfaceInheritance>
2380       <Name name="VehicleCommonDataType"/>
2381     </InterfaceInheritance>
2382     <Attribute readonly="readonly" name="value" id="::YawRate::value">
2383       <webidl>    readonly    attribute short value;</webidl>
2384       <Type type="short"/>
2385     </Attribute>
2386   </Interface>
2387   <Interface name="BrakeOperation" id="::BrakeOperation">
2388     <webidl>[NoInterfaceObject]
2389 interface BrakeOperation : <ref>VehicleCommonDataType</ref> {
2390     readonly    attribute boolean brakePedalDepressed;
2391 };</webidl>
2392     <ExtendedAttributeList>
2393       <ExtendedAttribute name="NoInterfaceObject">
2394         <webidl>NoInterfaceObject</webidl>
2395       </ExtendedAttribute>
2396     </ExtendedAttributeList>
2397     <InterfaceInheritance>
2398       <Name name="VehicleCommonDataType"/>
2399     </InterfaceInheritance>
2400     <Attribute readonly="readonly" name="brakePedalDepressed" id="::BrakeOperation::brakePedalDepressed">
2401       <webidl>    readonly    attribute boolean brakePedalDepressed;</webidl>
2402       <Type type="boolean"/>
2403     </Attribute>
2404   </Interface>
2405   <Enum name="Button" id="::Button">
2406     <webidl>enum Button {
2407     &quot;home&quot;,
2408     &quot;back&quot;,
2409     &quot;search&quot;,
2410     &quot;call&quot;,
2411     &quot;end_call&quot;,
2412     &quot;media_play&quot;,
2413     &quot;media_next&quot;,
2414     &quot;media_previous&quot;,
2415     &quot;media_pause&quot;,
2416     &quot;voice_recognize&quot;,
2417     &quot;enter&quot;,
2418     &quot;left&quot;,
2419     &quot;right&quot;,
2420     &quot;up&quot;,
2421     &quot;down&quot;
2422 };</webidl>
2423     <EnumValue stringvalue="home">
2424       <webidl>    &quot;home</webidl>
2425     </EnumValue>
2426     <EnumValue stringvalue="back">
2427       <webidl>    &quot;back</webidl>
2428     </EnumValue>
2429     <EnumValue stringvalue="search">
2430       <webidl>    &quot;search</webidl>
2431     </EnumValue>
2432     <EnumValue stringvalue="call">
2433       <webidl>    &quot;call</webidl>
2434     </EnumValue>
2435     <EnumValue stringvalue="end_call">
2436       <webidl>    &quot;end_call</webidl>
2437     </EnumValue>
2438     <EnumValue stringvalue="media_play">
2439       <webidl>    &quot;media_play</webidl>
2440     </EnumValue>
2441     <EnumValue stringvalue="media_next">
2442       <webidl>    &quot;media_next</webidl>
2443     </EnumValue>
2444     <EnumValue stringvalue="media_previous">
2445       <webidl>    &quot;media_previous</webidl>
2446     </EnumValue>
2447     <EnumValue stringvalue="media_pause">
2448       <webidl>    &quot;media_pause</webidl>
2449     </EnumValue>
2450     <EnumValue stringvalue="voice_recognize">
2451       <webidl>    &quot;voice_recognize</webidl>
2452     </EnumValue>
2453     <EnumValue stringvalue="enter">
2454       <webidl>    &quot;enter</webidl>
2455     </EnumValue>
2456     <EnumValue stringvalue="left">
2457       <webidl>    &quot;left</webidl>
2458     </EnumValue>
2459     <EnumValue stringvalue="right">
2460       <webidl>    &quot;right</webidl>
2461     </EnumValue>
2462     <EnumValue stringvalue="up">
2463       <webidl>    &quot;up</webidl>
2464     </EnumValue>
2465     <EnumValue stringvalue="down">
2466       <webidl>    &quot;down</webidl>
2467     </EnumValue>
2468   </Enum>
2469   <Enum name="ButtonEventType" id="::ButtonEventType">
2470     <webidl>enum ButtonEventType {
2471     &quot;press&quot;,
2472     &quot;long_press&quot;,
2473     &quot;release&quot;
2474 };</webidl>
2475     <EnumValue stringvalue="press">
2476       <webidl>    &quot;press</webidl>
2477     </EnumValue>
2478     <EnumValue stringvalue="long_press">
2479       <webidl>    &quot;long_press</webidl>
2480     </EnumValue>
2481     <EnumValue stringvalue="release">
2482       <webidl>    &quot;release</webidl>
2483     </EnumValue>
2484   </Enum>
2485   <Interface name="VehicleButton" id="::VehicleButton">
2486     <webidl>[NoInterfaceObject]
2487 interface VehicleButton {
2488     readonly    attribute <ref>Button</ref>          button;
2489     readonly    attribute <ref>ButtonEventType</ref> state;
2490 };</webidl>
2491     <ExtendedAttributeList>
2492       <ExtendedAttribute name="NoInterfaceObject">
2493         <webidl>NoInterfaceObject</webidl>
2494       </ExtendedAttribute>
2495     </ExtendedAttributeList>
2496     <Attribute readonly="readonly" name="button" id="::VehicleButton::button">
2497       <webidl>    readonly    attribute <ref>Button</ref>          button;</webidl>
2498       <Type name="Button"/>
2499     </Attribute>
2500     <Attribute readonly="readonly" name="state" id="::VehicleButton::state">
2501       <webidl>    readonly    attribute <ref>ButtonEventType</ref> state;</webidl>
2502       <Type name="ButtonEventType"/>
2503     </Attribute>
2504   </Interface>
2505   <Interface name="ButtonEvent" id="::ButtonEvent">
2506     <webidl>[NoInterfaceObject]
2507 interface ButtonEvent : <ref>VehicleCommonDataType</ref> {
2508     readonly    attribute <ref>VehicleButton</ref>[] button;
2509 };</webidl>
2510     <ExtendedAttributeList>
2511       <ExtendedAttribute name="NoInterfaceObject">
2512         <webidl>NoInterfaceObject</webidl>
2513       </ExtendedAttribute>
2514     </ExtendedAttributeList>
2515     <InterfaceInheritance>
2516       <Name name="VehicleCommonDataType"/>
2517     </InterfaceInheritance>
2518     <Attribute readonly="readonly" name="button" id="::ButtonEvent::button">
2519       <webidl>    readonly    attribute <ref>VehicleButton</ref>[] button;</webidl>
2520       <Type type="array">
2521         <Type name="VehicleButton"/>
2522       </Type>
2523     </Attribute>
2524   </Interface>
2525   <Interface name="DrivingMode" id="::DrivingMode">
2526     <webidl>[NoInterfaceObject]
2527 interface DrivingMode : <ref>VehicleCommonDataType</ref> {
2528     readonly    attribute boolean mode;
2529 };</webidl>
2530     <ExtendedAttributeList>
2531       <ExtendedAttribute name="NoInterfaceObject">
2532         <webidl>NoInterfaceObject</webidl>
2533       </ExtendedAttribute>
2534     </ExtendedAttributeList>
2535     <InterfaceInheritance>
2536       <Name name="VehicleCommonDataType"/>
2537     </InterfaceInheritance>
2538     <Attribute readonly="readonly" name="mode" id="::DrivingMode::mode">
2539       <webidl>    readonly    attribute boolean mode;</webidl>
2540       <Type type="boolean"/>
2541     </Attribute>
2542   </Interface>
2543   <Interface name="DrivingMode" id="::DrivingMode">
2544     <webidl>[NoInterfaceObject]
2545 interface DrivingMode : <ref>VehicleCommonDataType</ref> {
2546         readonly attribute boolean mode;
2547 };</webidl>
2548     <ExtendedAttributeList>
2549       <ExtendedAttribute name="NoInterfaceObject">
2550         <webidl>NoInterfaceObject</webidl>
2551       </ExtendedAttribute>
2552     </ExtendedAttributeList>
2553     <InterfaceInheritance>
2554       <Name name="VehicleCommonDataType"/>
2555     </InterfaceInheritance>
2556     <Attribute readonly="readonly" name="mode" id="::DrivingMode::mode">
2557       <webidl>        readonly attribute boolean mode;</webidl>
2558       <Type type="boolean"/>
2559     </Attribute>
2560   </Interface>
2561   <Interface name="NightMode" id="::NightMode">
2562     <webidl>[NoInterfaceObject]
2563 interface NightMode : <ref>VehicleCommonDataType</ref> {
2564     readonly    attribute boolean mode;
2565 };</webidl>
2566     <ExtendedAttributeList>
2567       <ExtendedAttribute name="NoInterfaceObject">
2568         <webidl>NoInterfaceObject</webidl>
2569       </ExtendedAttribute>
2570     </ExtendedAttributeList>
2571     <InterfaceInheritance>
2572       <Name name="VehicleCommonDataType"/>
2573     </InterfaceInheritance>
2574     <Attribute readonly="readonly" name="mode" id="::NightMode::mode">
2575       <webidl>    readonly    attribute boolean mode;</webidl>
2576       <Type type="boolean"/>
2577     </Attribute>
2578   </Interface>
2579   <Interface name="Odometer" id="::Odometer">
2580     <webidl>[NoInterfaceObject]
2581 interface Odometer : <ref>VehicleCommonDataType</ref> {
2582     readonly    attribute unsigned long? distanceSinceStart;
2583     readonly    attribute unsigned long  distanceTotal;
2584 };</webidl>
2585     <ExtendedAttributeList>
2586       <ExtendedAttribute name="NoInterfaceObject">
2587         <webidl>NoInterfaceObject</webidl>
2588       </ExtendedAttribute>
2589     </ExtendedAttributeList>
2590     <InterfaceInheritance>
2591       <Name name="VehicleCommonDataType"/>
2592     </InterfaceInheritance>
2593     <Attribute readonly="readonly" name="distanceSinceStart" id="::Odometer::distanceSinceStart">
2594       <webidl>    readonly    attribute unsigned long? distanceSinceStart;</webidl>
2595       <Type type="unsigned long" nullable="nullable"/>
2596     </Attribute>
2597     <Attribute readonly="readonly" name="distanceTotal" id="::Odometer::distanceTotal">
2598       <webidl>    readonly    attribute unsigned long  distanceTotal;</webidl>
2599       <Type type="unsigned long"/>
2600     </Attribute>
2601   </Interface>
2602   <Interface name="TransmissionOil" id="::TransmissionOil">
2603     <webidl>[NoInterfaceObject]
2604 interface TransmissionOil : <ref>VehicleCommonDataType</ref> {
2605     readonly    attribute octet?  wear;
2606     readonly    attribute short?  temperature;
2607 };</webidl>
2608     <ExtendedAttributeList>
2609       <ExtendedAttribute name="NoInterfaceObject">
2610         <webidl>NoInterfaceObject</webidl>
2611       </ExtendedAttribute>
2612     </ExtendedAttributeList>
2613     <InterfaceInheritance>
2614       <Name name="VehicleCommonDataType"/>
2615     </InterfaceInheritance>
2616     <Attribute readonly="readonly" name="wear" id="::TransmissionOil::wear">
2617       <webidl>    readonly    attribute octet?  wear;</webidl>
2618       <Type type="octet" nullable="nullable"/>
2619     </Attribute>
2620     <Attribute readonly="readonly" name="temperature" id="::TransmissionOil::temperature">
2621       <webidl>    readonly    attribute short?  temperature;</webidl>
2622       <Type type="short" nullable="nullable"/>
2623     </Attribute>
2624   </Interface>
2625   <Interface name="TransmissionClutch" id="::TransmissionClutch">
2626     <webidl>[NoInterfaceObject]
2627 interface TransmissionClutch : <ref>VehicleCommonDataType</ref> {
2628     readonly    attribute octet wear;
2629 };</webidl>
2630     <ExtendedAttributeList>
2631       <ExtendedAttribute name="NoInterfaceObject">
2632         <webidl>NoInterfaceObject</webidl>
2633       </ExtendedAttribute>
2634     </ExtendedAttributeList>
2635     <InterfaceInheritance>
2636       <Name name="VehicleCommonDataType"/>
2637     </InterfaceInheritance>
2638     <Attribute readonly="readonly" name="wear" id="::TransmissionClutch::wear">
2639       <webidl>    readonly    attribute octet wear;</webidl>
2640       <Type type="octet"/>
2641     </Attribute>
2642   </Interface>
2643   <Interface name="BrakeMaintenance" id="::BrakeMaintenance">
2644     <webidl>[NoInterfaceObject]
2645 interface BrakeMaintenance : <ref>VehicleCommonDataType</ref> {
2646     readonly    attribute octet?   fluidLevel;
2647     readonly    attribute boolean? fluidLevelLow;
2648     readonly    attribute octet?   padWear;
2649     readonly    attribute boolean? brakesWorn;
2650     readonly    attribute <ref>Zone</ref>?    zone;
2651 };</webidl>
2652     <ExtendedAttributeList>
2653       <ExtendedAttribute name="NoInterfaceObject">
2654         <webidl>NoInterfaceObject</webidl>
2655       </ExtendedAttribute>
2656     </ExtendedAttributeList>
2657     <InterfaceInheritance>
2658       <Name name="VehicleCommonDataType"/>
2659     </InterfaceInheritance>
2660     <Attribute readonly="readonly" name="fluidLevel" id="::BrakeMaintenance::fluidLevel">
2661       <webidl>    readonly    attribute octet?   fluidLevel;</webidl>
2662       <Type type="octet" nullable="nullable"/>
2663     </Attribute>
2664     <Attribute readonly="readonly" name="fluidLevelLow" id="::BrakeMaintenance::fluidLevelLow">
2665       <webidl>    readonly    attribute boolean? fluidLevelLow;</webidl>
2666       <Type type="boolean" nullable="nullable"/>
2667     </Attribute>
2668     <Attribute readonly="readonly" name="padWear" id="::BrakeMaintenance::padWear">
2669       <webidl>    readonly    attribute octet?   padWear;</webidl>
2670       <Type type="octet" nullable="nullable"/>
2671     </Attribute>
2672     <Attribute readonly="readonly" name="brakesWorn" id="::BrakeMaintenance::brakesWorn">
2673       <webidl>    readonly    attribute boolean? brakesWorn;</webidl>
2674       <Type type="boolean" nullable="nullable"/>
2675     </Attribute>
2676     <Attribute readonly="readonly" name="zone" id="::BrakeMaintenance::zone">
2677       <webidl>    readonly    attribute <ref>Zone</ref>?    zone;</webidl>
2678       <Type name="Zone" nullable="nullable"/>
2679     </Attribute>
2680   </Interface>
2681   <Interface name="WasherFluid" id="::WasherFluid">
2682     <webidl>[NoInterfaceObject]
2683 interface WasherFluid : <ref>VehicleCommonDataType</ref> {
2684     readonly    attribute unsigned short? level;
2685     readonly    attribute boolean?        levelLow;
2686 };</webidl>
2687     <ExtendedAttributeList>
2688       <ExtendedAttribute name="NoInterfaceObject">
2689         <webidl>NoInterfaceObject</webidl>
2690       </ExtendedAttribute>
2691     </ExtendedAttributeList>
2692     <InterfaceInheritance>
2693       <Name name="VehicleCommonDataType"/>
2694     </InterfaceInheritance>
2695     <Attribute readonly="readonly" name="level" id="::WasherFluid::level">
2696       <webidl>    readonly    attribute unsigned short? level;</webidl>
2697       <Type type="unsigned short" nullable="nullable"/>
2698     </Attribute>
2699     <Attribute readonly="readonly" name="levelLow" id="::WasherFluid::levelLow">
2700       <webidl>    readonly    attribute boolean?        levelLow;</webidl>
2701       <Type type="boolean" nullable="nullable"/>
2702     </Attribute>
2703   </Interface>
2704   <Interface name="MalfunctionIndicator" id="::MalfunctionIndicator">
2705     <webidl>[NoInterfaceObject]
2706 interface MalfunctionIndicator : <ref>VehicleCommonDataType</ref> {
2707     readonly    attribute boolean on;
2708 };</webidl>
2709     <ExtendedAttributeList>
2710       <ExtendedAttribute name="NoInterfaceObject">
2711         <webidl>NoInterfaceObject</webidl>
2712       </ExtendedAttribute>
2713     </ExtendedAttributeList>
2714     <InterfaceInheritance>
2715       <Name name="VehicleCommonDataType"/>
2716     </InterfaceInheritance>
2717     <Attribute readonly="readonly" name="on" id="::MalfunctionIndicator::on">
2718       <webidl>    readonly    attribute boolean on;</webidl>
2719       <Type type="boolean"/>
2720     </Attribute>
2721   </Interface>
2722   <Interface name="BatteryStatus" id="::BatteryStatus">
2723     <webidl>[NoInterfaceObject]
2724 interface BatteryStatus : <ref>VehicleCommonDataType</ref> {
2725     readonly    attribute unsigned short? chargeLevel;
2726     readonly    attribute unsigned short? voltage;
2727     readonly    attribute unsigned short? current;
2728     readonly    attribute <ref>Zone</ref>?           zone;
2729 };</webidl>
2730     <ExtendedAttributeList>
2731       <ExtendedAttribute name="NoInterfaceObject">
2732         <webidl>NoInterfaceObject</webidl>
2733       </ExtendedAttribute>
2734     </ExtendedAttributeList>
2735     <InterfaceInheritance>
2736       <Name name="VehicleCommonDataType"/>
2737     </InterfaceInheritance>
2738     <Attribute readonly="readonly" name="chargeLevel" id="::BatteryStatus::chargeLevel">
2739       <webidl>    readonly    attribute unsigned short? chargeLevel;</webidl>
2740       <Type type="unsigned short" nullable="nullable"/>
2741     </Attribute>
2742     <Attribute readonly="readonly" name="voltage" id="::BatteryStatus::voltage">
2743       <webidl>    readonly    attribute unsigned short? voltage;</webidl>
2744       <Type type="unsigned short" nullable="nullable"/>
2745     </Attribute>
2746     <Attribute readonly="readonly" name="current" id="::BatteryStatus::current">
2747       <webidl>    readonly    attribute unsigned short? current;</webidl>
2748       <Type type="unsigned short" nullable="nullable"/>
2749     </Attribute>
2750     <Attribute readonly="readonly" name="zone" id="::BatteryStatus::zone">
2751       <webidl>    readonly    attribute <ref>Zone</ref>?           zone;</webidl>
2752       <Type name="Zone" nullable="nullable"/>
2753     </Attribute>
2754   </Interface>
2755   <Interface name="Tire" id="::Tire">
2756     <webidl>[NoInterfaceObject]
2757 interface Tire : <ref>VehicleCommonDataType</ref> {
2758     readonly    attribute boolean?        pressureLow;
2759     readonly    attribute unsigned short? pressure;
2760     readonly    attribute short?          temperature;
2761     readonly    attribute <ref>Zone</ref>?           zone;
2762 };</webidl>
2763     <ExtendedAttributeList>
2764       <ExtendedAttribute name="NoInterfaceObject">
2765         <webidl>NoInterfaceObject</webidl>
2766       </ExtendedAttribute>
2767     </ExtendedAttributeList>
2768     <InterfaceInheritance>
2769       <Name name="VehicleCommonDataType"/>
2770     </InterfaceInheritance>
2771     <Attribute readonly="readonly" name="pressureLow" id="::Tire::pressureLow">
2772       <webidl>    readonly    attribute boolean?        pressureLow;</webidl>
2773       <Type type="boolean" nullable="nullable"/>
2774     </Attribute>
2775     <Attribute readonly="readonly" name="pressure" id="::Tire::pressure">
2776       <webidl>    readonly    attribute unsigned short? pressure;</webidl>
2777       <Type type="unsigned short" nullable="nullable"/>
2778     </Attribute>
2779     <Attribute readonly="readonly" name="temperature" id="::Tire::temperature">
2780       <webidl>    readonly    attribute short?          temperature;</webidl>
2781       <Type type="short" nullable="nullable"/>
2782     </Attribute>
2783     <Attribute readonly="readonly" name="zone" id="::Tire::zone">
2784       <webidl>    readonly    attribute <ref>Zone</ref>?           zone;</webidl>
2785       <Type name="Zone" nullable="nullable"/>
2786     </Attribute>
2787   </Interface>
2788   <Interface name="Diagnostic" id="::Diagnostic">
2789     <webidl>[NoInterfaceObject]
2790 interface Diagnostic : <ref>VehicleCommonDataType</ref> {
2791     readonly    attribute unsigned long accumulatedEngineRuntime;
2792     readonly    attribute unsigned long distanceWithMILOn;
2793     readonly    attribute unsigned long distanceSinceCodeCleared;
2794     readonly    attribute unsigned long timeRunMILOn;
2795     readonly    attribute unsigned long timeTroubleCodeClear;
2796 };</webidl>
2797     <ExtendedAttributeList>
2798       <ExtendedAttribute name="NoInterfaceObject">
2799         <webidl>NoInterfaceObject</webidl>
2800       </ExtendedAttribute>
2801     </ExtendedAttributeList>
2802     <InterfaceInheritance>
2803       <Name name="VehicleCommonDataType"/>
2804     </InterfaceInheritance>
2805     <Attribute readonly="readonly" name="accumulatedEngineRuntime" id="::Diagnostic::accumulatedEngineRuntime">
2806       <webidl>    readonly    attribute unsigned long accumulatedEngineRuntime;</webidl>
2807       <Type type="unsigned long"/>
2808     </Attribute>
2809     <Attribute readonly="readonly" name="distanceWithMILOn" id="::Diagnostic::distanceWithMILOn">
2810       <webidl>    readonly    attribute unsigned long distanceWithMILOn;</webidl>
2811       <Type type="unsigned long"/>
2812     </Attribute>
2813     <Attribute readonly="readonly" name="distanceSinceCodeCleared" id="::Diagnostic::distanceSinceCodeCleared">
2814       <webidl>    readonly    attribute unsigned long distanceSinceCodeCleared;</webidl>
2815       <Type type="unsigned long"/>
2816     </Attribute>
2817     <Attribute readonly="readonly" name="timeRunMILOn" id="::Diagnostic::timeRunMILOn">
2818       <webidl>    readonly    attribute unsigned long timeRunMILOn;</webidl>
2819       <Type type="unsigned long"/>
2820     </Attribute>
2821     <Attribute readonly="readonly" name="timeTroubleCodeClear" id="::Diagnostic::timeTroubleCodeClear">
2822       <webidl>    readonly    attribute unsigned long timeTroubleCodeClear;</webidl>
2823       <Type type="unsigned long"/>
2824     </Attribute>
2825   </Interface>
2826   <Interface name="LanguageConfiguration" id="::LanguageConfiguration">
2827     <webidl>[NoInterfaceObject]
2828 interface LanguageConfiguration : <ref>VehicleCommonDataType</ref> {
2829                 attribute DOMString? language;
2830 };</webidl>
2831     <ExtendedAttributeList>
2832       <ExtendedAttribute name="NoInterfaceObject">
2833         <webidl>NoInterfaceObject</webidl>
2834       </ExtendedAttribute>
2835     </ExtendedAttributeList>
2836     <InterfaceInheritance>
2837       <Name name="VehicleCommonDataType"/>
2838     </InterfaceInheritance>
2839     <Attribute name="language" id="::LanguageConfiguration::language">
2840       <webidl>                attribute DOMString? language;</webidl>
2841       <Type type="DOMString" nullable="nullable"/>
2842     </Attribute>
2843   </Interface>
2844   <Interface name="UnitsOfMeasure" id="::UnitsOfMeasure">
2845     <webidl>[NoInterfaceObject]
2846 interface UnitsOfMeasure : <ref>VehicleCommonDataType</ref> {
2847                 attribute boolean?   isMKSSystem;
2848                 attribute DOMString? unitsFuelVolume;
2849                 attribute DOMString? unitsDistance;
2850                 attribute DOMString? unitsSpeed;
2851                 attribute DOMString? unitsFuelConsumption;
2852 };</webidl>
2853     <ExtendedAttributeList>
2854       <ExtendedAttribute name="NoInterfaceObject">
2855         <webidl>NoInterfaceObject</webidl>
2856       </ExtendedAttribute>
2857     </ExtendedAttributeList>
2858     <InterfaceInheritance>
2859       <Name name="VehicleCommonDataType"/>
2860     </InterfaceInheritance>
2861     <Attribute name="isMKSSystem" id="::UnitsOfMeasure::isMKSSystem">
2862       <webidl>                attribute boolean?   isMKSSystem;</webidl>
2863       <Type type="boolean" nullable="nullable"/>
2864     </Attribute>
2865     <Attribute name="unitsFuelVolume" id="::UnitsOfMeasure::unitsFuelVolume">
2866       <webidl>                attribute DOMString? unitsFuelVolume;</webidl>
2867       <Type type="DOMString" nullable="nullable"/>
2868     </Attribute>
2869     <Attribute name="unitsDistance" id="::UnitsOfMeasure::unitsDistance">
2870       <webidl>                attribute DOMString? unitsDistance;</webidl>
2871       <Type type="DOMString" nullable="nullable"/>
2872     </Attribute>
2873     <Attribute name="unitsSpeed" id="::UnitsOfMeasure::unitsSpeed">
2874       <webidl>                attribute DOMString? unitsSpeed;</webidl>
2875       <Type type="DOMString" nullable="nullable"/>
2876     </Attribute>
2877     <Attribute name="unitsFuelConsumption" id="::UnitsOfMeasure::unitsFuelConsumption">
2878       <webidl>                attribute DOMString? unitsFuelConsumption;</webidl>
2879       <Type type="DOMString" nullable="nullable"/>
2880     </Attribute>
2881   </Interface>
2882   <Interface name="Mirror" id="::Mirror">
2883     <webidl>[NoInterfaceObject]
2884 interface Mirror : <ref>VehicleCommonDataType</ref> {
2885                 attribute unsigned short? mirrorTilt;
2886                 attribute unsigned short? mirrorPan;
2887     readonly    attribute <ref>Zone</ref>?           zone;
2888 };</webidl>
2889     <ExtendedAttributeList>
2890       <ExtendedAttribute name="NoInterfaceObject">
2891         <webidl>NoInterfaceObject</webidl>
2892       </ExtendedAttribute>
2893     </ExtendedAttributeList>
2894     <InterfaceInheritance>
2895       <Name name="VehicleCommonDataType"/>
2896     </InterfaceInheritance>
2897     <Attribute name="mirrorTilt" id="::Mirror::mirrorTilt">
2898       <webidl>                attribute unsigned short? mirrorTilt;</webidl>
2899       <Type type="unsigned short" nullable="nullable"/>
2900     </Attribute>
2901     <Attribute name="mirrorPan" id="::Mirror::mirrorPan">
2902       <webidl>                attribute unsigned short? mirrorPan;</webidl>
2903       <Type type="unsigned short" nullable="nullable"/>
2904     </Attribute>
2905     <Attribute readonly="readonly" name="zone" id="::Mirror::zone">
2906       <webidl>    readonly    attribute <ref>Zone</ref>?           zone;</webidl>
2907       <Type name="Zone" nullable="nullable"/>
2908     </Attribute>
2909   </Interface>
2910   <Interface name="SeatAdjustment" id="::SeatAdjustment">
2911     <webidl>[NoInterfaceObject]
2912 interface SeatAdjustment : <ref>VehicleCommonDataType</ref> {
2913                 attribute unsigned short? reclineSeatBack;
2914                 attribute unsigned short? seatSlide;
2915                 attribute unsigned short? seatCushionHeight;
2916                 attribute unsigned short? seatHeadrest;
2917                 attribute unsigned short? seatBackCushion;
2918                 attribute unsigned short? seatSideCushion;
2919     readonly    attribute <ref>Zone</ref>?           zone;
2920 };</webidl>
2921     <ExtendedAttributeList>
2922       <ExtendedAttribute name="NoInterfaceObject">
2923         <webidl>NoInterfaceObject</webidl>
2924       </ExtendedAttribute>
2925     </ExtendedAttributeList>
2926     <InterfaceInheritance>
2927       <Name name="VehicleCommonDataType"/>
2928     </InterfaceInheritance>
2929     <Attribute name="reclineSeatBack" id="::SeatAdjustment::reclineSeatBack">
2930       <webidl>                attribute unsigned short? reclineSeatBack;</webidl>
2931       <Type type="unsigned short" nullable="nullable"/>
2932     </Attribute>
2933     <Attribute name="seatSlide" id="::SeatAdjustment::seatSlide">
2934       <webidl>                attribute unsigned short? seatSlide;</webidl>
2935       <Type type="unsigned short" nullable="nullable"/>
2936     </Attribute>
2937     <Attribute name="seatCushionHeight" id="::SeatAdjustment::seatCushionHeight">
2938       <webidl>                attribute unsigned short? seatCushionHeight;</webidl>
2939       <Type type="unsigned short" nullable="nullable"/>
2940     </Attribute>
2941     <Attribute name="seatHeadrest" id="::SeatAdjustment::seatHeadrest">
2942       <webidl>                attribute unsigned short? seatHeadrest;</webidl>
2943       <Type type="unsigned short" nullable="nullable"/>
2944     </Attribute>
2945     <Attribute name="seatBackCushion" id="::SeatAdjustment::seatBackCushion">
2946       <webidl>                attribute unsigned short? seatBackCushion;</webidl>
2947       <Type type="unsigned short" nullable="nullable"/>
2948     </Attribute>
2949     <Attribute name="seatSideCushion" id="::SeatAdjustment::seatSideCushion">
2950       <webidl>                attribute unsigned short? seatSideCushion;</webidl>
2951       <Type type="unsigned short" nullable="nullable"/>
2952     </Attribute>
2953     <Attribute readonly="readonly" name="zone" id="::SeatAdjustment::zone">
2954       <webidl>    readonly    attribute <ref>Zone</ref>?           zone;</webidl>
2955       <Type name="Zone" nullable="nullable"/>
2956     </Attribute>
2957   </Interface>
2958   <Enum name="DriveModeEnum" id="::DriveModeEnum">
2959     <webidl>enum DriveModeEnum {
2960     &quot;comfort&quot;,
2961     &quot;auto&quot;,
2962     &quot;sport&quot;,
2963     &quot;eco&quot;,
2964     &quot;manual&quot;,
2965     &quot;winter&quot;
2966 };</webidl>
2967     <EnumValue stringvalue="comfort">
2968       <webidl>    &quot;comfort</webidl>
2969     </EnumValue>
2970     <EnumValue stringvalue="auto">
2971       <webidl>    &quot;auto</webidl>
2972     </EnumValue>
2973     <EnumValue stringvalue="sport">
2974       <webidl>    &quot;sport</webidl>
2975     </EnumValue>
2976     <EnumValue stringvalue="eco">
2977       <webidl>    &quot;eco</webidl>
2978     </EnumValue>
2979     <EnumValue stringvalue="manual">
2980       <webidl>    &quot;manual</webidl>
2981     </EnumValue>
2982     <EnumValue stringvalue="winter">
2983       <webidl>    &quot;winter</webidl>
2984     </EnumValue>
2985   </Enum>
2986   <Interface name="DriveMode" id="::DriveMode">
2987     <webidl>[NoInterfaceObject]
2988 interface DriveMode : <ref>VehicleCommonDataType</ref> {
2989                 attribute <ref>DriveModeEnum</ref>? driveMode;
2990 };</webidl>
2991     <ExtendedAttributeList>
2992       <ExtendedAttribute name="NoInterfaceObject">
2993         <webidl>NoInterfaceObject</webidl>
2994       </ExtendedAttribute>
2995     </ExtendedAttributeList>
2996     <InterfaceInheritance>
2997       <Name name="VehicleCommonDataType"/>
2998     </InterfaceInheritance>
2999     <Attribute name="driveMode" id="::DriveMode::driveMode">
3000       <webidl>                attribute <ref>DriveModeEnum</ref>? driveMode;</webidl>
3001       <Type name="DriveModeEnum" nullable="nullable"/>
3002     </Attribute>
3003   </Interface>
3004   <Interface name="DashboardIllumination" id="::DashboardIllumination">
3005     <webidl>[NoInterfaceObject]
3006 interface DashboardIllumination : <ref>VehicleCommonDataType</ref> {
3007                 attribute DOMString? dashboardIllumination;
3008 };</webidl>
3009     <ExtendedAttributeList>
3010       <ExtendedAttribute name="NoInterfaceObject">
3011         <webidl>NoInterfaceObject</webidl>
3012       </ExtendedAttribute>
3013     </ExtendedAttributeList>
3014     <InterfaceInheritance>
3015       <Name name="VehicleCommonDataType"/>
3016     </InterfaceInheritance>
3017     <Attribute name="dashboardIllumination" id="::DashboardIllumination::dashboardIllumination">
3018       <webidl>                attribute DOMString? dashboardIllumination;</webidl>
3019       <Type type="DOMString" nullable="nullable"/>
3020     </Attribute>
3021   </Interface>
3022   <Interface name="VehicleSound" id="::VehicleSound">
3023     <webidl>[NoInterfaceObject]
3024 interface VehicleSound : <ref>VehicleCommonDataType</ref> {
3025                 attribute boolean    activeNoiseControlMode;
3026                 attribute DOMString? engineSoundEnhancementMode;
3027 };</webidl>
3028     <ExtendedAttributeList>
3029       <ExtendedAttribute name="NoInterfaceObject">
3030         <webidl>NoInterfaceObject</webidl>
3031       </ExtendedAttribute>
3032     </ExtendedAttributeList>
3033     <InterfaceInheritance>
3034       <Name name="VehicleCommonDataType"/>
3035     </InterfaceInheritance>
3036     <Attribute name="activeNoiseControlMode" id="::VehicleSound::activeNoiseControlMode">
3037       <webidl>                attribute boolean    activeNoiseControlMode;</webidl>
3038       <Type type="boolean"/>
3039     </Attribute>
3040     <Attribute name="engineSoundEnhancementMode" id="::VehicleSound::engineSoundEnhancementMode">
3041       <webidl>                attribute DOMString? engineSoundEnhancementMode;</webidl>
3042       <Type type="DOMString" nullable="nullable"/>
3043     </Attribute>
3044   </Interface>
3045   <Interface name="AntilockBrakingSystem" id="::AntilockBrakingSystem">
3046     <webidl>[NoInterfaceObject]
3047 interface AntilockBrakingSystem : <ref>VehicleCommonDataType</ref> {
3048     readonly    attribute boolean enabled;
3049     readonly    attribute boolean engaged;
3050 };</webidl>
3051     <ExtendedAttributeList>
3052       <ExtendedAttribute name="NoInterfaceObject">
3053         <webidl>NoInterfaceObject</webidl>
3054       </ExtendedAttribute>
3055     </ExtendedAttributeList>
3056     <InterfaceInheritance>
3057       <Name name="VehicleCommonDataType"/>
3058     </InterfaceInheritance>
3059     <Attribute readonly="readonly" name="enabled" id="::AntilockBrakingSystem::enabled">
3060       <webidl>    readonly    attribute boolean enabled;</webidl>
3061       <Type type="boolean"/>
3062     </Attribute>
3063     <Attribute readonly="readonly" name="engaged" id="::AntilockBrakingSystem::engaged">
3064       <webidl>    readonly    attribute boolean engaged;</webidl>
3065       <Type type="boolean"/>
3066     </Attribute>
3067   </Interface>
3068   <Interface name="TractionControlSystem" id="::TractionControlSystem">
3069     <webidl>[NoInterfaceObject]
3070 interface TractionControlSystem : <ref>VehicleCommonDataType</ref> {
3071     readonly    attribute boolean enabled;
3072     readonly    attribute boolean engaged;
3073 };</webidl>
3074     <ExtendedAttributeList>
3075       <ExtendedAttribute name="NoInterfaceObject">
3076         <webidl>NoInterfaceObject</webidl>
3077       </ExtendedAttribute>
3078     </ExtendedAttributeList>
3079     <InterfaceInheritance>
3080       <Name name="VehicleCommonDataType"/>
3081     </InterfaceInheritance>
3082     <Attribute readonly="readonly" name="enabled" id="::TractionControlSystem::enabled">
3083       <webidl>    readonly    attribute boolean enabled;</webidl>
3084       <Type type="boolean"/>
3085     </Attribute>
3086     <Attribute readonly="readonly" name="engaged" id="::TractionControlSystem::engaged">
3087       <webidl>    readonly    attribute boolean engaged;</webidl>
3088       <Type type="boolean"/>
3089     </Attribute>
3090   </Interface>
3091   <Interface name="ElectronicStabilityControl" id="::ElectronicStabilityControl">
3092     <webidl>[NoInterfaceObject]
3093 interface ElectronicStabilityControl : <ref>VehicleCommonDataType</ref> {
3094     readonly    attribute boolean enabled;
3095     readonly    attribute boolean engaged;
3096 };</webidl>
3097     <ExtendedAttributeList>
3098       <ExtendedAttribute name="NoInterfaceObject">
3099         <webidl>NoInterfaceObject</webidl>
3100       </ExtendedAttribute>
3101     </ExtendedAttributeList>
3102     <InterfaceInheritance>
3103       <Name name="VehicleCommonDataType"/>
3104     </InterfaceInheritance>
3105     <Attribute readonly="readonly" name="enabled" id="::ElectronicStabilityControl::enabled">
3106       <webidl>    readonly    attribute boolean enabled;</webidl>
3107       <Type type="boolean"/>
3108     </Attribute>
3109     <Attribute readonly="readonly" name="engaged" id="::ElectronicStabilityControl::engaged">
3110       <webidl>    readonly    attribute boolean engaged;</webidl>
3111       <Type type="boolean"/>
3112     </Attribute>
3113   </Interface>
3114   <Interface name="TopSpeedLimit" id="::TopSpeedLimit">
3115     <webidl>[NoInterfaceObject]
3116 interface TopSpeedLimit : <ref>VehicleCommonDataType</ref> {
3117     readonly    attribute unsigned short speed;
3118 };</webidl>
3119     <ExtendedAttributeList>
3120       <ExtendedAttribute name="NoInterfaceObject">
3121         <webidl>NoInterfaceObject</webidl>
3122       </ExtendedAttribute>
3123     </ExtendedAttributeList>
3124     <InterfaceInheritance>
3125       <Name name="VehicleCommonDataType"/>
3126     </InterfaceInheritance>
3127     <Attribute readonly="readonly" name="speed" id="::TopSpeedLimit::speed">
3128       <webidl>    readonly    attribute unsigned short speed;</webidl>
3129       <Type type="unsigned short"/>
3130     </Attribute>
3131   </Interface>
3132   <Interface name="AirbagStatus" id="::AirbagStatus">
3133     <webidl>[NoInterfaceObject]
3134 interface AirbagStatus : <ref>VehicleCommonDataType</ref> {
3135     readonly    attribute boolean activated;
3136     readonly    attribute boolean deployed;
3137     readonly    attribute <ref>Zone</ref>?   zone;
3138 };</webidl>
3139     <ExtendedAttributeList>
3140       <ExtendedAttribute name="NoInterfaceObject">
3141         <webidl>NoInterfaceObject</webidl>
3142       </ExtendedAttribute>
3143     </ExtendedAttributeList>
3144     <InterfaceInheritance>
3145       <Name name="VehicleCommonDataType"/>
3146     </InterfaceInheritance>
3147     <Attribute readonly="readonly" name="activated" id="::AirbagStatus::activated">
3148       <webidl>    readonly    attribute boolean activated;</webidl>
3149       <Type type="boolean"/>
3150     </Attribute>
3151     <Attribute readonly="readonly" name="deployed" id="::AirbagStatus::deployed">
3152       <webidl>    readonly    attribute boolean deployed;</webidl>
3153       <Type type="boolean"/>
3154     </Attribute>
3155     <Attribute readonly="readonly" name="zone" id="::AirbagStatus::zone">
3156       <webidl>    readonly    attribute <ref>Zone</ref>?   zone;</webidl>
3157       <Type name="Zone" nullable="nullable"/>
3158     </Attribute>
3159   </Interface>
3160   <Enum name="DoorOpenStatus" id="::DoorOpenStatus">
3161     <webidl>enum DoorOpenStatus {
3162     &quot;open&quot;,
3163     &quot;ajar&quot;,
3164     &quot;closed&quot;
3165 };</webidl>
3166     <EnumValue stringvalue="open">
3167       <webidl>    &quot;open</webidl>
3168     </EnumValue>
3169     <EnumValue stringvalue="ajar">
3170       <webidl>    &quot;ajar</webidl>
3171     </EnumValue>
3172     <EnumValue stringvalue="closed">
3173       <webidl>    &quot;closed</webidl>
3174     </EnumValue>
3175   </Enum>
3176   <Interface name="Door" id="::Door">
3177     <webidl>[NoInterfaceObject]
3178 interface Door : <ref>VehicleCommonDataType</ref> {
3179     readonly    attribute <ref>DoorOpenStatus</ref> status;
3180                 attribute boolean        lock;
3181     readonly    attribute <ref>Zone</ref>?          zone;
3182 };</webidl>
3183     <ExtendedAttributeList>
3184       <ExtendedAttribute name="NoInterfaceObject">
3185         <webidl>NoInterfaceObject</webidl>
3186       </ExtendedAttribute>
3187     </ExtendedAttributeList>
3188     <InterfaceInheritance>
3189       <Name name="VehicleCommonDataType"/>
3190     </InterfaceInheritance>
3191     <Attribute readonly="readonly" name="status" id="::Door::status">
3192       <webidl>    readonly    attribute <ref>DoorOpenStatus</ref> status;</webidl>
3193       <Type name="DoorOpenStatus"/>
3194     </Attribute>
3195     <Attribute name="lock" id="::Door::lock">
3196       <webidl>                attribute boolean        lock;</webidl>
3197       <Type type="boolean"/>
3198     </Attribute>
3199     <Attribute readonly="readonly" name="zone" id="::Door::zone">
3200       <webidl>    readonly    attribute <ref>Zone</ref>?          zone;</webidl>
3201       <Type name="Zone" nullable="nullable"/>
3202     </Attribute>
3203   </Interface>
3204   <Interface name="ChildSafetyLock" id="::ChildSafetyLock">
3205     <webidl>[NoInterfaceObject]
3206 interface ChildSafetyLock : <ref>VehicleCommonDataType</ref> {
3207                 attribute boolean lock;
3208     readonly    attribute <ref>Zone</ref>?   zone;
3209 };</webidl>
3210     <ExtendedAttributeList>
3211       <ExtendedAttribute name="NoInterfaceObject">
3212         <webidl>NoInterfaceObject</webidl>
3213       </ExtendedAttribute>
3214     </ExtendedAttributeList>
3215     <InterfaceInheritance>
3216       <Name name="VehicleCommonDataType"/>
3217     </InterfaceInheritance>
3218     <Attribute name="lock" id="::ChildSafetyLock::lock">
3219       <webidl>                attribute boolean lock;</webidl>
3220       <Type type="boolean"/>
3221     </Attribute>
3222     <Attribute readonly="readonly" name="zone" id="::ChildSafetyLock::zone">
3223       <webidl>    readonly    attribute <ref>Zone</ref>?   zone;</webidl>
3224       <Type name="Zone" nullable="nullable"/>
3225     </Attribute>
3226   </Interface>
3227   <Enum name="OccupantStatus" id="::OccupantStatus">
3228     <webidl>enum OccupantStatus {
3229     &quot;adult&quot;,
3230     &quot;child&quot;,
3231     &quot;vacant&quot;
3232 };</webidl>
3233     <EnumValue stringvalue="adult">
3234       <webidl>    &quot;adult</webidl>
3235     </EnumValue>
3236     <EnumValue stringvalue="child">
3237       <webidl>    &quot;child</webidl>
3238     </EnumValue>
3239     <EnumValue stringvalue="vacant">
3240       <webidl>    &quot;vacant</webidl>
3241     </EnumValue>
3242   </Enum>
3243   <Enum name="IdentificationType" id="::IdentificationType">
3244     <webidl>enum IdentificationType {
3245     &quot;pin&quot;,
3246     &quot;keyfob&quot;,
3247     &quot;Bluetooth&quot;,
3248     &quot;NFC&quot;,
3249     &quot;fingerprint&quot;,
3250     &quot;camera&quot;,
3251     &quot;voice&quot;
3252 };</webidl>
3253     <EnumValue stringvalue="pin">
3254       <webidl>    &quot;pin</webidl>
3255     </EnumValue>
3256     <EnumValue stringvalue="keyfob">
3257       <webidl>    &quot;keyfob</webidl>
3258     </EnumValue>
3259     <EnumValue stringvalue="Bluetooth">
3260       <webidl>    &quot;Bluetooth</webidl>
3261     </EnumValue>
3262     <EnumValue stringvalue="NFC">
3263       <webidl>    &quot;NFC</webidl>
3264     </EnumValue>
3265     <EnumValue stringvalue="fingerprint">
3266       <webidl>    &quot;fingerprint</webidl>
3267     </EnumValue>
3268     <EnumValue stringvalue="camera">
3269       <webidl>    &quot;camera</webidl>
3270     </EnumValue>
3271     <EnumValue stringvalue="voice">
3272       <webidl>    &quot;voice</webidl>
3273     </EnumValue>
3274   </Enum>
3275   <Interface name="Seat" id="::Seat">
3276     <webidl>[NoInterfaceObject]
3277 interface Seat : <ref>VehicleCommonDataType</ref> {
3278     readonly    attribute <ref>OccupantStatus</ref>     occupant;
3279     readonly    attribute boolean            seatbelt;
3280     readonly    attribute DOMString?         occupantName;
3281     readonly    attribute <ref>IdentificationType</ref> identificationType;
3282     readonly    attribute <ref>Zone</ref>?              zone;
3283 };</webidl>
3284     <ExtendedAttributeList>
3285       <ExtendedAttribute name="NoInterfaceObject">
3286         <webidl>NoInterfaceObject</webidl>
3287       </ExtendedAttribute>
3288     </ExtendedAttributeList>
3289     <InterfaceInheritance>
3290       <Name name="VehicleCommonDataType"/>
3291     </InterfaceInheritance>
3292     <Attribute readonly="readonly" name="occupant" id="::Seat::occupant">
3293       <webidl>    readonly    attribute <ref>OccupantStatus</ref>     occupant;</webidl>
3294       <Type name="OccupantStatus"/>
3295     </Attribute>
3296     <Attribute readonly="readonly" name="seatbelt" id="::Seat::seatbelt">
3297       <webidl>    readonly    attribute boolean            seatbelt;</webidl>
3298       <Type type="boolean"/>
3299     </Attribute>
3300     <Attribute readonly="readonly" name="occupantName" id="::Seat::occupantName">
3301       <webidl>    readonly    attribute DOMString?         occupantName;</webidl>
3302       <Type type="DOMString" nullable="nullable"/>
3303     </Attribute>
3304     <Attribute readonly="readonly" name="identificationType" id="::Seat::identificationType">
3305       <webidl>    readonly    attribute <ref>IdentificationType</ref> identificationType;</webidl>
3306       <Type name="IdentificationType"/>
3307     </Attribute>
3308     <Attribute readonly="readonly" name="zone" id="::Seat::zone">
3309       <webidl>    readonly    attribute <ref>Zone</ref>?              zone;</webidl>
3310       <Type name="Zone" nullable="nullable"/>
3311     </Attribute>
3312   </Interface>
3313   <Interface name="Temperature" id="::Temperature">
3314     <webidl>[NoInterfaceObject]
3315 interface Temperature : <ref>VehicleCommonDataType</ref> {
3316     readonly    attribute float interiorTemperature;
3317     readonly    attribute float exteriorTemperature;
3318 };</webidl>
3319     <ExtendedAttributeList>
3320       <ExtendedAttribute name="NoInterfaceObject">
3321         <webidl>NoInterfaceObject</webidl>
3322       </ExtendedAttribute>
3323     </ExtendedAttributeList>
3324     <InterfaceInheritance>
3325       <Name name="VehicleCommonDataType"/>
3326     </InterfaceInheritance>
3327     <Attribute readonly="readonly" name="interiorTemperature" id="::Temperature::interiorTemperature">
3328       <webidl>    readonly    attribute float interiorTemperature;</webidl>
3329       <Type type="float"/>
3330     </Attribute>
3331     <Attribute readonly="readonly" name="exteriorTemperature" id="::Temperature::exteriorTemperature">
3332       <webidl>    readonly    attribute float exteriorTemperature;</webidl>
3333       <Type type="float"/>
3334     </Attribute>
3335   </Interface>
3336   <Interface name="RainSensor" id="::RainSensor">
3337     <webidl>[NoInterfaceObject]
3338 interface RainSensor : <ref>VehicleCommonDataType</ref> {
3339     readonly    attribute unsigned short rain;
3340     readonly    attribute <ref>Zone</ref>?          zone;
3341 };</webidl>
3342     <ExtendedAttributeList>
3343       <ExtendedAttribute name="NoInterfaceObject">
3344         <webidl>NoInterfaceObject</webidl>
3345       </ExtendedAttribute>
3346     </ExtendedAttributeList>
3347     <InterfaceInheritance>
3348       <Name name="VehicleCommonDataType"/>
3349     </InterfaceInheritance>
3350     <Attribute readonly="readonly" name="rain" id="::RainSensor::rain">
3351       <webidl>    readonly    attribute unsigned short rain;</webidl>
3352       <Type type="unsigned short"/>
3353     </Attribute>
3354     <Attribute readonly="readonly" name="zone" id="::RainSensor::zone">
3355       <webidl>    readonly    attribute <ref>Zone</ref>?          zone;</webidl>
3356       <Type name="Zone" nullable="nullable"/>
3357     </Attribute>
3358   </Interface>
3359   <Interface name="WiperStatus" id="::WiperStatus">
3360     <webidl>[NoInterfaceObject]
3361 interface WiperStatus : <ref>VehicleCommonDataType</ref> {
3362     readonly    attribute unsigned short wiperSpeed;
3363     readonly    attribute <ref>Zone</ref>?          zone;
3364 };</webidl>
3365     <ExtendedAttributeList>
3366       <ExtendedAttribute name="NoInterfaceObject">
3367         <webidl>NoInterfaceObject</webidl>
3368       </ExtendedAttribute>
3369     </ExtendedAttributeList>
3370     <InterfaceInheritance>
3371       <Name name="VehicleCommonDataType"/>
3372     </InterfaceInheritance>
3373     <Attribute readonly="readonly" name="wiperSpeed" id="::WiperStatus::wiperSpeed">
3374       <webidl>    readonly    attribute unsigned short wiperSpeed;</webidl>
3375       <Type type="unsigned short"/>
3376     </Attribute>
3377     <Attribute readonly="readonly" name="zone" id="::WiperStatus::zone">
3378       <webidl>    readonly    attribute <ref>Zone</ref>?          zone;</webidl>
3379       <Type name="Zone" nullable="nullable"/>
3380     </Attribute>
3381   </Interface>
3382   <Enum name="WiperControl" id="::WiperControl">
3383     <webidl>enum WiperControl {
3384     &quot;off&quot;,
3385     &quot;once&quot;,
3386     &quot;slowest&quot;,
3387     &quot;slow&quot;,
3388     &quot;middle&quot;,
3389     &quot;fast&quot;,
3390     &quot;fastest&quot;,
3391     &quot;auto&quot;
3392 };</webidl>
3393     <EnumValue stringvalue="off">
3394       <webidl>    &quot;off</webidl>
3395     </EnumValue>
3396     <EnumValue stringvalue="once">
3397       <webidl>    &quot;once</webidl>
3398     </EnumValue>
3399     <EnumValue stringvalue="slowest">
3400       <webidl>    &quot;slowest</webidl>
3401     </EnumValue>
3402     <EnumValue stringvalue="slow">
3403       <webidl>    &quot;slow</webidl>
3404     </EnumValue>
3405     <EnumValue stringvalue="middle">
3406       <webidl>    &quot;middle</webidl>
3407     </EnumValue>
3408     <EnumValue stringvalue="fast">
3409       <webidl>    &quot;fast</webidl>
3410     </EnumValue>
3411     <EnumValue stringvalue="fastest">
3412       <webidl>    &quot;fastest</webidl>
3413     </EnumValue>
3414     <EnumValue stringvalue="auto">
3415       <webidl>    &quot;auto</webidl>
3416     </EnumValue>
3417   </Enum>
3418   <Interface name="WiperSetting" id="::WiperSetting">
3419     <webidl>[NoInterfaceObject]
3420 interface WiperSetting : <ref>VehicleCommonDataType</ref> {
3421                 attribute <ref>WiperControl</ref> wiperControl;
3422     readonly    attribute <ref>Zone</ref>?        zone;
3423 };</webidl>
3424     <ExtendedAttributeList>
3425       <ExtendedAttribute name="NoInterfaceObject">
3426         <webidl>NoInterfaceObject</webidl>
3427       </ExtendedAttribute>
3428     </ExtendedAttributeList>
3429     <InterfaceInheritance>
3430       <Name name="VehicleCommonDataType"/>
3431     </InterfaceInheritance>
3432     <Attribute name="wiperControl" id="::WiperSetting::wiperControl">
3433       <webidl>                attribute <ref>WiperControl</ref> wiperControl;</webidl>
3434       <Type name="WiperControl"/>
3435     </Attribute>
3436     <Attribute readonly="readonly" name="zone" id="::WiperSetting::zone">
3437       <webidl>    readonly    attribute <ref>Zone</ref>?        zone;</webidl>
3438       <Type name="Zone" nullable="nullable"/>
3439     </Attribute>
3440   </Interface>
3441   <Interface name="Defrost" id="::Defrost">
3442     <webidl>[NoInterfaceObject]
3443 interface Defrost : <ref>VehicleCommonDataType</ref> {
3444                 attribute boolean? defrostWindow;
3445                 attribute boolean? defrostMirrors;
3446     readonly    attribute <ref>Zone</ref>?    zone;
3447 };</webidl>
3448     <ExtendedAttributeList>
3449       <ExtendedAttribute name="NoInterfaceObject">
3450         <webidl>NoInterfaceObject</webidl>
3451       </ExtendedAttribute>
3452     </ExtendedAttributeList>
3453     <InterfaceInheritance>
3454       <Name name="VehicleCommonDataType"/>
3455     </InterfaceInheritance>
3456     <Attribute name="defrostWindow" id="::Defrost::defrostWindow">
3457       <webidl>                attribute boolean? defrostWindow;</webidl>
3458       <Type type="boolean" nullable="nullable"/>
3459     </Attribute>
3460     <Attribute name="defrostMirrors" id="::Defrost::defrostMirrors">
3461       <webidl>                attribute boolean? defrostMirrors;</webidl>
3462       <Type type="boolean" nullable="nullable"/>
3463     </Attribute>
3464     <Attribute readonly="readonly" name="zone" id="::Defrost::zone">
3465       <webidl>    readonly    attribute <ref>Zone</ref>?    zone;</webidl>
3466       <Type name="Zone" nullable="nullable"/>
3467     </Attribute>
3468   </Interface>
3469   <Interface name="Sunroof" id="::Sunroof">
3470     <webidl>[NoInterfaceObject]
3471 interface Sunroof : <ref>VehicleCommonDataType</ref> {
3472                 attribute unsigned short openness;
3473                 attribute unsigned short tilt;
3474     readonly    attribute <ref>Zone</ref>?          zone;
3475 };</webidl>
3476     <ExtendedAttributeList>
3477       <ExtendedAttribute name="NoInterfaceObject">
3478         <webidl>NoInterfaceObject</webidl>
3479       </ExtendedAttribute>
3480     </ExtendedAttributeList>
3481     <InterfaceInheritance>
3482       <Name name="VehicleCommonDataType"/>
3483     </InterfaceInheritance>
3484     <Attribute name="openness" id="::Sunroof::openness">
3485       <webidl>                attribute unsigned short openness;</webidl>
3486       <Type type="unsigned short"/>
3487     </Attribute>
3488     <Attribute name="tilt" id="::Sunroof::tilt">
3489       <webidl>                attribute unsigned short tilt;</webidl>
3490       <Type type="unsigned short"/>
3491     </Attribute>
3492     <Attribute readonly="readonly" name="zone" id="::Sunroof::zone">
3493       <webidl>    readonly    attribute <ref>Zone</ref>?          zone;</webidl>
3494       <Type name="Zone" nullable="nullable"/>
3495     </Attribute>
3496   </Interface>
3497   <Enum name="ConvertibleRoofStatus" id="::ConvertibleRoofStatus">
3498     <webidl>enum ConvertibleRoofStatus {
3499     &quot;closed&quot;,
3500     &quot;closing&quot;,
3501     &quot;opening&quot;,
3502     &quot;opened&quot;
3503 };</webidl>
3504     <EnumValue stringvalue="closed">
3505       <webidl>    &quot;closed</webidl>
3506     </EnumValue>
3507     <EnumValue stringvalue="closing">
3508       <webidl>    &quot;closing</webidl>
3509     </EnumValue>
3510     <EnumValue stringvalue="opening">
3511       <webidl>    &quot;opening</webidl>
3512     </EnumValue>
3513     <EnumValue stringvalue="opened">
3514       <webidl>    &quot;opened</webidl>
3515     </EnumValue>
3516   </Enum>
3517   <Interface name="ConvertibleRoof" id="::ConvertibleRoof">
3518     <webidl>[NoInterfaceObject]
3519 interface ConvertibleRoof : <ref>VehicleCommonDataType</ref> {
3520                 attribute <ref>ConvertibleRoofStatus</ref> status;
3521 };</webidl>
3522     <ExtendedAttributeList>
3523       <ExtendedAttribute name="NoInterfaceObject">
3524         <webidl>NoInterfaceObject</webidl>
3525       </ExtendedAttribute>
3526     </ExtendedAttributeList>
3527     <InterfaceInheritance>
3528       <Name name="VehicleCommonDataType"/>
3529     </InterfaceInheritance>
3530     <Attribute name="status" id="::ConvertibleRoof::status">
3531       <webidl>                attribute <ref>ConvertibleRoofStatus</ref> status;</webidl>
3532       <Type name="ConvertibleRoofStatus"/>
3533     </Attribute>
3534   </Interface>
3535   <Interface name="SideWindow" id="::SideWindow">
3536     <webidl>[NoInterfaceObject]
3537 interface SideWindow : <ref>VehicleCommonDataType</ref> {
3538                 attribute boolean?        lock;
3539                 attribute unsigned short? openness;
3540     readonly    attribute <ref>Zone</ref>?           zone;
3541 };</webidl>
3542     <ExtendedAttributeList>
3543       <ExtendedAttribute name="NoInterfaceObject">
3544         <webidl>NoInterfaceObject</webidl>
3545       </ExtendedAttribute>
3546     </ExtendedAttributeList>
3547     <InterfaceInheritance>
3548       <Name name="VehicleCommonDataType"/>
3549     </InterfaceInheritance>
3550     <Attribute name="lock" id="::SideWindow::lock">
3551       <webidl>                attribute boolean?        lock;</webidl>
3552       <Type type="boolean" nullable="nullable"/>
3553     </Attribute>
3554     <Attribute name="openness" id="::SideWindow::openness">
3555       <webidl>                attribute unsigned short? openness;</webidl>
3556       <Type type="unsigned short" nullable="nullable"/>
3557     </Attribute>
3558     <Attribute readonly="readonly" name="zone" id="::SideWindow::zone">
3559       <webidl>    readonly    attribute <ref>Zone</ref>?           zone;</webidl>
3560       <Type name="Zone" nullable="nullable"/>
3561     </Attribute>
3562   </Interface>
3563   <Enum name="AirflowDirection" id="::AirflowDirection">
3564     <webidl>enum AirflowDirection {
3565     &quot;frontpanel&quot;,
3566     &quot;floorduct&quot;,
3567     &quot;bilevel&quot;,
3568     &quot;defrostfloor&quot;
3569 };</webidl>
3570     <EnumValue stringvalue="frontpanel">
3571       <webidl>    &quot;frontpanel</webidl>
3572     </EnumValue>
3573     <EnumValue stringvalue="floorduct">
3574       <webidl>    &quot;floorduct</webidl>
3575     </EnumValue>
3576     <EnumValue stringvalue="bilevel">
3577       <webidl>    &quot;bilevel</webidl>
3578     </EnumValue>
3579     <EnumValue stringvalue="defrostfloor">
3580       <webidl>    &quot;defrostfloor</webidl>
3581     </EnumValue>
3582   </Enum>
3583   <Interface name="ClimateControl" id="::ClimateControl">
3584     <webidl>[NoInterfaceObject]
3585 interface ClimateControl : <ref>VehicleCommonDataType</ref> {
3586                 attribute <ref>AirflowDirection</ref>  airflowDirection;
3587                 attribute unsigned short    fanSpeedLevel;
3588                 attribute short?            targetTemperature;
3589                 attribute boolean           airConditioning;
3590                 attribute boolean           heater;
3591                 attribute unsigned short?   seatHeater;
3592                 attribute unsigned short?   seatCooler;
3593                 attribute boolean           airRecirculation;
3594                 attribute unsigned short?   steeringWheelHeater;
3595     readonly    attribute <ref>Zone</ref>?             zone;
3596 };</webidl>
3597     <ExtendedAttributeList>
3598       <ExtendedAttribute name="NoInterfaceObject">
3599         <webidl>NoInterfaceObject</webidl>
3600       </ExtendedAttribute>
3601     </ExtendedAttributeList>
3602     <InterfaceInheritance>
3603       <Name name="VehicleCommonDataType"/>
3604     </InterfaceInheritance>
3605     <Attribute name="airflowDirection" id="::ClimateControl::airflowDirection">
3606       <webidl>                attribute <ref>AirflowDirection</ref>  airflowDirection;</webidl>
3607       <Type name="AirflowDirection"/>
3608     </Attribute>
3609     <Attribute name="fanSpeedLevel" id="::ClimateControl::fanSpeedLevel">
3610       <webidl>                attribute unsigned short    fanSpeedLevel;</webidl>
3611       <Type type="unsigned short"/>
3612     </Attribute>
3613     <Attribute name="targetTemperature" id="::ClimateControl::targetTemperature">
3614       <webidl>                attribute short?            targetTemperature;</webidl>
3615       <Type type="short" nullable="nullable"/>
3616     </Attribute>
3617     <Attribute name="airConditioning" id="::ClimateControl::airConditioning">
3618       <webidl>                attribute boolean           airConditioning;</webidl>
3619       <Type type="boolean"/>
3620     </Attribute>
3621     <Attribute name="heater" id="::ClimateControl::heater">
3622       <webidl>                attribute boolean           heater;</webidl>
3623       <Type type="boolean"/>
3624     </Attribute>
3625     <Attribute name="seatHeater" id="::ClimateControl::seatHeater">
3626       <webidl>                attribute unsigned short?   seatHeater;</webidl>
3627       <Type type="unsigned short" nullable="nullable"/>
3628     </Attribute>
3629     <Attribute name="seatCooler" id="::ClimateControl::seatCooler">
3630       <webidl>                attribute unsigned short?   seatCooler;</webidl>
3631       <Type type="unsigned short" nullable="nullable"/>
3632     </Attribute>
3633     <Attribute name="airRecirculation" id="::ClimateControl::airRecirculation">
3634       <webidl>                attribute boolean           airRecirculation;</webidl>
3635       <Type type="boolean"/>
3636     </Attribute>
3637     <Attribute name="steeringWheelHeater" id="::ClimateControl::steeringWheelHeater">
3638       <webidl>                attribute unsigned short?   steeringWheelHeater;</webidl>
3639       <Type type="unsigned short" nullable="nullable"/>
3640     </Attribute>
3641     <Attribute readonly="readonly" name="zone" id="::ClimateControl::zone">
3642       <webidl>    readonly    attribute <ref>Zone</ref>?             zone;</webidl>
3643       <Type name="Zone" nullable="nullable"/>
3644     </Attribute>
3645   </Interface>
3646   <Interface name="AtmosphericPressure" id="::AtmosphericPressure">
3647     <webidl>[NoInterfaceObject]
3648 interface AtmosphericPressure : <ref>VehicleCommonDataType</ref> {
3649     readonly    attribute unsigned short pressure;
3650 };</webidl>
3651     <ExtendedAttributeList>
3652       <ExtendedAttribute name="NoInterfaceObject">
3653         <webidl>NoInterfaceObject</webidl>
3654       </ExtendedAttribute>
3655     </ExtendedAttributeList>
3656     <InterfaceInheritance>
3657       <Name name="VehicleCommonDataType"/>
3658     </InterfaceInheritance>
3659     <Attribute readonly="readonly" name="pressure" id="::AtmosphericPressure::pressure">
3660       <webidl>    readonly    attribute unsigned short pressure;</webidl>
3661       <Type type="unsigned short"/>
3662     </Attribute>
3663   </Interface>
3664   <Enum name="LaneDepartureStatus" id="::LaneDepartureStatus">
3665     <webidl>enum LaneDepartureStatus {
3666     &quot;off&quot;,
3667     &quot;pause&quot;,
3668     &quot;running&quot;
3669 };</webidl>
3670     <EnumValue stringvalue="off">
3671       <webidl>    &quot;off</webidl>
3672     </EnumValue>
3673     <EnumValue stringvalue="pause">
3674       <webidl>    &quot;pause</webidl>
3675     </EnumValue>
3676     <EnumValue stringvalue="running">
3677       <webidl>    &quot;running</webidl>
3678     </EnumValue>
3679   </Enum>
3680   <Interface name="LaneDepartureDetection" id="::LaneDepartureDetection">
3681     <webidl>[NoInterfaceObject]
3682 interface LaneDepartureDetection : <ref>VehicleCommonDataType</ref> {
3683     readonly    attribute <ref>LaneDepartureStatus</ref> status;
3684 };</webidl>
3685     <ExtendedAttributeList>
3686       <ExtendedAttribute name="NoInterfaceObject">
3687         <webidl>NoInterfaceObject</webidl>
3688       </ExtendedAttribute>
3689     </ExtendedAttributeList>
3690     <InterfaceInheritance>
3691       <Name name="VehicleCommonDataType"/>
3692     </InterfaceInheritance>
3693     <Attribute readonly="readonly" name="status" id="::LaneDepartureDetection::status">
3694       <webidl>    readonly    attribute <ref>LaneDepartureStatus</ref> status;</webidl>
3695       <Type name="LaneDepartureStatus"/>
3696     </Attribute>
3697   </Interface>
3698   <Enum name="AlarmStatus" id="::AlarmStatus">
3699     <webidl>enum AlarmStatus {
3700     &quot;disarmed&quot;,
3701     &quot;preArmed&quot;,
3702     &quot;armed&quot;,
3703     &quot;alarmed&quot;
3704 };</webidl>
3705     <EnumValue stringvalue="disarmed">
3706       <webidl>    &quot;disarmed</webidl>
3707     </EnumValue>
3708     <EnumValue stringvalue="preArmed">
3709       <webidl>    &quot;preArmed</webidl>
3710     </EnumValue>
3711     <EnumValue stringvalue="armed">
3712       <webidl>    &quot;armed</webidl>
3713     </EnumValue>
3714     <EnumValue stringvalue="alarmed">
3715       <webidl>    &quot;alarmed</webidl>
3716     </EnumValue>
3717   </Enum>
3718   <Interface name="Alarm" id="::Alarm">
3719     <webidl>[NoInterfaceObject]
3720 interface Alarm : <ref>VehicleCommonDataType</ref> {
3721                 attribute <ref>AlarmStatus</ref> status;
3722 };</webidl>
3723     <ExtendedAttributeList>
3724       <ExtendedAttribute name="NoInterfaceObject">
3725         <webidl>NoInterfaceObject</webidl>
3726       </ExtendedAttribute>
3727     </ExtendedAttributeList>
3728     <InterfaceInheritance>
3729       <Name name="VehicleCommonDataType"/>
3730     </InterfaceInheritance>
3731     <Attribute name="status" id="::Alarm::status">
3732       <webidl>                attribute <ref>AlarmStatus</ref> status;</webidl>
3733       <Type name="AlarmStatus"/>
3734     </Attribute>
3735   </Interface>
3736   <Enum name="ParkingBrakeStatus" id="::ParkingBrakeStatus">
3737     <webidl>enum ParkingBrakeStatus {
3738     &quot;inactive&quot;,
3739     &quot;active&quot;,
3740     &quot;error&quot;
3741 };</webidl>
3742     <EnumValue stringvalue="inactive">
3743       <webidl>    &quot;inactive</webidl>
3744     </EnumValue>
3745     <EnumValue stringvalue="active">
3746       <webidl>    &quot;active</webidl>
3747     </EnumValue>
3748     <EnumValue stringvalue="error">
3749       <webidl>    &quot;error</webidl>
3750     </EnumValue>
3751   </Enum>
3752   <Interface name="ParkingBrake" id="::ParkingBrake">
3753     <webidl>[NoInterfaceObject]
3754 interface ParkingBrake : <ref>VehicleCommonDataType</ref> {
3755     readonly    attribute <ref>ParkingBrakeStatus</ref> status;
3756 };</webidl>
3757     <ExtendedAttributeList>
3758       <ExtendedAttribute name="NoInterfaceObject">
3759         <webidl>NoInterfaceObject</webidl>
3760       </ExtendedAttribute>
3761     </ExtendedAttributeList>
3762     <InterfaceInheritance>
3763       <Name name="VehicleCommonDataType"/>
3764     </InterfaceInheritance>
3765     <Attribute readonly="readonly" name="status" id="::ParkingBrake::status">
3766       <webidl>    readonly    attribute <ref>ParkingBrakeStatus</ref> status;</webidl>
3767       <Type name="ParkingBrakeStatus"/>
3768     </Attribute>
3769   </Interface>
3770   <Interface name="ParkingLights" id="::ParkingLights">
3771     <webidl>[NoInterfaceObject]
3772 interface ParkingLights : <ref>VehicleCommonDataType</ref> {
3773     readonly    attribute boolean status;
3774                 attribute boolean setting;
3775 };</webidl>
3776     <ExtendedAttributeList>
3777       <ExtendedAttribute name="NoInterfaceObject">
3778         <webidl>NoInterfaceObject</webidl>
3779       </ExtendedAttribute>
3780     </ExtendedAttributeList>
3781     <InterfaceInheritance>
3782       <Name name="VehicleCommonDataType"/>
3783     </InterfaceInheritance>
3784     <Attribute readonly="readonly" name="status" id="::ParkingLights::status">
3785       <webidl>    readonly    attribute boolean status;</webidl>
3786       <Type type="boolean"/>
3787     </Attribute>
3788     <Attribute name="setting" id="::ParkingLights::setting">
3789       <webidl>                attribute boolean setting;</webidl>
3790       <Type type="boolean"/>
3791     </Attribute>
3792   </Interface>
3793 </Module>
3794 <Module name="MediaServer" id="::MediaServer">
3795   <webidl>  module MediaServer {
3796   [NoInterfaceObject] interface MediaServerManagerObject {
3797                 readonly attribute <ref>MediaServerManager</ref> mediaserver;
3798 };
3799  
3800 <ref>Tizen</ref> implements <ref>MediaServerManagerObject</ref>;
3801     
3802 [NoInterfaceObject] interface MediaServerManager  { 
3803             void scanNetwork(<ref>MediaServerFoundServerCallback</ref> successCallback, optional <ref>MediaServerErrorCallback</ref> errorCallback);
3804 };    
3805
3806 [NoInterfaceObject] interface MediaServer {
3807             readonly attribute DOMString id;
3808             readonly attribute DOMString friendlyName;
3809             readonly attribute object root;
3810                                             
3811             void browse(DOMString containerId, DOMString sortMode, unsigned long count, unsigned long offset, <ref>MediaServerBrowseFindCallback</ref> successCallback, optional <ref>MediaServerErrorCallback</ref> errorCallback);
3812                 void find(DOMString containerId, DOMString searchFilter, DOMString sortMode, unsigned long count, unsigned long offset, <ref>MediaServerBrowseFindCallback</ref> successCallback, optional <ref>MediaServerErrorCallback</ref> errorCallback);
3813 };
3814             
3815 [NoInterfaceObject] interface MediaServerError {
3816              const unsigned short GENERIC = 1;
3817              attribute unsigned short code;
3818                  attribute DOMString message;
3819 };
3820
3821 [Callback=FunctionOnly, NoInterfaceObject] interface MediaServerFoundServerCallback {
3822             void onsuccess(<ref>MediaServer</ref> value);
3823 };
3824
3825 [Callback=FunctionOnly, NoInterfaceObject] interface MediaServerBrowseFindCallback {
3826     void onsuccess(sequence&lt; object > value);
3827 };
3828
3829 [Callback=FunctionOnly, NoInterfaceObject] interface MediaServerErrorCallback {
3830     void onfailure(<ref>MediaServerError</ref> error);
3831 };</webidl>
3832   <Interface name="MediaServerManagerObject" id="::MediaServerManagerObject">
3833     <webidl>[NoInterfaceObject] interface MediaServerManagerObject {
3834                 readonly attribute <ref>MediaServerManager</ref> mediaserver;
3835 };</webidl>
3836     <ExtendedAttributeList>
3837       <ExtendedAttribute name="NoInterfaceObject">
3838         <webidl>NoInterfaceObject</webidl>
3839       </ExtendedAttribute>
3840     </ExtendedAttributeList>
3841     <Attribute readonly="readonly" name="mediaserver" id="::MediaServerManagerObject::mediaserver">
3842       <webidl>                readonly attribute <ref>MediaServerManager</ref> mediaserver;</webidl>
3843       <Type name="MediaServerManager"/>
3844     </Attribute>
3845   </Interface>
3846   <Implements name1="Tizen" name2="MediaServerManagerObject">
3847     <webidl><ref>Tizen</ref> implements <ref>MediaServerManagerObject</ref>;</webidl>
3848   </Implements>
3849   <Interface name="MediaServerManager" id="::MediaServerManager">
3850     <webidl>[NoInterfaceObject] interface MediaServerManager  { 
3851             void scanNetwork(<ref>MediaServerFoundServerCallback</ref> successCallback, optional <ref>MediaServerErrorCallback</ref> errorCallback);
3852 };</webidl>
3853     <ExtendedAttributeList>
3854       <ExtendedAttribute name="NoInterfaceObject">
3855         <webidl>NoInterfaceObject</webidl>
3856       </ExtendedAttribute>
3857     </ExtendedAttributeList>
3858     <Operation name="scanNetwork" id="::MediaServerManager::scanNetwork">
3859       <webidl>            void scanNetwork(<ref>MediaServerFoundServerCallback</ref> successCallback, optional <ref>MediaServerErrorCallback</ref> errorCallback);</webidl>
3860       <Type type="void"/>
3861       <ArgumentList>
3862         <Argument name="successCallback">
3863           <Type name="MediaServerFoundServerCallback"/>
3864         </Argument>
3865         <Argument optional="optional" name="errorCallback">
3866           <Type name="MediaServerErrorCallback"/>
3867         </Argument>
3868       </ArgumentList>
3869     </Operation>
3870   </Interface>
3871   <Interface name="MediaServer" id="::MediaServer">
3872     <webidl>[NoInterfaceObject] interface MediaServer {
3873             readonly attribute DOMString id;
3874             readonly attribute DOMString friendlyName;
3875             readonly attribute object root;
3876                                             
3877             void browse(DOMString containerId, DOMString sortMode, unsigned long count, unsigned long offset, <ref>MediaServerBrowseFindCallback</ref> successCallback, optional <ref>MediaServerErrorCallback</ref> errorCallback);
3878                 void find(DOMString containerId, DOMString searchFilter, DOMString sortMode, unsigned long count, unsigned long offset, <ref>MediaServerBrowseFindCallback</ref> successCallback, optional <ref>MediaServerErrorCallback</ref> errorCallback);
3879 };</webidl>
3880     <ExtendedAttributeList>
3881       <ExtendedAttribute name="NoInterfaceObject">
3882         <webidl>NoInterfaceObject</webidl>
3883       </ExtendedAttribute>
3884     </ExtendedAttributeList>
3885     <Attribute readonly="readonly" name="id" id="::MediaServer::id">
3886       <webidl>            readonly attribute DOMString id;</webidl>
3887       <Type type="DOMString"/>
3888     </Attribute>
3889     <Attribute readonly="readonly" name="friendlyName" id="::MediaServer::friendlyName">
3890       <webidl>            readonly attribute DOMString friendlyName;</webidl>
3891       <Type type="DOMString"/>
3892     </Attribute>
3893     <Attribute readonly="readonly" name="root" id="::MediaServer::root">
3894       <webidl>            readonly attribute object root;</webidl>
3895       <Type type="object"/>
3896     </Attribute>
3897     <Operation name="browse" id="::MediaServer::browse">
3898       <webidl>            void browse(DOMString containerId, DOMString sortMode, unsigned long count, unsigned long offset, <ref>MediaServerBrowseFindCallback</ref> successCallback, optional <ref>MediaServerErrorCallback</ref> errorCallback);</webidl>
3899       <Type type="void"/>
3900       <ArgumentList>
3901         <Argument name="containerId">
3902           <Type type="DOMString"/>
3903         </Argument>
3904         <Argument name="sortMode">
3905           <Type type="DOMString"/>
3906         </Argument>
3907         <Argument name="count">
3908           <Type type="unsigned long"/>
3909         </Argument>
3910         <Argument name="offset">
3911           <Type type="unsigned long"/>
3912         </Argument>
3913         <Argument name="successCallback">
3914           <Type name="MediaServerBrowseFindCallback"/>
3915         </Argument>
3916         <Argument optional="optional" name="errorCallback">
3917           <Type name="MediaServerErrorCallback"/>
3918         </Argument>
3919       </ArgumentList>
3920     </Operation>
3921     <Operation name="find" id="::MediaServer::find">
3922       <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>
3923       <Type type="void"/>
3924       <ArgumentList>
3925         <Argument name="containerId">
3926           <Type type="DOMString"/>
3927         </Argument>
3928         <Argument name="searchFilter">
3929           <Type type="DOMString"/>
3930         </Argument>
3931         <Argument name="sortMode">
3932           <Type type="DOMString"/>
3933         </Argument>
3934         <Argument name="count">
3935           <Type type="unsigned long"/>
3936         </Argument>
3937         <Argument name="offset">
3938           <Type type="unsigned long"/>
3939         </Argument>
3940         <Argument name="successCallback">
3941           <Type name="MediaServerBrowseFindCallback"/>
3942         </Argument>
3943         <Argument optional="optional" name="errorCallback">
3944           <Type name="MediaServerErrorCallback"/>
3945         </Argument>
3946       </ArgumentList>
3947     </Operation>
3948   </Interface>
3949   <Interface name="MediaServerError" id="::MediaServerError">
3950     <webidl>[NoInterfaceObject] interface MediaServerError {
3951              const unsigned short GENERIC = 1;
3952              attribute unsigned short code;
3953                  attribute DOMString message;
3954 };</webidl>
3955     <ExtendedAttributeList>
3956       <ExtendedAttribute name="NoInterfaceObject">
3957         <webidl>NoInterfaceObject</webidl>
3958       </ExtendedAttribute>
3959     </ExtendedAttributeList>
3960     <Const name="GENERIC" value="1" id="::MediaServerError::GENERIC">
3961       <webidl>             const unsigned short GENERIC = 1;</webidl>
3962       <Type type="unsigned short"/>
3963     </Const>
3964     <Attribute name="code" id="::MediaServerError::code">
3965       <webidl>             attribute unsigned short code;</webidl>
3966       <Type type="unsigned short"/>
3967     </Attribute>
3968     <Attribute name="message" id="::MediaServerError::message">
3969       <webidl>                 attribute DOMString message;</webidl>
3970       <Type type="DOMString"/>
3971     </Attribute>
3972   </Interface>
3973   <Interface name="MediaServerFoundServerCallback" id="::MediaServerFoundServerCallback">
3974     <webidl>[Callback=FunctionOnly, NoInterfaceObject] interface MediaServerFoundServerCallback {
3975             void onsuccess(<ref>MediaServer</ref> value);
3976 };</webidl>
3977     <ExtendedAttributeList>
3978       <ExtendedAttribute name="Callback" value="FunctionOnly">
3979         <webidl>Callback</webidl>
3980       </ExtendedAttribute>
3981       <ExtendedAttribute name="NoInterfaceObject">
3982         <webidl> NoInterfaceObject</webidl>
3983       </ExtendedAttribute>
3984     </ExtendedAttributeList>
3985     <Operation name="onsuccess" id="::MediaServerFoundServerCallback::onsuccess">
3986       <webidl>            void onsuccess(<ref>MediaServer</ref> value);</webidl>
3987       <Type type="void"/>
3988       <ArgumentList>
3989         <Argument name="value">
3990           <Type name="MediaServer"/>
3991         </Argument>
3992       </ArgumentList>
3993     </Operation>
3994   </Interface>
3995   <Interface name="MediaServerBrowseFindCallback" id="::MediaServerBrowseFindCallback">
3996     <webidl>[Callback=FunctionOnly, NoInterfaceObject] interface MediaServerBrowseFindCallback {
3997     void onsuccess(sequence&lt; object > value);
3998 };</webidl>
3999     <ExtendedAttributeList>
4000       <ExtendedAttribute name="Callback" value="FunctionOnly">
4001         <webidl>Callback</webidl>
4002       </ExtendedAttribute>
4003       <ExtendedAttribute name="NoInterfaceObject">
4004         <webidl> NoInterfaceObject</webidl>
4005       </ExtendedAttribute>
4006     </ExtendedAttributeList>
4007     <Operation name="onsuccess" id="::MediaServerBrowseFindCallback::onsuccess">
4008       <webidl>    void onsuccess(sequence&lt; object > value);</webidl>
4009       <Type type="void"/>
4010       <ArgumentList>
4011         <Argument name="value">
4012           <Type type="sequence">
4013             <Type type="object"/>
4014           </Type>
4015         </Argument>
4016       </ArgumentList>
4017     </Operation>
4018   </Interface>
4019   <Interface name="MediaServerErrorCallback" id="::MediaServerErrorCallback">
4020     <webidl>[Callback=FunctionOnly, NoInterfaceObject] interface MediaServerErrorCallback {
4021     void onfailure(<ref>MediaServerError</ref> error);
4022 };</webidl>
4023     <ExtendedAttributeList>
4024       <ExtendedAttribute name="Callback" value="FunctionOnly">
4025         <webidl>Callback</webidl>
4026       </ExtendedAttribute>
4027       <ExtendedAttribute name="NoInterfaceObject">
4028         <webidl> NoInterfaceObject</webidl>
4029       </ExtendedAttribute>
4030     </ExtendedAttributeList>
4031     <Operation name="onfailure" id="::MediaServerErrorCallback::onfailure">
4032       <webidl>    void onfailure(<ref>MediaServerError</ref> error);</webidl>
4033       <Type type="void"/>
4034       <ArgumentList>
4035         <Argument name="error">
4036           <Type name="MediaServerError"/>
4037         </Argument>
4038       </ArgumentList>
4039     </Operation>
4040   </Interface>
4041 </Module>
4042 <Module name="Locale" id="::Locale">
4043   <webidl>  module Locale {
4044   [NoInterfaceObject]
4045 interface LocaleManagerObject {
4046     readonly attribute <ref>Locale</ref> locale;
4047 };
4048
4049 <ref>Tizen</ref> implements <ref>LocaleManagerObject</ref>;
4050
4051 callback LocaleChangedCallback = void (DOMString newLocale);
4052
4053
4054 [NoInterfaceObject]
4055 interface Locale  { 
4056
4057         void getLocale();
4058         
4059          void setLocale(DOMString newLocale);
4060          
4061          void localeChanged(<ref>LocaleChangedCallback</ref> cb);
4062
4063 };</webidl>
4064   <Interface name="LocaleManagerObject" id="::LocaleManagerObject">
4065     <webidl>[NoInterfaceObject]
4066 interface LocaleManagerObject {
4067     readonly attribute <ref>Locale</ref> locale;
4068 };</webidl>
4069     <descriptive>
4070        <description>
4071         <p>
4072 Details. 
4073         </p>
4074         <p>
4075 def-api-feature http://tizen.org/api/vehicle 
4076 brief Allows access to the vehicle API
4077         </p>
4078        </description>
4079     </descriptive>
4080     <ExtendedAttributeList>
4081       <ExtendedAttribute name="NoInterfaceObject">
4082         <webidl>NoInterfaceObject</webidl>
4083       </ExtendedAttribute>
4084     </ExtendedAttributeList>
4085     <Attribute readonly="readonly" name="locale" id="::LocaleManagerObject::locale">
4086       <webidl>    readonly attribute <ref>Locale</ref> locale;</webidl>
4087       <Type name="Locale"/>
4088     </Attribute>
4089   </Interface>
4090   <Implements name1="Tizen" name2="LocaleManagerObject">
4091     <webidl><ref>Tizen</ref> implements <ref>LocaleManagerObject</ref>;</webidl>
4092   </Implements>
4093   <Callback name="LocaleChangedCallback" id="::LocaleChangedCallback">
4094     <webidl>callback LocaleChangedCallback = void (DOMString newLocale);</webidl>
4095     <Type type="void"/>
4096     <ArgumentList>
4097       <Argument name="newLocale">
4098         <Type type="DOMString"/>
4099       </Argument>
4100     </ArgumentList>
4101   </Callback>
4102   <Interface name="Locale" id="::Locale">
4103     <webidl>[NoInterfaceObject]
4104 interface Locale  { 
4105
4106         void getLocale();
4107         
4108          void setLocale(DOMString newLocale);
4109          
4110          void localeChanged(<ref>LocaleChangedCallback</ref> cb);
4111
4112 };</webidl>
4113     <ExtendedAttributeList>
4114       <ExtendedAttribute name="NoInterfaceObject">
4115         <webidl>NoInterfaceObject</webidl>
4116       </ExtendedAttribute>
4117     </ExtendedAttributeList>
4118     <Operation name="getLocale" id="::Locale::getLocale">
4119       <webidl>        void getLocale();</webidl>
4120       <descriptive>
4121          <description>
4122           <p>
4123 brief gets the current locale
4124 returns current locale in ISO 639-2 format (ie en_US for english US)
4125           </p>
4126          </description>
4127       </descriptive>
4128       <Type type="void"/>
4129       <ArgumentList/>
4130     </Operation>
4131     <Operation name="setLocale" id="::Locale::setLocale">
4132       <webidl>         void setLocale(DOMString newLocale);</webidl>
4133       <descriptive>
4134          <description>
4135           <p>
4136 brief sets the system locale
4137 param newLocale locale to set in ISO 639-2 format
4138           </p>
4139          </description>
4140       </descriptive>
4141       <Type type="void"/>
4142       <ArgumentList>
4143         <Argument name="newLocale">
4144           <Type type="DOMString"/>
4145         </Argument>
4146       </ArgumentList>
4147     </Operation>
4148     <Operation name="localeChanged" id="::Locale::localeChanged">
4149       <webidl>         void localeChanged(<ref>LocaleChangedCallback</ref> cb);</webidl>
4150       <descriptive>
4151          <description>
4152           <p>
4153 brief subscribe to locale changes.
4154 param cb callback to be called when this even occurs.
4155           </p>
4156          </description>
4157       </descriptive>
4158       <Type type="void"/>
4159       <ArgumentList>
4160         <Argument name="cb">
4161           <Type name="LocaleChangedCallback"/>
4162         </Argument>
4163       </ArgumentList>
4164     </Operation>
4165   </Interface>
4166 </Module>
4167 <Module name="Speech" id="::Speech">
4168   <webidl>  module Speech {
4169   [NoInterfaceObject]
4170    interface SpeechManagerObject {
4171                readonly attribute <ref>SpeechManager</ref> speech;
4172    };
4173    <ref>Tizen</ref> implements <ref>SpeechManagerObject</ref>;
4174
4175
4176    [NoInterfaceObject]
4177    interface SpeechManager { 
4178                    void vocalizeString(DOMString speakString);
4179    };
4180
4181    [Constructor]
4182     interface SpeechRecognition : <ref>EventTarget</ref> {
4183         attribute <ref>SpeechGrammarList</ref> grammars;
4184         attribute DOMString lang;
4185         attribute boolean continuous;
4186         attribute boolean interimResults;
4187         attribute unsigned long maxAlternatives;
4188         attribute DOMString serviceURI;
4189
4190         void start();
4191         void stop();
4192         void abort();
4193
4194         attribute <ref>EventHandler</ref> onaudiostart;
4195         attribute <ref>EventHandler</ref> onsoundstart;
4196         attribute <ref>EventHandler</ref> onspeechstart;
4197         attribute <ref>EventHandler</ref> onspeechend;
4198         attribute <ref>EventHandler</ref> onsoundend;
4199         attribute <ref>EventHandler</ref> onaudioend;
4200         attribute <ref>EventHandler</ref> onresult;
4201         attribute <ref>EventHandler</ref> onnomatch;
4202         attribute <ref>EventHandler</ref> onerror;
4203         attribute <ref>EventHandler</ref> onstart;
4204         attribute <ref>EventHandler</ref> onend;
4205     };
4206
4207         enum ErrorCode {
4208           &quot;no-speech&quot;,
4209           &quot;aborted&quot;,
4210           &quot;audio-capture&quot;,
4211           &quot;network&quot;,
4212           &quot;not-allowed&quot;,
4213           &quot;service-not-allowed&quot;,
4214           &quot;bad-grammar&quot;,
4215           &quot;language-not-supported&quot;
4216         };
4217
4218     interface SpeechRecognitionError : <ref>Event</ref> {
4219         readonly attribute <ref>ErrorCode</ref> error;
4220         readonly attribute DOMString message;
4221     };
4222
4223     interface SpeechRecognitionAlternative {
4224         readonly attribute DOMString transcript;
4225         readonly attribute float confidence;
4226     };
4227
4228     interface SpeechRecognitionResult {
4229         readonly attribute unsigned long length;
4230         getter <ref>SpeechRecognitionAlternative</ref> item(unsigned long index);
4231         readonly attribute boolean final;
4232     };
4233
4234     interface SpeechRecognitionResultList {
4235         readonly attribute unsigned long length;
4236         getter <ref>SpeechRecognitionResult</ref> item(unsigned long index);
4237     };
4238
4239     interface SpeechRecognitionEvent : <ref>Event</ref> {
4240         readonly attribute unsigned long resultIndex;
4241         readonly attribute <ref>SpeechRecognitionResultList</ref> results;
4242         readonly attribute any interpretation;
4243         readonly attribute <ref>Document</ref> emma;
4244     };
4245
4246     [Constructor]
4247     interface SpeechGrammar {
4248         attribute DOMString src;
4249         attribute float weight;
4250     };
4251
4252     [Constructor]
4253     interface SpeechGrammarList {
4254         readonly attribute unsigned long length;
4255         getter <ref>SpeechGrammar</ref> item(unsigned long index);
4256         void addFromURI(DOMString src, optional float weight);
4257         void addFromString(DOMString string, optional float weight);
4258     };
4259 };</webidl>
4260   <Interface name="SpeechManagerObject" id="::SpeechManagerObject">
4261     <webidl>   [NoInterfaceObject]
4262    interface SpeechManagerObject {
4263                readonly attribute <ref>SpeechManager</ref> speech;
4264    };</webidl>
4265     <ExtendedAttributeList>
4266       <ExtendedAttribute name="NoInterfaceObject">
4267         <webidl>NoInterfaceObject</webidl>
4268       </ExtendedAttribute>
4269     </ExtendedAttributeList>
4270     <Attribute readonly="readonly" name="speech" id="::SpeechManagerObject::speech">
4271       <webidl>               readonly attribute <ref>SpeechManager</ref> speech;</webidl>
4272       <Type name="SpeechManager"/>
4273     </Attribute>
4274   </Interface>
4275   <Implements name1="Tizen" name2="SpeechManagerObject">
4276     <webidl>   <ref>Tizen</ref> implements <ref>SpeechManagerObject</ref>;</webidl>
4277   </Implements>
4278   <Interface name="SpeechManager" id="::SpeechManager">
4279     <webidl>   [NoInterfaceObject]
4280    interface SpeechManager { 
4281                    void vocalizeString(DOMString speakString);
4282    };</webidl>
4283     <ExtendedAttributeList>
4284       <ExtendedAttribute name="NoInterfaceObject">
4285         <webidl>NoInterfaceObject</webidl>
4286       </ExtendedAttribute>
4287     </ExtendedAttributeList>
4288     <Operation name="vocalizeString" id="::SpeechManager::vocalizeString">
4289       <webidl>                   void vocalizeString(DOMString speakString);</webidl>
4290       <Type type="void"/>
4291       <ArgumentList>
4292         <Argument name="speakString">
4293           <Type type="DOMString"/>
4294         </Argument>
4295       </ArgumentList>
4296     </Operation>
4297   </Interface>
4298   <Interface name="SpeechRecognition" id="::SpeechRecognition">
4299     <webidl>   [Constructor]
4300     interface SpeechRecognition : <ref>EventTarget</ref> {
4301         attribute <ref>SpeechGrammarList</ref> grammars;
4302         attribute DOMString lang;
4303         attribute boolean continuous;
4304         attribute boolean interimResults;
4305         attribute unsigned long maxAlternatives;
4306         attribute DOMString serviceURI;
4307
4308         void start();
4309         void stop();
4310         void abort();
4311
4312         attribute <ref>EventHandler</ref> onaudiostart;
4313         attribute <ref>EventHandler</ref> onsoundstart;
4314         attribute <ref>EventHandler</ref> onspeechstart;
4315         attribute <ref>EventHandler</ref> onspeechend;
4316         attribute <ref>EventHandler</ref> onsoundend;
4317         attribute <ref>EventHandler</ref> onaudioend;
4318         attribute <ref>EventHandler</ref> onresult;
4319         attribute <ref>EventHandler</ref> onnomatch;
4320         attribute <ref>EventHandler</ref> onerror;
4321         attribute <ref>EventHandler</ref> onstart;
4322         attribute <ref>EventHandler</ref> onend;
4323     };</webidl>
4324     <ExtendedAttributeList>
4325       <ExtendedAttribute name="Constructor">
4326         <webidl>Constructor</webidl>
4327       </ExtendedAttribute>
4328     </ExtendedAttributeList>
4329     <InterfaceInheritance>
4330       <Name name="EventTarget"/>
4331     </InterfaceInheritance>
4332     <Attribute name="grammars" id="::SpeechRecognition::grammars">
4333       <webidl>        attribute <ref>SpeechGrammarList</ref> grammars;</webidl>
4334       <Type name="SpeechGrammarList"/>
4335     </Attribute>
4336     <Attribute name="lang" id="::SpeechRecognition::lang">
4337       <webidl>        attribute DOMString lang;</webidl>
4338       <Type type="DOMString"/>
4339     </Attribute>
4340     <Attribute name="continuous" id="::SpeechRecognition::continuous">
4341       <webidl>        attribute boolean continuous;</webidl>
4342       <Type type="boolean"/>
4343     </Attribute>
4344     <Attribute name="interimResults" id="::SpeechRecognition::interimResults">
4345       <webidl>        attribute boolean interimResults;</webidl>
4346       <Type type="boolean"/>
4347     </Attribute>
4348     <Attribute name="maxAlternatives" id="::SpeechRecognition::maxAlternatives">
4349       <webidl>        attribute unsigned long maxAlternatives;</webidl>
4350       <Type type="unsigned long"/>
4351     </Attribute>
4352     <Attribute name="serviceURI" id="::SpeechRecognition::serviceURI">
4353       <webidl>        attribute DOMString serviceURI;</webidl>
4354       <Type type="DOMString"/>
4355     </Attribute>
4356     <Operation name="start" id="::SpeechRecognition::start">
4357       <webidl>        void start();</webidl>
4358       <Type type="void"/>
4359       <ArgumentList/>
4360     </Operation>
4361     <Operation name="stop" id="::SpeechRecognition::stop">
4362       <webidl>        void stop();</webidl>
4363       <Type type="void"/>
4364       <ArgumentList/>
4365     </Operation>
4366     <Operation name="abort" id="::SpeechRecognition::abort">
4367       <webidl>        void abort();</webidl>
4368       <Type type="void"/>
4369       <ArgumentList/>
4370     </Operation>
4371     <Attribute name="onaudiostart" id="::SpeechRecognition::onaudiostart">
4372       <webidl>        attribute <ref>EventHandler</ref> onaudiostart;</webidl>
4373       <Type name="EventHandler"/>
4374     </Attribute>
4375     <Attribute name="onsoundstart" id="::SpeechRecognition::onsoundstart">
4376       <webidl>        attribute <ref>EventHandler</ref> onsoundstart;</webidl>
4377       <Type name="EventHandler"/>
4378     </Attribute>
4379     <Attribute name="onspeechstart" id="::SpeechRecognition::onspeechstart">
4380       <webidl>        attribute <ref>EventHandler</ref> onspeechstart;</webidl>
4381       <Type name="EventHandler"/>
4382     </Attribute>
4383     <Attribute name="onspeechend" id="::SpeechRecognition::onspeechend">
4384       <webidl>        attribute <ref>EventHandler</ref> onspeechend;</webidl>
4385       <Type name="EventHandler"/>
4386     </Attribute>
4387     <Attribute name="onsoundend" id="::SpeechRecognition::onsoundend">
4388       <webidl>        attribute <ref>EventHandler</ref> onsoundend;</webidl>
4389       <Type name="EventHandler"/>
4390     </Attribute>
4391     <Attribute name="onaudioend" id="::SpeechRecognition::onaudioend">
4392       <webidl>        attribute <ref>EventHandler</ref> onaudioend;</webidl>
4393       <Type name="EventHandler"/>
4394     </Attribute>
4395     <Attribute name="onresult" id="::SpeechRecognition::onresult">
4396       <webidl>        attribute <ref>EventHandler</ref> onresult;</webidl>
4397       <Type name="EventHandler"/>
4398     </Attribute>
4399     <Attribute name="onnomatch" id="::SpeechRecognition::onnomatch">
4400       <webidl>        attribute <ref>EventHandler</ref> onnomatch;</webidl>
4401       <Type name="EventHandler"/>
4402     </Attribute>
4403     <Attribute name="onerror" id="::SpeechRecognition::onerror">
4404       <webidl>        attribute <ref>EventHandler</ref> onerror;</webidl>
4405       <Type name="EventHandler"/>
4406     </Attribute>
4407     <Attribute name="onstart" id="::SpeechRecognition::onstart">
4408       <webidl>        attribute <ref>EventHandler</ref> onstart;</webidl>
4409       <Type name="EventHandler"/>
4410     </Attribute>
4411     <Attribute name="onend" id="::SpeechRecognition::onend">
4412       <webidl>        attribute <ref>EventHandler</ref> onend;</webidl>
4413       <Type name="EventHandler"/>
4414     </Attribute>
4415   </Interface>
4416   <Enum name="ErrorCode" id="::ErrorCode">
4417     <webidl>        enum ErrorCode {
4418           &quot;no-speech&quot;,
4419           &quot;aborted&quot;,
4420           &quot;audio-capture&quot;,
4421           &quot;network&quot;,
4422           &quot;not-allowed&quot;,
4423           &quot;service-not-allowed&quot;,
4424           &quot;bad-grammar&quot;,
4425           &quot;language-not-supported&quot;
4426         };</webidl>
4427     <EnumValue stringvalue="no-speech">
4428       <webidl>          &quot;no-speech</webidl>
4429     </EnumValue>
4430     <EnumValue stringvalue="aborted">
4431       <webidl>          &quot;aborted</webidl>
4432     </EnumValue>
4433     <EnumValue stringvalue="audio-capture">
4434       <webidl>          &quot;audio-capture</webidl>
4435     </EnumValue>
4436     <EnumValue stringvalue="network">
4437       <webidl>          &quot;network</webidl>
4438     </EnumValue>
4439     <EnumValue stringvalue="not-allowed">
4440       <webidl>          &quot;not-allowed</webidl>
4441     </EnumValue>
4442     <EnumValue stringvalue="service-not-allowed">
4443       <webidl>          &quot;service-not-allowed</webidl>
4444     </EnumValue>
4445     <EnumValue stringvalue="bad-grammar">
4446       <webidl>          &quot;bad-grammar</webidl>
4447     </EnumValue>
4448     <EnumValue stringvalue="language-not-supported">
4449       <webidl>          &quot;language-not-supported</webidl>
4450     </EnumValue>
4451   </Enum>
4452   <Interface name="SpeechRecognitionError" id="::SpeechRecognitionError">
4453     <webidl>    interface SpeechRecognitionError : <ref>Event</ref> {
4454         readonly attribute <ref>ErrorCode</ref> error;
4455         readonly attribute DOMString message;
4456     };</webidl>
4457     <InterfaceInheritance>
4458       <Name name="Event"/>
4459     </InterfaceInheritance>
4460     <Attribute readonly="readonly" name="error" id="::SpeechRecognitionError::error">
4461       <webidl>        readonly attribute <ref>ErrorCode</ref> error;</webidl>
4462       <Type name="ErrorCode"/>
4463     </Attribute>
4464     <Attribute readonly="readonly" name="message" id="::SpeechRecognitionError::message">
4465       <webidl>        readonly attribute DOMString message;</webidl>
4466       <Type type="DOMString"/>
4467     </Attribute>
4468   </Interface>
4469   <Interface name="SpeechRecognitionAlternative" id="::SpeechRecognitionAlternative">
4470     <webidl>    interface SpeechRecognitionAlternative {
4471         readonly attribute DOMString transcript;
4472         readonly attribute float confidence;
4473     };</webidl>
4474     <Attribute readonly="readonly" name="transcript" id="::SpeechRecognitionAlternative::transcript">
4475       <webidl>        readonly attribute DOMString transcript;</webidl>
4476       <Type type="DOMString"/>
4477     </Attribute>
4478     <Attribute readonly="readonly" name="confidence" id="::SpeechRecognitionAlternative::confidence">
4479       <webidl>        readonly attribute float confidence;</webidl>
4480       <Type type="float"/>
4481     </Attribute>
4482   </Interface>
4483   <Interface name="SpeechRecognitionResult" id="::SpeechRecognitionResult">
4484     <webidl>    interface SpeechRecognitionResult {
4485         readonly attribute unsigned long length;
4486         getter <ref>SpeechRecognitionAlternative</ref> item(unsigned long index);
4487         readonly attribute boolean final;
4488     };</webidl>
4489     <Attribute readonly="readonly" name="length" id="::SpeechRecognitionResult::length">
4490       <webidl>        readonly attribute unsigned long length;</webidl>
4491       <Type type="unsigned long"/>
4492     </Attribute>
4493     <Operation getter="getter" name="item" id="::SpeechRecognitionResult::item">
4494       <webidl>        getter <ref>SpeechRecognitionAlternative</ref> item(unsigned long index);</webidl>
4495       <Type name="SpeechRecognitionAlternative"/>
4496       <ArgumentList>
4497         <Argument name="index">
4498           <Type type="unsigned long"/>
4499         </Argument>
4500       </ArgumentList>
4501     </Operation>
4502     <Attribute readonly="readonly" name="final" id="::SpeechRecognitionResult::final">
4503       <webidl>        readonly attribute boolean final;</webidl>
4504       <Type type="boolean"/>
4505     </Attribute>
4506   </Interface>
4507   <Interface name="SpeechRecognitionResultList" id="::SpeechRecognitionResultList">
4508     <webidl>    interface SpeechRecognitionResultList {
4509         readonly attribute unsigned long length;
4510         getter <ref>SpeechRecognitionResult</ref> item(unsigned long index);
4511     };</webidl>
4512     <Attribute readonly="readonly" name="length" id="::SpeechRecognitionResultList::length">
4513       <webidl>        readonly attribute unsigned long length;</webidl>
4514       <Type type="unsigned long"/>
4515     </Attribute>
4516     <Operation getter="getter" name="item" id="::SpeechRecognitionResultList::item">
4517       <webidl>        getter <ref>SpeechRecognitionResult</ref> item(unsigned long index);</webidl>
4518       <Type name="SpeechRecognitionResult"/>
4519       <ArgumentList>
4520         <Argument name="index">
4521           <Type type="unsigned long"/>
4522         </Argument>
4523       </ArgumentList>
4524     </Operation>
4525   </Interface>
4526   <Interface name="SpeechRecognitionEvent" id="::SpeechRecognitionEvent">
4527     <webidl>    interface SpeechRecognitionEvent : <ref>Event</ref> {
4528         readonly attribute unsigned long resultIndex;
4529         readonly attribute <ref>SpeechRecognitionResultList</ref> results;
4530         readonly attribute any interpretation;
4531         readonly attribute <ref>Document</ref> emma;
4532     };</webidl>
4533     <InterfaceInheritance>
4534       <Name name="Event"/>
4535     </InterfaceInheritance>
4536     <Attribute readonly="readonly" name="resultIndex" id="::SpeechRecognitionEvent::resultIndex">
4537       <webidl>        readonly attribute unsigned long resultIndex;</webidl>
4538       <Type type="unsigned long"/>
4539     </Attribute>
4540     <Attribute readonly="readonly" name="results" id="::SpeechRecognitionEvent::results">
4541       <webidl>        readonly attribute <ref>SpeechRecognitionResultList</ref> results;</webidl>
4542       <Type name="SpeechRecognitionResultList"/>
4543     </Attribute>
4544     <Attribute readonly="readonly" name="interpretation" id="::SpeechRecognitionEvent::interpretation">
4545       <webidl>        readonly attribute any interpretation;</webidl>
4546       <Type type="any"/>
4547     </Attribute>
4548     <Attribute readonly="readonly" name="emma" id="::SpeechRecognitionEvent::emma">
4549       <webidl>        readonly attribute <ref>Document</ref> emma;</webidl>
4550       <Type name="Document"/>
4551     </Attribute>
4552   </Interface>
4553   <Interface name="SpeechGrammar" id="::SpeechGrammar">
4554     <webidl>    [Constructor]
4555     interface SpeechGrammar {
4556         attribute DOMString src;
4557         attribute float weight;
4558     };</webidl>
4559     <ExtendedAttributeList>
4560       <ExtendedAttribute name="Constructor">
4561         <webidl>Constructor</webidl>
4562       </ExtendedAttribute>
4563     </ExtendedAttributeList>
4564     <Attribute name="src" id="::SpeechGrammar::src">
4565       <webidl>        attribute DOMString src;</webidl>
4566       <Type type="DOMString"/>
4567     </Attribute>
4568     <Attribute name="weight" id="::SpeechGrammar::weight">
4569       <webidl>        attribute float weight;</webidl>
4570       <Type type="float"/>
4571     </Attribute>
4572   </Interface>
4573   <Interface name="SpeechGrammarList" id="::SpeechGrammarList">
4574     <webidl>    [Constructor]
4575     interface SpeechGrammarList {
4576         readonly attribute unsigned long length;
4577         getter <ref>SpeechGrammar</ref> item(unsigned long index);
4578         void addFromURI(DOMString src, optional float weight);
4579         void addFromString(DOMString string, optional float weight);
4580     };</webidl>
4581     <ExtendedAttributeList>
4582       <ExtendedAttribute name="Constructor">
4583         <webidl>Constructor</webidl>
4584       </ExtendedAttribute>
4585     </ExtendedAttributeList>
4586     <Attribute readonly="readonly" name="length" id="::SpeechGrammarList::length">
4587       <webidl>        readonly attribute unsigned long length;</webidl>
4588       <Type type="unsigned long"/>
4589     </Attribute>
4590     <Operation getter="getter" name="item" id="::SpeechGrammarList::item">
4591       <webidl>        getter <ref>SpeechGrammar</ref> item(unsigned long index);</webidl>
4592       <Type name="SpeechGrammar"/>
4593       <ArgumentList>
4594         <Argument name="index">
4595           <Type type="unsigned long"/>
4596         </Argument>
4597       </ArgumentList>
4598     </Operation>
4599     <Operation name="addFromURI" id="::SpeechGrammarList::addFromURI">
4600       <webidl>        void addFromURI(DOMString src, optional float weight);</webidl>
4601       <Type type="void"/>
4602       <ArgumentList>
4603         <Argument name="src">
4604           <Type type="DOMString"/>
4605         </Argument>
4606         <Argument optional="optional" name="weight">
4607           <Type type="float"/>
4608         </Argument>
4609       </ArgumentList>
4610     </Operation>
4611     <Operation name="addFromString" id="::SpeechGrammarList::addFromString">
4612       <webidl>        void addFromString(DOMString string, optional float weight);</webidl>
4613       <Type type="void"/>
4614       <ArgumentList>
4615         <Argument name="string">
4616           <Type type="DOMString"/>
4617         </Argument>
4618         <Argument optional="optional" name="weight">
4619           <Type type="float"/>
4620         </Argument>
4621       </ArgumentList>
4622     </Operation>
4623   </Interface>
4624 </Module>
4625 <Module name="MediaServer" id="::MediaServer">
4626     <webidl>module MediaServer {
4627
4628
4629
4630 partial interface Navigator   {
4631          readonly attribute <ref>MediaServerManager</ref> mediaserver;
4632 };
4633
4634
4635
4636 [NoInterfaceObject]
4637 interface MediaServerManager  {
4638
4639         <ref>scanNetwork</ref>(<ref>MediaServerFoundServerCallback</ref> successCallback, optional <ref>MediaServerErrorCallback</ref> errorCallback);
4640 };
4641
4642
4643
4644 [NoInterfaceObject]
4645 interface MediaServer  {
4646
4647          readonly attribute DOMString id;
4648
4649          readonly attribute DOMString friendlyName;
4650
4651          readonly attribute object root;
4652
4653         <ref>browse</ref>(DOMString containerId, DOMString sortMode, unsigned long count, unsigned long offset, <ref>MediaServerBrowseFindCallback</ref> successCallback, optional <ref>MediaServerErrorCallback</ref> errorCallback);
4654
4655         <ref>find</ref>(DOMString containerId, DOMString searchFilter, DOMString sortMode, unsigned long count, unsigned long offset, <ref>MediaServerBrowseFindCallback</ref> successCallback, optional <ref>MediaServerErrorCallback</ref> errorCallback);
4656 };
4657
4658
4659
4660 [NoInterfaceObject]
4661 interface MediaServerError   {
4662         const unsigned short GENERIC = 1;
4663
4664          attribute unsigned short code;
4665
4666          attribute DOMString message;
4667 };
4668
4669
4670
4671 callback MediaServerFoundServerCallback = void (<ref>MediaServer</ref> value);
4672
4673 callback MediaServerBrowseFindCallback = void (sequence&lt;object> value);
4674
4675 callback MediaServerErrorCallback = void (<ref>MediaServerError</ref> error);
4676
4677 };</webidl>
4678     <descriptive>
4679        <description>
4680         <p>
4681 Details.
4682         </p>
4683        </description>
4684         <def-api-feature identifier="http://tizen.org/api/mediaserver">
4685           <descriptive>
4686             <brief>
4687  Allows access to the mediaserver API
4688             </brief>
4689           </descriptive>
4690         </def-api-feature>
4691     </descriptive>
4692     <Interface name="Navigator" partial="partial" id="::MediaServer::Navigator">
4693       <webidl>partial interface Navigator   {
4694          readonly attribute <ref>MediaServerManager</ref> mediaserver;
4695 };</webidl>
4696       <Attribute readonly="readonly" name="mediaserver" id="::MediaServer::Navigator::mediaserver">
4697         <webidl>         readonly attribute <ref>MediaServerManager</ref> mediaserver;</webidl>
4698         <Type name="MediaServerManager"/>
4699       </Attribute>
4700     </Interface>
4701     <Interface name="MediaServerManager" id="::MediaServer::MediaServerManager">
4702       <webidl>[NoInterfaceObject]
4703 interface MediaServerManager  {
4704
4705         <ref>scanNetwork</ref>(<ref>MediaServerFoundServerCallback</ref> successCallback, optional <ref>MediaServerErrorCallback</ref> errorCallback);
4706 };</webidl>
4707       <ExtendedAttributeList>
4708         <ExtendedAttribute name="NoInterfaceObject">
4709           <webidl>NoInterfaceObject</webidl>
4710         </ExtendedAttribute>
4711       </ExtendedAttributeList>
4712       <Operation>
4713         <webidl>        <ref>scanNetwork</ref>(<ref>MediaServerFoundServerCallback</ref> successCallback, optional <ref>MediaServerErrorCallback</ref> errorCallback);</webidl>
4714         <descriptive>
4715             <brief>
4716  Scans local network for MediaServers.
4717             </brief>
4718         </descriptive>
4719         <Type name="scanNetwork"/>
4720         <ArgumentList>
4721           <Argument name="successCallback">
4722             <descriptive>
4723                 <description><p>
4724  callback invoqued for each MediaServer discovered.
4725                 </p></description>
4726             </descriptive>
4727             <Type name="MediaServerFoundServerCallback"/>
4728           </Argument>
4729           <Argument optional="optional" name="errorCallback">
4730             <descriptive>
4731                 <description><p>
4732                 </p></description>
4733             </descriptive>
4734             <Type name="MediaServerErrorCallback"/>
4735           </Argument>
4736         </ArgumentList>
4737       </Operation>
4738     </Interface>
4739     <Interface name="MediaServer" id="::MediaServer::MediaServer">
4740       <webidl>[NoInterfaceObject]
4741 interface MediaServer  {
4742
4743          readonly attribute DOMString id;
4744
4745          readonly attribute DOMString friendlyName;
4746
4747          readonly attribute object root;
4748
4749         <ref>browse</ref>(DOMString containerId, DOMString sortMode, unsigned long count, unsigned long offset, <ref>MediaServerBrowseFindCallback</ref> successCallback, optional <ref>MediaServerErrorCallback</ref> errorCallback);
4750
4751         <ref>find</ref>(DOMString containerId, DOMString searchFilter, DOMString sortMode, unsigned long count, unsigned long offset, <ref>MediaServerBrowseFindCallback</ref> successCallback, optional <ref>MediaServerErrorCallback</ref> errorCallback);
4752 };</webidl>
4753       <ExtendedAttributeList>
4754         <ExtendedAttribute name="NoInterfaceObject">
4755           <webidl>NoInterfaceObject</webidl>
4756         </ExtendedAttribute>
4757       </ExtendedAttributeList>
4758       <Attribute readonly="readonly" name="id" id="::MediaServer::MediaServer::id">
4759         <webidl>         readonly attribute DOMString id;</webidl>
4760         <descriptive>
4761            <description>
4762             <p>
4763 id
4764             </p>
4765            </description>
4766             <brief>
4767  An opaque unique ID.
4768             </brief>
4769         </descriptive>
4770         <Type type="DOMString"/>
4771       </Attribute>
4772       <Attribute readonly="readonly" name="friendlyName" id="::MediaServer::MediaServer::friendlyName">
4773         <webidl>         readonly attribute DOMString friendlyName;</webidl>
4774         <descriptive>
4775            <description>
4776             <p>
4777 friendlyName
4778             </p>
4779            </description>
4780             <brief>
4781  A user-friendly name for the device.
4782             </brief>
4783         </descriptive>
4784         <Type type="DOMString"/>
4785       </Attribute>
4786       <Attribute readonly="readonly" name="root" id="::MediaServer::MediaServer::root">
4787         <webidl>         readonly attribute object root;</webidl>
4788         <descriptive>
4789            <description>
4790             <p>
4791 root
4792             </p>
4793            </description>
4794             <brief>
4795  Media Server root folder.
4796             </brief>
4797         </descriptive>
4798         <Type type="object"/>
4799       </Attribute>
4800       <Operation>
4801         <webidl>        <ref>browse</ref>(DOMString containerId, DOMString sortMode, unsigned long count, unsigned long offset, <ref>MediaServerBrowseFindCallback</ref> successCallback, optional <ref>MediaServerErrorCallback</ref> errorCallback);</webidl>
4802         <descriptive>
4803             <brief>
4804  Browses for media item under a given MediaContainer.
4805             </brief>
4806         </descriptive>
4807         <Type name="browse"/>
4808         <ArgumentList>
4809           <Argument name="containerId">
4810             <descriptive>
4811                 <description><p>
4812                 </p></description>
4813             </descriptive>
4814             <Type type="DOMString"/>
4815           </Argument>
4816           <Argument name="sortMode">
4817             <descriptive>
4818                 <description><p>
4819                 </p></description>
4820             </descriptive>
4821             <Type type="DOMString"/>
4822           </Argument>
4823           <Argument name="count">
4824             <descriptive>
4825                 <description><p>
4826                 </p></description>
4827             </descriptive>
4828             <Type type="unsigned long"/>
4829           </Argument>
4830           <Argument name="offset">
4831             <descriptive>
4832                 <description><p>
4833                 </p></description>
4834             </descriptive>
4835             <Type type="unsigned long"/>
4836           </Argument>
4837           <Argument name="successCallback">
4838             <descriptive>
4839                 <description><p>
4840                 </p></description>
4841             </descriptive>
4842             <Type name="MediaServerBrowseFindCallback"/>
4843           </Argument>
4844           <Argument optional="optional" name="errorCallback">
4845             <descriptive>
4846                 <description><p>
4847                 </p></description>
4848             </descriptive>
4849             <Type name="MediaServerErrorCallback"/>
4850           </Argument>
4851         </ArgumentList>
4852       </Operation>
4853       <Operation>
4854         <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>
4855         <descriptive>
4856             <brief>
4857  Searches for media item under a given MediaContainer.
4858             </brief>
4859         </descriptive>
4860         <Type name="find"/>
4861         <ArgumentList>
4862           <Argument name="containerId">
4863             <descriptive>
4864                 <description><p>
4865                 </p></description>
4866             </descriptive>
4867             <Type type="DOMString"/>
4868           </Argument>
4869           <Argument name="searchFilter">
4870             <descriptive>
4871                 <description><p>
4872                 </p></description>
4873             </descriptive>
4874             <Type type="DOMString"/>
4875           </Argument>
4876           <Argument name="sortMode">
4877             <descriptive>
4878                 <description><p>
4879                 </p></description>
4880             </descriptive>
4881             <Type type="DOMString"/>
4882           </Argument>
4883           <Argument name="count">
4884             <descriptive>
4885                 <description><p>
4886                 </p></description>
4887             </descriptive>
4888             <Type type="unsigned long"/>
4889           </Argument>
4890           <Argument name="offset">
4891             <descriptive>
4892                 <description><p>
4893                 </p></description>
4894             </descriptive>
4895             <Type type="unsigned long"/>
4896           </Argument>
4897           <Argument name="successCallback">
4898             <descriptive>
4899                 <description><p>
4900                 </p></description>
4901             </descriptive>
4902             <Type name="MediaServerBrowseFindCallback"/>
4903           </Argument>
4904           <Argument optional="optional" name="errorCallback">
4905             <descriptive>
4906                 <description><p>
4907                 </p></description>
4908             </descriptive>
4909             <Type name="MediaServerErrorCallback"/>
4910           </Argument>
4911         </ArgumentList>
4912       </Operation>
4913     </Interface>
4914     <Interface name="MediaServerError" id="::MediaServer::MediaServerError">
4915       <webidl>[NoInterfaceObject]
4916 interface MediaServerError   {
4917         const unsigned short GENERIC = 1;
4918
4919          attribute unsigned short code;
4920
4921          attribute DOMString message;
4922 };</webidl>
4923       <ExtendedAttributeList>
4924         <ExtendedAttribute name="NoInterfaceObject">
4925           <webidl>NoInterfaceObject</webidl>
4926         </ExtendedAttribute>
4927       </ExtendedAttributeList>
4928       <Const name="GENERIC" value="1" id="::MediaServer::MediaServerError::GENERIC">
4929         <webidl>        const unsigned short GENERIC = 1;</webidl>
4930         <Type type="unsigned short"/>
4931       </Const>
4932       <Attribute name="code" id="::MediaServer::MediaServerError::code">
4933         <webidl>         attribute unsigned short code;</webidl>
4934         <descriptive>
4935            <description>
4936             <p>
4937 code
4938 MUST return error code.
4939             </p>
4940            </description>
4941         </descriptive>
4942         <Type type="unsigned short"/>
4943       </Attribute>
4944       <Attribute name="message" id="::MediaServer::MediaServerError::message">
4945         <webidl>         attribute DOMString message;</webidl>
4946         <descriptive>
4947            <description>
4948             <p>
4949 message
4950 MUST return error message
4951             </p>
4952            </description>
4953         </descriptive>
4954         <Type type="DOMString"/>
4955       </Attribute>
4956     </Interface>
4957     <Callback name="MediaServerFoundServerCallback" id="::MediaServer::MediaServerFoundServerCallback">
4958       <webidl>callback MediaServerFoundServerCallback = void (<ref>MediaServer</ref> value);</webidl>
4959       <Type type="void"/>
4960       <ArgumentList>
4961         <Argument name="value">
4962           <Type name="MediaServer"/>
4963         </Argument>
4964       </ArgumentList>
4965     </Callback>
4966     <Callback name="MediaServerBrowseFindCallback" id="::MediaServer::MediaServerBrowseFindCallback">
4967       <webidl>callback MediaServerBrowseFindCallback = void (sequence&lt;object> value);</webidl>
4968       <Type type="void"/>
4969       <ArgumentList>
4970         <Argument name="value">
4971           <Type type="sequence">
4972             <Type type="object"/>
4973           </Type>
4974         </Argument>
4975       </ArgumentList>
4976     </Callback>
4977     <Callback name="MediaServerErrorCallback" id="::MediaServer::MediaServerErrorCallback">
4978       <webidl>callback MediaServerErrorCallback = void (<ref>MediaServerError</ref> error);</webidl>
4979       <Type type="void"/>
4980       <ArgumentList>
4981         <Argument name="error">
4982           <Type name="MediaServerError"/>
4983         </Argument>
4984       </ArgumentList>
4985     </Callback>
4986   </Module>
4987   <Module name="Alarm" id="::Alarm">
4988     <webidl>module Alarm {&#13;
4989 &#13;
4990     typedef DOMString AlarmId;&#13;
4991 &#13;
4992 &#13;
4993 &#13;
4994     [NoInterfaceObject] interface AlarmManagerObject {&#13;
4995         readonly attribute <ref>AlarmManager</ref> alarm;&#13;
4996     };&#13;
4997     <ref>Tizen</ref> implements <ref>AlarmManagerObject</ref>;&#13;
4998 &#13;
4999 &#13;
5000     [NoInterfaceObject] interface AlarmManager {&#13;
5001 &#13;
5002         const long PERIOD_MINUTE = 60;&#13;
5003         &#13;
5004 &#13;
5005         const long PERIOD_HOUR = 3600;&#13;
5006          &#13;
5007 &#13;
5008         const long PERIOD_DAY = 86400;&#13;
5009         &#13;
5010 &#13;
5011         const long PERIOD_WEEK = 604800;&#13;
5012 &#13;
5013 &#13;
5014         void add(<ref>Alarm</ref> alarm, <ref>ApplicationId</ref> applicationId, optional <ref>ApplicationControl</ref>? appControl) raises(<ref>WebAPIException</ref>);&#13;
5015 &#13;
5016 &#13;
5017         void remove(<ref>AlarmId</ref> id) raises(<ref>WebAPIException</ref>);&#13;
5018 &#13;
5019 &#13;
5020         void removeAll() raises(<ref>WebAPIException</ref>);&#13;
5021 &#13;
5022 &#13;
5023         <ref>Alarm</ref> get(<ref>AlarmId</ref> id) raises(<ref>WebAPIException</ref>);&#13;
5024 &#13;
5025 &#13;
5026         <ref>Alarm</ref>[] getAll() raises(<ref>WebAPIException</ref>);&#13;
5027     };&#13;
5028 &#13;
5029 &#13;
5030     [NoInterfaceObject] interface Alarm {&#13;
5031 &#13;
5032         readonly attribute <ref>AlarmId</ref>? id;&#13;
5033     };&#13;
5034  &#13;
5035     [Constructor(long delay, optional long? period)]&#13;
5036 &#13;
5037     interface AlarmRelative : <ref>Alarm</ref> {&#13;
5038 &#13;
5039         readonly attribute long delay;&#13;
5040         &#13;
5041 &#13;
5042         readonly attribute long? period;&#13;
5043 &#13;
5044 &#13;
5045         long? getRemainingSeconds() raises(<ref>WebAPIException</ref>);&#13;
5046     };&#13;
5047 &#13;
5048     [Constructor(Date date),&#13;
5049 &#13;
5050      Constructor(Date date, <ref>ByDayValue</ref>[] daysOfTheWeek),&#13;
5051 &#13;
5052      Constructor(Date date, long period)]&#13;
5053 &#13;
5054     interface AlarmAbsolute : <ref>Alarm</ref> {&#13;
5055 &#13;
5056         readonly attribute Date date;&#13;
5057 &#13;
5058 &#13;
5059         readonly attribute long? period;&#13;
5060 &#13;
5061 &#13;
5062         readonly attribute <ref>ByDayValue</ref>[] daysOfTheWeek;&#13;
5063 &#13;
5064 &#13;
5065         Date? getNextScheduledDate() raises(<ref>WebAPIException</ref>);&#13;
5066     };&#13;
5067 };</webidl>
5068     <descriptive>
5069         <brief>
5070  This API provides the functionality for scheduling the system alarm. 
5071 It allows you to run other applications and have them perform operations at the specific time. 
5072 You can schedule an alarm to go off once or to repeat at specific intervals. 
5073         </brief>
5074        <description>
5075         <p>
5076 Each application has its own individual alarm storage, that is, applications cannot view or edit alarms set by other applications.
5077         </p>
5078         <p>
5079 Once an alarm goes off, it will be removed from the alarm storage automatically.
5080 <em>AlarmManager</em> provides methods to manage alarms such as adding and removing. 
5081 For more information on the Alarm features, see <a href="../../org.tizen.web.appprogramming/html/guide/app_guide/alarm.htm">Alarm Guide</a>.
5082         </p>
5083        </description>
5084         <version>
5085  1.0
5086         </version>
5087     </descriptive>
5088     <Typedef name="AlarmId" id="::Alarm::AlarmId">
5089       <webidl>    typedef DOMString AlarmId;</webidl>
5090       <descriptive>
5091           <brief>
5092  An alarm identifier.
5093           </brief>
5094           <version>
5095  1.0
5096           </version>
5097       </descriptive>
5098       <Type type="DOMString"/>
5099     </Typedef>
5100     <Interface name="AlarmManagerObject" id="::Alarm::AlarmManagerObject">
5101       <webidl>    [NoInterfaceObject] interface AlarmManagerObject {&#13;
5102         readonly attribute <ref>AlarmManager</ref> alarm;&#13;
5103     };</webidl>
5104       <descriptive>
5105           <brief>
5106  This interface defines what is instantiated by the <em>Tizen </em>object from the Tizen Platform.
5107 There will be a <em>tizen.alarm </em>object that allows access to the functionality of the Alarm API.
5108           </brief>
5109           <version>
5110  1.0
5111           </version>
5112       </descriptive>
5113       <ExtendedAttributeList>
5114         <ExtendedAttribute name="NoInterfaceObject">
5115           <webidl>NoInterfaceObject</webidl>
5116         </ExtendedAttribute>
5117       </ExtendedAttributeList>
5118       <Attribute readonly="readonly" name="alarm" id="::Alarm::AlarmManagerObject::alarm">
5119         <webidl>        readonly attribute <ref>AlarmManager</ref> alarm;</webidl>
5120         <Type name="AlarmManager"/>
5121       </Attribute>
5122     </Interface>
5123     <Implements name1="Tizen" name2="AlarmManagerObject">
5124       <webidl>    <ref>Tizen</ref> implements <ref>AlarmManagerObject</ref>;</webidl>
5125     </Implements>
5126     <Interface name="AlarmManager" id="::Alarm::AlarmManager">
5127       <webidl>    [NoInterfaceObject] interface AlarmManager {&#13;
5128 &#13;
5129         const long PERIOD_MINUTE = 60;&#13;
5130         &#13;
5131 &#13;
5132         const long PERIOD_HOUR = 3600;&#13;
5133          &#13;
5134 &#13;
5135         const long PERIOD_DAY = 86400;&#13;
5136         &#13;
5137 &#13;
5138         const long PERIOD_WEEK = 604800;&#13;
5139 &#13;
5140 &#13;
5141         void add(<ref>Alarm</ref> alarm, <ref>ApplicationId</ref> applicationId, optional <ref>ApplicationControl</ref>? appControl) raises(<ref>WebAPIException</ref>);&#13;
5142 &#13;
5143 &#13;
5144         void remove(<ref>AlarmId</ref> id) raises(<ref>WebAPIException</ref>);&#13;
5145 &#13;
5146 &#13;
5147         void removeAll() raises(<ref>WebAPIException</ref>);&#13;
5148 &#13;
5149 &#13;
5150         <ref>Alarm</ref> get(<ref>AlarmId</ref> id) raises(<ref>WebAPIException</ref>);&#13;
5151 &#13;
5152 &#13;
5153         <ref>Alarm</ref>[] getAll() raises(<ref>WebAPIException</ref>);&#13;
5154     };</webidl>
5155       <descriptive>
5156           <brief>
5157  This interface provides methods to manage alarms.
5158           </brief>
5159           <version>
5160  1.0
5161           </version>
5162       </descriptive>
5163       <ExtendedAttributeList>
5164         <ExtendedAttribute name="NoInterfaceObject">
5165           <webidl>NoInterfaceObject</webidl>
5166         </ExtendedAttribute>
5167       </ExtendedAttributeList>
5168       <Const name="PERIOD_MINUTE" value="60" id="::Alarm::AlarmManager::PERIOD_MINUTE">
5169         <webidl>        const long PERIOD_MINUTE = 60;</webidl>
5170         <descriptive>
5171             <brief>
5172  The period of a minute.
5173 It defines the number of seconds per minute.
5174             </brief>
5175             <version>
5176  1.0
5177             </version>
5178         </descriptive>
5179         <Type type="long"/>
5180       </Const>
5181       <Const name="PERIOD_HOUR" value="3600" id="::Alarm::AlarmManager::PERIOD_HOUR">
5182         <webidl>        const long PERIOD_HOUR = 3600;</webidl>
5183         <descriptive>
5184             <brief>
5185  The period of an hour.
5186 It defines the number of seconds per hour.
5187             </brief>
5188             <version>
5189  1.0
5190             </version>
5191         </descriptive>
5192         <Type type="long"/>
5193       </Const>
5194       <Const name="PERIOD_DAY" value="86400" id="::Alarm::AlarmManager::PERIOD_DAY">
5195         <webidl>        const long PERIOD_DAY = 86400;</webidl>
5196         <descriptive>
5197             <brief>
5198  The period of a day.
5199 It defines the number of seconds per day.
5200             </brief>
5201             <version>
5202  1.0
5203             </version>
5204         </descriptive>
5205         <Type type="long"/>
5206       </Const>
5207       <Const name="PERIOD_WEEK" value="604800" id="::Alarm::AlarmManager::PERIOD_WEEK">
5208         <webidl>        const long PERIOD_WEEK = 604800;</webidl>
5209         <descriptive>
5210             <brief>
5211  The period of a week.
5212 It defines the number of seconds in a week.
5213             </brief>
5214             <version>
5215  1.0
5216             </version>
5217         </descriptive>
5218         <Type type="long"/>
5219       </Const>
5220       <Operation name="add" id="::Alarm::AlarmManager::add">
5221         <webidl>        void add(<ref>Alarm</ref> alarm, <ref>ApplicationId</ref> applicationId, optional <ref>ApplicationControl</ref>? appControl) raises(<ref>WebAPIException</ref>);</webidl>
5222         <descriptive>
5223             <brief>
5224  Adds an alarm to the storage.
5225             </brief>
5226            <description>
5227             <p>
5228 Set an alarm with the application ID to be run. You should definitely provide the application ID to run 
5229 and the <a href=" ../../org.tizen.web.appprogramming/html/guide/app_guide/application_service.htm">application control </a>information if it is necessary. 
5230 For more information about the application contorl, see <a href="../../org.tizen.web.device.apireference/tizen/application.html">The Application API</a>.
5231             </p>
5232            </description>
5233             <version>
5234  1.0
5235             </version>
5236             <privilegelevel>
5237  public
5238             </privilegelevel>
5239             <privilege>
5240  http://tizen.org/privilege/alarm
5241             </privilege>
5242             <Code> // Triggers an alarm on a given date/time
5243  var alarm = new tizen.AlarmAbsolute(new Date(2014, 10, 4, 8, 0));
5244  var appControl = new tizen.ApplicationControl(&quot;http://tizen.org/appcontrol/operation/view&quot;);
5245  tizen.alarm.add(alarm, tizen.application.getCurrentApplication().appInfo.id, appControl);
5246  console.log(&quot;Alarm added with id: &quot; + alarm.id);
5247  </Code>
5248         </descriptive>
5249         <Type type="void"/>
5250         <ArgumentList>
5251           <Argument name="alarm">
5252             <descriptive>
5253                 <description><p>
5254  An alarm to add. It can be either <em>AlarmRelative </em> or <em>AlarmAbsolute</em>.
5255                 </p></description>
5256             </descriptive>
5257             <Type name="Alarm"/>
5258           </Argument>
5259           <Argument name="applicationId">
5260             <descriptive>
5261                 <description><p>
5262  The application ID to run when the alarm is triggered.
5263                 </p></description>
5264             </descriptive>
5265             <Type name="ApplicationId"/>
5266           </Argument>
5267           <Argument optional="optional" name="appControl">
5268             <descriptive>
5269                 <description><p>
5270  The data structure describing application control details.
5271                 </p></description>
5272             </descriptive>
5273             <Type name="ApplicationControl" nullable="nullable"/>
5274           </Argument>
5275         </ArgumentList>
5276         <Raises>
5277           <RaiseException name="WebAPIException">
5278             <descriptive>
5279                 <description><p>
5280  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
5281                 </p></description>
5282                 <description><p>
5283  with error type InvalidValuesError, if any input parameter does not contain a valid value.
5284                 </p></description>
5285                 <description><p>
5286  with error type SecurityError, if the application does not have the privilege to call this method.
5287                 </p></description>
5288                 <description><p>
5289  with error type UnknownError, if any other error occurs.
5290                 </p></description>
5291             </descriptive>
5292           </RaiseException>
5293         </Raises>
5294       </Operation>
5295       <Operation name="remove" id="::Alarm::AlarmManager::remove">
5296         <webidl>        void remove(<ref>AlarmId</ref> id) raises(<ref>WebAPIException</ref>);</webidl>
5297         <descriptive>
5298             <brief>
5299  Removes an alarm from the storage.
5300             </brief>
5301            <description>
5302             <p>
5303 If an alarm goes off, it will be removed from the storage automatically.
5304             </p>
5305            </description>
5306             <version>
5307  1.0
5308             </version>
5309             <privilegelevel>
5310  public
5311             </privilegelevel>
5312             <privilege>
5313  http://tizen.org/privilege/alarm
5314             </privilege>
5315             <Code> var alarms = tizen.alarm.getAll();
5316
5317  // Removes the first alarm
5318  if (alarms.length > 0) {
5319    try {
5320      tizen.alarm.remove(alarms[0].id);
5321      console.log(&quot;Successfully removed the first alarm.&quot;);
5322    } catch(error) {
5323      console.log(&quot;Failed to remove the first alarm.&quot;);
5324    }
5325  }
5326  </Code>
5327         </descriptive>
5328         <Type type="void"/>
5329         <ArgumentList>
5330           <Argument name="id">
5331             <descriptive>
5332                 <description><p>
5333  The ID of the alarm to remove
5334                 </p></description>
5335             </descriptive>
5336             <Type name="AlarmId"/>
5337           </Argument>
5338         </ArgumentList>
5339         <Raises>
5340           <RaiseException name="WebAPIException">
5341             <descriptive>
5342                 <description><p>
5343  with error type NotFoundError, if this alarm identifier cannot be found in the storage.
5344                 </p></description>
5345                 <description><p>
5346  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
5347                 </p></description>
5348                 <description><p>
5349  with error type InvalidValuesError, if any input parameter does not contain a valid value.
5350                 </p></description>
5351                 <description><p>
5352  with error type SecurityError, if the application does not have the privilege to call this method.
5353                 </p></description>
5354                 <description><p>
5355  with error type UnknownError, if the method cannot be completed because of an unknown error.
5356                 </p></description>
5357             </descriptive>
5358           </RaiseException>
5359         </Raises>
5360       </Operation>
5361       <Operation name="removeAll" id="::Alarm::AlarmManager::removeAll">
5362         <webidl>        void removeAll() raises(<ref>WebAPIException</ref>);</webidl>
5363         <descriptive>
5364             <brief>
5365  Removes all alarms added by an application.
5366             </brief>
5367            <description>
5368             <p>
5369 Because each application has its own alarm storage, this method removes alarms only added by the calling application.
5370             </p>
5371            </description>
5372             <version>
5373  1.0
5374             </version>
5375             <privilegelevel>
5376  public
5377             </privilegelevel>
5378             <privilege>
5379  http://tizen.org/privilege/alarm
5380             </privilege>
5381             <Code> tizen.alarm.removeAll();
5382  console.log(&quot;remove all registered alarms in the storage.&quot;);
5383  </Code>
5384         </descriptive>
5385         <Type type="void"/>
5386         <ArgumentList/>
5387         <Raises>
5388           <RaiseException name="WebAPIException">
5389             <descriptive>
5390                 <description><p>
5391  with error type SecurityError, if the application does not have the privilege to call this method.
5392                 </p></description>
5393                 <description><p>
5394  with error type UnknownError, if the method cannot be completed because of an unknown error.
5395                 </p></description>
5396             </descriptive>
5397           </RaiseException>
5398         </Raises>
5399       </Operation>
5400       <Operation name="get" id="::Alarm::AlarmManager::get">
5401         <webidl>        <ref>Alarm</ref> get(<ref>AlarmId</ref> id) raises(<ref>WebAPIException</ref>);</webidl>
5402         <descriptive>
5403             <brief>
5404  Returns an alarm as per the specified identifier.
5405             </brief>
5406             <version>
5407  1.0
5408             </version>
5409             <Code> // Sets an alarm
5410  var date = new Date();
5411  date.setHours(date.getHours()+1);
5412  var abs_alarm = new tizen.AlarmAbsolute(date);
5413
5414  // Adds an alarm
5415  tizen.alarm.add(abs_alarm, tizen.application.getCurrentApplication().appInfo.id);
5416
5417  // Gets an alarm
5418  var alarm = tizen.alarm.get(abs_alarm.id);
5419  console.log(&quot;The alarm will trigger at &quot; + alarm.getNextScheduledDate());
5420  </Code>
5421         </descriptive>
5422         <Type name="Alarm">
5423           <descriptive>
5424               <description><p>
5425  Alarm An alarm object with the specified ID.
5426               </p></description>
5427           </descriptive>
5428         </Type>
5429         <ArgumentList>
5430           <Argument name="id">
5431             <descriptive>
5432                 <description><p>
5433  The alarm ID to retrieve.
5434                 </p></description>
5435             </descriptive>
5436             <Type name="AlarmId"/>
5437           </Argument>
5438         </ArgumentList>
5439         <Raises>
5440           <RaiseException name="WebAPIException">
5441             <descriptive>
5442                 <description><p>
5443  with error type NotFoundError, if this alarm identifier cannot be found in the storage.
5444                 </p></description>
5445                 <description><p>
5446  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
5447                 </p></description>
5448                 <description><p>
5449  with error type InvalidValuesError, if any input parameter does not contain a valid value.
5450                 </p></description>
5451                 <description><p>
5452  with error type UnknownError, if the method cannot be completed because of an unknown error.
5453                 </p></description>
5454             </descriptive>
5455           </RaiseException>
5456         </Raises>
5457       </Operation>
5458       <Operation name="getAll" id="::Alarm::AlarmManager::getAll">
5459         <webidl>        <ref>Alarm</ref>[] getAll() raises(<ref>WebAPIException</ref>);</webidl>
5460         <descriptive>
5461             <brief>
5462  Retrieves all alarms in an application storage.. 
5463             </brief>
5464            <description>
5465             <p>
5466 Alarms that have already been triggered are removed automatically from the storage.
5467             </p>
5468            </description>
5469             <version>
5470  1.0
5471             </version>
5472             <Code> var alarms = tizen.alarm.getAll();
5473  console.log(alarms.length + &quot; alarms present in the storage.&quot;);
5474  </Code>
5475         </descriptive>
5476         <Type type="array">
5477           <descriptive>
5478               <description><p>
5479  Alarm[] All Alarm objects.
5480               </p></description>
5481           </descriptive>
5482           <Type name="Alarm"/>
5483         </Type>
5484         <ArgumentList/>
5485         <Raises>
5486           <RaiseException name="WebAPIException">
5487             <descriptive>
5488                 <description><p>
5489  with error type UnknownError, if the method cannot be completed because of an unknown error.
5490                 </p></description>
5491             </descriptive>
5492           </RaiseException>
5493         </Raises>
5494       </Operation>
5495     </Interface>
5496     <Interface name="Alarm" id="::Alarm::Alarm">
5497       <webidl>    [NoInterfaceObject] interface Alarm {&#13;
5498 &#13;
5499         readonly attribute <ref>AlarmId</ref>? id;&#13;
5500     };</webidl>
5501       <descriptive>
5502           <brief>
5503  This interface is an abstract interface for alarm types.
5504           </brief>
5505           <version>
5506  1.0
5507           </version>
5508       </descriptive>
5509       <ExtendedAttributeList>
5510         <ExtendedAttribute name="NoInterfaceObject">
5511           <webidl>NoInterfaceObject</webidl>
5512         </ExtendedAttribute>
5513       </ExtendedAttributeList>
5514       <Attribute readonly="readonly" name="id" id="::Alarm::Alarm::id">
5515         <webidl>        readonly attribute <ref>AlarmId</ref>? id;</webidl>
5516         <descriptive>
5517             <brief>
5518  The alarm identifier.
5519             </brief>
5520             <version>
5521  1.0
5522             </version>
5523         </descriptive>
5524         <Type name="AlarmId" nullable="nullable"/>
5525       </Attribute>
5526     </Interface>
5527     <Interface name="AlarmRelative" id="::Alarm::AlarmRelative">
5528       <webidl>    [Constructor(long delay, optional long? period)]&#13;
5529 &#13;
5530     interface AlarmRelative : <ref>Alarm</ref> {&#13;
5531 &#13;
5532         readonly attribute long delay;&#13;
5533         &#13;
5534 &#13;
5535         readonly attribute long? period;&#13;
5536 &#13;
5537 &#13;
5538         long? getRemainingSeconds() raises(<ref>WebAPIException</ref>);&#13;
5539     };</webidl>
5540       <descriptive>
5541           <brief>
5542  This interface provides the relative alarm, which occurs at a fixed interval in future.
5543           </brief>
5544          <description>
5545           <p>
5546 This alarm triggers after a duration mentioned in <em>delay</em> attribute from the moment the alarm is added. 
5547 If a <em>period</em> is provided, the alarm keeps triggering for the given interval.
5548           </p>
5549          </description>
5550           <version>
5551  1.0
5552           </version>
5553           <Code> // Gets the current application id.
5554  var appId = tizen.application.getCurrentApplication().appInfo.id;
5555
5556  // Sets an alarm in 3 hours from now
5557  var alarm1 = new tizen.AlarmRelative(3 * tizen.alarm.PERIOD_HOUR);
5558  tizen.alarm.add(alarm1, appId);
5559
5560  // Sets an alarm in one hour, recurring after every 2 minutes
5561  var alarm2 = new tizen.AlarmRelative(tizen.alarm.PERIOD_HOUR, 2 * tizen.alarm.PERIOD_MINUTE);
5562  tizen.alarm.add(alarm2, appId);
5563  </Code>
5564       </descriptive>
5565       <ExtendedAttributeList>
5566         <ExtendedAttribute name="Constructor">
5567           <webidl>Constructor(long delay, optional long? period)</webidl>
5568           <ArgumentList>
5569             <Argument name="delay">
5570               <Type type="long"/>
5571             </Argument>
5572             <Argument optional="optional" name="period">
5573               <Type type="long" nullable="nullable"/>
5574             </Argument>
5575           </ArgumentList>
5576         </ExtendedAttribute>
5577       </ExtendedAttributeList>
5578       <InterfaceInheritance>
5579         <Name name="Alarm"/>
5580       </InterfaceInheritance>
5581       <Attribute readonly="readonly" name="delay" id="::Alarm::AlarmRelative::delay">
5582         <webidl>        readonly attribute long delay;</webidl>
5583         <descriptive>
5584             <brief>
5585  An attribute to store the difference in time (in seconds) between when an alarm is added and it is triggered.
5586             </brief>
5587             <version>
5588  1.0
5589             </version>
5590         </descriptive>
5591         <Type type="long"/>
5592       </Attribute>
5593       <Attribute readonly="readonly" name="period" id="::Alarm::AlarmRelative::period">
5594         <webidl>        readonly attribute long? period;</webidl>
5595         <descriptive>
5596             <brief>
5597  An attribute to store the duration in seconds between each trigger of an alarm.
5598 By default, this attribute is set to <var>null</var>, indicating that this alarm does not repeat.
5599             </brief>
5600             <version>
5601  1.0
5602             </version>
5603         </descriptive>
5604         <Type type="long" nullable="nullable"/>
5605       </Attribute>
5606       <Operation name="getRemainingSeconds" id="::Alarm::AlarmRelative::getRemainingSeconds">
5607         <webidl>        long? getRemainingSeconds() raises(<ref>WebAPIException</ref>);</webidl>
5608         <descriptive>
5609             <brief>
5610  Returns duration in seconds before the next alarm is triggered.
5611             </brief>
5612            <description>
5613             <p>
5614 If the alarm has expired, this method returns <var>null</var>.
5615             </p>
5616            </description>
5617             <version>
5618  1.0
5619             </version>
5620             <Code> // Gets the current application id.
5621  var appId = tizen.application.getCurrentApplication().appInfo.id; 
5622
5623  // Sets an alarm in 3 hours from now
5624  var alarm = new tizen.AlarmRelative(3 * tizen.alarm.PERIOD_HOUR);
5625  tizen.alarm.add(alarm, appId);
5626  
5627  var sec = alarm.getRemainingSeconds();
5628  console.log(&quot;remaining time is &quot; + sec);
5629  </Code>
5630         </descriptive>
5631         <Type type="long" nullable="nullable">
5632           <descriptive>
5633               <description><p>
5634  long The duration before the next alarm trigger.
5635               </p></description>
5636           </descriptive>
5637         </Type>
5638         <ArgumentList/>
5639         <Raises>
5640           <RaiseException name="WebAPIException">
5641             <descriptive>
5642                 <description><p>
5643  with error type UnknownError, if the method cannot be completed because of an unknown error.
5644                 </p></description>
5645             </descriptive>
5646           </RaiseException>
5647         </Raises>
5648       </Operation>
5649     </Interface>
5650     <Interface name="AlarmAbsolute" id="::Alarm::AlarmAbsolute">
5651       <webidl>    [Constructor(Date date),&#13;
5652 &#13;
5653      Constructor(Date date, <ref>ByDayValue</ref>[] daysOfTheWeek),&#13;
5654 &#13;
5655      Constructor(Date date, long period)]&#13;
5656 &#13;
5657     interface AlarmAbsolute : <ref>Alarm</ref> {&#13;
5658 &#13;
5659         readonly attribute Date date;&#13;
5660 &#13;
5661 &#13;
5662         readonly attribute long? period;&#13;
5663 &#13;
5664 &#13;
5665         readonly attribute <ref>ByDayValue</ref>[] daysOfTheWeek;&#13;
5666 &#13;
5667 &#13;
5668         Date? getNextScheduledDate() raises(<ref>WebAPIException</ref>);&#13;
5669     };</webidl>
5670       <descriptive>
5671           <brief>
5672  This interface provides an absolute alarm, which triggers at a specified absolute date.
5673           </brief>
5674          <description>
5675           <p>
5676 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.
5677           </p>
5678          </description>
5679           <version>
5680  1.0
5681           </version>
5682           <Code> // Gets the current application id.
5683  var appId = tizen.application.getCurrentApplication().appInfo.id;
5684
5685  // Sets an alarm on January 1st 2014 08:00
5686  var date = new Date(2014, 0, 1, 8, 0);
5687  var alarm1 = new tizen.AlarmAbsolute(date);
5688  tizen.alarm.add(alarm1, appId);
5689
5690  // Sets an alarm on January 1st 2014 08:00, repeating every 2 days
5691  var alarm2 = new tizen.AlarmAbsolute(date, 2 * tizen.alarm.PERIOD_DAY);
5692  tizen.alarm.add(alarm2, appId);
5693
5694  // Sets an alarm occurring on every Saturday and Sunday, at 08:00, starting from January 1st 2014
5695  var alarm3 = new tizen.AlarmAbsolute(date, [&quot;SA&quot;, &quot;SU&quot;]);
5696  tizen.alarm.add(alarm3, appId);
5697  </Code>
5698       </descriptive>
5699       <ExtendedAttributeList>
5700         <ExtendedAttribute name="Constructor">
5701           <webidl>Constructor(Date date)</webidl>
5702           <ArgumentList>
5703             <Argument name="date">
5704               <Type type="Date"/>
5705             </Argument>
5706           </ArgumentList>
5707         </ExtendedAttribute>
5708         <ExtendedAttribute name="Constructor">
5709           <webidl>     Constructor(Date date, <ref>ByDayValue</ref>[] daysOfTheWeek)</webidl>
5710           <ArgumentList>
5711             <Argument name="date">
5712               <Type type="Date"/>
5713             </Argument>
5714             <Argument name="daysOfTheWeek">
5715               <Type type="array">
5716                 <Type name="ByDayValue"/>
5717               </Type>
5718             </Argument>
5719           </ArgumentList>
5720         </ExtendedAttribute>
5721         <ExtendedAttribute name="Constructor">
5722           <webidl>     Constructor(Date date, long period)</webidl>
5723           <ArgumentList>
5724             <Argument name="date">
5725               <Type type="Date"/>
5726             </Argument>
5727             <Argument name="period">
5728               <Type type="long"/>
5729             </Argument>
5730           </ArgumentList>
5731         </ExtendedAttribute>
5732       </ExtendedAttributeList>
5733       <InterfaceInheritance>
5734         <Name name="Alarm"/>
5735       </InterfaceInheritance>
5736       <Attribute readonly="readonly" name="date" id="::Alarm::AlarmAbsolute::date">
5737         <webidl>        readonly attribute Date date;</webidl>
5738         <descriptive>
5739             <brief>
5740  An attribute to store the absolute date/time when the alarm is initially triggered.
5741             </brief>
5742            <description>
5743             <p>
5744 This attribute is precise to the second. Milliseconds will be ignored.
5745             </p>
5746            </description>
5747             <version>
5748  1.0
5749             </version>
5750         </descriptive>
5751         <Type type="Date"/>
5752       </Attribute>
5753       <Attribute readonly="readonly" name="period" id="::Alarm::AlarmAbsolute::period">
5754         <webidl>        readonly attribute long? period;</webidl>
5755         <descriptive>
5756             <brief>
5757  An attribute to store the duration in seconds between each trigger of the alarm.
5758             </brief>
5759            <description>
5760             <p>
5761 By default, this attribute is set to <var>null</var>, indicating that this alarm does not repeat.
5762 The <em>period</em> and <em>daysOfTheWeek</em> attributes are mutually exclusive.
5763             </p>
5764            </description>
5765             <version>
5766  1.0
5767             </version>
5768         </descriptive>
5769         <Type type="long" nullable="nullable"/>
5770       </Attribute>
5771       <Attribute readonly="readonly" name="daysOfTheWeek" id="::Alarm::AlarmAbsolute::daysOfTheWeek">
5772         <webidl>        readonly attribute <ref>ByDayValue</ref>[] daysOfTheWeek;</webidl>
5773         <descriptive>
5774             <brief>
5775  An attribute to store the days of the week associated with the recurrence rule.
5776             </brief>
5777            <description>
5778             <p>
5779 By default, this attribute is set to an empty array.
5780 The <em>period</em> and <em>daysOfTheWeek</em> attributes are mutually exclusive.
5781             </p>
5782            </description>
5783             <version>
5784  1.0
5785             </version>
5786         </descriptive>
5787         <Type type="array">
5788           <Type name="ByDayValue"/>
5789         </Type>
5790       </Attribute>
5791       <Operation name="getNextScheduledDate" id="::Alarm::AlarmAbsolute::getNextScheduledDate">
5792         <webidl>        Date? getNextScheduledDate() raises(<ref>WebAPIException</ref>);</webidl>
5793         <descriptive>
5794             <brief>
5795  Returns the date / time of the next alarm trigger.
5796             </brief>
5797            <description>
5798             <p>
5799 If the alarm has expired, this method returns <var>null</var>. The returned date is precise to the second.
5800             </p>
5801            </description>
5802             <version>
5803  1.0
5804             </version>
5805             <Code> // Gets the current application id.
5806  var appId = tizen.application.getCurrentApplication().appInfo.id;
5807
5808  // Sets an alarm on January 1st 2014 08:00
5809  var date = new Date(2014, 0, 1, 8, 0);
5810  var alarm1 = new tizen.AlarmAbsolute(date);
5811  tizen.alarm.add(alarm1, appId);
5812  
5813  var date = alarm1.getNextScheduledDate();
5814  console.log(&quot;next scheduled time is &quot; + date);
5815  </Code>
5816         </descriptive>
5817         <Type type="Date" nullable="nullable">
5818           <descriptive>
5819               <description><p>
5820  Date The date/time of the next alarm trigger.
5821               </p></description>
5822           </descriptive>
5823         </Type>
5824         <ArgumentList/>
5825         <Raises>
5826           <RaiseException name="WebAPIException">
5827             <descriptive>
5828                 <description><p>
5829  with error type UnknownError, if the method cannot be completed because of an unknown error.    
5830                 </p></description>
5831             </descriptive>
5832           </RaiseException>
5833         </Raises>
5834       </Operation>
5835     </Interface>
5836   </Module>
5837   <Module name="Application" id="::Application">
5838     <webidl>module Application {
5839
5840   typedef DOMString ApplicationId;
5841
5842   typedef DOMString ApplicationContextId;
5843
5844   [NoInterfaceObject] interface ApplicationManagerObject {
5845     readonly attribute <ref>ApplicationManager</ref> application;
5846   };
5847   <ref>Tizen</ref> implements <ref>ApplicationManagerObject</ref>;
5848
5849   [NoInterfaceObject] interface ApplicationManager {
5850
5851     <ref>Application</ref> getCurrentApplication() raises(<ref>WebAPIException</ref>);
5852         
5853     void kill(<ref>ApplicationContextId</ref> contextId,
5854               optional <ref>SuccessCallback</ref>? successCallback,
5855               optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
5856         
5857     void launch(<ref>ApplicationId</ref> id,
5858                 optional <ref>SuccessCallback</ref>? successCallback,
5859                 optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
5860
5861     void launchAppControl(<ref>ApplicationControl</ref> appControl,
5862                           optional <ref>ApplicationId</ref>? id,
5863                           optional <ref>SuccessCallback</ref>? successCallback,
5864                           optional <ref>ErrorCallback</ref>? errorCallback,
5865                           optional <ref>ApplicationControlDataArrayReplyCallback</ref>? replyCallback) raises(<ref>WebAPIException</ref>);
5866
5867     void findAppControl(<ref>ApplicationControl</ref> appControl,
5868                         <ref>FindAppControlSuccessCallback</ref> successCallback,
5869                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
5870
5871     void getAppsContext(<ref>ApplicationContextArraySuccessCallback</ref> successCallback,
5872                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
5873
5874     <ref>ApplicationContext</ref> getAppContext(optional <ref>ApplicationContextId</ref>? contextId) raises(<ref>WebAPIException</ref>);
5875
5876     void getAppsInfo(<ref>ApplicationInformationArraySuccessCallback</ref> successCallback,
5877                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
5878
5879     <ref>ApplicationInformation</ref> getAppInfo(optional <ref>ApplicationId</ref>? id) raises(<ref>WebAPIException</ref>);
5880
5881     <ref>ApplicationCertificate</ref>[] getAppCerts(optional <ref>ApplicationId</ref>? id) raises(<ref>WebAPIException</ref>);
5882
5883     DOMString getAppSharedURI(optional <ref>ApplicationId</ref>? id) raises(<ref>WebAPIException</ref>);
5884
5885     <ref>ApplicationMetaData</ref>[] getAppMetaData(optional <ref>ApplicationId</ref>? id) raises(<ref>WebAPIException</ref>);
5886
5887     long addAppInfoEventListener(<ref>ApplicationInformationEventCallback</ref> eventCallback) raises(<ref>WebAPIException</ref>);
5888
5889     void removeAppInfoEventListener(long watchId) raises(<ref>WebAPIException</ref>);
5890
5891   };
5892
5893   [NoInterfaceObject] interface Application {
5894
5895     readonly attribute <ref>ApplicationInformation</ref> appInfo;
5896
5897     readonly attribute <ref>ApplicationContextId</ref> contextId;
5898
5899     void exit() raises(<ref>WebAPIException</ref>);
5900
5901     void hide() raises(<ref>WebAPIException</ref>);
5902
5903     <ref>RequestedApplicationControl</ref> getRequestedAppControl() raises(<ref>WebAPIException</ref>);
5904   };
5905
5906
5907   [NoInterfaceObject] interface ApplicationInformation {
5908
5909     readonly attribute <ref>ApplicationId</ref> id;
5910
5911     readonly attribute DOMString name;
5912
5913     readonly attribute DOMString iconPath;
5914
5915     readonly attribute DOMString version;
5916
5917     readonly attribute boolean show;
5918
5919     readonly attribute DOMString[] categories;
5920
5921     readonly attribute Date installDate;
5922
5923     readonly attribute long size raises(<ref>WebAPIException</ref>);
5924
5925     readonly attribute <ref>PackageId</ref> packageId;
5926   };
5927
5928   [NoInterfaceObject] interface ApplicationContext {
5929
5930     readonly attribute <ref>ApplicationContextId</ref> id;
5931
5932     readonly attribute <ref>ApplicationId</ref> appId;
5933
5934   };
5935
5936   [Constructor(DOMString key, DOMString[] value)]
5937   interface ApplicationControlData {
5938
5939     attribute DOMString key;
5940
5941     attribute DOMString[] value;
5942
5943   };
5944
5945   [Constructor(DOMString operation, optional DOMString? uri,
5946                optional DOMString? mime, optional DOMString? category,
5947                optional <ref>ApplicationControlData</ref>[]? data)]
5948   interface ApplicationControl {
5949
5950     attribute DOMString operation;
5951
5952     attribute DOMString? uri;
5953
5954     attribute DOMString? mime;
5955
5956     attribute DOMString? category;
5957
5958     attribute <ref>ApplicationControlData</ref>[] data;
5959
5960   };
5961
5962   [NoInterfaceObject] interface RequestedApplicationControl {
5963
5964     readonly attribute <ref>ApplicationControl</ref> appControl;
5965
5966     readonly attribute <ref>ApplicationId</ref> callerAppId;
5967
5968     void replyResult(optional <ref>ApplicationControlData</ref>[]? data) raises(<ref>WebAPIException</ref>);
5969
5970     void replyFailure() raises(<ref>WebAPIException</ref>);
5971
5972   };
5973
5974   
5975   [NoInterfaceObject] interface ApplicationCertificate {
5976
5977     readonly attribute DOMString type;
5978
5979     readonly attribute DOMString value;
5980
5981   };
5982   
5983
5984   [NoInterfaceObject] interface ApplicationMetaData {
5985
5986     readonly attribute DOMString key;
5987
5988     readonly attribute DOMString value;
5989
5990   };
5991
5992
5993   [Callback=FunctionOnly, NoInterfaceObject] interface ApplicationInformationArraySuccessCallback {
5994     void onsuccess(<ref>ApplicationInformation</ref>[] informationArray);
5995   };
5996
5997   [Callback=FunctionOnly, NoInterfaceObject] interface FindAppControlSuccessCallback {
5998     void onsuccess(<ref>ApplicationInformation</ref>[] informationArray, <ref>ApplicationControl</ref> appControl);
5999   };
6000
6001   [Callback=FunctionOnly, NoInterfaceObject] interface ApplicationContextArraySuccessCallback {
6002     void onsuccess(<ref>ApplicationContext</ref>[] contexts);
6003   };
6004
6005   [Callback, NoInterfaceObject] interface ApplicationControlDataArrayReplyCallback {
6006     void onsuccess(optional <ref>ApplicationControlData</ref>[]? data);
6007
6008     void onfailure();
6009   };
6010
6011   [Callback, NoInterfaceObject] interface ApplicationInformationEventCallback {
6012     void oninstalled(<ref>ApplicationInformation</ref> info);
6013
6014     void onupdated(<ref>ApplicationInformation</ref> info);
6015
6016     void onuninstalled(<ref>ApplicationId</ref> id);
6017   };
6018
6019 };</webidl>
6020     <descriptive>
6021         <brief>
6022  This API provides a way to launch other applications and access
6023 application management.
6024         </brief>
6025        <description>
6026         <p>
6027 The <em>ApplicationManager</em> interface also provides methods to launch other applications
6028 explicitly and implicitly through the <em>ApplicationControl</em> interface.
6029 The <em>ApplicationControl</em> interface consists of an operation, URI, and MIME type
6030 and also describes an action to be performed by other
6031 applications and can carry the result from the subsequent application.
6032 The <em>ApplicationManager</em> interface also provides methods to handle the application
6033 lifecycle, to access the installed applications on the device, and to let
6034 an application be notified of a change in the application list.
6035         </p>
6036         <p>
6037 The <em>Application</em> interface defines the current application's information and
6038 the basic operations for current application such as exit or hide.
6039         </p>
6040         <p>
6041 For more information on the Application features, see <a href="../../org.tizen.web.appprogramming/html/guide/app_guide/application.htm">Application Guide</a>.
6042         </p>
6043        </description>
6044         <version>
6045  1.0
6046         </version>
6047     </descriptive>
6048     <Typedef name="ApplicationId" id="::Application::ApplicationId">
6049       <webidl>  typedef DOMString ApplicationId;</webidl>
6050       <descriptive>
6051           <brief>
6052  The unique ID for an installed application.
6053           </brief>
6054           <version>
6055  1.0
6056           </version>
6057       </descriptive>
6058       <Type type="DOMString"/>
6059     </Typedef>
6060     <Typedef name="ApplicationContextId" id="::Application::ApplicationContextId">
6061       <webidl>  typedef DOMString ApplicationContextId;</webidl>
6062       <descriptive>
6063           <brief>
6064  The unique ID for a running application.
6065           </brief>
6066           <version>
6067  1.0
6068           </version>
6069       </descriptive>
6070       <Type type="DOMString"/>
6071     </Typedef>
6072     <Interface name="ApplicationManagerObject" id="::Application::ApplicationManagerObject">
6073       <webidl>  [NoInterfaceObject] interface ApplicationManagerObject {
6074     readonly attribute <ref>ApplicationManager</ref> application;
6075   };</webidl>
6076       <descriptive>
6077           <brief>
6078  This interface defines what is instantiated by the <em>Tizen </em>object by the Tizen Platform.
6079           </brief>
6080          <description>
6081           <p>
6082 There will be a <em>tizen.application </em>object that allows access to Application API functionality.
6083           </p>
6084          </description>
6085           <version>
6086  2.0
6087           </version>
6088       </descriptive>
6089       <ExtendedAttributeList>
6090         <ExtendedAttribute name="NoInterfaceObject">
6091           <webidl>NoInterfaceObject</webidl>
6092         </ExtendedAttribute>
6093       </ExtendedAttributeList>
6094       <Attribute readonly="readonly" name="application" id="::Application::ApplicationManagerObject::application">
6095         <webidl>    readonly attribute <ref>ApplicationManager</ref> application;</webidl>
6096         <Type name="ApplicationManager"/>
6097       </Attribute>
6098     </Interface>
6099     <Implements name1="Tizen" name2="ApplicationManagerObject">
6100       <webidl>  <ref>Tizen</ref> implements <ref>ApplicationManagerObject</ref>;</webidl>
6101     </Implements>
6102     <Interface name="ApplicationManager" id="::Application::ApplicationManager">
6103       <webidl>  [NoInterfaceObject] interface ApplicationManager {
6104
6105     <ref>Application</ref> getCurrentApplication() raises(<ref>WebAPIException</ref>);
6106         
6107     void kill(<ref>ApplicationContextId</ref> contextId,
6108               optional <ref>SuccessCallback</ref>? successCallback,
6109               optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
6110         
6111     void launch(<ref>ApplicationId</ref> id,
6112                 optional <ref>SuccessCallback</ref>? successCallback,
6113                 optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
6114
6115     void launchAppControl(<ref>ApplicationControl</ref> appControl,
6116                           optional <ref>ApplicationId</ref>? id,
6117                           optional <ref>SuccessCallback</ref>? successCallback,
6118                           optional <ref>ErrorCallback</ref>? errorCallback,
6119                           optional <ref>ApplicationControlDataArrayReplyCallback</ref>? replyCallback) raises(<ref>WebAPIException</ref>);
6120
6121     void findAppControl(<ref>ApplicationControl</ref> appControl,
6122                         <ref>FindAppControlSuccessCallback</ref> successCallback,
6123                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
6124
6125     void getAppsContext(<ref>ApplicationContextArraySuccessCallback</ref> successCallback,
6126                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
6127
6128     <ref>ApplicationContext</ref> getAppContext(optional <ref>ApplicationContextId</ref>? contextId) raises(<ref>WebAPIException</ref>);
6129
6130     void getAppsInfo(<ref>ApplicationInformationArraySuccessCallback</ref> successCallback,
6131                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
6132
6133     <ref>ApplicationInformation</ref> getAppInfo(optional <ref>ApplicationId</ref>? id) raises(<ref>WebAPIException</ref>);
6134
6135     <ref>ApplicationCertificate</ref>[] getAppCerts(optional <ref>ApplicationId</ref>? id) raises(<ref>WebAPIException</ref>);
6136
6137     DOMString getAppSharedURI(optional <ref>ApplicationId</ref>? id) raises(<ref>WebAPIException</ref>);
6138
6139     <ref>ApplicationMetaData</ref>[] getAppMetaData(optional <ref>ApplicationId</ref>? id) raises(<ref>WebAPIException</ref>);
6140
6141     long addAppInfoEventListener(<ref>ApplicationInformationEventCallback</ref> eventCallback) raises(<ref>WebAPIException</ref>);
6142
6143     void removeAppInfoEventListener(long watchId) raises(<ref>WebAPIException</ref>);
6144
6145   };</webidl>
6146       <descriptive>
6147           <brief>
6148  This section defines the application manager interface.
6149           </brief>
6150           <version>
6151  2.0
6152           </version>
6153       </descriptive>
6154       <ExtendedAttributeList>
6155         <ExtendedAttribute name="NoInterfaceObject">
6156           <webidl>NoInterfaceObject</webidl>
6157         </ExtendedAttribute>
6158       </ExtendedAttributeList>
6159       <Operation name="getCurrentApplication" id="::Application::ApplicationManager::getCurrentApplication">
6160         <webidl>    <ref>Application</ref> getCurrentApplication() raises(<ref>WebAPIException</ref>);</webidl>
6161         <descriptive>
6162             <brief>
6163  Gets the <em>Application </em>object defining the current application.
6164             </brief>
6165             <version>
6166  2.0
6167             </version>
6168             <Code> var app = tizen.application.getCurrentApplication();
6169  console.log(&quot;Current application's app id is &quot; + app.appInfo.id);
6170  </Code>
6171         </descriptive>
6172         <Type name="Application">
6173           <descriptive>
6174               <description><p>
6175  Application The data structure that defines current application.
6176               </p></description>
6177           </descriptive>
6178         </Type>
6179         <ArgumentList/>
6180         <Raises>
6181           <RaiseException name="WebAPIException">
6182             <descriptive>
6183                 <description><p>
6184  with error type UnknownError, if the application cannot be retrieved because of an unknown error.
6185                 </p></description>
6186             </descriptive>
6187           </RaiseException>
6188         </Raises>
6189       </Operation>
6190       <Operation name="kill" id="::Application::ApplicationManager::kill">
6191         <webidl>    void kill(<ref>ApplicationContextId</ref> contextId,
6192               optional <ref>SuccessCallback</ref>? successCallback,
6193               optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
6194         <descriptive>
6195             <brief>
6196  Kills an application with the specified application context ID.
6197             </brief>
6198            <description>
6199             <p>
6200 The <em>ErrorCallback() </em>is launched with these error types:
6201             </p>
6202             <ul>
6203               <li>
6204 NotFoundError - If the context is not found with specified context ID.              </li>
6205               <li>
6206 InvalidValuesError - If any of the input parameters contain an invalid value
6207 or if the specified context ID matches the context ID of the calling application.              </li>
6208               <li>
6209 UnknownError - If any other error occurs.              </li>
6210             </ul>
6211            </description>
6212             <version>
6213  2.0
6214             </version>
6215             <privilegelevel>
6216  partner
6217             </privilegelevel>
6218             <privilege>
6219  http://tizen.org/privilege/appmanager.kill
6220             </privilege>
6221             <Code> function onKillSuccess() {
6222      console.log(&quot;Application terminated successfully&quot;);
6223  }
6224
6225  function onRunningAppsContext(contexts) {
6226     // let's assume that the application &quot;targetApp0.main&quot; has been installed.
6227     var targetId = &quot;targetApp0.main&quot;;
6228
6229     for (var i = 0; i &#60; contexts.length; i++) {
6230         if (contexts[i].appId == targetId) {
6231             tizen.application.kill(contexts[i].id, onKillSuccess);
6232         }
6233     }
6234  }
6235
6236  tizen.application.getAppsContext(onRunningAppsContext);
6237  </Code>
6238         </descriptive>
6239         <Type type="void"/>
6240         <ArgumentList>
6241           <Argument name="contextId">
6242             <descriptive>
6243                 <description><p>
6244  The identifier of the application to kill
6245                 </p></description>
6246             </descriptive>
6247             <Type name="ApplicationContextId"/>
6248           </Argument>
6249           <Argument optional="optional" name="successCallback">
6250             <descriptive>
6251                 <description><p>
6252  The method to invoke when an application is killed successfully.
6253                 </p></description>
6254             </descriptive>
6255             <Type name="SuccessCallback" nullable="nullable"/>
6256           </Argument>
6257           <Argument optional="optional" name="errorCallback">
6258             <descriptive>
6259                 <description><p>
6260  The method to invoke when an error occurs.
6261                 </p></description>
6262             </descriptive>
6263             <Type name="ErrorCallback" nullable="nullable"/>
6264           </Argument>
6265         </ArgumentList>
6266         <Raises>
6267           <RaiseException name="WebAPIException">
6268             <descriptive>
6269                 <description><p>
6270  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
6271                 </p></description>
6272                 <description><p>
6273  with error type SecurityError, if the application does not have the privilege to call this method.
6274                 </p></description>
6275             </descriptive>
6276           </RaiseException>
6277         </Raises>
6278       </Operation>
6279       <Operation name="launch" id="::Application::ApplicationManager::launch">
6280         <webidl>    void launch(<ref>ApplicationId</ref> id,
6281                 optional <ref>SuccessCallback</ref>? successCallback,
6282                 optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
6283         <descriptive>
6284             <brief>
6285  Launches an application with the given application ID.
6286             </brief>
6287            <description>
6288             <p>
6289 The <em>ErrorCallback()</em> is launched with these error types:
6290             </p>
6291             <ul>
6292               <li>
6293 NotFoundError - If the application is not found with given ID.              </li>
6294               <li>
6295 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
6296               <li>
6297 UnknownError - If any other error occurs.              </li>
6298             </ul>
6299            </description>
6300             <version>
6301  2.0
6302             </version>
6303             <privilegelevel>
6304  public
6305             </privilegelevel>
6306             <privilege>
6307  http://tizen.org/privilege/application.launch
6308             </privilege>
6309             <Code> function onsuccess() {
6310      console.log(&quot;The application has launched successfully&quot;);
6311  }
6312
6313  // let's assume that application &quot;targetApp0.main&quot; has been installed
6314  tizen.application.launch(&quot;targetApp0.main&quot;, onsuccess);
6315  </Code>
6316         </descriptive>
6317         <Type type="void"/>
6318         <ArgumentList>
6319           <Argument name="id">
6320             <descriptive>
6321                 <description><p>
6322  A unique string representing application ID.
6323                 </p></description>
6324             </descriptive>
6325             <Type name="ApplicationId"/>
6326           </Argument>
6327           <Argument optional="optional" name="successCallback">
6328             <descriptive>
6329                 <description><p>
6330  The method to call when the invocation ends successfully.
6331                 </p></description>
6332             </descriptive>
6333             <Type name="SuccessCallback" nullable="nullable"/>
6334           </Argument>
6335           <Argument optional="optional" name="errorCallback">
6336             <descriptive>
6337                 <description><p>
6338  The method to call when an error occurs.
6339                 </p></description>
6340             </descriptive>
6341             <Type name="ErrorCallback" nullable="nullable"/>
6342           </Argument>
6343         </ArgumentList>
6344         <Raises>
6345           <RaiseException name="WebAPIException">
6346             <descriptive>
6347                 <description><p>
6348  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
6349                 </p></description>
6350                 <description><p>
6351  with error type SecurityError, if the application does not have the privilege to call this method.
6352                 </p></description>
6353             </descriptive>
6354           </RaiseException>
6355         </Raises>
6356       </Operation>
6357       <Operation name="launchAppControl" id="::Application::ApplicationManager::launchAppControl">
6358         <webidl>    void launchAppControl(<ref>ApplicationControl</ref> appControl,
6359                           optional <ref>ApplicationId</ref>? id,
6360                           optional <ref>SuccessCallback</ref>? successCallback,
6361                           optional <ref>ErrorCallback</ref>? errorCallback,
6362                           optional <ref>ApplicationControlDataArrayReplyCallback</ref>? replyCallback) raises(<ref>WebAPIException</ref>);</webidl>
6363         <descriptive>
6364             <brief>
6365  Launches an application with the specified application control.
6366             </brief>
6367            <description>
6368             <p>
6369 An application can launch other applications with the application control,
6370 and get back the results from the launched applications.
6371             </p>
6372             <p>
6373 The application control consists of an operation, URI, and MIME type, and describes
6374 the request to be performed by the newly launched application. The
6375 application control is passed to the <em>launchAppControl()</em> method to launch an
6376 application. The system tries to find the proper application
6377 to perform the requested application control, then launches the selected application.
6378             </p>
6379             <p>
6380 The application control request is passed to the newly launched application
6381 and it can be accessed by <em>getRequestedAppControl() </em>method. The passed
6382 application control contains the reason the application was launched and
6383 information about what the application is doing. The launched application
6384 can send a result to the caller application with the <em>replyResult() </em>method of
6385 <em>RequestedApplicationControl</em> interface.
6386             </p>
6387             <p>
6388 The <em>ErrorCallback() </em>is launched with these error types:
6389             </p>
6390             <ul>
6391               <li>
6392 NotFoundError - If system cannot find the application that matches the specified application control.              </li>
6393               <li>
6394 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
6395               <li>
6396 UnknownError: If any other error occurs.              </li>
6397             </ul>
6398            </description>
6399             <version>
6400  2.0
6401             </version>
6402             <privilegelevel>
6403  public
6404             </privilegelevel>
6405             <privilege>
6406  http://tizen.org/privilege/application.launch
6407             </privilege>
6408             <Code> var appControl = new tizen.ApplicationControl(
6409      &quot;http://tizen.org/appcontrol/operation/pick&quot;,
6410      null,
6411      &quot;image/jpeg&quot;,
6412      null);
6413
6414  var appControlReplyCallback = {
6415      // callee sent a reply
6416      onsuccess: function(data) {
6417          for (var i = 0; i &#60; data.length; i++) {
6418              if (data[i].key == &quot;http://tizen.org/appcontrol/data/selected&quot;) {
6419                  console.log('Selected image is ' + data[i].value[0]);
6420              }
6421          }
6422      },
6423      // callee returned failure
6424      onfailure: function() {
6425          console.log('The launch application control failed');
6426      }
6427  }
6428
6429  tizen.application.launchAppControl(
6430      appControl,
6431      null,
6432      function() {console.log(&quot;launch application control succeed&quot;); },
6433      function(e) {console.log(&quot;launch application control failed. reason: &quot; + e.message); },
6434      appControlReplyCallback );
6435  </Code>
6436         </descriptive>
6437         <Type type="void"/>
6438         <ArgumentList>
6439           <Argument name="appControl">
6440             <descriptive>
6441                 <description><p>
6442  The data structure describing application control details.
6443                 </p></description>
6444             </descriptive>
6445             <Type name="ApplicationControl"/>
6446           </Argument>
6447           <Argument optional="optional" name="id">
6448             <descriptive>
6449                 <description><p>
6450  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.
6451                 </p></description>
6452             </descriptive>
6453             <Type name="ApplicationId" nullable="nullable"/>
6454           </Argument>
6455           <Argument optional="optional" name="successCallback">
6456             <descriptive>
6457                 <description><p>
6458  The method to call when the invocation ends successfully.
6459                 </p></description>
6460             </descriptive>
6461             <Type name="SuccessCallback" nullable="nullable"/>
6462           </Argument>
6463           <Argument optional="optional" name="errorCallback">
6464             <descriptive>
6465                 <description><p>
6466  The method to invoke when an error occurs.
6467                 </p></description>
6468             </descriptive>
6469             <Type name="ErrorCallback" nullable="nullable"/>
6470           </Argument>
6471           <Argument optional="optional" name="replyCallback">
6472             <descriptive>
6473                 <description><p>
6474  The method to invoke when the application gets back results from the launched application.
6475                 </p></description>
6476             </descriptive>
6477             <Type name="ApplicationControlDataArrayReplyCallback" nullable="nullable"/>
6478           </Argument>
6479         </ArgumentList>
6480         <Raises>
6481           <RaiseException name="WebAPIException">
6482             <descriptive>
6483                 <description><p>
6484  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
6485                 </p></description>
6486                 <description><p>
6487  with error type SecurityError, if the application does not have the privilege to call this method.
6488                 </p></description>
6489             </descriptive>
6490           </RaiseException>
6491         </Raises>
6492       </Operation>
6493       <Operation name="findAppControl" id="::Application::ApplicationManager::findAppControl">
6494         <webidl>    void findAppControl(<ref>ApplicationControl</ref> appControl,
6495                         <ref>FindAppControlSuccessCallback</ref> successCallback,
6496                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
6497         <descriptive>
6498             <brief>
6499  Finds application information can be launched with the given application control.
6500             </brief>
6501            <description>
6502             <p>
6503 An application can get a list of other applications can be launched with the application control.
6504             </p>
6505             <p>
6506 The <em>ErrorCallback()<em> is launched with these error types:
6507 </em></em>            </p>
6508             <ul>
6509               <li>
6510 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
6511               <li>
6512 UnknownError - If any other error occurs.              </li>
6513             </ul>
6514            </description>
6515             <version>
6516  2.0
6517             </version>
6518             <Code> var appControl = new tizen.ApplicationControl(
6519      &quot;http://tizen.org/appcontrol/operation/pick&quot;,
6520      null,
6521      &quot;image/jpeg&quot;,
6522      null);
6523
6524  function successCB(appInfos, appControl)
6525  {
6526      // em>appControl/em> is same object with the value passed as first parameter to em>findAppControl()/em>
6527      var appControlReplyCallback = {
6528          // callee sent a reply
6529          onsuccess: function(data) {
6530              for (var i = 0; i &#60; data.length; i++) {
6531                  if (data[i].key == &quot;http://tizen.org/appcontrol/data/selected&quot;) {
6532                      console.log('Selected image is ' + data[i].value[0]);
6533                  }
6534              }
6535          },
6536          // callee returned failure
6537          onfailure: function() {
6538              console.log('The launch application control failed');
6539          }
6540      }
6541
6542      var appId = appInfos[0].id; // select first app's id
6543
6544      tizen.application.launchAppControl(
6545          appControl, 
6546          appId,
6547          function() {console.log(&quot;launch application control succeed&quot;); },
6548         function(e) {console.log(&quot;launch application control failed. reason: &quot; + e.message); },
6549         appControlReplyCallback );
6550  }
6551
6552  tizen.application.findAppControl(appControl, successCB);
6553  </Code>
6554         </descriptive>
6555         <Type type="void"/>
6556         <ArgumentList>
6557           <Argument name="appControl">
6558             <descriptive>
6559                 <description><p>
6560  A data structure describing application control details.
6561                 </p></description>
6562             </descriptive>
6563             <Type name="ApplicationControl"/>
6564           </Argument>
6565           <Argument name="successCallback">
6566             <descriptive>
6567                 <description><p>
6568  The method to call that returns a list of application information.
6569                 </p></description>
6570             </descriptive>
6571             <Type name="FindAppControlSuccessCallback"/>
6572           </Argument>
6573           <Argument optional="optional" name="errorCallback">
6574             <descriptive>
6575                 <description><p>
6576  The method to call when an error occurs.
6577                 </p></description>
6578             </descriptive>
6579             <Type name="ErrorCallback" nullable="nullable"/>
6580           </Argument>
6581         </ArgumentList>
6582         <Raises>
6583           <RaiseException name="WebAPIException">
6584             <descriptive>
6585                 <description><p>
6586  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
6587                 </p></description>
6588             </descriptive>
6589           </RaiseException>
6590         </Raises>
6591       </Operation>
6592       <Operation name="getAppsContext" id="::Application::ApplicationManager::getAppsContext">
6593         <webidl>    void getAppsContext(<ref>ApplicationContextArraySuccessCallback</ref> successCallback,
6594                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
6595         <descriptive>
6596             <brief>
6597  Gets a list of application contexts for applications that are currently running on a device.
6598 The information contained for each application corresponds to the application state at the time when the list was generated.
6599             </brief>
6600            <description>
6601             <p>
6602 The <em>errorCallback()</em> is launched with this error type:
6603             </p>
6604             <ul>
6605               <li>
6606 UnknownError - If an unknown error occurs.              </li>
6607             </ul>
6608            </description>
6609             <version>
6610  2.0
6611             </version>
6612             <Code> function onRunningAppsContext(contexts) {
6613      for (var i = 0; i &#60; contexts.length; i++)
6614          console.log(&quot;ID : &quot; + contexts[i].id);
6615  }
6616
6617  tizen.application.getAppsContext(onRunningAppsContext);
6618  </Code>
6619         </descriptive>
6620         <Type type="void"/>
6621         <ArgumentList>
6622           <Argument name="successCallback">
6623             <descriptive>
6624                 <description><p>
6625  The method to call when the invocation ends successfully.
6626                 </p></description>
6627             </descriptive>
6628             <Type name="ApplicationContextArraySuccessCallback"/>
6629           </Argument>
6630           <Argument optional="optional" name="errorCallback">
6631             <descriptive>
6632                 <description><p>
6633  The method to call when an error occurs.
6634                 </p></description>
6635             </descriptive>
6636             <Type name="ErrorCallback" nullable="nullable"/>
6637           </Argument>
6638         </ArgumentList>
6639         <Raises>
6640           <RaiseException name="WebAPIException">
6641             <descriptive>
6642                 <description><p>
6643  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
6644                 </p></description>
6645             </descriptive>
6646           </RaiseException>
6647         </Raises>
6648       </Operation>
6649       <Operation name="getAppContext" id="::Application::ApplicationManager::getAppContext">
6650         <webidl>    <ref>ApplicationContext</ref> getAppContext(optional <ref>ApplicationContextId</ref>? contextId) raises(<ref>WebAPIException</ref>);</webidl>
6651         <descriptive>
6652             <brief>
6653  Gets the application context for the specified application context ID.
6654 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.
6655 The list of running applications and their application IDs is obtained with <em>getAppsContext()</em>.
6656             </brief>
6657             <version>
6658  2.0
6659             </version>
6660             <Code> var appContext = tizen.application.getAppContext(null);
6661  console.log(&quot;Application context retrieved for app &quot; + appContext.appId);
6662  </Code>
6663         </descriptive>
6664         <Type name="ApplicationContext">
6665           <descriptive>
6666               <description><p>
6667  ApplicationContext A data structure that lists running application details.
6668               </p></description>
6669           </descriptive>
6670         </Type>
6671         <ArgumentList>
6672           <Argument optional="optional" name="contextId">
6673             <descriptive>
6674                 <description><p>
6675  A string representing an application context ID. If the ID is not provided, the application context of the calling application will be returned.
6676                 </p></description>
6677             </descriptive>
6678             <Type name="ApplicationContextId" nullable="nullable"/>
6679           </Argument>
6680         </ArgumentList>
6681         <Raises>
6682           <RaiseException name="WebAPIException">
6683             <descriptive>
6684                 <description><p>
6685  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
6686                 </p></description>
6687                 <description><p>
6688  with error type NotFoundError, if the application context is not found with provided ID.
6689                 </p></description>
6690                 <description><p>
6691  with error type UnknownError, if the application context cannot be retrieved because of an unknown error.
6692                 </p></description>
6693             </descriptive>
6694           </RaiseException>
6695         </Raises>
6696       </Operation>
6697       <Operation name="getAppsInfo" id="::Application::ApplicationManager::getAppsInfo">
6698         <webidl>    void getAppsInfo(<ref>ApplicationInformationArraySuccessCallback</ref> successCallback,
6699                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
6700         <descriptive>
6701             <brief>
6702  Gets the list of installed application's information on a device.
6703 The information contained on each application corresponds to the application state at the moment when the list was generated.
6704             </brief>
6705            <description>
6706             <p>
6707 The <em>errorCallback()</em> is launched with this error type:
6708             </p>
6709             <ul>
6710               <li>
6711 UnknownError - If an unknown error occurs.              </li>
6712             </ul>
6713            </description>
6714             <version>
6715  2.0
6716             </version>
6717             <Code> function onListInstalledApps(applications) {
6718      for (var i = 0; i &#60; applications.length; i++)
6719          console.log(&quot;ID : &quot; + applications[i].id);
6720  }
6721
6722  tizen.application.getAppsInfo(onListInstalledApps);
6723  </Code>
6724         </descriptive>
6725         <Type type="void"/>
6726         <ArgumentList>
6727           <Argument name="successCallback">
6728             <descriptive>
6729                 <description><p>
6730  The method to call when the invocation ends successfully.
6731                 </p></description>
6732             </descriptive>
6733             <Type name="ApplicationInformationArraySuccessCallback"/>
6734           </Argument>
6735           <Argument optional="optional" name="errorCallback">
6736             <descriptive>
6737                 <description><p>
6738  The method to call when an error occurs.
6739                 </p></description>
6740             </descriptive>
6741             <Type name="ErrorCallback" nullable="nullable"/>
6742           </Argument>
6743         </ArgumentList>
6744         <Raises>
6745           <RaiseException name="WebAPIException">
6746             <descriptive>
6747                 <description><p>
6748  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
6749                 </p></description>
6750             </descriptive>
6751           </RaiseException>
6752         </Raises>
6753       </Operation>
6754       <Operation name="getAppInfo" id="::Application::ApplicationManager::getAppInfo">
6755         <webidl>    <ref>ApplicationInformation</ref> getAppInfo(optional <ref>ApplicationId</ref>? id) raises(<ref>WebAPIException</ref>);</webidl>
6756         <descriptive>
6757             <brief>
6758  Gets application information for a specified application ID.
6759             </brief>
6760            <description>
6761             <p>
6762 If the ID is set to <var>null</var> or not set at all, it returns application information for the current application.
6763 The list of installed applications and their application IDs is obtained with <em>getAppsInfo()</em>.
6764             </p>
6765            </description>
6766             <version>
6767  2.0
6768             </version>
6769             <Code> var appInfo = tizen.application.getAppInfo(null);
6770  console.log(&quot;Current application name : &quot; + appInfo.name);
6771  </Code>
6772         </descriptive>
6773         <Type name="ApplicationInformation">
6774           <descriptive>
6775               <description><p>
6776  ApplicationInformation The information of an application.
6777               </p></description>
6778           </descriptive>
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 information 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 NotFoundError, if the application is not found with specified ID.
6798                 </p></description>
6799                 <description><p>
6800  with error type UnknownError, if the application cannot be retrieved because of an unknown error.
6801                 </p></description>
6802             </descriptive>
6803           </RaiseException>
6804         </Raises>
6805       </Operation>
6806       <Operation name="getAppCerts" id="::Application::ApplicationManager::getAppCerts">
6807         <webidl>    <ref>ApplicationCertificate</ref>[] getAppCerts(optional <ref>ApplicationId</ref>? id) raises(<ref>WebAPIException</ref>);</webidl>
6808         <descriptive>
6809             <brief>
6810  Gets application certificates for a specified application ID.
6811             </brief>
6812            <description>
6813             <p>
6814 If the ID is set to <var>null</var> or not set at all, it returns application certificates for the current application.
6815             </p>
6816             <p>
6817 The certificate types are listed below
6818             </p>
6819             <ul>
6820               <li>
6821  AUTHOR_ROOT - Author Root Certificate               </li>
6822               <li>
6823  AUTHOR_INTERMEDIATE - Author Intermediate Certificate               </li>
6824               <li>
6825  AUTHOR_SIGNER - Author Signer Certificate               </li>
6826               <li>
6827  DISTRIBUTOR_ROOT - Distributor Root Certificate               </li>
6828               <li>
6829  DISTRIBUTOR_INTERMEDIATE - Distributor Intermediate Certificate               </li>
6830               <li>
6831  DISTRIBUTOR_SIGNER - Distributor Signer Certificate               </li>
6832               <li>
6833  DISTRIBUTOR2_ROOT - Distributor2 Root Certificate               </li>
6834               <li>
6835  DISTRIBUTOR2_INTERMEDIATE - Distributor2 Intermediate Certificate               </li>
6836               <li>
6837  DISTRIBUTOR2_SIGNER - Distributor2 Signer Certificate               </li>
6838             </ul>
6839            </description>
6840             <version>
6841  2.0
6842             </version>
6843             <privilegelevel>
6844  partner
6845             </privilegelevel>
6846             <privilege>
6847  http://tizen.org/privilege/appmanager.certificate
6848             </privilege>
6849             <Code> var appCerts = tizen.application.getAppCerts(null);
6850
6851  for (var i = 0; i &#60; appCerts.length; i++) {
6852     console.log(&quot;#&quot; + i + &quot; type:&quot; + appCerts[i].type);
6853     console.log(&quot;#&quot; + i + &quot; value:&quot; + appCerts[i].value);
6854  }
6855  </Code>
6856         </descriptive>
6857         <Type type="array">
6858           <descriptive>
6859               <description><p>
6860  ApplicationCertificate[] Array of certificate information of a specified application
6861               </p></description>
6862           </descriptive>
6863           <Type name="ApplicationCertificate"/>
6864         </Type>
6865         <ArgumentList>
6866           <Argument optional="optional" name="id">
6867             <descriptive>
6868                 <description><p>
6869  A string representing application ID. If the ID is not provided, the application certificate of the calling application will be returned.
6870                 </p></description>
6871             </descriptive>
6872             <Type name="ApplicationId" nullable="nullable"/>
6873           </Argument>
6874         </ArgumentList>
6875         <Raises>
6876           <RaiseException name="WebAPIException">
6877             <descriptive>
6878                 <description><p>
6879  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
6880                 </p></description>
6881                 <description><p>
6882  with error type SecurityError, if the application does not have the privilege to call this method.
6883                 </p></description>
6884                 <description><p>
6885  with error type NotFoundError, if the application is not found with specified ID.
6886                 </p></description>
6887                 <description><p>
6888  with error type UnknownError, if the application cannot be retrieved because of an unknown error.
6889                 </p></description>
6890             </descriptive>
6891           </RaiseException>
6892         </Raises>
6893       </Operation>
6894       <Operation name="getAppSharedURI" id="::Application::ApplicationManager::getAppSharedURI">
6895         <webidl>    DOMString getAppSharedURI(optional <ref>ApplicationId</ref>? id) raises(<ref>WebAPIException</ref>);</webidl>
6896         <descriptive>
6897             <brief>
6898  Gets URI of read-only shared directory of application for a specified application ID.
6899             </brief>
6900            <description>
6901             <p>
6902 The shared directory is used to export data to other applications.
6903 If the ID is set to <var>null</var> or not set at all, it returns shared directory URI for the current application.
6904             </p>
6905            </description>
6906             <version>
6907  2.1
6908             </version>
6909             <Code> var sharedDir = tizen.application.getAppSharedURI(null);
6910  console.log(&quot;shared directory : &quot; + sharedDir);
6911  </Code>
6912         </descriptive>
6913         <Type type="DOMString">
6914           <descriptive>
6915               <description><p>
6916  DOMString The shared directory URI of application
6917               </p></description>
6918           </descriptive>
6919         </Type>
6920         <ArgumentList>
6921           <Argument optional="optional" name="id">
6922             <descriptive>
6923                 <description><p>
6924  A string representing application ID. If the ID is not provided, the shared directory URI of the calling application will be returned.
6925                 </p></description>
6926             </descriptive>
6927             <Type name="ApplicationId" nullable="nullable"/>
6928           </Argument>
6929         </ArgumentList>
6930         <Raises>
6931           <RaiseException name="WebAPIException">
6932             <descriptive>
6933                 <description><p>
6934  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
6935                 </p></description>
6936                 <description><p>
6937  with error type NotFoundError, if the application is not found with specified ID.
6938                 </p></description>
6939                 <description><p>
6940  with error type UnknownError, if the application cannot be retrieved because of an unknown error.
6941                 </p></description>
6942             </descriptive>
6943           </RaiseException>
6944         </Raises>
6945       </Operation>
6946       <Operation name="getAppMetaData" id="::Application::ApplicationManager::getAppMetaData">
6947         <webidl>    <ref>ApplicationMetaData</ref>[] getAppMetaData(optional <ref>ApplicationId</ref>? id) raises(<ref>WebAPIException</ref>);</webidl>
6948         <descriptive>
6949             <brief>
6950  Gets application meta data array for a specified application ID.
6951             </brief>
6952            <description>
6953             <p>
6954 If the ID is set to <var>null</var> or not set at all, it returns application meta data array for the current application.
6955             </p>
6956            </description>
6957             <version>
6958  2.2
6959             </version>
6960             <privilegelevel>
6961  public
6962             </privilegelevel>
6963             <privilege>
6964  http://tizen.org/privilege/application.info
6965             </privilege>
6966             <Code> var metaDataArray = tizen.application.getAppMetaData(null);
6967  console.log(&quot;size of metadata : &quot; + metaDataArray.length);
6968
6969  </Code>
6970         </descriptive>
6971         <Type type="array">
6972           <descriptive>
6973               <description><p>
6974  ApplicationMetaData[] Array of meta data of a specified application. If there are no meta data for a specified application, 
6975 empty array will be returned
6976               </p></description>
6977           </descriptive>
6978           <Type name="ApplicationMetaData"/>
6979         </Type>
6980         <ArgumentList>
6981           <Argument optional="optional" name="id">
6982             <descriptive>
6983                 <description><p>
6984  A string representing application ID. If the ID is not provided, the application metadata array of the calling application will be returned.
6985                 </p></description>
6986             </descriptive>
6987             <Type name="ApplicationId" nullable="nullable"/>
6988           </Argument>
6989         </ArgumentList>
6990         <Raises>
6991           <RaiseException name="WebAPIException">
6992             <descriptive>
6993                 <description><p>
6994  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
6995                 </p></description>
6996                 <description><p>
6997  with error type SecurityError, if the application does not have the privilege to call this method.
6998                 </p></description>
6999                 <description><p>
7000  with error type NotFoundError, if the application is not found with specified ID.
7001                 </p></description>
7002                 <description><p>
7003  with error type UnknownError, if the application cannot be retrieved because of an unknown error.
7004                 </p></description>
7005             </descriptive>
7006           </RaiseException>
7007         </Raises>
7008       </Operation>
7009       <Operation name="addAppInfoEventListener" id="::Application::ApplicationManager::addAppInfoEventListener">
7010         <webidl>    long addAppInfoEventListener(<ref>ApplicationInformationEventCallback</ref> eventCallback) raises(<ref>WebAPIException</ref>);</webidl>
7011         <descriptive>
7012             <brief>
7013  Adds a listener for receiving any notification for changes in the list of the installed applications
7014 on a device.
7015             </brief>
7016            <description>
7017             <p>
7018 It install a callback that is triggered every time a change occurs on
7019 the list of installed applications on a device. This change may
7020 be occurred by a new installation, uninstallation, or update of an application.
7021             </p>
7022             <p>
7023 When executed, the implementation must immediately return a listener
7024 ID that identifies the listener. After returning the ID, the change
7025 detection operation is started asynchronously.
7026             </p>
7027             <p>
7028 The <em>ApplicationInformationEventCallback </em>must be invoked every time a new
7029 application is installed, removed, or updated.
7030             </p>
7031             <p>
7032 The change detection must continue until the <em>removeAppInfoEventListener()</em> method is called
7033 with the corresponding listener identifier.
7034             </p>
7035            </description>
7036             <version>
7037  2.0
7038             </version>
7039             <Code> var appEventCallback = {
7040     oninstalled: function(appInfo) {
7041        console.log('The application ' + appInfo.name + ' is installed');
7042     },
7043     onupdated: function(appInfo) {
7044        console.log('The application ' + appInfo.name + ' is updated');
7045     },
7046     onuninstalled: function(appid) {
7047        console.log('The application ' + appid + ' is uninstalled');
7048     }
7049  };
7050  var watchId = tizen.application.addAppInfoEventListener(appEventCallback);
7051  </Code>
7052         </descriptive>
7053         <Type type="long">
7054           <descriptive>
7055               <description><p>
7056  long ID of the listener that can be used to remove the listener later.
7057               </p></description>
7058           </descriptive>
7059         </Type>
7060         <ArgumentList>
7061           <Argument name="eventCallback">
7062             <descriptive>
7063                 <description><p>
7064  The method to call when a change on the installed applications is made.
7065                 </p></description>
7066             </descriptive>
7067             <Type name="ApplicationInformationEventCallback"/>
7068           </Argument>
7069         </ArgumentList>
7070         <Raises>
7071           <RaiseException name="WebAPIException">
7072             <descriptive>
7073                 <description><p>
7074  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
7075                 </p></description>
7076                 <description><p>
7077  with error type UnknownError, if fails to add listener because of an unknown error.
7078                 </p></description>
7079             </descriptive>
7080           </RaiseException>
7081         </Raises>
7082       </Operation>
7083       <Operation name="removeAppInfoEventListener" id="::Application::ApplicationManager::removeAppInfoEventListener">
7084         <webidl>    void removeAppInfoEventListener(long watchId) raises(<ref>WebAPIException</ref>);</webidl>
7085         <descriptive>
7086             <brief>
7087  Removes the listener to stop receiving notifications for changes on the list of installed
7088 applications on a device.
7089             </brief>
7090             <version>
7091  2.0
7092             </version>
7093             <Code> tizen.application.removeAppInfoEventListener(watchId);
7094  </Code>
7095         </descriptive>
7096         <Type type="void"/>
7097         <ArgumentList>
7098           <Argument name="watchId">
7099             <descriptive>
7100                 <description><p>
7101  An ID that identifies the listener.
7102                 </p></description>
7103             </descriptive>
7104             <Type type="long"/>
7105           </Argument>
7106         </ArgumentList>
7107         <Raises>
7108           <RaiseException name="WebAPIException">
7109             <descriptive>
7110                 <description><p>
7111  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
7112                 </p></description>
7113                 <description><p>
7114  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
7115                 </p></description>
7116                 <description><p>
7117  with error type NotFoundError, if the listener is not found with specified ID.
7118                 </p></description>
7119                 <description><p>
7120  with error type UnknownError, if fails to remove listener because of an unknown error.
7121                 </p></description>
7122             </descriptive>
7123           </RaiseException>
7124         </Raises>
7125       </Operation>
7126     </Interface>
7127     <Interface name="Application" id="::Application::Application">
7128       <webidl>  [NoInterfaceObject] interface Application {
7129
7130     readonly attribute <ref>ApplicationInformation</ref> appInfo;
7131
7132     readonly attribute <ref>ApplicationContextId</ref> contextId;
7133
7134     void exit() raises(<ref>WebAPIException</ref>);
7135
7136     void hide() raises(<ref>WebAPIException</ref>);
7137
7138     <ref>RequestedApplicationControl</ref> getRequestedAppControl() raises(<ref>WebAPIException</ref>);
7139   };</webidl>
7140       <descriptive>
7141           <brief>
7142  This interface defines the current application's information and 
7143 the basic operations (such as exit or hide) for the current application .
7144           </brief>
7145           <version>
7146  2.0
7147           </version>
7148       </descriptive>
7149       <ExtendedAttributeList>
7150         <ExtendedAttribute name="NoInterfaceObject">
7151           <webidl>NoInterfaceObject</webidl>
7152         </ExtendedAttribute>
7153       </ExtendedAttributeList>
7154       <Attribute readonly="readonly" name="appInfo" id="::Application::Application::appInfo">
7155         <webidl>    readonly attribute <ref>ApplicationInformation</ref> appInfo;</webidl>
7156         <descriptive>
7157             <brief>
7158  An attribute to store the application information for the current application.
7159             </brief>
7160             <version>
7161  2.0
7162             </version>
7163         </descriptive>
7164         <Type name="ApplicationInformation"/>
7165       </Attribute>
7166       <Attribute readonly="readonly" name="contextId" id="::Application::Application::contextId">
7167         <webidl>    readonly attribute <ref>ApplicationContextId</ref> contextId;</webidl>
7168         <descriptive>
7169             <brief>
7170  An attribute to store the ID of a running application.
7171             </brief>
7172             <version>
7173  2.0
7174             </version>
7175         </descriptive>
7176         <Type name="ApplicationContextId"/>
7177       </Attribute>
7178       <Operation name="exit" id="::Application::Application::exit">
7179         <webidl>    void exit() raises(<ref>WebAPIException</ref>);</webidl>
7180         <descriptive>
7181             <brief>
7182  Exits the current application.
7183             </brief>
7184             <version>
7185  2.0
7186             </version>
7187             <Code> var app = tizen.application.getCurrentApplication();
7188
7189  app.exit();
7190  </Code>
7191         </descriptive>
7192         <Type type="void"/>
7193         <ArgumentList/>
7194         <Raises>
7195           <RaiseException name="WebAPIException">
7196             <descriptive>
7197                 <description><p>
7198  with error type UnknownError, if any other error occurs.
7199                 </p></description>
7200             </descriptive>
7201           </RaiseException>
7202         </Raises>
7203       </Operation>
7204       <Operation name="hide" id="::Application::Application::hide">
7205         <webidl>    void hide() raises(<ref>WebAPIException</ref>);</webidl>
7206         <descriptive>
7207             <brief>
7208  Hides the current application.
7209             </brief>
7210             <version>
7211  2.0
7212             </version>
7213             <Code> var app = tizen.application.getCurrentApplication();
7214
7215  app.hide();
7216  </Code>
7217         </descriptive>
7218         <Type type="void"/>
7219         <ArgumentList/>
7220         <Raises>
7221           <RaiseException name="WebAPIException">
7222             <descriptive>
7223                 <description><p>
7224  with error type UnknownError, if any other error occurs.
7225                 </p></description>
7226             </descriptive>
7227           </RaiseException>
7228         </Raises>
7229       </Operation>
7230       <Operation name="getRequestedAppControl" id="::Application::Application::getRequestedAppControl">
7231         <webidl>    <ref>RequestedApplicationControl</ref> getRequestedAppControl() raises(<ref>WebAPIException</ref>);</webidl>
7232         <descriptive>
7233             <brief>
7234  Gets the requested application control passed to the current application.
7235             </brief>
7236            <description>
7237             <p>
7238 Gets the requested application control that contains the application control
7239 passed by the <em>launchAppControl()</em> method from the calling application.
7240 The requested application control contains the reason the application
7241 was launched and what it has to perform. For example, an application
7242 might be launched to display an image on a page by other
7243 application's request. In all of these cases, the application is
7244 responsible for checking the contents of the application control and responding
7245 appropriately when it is launched.
7246             </p>
7247            </description>
7248             <version>
7249  2.0
7250             </version>
7251             <Code> var reqAppControl = tizen.application.getCurrentApplication().getRequestedAppControl();
7252
7253  if (reqAppControl) {
7254      console.log(&quot;Requester AppID : &quot; + reqAppControl.callerAppId);
7255  }
7256  </Code>
7257         </descriptive>
7258         <Type name="RequestedApplicationControl">
7259           <descriptive>
7260               <description><p>
7261  RequestedApplicationControl The details of an requested application control
7262               </p></description>
7263           </descriptive>
7264         </Type>
7265         <ArgumentList/>
7266         <Raises>
7267           <RaiseException name="WebAPIException">
7268             <descriptive>
7269                 <description><p>
7270  with error type UnknownError, if the application control cannot be retrieved because of an unknown error.
7271                 </p></description>
7272             </descriptive>
7273           </RaiseException>
7274         </Raises>
7275       </Operation>
7276     </Interface>
7277     <Interface name="ApplicationInformation" id="::Application::ApplicationInformation">
7278       <webidl>  [NoInterfaceObject] interface ApplicationInformation {
7279
7280     readonly attribute <ref>ApplicationId</ref> id;
7281
7282     readonly attribute DOMString name;
7283
7284     readonly attribute DOMString iconPath;
7285
7286     readonly attribute DOMString version;
7287
7288     readonly attribute boolean show;
7289
7290     readonly attribute DOMString[] categories;
7291
7292     readonly attribute Date installDate;
7293
7294     readonly attribute long size raises(<ref>WebAPIException</ref>);
7295
7296     readonly attribute <ref>PackageId</ref> packageId;
7297   };</webidl>
7298       <descriptive>
7299           <brief>
7300  This interface defines the general information available to an installed application.
7301           </brief>
7302           <version>
7303  1.0
7304           </version>
7305       </descriptive>
7306       <ExtendedAttributeList>
7307         <ExtendedAttribute name="NoInterfaceObject">
7308           <webidl>NoInterfaceObject</webidl>
7309         </ExtendedAttribute>
7310       </ExtendedAttributeList>
7311       <Attribute readonly="readonly" name="id" id="::Application::ApplicationInformation::id">
7312         <webidl>    readonly attribute <ref>ApplicationId</ref> id;</webidl>
7313         <descriptive>
7314             <brief>
7315  An attribute to store the identifier of an application for application management.
7316             </brief>
7317             <version>
7318  1.0
7319             </version>
7320         </descriptive>
7321         <Type name="ApplicationId"/>
7322       </Attribute>
7323       <Attribute readonly="readonly" name="name" id="::Application::ApplicationInformation::name">
7324         <webidl>    readonly attribute DOMString name;</webidl>
7325         <descriptive>
7326             <brief>
7327  An attribute to store the name of an application.
7328             </brief>
7329             <version>
7330  1.0
7331             </version>
7332         </descriptive>
7333         <Type type="DOMString"/>
7334       </Attribute>
7335       <Attribute readonly="readonly" name="iconPath" id="::Application::ApplicationInformation::iconPath">
7336         <webidl>    readonly attribute DOMString iconPath;</webidl>
7337         <descriptive>
7338             <brief>
7339  An attribute to store the icon path of an application.
7340             </brief>
7341             <version>
7342  1.0
7343             </version>
7344         </descriptive>
7345         <Type type="DOMString"/>
7346       </Attribute>
7347       <Attribute readonly="readonly" name="version" id="::Application::ApplicationInformation::version">
7348         <webidl>    readonly attribute DOMString version;</webidl>
7349         <descriptive>
7350             <brief>
7351  An attribute to store the version of an application.
7352             </brief>
7353             <version>
7354  1.0
7355             </version>
7356         </descriptive>
7357         <Type type="DOMString"/>
7358       </Attribute>
7359       <Attribute readonly="readonly" name="show" id="::Application::ApplicationInformation::show">
7360         <webidl>    readonly attribute boolean show;</webidl>
7361         <descriptive>
7362             <brief>
7363  An attribute that determines whether the application information should
7364 be shown (such as in the menus) or not.
7365             </brief>
7366             <version>
7367  1.0
7368             </version>
7369         </descriptive>
7370         <Type type="boolean"/>
7371       </Attribute>
7372       <Attribute readonly="readonly" name="categories" id="::Application::ApplicationInformation::categories">
7373         <webidl>    readonly attribute DOMString[] categories;</webidl>
7374         <descriptive>
7375             <brief>
7376  An array of attributes to store the categories that the app belongs to.
7377             </brief>
7378             <version>
7379  2.0
7380             </version>
7381         </descriptive>
7382         <Type type="array">
7383           <Type type="DOMString"/>
7384         </Type>
7385       </Attribute>
7386       <Attribute readonly="readonly" name="installDate" id="::Application::ApplicationInformation::installDate">
7387         <webidl>    readonly attribute Date installDate;</webidl>
7388         <descriptive>
7389             <brief>
7390  An attribute to store the application install/update time.
7391             </brief>
7392             <version>
7393  2.0
7394             </version>
7395         </descriptive>
7396         <Type type="Date"/>
7397       </Attribute>
7398       <Attribute readonly="readonly" name="size" id="::Application::ApplicationInformation::size">
7399         <webidl>    readonly attribute long size raises(<ref>WebAPIException</ref>);</webidl>
7400         <descriptive>
7401             <brief>
7402  An attribute to store the application size (installed space).
7403             </brief>
7404             <version>
7405  2.0
7406             </version>
7407             <privilegelevel>
7408  public
7409             </privilegelevel>
7410             <privilege>
7411  http://tizen.org/privilege/application.info
7412             </privilege>
7413         </descriptive>
7414         <Type type="long"/>
7415         <Raises>
7416           <RaiseException name="WebAPIException">
7417             <descriptive>
7418                 <description><p>
7419  with error type SecurityError, if this attribute is not allowed.
7420                 </p></description>
7421             </descriptive>
7422           </RaiseException>
7423         </Raises>
7424       </Attribute>
7425       <Attribute readonly="readonly" name="packageId" id="::Application::ApplicationInformation::packageId">
7426         <webidl>    readonly attribute <ref>PackageId</ref> packageId;</webidl>
7427         <descriptive>
7428             <brief>
7429  An attribute to store the package ID of application.
7430             </brief>
7431             <version>
7432  2.1
7433             </version>
7434         </descriptive>
7435         <Type name="PackageId"/>
7436       </Attribute>
7437     </Interface>
7438     <Interface name="ApplicationContext" id="::Application::ApplicationContext">
7439       <webidl>  [NoInterfaceObject] interface ApplicationContext {
7440
7441     readonly attribute <ref>ApplicationContextId</ref> id;
7442
7443     readonly attribute <ref>ApplicationId</ref> appId;
7444
7445   };</webidl>
7446       <descriptive>
7447           <brief>
7448  This interface defines the information available about a running
7449 application.
7450           </brief>
7451           <version>
7452  1.0
7453           </version>
7454       </descriptive>
7455       <ExtendedAttributeList>
7456         <ExtendedAttribute name="NoInterfaceObject">
7457           <webidl>NoInterfaceObject</webidl>
7458         </ExtendedAttribute>
7459       </ExtendedAttributeList>
7460       <Attribute readonly="readonly" name="id" id="::Application::ApplicationContext::id">
7461         <webidl>    readonly attribute <ref>ApplicationContextId</ref> id;</webidl>
7462         <descriptive>
7463             <brief>
7464  An attribute to store the ID of a running application.
7465             </brief>
7466             <version>
7467  1.0
7468             </version>
7469         </descriptive>
7470         <Type name="ApplicationContextId"/>
7471       </Attribute>
7472       <Attribute readonly="readonly" name="appId" id="::Application::ApplicationContext::appId">
7473         <webidl>    readonly attribute <ref>ApplicationId</ref> appId;</webidl>
7474         <descriptive>
7475             <brief>
7476  An attribute to store the ID of an installed application.
7477             </brief>
7478             <version>
7479  1.0
7480             </version>
7481         </descriptive>
7482         <Type name="ApplicationId"/>
7483       </Attribute>
7484     </Interface>
7485     <Interface name="ApplicationControlData" id="::Application::ApplicationControlData">
7486       <webidl>  [Constructor(DOMString key, DOMString[] value)]
7487   interface ApplicationControlData {
7488
7489     attribute DOMString key;
7490
7491     attribute DOMString[] value;
7492
7493   };</webidl>
7494       <descriptive>
7495           <brief>
7496  This interface defines a key/value pair used to pass data
7497 between applications through the <em>ApplicationControl </em>interface.
7498           </brief>
7499           <version>
7500  2.0
7501           </version>
7502           <Code> var appControlData = new tizen.ApplicationControlData(&quot;image&quot;, [imagedata1]);
7503  </Code>
7504       </descriptive>
7505       <ExtendedAttributeList>
7506         <ExtendedAttribute name="Constructor">
7507           <webidl>Constructor(DOMString key, DOMString[] value)</webidl>
7508           <ArgumentList>
7509             <Argument name="key">
7510               <Type type="DOMString"/>
7511             </Argument>
7512             <Argument name="value">
7513               <Type type="array">
7514                 <Type type="DOMString"/>
7515               </Type>
7516             </Argument>
7517           </ArgumentList>
7518         </ExtendedAttribute>
7519       </ExtendedAttributeList>
7520       <Attribute name="key" id="::Application::ApplicationControlData::key">
7521         <webidl>    attribute DOMString key;</webidl>
7522         <descriptive>
7523             <brief>
7524  An attribute to store the name of a key.
7525             </brief>
7526             <version>
7527  2.0
7528             </version>
7529         </descriptive>
7530         <Type type="DOMString"/>
7531       </Attribute>
7532       <Attribute name="value" id="::Application::ApplicationControlData::value">
7533         <webidl>    attribute DOMString[] value;</webidl>
7534         <descriptive>
7535             <brief>
7536  An attribute to store the value associated with a key.
7537             </brief>
7538             <version>
7539  2.0
7540             </version>
7541         </descriptive>
7542         <Type type="array">
7543           <Type type="DOMString"/>
7544         </Type>
7545       </Attribute>
7546     </Interface>
7547     <Interface name="ApplicationControl" id="::Application::ApplicationControl">
7548       <webidl>  [Constructor(DOMString operation, optional DOMString? uri,
7549                optional DOMString? mime, optional DOMString? category,
7550                optional <ref>ApplicationControlData</ref>[]? data)]
7551   interface ApplicationControl {
7552
7553     attribute DOMString operation;
7554
7555     attribute DOMString? uri;
7556
7557     attribute DOMString? mime;
7558
7559     attribute DOMString? category;
7560
7561     attribute <ref>ApplicationControlData</ref>[] data;
7562
7563   };</webidl>
7564       <descriptive>
7565           <brief>
7566  This interface consists of an operation, URI, MIME type,
7567 and data. It describes an action to be performed by other applications
7568 and is passed to launch other applications.
7569 If the system gets the application control request, it finds
7570 the corresponding application to be launched with the delivered application control
7571 and launches the selected application.
7572           </brief>
7573           <version>
7574  2.0
7575           </version>
7576           <Code> var appControl =
7577        new tizen.ApplicationControl(
7578                   &quot;http://tizen.org/appcontrol/operation/view&quot;,
7579                   null,
7580                   &quot;image/jpeg&quot;,
7581                   null,
7582                   [new tizen.ApplicationControlData(&quot;images&quot;,
7583                                                     [imagedata1, imagedata2])] );
7584  </Code>
7585       </descriptive>
7586       <ExtendedAttributeList>
7587         <ExtendedAttribute name="Constructor">
7588           <webidl>Constructor(DOMString operation, optional DOMString? uri,
7589                optional DOMString? mime, optional DOMString? category,
7590                optional <ref>ApplicationControlData</ref>[]? data)</webidl>
7591           <ArgumentList>
7592             <Argument name="operation">
7593               <Type type="DOMString"/>
7594             </Argument>
7595             <Argument optional="optional" name="uri">
7596               <Type type="DOMString" nullable="nullable"/>
7597             </Argument>
7598             <Argument optional="optional" name="mime">
7599               <Type type="DOMString" nullable="nullable"/>
7600             </Argument>
7601             <Argument optional="optional" name="category">
7602               <Type type="DOMString" nullable="nullable"/>
7603             </Argument>
7604             <Argument optional="optional" name="data">
7605               <Type type="array" nullable="nullable">
7606                 <Type name="ApplicationControlData"/>
7607               </Type>
7608             </Argument>
7609           </ArgumentList>
7610         </ExtendedAttribute>
7611       </ExtendedAttributeList>
7612       <Attribute name="operation" id="::Application::ApplicationControl::operation">
7613         <webidl>    attribute DOMString operation;</webidl>
7614         <descriptive>
7615             <brief>
7616  An attribute to store the string that defines the action to be
7617 performed by an application control.
7618             </brief>
7619             <version>
7620  2.0
7621             </version>
7622         </descriptive>
7623         <Type type="DOMString"/>
7624       </Attribute>
7625       <Attribute name="uri" id="::Application::ApplicationControl::uri">
7626         <webidl>    attribute DOMString? uri;</webidl>
7627         <descriptive>
7628             <brief>
7629  An attribute to store the URI needed by application control.
7630             </brief>
7631             <version>
7632  2.0
7633             </version>
7634         </descriptive>
7635         <Type type="DOMString" nullable="nullable"/>
7636       </Attribute>
7637       <Attribute name="mime" id="::Application::ApplicationControl::mime">
7638         <webidl>    attribute DOMString? mime;</webidl>
7639         <descriptive>
7640             <brief>
7641  An attribute to store the MIME type of a content.
7642             </brief>
7643             <version>
7644  2.0
7645             </version>
7646         </descriptive>
7647         <Type type="DOMString" nullable="nullable"/>
7648       </Attribute>
7649       <Attribute name="category" id="::Application::ApplicationControl::category">
7650         <webidl>    attribute DOMString? category;</webidl>
7651         <descriptive>
7652             <brief>
7653  An attribute to store the category of the application to be launched.
7654             </brief>
7655             <version>
7656  2.0
7657             </version>
7658         </descriptive>
7659         <Type type="DOMString" nullable="nullable"/>
7660       </Attribute>
7661       <Attribute name="data" id="::Application::ApplicationControl::data">
7662         <webidl>    attribute <ref>ApplicationControlData</ref>[] data;</webidl>
7663         <descriptive>
7664             <brief>
7665  An array of attributes to store the data needed for an application control.
7666             </brief>
7667             <version>
7668  2.0
7669             </version>
7670         </descriptive>
7671         <Type type="array">
7672           <Type name="ApplicationControlData"/>
7673         </Type>
7674       </Attribute>
7675     </Interface>
7676     <Interface name="RequestedApplicationControl" id="::Application::RequestedApplicationControl">
7677       <webidl>  [NoInterfaceObject] interface RequestedApplicationControl {
7678
7679     readonly attribute <ref>ApplicationControl</ref> appControl;
7680
7681     readonly attribute <ref>ApplicationId</ref> callerAppId;
7682
7683     void replyResult(optional <ref>ApplicationControlData</ref>[]? data) raises(<ref>WebAPIException</ref>);
7684
7685     void replyFailure() raises(<ref>WebAPIException</ref>);
7686
7687   };</webidl>
7688       <descriptive>
7689           <brief>
7690  This interface has an application control information requested and passed 
7691 from other application and is passed to launch other applications. The newly 
7692 launched application can get the requested application control through <em>getRequestedAppControl()</em> method, and send the results
7693 to the calling application through the <em>replyResult()</em> method after performing the
7694 required action requested the calling application.
7695           </brief>
7696           <version>
7697  2.0
7698           </version>
7699           <Code> var reqAppControl = tizen.application.getCurrentApplication().getRequestedAppControl();
7700  if (reqAppControl) {
7701      console.log(&quot;Requester AppID : &quot; + reqAppControl.callerAppId);
7702
7703      var appControl = reqAppControl.appControl;
7704      if (appControl.operation == &quot;http://tizen.org/appcontrol/operation/pick&quot;) {
7705          var data = new tizen.ApplicationControlData(&quot;http://tizen.org/appcontrol/data/selected&quot;, [&quot;Image1.jpg&quot;]);
7706          reqAppControl.replyResult([data]);
7707      }
7708  }
7709  </Code>
7710       </descriptive>
7711       <ExtendedAttributeList>
7712         <ExtendedAttribute name="NoInterfaceObject">
7713           <webidl>NoInterfaceObject</webidl>
7714         </ExtendedAttribute>
7715       </ExtendedAttributeList>
7716       <Attribute readonly="readonly" name="appControl" id="::Application::RequestedApplicationControl::appControl">
7717         <webidl>    readonly attribute <ref>ApplicationControl</ref> appControl;</webidl>
7718         <descriptive>
7719             <brief>
7720  An attribute to store the application control object that describes caller application's request.
7721 It contains the information that the calling application passed to <em>launchAppControl</em>.
7722             </brief>
7723             <version>
7724  2.0
7725             </version>
7726         </descriptive>
7727         <Type name="ApplicationControl"/>
7728       </Attribute>
7729       <Attribute readonly="readonly" name="callerAppId" id="::Application::RequestedApplicationControl::callerAppId">
7730         <webidl>    readonly attribute <ref>ApplicationId</ref> callerAppId;</webidl>
7731         <descriptive>
7732             <brief>
7733  An attribute to store the caller application's ID
7734             </brief>
7735             <version>
7736  2.1
7737             </version>
7738         </descriptive>
7739         <Type name="ApplicationId"/>
7740       </Attribute>
7741       <Operation name="replyResult" id="::Application::RequestedApplicationControl::replyResult">
7742         <webidl>    void replyResult(optional <ref>ApplicationControlData</ref>[]? data) raises(<ref>WebAPIException</ref>);</webidl>
7743         <descriptive>
7744             <brief>
7745  Sends the results to the caller application.
7746             </brief>
7747             <version>
7748  2.0
7749             </version>
7750         </descriptive>
7751         <Type type="void"/>
7752         <ArgumentList>
7753           <Argument optional="optional" name="data">
7754             <descriptive>
7755                 <description><p>
7756  An array of ApplicationControlData objects.     
7757                 </p></description>
7758             </descriptive>
7759             <Type type="array" nullable="nullable">
7760               <Type name="ApplicationControlData"/>
7761             </Type>
7762           </Argument>
7763         </ArgumentList>
7764         <Raises>
7765           <RaiseException name="WebAPIException">
7766             <descriptive>
7767                 <description><p>
7768  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
7769                 </p></description>
7770                 <description><p>
7771  with error type NotFoundError, if the caller app is not alive or there is no response from the caller app
7772                 </p></description>
7773                 <description><p>
7774  with error type UnknownError, if the reply request fails because of an unknown error
7775                 </p></description>
7776             </descriptive>
7777           </RaiseException>
7778         </Raises>
7779       </Operation>
7780       <Operation name="replyFailure" id="::Application::RequestedApplicationControl::replyFailure">
7781         <webidl>    void replyFailure() raises(<ref>WebAPIException</ref>);</webidl>
7782         <descriptive>
7783             <brief>
7784  Notifies the calling application that the application failed
7785 to perform the requested action.
7786             </brief>
7787             <version>
7788  2.0
7789             </version>
7790         </descriptive>
7791         <Type type="void"/>
7792         <ArgumentList/>
7793         <Raises>
7794           <RaiseException name="WebAPIException">
7795             <descriptive>
7796                 <description><p>
7797  with error type NotFoundError, if the caller app is not alive or there is no response from the caller app
7798                 </p></description>
7799                 <description><p>
7800  with error type UnknownError, if the reply request fails because of an unknown error
7801                 </p></description>
7802             </descriptive>
7803           </RaiseException>
7804         </Raises>
7805       </Operation>
7806     </Interface>
7807     <Interface name="ApplicationCertificate" id="::Application::ApplicationCertificate">
7808       <webidl>  [NoInterfaceObject] interface ApplicationCertificate {
7809
7810     readonly attribute DOMString type;
7811
7812     readonly attribute DOMString value;
7813
7814   };</webidl>
7815       <descriptive>
7816           <brief>
7817  This interface defines the certificate information of an installed application.
7818           </brief>
7819           <version>
7820  2.0
7821           </version>
7822       </descriptive>
7823       <ExtendedAttributeList>
7824         <ExtendedAttribute name="NoInterfaceObject">
7825           <webidl>NoInterfaceObject</webidl>
7826         </ExtendedAttribute>
7827       </ExtendedAttributeList>
7828       <Attribute readonly="readonly" name="type" id="::Application::ApplicationCertificate::type">
7829         <webidl>    readonly attribute DOMString type;</webidl>
7830         <descriptive>
7831             <brief>
7832  An attribute to store the type of the application certificate.
7833             </brief>
7834             <version>
7835  2.0
7836             </version>
7837         </descriptive>
7838         <Type type="DOMString"/>
7839       </Attribute>
7840       <Attribute readonly="readonly" name="value" id="::Application::ApplicationCertificate::value">
7841         <webidl>    readonly attribute DOMString value;</webidl>
7842         <descriptive>
7843             <brief>
7844  An attribute to store the value of the application certificate.
7845             </brief>
7846             <version>
7847  2.0
7848             </version>
7849         </descriptive>
7850         <Type type="DOMString"/>
7851       </Attribute>
7852     </Interface>
7853     <Interface name="ApplicationMetaData" id="::Application::ApplicationMetaData">
7854       <webidl>  [NoInterfaceObject] interface ApplicationMetaData {
7855
7856     readonly attribute DOMString key;
7857
7858     readonly attribute DOMString value;
7859
7860   };</webidl>
7861       <descriptive>
7862           <brief>
7863  This interface defines the meta data of an installed application.
7864           </brief>
7865           <version>
7866  2.2
7867           </version>
7868       </descriptive>
7869       <ExtendedAttributeList>
7870         <ExtendedAttribute name="NoInterfaceObject">
7871           <webidl>NoInterfaceObject</webidl>
7872         </ExtendedAttribute>
7873       </ExtendedAttributeList>
7874       <Attribute readonly="readonly" name="key" id="::Application::ApplicationMetaData::key">
7875         <webidl>    readonly attribute DOMString key;</webidl>
7876         <descriptive>
7877             <brief>
7878  An attribute to store the key of the application meta data.
7879             </brief>
7880             <version>
7881  2.2
7882             </version>
7883         </descriptive>
7884         <Type type="DOMString"/>
7885       </Attribute>
7886       <Attribute readonly="readonly" name="value" id="::Application::ApplicationMetaData::value">
7887         <webidl>    readonly attribute DOMString value;</webidl>
7888         <descriptive>
7889             <brief>
7890  An attribute to store the value of the application meta data.
7891             </brief>
7892             <version>
7893  2.2
7894             </version>
7895         </descriptive>
7896         <Type type="DOMString"/>
7897       </Attribute>
7898     </Interface>
7899     <Interface name="ApplicationInformationArraySuccessCallback" id="::Application::ApplicationInformationArraySuccessCallback">
7900       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface ApplicationInformationArraySuccessCallback {
7901     void onsuccess(<ref>ApplicationInformation</ref>[] informationArray);
7902   };</webidl>
7903       <descriptive>
7904           <brief>
7905  This interface invokes the success callback that is invoked when the installed application list is retrieved.
7906           </brief>
7907          <description>
7908           <p>
7909 This callback interface specifies a success method with an array of
7910 <em>ApplicationInformation </em>objects as an input parameter. It is used in <em>ApplicationManager.getAppsInfo()</em>.
7911           </p>
7912          </description>
7913           <version>
7914  1.0
7915           </version>
7916       </descriptive>
7917       <ExtendedAttributeList>
7918         <ExtendedAttribute name="Callback" value="FunctionOnly">
7919           <webidl>Callback</webidl>
7920         </ExtendedAttribute>
7921         <ExtendedAttribute name="NoInterfaceObject">
7922           <webidl> NoInterfaceObject</webidl>
7923         </ExtendedAttribute>
7924       </ExtendedAttributeList>
7925       <Operation name="onsuccess" id="::Application::ApplicationInformationArraySuccessCallback::onsuccess">
7926         <webidl>    void onsuccess(<ref>ApplicationInformation</ref>[] informationArray);</webidl>
7927         <descriptive>
7928             <brief>
7929  Called when the asynchronous call completes successfully.
7930             </brief>
7931             <version>
7932  1.0
7933             </version>
7934         </descriptive>
7935         <Type type="void"/>
7936         <ArgumentList>
7937           <Argument name="informationArray">
7938             <descriptive>
7939                 <description><p>
7940  A list of installed applications.
7941                 </p></description>
7942             </descriptive>
7943             <Type type="array">
7944               <Type name="ApplicationInformation"/>
7945             </Type>
7946           </Argument>
7947         </ArgumentList>
7948       </Operation>
7949     </Interface>
7950     <Interface name="FindAppControlSuccessCallback" id="::Application::FindAppControlSuccessCallback">
7951       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface FindAppControlSuccessCallback {
7952     void onsuccess(<ref>ApplicationInformation</ref>[] informationArray, <ref>ApplicationControl</ref> appControl);
7953   };</webidl>
7954       <descriptive>
7955           <brief>
7956  This interface specified a success callback that is invoked when system finished searching applications which is matched by specific application control .
7957           </brief>
7958          <description>
7959           <p>
7960 This callback interface specifies a success method with an array of
7961 <em>ApplicationInformation </em>objects and application control as an input parameter.
7962 It is used in <em>ApplicationManager.findAppControl()</em>.
7963           </p>
7964          </description>
7965           <version>
7966  2.0
7967           </version>
7968       </descriptive>
7969       <ExtendedAttributeList>
7970         <ExtendedAttribute name="Callback" value="FunctionOnly">
7971           <webidl>Callback</webidl>
7972         </ExtendedAttribute>
7973         <ExtendedAttribute name="NoInterfaceObject">
7974           <webidl> NoInterfaceObject</webidl>
7975         </ExtendedAttribute>
7976       </ExtendedAttributeList>
7977       <Operation name="onsuccess" id="::Application::FindAppControlSuccessCallback::onsuccess">
7978         <webidl>    void onsuccess(<ref>ApplicationInformation</ref>[] informationArray, <ref>ApplicationControl</ref> appControl);</webidl>
7979         <descriptive>
7980             <brief>
7981  Called when the asynchronous call completes successfully.
7982             </brief>
7983             <version>
7984  2.0
7985             </version>
7986         </descriptive>
7987         <Type type="void"/>
7988         <ArgumentList>
7989           <Argument name="informationArray">
7990             <descriptive>
7991                 <description><p>
7992  A list of installed applications.
7993                 </p></description>
7994             </descriptive>
7995             <Type type="array">
7996               <Type name="ApplicationInformation"/>
7997             </Type>
7998           </Argument>
7999           <Argument name="appControl">
8000             <descriptive>
8001                 <description><p>
8002  The application control which were passed on <em>ApplicationManager.findAppControl()</em>.
8003                 </p></description>
8004             </descriptive>
8005             <Type name="ApplicationControl"/>
8006           </Argument>
8007         </ArgumentList>
8008       </Operation>
8009     </Interface>
8010     <Interface name="ApplicationContextArraySuccessCallback" id="::Application::ApplicationContextArraySuccessCallback">
8011       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface ApplicationContextArraySuccessCallback {
8012     void onsuccess(<ref>ApplicationContext</ref>[] contexts);
8013   };</webidl>
8014       <descriptive>
8015           <brief>
8016  This callback interface that specifies the success callback that is invoked when the list of running applications is retrieved.
8017           </brief>
8018          <description>
8019           <p>
8020 This callback interface specifies a success method with
8021 an array of <em>ApplicationContext </em>objects as an input parameter. It is used in <em>ApplicationManager.getAppsContext()</em>.
8022           </p>
8023          </description>
8024           <version>
8025  1.0
8026           </version>
8027       </descriptive>
8028       <ExtendedAttributeList>
8029         <ExtendedAttribute name="Callback" value="FunctionOnly">
8030           <webidl>Callback</webidl>
8031         </ExtendedAttribute>
8032         <ExtendedAttribute name="NoInterfaceObject">
8033           <webidl> NoInterfaceObject</webidl>
8034         </ExtendedAttribute>
8035       </ExtendedAttributeList>
8036       <Operation name="onsuccess" id="::Application::ApplicationContextArraySuccessCallback::onsuccess">
8037         <webidl>    void onsuccess(<ref>ApplicationContext</ref>[] contexts);</webidl>
8038         <descriptive>
8039             <brief>
8040  Called when <em>ApplicationManager.getAppsContext() </em>completes successfully.
8041             </brief>
8042             <version>
8043  1.0
8044             </version>
8045         </descriptive>
8046         <Type type="void"/>
8047         <ArgumentList>
8048           <Argument name="contexts">
8049             <descriptive>
8050                 <description><p>
8051  A list of running applications.
8052                 </p></description>
8053             </descriptive>
8054             <Type type="array">
8055               <Type name="ApplicationContext"/>
8056             </Type>
8057           </Argument>
8058         </ArgumentList>
8059       </Operation>
8060     </Interface>
8061     <Interface name="ApplicationControlDataArrayReplyCallback" id="::Application::ApplicationControlDataArrayReplyCallback">
8062       <webidl>  [Callback, NoInterfaceObject] interface ApplicationControlDataArrayReplyCallback {
8063     void onsuccess(optional <ref>ApplicationControlData</ref>[]? data);
8064
8065     void onfailure();
8066   };</webidl>
8067       <descriptive>
8068           <brief>
8069  This callback interface specifies success callbacks that are invoked as a reply from the requested application control within the application control requester.
8070           </brief>
8071          <description>
8072           <p>
8073 This callback interface specifies two methods:
8074           </p>
8075           <ul>
8076             <li>
8077  <em>onsuccess()</em> - Invoked by the callee application calls <em>RequestedApplicationControl.replyResult()</em>.            </li>
8078             <li>
8079  <em>onfailure()</em> - Invoked if the callee application calls <em>RequestedApplicationControl.replyFailure()</em>.            </li>
8080           </ul>
8081          </description>
8082           <version>
8083  2.0
8084           </version>
8085       </descriptive>
8086       <ExtendedAttributeList>
8087         <ExtendedAttribute name="Callback">
8088           <webidl>Callback</webidl>
8089         </ExtendedAttribute>
8090         <ExtendedAttribute name="NoInterfaceObject">
8091           <webidl> NoInterfaceObject</webidl>
8092         </ExtendedAttribute>
8093       </ExtendedAttributeList>
8094       <Operation name="onsuccess" id="::Application::ApplicationControlDataArrayReplyCallback::onsuccess">
8095         <webidl>    void onsuccess(optional <ref>ApplicationControlData</ref>[]? data);</webidl>
8096         <descriptive>
8097             <brief>
8098  Called when the callee application calls <em>RequestedApplicationControl.replyResult()</em>.
8099             </brief>
8100             <version>
8101  2.0
8102             </version>
8103         </descriptive>
8104         <Type type="void"/>
8105         <ArgumentList>
8106           <Argument optional="optional" name="data">
8107             <descriptive>
8108                 <description><p>
8109  An array of <em>ApplicationControlData </em>objects.
8110                 </p></description>
8111             </descriptive>
8112             <Type type="array" nullable="nullable">
8113               <Type name="ApplicationControlData"/>
8114             </Type>
8115           </Argument>
8116         </ArgumentList>
8117       </Operation>
8118       <Operation name="onfailure" id="::Application::ApplicationControlDataArrayReplyCallback::onfailure">
8119         <webidl>    void onfailure();</webidl>
8120         <descriptive>
8121             <brief>
8122  Called when the callee application calls <em>RequestedApplicationControl.replyFailure()</em>.
8123             </brief>
8124             <version>
8125  2.0
8126             </version>
8127         </descriptive>
8128         <Type type="void"/>
8129         <ArgumentList/>
8130       </Operation>
8131     </Interface>
8132     <Interface name="ApplicationInformationEventCallback" id="::Application::ApplicationInformationEventCallback">
8133       <webidl>  [Callback, NoInterfaceObject] interface ApplicationInformationEventCallback {
8134     void oninstalled(<ref>ApplicationInformation</ref> info);
8135
8136     void onupdated(<ref>ApplicationInformation</ref> info);
8137
8138     void onuninstalled(<ref>ApplicationId</ref> id);
8139   };</webidl>
8140       <descriptive>
8141           <brief>
8142  The callback interface to specify for subscribing for notification of changes in the list of installed
8143 applications on a device.
8144           </brief>
8145          <description>
8146           <p>
8147 This callback interface specifies methods that will be invoked when
8148 an application is installed, updated, or uninstalled.
8149           </p>
8150          </description>
8151           <version>
8152  1.0
8153           </version>
8154       </descriptive>
8155       <ExtendedAttributeList>
8156         <ExtendedAttribute name="Callback">
8157           <webidl>Callback</webidl>
8158         </ExtendedAttribute>
8159         <ExtendedAttribute name="NoInterfaceObject">
8160           <webidl> NoInterfaceObject</webidl>
8161         </ExtendedAttribute>
8162       </ExtendedAttributeList>
8163       <Operation name="oninstalled" id="::Application::ApplicationInformationEventCallback::oninstalled">
8164         <webidl>    void oninstalled(<ref>ApplicationInformation</ref> info);</webidl>
8165         <descriptive>
8166             <brief>
8167  Called when an application is installed.
8168             </brief>
8169             <version>
8170  1.0
8171             </version>
8172         </descriptive>
8173         <Type type="void"/>
8174         <ArgumentList>
8175           <Argument name="info">
8176             <descriptive>
8177                 <description><p>
8178  The application information of the installed application.
8179                 </p></description>
8180             </descriptive>
8181             <Type name="ApplicationInformation"/>
8182           </Argument>
8183         </ArgumentList>
8184       </Operation>
8185       <Operation name="onupdated" id="::Application::ApplicationInformationEventCallback::onupdated">
8186         <webidl>    void onupdated(<ref>ApplicationInformation</ref> info);</webidl>
8187         <descriptive>
8188             <brief>
8189  Called when an application is updated.
8190             </brief>
8191             <version>
8192  1.0
8193             </version>
8194         </descriptive>
8195         <Type type="void"/>
8196         <ArgumentList>
8197           <Argument name="info">
8198             <descriptive>
8199                 <description><p>
8200  The application information of the updated application.
8201                 </p></description>
8202             </descriptive>
8203             <Type name="ApplicationInformation"/>
8204           </Argument>
8205         </ArgumentList>
8206       </Operation>
8207       <Operation name="onuninstalled" id="::Application::ApplicationInformationEventCallback::onuninstalled">
8208         <webidl>    void onuninstalled(<ref>ApplicationId</ref> id);</webidl>
8209         <descriptive>
8210             <brief>
8211  Called when an application is uninstalled.
8212             </brief>
8213             <version>
8214  1.0
8215             </version>
8216         </descriptive>
8217         <Type type="void"/>
8218         <ArgumentList>
8219           <Argument name="id">
8220             <descriptive>
8221                 <description><p>
8222  The ID of the uninstalled application.
8223                 </p></description>
8224             </descriptive>
8225             <Type name="ApplicationId"/>
8226           </Argument>
8227         </ArgumentList>
8228       </Operation>
8229     </Interface>
8230   </Module>
8231   <Module name="Bluetooth" id="::Bluetooth">
8232     <webidl>module Bluetooth {
8233     typedef DOMString BluetoothAddress;
8234     
8235     typedef DOMString BluetoothUUID;
8236     
8237     enum BluetoothSocketState { &quot;CLOSED&quot;, &quot;OPEN&quot; };
8238
8239     enum BluetoothProfileType { &quot;HEALTH&quot; };
8240         
8241     enum BluetoothHealthChannelType { &quot;RELIABLE&quot;, &quot;STREAMING&quot; };
8242     
8243     [NoInterfaceObject] interface BluetoothManagerObject {
8244         readonly attribute <ref>BluetoothManager</ref> bluetooth;
8245     };
8246     <ref>Tizen</ref> implements <ref>BluetoothManagerObject</ref>;
8247
8248     [NoInterfaceObject] interface BluetoothManager {
8249         readonly attribute <ref>BluetoothClassDeviceMajor</ref> deviceMajor;
8250         readonly attribute <ref>BluetoothClassDeviceMinor</ref> deviceMinor;
8251         readonly attribute <ref>BluetoothClassDeviceService</ref> deviceService;
8252         <ref>BluetoothAdapter</ref> getDefaultAdapter() raises(<ref>WebAPIException</ref>);
8253     };
8254
8255
8256     [NoInterfaceObject] interface BluetoothAdapter {
8257         readonly attribute DOMString name;
8258         readonly attribute <ref>BluetoothAddress</ref> address;
8259         readonly attribute boolean powered; 
8260         readonly attribute boolean visible;
8261
8262         void setName(DOMString name,
8263                      optional <ref>SuccessCallback</ref>? successCallback, 
8264                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8265  
8266         void setPowered(boolean state,
8267                         optional <ref>SuccessCallback</ref>? successCallback, 
8268                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);     
8269         
8270         void setVisible(boolean mode,
8271                         optional <ref>SuccessCallback</ref>? successCallback, 
8272                         optional <ref>ErrorCallback</ref>? errorCallback,
8273                         optional unsigned short? timeout) raises(<ref>WebAPIException</ref>);
8274
8275         void setChangeListener(<ref>BluetoothAdapterChangeCallback</ref> listener) raises(<ref>WebAPIException</ref>);
8276
8277         void unsetChangeListener() raises(<ref>WebAPIException</ref>);
8278
8279         void discoverDevices(<ref>BluetoothDiscoverDevicesSuccessCallback</ref> successCallback, 
8280                              optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8281
8282         void stopDiscovery(optional <ref>SuccessCallback</ref>? successCallback, 
8283                            optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8284
8285         void getKnownDevices(<ref>BluetoothDeviceArraySuccessCallback</ref> successCallback, 
8286                              optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8287
8288
8289
8290
8291         void getDevice(<ref>BluetoothAddress</ref> address,
8292                        <ref>BluetoothDeviceSuccessCallback</ref> successCallback, 
8293                        optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8294
8295
8296
8297
8298         void createBonding(<ref>BluetoothAddress</ref> address,
8299                            <ref>BluetoothDeviceSuccessCallback</ref> successCallback, 
8300                            optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8301
8302         void destroyBonding(<ref>BluetoothAddress</ref> address,
8303                             optional <ref>SuccessCallback</ref>? successCallback, 
8304                             optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8305
8306
8307
8308         void registerRFCOMMServiceByUUID(<ref>BluetoothUUID</ref> uuid,
8309                                          DOMString name,
8310                                          <ref>BluetoothServiceSuccessCallback</ref> successCallback, 
8311                                          optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8312
8313         <ref>BluetoothProfileHandler</ref> getBluetoothProfileHandler(<ref>BluetoothProfileType</ref> profileType) raises(<ref>WebAPIException</ref>);
8314
8315              };
8316     [NoInterfaceObject] interface BluetoothDevice {
8317         readonly attribute DOMString name;
8318         readonly attribute <ref>BluetoothAddress</ref> address;
8319         readonly attribute <ref>BluetoothClass</ref> deviceClass;
8320         readonly attribute boolean isBonded;
8321         readonly attribute boolean isTrusted;
8322         readonly attribute boolean isConnected;
8323         readonly attribute <ref>BluetoothUUID</ref>[] uuids;
8324
8325         void connectToServiceByUUID(<ref>BluetoothUUID</ref> uuid,
8326                                     <ref>BluetoothSocketSuccessCallback</ref> successCallback, 
8327                                     optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8328     };
8329     [NoInterfaceObject] interface BluetoothSocket {
8330         readonly attribute <ref>BluetoothUUID</ref> uuid;
8331         readonly attribute <ref>BluetoothSocketState</ref> state;
8332         readonly attribute <ref>BluetoothDevice</ref> peer;
8333         [TreatNonCallableAsNull] attribute <ref>SuccessCallback</ref>? onmessage raises(<ref>WebAPIException</ref>);
8334         [TreatNonCallableAsNull] attribute <ref>SuccessCallback</ref>? onclose raises(<ref>WebAPIException</ref>);
8335         unsigned long writeData(byte[] data) raises(<ref>WebAPIException</ref>);
8336
8337
8338         byte[] readData() raises(<ref>WebAPIException</ref>);
8339
8340
8341         void close() raises(<ref>WebAPIException</ref>);
8342     };
8343
8344     [NoInterfaceObject] interface BluetoothClass {
8345         readonly attribute octet major;
8346         
8347         readonly attribute octet minor;
8348         
8349         readonly attribute unsigned short [] services ;
8350         
8351         boolean hasService(unsigned short service) raises(<ref>WebAPIException</ref>);
8352     };
8353
8354     [NoInterfaceObject] interface BluetoothClassDeviceMajor {
8355
8356         const octet MISC = 0x00;
8357         const octet COMPUTER = 0x01;
8358         const octet PHONE = 0x02;
8359         const octet NETWORK = 0x03;
8360         const octet AUDIO_VIDEO = 0x04;
8361         const octet PERIPHERAL = 0x05;
8362         const octet IMAGING = 0x06;
8363         const octet WEARABLE = 0x07;
8364         const octet TOY = 0x08;
8365         const octet HEALTH = 0x09;
8366         const octet UNCATEGORIZED = 0x1F;
8367     };
8368
8369     [NoInterfaceObject] interface BluetoothClassDeviceMinor {
8370         const octet COMPUTER_UNCATEGORIZED = 0x00;
8371         const octet COMPUTER_DESKTOP = 0x01;
8372         const octet COMPUTER_SERVER = 0x02;
8373         const octet COMPUTER_LAPTOP = 0x03;
8374         const octet COMPUTER_HANDHELD_PC_OR_PDA = 0x04;
8375         const octet COMPUTER_PALM_PC_OR_PDA = 0x05;
8376         const octet COMPUTER_WEARABLE = 0x06;
8377
8378         const octet PHONE_UNCATEGORIZED = 0x00;
8379         const octet PHONE_CELLULAR = 0x01;
8380         const octet PHONE_CORDLESS = 0x02;
8381         const octet PHONE_SMARTPHONE = 0x03;
8382         const octet PHONE_MODEM_OR_GATEWAY = 0x04;
8383         const octet PHONE_ISDN = 0x05;
8384
8385         const octet AV_UNRECOGNIZED = 0x00;
8386         const octet AV_WEARABLE_HEADSET = 0x01;
8387         const octet AV_HANDSFREE = 0x02;
8388         const octet AV_MICROPHONE = 0x04;
8389         const octet AV_LOUDSPEAKER = 0x05;
8390         const octet AV_HEADPHONES = 0x06;
8391         const octet AV_PORTABLE_AUDIO = 0x07;
8392         const octet AV_CAR_AUDIO = 0x08;
8393         const octet AV_SETTOP_BOX = 0x09;
8394         const octet AV_HIFI = 0x0a;
8395         const octet AV_VCR = 0x0b;
8396         const octet AV_VIDEO_CAMERA = 0x0c;
8397         const octet AV_CAMCORDER = 0x0d;
8398         const octet AV_MONITOR = 0x0e;
8399         const octet AV_DISPLAY_AND_LOUDSPEAKER = 0x0f;
8400         const octet AV_VIDEO_CONFERENCING = 0x10;
8401         const octet AV_GAMING_TOY = 0x12;
8402
8403         const octet PERIPHERAL_UNCATEGORIZED = 0;
8404         const octet PERIPHERAL_KEYBOARD = 0x10;
8405         const octet PERIPHERAL_POINTING_DEVICE = 0x20;
8406         const octet PERIPHERAL_KEYBOARD_AND_POINTING_DEVICE = 0x30;
8407         const octet PERIPHERAL_JOYSTICK = 0x01;
8408         const octet PERIPHERAL_GAMEPAD = 0x02;
8409         const octet PERIPHERAL_REMOTE_CONTROL = 0x03;
8410         const octet PERIPHERAL_SENSING_DEVICE = 0x04;
8411         const octet PERIPHERAL_DEGITIZER_TABLET = 0x05;
8412         const octet PERIPHERAL_CARD_READER = 0x06;
8413         const octet PERIPHERAL_DIGITAL_PEN = 0x07;
8414         const octet PERIPHERAL_HANDHELD_SCANNER = 0x08;
8415         const octet PERIPHERAL_HANDHELD_INPUT_DEVICE = 0x09;
8416
8417         const octet IMAGING_UNCATEGORIZED = 0x00;
8418         const octet IMAGING_DISPLAY = 0x04;
8419         const octet IMAGING_CAMERA = 0x08;
8420         const octet IMAGING_SCANNER = 0x10;
8421         const octet IMAGING_PRINTER = 0x20;
8422
8423         const octet WEARABLE_WRITST_WATCH = 0x01;
8424         const octet WEARABLE_PAGER = 0x02;
8425         const octet WEARABLE_JACKET = 0x03;
8426         const octet WEARABLE_HELMET = 0x04;
8427         const octet WEARABLE_GLASSES = 0x05;
8428
8429         const octet TOY_ROBOT = 0x01;
8430         const octet TOY_VEHICLE = 0x02;
8431         const octet TOY_DOLL = 0x03;
8432         const octet TOY_CONTROLLER = 0x04;
8433         const octet TOY_GAME = 0x05;
8434
8435         const octet HEALTH_UNDEFINED = 0x00;
8436         const octet HEALTH_BLOOD_PRESSURE_MONITOR = 0x01;
8437         const octet HEALTH_THERMOMETER = 0x02;
8438         const octet HEALTH_WEIGHING_SCALE = 0x03;
8439         const octet HEALTH_GLUCOSE_METER = 0x04;
8440         const octet HEALTH_PULSE_OXIMETER = 0x05;
8441         const octet HEALTH_PULSE_RATE_MONITOR = 0x06;
8442         const octet HEALTH_DATA_DISPLAY = 0x07;
8443         const octet HEALTH_STEP_COUNTER = 0x08;
8444         const octet HEALTH_BODY_COMPOSITION_ANALYZER = 0x09;
8445         const octet HEALTH_PEAK_FLOW_MONITOR = 0x0a;
8446         const octet HEALTH_MEDICATION_MONITOR = 0x0b;
8447         const octet HEALTH_KNEE_PROSTHESIS = 0x0c;
8448         const octet HEALTH_ANKLE_PROSTHESIS = 0x0d;
8449     };
8450
8451     [NoInterfaceObject] interface BluetoothClassDeviceService {
8452         const unsigned short LIMITED_DISCOVERABILITY = 0x0001;
8453         const unsigned short POSITIONING = 0x0008; 
8454         const unsigned short NETWORKING = 0x0010; 
8455         const unsigned short RENDERING = 0x0020; 
8456         const unsigned short CAPTURING = 0x0040;
8457         const unsigned short OBJECT_TRANSFER = 0x0080; 
8458         const unsigned short AUDIO = 0x0100;
8459         const unsigned short TELEPHONY = 0x0200;
8460         const unsigned short INFORMATION = 0x0400;
8461     };
8462
8463     [NoInterfaceObject] interface BluetoothServiceHandler {
8464         readonly attribute <ref>BluetoothUUID</ref> uuid;
8465         readonly attribute DOMString name;
8466         readonly attribute boolean isConnected;
8467         [TreatNonCallableAsNull] attribute <ref>BluetoothSocketSuccessCallback</ref>? onconnect raises(<ref>WebAPIException</ref>);
8468
8469         void unregister(optional <ref>SuccessCallback</ref>? successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8470     };
8471
8472     [NoInterfaceObject] interface BluetoothProfileHandler {
8473         
8474         readonly attribute <ref>BluetoothProfileType</ref> profileType;
8475                 
8476     };
8477                 
8478
8479     [NoInterfaceObject] interface BluetoothHealthProfileHandler : <ref>BluetoothProfileHandler</ref> {
8480         
8481         void registerSinkApplication(unsigned short dataType, DOMString name, <ref>BluetoothHealthApplicationSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8482
8483         void connectToSource(<ref>BluetoothDevice</ref> peer, <ref>BluetoothHealthApplication</ref> application, <ref>BluetoothHealthChannelSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8484
8485         };              
8486
8487
8488     [NoInterfaceObject] interface BluetoothHealthApplication {
8489
8490         readonly attribute unsigned short dataType;
8491                 
8492         readonly attribute DOMString name;
8493
8494         [TreatNonCallableAsNull] attribute <ref>BluetoothHealthChannelSuccessCallback</ref>? onconnect raises(<ref>WebAPIException</ref>);
8495                 
8496         void unregister(optional <ref>SuccessCallback</ref>? successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8497                 
8498     };          
8499         
8500         
8501     [NoInterfaceObject] interface BluetoothHealthChannel {
8502
8503         readonly attribute <ref>BluetoothDevice</ref> peer;
8504                 
8505         readonly attribute <ref>BluetoothHealthChannelType</ref> channelType;
8506
8507         readonly attribute <ref>BluetoothHealthApplication</ref> application;
8508                 
8509         readonly attribute boolean isConnected;
8510
8511         void close() raises(<ref>WebAPIException</ref>);
8512
8513         unsigned long sendData(byte[] data) raises(<ref>WebAPIException</ref>);
8514
8515         void setListener(<ref>BluetoothHealthChannelChangeCallback</ref> listener) raises(<ref>WebAPIException</ref>); 
8516  
8517         void unsetListener() raises(<ref>WebAPIException</ref>);
8518                 
8519     };
8520         
8521
8522     [Callback, NoInterfaceObject] interface BluetoothAdapterChangeCallback {
8523         void onstatechanged(boolean powered);
8524         void onnamechanged(DOMString name);
8525         void onvisibilitychanged(boolean visible);
8526     };
8527
8528     [Callback=FunctionOnly, NoInterfaceObject] interface BluetoothDeviceSuccessCallback {
8529         void onsuccess(<ref>BluetoothDevice</ref> device);
8530     };
8531
8532     [Callback=FunctionOnly, NoInterfaceObject] interface BluetoothDeviceArraySuccessCallback {
8533         void onsuccess(<ref>BluetoothDevice</ref>[] devices);
8534     };
8535
8536     [Callback, NoInterfaceObject] interface BluetoothDiscoverDevicesSuccessCallback {
8537         void onstarted();
8538         void ondevicefound(<ref>BluetoothDevice</ref> device);
8539         void ondevicedisappeared(<ref>BluetoothAddress</ref> address);
8540         void onfinished(<ref>BluetoothDevice</ref>[] foundDevices);
8541     };
8542
8543     [Callback=FunctionOnly, NoInterfaceObject] interface BluetoothSocketSuccessCallback {
8544         void onsuccess(<ref>BluetoothSocket</ref> socket);
8545     };
8546
8547     [Callback=FunctionOnly, NoInterfaceObject] interface BluetoothServiceSuccessCallback {
8548         void onsuccess(<ref>BluetoothServiceHandler</ref> handler);
8549     };
8550
8551     [Callback=FunctionOnly, NoInterfaceObject] interface BluetoothHealthApplicationSuccessCallback {
8552         void onsuccess(<ref>BluetoothHealthApplication</ref> application);
8553     };
8554
8555         
8556     [Callback=FunctionOnly, NoInterfaceObject] interface BluetoothHealthChannelSuccessCallback {
8557         void onsuccess(<ref>BluetoothHealthChannel</ref> channel);
8558     };
8559
8560     [Callback, NoInterfaceObject] interface BluetoothHealthChannelChangeCallback {
8561         void onmessage(byte[] data);
8562                 
8563         void onclose(); 
8564     };
8565
8566 };</webidl>
8567     <descriptive>
8568         <brief>
8569  This specification defines interfaces and methods to manage Bluetooth.
8570         </brief>
8571        <description>
8572         <p>
8573 The following Bluetooth functionalities are provided:
8574         </p>
8575         <ul>
8576           <li>
8577 Controls local Bluetooth device, that is, turn Bluetooth on/off, etc.          </li>
8578           <li>
8579 Sets visibility          </li>
8580           <li>
8581 Discovers nearby Bluetooth devices (Device discovery).          </li>
8582           <li>
8583 Gets bonded devices information.          </li>
8584           <li>
8585 Controls bonding.          </li>
8586           <li>
8587 Connects to a service on a remote device and exchanges data.          </li>
8588           <li>
8589 Registers a service (RFCOMM) on a local device, which can be consumed by remote devices to exchange data.          </li>
8590         </ul>
8591         <p>
8592 For more information on the Bluetooth features, see <a href="../../org.tizen.web.appprogramming/html/guide/communication_guide/bluetooth.htm">Bluetooth Guide</a>.
8593         </p>
8594        </description>
8595         <version>
8596  1.0
8597         </version>
8598         <def-api-feature identifier="http://tizen.org/feature/network.bluetooth">
8599           <descriptive>
8600            <description>
8601             <p>
8602 To guarantee this application running on a device with Bluetooth feature, define below in the config file: 
8603             </p>
8604            </description>
8605           </descriptive>
8606         </def-api-feature>
8607     </descriptive>
8608     <Typedef name="BluetoothAddress" id="::Bluetooth::BluetoothAddress">
8609       <webidl>    typedef DOMString BluetoothAddress;</webidl>
8610       <descriptive>
8611           <brief>
8612  The address of a Bluetooth device.
8613           </brief>
8614           <version>
8615  1.0
8616           </version>
8617       </descriptive>
8618       <Type type="DOMString"/>
8619     </Typedef>
8620     <Typedef name="BluetoothUUID" id="::Bluetooth::BluetoothUUID">
8621       <webidl>    typedef DOMString BluetoothUUID;</webidl>
8622       <descriptive>
8623           <brief>
8624  The UUID of a Bluetooth service.
8625           </brief>
8626           <version>
8627  1.0
8628           </version>
8629       </descriptive>
8630       <Type type="DOMString"/>
8631     </Typedef>
8632     <Enum name="BluetoothSocketState" id="::Bluetooth::BluetoothSocketState">
8633       <webidl>    enum BluetoothSocketState { &quot;CLOSED&quot;, &quot;OPEN&quot; };</webidl>
8634       <descriptive>
8635           <brief>
8636  The Bluetooth socket state.
8637           </brief>
8638           <version>
8639  1.0
8640           </version>
8641       </descriptive>
8642       <EnumValue stringvalue="CLOSED">
8643         <webidl> &quot;CLOSED</webidl>
8644       </EnumValue>
8645       <EnumValue stringvalue="OPEN">
8646         <webidl> &quot;OPEN</webidl>
8647       </EnumValue>
8648     </Enum>
8649     <Enum name="BluetoothProfileType" id="::Bluetooth::BluetoothProfileType">
8650       <webidl>    enum BluetoothProfileType { &quot;HEALTH&quot; };</webidl>
8651       <descriptive>
8652           <brief>
8653  The Bluetooth profile.
8654           </brief>
8655           <version>
8656  2.2
8657           </version>
8658       </descriptive>
8659       <EnumValue stringvalue="HEALTH">
8660         <webidl> &quot;HEALTH</webidl>
8661       </EnumValue>
8662     </Enum>
8663     <Enum name="BluetoothHealthChannelType" id="::Bluetooth::BluetoothHealthChannelType">
8664       <webidl>    enum BluetoothHealthChannelType { &quot;RELIABLE&quot;, &quot;STREAMING&quot; };</webidl>
8665       <descriptive>
8666           <brief>
8667  The channel type of health device profile.
8668           </brief>
8669           <version>
8670  2.2
8671           </version>
8672       </descriptive>
8673       <EnumValue stringvalue="RELIABLE">
8674         <webidl> &quot;RELIABLE</webidl>
8675       </EnumValue>
8676       <EnumValue stringvalue="STREAMING">
8677         <webidl> &quot;STREAMING</webidl>
8678       </EnumValue>
8679     </Enum>
8680     <Interface name="BluetoothManagerObject" id="::Bluetooth::BluetoothManagerObject">
8681       <webidl>    [NoInterfaceObject] interface BluetoothManagerObject {
8682         readonly attribute <ref>BluetoothManager</ref> bluetooth;
8683     };</webidl>
8684       <descriptive>
8685           <brief>
8686  This interface defines what is instantiated by the <em>Tizen</em> object from the Tizen platform.
8687           </brief>
8688          <description>
8689           <p>
8690 There is a <em>tizen.bluetooth</em> object that allows access to the Bluetooth API.
8691           </p>
8692          </description>
8693           <version>
8694  1.0
8695           </version>
8696       </descriptive>
8697       <ExtendedAttributeList>
8698         <ExtendedAttribute name="NoInterfaceObject">
8699           <webidl>NoInterfaceObject</webidl>
8700         </ExtendedAttribute>
8701       </ExtendedAttributeList>
8702       <Attribute readonly="readonly" name="bluetooth" id="::Bluetooth::BluetoothManagerObject::bluetooth">
8703         <webidl>        readonly attribute <ref>BluetoothManager</ref> bluetooth;</webidl>
8704         <Type name="BluetoothManager"/>
8705       </Attribute>
8706     </Interface>
8707     <Implements name1="Tizen" name2="BluetoothManagerObject">
8708       <webidl>    <ref>Tizen</ref> implements <ref>BluetoothManagerObject</ref>;</webidl>
8709     </Implements>
8710     <Interface name="BluetoothManager" id="::Bluetooth::BluetoothManager">
8711       <webidl>    [NoInterfaceObject] interface BluetoothManager {
8712         readonly attribute <ref>BluetoothClassDeviceMajor</ref> deviceMajor;
8713         readonly attribute <ref>BluetoothClassDeviceMinor</ref> deviceMinor;
8714         readonly attribute <ref>BluetoothClassDeviceService</ref> deviceService;
8715         <ref>BluetoothAdapter</ref> getDefaultAdapter() raises(<ref>WebAPIException</ref>);
8716     };</webidl>
8717       <descriptive>
8718           <brief>
8719  This interface provides access to the <em>BluetoothAdapter</em> object.
8720           </brief>
8721           <version>
8722  1.0
8723           </version>
8724       </descriptive>
8725       <ExtendedAttributeList>
8726         <ExtendedAttribute name="NoInterfaceObject">
8727           <webidl>NoInterfaceObject</webidl>
8728         </ExtendedAttribute>
8729       </ExtendedAttributeList>
8730       <Attribute readonly="readonly" name="deviceMajor" id="::Bluetooth::BluetoothManager::deviceMajor">
8731         <webidl>        readonly attribute <ref>BluetoothClassDeviceMajor</ref> deviceMajor;</webidl>
8732         <descriptive>
8733             <brief>
8734  An attribute to access to a major device class identifiers of Bluetooth class of device (CoD).
8735             </brief>
8736             <version>
8737  1.0
8738             </version>
8739         </descriptive>
8740         <Type name="BluetoothClassDeviceMajor"/>
8741       </Attribute>
8742       <Attribute readonly="readonly" name="deviceMinor" id="::Bluetooth::BluetoothManager::deviceMinor">
8743         <webidl>        readonly attribute <ref>BluetoothClassDeviceMinor</ref> deviceMinor;</webidl>
8744         <descriptive>
8745             <brief>
8746  An attribute to access to a minor device class identifiers of Bluetooth class of device (CoD).
8747             </brief>
8748             <version>
8749  1.0
8750             </version>
8751         </descriptive>
8752         <Type name="BluetoothClassDeviceMinor"/>
8753       </Attribute>
8754       <Attribute readonly="readonly" name="deviceService" id="::Bluetooth::BluetoothManager::deviceService">
8755         <webidl>        readonly attribute <ref>BluetoothClassDeviceService</ref> deviceService;</webidl>
8756         <descriptive>
8757             <brief>
8758  Accessor to major service class identifiers of Bluetooth class of device (CoD).
8759             </brief>
8760             <version>
8761  1.0
8762             </version>
8763         </descriptive>
8764         <Type name="BluetoothClassDeviceService"/>
8765       </Attribute>
8766       <Operation name="getDefaultAdapter" id="::Bluetooth::BluetoothManager::getDefaultAdapter">
8767         <webidl>        <ref>BluetoothAdapter</ref> getDefaultAdapter() raises(<ref>WebAPIException</ref>);</webidl>
8768         <descriptive>
8769             <brief>
8770  Gets the default local Bluetooth adapter.
8771             </brief>
8772             <version>
8773  1.0
8774             </version>
8775             <privilegelevel>
8776  public
8777             </privilegelevel>
8778             <privilege>
8779  http://tizen.org/privilege/bluetooth.gap
8780             </privilege>
8781             <Code> try {
8782   var adapter = tizen.bluetooth.getDefaultAdapter() ;
8783  } catch (err) {
8784   console.log (err.name +&quot;: &quot; + err.message);
8785  }
8786  </Code>
8787         </descriptive>
8788         <Type name="BluetoothAdapter">
8789           <descriptive>
8790               <description><p>
8791  BluetoothAdapter The local <em>BluetoothAdapter </em>object.
8792               </p></description>
8793           </descriptive>
8794         </Type>
8795         <ArgumentList/>
8796         <Raises>
8797           <RaiseException name="WebAPIException">
8798             <descriptive>
8799                 <description><p>
8800  with error type SecurityError, if the application does not have the privilege to call this method.
8801                 </p></description>
8802                 <description><p>
8803  with error type NotSupportedError, if this feature is not supported.
8804                 </p></description>
8805                 <description><p>
8806  with error type UnknownError, if any other error occurs.
8807                 </p></description>
8808             </descriptive>
8809           </RaiseException>
8810         </Raises>
8811       </Operation>
8812     </Interface>
8813     <Interface name="BluetoothAdapter" id="::Bluetooth::BluetoothAdapter">
8814       <webidl>    [NoInterfaceObject] interface BluetoothAdapter {
8815         readonly attribute DOMString name;
8816         readonly attribute <ref>BluetoothAddress</ref> address;
8817         readonly attribute boolean powered; 
8818         readonly attribute boolean visible;
8819
8820         void setName(DOMString name,
8821                      optional <ref>SuccessCallback</ref>? successCallback, 
8822                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8823  
8824         void setPowered(boolean state,
8825                         optional <ref>SuccessCallback</ref>? successCallback, 
8826                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);     
8827         
8828         void setVisible(boolean mode,
8829                         optional <ref>SuccessCallback</ref>? successCallback, 
8830                         optional <ref>ErrorCallback</ref>? errorCallback,
8831                         optional unsigned short? timeout) raises(<ref>WebAPIException</ref>);
8832
8833         void setChangeListener(<ref>BluetoothAdapterChangeCallback</ref> listener) raises(<ref>WebAPIException</ref>);
8834
8835         void unsetChangeListener() raises(<ref>WebAPIException</ref>);
8836
8837         void discoverDevices(<ref>BluetoothDiscoverDevicesSuccessCallback</ref> successCallback, 
8838                              optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8839
8840         void stopDiscovery(optional <ref>SuccessCallback</ref>? successCallback, 
8841                            optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8842
8843         void getKnownDevices(<ref>BluetoothDeviceArraySuccessCallback</ref> successCallback, 
8844                              optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8845
8846
8847
8848
8849         void getDevice(<ref>BluetoothAddress</ref> address,
8850                        <ref>BluetoothDeviceSuccessCallback</ref> successCallback, 
8851                        optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8852
8853
8854
8855
8856         void createBonding(<ref>BluetoothAddress</ref> address,
8857                            <ref>BluetoothDeviceSuccessCallback</ref> successCallback, 
8858                            optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8859
8860         void destroyBonding(<ref>BluetoothAddress</ref> address,
8861                             optional <ref>SuccessCallback</ref>? successCallback, 
8862                             optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8863
8864
8865
8866         void registerRFCOMMServiceByUUID(<ref>BluetoothUUID</ref> uuid,
8867                                          DOMString name,
8868                                          <ref>BluetoothServiceSuccessCallback</ref> successCallback, 
8869                                          optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
8870
8871         <ref>BluetoothProfileHandler</ref> getBluetoothProfileHandler(<ref>BluetoothProfileType</ref> profileType) raises(<ref>WebAPIException</ref>);
8872
8873              };</webidl>
8874       <descriptive>
8875           <brief>
8876  This interface provides access to control the device's Bluetooth adapter.
8877           </brief>
8878          <description>
8879           <p>
8880 This interface offers methods to control local Bluetooth behavior, such as:
8881           </p>
8882           <ul>
8883             <li>
8884 Turning on/off Bluetooth radio            </li>
8885             <li>
8886 Changing device visibility            </li>
8887             <li>
8888 Scanning for remote devices            </li>
8889             <li>
8890 Accessing known devices            </li>
8891             <li>
8892 Registering a service in the device service database            </li>
8893           </ul>
8894          </description>
8895           <version>
8896  1.0
8897           </version>
8898       </descriptive>
8899       <ExtendedAttributeList>
8900         <ExtendedAttribute name="NoInterfaceObject">
8901           <webidl>NoInterfaceObject</webidl>
8902         </ExtendedAttribute>
8903       </ExtendedAttributeList>
8904       <Attribute readonly="readonly" name="name" id="::Bluetooth::BluetoothAdapter::name">
8905         <webidl>        readonly attribute DOMString name;</webidl>
8906         <descriptive>
8907             <brief>
8908  An attribute to store the readable name of the Bluetooth adapter.
8909             </brief>
8910             <version>
8911  1.0
8912             </version>
8913             <Code> 
8914  // Access adapter name
8915  var adapter = tizen.bluetooth.getDefaultAdapter();
8916  console.log (&quot;Bluetooth adapter name: &quot; + adapter.name);
8917  </Code>
8918         </descriptive>
8919         <Type type="DOMString"/>
8920       </Attribute>
8921       <Attribute readonly="readonly" name="address" id="::Bluetooth::BluetoothAdapter::address">
8922         <webidl>        readonly attribute <ref>BluetoothAddress</ref> address;</webidl>
8923         <descriptive>
8924             <brief>
8925  An attribute to store the unique hardware address of the Bluetooth adapter, also known as the MAC address.
8926             </brief>
8927             <version>
8928  1.0
8929             </version>
8930             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
8931  console.log(&quot;Bluetooth device address: &quot; + adapter.address);
8932  </Code>
8933         </descriptive>
8934         <Type name="BluetoothAddress"/>
8935       </Attribute>
8936       <Attribute readonly="readonly" name="powered" id="::Bluetooth::BluetoothAdapter::powered">
8937         <webidl>        readonly attribute boolean powered;</webidl>
8938         <descriptive>
8939             <brief>
8940  An attribute to indicate the current state of the Bluetooth adapter.
8941 This attribute holds one of the following 2 values:
8942             </brief>
8943            <description>
8944             <ul>
8945               <li>
8946 <var>true</var> - If Bluetooth adapter is currently on              </li>
8947               <li>
8948 <var>false</var> - If Bluetooth adapter is currently off              </li>
8949             </ul>
8950            </description>
8951             <version>
8952  1.0
8953             </version>
8954             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
8955  console.log(&quot;Bluetooth state: &quot; + (adapter.powered ? &quot;On&quot; : &quot;Off&quot;));
8956  </Code>
8957         </descriptive>
8958         <Type type="boolean"/>
8959       </Attribute>
8960       <Attribute readonly="readonly" name="visible" id="::Bluetooth::BluetoothAdapter::visible">
8961         <webidl>        readonly attribute boolean visible;</webidl>
8962         <descriptive>
8963             <brief>
8964  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.
8965             </brief>
8966             <version>
8967  1.0
8968             </version>
8969             <Code> // Queries current visible state
8970  var adapter = tizen.bluetooth.getDefaultAdapter();
8971  console.log (&quot;Bluetooth Visibility: &quot; + (adapter.visible ? &quot;On&quot; : &quot;Off&quot;));
8972  </Code>
8973         </descriptive>
8974         <Type type="boolean"/>
8975       </Attribute>
8976       <Operation name="setName" id="::Bluetooth::BluetoothAdapter::setName">
8977         <webidl>        void setName(DOMString name,
8978                      optional <ref>SuccessCallback</ref>? successCallback, 
8979                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
8980         <descriptive>
8981             <brief>
8982  Sets the local Bluetooth adapter name.
8983             </brief>
8984            <description>
8985             <p>
8986 Sends a request to Bluetooth hardware to change the name of the local Bluetooth adapter to <em>name</em>.
8987             </p>
8988             <p>
8989 The ErrorCallback is launched with these error types:
8990             </p>
8991             <ul>
8992               <li>
8993  InvalidValuesError: If any of the input parameters contain an invalid value.              </li>
8994               <li>
8995  ServiceNotAvailableError: If a Bluetooth device is turned off.               </li>
8996               <li>
8997  UnknownError: In any other error case.               </li>
8998             </ul>
8999            </description>
9000             <version>
9001  1.0
9002             </version>
9003             <privilegelevel>
9004  public
9005             </privilegelevel>
9006             <privilege>
9007  http://tizen.org/privilege/bluetooth.admin
9008             </privilege>
9009             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
9010  
9011  function changeName(newName) 
9012  {  
9013       if(adapter.name != newName) {
9014            // initiate change name
9015            adapter.setName(newName, function() {
9016                console.log(&quot;Adapter name changed to &quot; + adapter.name);
9017            },
9018            function(e) {
9019                console.log(&quot;Failed to change name: &quot; + e.message);
9020            });
9021       }
9022  }
9023
9024  changeName(&quot;myDevice&quot;);
9025  </Code>
9026         </descriptive>
9027         <Type type="void"/>
9028         <ArgumentList>
9029           <Argument name="name">
9030             <descriptive>
9031                 <description><p>
9032  The name to set.
9033                 </p></description>
9034             </descriptive>
9035             <Type type="DOMString"/>
9036           </Argument>
9037           <Argument optional="optional" name="successCallback">
9038             <descriptive>
9039                 <description><p>
9040  The method to invoke when the asynchronous call completes successfully.
9041                 </p></description>
9042             </descriptive>
9043             <Type name="SuccessCallback" nullable="nullable"/>
9044           </Argument>
9045           <Argument optional="optional" name="errorCallback">
9046             <descriptive>
9047                 <description><p>
9048  The method to invoke when an error occurs.
9049                 </p></description>
9050             </descriptive>
9051             <Type name="ErrorCallback" nullable="nullable"/>
9052           </Argument>
9053         </ArgumentList>
9054         <Raises>
9055           <RaiseException name="WebAPIException">
9056             <descriptive>
9057                 <description><p>
9058  with error type TypeMismatchError, if any of the input parameter is not compatible with the expected type for that parameter.
9059                 </p></description>
9060                 <description><p>
9061  with error type SecurityError, if the application does not have the privilege to call this method.
9062                 </p></description>
9063                 <description><p>
9064  with error type NotSupportedError, if this feature is not supported.
9065                 </p></description>
9066             </descriptive>
9067           </RaiseException>
9068         </Raises>
9069       </Operation>
9070       <Operation name="setPowered" id="::Bluetooth::BluetoothAdapter::setPowered">
9071         <webidl>        void setPowered(boolean state,
9072                         optional <ref>SuccessCallback</ref>? successCallback, 
9073                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
9074         <descriptive>
9075             <brief>
9076  Sets the state of a Bluetooth adapter to on or off by sending a request to Bluetooth hardware to change the power state.
9077 For most Bluetooth actions, the Bluetooth adapter must be powered on.
9078             </brief>
9079            <description>
9080             <p>
9081 The ErrorCallback is launched with these error names:
9082             </p>
9083             <ul>
9084               <li>
9085  ServiceNotAvailableError - If a Bluetooth device is busy.              </li>
9086               <li>
9087  UnknownError - If any other error occurs.              </li>
9088             </ul>
9089            </description>
9090             <version>
9091  1.0
9092             </version>
9093             <privilegelevel>
9094  public
9095             </privilegelevel>
9096             <privilege>
9097  http://tizen.org/privilege/bluetooth.admin
9098             </privilege>
9099             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
9100  
9101  function powerOn() 
9102  {
9103       // If adapter is not powered on 
9104       if(!adapter.powered) {
9105            // Initiates power on
9106            adapter.setPowered(true, function() {
9107                console.log(&quot;Bluetooth powered on success.&quot;);
9108            },
9109            function(e) {
9110                console.log(&quot;Failed to power on Bluetooth: &quot; + e.message);
9111            });
9112       }
9113  }
9114
9115  function powerOff()
9116  {
9117       // If powered on
9118       if(adapter.powered) {
9119            // Initiates power off
9120            adapter.setPowered(false, function() {
9121                console.log(&quot;Bluetooth powered off successfully.&quot;);
9122            },
9123            function(e) {
9124                console.log(&quot;Failed to power off Bluetooth: &quot; + e.message);
9125            });
9126       }
9127  }
9128  </Code>
9129         </descriptive>
9130         <Type type="void"/>
9131         <ArgumentList>
9132           <Argument name="state">
9133             <descriptive>
9134                 <description><p>
9135  The state to set: <var>true</var> to power on Bluetooth, <var>false</var> to power it off.
9136                 </p></description>
9137             </descriptive>
9138             <Type type="boolean"/>
9139           </Argument>
9140           <Argument optional="optional" name="successCallback">
9141             <descriptive>
9142                 <description><p>
9143  The method to invoke on successful Bluetooth activation/deactivation.
9144                 </p></description>
9145             </descriptive>
9146             <Type name="SuccessCallback" nullable="nullable"/>
9147           </Argument>
9148           <Argument optional="optional" name="errorCallback">
9149             <descriptive>
9150                 <description><p>
9151  The method to invoke on failure of a Bluetooth activation/deactivation.
9152                 </p></description>
9153             </descriptive>
9154             <Type name="ErrorCallback" nullable="nullable"/>
9155           </Argument>
9156         </ArgumentList>
9157         <Raises>
9158           <RaiseException name="WebAPIException">
9159             <descriptive>
9160                 <description><p>
9161  with error type TypeMismatchError, if any of the input parameter is not compatible with the expected type for that parameter.
9162                 </p></description>
9163                 <description><p>
9164  with error type SecurityError, if the application does not have the privilege to call this method.
9165                 </p></description>
9166                 <description><p>
9167  with error type NotSupportedError, if this feature is not supported.
9168                 </p></description>
9169             </descriptive>
9170           </RaiseException>
9171         </Raises>
9172       </Operation>
9173       <Operation name="setVisible" id="::Bluetooth::BluetoothAdapter::setVisible">
9174         <webidl>        void setVisible(boolean mode,
9175                         optional <ref>SuccessCallback</ref>? successCallback, 
9176                         optional <ref>ErrorCallback</ref>? errorCallback,
9177                         optional unsigned short? timeout) raises(<ref>WebAPIException</ref>);</webidl>
9178         <descriptive>
9179             <brief>
9180  Sets the local device visibility by sending a request to a Bluetooth hardware to change the device visible state to <em>mode</em>.
9181 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.
9182             </brief>
9183            <description>
9184             <p>
9185 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.
9186             </p>
9187             <p>
9188 The ErrorCallback is launched with these error types:
9189             </p>
9190             <ul>
9191               <li>
9192  InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
9193               <li>
9194  ServiceNotAvailableError - If a Bluetooth device is turned off.              </li>
9195               <li>
9196  UnknownError - If any other error case occurs.              </li>
9197             </ul>
9198            </description>
9199             <version>
9200  1.0
9201             </version>
9202             <privilegelevel>
9203  platform
9204             </privilegelevel>
9205             <privilege>
9206  http://tizen.org/privilege/bluetoothmanager
9207             </privilege>
9208             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
9209  
9210  function showMe()
9211  {
9212       if (adapter.visible == false) {
9213           //Shows device
9214           adapter.setVisible(true, 
9215                              function() { console.log ('Device is visible to other devices for 3 minutes.'); },
9216                              function(e) { console.log ('Error: ' + e.message + '(' + e.name + ')'); });
9217       }
9218       else {
9219            console.log(&quot;Device is already in discoverable mode.&quot;);
9220       }
9221  }
9222
9223  function hideMe() 
9224  {
9225      if (adapter.visible) {
9226           // Hides device
9227           adapter.setVisible(false,
9228                              function() { console.log('Device is in-visible now.'); },
9229                              function(e) { console.log ('Error: ' + e.message + '(' + e.name + ')'); });
9230      }
9231      else {
9232           console.log(&quot;Device is already in invisible mode.&quot;);
9233      }
9234  }
9235  </Code>
9236         </descriptive>
9237         <Type type="void"/>
9238         <ArgumentList>
9239           <Argument name="mode">
9240             <descriptive>
9241                 <description><p>
9242  The boolean value to set visibility.
9243 It can either be set to: <var>true</var> - to show the device or <var>false</var> - to hide the device.
9244                 </p></description>
9245             </descriptive>
9246             <Type type="boolean"/>
9247           </Argument>
9248           <Argument optional="optional" name="successCallback">
9249             <descriptive>
9250                 <description><p>
9251  The method to invoke when an asynchronous call completes successfully.
9252                 </p></description>
9253             </descriptive>
9254             <Type name="SuccessCallback" nullable="nullable"/>
9255           </Argument>
9256           <Argument optional="optional" name="errorCallback">
9257             <descriptive>
9258                 <description><p>
9259  The method to invoke when an error occurs.
9260                 </p></description>
9261             </descriptive>
9262             <Type name="ErrorCallback" nullable="nullable"/>
9263           </Argument>
9264           <Argument optional="optional" name="timeout">
9265             <descriptive>
9266                 <description><p>
9267  The visible timeout in seconds, used only when <em>mode</em> is <var>true</var>.
9268                 </p></description>
9269             </descriptive>
9270             <Type type="unsigned short" nullable="nullable"/>
9271           </Argument>
9272         </ArgumentList>
9273         <Raises>
9274           <RaiseException name="WebAPIException">
9275             <descriptive>
9276                 <description><p>
9277  with error type TypeMismatchError, if any of the input parameter is not compatible with the expected type for that parameter.
9278                 </p></description>
9279                 <description><p>
9280  with error type SecurityError, if the application does not have the privilege to call this method.
9281                 </p></description>
9282                 <description><p>
9283  with error type NotSupportedError, if this feature is not supported.
9284                 </p></description>
9285             </descriptive>
9286           </RaiseException>
9287         </Raises>
9288       </Operation>
9289       <Operation name="setChangeListener" id="::Bluetooth::BluetoothAdapter::setChangeListener">
9290         <webidl>        void setChangeListener(<ref>BluetoothAdapterChangeCallback</ref> listener) raises(<ref>WebAPIException</ref>);</webidl>
9291         <descriptive>
9292             <brief>
9293  Sets the listener to receive notifications about changes of Bluetooth adapter.
9294             </brief>
9295             <version>
9296  2.2
9297             </version>
9298             <Code> var changeListener = {
9299       onstatechanged: function(powered) {
9300           console.log (&quot;Power state is changed into: &quot; + powered);
9301       },
9302       onnamechanged: function(name) {
9303           console.log(&quot;Name is changed to: &quot; + name);
9304       },
9305       onvisibilitychanged: function(visible) {
9306           console.log(&quot;Visibility is changed into: &quot; + visible);
9307       }
9308  };
9309
9310  var adapter = tizen.bluetooth.getDefaultAdapter();
9311  adapter.setChangeListener(changeListener);
9312  </Code>
9313         </descriptive>
9314         <Type type="void"/>
9315         <ArgumentList>
9316           <Argument name="listener">
9317             <descriptive>
9318                 <description><p>
9319  The Bluetooth Adapter event listener to set.
9320                 </p></description>
9321             </descriptive>
9322             <Type name="BluetoothAdapterChangeCallback"/>
9323           </Argument>
9324         </ArgumentList>
9325         <Raises>
9326           <RaiseException name="WebAPIException">
9327             <descriptive>
9328                 <description><p>
9329  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
9330                 </p></description>
9331                 <description><p>
9332  with error type SecurityError, if this functionality is not allowed.
9333                 </p></description>
9334                 <description><p>
9335  with error type UnknownError, if any other error occurs.
9336                 </p></description>
9337             </descriptive>
9338           </RaiseException>
9339         </Raises>
9340       </Operation>
9341       <Operation name="unsetChangeListener" id="::Bluetooth::BluetoothAdapter::unsetChangeListener">
9342         <webidl>        void unsetChangeListener() raises(<ref>WebAPIException</ref>);</webidl>
9343         <descriptive>
9344             <brief>
9345  Unsets the listener, so stop receiving notifications about changes of Bluetooth adapter.
9346             </brief>
9347             <version>
9348  2.2
9349             </version>
9350             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
9351
9352  var changeListener = {
9353       onstatechanged: function(powered) {
9354           console.log (&quot;Power state is changed into: &quot; + powered);
9355           if(!powered)
9356               adapter.unsetChangeListener();
9357       },
9358       onnamechanged: function(name) {
9359           console.log(&quot;Name is changed to: &quot; + name);
9360       },
9361       onvisibilitychanged: function(visible) {
9362           console.log(&quot;Visibility is changed into: &quot; + visible);
9363       }
9364  };
9365
9366  adapter.setChangeListener(changeListener);
9367  </Code>
9368         </descriptive>
9369         <Type type="void"/>
9370         <ArgumentList/>
9371         <Raises>
9372           <RaiseException name="WebAPIException">
9373             <descriptive>
9374                 <description><p>
9375  with error type SecurityError, if this functionality is not allowed.
9376                 </p></description>
9377                 <description><p>
9378  with error type UnknownError, if any other error occurs.
9379                 </p></description>
9380             </descriptive>
9381           </RaiseException>
9382         </Raises>
9383       </Operation>
9384       <Operation name="discoverDevices" id="::Bluetooth::BluetoothAdapter::discoverDevices">
9385         <webidl>        void discoverDevices(<ref>BluetoothDiscoverDevicesSuccessCallback</ref> successCallback, 
9386                              optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
9387         <descriptive>
9388             <brief>
9389  Discovers nearby Bluetooth devices if any, that is, devices within proximity to the local device.
9390             </brief>
9391            <description>
9392             <p>
9393 This method initiates the device discovery process. Depending on the progress of this process the following methods are invoked:
9394             </p>
9395             <ul>
9396               <li>
9397 <em>BluetoothDiscoverDevicesSuccessCallback.onstarted()</em> - when a discovery process starts successfully.              </li>
9398               <li>
9399 <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>
9400               <li>
9401 <em>BluetoothDiscoverDevicesSuccessCallback.ondevicedisappeared()</em> - when a device goes out of proximity and this method is invoked with the address of the device.              </li>
9402               <li>
9403 <em>BluetoothDiscoverDevicesSuccessCallback.onfinished()</em> - when a discovery process is completed.              </li>
9404             </ul>
9405             <p>
9406 A discovery process can be canceled anytime, by calling <em>stopDiscovery() </em>on the <em>BluetoothAdapter</em>.
9407             </p>
9408             <p>
9409 The ErrorCallback is launched with these error types:
9410             </p>
9411             <ul>
9412               <li>
9413  ServiceNotAvailableError - If a Bluetooth device is turned off.              </li>
9414               <li>
9415  UnknownError - If any other error occurs.              </li>
9416             </ul>
9417            </description>
9418             <version>
9419  1.0
9420             </version>
9421             <privilegelevel>
9422  public
9423             </privilegelevel>
9424             <privilege>
9425  http://tizen.org/privilege/bluetooth.gap
9426             </privilege>
9427             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
9428  
9429  function startDiscovery() {
9430
9431   var discoverDevicesSuccessCallback = {
9432       onstarted: function() { 
9433           console.log (&quot;Device discovery started...&quot;);
9434       },
9435       ondevicefound: function(device) { 
9436           console.log(&quot;Found device - name: &quot; + device.name + &quot;, Address: &quot;+ device.address); 
9437       },
9438       ondevicedisappeared: function(address) { 
9439           console.log(&quot;Device disappeared: &quot; + address); 
9440       },
9441       onfinished: function(devices) { 
9442           console.log(&quot;Found Devices&quot;);
9443           for (var i = 0; i &#60; devices.length; i++) {
9444               console.log(&quot;Name: &quot; + devices[i].name + &quot;, Address: &quot; + devices[i].address);
9445           }
9446           console.log(&quot;Total: &quot; + devices.length);
9447       }
9448   };
9449  
9450   // Starts searching for nearby devices, for about 12 sec.
9451   adapter.discoverDevices(discoverDevicesSuccessCallback, function(e){
9452       console.log (&quot;Failed to search devices: &quot; + e.message + &quot;(&quot; + e.name + &quot;)&quot;);
9453   });
9454  }
9455
9456  function onSetPoweredError(e) {
9457      console.log (&quot;Could not turn on device, reason: &quot; + e.message + &quot;(&quot; + e.name + &quot;)&quot;);
9458  }
9459
9460  adapter.setPowered(true, startDiscovery, onSetPoweredError);
9461  </Code>
9462         </descriptive>
9463         <Type type="void"/>
9464         <ArgumentList>
9465           <Argument name="successCallback">
9466             <descriptive>
9467                 <description><p>
9468  The method to invoke when an asynchronous call completes successfully.
9469                 </p></description>
9470             </descriptive>
9471             <Type name="BluetoothDiscoverDevicesSuccessCallback"/>
9472           </Argument>
9473           <Argument optional="optional" name="errorCallback">
9474             <descriptive>
9475                 <description><p>
9476  The method to invoke when an error occurs.
9477                 </p></description>
9478             </descriptive>
9479             <Type name="ErrorCallback" nullable="nullable"/>
9480           </Argument>
9481         </ArgumentList>
9482         <Raises>
9483           <RaiseException name="WebAPIException">
9484             <descriptive>
9485                 <description><p>
9486  with error type TypeMismatchError, if any of the input parameter is not compatible with the expected type for that parameter.
9487                 </p></description>
9488                 <description><p>
9489  with error type SecurityError, if the application does not have the privilege to call this method.
9490                 </p></description>
9491                 <description><p>
9492  with error type NotSupportedError, if this feature is not supported.
9493                 </p></description>
9494             </descriptive>
9495           </RaiseException>
9496         </Raises>
9497       </Operation>
9498       <Operation name="stopDiscovery" id="::Bluetooth::BluetoothAdapter::stopDiscovery">
9499         <webidl>        void stopDiscovery(optional <ref>SuccessCallback</ref>? successCallback, 
9500                            optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
9501         <descriptive>
9502             <brief>
9503  Stops an active device discovery session.
9504             </brief>
9505            <description>
9506             <p>
9507 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.
9508             </p>
9509             <p>
9510 The ErrorCallback is launched with these error types:
9511             </p>
9512             <ul>
9513               <li>
9514  ServiceNotAvailableError - If a Bluetooth device is turned off.              </li>
9515               <li>
9516  UnknownError - If any other error occurs.              </li>
9517             </ul>
9518            </description>
9519             <version>
9520  1.0
9521             </version>
9522             <privilegelevel>
9523  public
9524             </privilegelevel>
9525             <privilege>
9526  http://tizen.org/privilege/bluetooth.gap
9527             </privilege>
9528             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
9529  
9530  // Calls this method whenever user finds one of the device
9531  function cancelDiscovery() {
9532     adapter.stopDiscovery(function() {
9533         console.log(&quot;Stop discovery success.&quot;);
9534     },
9535     function (e) {
9536         console.log(&quot;Error while stopDiscovery:&quot; + e.message);
9537     });
9538  }
9539
9540  function startDiscovery() {
9541
9542   var discoverDevicesSuccessCallback = {
9543       onstarted: function() { 
9544           console.log (&quot;Device discovery started...&quot;) ;
9545       },
9546       ondevicefound: function(device) {
9547           console.log(&quot;Found device - name: &quot; + device.name + &quot;, Address: &quot;+ device.address);
9548           // Shows the device to user to check if this is the device user is looking for.
9549           // For example, add this to list view.
9550
9551           cancelDiscovery();
9552       },
9553       ondevicedisappeared: function(address) { 
9554           console.log(&quot;Device disappeared: &quot; + address);
9555           // Removes from list, as it is no longer valid.
9556       },
9557       onfinished: function(devices) { 
9558           console.log(&quot;Found Devices&quot;);
9559           for (var i = 0; i &#60; devices.length; i++) {
9560               console.log(&quot;Name: &quot; + devices[i].name + &quot;, Address: &quot; + devices[i].address);
9561           }
9562           console.log(&quot;Total: &quot; + devices.length);
9563       }
9564   };
9565  
9566   // Starts searching for nearby devices, for about 12 sec.
9567   adapter.discoverDevices(discoverDevicesSuccessCallback, function(e){
9568       console.log (&quot;Failed to search devices: &quot; + e.message + &quot;(&quot; + e.name + &quot;)&quot;);
9569   });
9570  }
9571
9572  function onSetPoweredError(e) {
9573      console.log (&quot;Could not turn on device, reason: &quot; + e.message + &quot;(&quot; + e.name + &quot;)&quot;);
9574  }
9575
9576  adapter.setPowered(true, startDiscovery, onSetPoweredError);
9577  </Code>
9578         </descriptive>
9579         <Type type="void"/>
9580         <ArgumentList>
9581           <Argument optional="optional" name="successCallback">
9582             <descriptive>
9583                 <description><p>
9584  The method to invoke when an asynchronous call completes successfully.
9585                 </p></description>
9586             </descriptive>
9587             <Type name="SuccessCallback" nullable="nullable"/>
9588           </Argument>
9589           <Argument optional="optional" name="errorCallback">
9590             <descriptive>
9591                 <description><p>
9592  The method to invoke when an error occurs.
9593                 </p></description>
9594             </descriptive>
9595             <Type name="ErrorCallback" nullable="nullable"/>
9596           </Argument>
9597         </ArgumentList>
9598         <Raises>
9599           <RaiseException name="WebAPIException">
9600             <descriptive>
9601                 <description><p>
9602  with error type TypeMismatchError, if any of the input parameter is not compatible with the expected type for that parameter.
9603                 </p></description>
9604                 <description><p>
9605  with error type SecurityError, if the application does not have the privilege to call this method.
9606                 </p></description>
9607                 <description><p>
9608  with error type NotSupportedError, if this feature is not supported.
9609                 </p></description>
9610             </descriptive>
9611           </RaiseException>
9612         </Raises>
9613       </Operation>
9614       <Operation name="getKnownDevices" id="::Bluetooth::BluetoothAdapter::getKnownDevices">
9615         <webidl>        void getKnownDevices(<ref>BluetoothDeviceArraySuccessCallback</ref> successCallback, 
9616                              optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
9617         <descriptive>
9618             <brief>
9619  Gets all the known devices that have information stored in the local Bluetooth adapter.
9620             </brief>
9621            <description>
9622             <p>
9623 A known device is one of the following:
9624             </p>
9625             <ul>
9626               <li>
9627 a bonded device              </li>
9628               <li>
9629 a device found in last inquiry process              </li>
9630             </ul>
9631             <p>
9632 On success, it returns the list of currently known devices through <em>BluetoothDeviceArraySuccessCallback</em>.
9633             </p>
9634             <p>
9635 The ErrorCallback is launched with these error types:
9636             </p>
9637             <ul>
9638               <li>
9639  ServiceNotAvailableError - If a Bluetooth device is turned off.              </li>
9640               <li>
9641  UnknownError - If any other error occurs.              </li>
9642             </ul>
9643            </description>
9644             <version>
9645  1.0
9646             </version>
9647             <privilegelevel>
9648  public
9649             </privilegelevel>
9650             <privilege>
9651  http://tizen.org/privilege/bluetooth.gap
9652             </privilege>
9653             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
9654  
9655  function onGotDevices(devices) {
9656     console.log(&quot;Devices&quot;);
9657     for (var i = 0; i &#60; devices.length; i++) {
9658         console.log(&quot; Name: &quot; + devices[i].name + &quot;, Address: &quot; + devices[i].address);
9659     }
9660     console.log(&quot;Total: &quot; + devices.length);
9661  }
9662
9663  function onError(e) {
9664    console.log (&quot;Error: &quot; + e.message);
9665  }
9666
9667  function onBluetoothsetPowered() {
9668     adapter.getKnownDevices(onGotDevices, onError);
9669  }
9670  
9671  // Turns on Bluetooth
9672  adapter.setPowered(true, onBluetoothsetPowered);
9673  </Code>
9674         </descriptive>
9675         <Type type="void"/>
9676         <ArgumentList>
9677           <Argument name="successCallback">
9678             <descriptive>
9679                 <description><p>
9680  The method to invoke at retrieval of a list of Bluetooth devices that were bonded (paired) to the local Bluetooth adapter.
9681                 </p></description>
9682             </descriptive>
9683             <Type name="BluetoothDeviceArraySuccessCallback"/>
9684           </Argument>
9685           <Argument optional="optional" name="errorCallback">
9686             <descriptive>
9687                 <description><p>
9688  The method to invoke in case of failure in finding any bonded devices.
9689                 </p></description>
9690             </descriptive>
9691             <Type name="ErrorCallback" nullable="nullable"/>
9692           </Argument>
9693         </ArgumentList>
9694         <Raises>
9695           <RaiseException name="WebAPIException">
9696             <descriptive>
9697                 <description><p>
9698  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter
9699                 </p></description>
9700                 <description><p>
9701  with error type SecurityError, if the application does not have the privilege to call this method.
9702                 </p></description>
9703                 <description><p>
9704  with error type NotSupportedError, if this feature is not supported.
9705                 </p></description>
9706             </descriptive>
9707           </RaiseException>
9708         </Raises>
9709       </Operation>
9710       <Operation name="getDevice" id="::Bluetooth::BluetoothAdapter::getDevice">
9711         <webidl>        void getDevice(<ref>BluetoothAddress</ref> address,
9712                        <ref>BluetoothDeviceSuccessCallback</ref> successCallback, 
9713                        optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
9714         <descriptive>
9715             <brief>
9716  Gets the <em>BluetoothDevice</em> object for a given device hardware address.
9717             </brief>
9718            <description>
9719             <p>
9720 This method returns device information stored in the local Bluetooth adapter for the specified device <em>address</em> through 
9721 BluetoothDeviceSuccessCallback.
9722 A valid hardware address must be passed, such as &quot;35:F4:59:D1:7A:03&quot;.
9723             </p>
9724             <p>
9725 The ErrorCallback is launched with these error types:
9726             </p>
9727             <ul>
9728               <li>
9729  NotFoundError - If there is no device with the given address.              </li>
9730               <li>
9731  ServiceNotAvailableError - If a Bluetooth device is turned off.              </li>
9732               <li>
9733  UnknownError - If any other error occurs.              </li>
9734             </ul>
9735            </description>
9736             <version>
9737  1.0
9738             </version>
9739             <privilegelevel>
9740  public
9741             </privilegelevel>
9742             <privilege>
9743  http://tizen.org/privilege/bluetooth.gap
9744             </privilege>
9745             <Code> function gotDeviceInfo(device) {
9746     console.log(&quot;Device Name: &quot; + device.name);
9747     console.log(&quot;Device Address: &quot; + device.address);
9748     console.log(&quot;Device Class: &quot; + device.deviceClass.major);
9749     console.log(&quot;Is Bonded: &quot; + (device.isBonded ? &quot;Yes&quot; : &quot;No&quot;));
9750  }
9751
9752  function onError(e) {
9753     console.log (&quot;Could not get device info:&quot; + e.message);
9754  }
9755
9756  var adapter = tizen.bluetooth.getDefaultAdapter();
9757  adapter.getDevice(&quot;35:F4:59:D1:7A:03&quot;, gotDeviceInfo, onError);
9758  </Code>
9759         </descriptive>
9760         <Type type="void"/>
9761         <ArgumentList>
9762           <Argument name="address">
9763             <descriptive>
9764                 <description><p>
9765  The address of a remote Bluetooth device to get.
9766                 </p></description>
9767             </descriptive>
9768             <Type name="BluetoothAddress"/>
9769           </Argument>
9770           <Argument name="successCallback">
9771             <descriptive>
9772                 <description><p>
9773  The method to invoke when an asynchronous call completes successfully.
9774                 </p></description>
9775             </descriptive>
9776             <Type name="BluetoothDeviceSuccessCallback"/>
9777           </Argument>
9778           <Argument optional="optional" name="errorCallback">
9779             <descriptive>
9780                 <description><p>
9781  The method to invoke when an error occurs.
9782                 </p></description>
9783             </descriptive>
9784             <Type name="ErrorCallback" nullable="nullable"/>
9785           </Argument>
9786         </ArgumentList>
9787         <Raises>
9788           <RaiseException name="WebAPIException">
9789             <descriptive>
9790                 <description><p>
9791  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter
9792                 </p></description>
9793                 <description><p>
9794  with error type SecurityError, if the application does not have the privilege to call this method.
9795                 </p></description>
9796                 <description><p>
9797  with error type NotSupportedError, if this feature is not supported.
9798                 </p></description>
9799             </descriptive>
9800           </RaiseException>
9801         </Raises>
9802       </Operation>
9803       <Operation name="createBonding" id="::Bluetooth::BluetoothAdapter::createBonding">
9804         <webidl>        void createBonding(<ref>BluetoothAddress</ref> address,
9805                            <ref>BluetoothDeviceSuccessCallback</ref> successCallback, 
9806                            optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
9807         <descriptive>
9808             <brief>
9809  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.
9810             </brief>
9811            <description>
9812             <p>
9813 If the bonding process is successful, the device information is sent in <em>successCallback</em>.
9814             </p>
9815             <p>
9816 The ErrorCallback is launched with these error types:
9817             </p>
9818             <ul>
9819               <li>
9820  NotFoundError - If there is no device with the given address.              </li>
9821               <li>
9822  ServiceNotAvailableError - If a Bluetooth device is turned off.              </li>
9823               <li>
9824  UnknownError - If any other error occurs.              </li>
9825             </ul>
9826            </description>
9827             <version>
9828  1.0
9829             </version>
9830             <privilegelevel>
9831  public
9832             </privilegelevel>
9833             <privilege>
9834  http://tizen.org/privilege/bluetooth.gap
9835             </privilege>
9836             <Code> function onBondingSuccess(device) {
9837     console.log(&quot;Device Name:&quot; + device.name);
9838     console.log(&quot;Device Address:&quot; + device.address);
9839     console.log(&quot;Device Service UUIDs:&quot; + device.uuids.join(&quot;\n&quot;));
9840  }
9841
9842  function onError(e) {
9843     console.log (&quot;Could not create bonding, reason:&quot; + e.message);
9844  }
9845
9846  var adapter = tizen.bluetooth.getDefaultAdapter();
9847  adapter.createBonding(&quot;35:F4:59:D1:7A:03&quot;, onBondingSuccess, onError);
9848  </Code>
9849         </descriptive>
9850         <Type type="void"/>
9851         <ArgumentList>
9852           <Argument name="address">
9853             <descriptive>
9854                 <description><p>
9855  The MAC address of remote Bluetooth address to bond with.
9856                 </p></description>
9857             </descriptive>
9858             <Type name="BluetoothAddress"/>
9859           </Argument>
9860           <Argument name="successCallback">
9861             <descriptive>
9862                 <description><p>
9863  The method to invoke when an asynchronous call completes successfully.
9864                 </p></description>
9865             </descriptive>
9866             <Type name="BluetoothDeviceSuccessCallback"/>
9867           </Argument>
9868           <Argument optional="optional" name="errorCallback">
9869             <descriptive>
9870                 <description><p>
9871  The method to invoke when an error occurs.
9872                 </p></description>
9873             </descriptive>
9874             <Type name="ErrorCallback" nullable="nullable"/>
9875           </Argument>
9876         </ArgumentList>
9877         <Raises>
9878           <RaiseException name="WebAPIException">
9879             <descriptive>
9880                 <description><p>
9881  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
9882                 </p></description>
9883                 <description><p>
9884  with error type SecurityError, if the application does not have the privilege to call this method.
9885                 </p></description>
9886                 <description><p>
9887  with error type NotSupportedError, if this feature is not supported.
9888                 </p></description>
9889             </descriptive>
9890           </RaiseException>
9891         </Raises>
9892       </Operation>
9893       <Operation name="destroyBonding" id="::Bluetooth::BluetoothAdapter::destroyBonding">
9894         <webidl>        void destroyBonding(<ref>BluetoothAddress</ref> address,
9895                             optional <ref>SuccessCallback</ref>? successCallback, 
9896                             optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
9897         <descriptive>
9898             <brief>
9899  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.
9900             </brief>
9901            <description>
9902             <p>
9903 The ErrorCallback is launched with these error types:
9904             </p>
9905             <ul>
9906               <li>
9907  NotFoundError - If there is no device with the given address.              </li>
9908               <li>
9909  ServiceNotAvailableError - If a Bluetooth device is turned off.              </li>
9910               <li>
9911  UnknownError - If any other error occurs.              </li>
9912             </ul>
9913            </description>
9914             <version>
9915  1.0
9916             </version>
9917             <privilegelevel>
9918  public
9919             </privilegelevel>
9920             <privilege>
9921  http://tizen.org/privilege/bluetooth.gap
9922             </privilege>
9923             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
9924  
9925  function gotDevice(device) {
9926     if (device.isBonded) {
9927       // Initiates destroying bonding
9928       adapter.destroyBonding(device.address, function() { 
9929            console.log(&quot;Succeeded to destroy the bond success with:&quot; + device.address);
9930        },
9931        function(e) { 
9932            console.log(&quot;Failed to destroy the bond with &quot; + device.address + &quot;, reason: &quot; + e.message); 
9933        });
9934     }
9935  }
9936
9937  var deviceAddress = &quot;35:F4:59:D1:7A:03&quot;;
9938  adapter.getDevice(deviceAddress, gotDevice, function(e) { 
9939              console.log(&quot;Failed to get device info for &quot; + deviceAddress + &quot;, reason: &quot; + e.message); 
9940  } );
9941  </Code>
9942         </descriptive>
9943         <Type type="void"/>
9944         <ArgumentList>
9945           <Argument name="address">
9946             <descriptive>
9947                 <description><p>
9948  The address of a bonded device.
9949                 </p></description>
9950             </descriptive>
9951             <Type name="BluetoothAddress"/>
9952           </Argument>
9953           <Argument optional="optional" name="successCallback">
9954             <descriptive>
9955                 <description><p>
9956  The method to invoke when an asynchronous call completes successfully.
9957                 </p></description>
9958             </descriptive>
9959             <Type name="SuccessCallback" nullable="nullable"/>
9960           </Argument>
9961           <Argument optional="optional" name="errorCallback">
9962             <descriptive>
9963                 <description><p>
9964  The method to invoke when an error occurs.
9965                 </p></description>
9966             </descriptive>
9967             <Type name="ErrorCallback" nullable="nullable"/>
9968           </Argument>
9969         </ArgumentList>
9970         <Raises>
9971           <RaiseException name="WebAPIException">
9972             <descriptive>
9973                 <description><p>
9974  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter
9975                 </p></description>
9976                 <description><p>
9977  with error type SecurityError, if the application does not have the privilege to call this method.
9978                 </p></description>
9979                 <description><p>
9980  with error type NotSupportedError, if this feature is not supported.
9981                 </p></description>
9982             </descriptive>
9983           </RaiseException>
9984         </Raises>
9985       </Operation>
9986       <Operation name="registerRFCOMMServiceByUUID" id="::Bluetooth::BluetoothAdapter::registerRFCOMMServiceByUUID">
9987         <webidl>        void registerRFCOMMServiceByUUID(<ref>BluetoothUUID</ref> uuid,
9988                                          DOMString name,
9989                                          <ref>BluetoothServiceSuccessCallback</ref> successCallback, 
9990                                          optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
9991         <descriptive>
9992             <brief>
9993  Registers a service record in the device service record database with the specified <em>uuid</em>, <em>name</em>.
9994             </brief>
9995            <description>
9996             <p>
9997 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. 
9998 The service handler can be used to be notified on client connections or to unregister the service.
9999 User interaction is mandatory to connect to a registered service.
10000             </p>
10001             <p>
10002 If any client(remote device) connects to this service, then <em>BluetoothServiceHandler.onconnect()</em> is invoked with <em>BluetoothSocket</em> object.
10003             </p>
10004             <p>
10005 <em>BluetoothServiceHandler.unregister()</em> can be used to unregister the service record from the device service database and stop listening for client connections.
10006             </p>
10007             <p>
10008 The ErrorCallback is launched with these error types:
10009             </p>
10010             <ul>
10011               <li>
10012  InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
10013               <li>
10014  ServiceNotAvailableError - If a Bluetooth device is turned off.              </li>
10015               <li>
10016  UnknownError - If any other error occurs.              </li>
10017             </ul>
10018            </description>
10019             <version>
10020  1.0
10021             </version>
10022             <privilegelevel>
10023  public
10024             </privilegelevel>
10025             <privilege>
10026  http://tizen.org/privilege/bluetooth.spp
10027             </privilege>
10028             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
10029  // Holds currently registered service record
10030  var chatServiceHandler = null;
10031  // Holds currently open socket
10032  var serviceSocket = null;
10033
10034  function chatServiceSuccessCb(recordHandler) {
10035     console.log(&quot;Chat service registration succeeds!&quot;);
10036     chatServiceHandler = recordHandler;
10037     recordHandler.onconnect = function(socket) {
10038         console.log(&quot;Client connected: &quot; + socket.peer.name + &quot;,&quot; + socket.peer.address);
10039         serviceSocket = socket;
10040         // Messages received from remote device
10041         socket.onmessage = function() {
10042              var data = socket.readData();
10043              // Handles message code goes here
10044              
10045         };
10046         
10047         socket.onclose = function() {
10048             console.log('The socket is closed.');
10049             serviceSocket = null;
10050         };
10051     };
10052  };
10053
10054  function publishChatService()
10055  {
10056     var CHAT_SERVICE_UUID = &quot;5BCE9431-6C75-32AB-AFE0-2EC108A30860&quot;;
10057     adapter.registerRFCOMMServiceByUUID(CHAT_SERVICE_UUID, &quot;Chat service&quot;, chatServiceSuccessCb,
10058       // Error handler
10059       function(e) {
10060            console.log( &quot;Could not register service record, Error: &quot; + e.message);
10061       });
10062  }
10063  
10064  function unregisterChatService()
10065  {
10066       if (chatServiceHandler != null) {
10067           chatServiceHandler.unregister(function() {
10068                console.log(&quot;Chat service is unregistered&quot;);
10069                chatServiceHandler = null;
10070            }, function(e) {
10071                console.log(&quot;Failed to unregister service: &quot; + e.message);
10072            });
10073       }
10074  }
10075  </Code>
10076         </descriptive>
10077         <Type type="void"/>
10078         <ArgumentList>
10079           <Argument name="uuid">
10080             <descriptive>
10081                 <description><p>
10082  The UUID of the service, to which clients connects.
10083                 </p></description>
10084             </descriptive>
10085             <Type name="BluetoothUUID"/>
10086           </Argument>
10087           <Argument name="name">
10088             <descriptive>
10089                 <description><p>
10090  The Name of a service.
10091                 </p></description>
10092             </descriptive>
10093             <Type type="DOMString"/>
10094           </Argument>
10095           <Argument name="successCallback">
10096             <descriptive>
10097                 <description><p>
10098  The method to invoke on successful service registration.
10099                 </p></description>
10100             </descriptive>
10101             <Type name="BluetoothServiceSuccessCallback"/>
10102           </Argument>
10103           <Argument optional="optional" name="errorCallback">
10104             <descriptive>
10105                 <description><p>
10106  The method to invoke when an error occurs.
10107                 </p></description>
10108             </descriptive>
10109             <Type name="ErrorCallback" nullable="nullable"/>
10110           </Argument>
10111         </ArgumentList>
10112         <Raises>
10113           <RaiseException name="WebAPIException">
10114             <descriptive>
10115                 <description><p>
10116  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
10117                 </p></description>
10118                 <description><p>
10119  with error type SecurityError, if the application does not have the privilege to call this method.
10120                 </p></description>
10121                 <description><p>
10122  with error type NotSupportedError, if this feature is not supported.
10123                 </p></description>
10124             </descriptive>
10125           </RaiseException>
10126         </Raises>
10127       </Operation>
10128       <Operation name="getBluetoothProfileHandler" id="::Bluetooth::BluetoothAdapter::getBluetoothProfileHandler">
10129         <webidl>        <ref>BluetoothProfileHandler</ref> getBluetoothProfileHandler(<ref>BluetoothProfileType</ref> profileType) raises(<ref>WebAPIException</ref>);</webidl>
10130         <descriptive>
10131             <brief>
10132  Gets the profile handler for the given type.
10133             </brief>
10134             <version>
10135  2.2
10136             </version>
10137             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
10138  var healthProfileHandler = adapter.getBluetoothProfileHandler(&quot;HEALTH&quot;);
10139  </Code>
10140         </descriptive>
10141         <Type name="BluetoothProfileHandler"/>
10142         <ArgumentList>
10143           <Argument name="profileType">
10144             <descriptive>
10145                 <description><p>
10146  The type of Bluetooth Profile.
10147                 </p></description>
10148             </descriptive>
10149             <Type name="BluetoothProfileType"/>
10150           </Argument>
10151         </ArgumentList>
10152         <Raises>
10153           <RaiseException name="WebAPIException">
10154             <descriptive>
10155                 <description><p>
10156  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
10157                 </p></description>
10158                 <description><p>
10159  with error type NotSupportedError, if this feature is not supported.
10160                 </p></description>
10161                 <description><p>
10162  with error type UnknownError, if any other error occurs.
10163                 </p></description>
10164             </descriptive>
10165           </RaiseException>
10166         </Raises>
10167       </Operation>
10168     </Interface>
10169     <Interface name="BluetoothDevice" id="::Bluetooth::BluetoothDevice">
10170       <webidl>    [NoInterfaceObject] interface BluetoothDevice {
10171         readonly attribute DOMString name;
10172         readonly attribute <ref>BluetoothAddress</ref> address;
10173         readonly attribute <ref>BluetoothClass</ref> deviceClass;
10174         readonly attribute boolean isBonded;
10175         readonly attribute boolean isTrusted;
10176         readonly attribute boolean isConnected;
10177         readonly attribute <ref>BluetoothUUID</ref>[] uuids;
10178
10179         void connectToServiceByUUID(<ref>BluetoothUUID</ref> uuid,
10180                                     <ref>BluetoothSocketSuccessCallback</ref> successCallback, 
10181                                     optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
10182     };</webidl>
10183       <descriptive>
10184           <brief>
10185  This interface represents a remote Bluetooth device.
10186           </brief>
10187          <description>
10188           <p>
10189 A <em>BluetoothDevice</em> object can be retrieved using one of the following APIs:
10190           </p>
10191           <ul>
10192             <li>
10193  BluetoothAdapter.getDevice()            </li>
10194             <li>
10195  BluetoothAdapter.getKnownDevices()             </li>
10196             <li>
10197  BluetoothAdapter.discoverDevices()             </li>
10198             <li>
10199  BluetoothAdapter.createBonding()             </li>
10200           </ul>
10201          </description>
10202           <version>
10203  1.0
10204           </version>
10205       </descriptive>
10206       <ExtendedAttributeList>
10207         <ExtendedAttribute name="NoInterfaceObject">
10208           <webidl>NoInterfaceObject</webidl>
10209         </ExtendedAttribute>
10210       </ExtendedAttributeList>
10211       <Attribute readonly="readonly" name="name" id="::Bluetooth::BluetoothDevice::name">
10212         <webidl>        readonly attribute DOMString name;</webidl>
10213         <descriptive>
10214             <brief>
10215  An attribute to store the readable name of this remote device.
10216             </brief>
10217             <version>
10218  1.0
10219             </version>
10220             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
10221  adapter.getDevice(&quot;11:22:33:44:55:66&quot;, function(device) {
10222     console.log(&quot;Device Name: &quot; + device.name);
10223  });
10224  </Code>
10225         </descriptive>
10226         <Type type="DOMString"/>
10227       </Attribute>
10228       <Attribute readonly="readonly" name="address" id="::Bluetooth::BluetoothDevice::address">
10229         <webidl>        readonly attribute <ref>BluetoothAddress</ref> address;</webidl>
10230         <descriptive>
10231             <brief>
10232  An attribute to store the hardware address of this remote device.
10233             </brief>
10234             <version>
10235  1.0
10236             </version>
10237             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
10238  adapter.getDevice(&quot;11:22:33:44:55:66&quot;, function(device) {
10239     console.log(&quot;Device Address: &quot; + device.address);
10240  });
10241  </Code>
10242         </descriptive>
10243         <Type name="BluetoothAddress"/>
10244       </Attribute>
10245       <Attribute readonly="readonly" name="deviceClass" id="::Bluetooth::BluetoothDevice::deviceClass">
10246         <webidl>        readonly attribute <ref>BluetoothClass</ref> deviceClass;</webidl>
10247         <descriptive>
10248             <brief>
10249  An attribute to indicate a device class, which represents the type of the device and the services it provides.
10250             </brief>
10251             <version>
10252  1.0
10253             </version>
10254             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
10255  adapter.getDevice(&quot;11:22:33:44:55:66&quot;, function(device) {
10256     console.log(&quot;Device Major Class: &quot; + device.deviceClass.major);
10257  });
10258  </Code>
10259         </descriptive>
10260         <Type name="BluetoothClass"/>
10261       </Attribute>
10262       <Attribute readonly="readonly" name="isBonded" id="::Bluetooth::BluetoothDevice::isBonded">
10263         <webidl>        readonly attribute boolean isBonded;</webidl>
10264         <descriptive>
10265             <brief>
10266  An attribute to check the bond state of this remote device with the local device.
10267             </brief>
10268             <version>
10269  1.0
10270             </version>
10271             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
10272  adapter.getDevice(&quot;11:22:33:44:55:66&quot;, function(device) {
10273     console.log(&quot;Is bonded: &quot; + (device.isBonded ? &quot;Yes&quot; : &quot;No&quot;));
10274  });
10275  </Code>
10276         </descriptive>
10277         <Type type="boolean"/>
10278       </Attribute>
10279       <Attribute readonly="readonly" name="isTrusted" id="::Bluetooth::BluetoothDevice::isTrusted">
10280         <webidl>        readonly attribute boolean isTrusted;</webidl>
10281         <descriptive>
10282             <brief>
10283  An attribute to check whether the local device recognizes this remote device as a trusted device or not.
10284             </brief>
10285             <version>
10286  1.0
10287             </version>
10288             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
10289  adapter.getDevice(&quot;11:22:33:44:55:66&quot;, function(device) {
10290     console.log(&quot;Is trusted: &quot; + (device.isTrusted ? &quot;Yes&quot; : &quot;No&quot;));
10291  });
10292  </Code>
10293         </descriptive>
10294         <Type type="boolean"/>
10295       </Attribute>
10296       <Attribute readonly="readonly" name="isConnected" id="::Bluetooth::BluetoothDevice::isConnected">
10297         <webidl>        readonly attribute boolean isConnected;</webidl>
10298         <descriptive>
10299             <brief>
10300  An attribute to check the connection state of this remote device with the local device.
10301             </brief>
10302             <version>
10303  1.0
10304             </version>
10305             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
10306  adapter.getDevice(&quot;11:22:33:44:55:66&quot;, function(device) {
10307     console.log(&quot;Is connected: &quot; + (device.isConnected ? &quot;Yes&quot; : &quot;No&quot;));
10308  });
10309  </Code>
10310         </descriptive>
10311         <Type type="boolean"/>
10312       </Attribute>
10313       <Attribute readonly="readonly" name="uuids" id="::Bluetooth::BluetoothDevice::uuids">
10314         <webidl>        readonly attribute <ref>BluetoothUUID</ref>[] uuids;</webidl>
10315         <descriptive>
10316             <brief>
10317  An attribute to store the list of 128 bit service UUIDs available on this remote device.
10318             </brief>
10319             <version>
10320  1.0
10321             </version>
10322             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
10323  var CHAT_SERVICE_UUID = &quot;5BCE9431-6C75-32AB-AFE0-2EC108A30860&quot;;
10324  adapter.getDevice(&quot;11:22:33:44:55:66&quot;, function(device) {
10325     var uuids = device.uuids;
10326     var services = &quot;&quot;;
10327     for (var i = 0; i &#60; uuids.length; i++) {
10328         services += uuids[i] + &quot;\n&quot;;
10329     }
10330     console.log (&quot;Services found: &quot; + services);
10331     if (uuids.indexOf(CHAT_SERVICE_UUID) != -1) {
10332         // Connects to service
10333         device.connectToServiceByUUID(CHAT_SERVICE_UUID, function(socket) {
10334             //
10335             // Connected to service, handle socket
10336             //
10337         }, function (e) {
10338             console.log(&quot;Could not connect to chat service !!!. Error: &quot; + e.message);
10339         });
10340     }
10341  });
10342  </Code>
10343         </descriptive>
10344         <Type type="array">
10345           <Type name="BluetoothUUID"/>
10346         </Type>
10347       </Attribute>
10348       <Operation name="connectToServiceByUUID" id="::Bluetooth::BluetoothDevice::connectToServiceByUUID">
10349         <webidl>        void connectToServiceByUUID(<ref>BluetoothUUID</ref> uuid,
10350                                     <ref>BluetoothSocketSuccessCallback</ref> successCallback, 
10351                                     optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
10352         <descriptive>
10353             <brief>
10354  Connects to a specified service identified by <em>uuid</em> on this remote device.
10355             </brief>
10356            <description>
10357             <p>
10358 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.
10359             </p>
10360             <p>
10361 The ErrorCallback is launched with these error types:
10362             </p>
10363             <ul>
10364               <li>
10365  NotFoundError - If there is no service with the specified <em>uuid</em>.              </li>
10366               <li>
10367  InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
10368               <li>
10369  UnknownError - If any other error occurs.              </li>
10370             </ul>
10371            </description>
10372             <version>
10373  1.0
10374             </version>
10375             <privilegelevel>
10376  public
10377             </privilegelevel>
10378             <privilege>
10379  http://tizen.org/privilege/bluetooth.spp
10380             </privilege>
10381             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
10382  var clientSocket = null;
10383
10384  // Calls a method that is invoked when user wants to send a message to a remote device
10385  function sendMessage(msg) {
10386     // Validates socket state, if everything is ok.
10387     if (clientSocket != null &amp;&amp; clientSocket.state == &quot;OPEN&quot;) {
10388         // Sends the message
10389         clientSocket.writeData(msg);
10390     }
10391  }
10392
10393  // Calls a method that is invoked when a socket is open
10394  function onSocketConnected(socket) {
10395     clientSocket = socket;
10396     console.log(&quot;Opening a socket successfully!!!&quot;);
10397     socket.onmessage = function () {
10398         var data = socket.readData();
10399         var recvmsg = &quot;&quot;;
10400         for (var i = 0; i &#60; data.length; i++)
10401         {
10402            recvmsg += String.fromCharCode(data[i]);
10403         }
10404         console.log(&quot;server msg >> &quot; + recvmsg);
10405     };
10406
10407     socket.onclose = function() {
10408         console.log(&quot;socket disconnected.&quot;);
10409     };
10410  }
10411
10412  function onDeviceReady(device) {
10413     // Validates device and service uuid
10414     if (device.uuids.indexOf(&quot;5BCE9431-6C75-32AB-AFE0-2EC108A30860&quot;) != -1) {
10415        // Opens socket
10416        device.connectToServiceByUUID(&quot;5BCE9431-6C75-32AB-AFE0-2EC108A30860&quot;, onSocketConnected, function(e) {
10417            console.log (&quot;Error connecting to service. Reason: &quot; + e.message);
10418         });
10419     }
10420     else {
10421         console.log (&quot;Chat service is not supported by this device&quot;);
10422     }
10423  }
10424
10425  function onSetPowered() {
10426     // Gets the BluetoothDevice object
10427     adapter.getDevice(&quot;35:F4:59:D1:7A:03&quot;, onDeviceReady, function(e) { console.log(&quot;Error: &quot; + e.message); });
10428  }
10429
10430  adapter.setPowered(true, onSetPowered, function(e) {console.log (&quot;Could not turn on Bluetooth adapter. reason: &quot; + e.message); });
10431  </Code>
10432         </descriptive>
10433         <Type type="void"/>
10434         <ArgumentList>
10435           <Argument name="uuid">
10436             <descriptive>
10437                 <description><p>
10438  The 128 bit unique identifier, which represents the service record on the device.
10439                 </p></description>
10440             </descriptive>
10441             <Type name="BluetoothUUID"/>
10442           </Argument>
10443           <Argument name="successCallback">
10444             <descriptive>
10445                 <description><p>
10446  The method to invoke when an asynchronous call completes successfully.
10447                 </p></description>
10448             </descriptive>
10449             <Type name="BluetoothSocketSuccessCallback"/>
10450           </Argument>
10451           <Argument optional="optional" name="errorCallback">
10452             <descriptive>
10453                 <description><p>
10454  The method to invoke when opening of a socket fails.
10455                 </p></description>
10456             </descriptive>
10457             <Type name="ErrorCallback" nullable="nullable"/>
10458           </Argument>
10459         </ArgumentList>
10460         <Raises>
10461           <RaiseException name="WebAPIException">
10462             <descriptive>
10463                 <description><p>
10464  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter
10465                 </p></description>
10466                 <description><p>
10467  with error type SecurityError, if the application does not have the privilege to call this method.
10468                 </p></description>
10469                 <description><p>
10470  with error type NotSupportedError, if this feature is not supported.
10471                 </p></description>
10472             </descriptive>
10473           </RaiseException>
10474         </Raises>
10475       </Operation>
10476     </Interface>
10477     <Interface name="BluetoothSocket" id="::Bluetooth::BluetoothSocket">
10478       <webidl>    [NoInterfaceObject] interface BluetoothSocket {
10479         readonly attribute <ref>BluetoothUUID</ref> uuid;
10480         readonly attribute <ref>BluetoothSocketState</ref> state;
10481         readonly attribute <ref>BluetoothDevice</ref> peer;
10482         [TreatNonCallableAsNull] attribute <ref>SuccessCallback</ref>? onmessage raises(<ref>WebAPIException</ref>);
10483         [TreatNonCallableAsNull] attribute <ref>SuccessCallback</ref>? onclose raises(<ref>WebAPIException</ref>);
10484         unsigned long writeData(byte[] data) raises(<ref>WebAPIException</ref>);
10485
10486
10487         byte[] readData() raises(<ref>WebAPIException</ref>);
10488
10489
10490         void close() raises(<ref>WebAPIException</ref>);
10491     };</webidl>
10492       <descriptive>
10493           <brief>
10494  This interface represents the Bluetooth socket.
10495           </brief>
10496          <description>
10497           <p>
10498 The socket object is created by <em>BluetoothDevice.connectToServiceByUUID()</em> or <em>BluetoothAdapter.registerRFCOMMServiceByUUID()</em>.
10499           </p>
10500          </description>
10501           <version>
10502  1.0
10503           </version>
10504       </descriptive>
10505       <ExtendedAttributeList>
10506         <ExtendedAttribute name="NoInterfaceObject">
10507           <webidl>NoInterfaceObject</webidl>
10508         </ExtendedAttribute>
10509       </ExtendedAttributeList>
10510       <Attribute readonly="readonly" name="uuid" id="::Bluetooth::BluetoothSocket::uuid">
10511         <webidl>        readonly attribute <ref>BluetoothUUID</ref> uuid;</webidl>
10512         <descriptive>
10513             <brief>
10514  An attribute to store the service UUID to which this socket is connected.
10515             </brief>
10516             <version>
10517  1.0
10518             </version>
10519         </descriptive>
10520         <Type name="BluetoothUUID"/>
10521       </Attribute>
10522       <Attribute readonly="readonly" name="state" id="::Bluetooth::BluetoothSocket::state">
10523         <webidl>        readonly attribute <ref>BluetoothSocketState</ref> state;</webidl>
10524         <descriptive>
10525             <brief>
10526  An attribute to indicate the socket state.
10527             </brief>
10528             <version>
10529  1.0
10530             </version>
10531         </descriptive>
10532         <Type name="BluetoothSocketState"/>
10533       </Attribute>
10534       <Attribute readonly="readonly" name="peer" id="::Bluetooth::BluetoothSocket::peer">
10535         <webidl>        readonly attribute <ref>BluetoothDevice</ref> peer;</webidl>
10536         <descriptive>
10537             <brief>
10538  The peer device to which this socket is connected.
10539             </brief>
10540             <version>
10541  1.0
10542             </version>
10543         </descriptive>
10544         <Type name="BluetoothDevice"/>
10545       </Attribute>
10546       <Attribute name="onmessage" id="::Bluetooth::BluetoothSocket::onmessage">
10547         <webidl>        [TreatNonCallableAsNull] attribute <ref>SuccessCallback</ref>? onmessage raises(<ref>WebAPIException</ref>);</webidl>
10548         <descriptive>
10549             <brief>
10550  The success callback to be invoked when an incoming message is received from the peer.
10551 By default, this attribute is set to null.
10552             </brief>
10553             <version>
10554  1.0
10555             </version>
10556         </descriptive>
10557         <ExtendedAttributeList>
10558           <ExtendedAttribute name="TreatNonCallableAsNull">
10559             <webidl>TreatNonCallableAsNull</webidl>
10560           </ExtendedAttribute>
10561         </ExtendedAttributeList>
10562         <Type name="SuccessCallback" nullable="nullable"/>
10563         <Raises>
10564           <RaiseException name="WebAPIException">
10565             <descriptive>
10566                 <description><p>
10567  with error type TypeMismatchError, if any input attribute is not compatible with the expected type for this attribute.
10568                 </p></description>
10569             </descriptive>
10570           </RaiseException>
10571         </Raises>
10572       </Attribute>
10573       <Attribute name="onclose" id="::Bluetooth::BluetoothSocket::onclose">
10574         <webidl>        [TreatNonCallableAsNull] attribute <ref>SuccessCallback</ref>? onclose raises(<ref>WebAPIException</ref>);</webidl>
10575         <descriptive>
10576             <brief>
10577  The success callback to be invoked when the socket is closed.
10578 By default, this attribute is set to null.
10579             </brief>
10580             <version>
10581  1.0
10582             </version>
10583         </descriptive>
10584         <ExtendedAttributeList>
10585           <ExtendedAttribute name="TreatNonCallableAsNull">
10586             <webidl>TreatNonCallableAsNull</webidl>
10587           </ExtendedAttribute>
10588         </ExtendedAttributeList>
10589         <Type name="SuccessCallback" nullable="nullable"/>
10590         <Raises>
10591           <RaiseException name="WebAPIException">
10592             <descriptive>
10593                 <description><p>
10594  with error type TypeMismatchError, if any input attribute is not compatible with the expected type for this attribute.
10595                 </p></description>
10596             </descriptive>
10597           </RaiseException>
10598         </Raises>
10599       </Attribute>
10600       <Operation name="writeData" id="::Bluetooth::BluetoothSocket::writeData">
10601         <webidl>        unsigned long writeData(byte[] data) raises(<ref>WebAPIException</ref>);</webidl>
10602         <descriptive>
10603             <brief>
10604  Writes data as a sequence of bytes onto the socket and returns the number of bytes actually written.
10605             </brief>
10606             <version>
10607  1.0
10608             </version>
10609             <privilegelevel>
10610  public
10611             </privilegelevel>
10612             <privilege>
10613  http://tizen.org/privilege/bluetooth.spp
10614             </privilege>
10615             <Code> 
10616  var adapter = tizen.bluetooth.getDefaultAdapter();
10617  
10618  function onSocketConnected(socket) {
10619     console.log (&quot;Opened connection to remote device&quot;);
10620     socket.onmessage = function () {
10621       console.log (&quot;Message received: &quot; + socket.readData());
10622     };
10623
10624     socket.onclose = function() {
10625        console.log(&quot;Socket closed with &quot; + socket.peer.name);
10626     };
10627
10628     // Sends data to peer.
10629     var textmsg = &quot;Test&quot;;
10630     var sendtextmsg = new Array();
10631     for (var i = 0; i &#60; textmsg.length; i++)
10632     {
10633         sendtextmsg[i] = textmsg.charCodeAt(i);
10634     }
10635     socket.writeData (sendtextmsg);
10636  }
10637
10638  function onSocketError(e) {
10639     console.log (&quot;Error connecting to service. Reason: &quot; + e.message);
10640  }
10641
10642  function onDeviceReady(device) {
10643     // Validates device and service uuid
10644     if (device.uuids.indexOf(&quot;5BCE9431-6C75-32AB-AFE0-2EC108A30860&quot;) != -1) {
10645        // Opens socket
10646        device.connectToServiceByUUID(&quot;5BCE9431-6C75-32AB-AFE0-2EC108A30860&quot;, onSocketConnected, onSocketError );
10647     }
10648  }
10649  function onSetPowered() {
10650     // Gets the BluetoothDevice object
10651     adapter.getDevice(&quot;35:F4:59:D1:7A:03&quot;, onDeviceReady, function(e) { console.log(&quot;Error: &quot; + e.message); });
10652  }
10653
10654  adapter.setPowered(true, onSetPowered, function(e) {console.log (&quot;Could not turn on Bluetooth adapter. reason: &quot; + e.message); });
10655  </Code>
10656         </descriptive>
10657         <Type type="unsigned long">
10658           <descriptive>
10659               <description><p>
10660  unsigned long The number of bytes actually sent.
10661               </p></description>
10662           </descriptive>
10663         </Type>
10664         <ArgumentList>
10665           <Argument name="data">
10666             <descriptive>
10667                 <description><p>
10668  The data to send.
10669                 </p></description>
10670             </descriptive>
10671             <Type type="array">
10672               <Type type="byte"/>
10673             </Type>
10674           </Argument>
10675         </ArgumentList>
10676         <Raises>
10677           <RaiseException name="WebAPIException">
10678             <descriptive>
10679                 <description><p>
10680  with error type TypeMismatchError, if any input parameters not compatible with the expected type for that parameter.
10681                 </p></description>
10682                 <description><p>
10683  with error type SecurityError, if the application does not have the privilege to call this method.
10684                 </p></description>
10685                 <description><p>
10686  with error type NotSupportedError, if this feature is not supported.
10687                 </p></description>
10688                 <description><p>
10689  with error type UnknownError, if any other error occurs. 
10690                 </p></description>
10691             </descriptive>
10692           </RaiseException>
10693         </Raises>
10694       </Operation>
10695       <Operation name="readData" id="::Bluetooth::BluetoothSocket::readData">
10696         <webidl>        byte[] readData() raises(<ref>WebAPIException</ref>);</webidl>
10697         <descriptive>
10698             <brief>
10699  Reads data from the socket.
10700             </brief>
10701            <description>
10702             <p>
10703 This method should be called only in the <em>BluetoothSocket.onmessage</em> handler, that is, when data is ready on the socket.
10704             </p>
10705            </description>
10706             <version>
10707  1.0
10708             </version>
10709             <privilegelevel>
10710  public
10711             </privilegelevel>
10712             <privilege>
10713  http://tizen.org/privilege/bluetooth.spp
10714             </privilege>
10715             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
10716
10717  function onError(e) {
10718     console.log (&quot;Error connecting to service. Reason: &quot; + e.message);
10719  }
10720
10721  function onSocketConnected(socket) {
10722     console.log (&quot;Opening socket success!!!&quot;);
10723
10724     socket.onmessage = function() {
10725       //  Has got a message from peer, reads it
10726       var data = socket.readData();
10727
10728       //
10729       // Code to evaluate message goes here
10730       //
10731     };
10732
10733     socket.onclose = function() {
10734        console.log(&quot;Socket closed with &quot; + socket.peer.name);
10735     };
10736  }
10737
10738  function onDeviceReady(device) {
10739     // Validates device and service uuid
10740     if (device.uuids.indexOf(&quot;5BCE9431-6C75-32AB-AFE0-2EC108A30860&quot;) != -1) {
10741        // Opens socket
10742        device.connectToServiceByUUID(&quot;5BCE9431-6C75-32AB-AFE0-2EC108A30860&quot;, onSocketConnected, onError);
10743     }
10744  }
10745  function onSetPowered() {
10746     // Gets the BluetoothDevice object
10747     adapter.getDevice(&quot;35:F4:59:D1:7A:03&quot;, onDeviceReady, function(e) { console.log(&quot;Error: &quot; + e.message); });
10748  }
10749
10750  adapter.setPowered(true, onSetPowered, function(e) {console.log (&quot;Could not turn on Bluetooth adapter. reason: &quot; + e.message); });
10751  </Code>
10752         </descriptive>
10753         <Type type="array">
10754           <descriptive>
10755               <description><p>
10756  byte[] The sequence of bytes successfully read.
10757               </p></description>
10758           </descriptive>
10759           <Type type="byte"/>
10760         </Type>
10761         <ArgumentList/>
10762         <Raises>
10763           <RaiseException name="WebAPIException">
10764             <descriptive>
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 NotSupportedError, if this feature is not supported.
10770                 </p></description>
10771                 <description><p>
10772  with error type UnknownError, if any other error occurs. 
10773                 </p></description>
10774             </descriptive>
10775           </RaiseException>
10776         </Raises>
10777       </Operation>
10778       <Operation name="close" id="::Bluetooth::BluetoothSocket::close">
10779         <webidl>        void close() raises(<ref>WebAPIException</ref>);</webidl>
10780         <descriptive>
10781             <brief>
10782  Closes the socket.
10783             </brief>
10784            <description>
10785             <p>
10786 <b>BluetoothSocket.state</b> changes to <var>CLOSED</var>, and <em>BluetoothSocket.onclose()</em> is invoked on success.
10787             </p>
10788            </description>
10789             <version>
10790  1.0
10791             </version>
10792             <privilegelevel>
10793  public
10794             </privilegelevel>
10795             <privilege>
10796  http://tizen.org/privilege/bluetooth.spp
10797             </privilege>
10798         </descriptive>
10799         <Type type="void"/>
10800         <ArgumentList/>
10801         <Raises>
10802           <RaiseException name="WebAPIException">
10803             <descriptive>
10804                 <description><p>
10805  with error type NotSupportedError, if this feature is not supported.
10806                 </p></description>
10807                 <description><p>
10808  with error type SecurityError, if the application does not have the privilege to call this method.
10809                 </p></description>
10810                 <description><p>
10811  with error type UnknownError, if any other error occurs. 
10812                 </p></description>
10813             </descriptive>
10814           </RaiseException>
10815         </Raises>
10816       </Operation>
10817     </Interface>
10818     <Interface name="BluetoothClass" id="::Bluetooth::BluetoothClass">
10819       <webidl>    [NoInterfaceObject] interface BluetoothClass {
10820         readonly attribute octet major;
10821         
10822         readonly attribute octet minor;
10823         
10824         readonly attribute unsigned short [] services ;
10825         
10826         boolean hasService(unsigned short service) raises(<ref>WebAPIException</ref>);
10827     };</webidl>
10828       <descriptive>
10829           <brief>
10830  This interface represents Bluetooth Class of Device/Service(CoD).
10831           </brief>
10832          <description>
10833           <p>
10834 Bluetooth device class describes the characteristics and capabilities of a device.
10835           </p>
10836           <p>
10837 Bluetooth CoD is a 24 bit integer created by the union of three components:
10838           </p>
10839           <ul>
10840             <li>
10841 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>
10842             <li>
10843 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>
10844             <li>
10845 Zero or more <b>Major Service Classes</b>(bits 13-23) - Represents the services supported by the device.            </li>
10846           </ul>
10847           <p>
10848 The Major and Minor classes are intended to define a general family of devices with which any particular implementation wishes to be associated. 
10849 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.
10850           </p>
10851          </description>
10852           <version>
10853  1.0
10854           </version>
10855       </descriptive>
10856       <ExtendedAttributeList>
10857         <ExtendedAttribute name="NoInterfaceObject">
10858           <webidl>NoInterfaceObject</webidl>
10859         </ExtendedAttribute>
10860       </ExtendedAttributeList>
10861       <Attribute readonly="readonly" name="major" id="::Bluetooth::BluetoothClass::major">
10862         <webidl>        readonly attribute octet major;</webidl>
10863         <descriptive>
10864             <brief>
10865  The major device class and it refers to the <em>BluetoothClassDeviceMajor</em> interface for the list of possible
10866 values.
10867             </brief>
10868             <version>
10869  1.0
10870             </version>
10871             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
10872  
10873  function evaluateDevice(address) {
10874     adapter.getDevice(address, function(device) {
10875         if (device.deviceClass.major == tizen.bluetooth.deviceMajor.COMPUTER) {
10876             // Shows computer icon for this device
10877             console.log(&quot;Device is computer&quot;);
10878         } else if (device.deviceClass.major == tizen.bluetooth.deviceMajor.PHONE) {
10879             // Shows phone icon
10880             console.log(&quot;Device is a Phone&quot;);
10881         }
10882     }, function(e) {
10883         console.log(&quot;Couldn't get any device with the given address: &quot; + e.message);
10884     });
10885  }
10886
10887  evaluateDevice(&quot;11:22:33:44:55:66&quot;);
10888
10889  </Code>
10890         </descriptive>
10891         <Type type="octet"/>
10892       </Attribute>
10893       <Attribute readonly="readonly" name="minor" id="::Bluetooth::BluetoothClass::minor">
10894         <webidl>        readonly attribute octet minor;</webidl>
10895         <descriptive>
10896             <brief>
10897  The minor device class and it refer to the <em>BluetoothClassDeviceMinor</em> interface for the list of possible values.
10898             </brief>
10899             <version>
10900  1.0
10901             </version>
10902         </descriptive>
10903         <Type type="octet"/>
10904       </Attribute>
10905       <Attribute readonly="readonly" name="services" id="::Bluetooth::BluetoothClass::services">
10906         <webidl>        readonly attribute unsigned short [] services ;</webidl>
10907         <descriptive>
10908             <brief>
10909  The services provided by this device and it refers to the <em>BluetoothClassDeviceService</em> interface for the list of possible
10910 values.
10911             </brief>
10912             <version>
10913  1.0
10914             </version>
10915         </descriptive>
10916         <Type type="array">
10917           <Type type="unsigned short"/>
10918         </Type>
10919       </Attribute>
10920       <Operation name="hasService" id="::Bluetooth::BluetoothClass::hasService">
10921         <webidl>        boolean hasService(unsigned short service) raises(<ref>WebAPIException</ref>);</webidl>
10922         <descriptive>
10923             <brief>
10924  Checks whether the given service exists in the <em>services</em>.
10925             </brief>
10926             <version>
10927  1.0
10928             </version>
10929             <privilegelevel>
10930  public
10931             </privilegelevel>
10932             <privilege>
10933  http://tizen.org/privilege/bluetooth.gap
10934             </privilege>
10935             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
10936  adapter.getDevice(&quot;12:34:56:78:9A:BC&quot;, function(device) {
10937     if (device.deviceClass.hasService(tizen.bluetooth.deviceService.POSITIONING)) {
10938          console.log(&quot;Device supports Positioning service&quot;);
10939     }
10940  }, function(e) {
10941     console.log(&quot;Couldn't get device for given address: &quot; + e.message);
10942  });
10943  </Code>
10944         </descriptive>
10945         <Type type="boolean"/>
10946         <ArgumentList>
10947           <Argument name="service">
10948             <descriptive>
10949                 <description><p>
10950  The service to check.
10951                 </p></description>
10952             </descriptive>
10953             <Type type="unsigned short"/>
10954           </Argument>
10955         </ArgumentList>
10956         <Raises>
10957           <RaiseException name="WebAPIException">
10958             <descriptive>
10959                 <description><p>
10960  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
10961                 </p></description>
10962                 <description><p>
10963  with error type NotSupportedError, if this feature is not supported.
10964                 </p></description>
10965                 <description><p>
10966  with error type SecurityError, if the application does not have the privilege to call this method.
10967                 </p></description>
10968                 <description><p>
10969  with error type UnknownError, if any other error occurs. 
10970                 </p></description>
10971             </descriptive>
10972           </RaiseException>
10973         </Raises>
10974       </Operation>
10975     </Interface>
10976     <Interface name="BluetoothClassDeviceMajor" id="::Bluetooth::BluetoothClassDeviceMajor">
10977       <webidl>    [NoInterfaceObject] interface BluetoothClassDeviceMajor {
10978
10979         const octet MISC = 0x00;
10980         const octet COMPUTER = 0x01;
10981         const octet PHONE = 0x02;
10982         const octet NETWORK = 0x03;
10983         const octet AUDIO_VIDEO = 0x04;
10984         const octet PERIPHERAL = 0x05;
10985         const octet IMAGING = 0x06;
10986         const octet WEARABLE = 0x07;
10987         const octet TOY = 0x08;
10988         const octet HEALTH = 0x09;
10989         const octet UNCATEGORIZED = 0x1F;
10990     };</webidl>
10991       <descriptive>
10992           <brief>
10993  This interface holds the identifiers for major device classes of Bluetooth CoD.
10994           </brief>
10995           <version>
10996  1.0
10997           </version>
10998       </descriptive>
10999       <ExtendedAttributeList>
11000         <ExtendedAttribute name="NoInterfaceObject">
11001           <webidl>NoInterfaceObject</webidl>
11002         </ExtendedAttribute>
11003       </ExtendedAttributeList>
11004       <Const name="MISC" value="0x00" id="::Bluetooth::BluetoothClassDeviceMajor::MISC">
11005         <webidl>        const octet MISC = 0x00;</webidl>
11006         <Type type="octet"/>
11007       </Const>
11008       <Const name="COMPUTER" value="0x01" id="::Bluetooth::BluetoothClassDeviceMajor::COMPUTER">
11009         <webidl>        const octet COMPUTER = 0x01;</webidl>
11010         <Type type="octet"/>
11011       </Const>
11012       <Const name="PHONE" value="0x02" id="::Bluetooth::BluetoothClassDeviceMajor::PHONE">
11013         <webidl>        const octet PHONE = 0x02;</webidl>
11014         <Type type="octet"/>
11015       </Const>
11016       <Const name="NETWORK" value="0x03" id="::Bluetooth::BluetoothClassDeviceMajor::NETWORK">
11017         <webidl>        const octet NETWORK = 0x03;</webidl>
11018         <Type type="octet"/>
11019       </Const>
11020       <Const name="AUDIO_VIDEO" value="0x04" id="::Bluetooth::BluetoothClassDeviceMajor::AUDIO_VIDEO">
11021         <webidl>        const octet AUDIO_VIDEO = 0x04;</webidl>
11022         <Type type="octet"/>
11023       </Const>
11024       <Const name="PERIPHERAL" value="0x05" id="::Bluetooth::BluetoothClassDeviceMajor::PERIPHERAL">
11025         <webidl>        const octet PERIPHERAL = 0x05;</webidl>
11026         <Type type="octet"/>
11027       </Const>
11028       <Const name="IMAGING" value="0x06" id="::Bluetooth::BluetoothClassDeviceMajor::IMAGING">
11029         <webidl>        const octet IMAGING = 0x06;</webidl>
11030         <Type type="octet"/>
11031       </Const>
11032       <Const name="WEARABLE" value="0x07" id="::Bluetooth::BluetoothClassDeviceMajor::WEARABLE">
11033         <webidl>        const octet WEARABLE = 0x07;</webidl>
11034         <Type type="octet"/>
11035       </Const>
11036       <Const name="TOY" value="0x08" id="::Bluetooth::BluetoothClassDeviceMajor::TOY">
11037         <webidl>        const octet TOY = 0x08;</webidl>
11038         <Type type="octet"/>
11039       </Const>
11040       <Const name="HEALTH" value="0x09" id="::Bluetooth::BluetoothClassDeviceMajor::HEALTH">
11041         <webidl>        const octet HEALTH = 0x09;</webidl>
11042         <Type type="octet"/>
11043       </Const>
11044       <Const name="UNCATEGORIZED" value="0x1F" id="::Bluetooth::BluetoothClassDeviceMajor::UNCATEGORIZED">
11045         <webidl>        const octet UNCATEGORIZED = 0x1F;</webidl>
11046         <Type type="octet"/>
11047       </Const>
11048     </Interface>
11049     <Interface name="BluetoothClassDeviceMinor" id="::Bluetooth::BluetoothClassDeviceMinor">
11050       <webidl>    [NoInterfaceObject] interface BluetoothClassDeviceMinor {
11051         const octet COMPUTER_UNCATEGORIZED = 0x00;
11052         const octet COMPUTER_DESKTOP = 0x01;
11053         const octet COMPUTER_SERVER = 0x02;
11054         const octet COMPUTER_LAPTOP = 0x03;
11055         const octet COMPUTER_HANDHELD_PC_OR_PDA = 0x04;
11056         const octet COMPUTER_PALM_PC_OR_PDA = 0x05;
11057         const octet COMPUTER_WEARABLE = 0x06;
11058
11059         const octet PHONE_UNCATEGORIZED = 0x00;
11060         const octet PHONE_CELLULAR = 0x01;
11061         const octet PHONE_CORDLESS = 0x02;
11062         const octet PHONE_SMARTPHONE = 0x03;
11063         const octet PHONE_MODEM_OR_GATEWAY = 0x04;
11064         const octet PHONE_ISDN = 0x05;
11065
11066         const octet AV_UNRECOGNIZED = 0x00;
11067         const octet AV_WEARABLE_HEADSET = 0x01;
11068         const octet AV_HANDSFREE = 0x02;
11069         const octet AV_MICROPHONE = 0x04;
11070         const octet AV_LOUDSPEAKER = 0x05;
11071         const octet AV_HEADPHONES = 0x06;
11072         const octet AV_PORTABLE_AUDIO = 0x07;
11073         const octet AV_CAR_AUDIO = 0x08;
11074         const octet AV_SETTOP_BOX = 0x09;
11075         const octet AV_HIFI = 0x0a;
11076         const octet AV_VCR = 0x0b;
11077         const octet AV_VIDEO_CAMERA = 0x0c;
11078         const octet AV_CAMCORDER = 0x0d;
11079         const octet AV_MONITOR = 0x0e;
11080         const octet AV_DISPLAY_AND_LOUDSPEAKER = 0x0f;
11081         const octet AV_VIDEO_CONFERENCING = 0x10;
11082         const octet AV_GAMING_TOY = 0x12;
11083
11084         const octet PERIPHERAL_UNCATEGORIZED = 0;
11085         const octet PERIPHERAL_KEYBOARD = 0x10;
11086         const octet PERIPHERAL_POINTING_DEVICE = 0x20;
11087         const octet PERIPHERAL_KEYBOARD_AND_POINTING_DEVICE = 0x30;
11088         const octet PERIPHERAL_JOYSTICK = 0x01;
11089         const octet PERIPHERAL_GAMEPAD = 0x02;
11090         const octet PERIPHERAL_REMOTE_CONTROL = 0x03;
11091         const octet PERIPHERAL_SENSING_DEVICE = 0x04;
11092         const octet PERIPHERAL_DEGITIZER_TABLET = 0x05;
11093         const octet PERIPHERAL_CARD_READER = 0x06;
11094         const octet PERIPHERAL_DIGITAL_PEN = 0x07;
11095         const octet PERIPHERAL_HANDHELD_SCANNER = 0x08;
11096         const octet PERIPHERAL_HANDHELD_INPUT_DEVICE = 0x09;
11097
11098         const octet IMAGING_UNCATEGORIZED = 0x00;
11099         const octet IMAGING_DISPLAY = 0x04;
11100         const octet IMAGING_CAMERA = 0x08;
11101         const octet IMAGING_SCANNER = 0x10;
11102         const octet IMAGING_PRINTER = 0x20;
11103
11104         const octet WEARABLE_WRITST_WATCH = 0x01;
11105         const octet WEARABLE_PAGER = 0x02;
11106         const octet WEARABLE_JACKET = 0x03;
11107         const octet WEARABLE_HELMET = 0x04;
11108         const octet WEARABLE_GLASSES = 0x05;
11109
11110         const octet TOY_ROBOT = 0x01;
11111         const octet TOY_VEHICLE = 0x02;
11112         const octet TOY_DOLL = 0x03;
11113         const octet TOY_CONTROLLER = 0x04;
11114         const octet TOY_GAME = 0x05;
11115
11116         const octet HEALTH_UNDEFINED = 0x00;
11117         const octet HEALTH_BLOOD_PRESSURE_MONITOR = 0x01;
11118         const octet HEALTH_THERMOMETER = 0x02;
11119         const octet HEALTH_WEIGHING_SCALE = 0x03;
11120         const octet HEALTH_GLUCOSE_METER = 0x04;
11121         const octet HEALTH_PULSE_OXIMETER = 0x05;
11122         const octet HEALTH_PULSE_RATE_MONITOR = 0x06;
11123         const octet HEALTH_DATA_DISPLAY = 0x07;
11124         const octet HEALTH_STEP_COUNTER = 0x08;
11125         const octet HEALTH_BODY_COMPOSITION_ANALYZER = 0x09;
11126         const octet HEALTH_PEAK_FLOW_MONITOR = 0x0a;
11127         const octet HEALTH_MEDICATION_MONITOR = 0x0b;
11128         const octet HEALTH_KNEE_PROSTHESIS = 0x0c;
11129         const octet HEALTH_ANKLE_PROSTHESIS = 0x0d;
11130     };</webidl>
11131       <descriptive>
11132           <brief>
11133  This interface holds the identifiers for minor device classes of Bluetooth CoD.
11134           </brief>
11135           <version>
11136  1.0
11137           </version>
11138       </descriptive>
11139       <ExtendedAttributeList>
11140         <ExtendedAttribute name="NoInterfaceObject">
11141           <webidl>NoInterfaceObject</webidl>
11142         </ExtendedAttribute>
11143       </ExtendedAttributeList>
11144       <Const name="COMPUTER_UNCATEGORIZED" value="0x00" id="::Bluetooth::BluetoothClassDeviceMinor::COMPUTER_UNCATEGORIZED">
11145         <webidl>        const octet COMPUTER_UNCATEGORIZED = 0x00;</webidl>
11146         <Type type="octet"/>
11147       </Const>
11148       <Const name="COMPUTER_DESKTOP" value="0x01" id="::Bluetooth::BluetoothClassDeviceMinor::COMPUTER_DESKTOP">
11149         <webidl>        const octet COMPUTER_DESKTOP = 0x01;</webidl>
11150         <Type type="octet"/>
11151       </Const>
11152       <Const name="COMPUTER_SERVER" value="0x02" id="::Bluetooth::BluetoothClassDeviceMinor::COMPUTER_SERVER">
11153         <webidl>        const octet COMPUTER_SERVER = 0x02;</webidl>
11154         <Type type="octet"/>
11155       </Const>
11156       <Const name="COMPUTER_LAPTOP" value="0x03" id="::Bluetooth::BluetoothClassDeviceMinor::COMPUTER_LAPTOP">
11157         <webidl>        const octet COMPUTER_LAPTOP = 0x03;</webidl>
11158         <Type type="octet"/>
11159       </Const>
11160       <Const name="COMPUTER_HANDHELD_PC_OR_PDA" value="0x04" id="::Bluetooth::BluetoothClassDeviceMinor::COMPUTER_HANDHELD_PC_OR_PDA">
11161         <webidl>        const octet COMPUTER_HANDHELD_PC_OR_PDA = 0x04;</webidl>
11162         <Type type="octet"/>
11163       </Const>
11164       <Const name="COMPUTER_PALM_PC_OR_PDA" value="0x05" id="::Bluetooth::BluetoothClassDeviceMinor::COMPUTER_PALM_PC_OR_PDA">
11165         <webidl>        const octet COMPUTER_PALM_PC_OR_PDA = 0x05;</webidl>
11166         <Type type="octet"/>
11167       </Const>
11168       <Const name="COMPUTER_WEARABLE" value="0x06" id="::Bluetooth::BluetoothClassDeviceMinor::COMPUTER_WEARABLE">
11169         <webidl>        const octet COMPUTER_WEARABLE = 0x06;</webidl>
11170         <Type type="octet"/>
11171       </Const>
11172       <Const name="PHONE_UNCATEGORIZED" value="0x00" id="::Bluetooth::BluetoothClassDeviceMinor::PHONE_UNCATEGORIZED">
11173         <webidl>        const octet PHONE_UNCATEGORIZED = 0x00;</webidl>
11174         <Type type="octet"/>
11175       </Const>
11176       <Const name="PHONE_CELLULAR" value="0x01" id="::Bluetooth::BluetoothClassDeviceMinor::PHONE_CELLULAR">
11177         <webidl>        const octet PHONE_CELLULAR = 0x01;</webidl>
11178         <Type type="octet"/>
11179       </Const>
11180       <Const name="PHONE_CORDLESS" value="0x02" id="::Bluetooth::BluetoothClassDeviceMinor::PHONE_CORDLESS">
11181         <webidl>        const octet PHONE_CORDLESS = 0x02;</webidl>
11182         <Type type="octet"/>
11183       </Const>
11184       <Const name="PHONE_SMARTPHONE" value="0x03" id="::Bluetooth::BluetoothClassDeviceMinor::PHONE_SMARTPHONE">
11185         <webidl>        const octet PHONE_SMARTPHONE = 0x03;</webidl>
11186         <Type type="octet"/>
11187       </Const>
11188       <Const name="PHONE_MODEM_OR_GATEWAY" value="0x04" id="::Bluetooth::BluetoothClassDeviceMinor::PHONE_MODEM_OR_GATEWAY">
11189         <webidl>        const octet PHONE_MODEM_OR_GATEWAY = 0x04;</webidl>
11190         <Type type="octet"/>
11191       </Const>
11192       <Const name="PHONE_ISDN" value="0x05" id="::Bluetooth::BluetoothClassDeviceMinor::PHONE_ISDN">
11193         <webidl>        const octet PHONE_ISDN = 0x05;</webidl>
11194         <Type type="octet"/>
11195       </Const>
11196       <Const name="AV_UNRECOGNIZED" value="0x00" id="::Bluetooth::BluetoothClassDeviceMinor::AV_UNRECOGNIZED">
11197         <webidl>        const octet AV_UNRECOGNIZED = 0x00;</webidl>
11198         <Type type="octet"/>
11199       </Const>
11200       <Const name="AV_WEARABLE_HEADSET" value="0x01" id="::Bluetooth::BluetoothClassDeviceMinor::AV_WEARABLE_HEADSET">
11201         <webidl>        const octet AV_WEARABLE_HEADSET = 0x01;</webidl>
11202         <Type type="octet"/>
11203       </Const>
11204       <Const name="AV_HANDSFREE" value="0x02" id="::Bluetooth::BluetoothClassDeviceMinor::AV_HANDSFREE">
11205         <webidl>        const octet AV_HANDSFREE = 0x02;</webidl>
11206         <Type type="octet"/>
11207       </Const>
11208       <Const name="AV_MICROPHONE" value="0x04" id="::Bluetooth::BluetoothClassDeviceMinor::AV_MICROPHONE">
11209         <webidl>        const octet AV_MICROPHONE = 0x04;</webidl>
11210         <Type type="octet"/>
11211       </Const>
11212       <Const name="AV_LOUDSPEAKER" value="0x05" id="::Bluetooth::BluetoothClassDeviceMinor::AV_LOUDSPEAKER">
11213         <webidl>        const octet AV_LOUDSPEAKER = 0x05;</webidl>
11214         <Type type="octet"/>
11215       </Const>
11216       <Const name="AV_HEADPHONES" value="0x06" id="::Bluetooth::BluetoothClassDeviceMinor::AV_HEADPHONES">
11217         <webidl>        const octet AV_HEADPHONES = 0x06;</webidl>
11218         <Type type="octet"/>
11219       </Const>
11220       <Const name="AV_PORTABLE_AUDIO" value="0x07" id="::Bluetooth::BluetoothClassDeviceMinor::AV_PORTABLE_AUDIO">
11221         <webidl>        const octet AV_PORTABLE_AUDIO = 0x07;</webidl>
11222         <Type type="octet"/>
11223       </Const>
11224       <Const name="AV_CAR_AUDIO" value="0x08" id="::Bluetooth::BluetoothClassDeviceMinor::AV_CAR_AUDIO">
11225         <webidl>        const octet AV_CAR_AUDIO = 0x08;</webidl>
11226         <Type type="octet"/>
11227       </Const>
11228       <Const name="AV_SETTOP_BOX" value="0x09" id="::Bluetooth::BluetoothClassDeviceMinor::AV_SETTOP_BOX">
11229         <webidl>        const octet AV_SETTOP_BOX = 0x09;</webidl>
11230         <Type type="octet"/>
11231       </Const>
11232       <Const name="AV_HIFI" value="0x0a" id="::Bluetooth::BluetoothClassDeviceMinor::AV_HIFI">
11233         <webidl>        const octet AV_HIFI = 0x0a;</webidl>
11234         <Type type="octet"/>
11235       </Const>
11236       <Const name="AV_VCR" value="0x0b" id="::Bluetooth::BluetoothClassDeviceMinor::AV_VCR">
11237         <webidl>        const octet AV_VCR = 0x0b;</webidl>
11238         <Type type="octet"/>
11239       </Const>
11240       <Const name="AV_VIDEO_CAMERA" value="0x0c" id="::Bluetooth::BluetoothClassDeviceMinor::AV_VIDEO_CAMERA">
11241         <webidl>        const octet AV_VIDEO_CAMERA = 0x0c;</webidl>
11242         <Type type="octet"/>
11243       </Const>
11244       <Const name="AV_CAMCORDER" value="0x0d" id="::Bluetooth::BluetoothClassDeviceMinor::AV_CAMCORDER">
11245         <webidl>        const octet AV_CAMCORDER = 0x0d;</webidl>
11246         <Type type="octet"/>
11247       </Const>
11248       <Const name="AV_MONITOR" value="0x0e" id="::Bluetooth::BluetoothClassDeviceMinor::AV_MONITOR">
11249         <webidl>        const octet AV_MONITOR = 0x0e;</webidl>
11250         <Type type="octet"/>
11251       </Const>
11252       <Const name="AV_DISPLAY_AND_LOUDSPEAKER" value="0x0f" id="::Bluetooth::BluetoothClassDeviceMinor::AV_DISPLAY_AND_LOUDSPEAKER">
11253         <webidl>        const octet AV_DISPLAY_AND_LOUDSPEAKER = 0x0f;</webidl>
11254         <Type type="octet"/>
11255       </Const>
11256       <Const name="AV_VIDEO_CONFERENCING" value="0x10" id="::Bluetooth::BluetoothClassDeviceMinor::AV_VIDEO_CONFERENCING">
11257         <webidl>        const octet AV_VIDEO_CONFERENCING = 0x10;</webidl>
11258         <Type type="octet"/>
11259       </Const>
11260       <Const name="AV_GAMING_TOY" value="0x12" id="::Bluetooth::BluetoothClassDeviceMinor::AV_GAMING_TOY">
11261         <webidl>        const octet AV_GAMING_TOY = 0x12;</webidl>
11262         <Type type="octet"/>
11263       </Const>
11264       <Const name="PERIPHERAL_UNCATEGORIZED" value="0" id="::Bluetooth::BluetoothClassDeviceMinor::PERIPHERAL_UNCATEGORIZED">
11265         <webidl>        const octet PERIPHERAL_UNCATEGORIZED = 0;</webidl>
11266         <Type type="octet"/>
11267       </Const>
11268       <Const name="PERIPHERAL_KEYBOARD" value="0x10" id="::Bluetooth::BluetoothClassDeviceMinor::PERIPHERAL_KEYBOARD">
11269         <webidl>        const octet PERIPHERAL_KEYBOARD = 0x10;</webidl>
11270         <Type type="octet"/>
11271       </Const>
11272       <Const name="PERIPHERAL_POINTING_DEVICE" value="0x20" id="::Bluetooth::BluetoothClassDeviceMinor::PERIPHERAL_POINTING_DEVICE">
11273         <webidl>        const octet PERIPHERAL_POINTING_DEVICE = 0x20;</webidl>
11274         <Type type="octet"/>
11275       </Const>
11276       <Const name="PERIPHERAL_KEYBOARD_AND_POINTING_DEVICE" value="0x30" id="::Bluetooth::BluetoothClassDeviceMinor::PERIPHERAL_KEYBOARD_AND_POINTING_DEVICE">
11277         <webidl>        const octet PERIPHERAL_KEYBOARD_AND_POINTING_DEVICE = 0x30;</webidl>
11278         <Type type="octet"/>
11279       </Const>
11280       <Const name="PERIPHERAL_JOYSTICK" value="0x01" id="::Bluetooth::BluetoothClassDeviceMinor::PERIPHERAL_JOYSTICK">
11281         <webidl>        const octet PERIPHERAL_JOYSTICK = 0x01;</webidl>
11282         <Type type="octet"/>
11283       </Const>
11284       <Const name="PERIPHERAL_GAMEPAD" value="0x02" id="::Bluetooth::BluetoothClassDeviceMinor::PERIPHERAL_GAMEPAD">
11285         <webidl>        const octet PERIPHERAL_GAMEPAD = 0x02;</webidl>
11286         <Type type="octet"/>
11287       </Const>
11288       <Const name="PERIPHERAL_REMOTE_CONTROL" value="0x03" id="::Bluetooth::BluetoothClassDeviceMinor::PERIPHERAL_REMOTE_CONTROL">
11289         <webidl>        const octet PERIPHERAL_REMOTE_CONTROL = 0x03;</webidl>
11290         <Type type="octet"/>
11291       </Const>
11292       <Const name="PERIPHERAL_SENSING_DEVICE" value="0x04" id="::Bluetooth::BluetoothClassDeviceMinor::PERIPHERAL_SENSING_DEVICE">
11293         <webidl>        const octet PERIPHERAL_SENSING_DEVICE = 0x04;</webidl>
11294         <Type type="octet"/>
11295       </Const>
11296       <Const name="PERIPHERAL_DEGITIZER_TABLET" value="0x05" id="::Bluetooth::BluetoothClassDeviceMinor::PERIPHERAL_DEGITIZER_TABLET">
11297         <webidl>        const octet PERIPHERAL_DEGITIZER_TABLET = 0x05;</webidl>
11298         <Type type="octet"/>
11299       </Const>
11300       <Const name="PERIPHERAL_CARD_READER" value="0x06" id="::Bluetooth::BluetoothClassDeviceMinor::PERIPHERAL_CARD_READER">
11301         <webidl>        const octet PERIPHERAL_CARD_READER = 0x06;</webidl>
11302         <Type type="octet"/>
11303       </Const>
11304       <Const name="PERIPHERAL_DIGITAL_PEN" value="0x07" id="::Bluetooth::BluetoothClassDeviceMinor::PERIPHERAL_DIGITAL_PEN">
11305         <webidl>        const octet PERIPHERAL_DIGITAL_PEN = 0x07;</webidl>
11306         <Type type="octet"/>
11307       </Const>
11308       <Const name="PERIPHERAL_HANDHELD_SCANNER" value="0x08" id="::Bluetooth::BluetoothClassDeviceMinor::PERIPHERAL_HANDHELD_SCANNER">
11309         <webidl>        const octet PERIPHERAL_HANDHELD_SCANNER = 0x08;</webidl>
11310         <Type type="octet"/>
11311       </Const>
11312       <Const name="PERIPHERAL_HANDHELD_INPUT_DEVICE" value="0x09" id="::Bluetooth::BluetoothClassDeviceMinor::PERIPHERAL_HANDHELD_INPUT_DEVICE">
11313         <webidl>        const octet PERIPHERAL_HANDHELD_INPUT_DEVICE = 0x09;</webidl>
11314         <Type type="octet"/>
11315       </Const>
11316       <Const name="IMAGING_UNCATEGORIZED" value="0x00" id="::Bluetooth::BluetoothClassDeviceMinor::IMAGING_UNCATEGORIZED">
11317         <webidl>        const octet IMAGING_UNCATEGORIZED = 0x00;</webidl>
11318         <Type type="octet"/>
11319       </Const>
11320       <Const name="IMAGING_DISPLAY" value="0x04" id="::Bluetooth::BluetoothClassDeviceMinor::IMAGING_DISPLAY">
11321         <webidl>        const octet IMAGING_DISPLAY = 0x04;</webidl>
11322         <Type type="octet"/>
11323       </Const>
11324       <Const name="IMAGING_CAMERA" value="0x08" id="::Bluetooth::BluetoothClassDeviceMinor::IMAGING_CAMERA">
11325         <webidl>        const octet IMAGING_CAMERA = 0x08;</webidl>
11326         <Type type="octet"/>
11327       </Const>
11328       <Const name="IMAGING_SCANNER" value="0x10" id="::Bluetooth::BluetoothClassDeviceMinor::IMAGING_SCANNER">
11329         <webidl>        const octet IMAGING_SCANNER = 0x10;</webidl>
11330         <Type type="octet"/>
11331       </Const>
11332       <Const name="IMAGING_PRINTER" value="0x20" id="::Bluetooth::BluetoothClassDeviceMinor::IMAGING_PRINTER">
11333         <webidl>        const octet IMAGING_PRINTER = 0x20;</webidl>
11334         <Type type="octet"/>
11335       </Const>
11336       <Const name="WEARABLE_WRITST_WATCH" value="0x01" id="::Bluetooth::BluetoothClassDeviceMinor::WEARABLE_WRITST_WATCH">
11337         <webidl>        const octet WEARABLE_WRITST_WATCH = 0x01;</webidl>
11338         <Type type="octet"/>
11339       </Const>
11340       <Const name="WEARABLE_PAGER" value="0x02" id="::Bluetooth::BluetoothClassDeviceMinor::WEARABLE_PAGER">
11341         <webidl>        const octet WEARABLE_PAGER = 0x02;</webidl>
11342         <Type type="octet"/>
11343       </Const>
11344       <Const name="WEARABLE_JACKET" value="0x03" id="::Bluetooth::BluetoothClassDeviceMinor::WEARABLE_JACKET">
11345         <webidl>        const octet WEARABLE_JACKET = 0x03;</webidl>
11346         <Type type="octet"/>
11347       </Const>
11348       <Const name="WEARABLE_HELMET" value="0x04" id="::Bluetooth::BluetoothClassDeviceMinor::WEARABLE_HELMET">
11349         <webidl>        const octet WEARABLE_HELMET = 0x04;</webidl>
11350         <Type type="octet"/>
11351       </Const>
11352       <Const name="WEARABLE_GLASSES" value="0x05" id="::Bluetooth::BluetoothClassDeviceMinor::WEARABLE_GLASSES">
11353         <webidl>        const octet WEARABLE_GLASSES = 0x05;</webidl>
11354         <Type type="octet"/>
11355       </Const>
11356       <Const name="TOY_ROBOT" value="0x01" id="::Bluetooth::BluetoothClassDeviceMinor::TOY_ROBOT">
11357         <webidl>        const octet TOY_ROBOT = 0x01;</webidl>
11358         <Type type="octet"/>
11359       </Const>
11360       <Const name="TOY_VEHICLE" value="0x02" id="::Bluetooth::BluetoothClassDeviceMinor::TOY_VEHICLE">
11361         <webidl>        const octet TOY_VEHICLE = 0x02;</webidl>
11362         <Type type="octet"/>
11363       </Const>
11364       <Const name="TOY_DOLL" value="0x03" id="::Bluetooth::BluetoothClassDeviceMinor::TOY_DOLL">
11365         <webidl>        const octet TOY_DOLL = 0x03;</webidl>
11366         <Type type="octet"/>
11367       </Const>
11368       <Const name="TOY_CONTROLLER" value="0x04" id="::Bluetooth::BluetoothClassDeviceMinor::TOY_CONTROLLER">
11369         <webidl>        const octet TOY_CONTROLLER = 0x04;</webidl>
11370         <Type type="octet"/>
11371       </Const>
11372       <Const name="TOY_GAME" value="0x05" id="::Bluetooth::BluetoothClassDeviceMinor::TOY_GAME">
11373         <webidl>        const octet TOY_GAME = 0x05;</webidl>
11374         <Type type="octet"/>
11375       </Const>
11376       <Const name="HEALTH_UNDEFINED" value="0x00" id="::Bluetooth::BluetoothClassDeviceMinor::HEALTH_UNDEFINED">
11377         <webidl>        const octet HEALTH_UNDEFINED = 0x00;</webidl>
11378         <Type type="octet"/>
11379       </Const>
11380       <Const name="HEALTH_BLOOD_PRESSURE_MONITOR" value="0x01" id="::Bluetooth::BluetoothClassDeviceMinor::HEALTH_BLOOD_PRESSURE_MONITOR">
11381         <webidl>        const octet HEALTH_BLOOD_PRESSURE_MONITOR = 0x01;</webidl>
11382         <Type type="octet"/>
11383       </Const>
11384       <Const name="HEALTH_THERMOMETER" value="0x02" id="::Bluetooth::BluetoothClassDeviceMinor::HEALTH_THERMOMETER">
11385         <webidl>        const octet HEALTH_THERMOMETER = 0x02;</webidl>
11386         <Type type="octet"/>
11387       </Const>
11388       <Const name="HEALTH_WEIGHING_SCALE" value="0x03" id="::Bluetooth::BluetoothClassDeviceMinor::HEALTH_WEIGHING_SCALE">
11389         <webidl>        const octet HEALTH_WEIGHING_SCALE = 0x03;</webidl>
11390         <Type type="octet"/>
11391       </Const>
11392       <Const name="HEALTH_GLUCOSE_METER" value="0x04" id="::Bluetooth::BluetoothClassDeviceMinor::HEALTH_GLUCOSE_METER">
11393         <webidl>        const octet HEALTH_GLUCOSE_METER = 0x04;</webidl>
11394         <Type type="octet"/>
11395       </Const>
11396       <Const name="HEALTH_PULSE_OXIMETER" value="0x05" id="::Bluetooth::BluetoothClassDeviceMinor::HEALTH_PULSE_OXIMETER">
11397         <webidl>        const octet HEALTH_PULSE_OXIMETER = 0x05;</webidl>
11398         <Type type="octet"/>
11399       </Const>
11400       <Const name="HEALTH_PULSE_RATE_MONITOR" value="0x06" id="::Bluetooth::BluetoothClassDeviceMinor::HEALTH_PULSE_RATE_MONITOR">
11401         <webidl>        const octet HEALTH_PULSE_RATE_MONITOR = 0x06;</webidl>
11402         <Type type="octet"/>
11403       </Const>
11404       <Const name="HEALTH_DATA_DISPLAY" value="0x07" id="::Bluetooth::BluetoothClassDeviceMinor::HEALTH_DATA_DISPLAY">
11405         <webidl>        const octet HEALTH_DATA_DISPLAY = 0x07;</webidl>
11406         <Type type="octet"/>
11407       </Const>
11408       <Const name="HEALTH_STEP_COUNTER" value="0x08" id="::Bluetooth::BluetoothClassDeviceMinor::HEALTH_STEP_COUNTER">
11409         <webidl>        const octet HEALTH_STEP_COUNTER = 0x08;</webidl>
11410         <Type type="octet"/>
11411       </Const>
11412       <Const name="HEALTH_BODY_COMPOSITION_ANALYZER" value="0x09" id="::Bluetooth::BluetoothClassDeviceMinor::HEALTH_BODY_COMPOSITION_ANALYZER">
11413         <webidl>        const octet HEALTH_BODY_COMPOSITION_ANALYZER = 0x09;</webidl>
11414         <Type type="octet"/>
11415       </Const>
11416       <Const name="HEALTH_PEAK_FLOW_MONITOR" value="0x0a" id="::Bluetooth::BluetoothClassDeviceMinor::HEALTH_PEAK_FLOW_MONITOR">
11417         <webidl>        const octet HEALTH_PEAK_FLOW_MONITOR = 0x0a;</webidl>
11418         <Type type="octet"/>
11419       </Const>
11420       <Const name="HEALTH_MEDICATION_MONITOR" value="0x0b" id="::Bluetooth::BluetoothClassDeviceMinor::HEALTH_MEDICATION_MONITOR">
11421         <webidl>        const octet HEALTH_MEDICATION_MONITOR = 0x0b;</webidl>
11422         <Type type="octet"/>
11423       </Const>
11424       <Const name="HEALTH_KNEE_PROSTHESIS" value="0x0c" id="::Bluetooth::BluetoothClassDeviceMinor::HEALTH_KNEE_PROSTHESIS">
11425         <webidl>        const octet HEALTH_KNEE_PROSTHESIS = 0x0c;</webidl>
11426         <Type type="octet"/>
11427       </Const>
11428       <Const name="HEALTH_ANKLE_PROSTHESIS" value="0x0d" id="::Bluetooth::BluetoothClassDeviceMinor::HEALTH_ANKLE_PROSTHESIS">
11429         <webidl>        const octet HEALTH_ANKLE_PROSTHESIS = 0x0d;</webidl>
11430         <Type type="octet"/>
11431       </Const>
11432     </Interface>
11433     <Interface name="BluetoothClassDeviceService" id="::Bluetooth::BluetoothClassDeviceService">
11434       <webidl>    [NoInterfaceObject] interface BluetoothClassDeviceService {
11435         const unsigned short LIMITED_DISCOVERABILITY = 0x0001;
11436         const unsigned short POSITIONING = 0x0008; 
11437         const unsigned short NETWORKING = 0x0010; 
11438         const unsigned short RENDERING = 0x0020; 
11439         const unsigned short CAPTURING = 0x0040;
11440         const unsigned short OBJECT_TRANSFER = 0x0080; 
11441         const unsigned short AUDIO = 0x0100;
11442         const unsigned short TELEPHONY = 0x0200;
11443         const unsigned short INFORMATION = 0x0400;
11444     };</webidl>
11445       <descriptive>
11446           <brief>
11447  This interface holds identifiers for the major service classes of Bluetooth CoD.
11448           </brief>
11449           <version>
11450  1.0
11451           </version>
11452       </descriptive>
11453       <ExtendedAttributeList>
11454         <ExtendedAttribute name="NoInterfaceObject">
11455           <webidl>NoInterfaceObject</webidl>
11456         </ExtendedAttribute>
11457       </ExtendedAttributeList>
11458       <Const name="LIMITED_DISCOVERABILITY" value="0x0001" id="::Bluetooth::BluetoothClassDeviceService::LIMITED_DISCOVERABILITY">
11459         <webidl>        const unsigned short LIMITED_DISCOVERABILITY = 0x0001;</webidl>
11460         <Type type="unsigned short"/>
11461       </Const>
11462       <Const name="POSITIONING" value="0x0008" id="::Bluetooth::BluetoothClassDeviceService::POSITIONING">
11463         <webidl>        const unsigned short POSITIONING = 0x0008;</webidl>
11464         <Type type="unsigned short"/>
11465       </Const>
11466       <Const name="NETWORKING" value="0x0010" id="::Bluetooth::BluetoothClassDeviceService::NETWORKING">
11467         <webidl>        const unsigned short NETWORKING = 0x0010;</webidl>
11468         <Type type="unsigned short"/>
11469       </Const>
11470       <Const name="RENDERING" value="0x0020" id="::Bluetooth::BluetoothClassDeviceService::RENDERING">
11471         <webidl>        const unsigned short RENDERING = 0x0020;</webidl>
11472         <Type type="unsigned short"/>
11473       </Const>
11474       <Const name="CAPTURING" value="0x0040" id="::Bluetooth::BluetoothClassDeviceService::CAPTURING">
11475         <webidl>        const unsigned short CAPTURING = 0x0040;</webidl>
11476         <Type type="unsigned short"/>
11477       </Const>
11478       <Const name="OBJECT_TRANSFER" value="0x0080" id="::Bluetooth::BluetoothClassDeviceService::OBJECT_TRANSFER">
11479         <webidl>        const unsigned short OBJECT_TRANSFER = 0x0080;</webidl>
11480         <Type type="unsigned short"/>
11481       </Const>
11482       <Const name="AUDIO" value="0x0100" id="::Bluetooth::BluetoothClassDeviceService::AUDIO">
11483         <webidl>        const unsigned short AUDIO = 0x0100;</webidl>
11484         <Type type="unsigned short"/>
11485       </Const>
11486       <Const name="TELEPHONY" value="0x0200" id="::Bluetooth::BluetoothClassDeviceService::TELEPHONY">
11487         <webidl>        const unsigned short TELEPHONY = 0x0200;</webidl>
11488         <Type type="unsigned short"/>
11489       </Const>
11490       <Const name="INFORMATION" value="0x0400" id="::Bluetooth::BluetoothClassDeviceService::INFORMATION">
11491         <webidl>        const unsigned short INFORMATION = 0x0400;</webidl>
11492         <Type type="unsigned short"/>
11493       </Const>
11494     </Interface>
11495     <Interface name="BluetoothServiceHandler" id="::Bluetooth::BluetoothServiceHandler">
11496       <webidl>    [NoInterfaceObject] interface BluetoothServiceHandler {
11497         readonly attribute <ref>BluetoothUUID</ref> uuid;
11498         readonly attribute DOMString name;
11499         readonly attribute boolean isConnected;
11500         [TreatNonCallableAsNull] attribute <ref>BluetoothSocketSuccessCallback</ref>? onconnect raises(<ref>WebAPIException</ref>);
11501
11502         void unregister(optional <ref>SuccessCallback</ref>? successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
11503     };</webidl>
11504       <descriptive>
11505           <brief>
11506  This interface provides methods to handle Bluetooth service.
11507           </brief>
11508           <version>
11509  1.0
11510           </version>
11511       </descriptive>
11512       <ExtendedAttributeList>
11513         <ExtendedAttribute name="NoInterfaceObject">
11514           <webidl>NoInterfaceObject</webidl>
11515         </ExtendedAttribute>
11516       </ExtendedAttributeList>
11517       <Attribute readonly="readonly" name="uuid" id="::Bluetooth::BluetoothServiceHandler::uuid">
11518         <webidl>        readonly attribute <ref>BluetoothUUID</ref> uuid;</webidl>
11519         <descriptive>
11520             <brief>
11521  The UUID of the service.
11522             </brief>
11523             <version>
11524  1.0
11525             </version>
11526         </descriptive>
11527         <Type name="BluetoothUUID"/>
11528       </Attribute>
11529       <Attribute readonly="readonly" name="name" id="::Bluetooth::BluetoothServiceHandler::name">
11530         <webidl>        readonly attribute DOMString name;</webidl>
11531         <descriptive>
11532             <brief>
11533  The name of the service.
11534             </brief>
11535             <version>
11536  1.0
11537             </version>
11538         </descriptive>
11539         <Type type="DOMString"/>
11540       </Attribute>
11541       <Attribute readonly="readonly" name="isConnected" id="::Bluetooth::BluetoothServiceHandler::isConnected">
11542         <webidl>        readonly attribute boolean isConnected;</webidl>
11543         <descriptive>
11544             <brief>
11545  An attribute to check whether any remote devices is using this service or not.
11546             </brief>
11547             <version>
11548  1.0
11549             </version>
11550         </descriptive>
11551         <Type type="boolean"/>
11552       </Attribute>
11553       <Attribute name="onconnect" id="::Bluetooth::BluetoothServiceHandler::onconnect">
11554         <webidl>        [TreatNonCallableAsNull] attribute <ref>BluetoothSocketSuccessCallback</ref>? onconnect raises(<ref>WebAPIException</ref>);</webidl>
11555         <descriptive>
11556             <brief>
11557  The success callback to be invoked when a remote device is connected to this service.
11558 By default, this attribute is set to null.
11559             </brief>
11560             <version>
11561  1.0
11562             </version>
11563         </descriptive>
11564         <ExtendedAttributeList>
11565           <ExtendedAttribute name="TreatNonCallableAsNull">
11566             <webidl>TreatNonCallableAsNull</webidl>
11567           </ExtendedAttribute>
11568         </ExtendedAttributeList>
11569         <Type name="BluetoothSocketSuccessCallback" nullable="nullable"/>
11570         <Raises>
11571           <RaiseException name="WebAPIException">
11572             <descriptive>
11573                 <description><p>
11574  with error type TypeMismatchError, if any input attribute is not compatible with the expected type for this attribute.
11575                 </p></description>
11576             </descriptive>
11577           </RaiseException>
11578         </Raises>
11579       </Attribute>
11580       <Operation name="unregister" id="::Bluetooth::BluetoothServiceHandler::unregister">
11581         <webidl>        void unregister(optional <ref>SuccessCallback</ref>? successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
11582         <descriptive>
11583             <brief>
11584  Unregisters a service record from the Bluetooth services record database and stops listening for new connections to this service.
11585             </brief>
11586            <description>
11587             <p>
11588 The ErrorCallback is launched with these error types:
11589             </p>
11590             <ul>
11591               <li>
11592  UnknownError - If any other error occurs.              </li>
11593             </ul>
11594            </description>
11595             <version>
11596  1.0
11597             </version>
11598             <privilegelevel>
11599  public
11600             </privilegelevel>
11601             <privilege>
11602  http://tizen.org/privilege/bluetooth.spp
11603             </privilege>
11604             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
11605  var chatServiceHandler = null;
11606
11607  function chatServiceSuccessCb(handler) {
11608     console.log(&quot;Chat service registration was successful!&quot;);
11609
11610     chatServiceHandler = handler;
11611     handler.onconnect = function(socket) {
11612        console.log(&quot;Client is connected: &quot; + socket.peer.name + &quot;,&quot; + socket.peer.address);
11613        socket.onmessage = function() {
11614            var data = socket.readData();
11615            // Handle message code goes here
11616            //....
11617        };
11618
11619        // Expected close
11620        socket.onclose = function() {
11621            console.log('The socket is closed.');
11622        };
11623     };
11624  }
11625
11626  function publishChatService()
11627  {
11628     var CHAT_SERVICE_UUID = &quot;5BCE9431-6C75-32AB-AFE0-2EC108A30860&quot;;
11629     adapter.registerRFCOMMServiceByUUID(CHAT_SERVICE_UUID, &quot;Chat service&quot;, chatServiceSuccessCb,
11630       // Error handler
11631       function(e) {
11632            console.log( &quot;Could not register service record, Error: &quot; + e.message);
11633       });
11634  }
11635
11636  function unRegisterChatService()
11637  {
11638       if (chatServiceHandler != null) {
11639            chatServiceHandler.unregister(function() {
11640                chatServiceHandler = null;
11641                console.log(&quot;Chat service is unregistered.&quot;);
11642            },
11643            function(e) {
11644                console.log (&quot;Error: &quot; + e.message);
11645            });
11646       }
11647  }
11648  </Code>
11649         </descriptive>
11650         <Type type="void"/>
11651         <ArgumentList>
11652           <Argument optional="optional" name="successCallback">
11653             <descriptive>
11654                 <description><p>
11655  The method to be invoked when the record is removed successfully from the service records database.
11656                 </p></description>
11657             </descriptive>
11658             <Type name="SuccessCallback" nullable="nullable"/>
11659           </Argument>
11660           <Argument optional="optional" name="errorCallback">
11661             <descriptive>
11662                 <description><p>
11663  The method to be invoked in case of failure (to unregister).
11664                 </p></description>
11665             </descriptive>
11666             <Type name="ErrorCallback" nullable="nullable"/>
11667           </Argument>
11668         </ArgumentList>
11669         <Raises>
11670           <RaiseException name="WebAPIException">
11671             <descriptive>
11672                 <description><p>
11673  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
11674                 </p></description>
11675                 <description><p>
11676  with error type SecurityError, if the application does not have the privilege to call this method.
11677                 </p></description>
11678                 <description><p>
11679  with error type NotSupportedError, if this feature is not supported.
11680                 </p></description>
11681             </descriptive>
11682           </RaiseException>
11683         </Raises>
11684       </Operation>
11685     </Interface>
11686     <Interface name="BluetoothProfileHandler" id="::Bluetooth::BluetoothProfileHandler">
11687       <webidl>    [NoInterfaceObject] interface BluetoothProfileHandler {
11688         
11689         readonly attribute <ref>BluetoothProfileType</ref> profileType;
11690                 
11691     };</webidl>
11692       <descriptive>
11693           <brief>
11694  This interface represents the Bluetooth profile handler.
11695           </brief>
11696           <version>
11697  2.2
11698           </version>
11699       </descriptive>
11700       <ExtendedAttributeList>
11701         <ExtendedAttribute name="NoInterfaceObject">
11702           <webidl>NoInterfaceObject</webidl>
11703         </ExtendedAttribute>
11704       </ExtendedAttributeList>
11705       <Attribute readonly="readonly" name="profileType" id="::Bluetooth::BluetoothProfileHandler::profileType">
11706         <webidl>        readonly attribute <ref>BluetoothProfileType</ref> profileType;</webidl>
11707         <descriptive>
11708             <brief>
11709  The type of Bluetooth profile.
11710             </brief>
11711             <version>
11712  2.2
11713             </version>
11714         </descriptive>
11715         <Type name="BluetoothProfileType"/>
11716       </Attribute>
11717     </Interface>
11718     <Interface name="BluetoothHealthProfileHandler" id="::Bluetooth::BluetoothHealthProfileHandler">
11719       <webidl>    [NoInterfaceObject] interface BluetoothHealthProfileHandler : <ref>BluetoothProfileHandler</ref> {
11720         
11721         void registerSinkApplication(unsigned short dataType, DOMString name, <ref>BluetoothHealthApplicationSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
11722
11723         void connectToSource(<ref>BluetoothDevice</ref> peer, <ref>BluetoothHealthApplication</ref> application, <ref>BluetoothHealthChannelSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
11724
11725         };</webidl>
11726       <descriptive>
11727           <brief>
11728  This interface represents the handler of Bluetooth health device profile.
11729 The BluetoothHealthProfileHandler object is created by <em>BluetoothAdapter.getBluetoothProfileHandler()</em>.        
11730           </brief>
11731           <version>
11732  2.2
11733           </version>
11734       </descriptive>
11735       <ExtendedAttributeList>
11736         <ExtendedAttribute name="NoInterfaceObject">
11737           <webidl>NoInterfaceObject</webidl>
11738         </ExtendedAttribute>
11739       </ExtendedAttributeList>
11740       <InterfaceInheritance>
11741         <Name name="BluetoothProfileHandler"/>
11742       </InterfaceInheritance>
11743       <Operation name="registerSinkApplication" id="::Bluetooth::BluetoothHealthProfileHandler::registerSinkApplication">
11744         <webidl>        void registerSinkApplication(unsigned short dataType, DOMString name, <ref>BluetoothHealthApplicationSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
11745         <descriptive>
11746             <brief>
11747  Registers an application for the Sink role.
11748             </brief>
11749            <description>
11750             <p>
11751 The ErrorCallback is launched with these error types:
11752             </p>
11753             <ul>
11754               <li>
11755  ServiceNotAvailableError - If a Bluetooth device is turned off.              </li>
11756               <li>
11757  UnknownError - If any other error occurs.              </li>
11758             </ul>
11759            </description>
11760             <version>
11761  2.2
11762             </version>
11763             <privilegelevel>
11764  public
11765             </privilegelevel>
11766             <privilege>
11767  http://tizen.org/privilege/bluetooth.health
11768             </privilege>
11769             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
11770  var healthProfileHandler = adapter.getBluetoothProfileHandler(&quot;HEALTH&quot;);
11771
11772  function healthRegisterSuccess(app) {
11773      console.log(&quot;Registered application: &quot; + app.name);
11774  }
11775
11776  function healthRegisterError(e) {
11777      console.log(&quot;Failed to register application: &quot; + e.message);
11778  };
11779
11780  healthProfileHandler.registerSinkApplication(4100, &quot;testSinkApp&quot;, healthRegisterSuccess, healthRegisterError);
11781  </Code>
11782         </descriptive>
11783         <Type type="void"/>
11784         <ArgumentList>
11785           <Argument name="dataType">
11786             <descriptive>
11787                 <description><p>
11788  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. 
11789                 </p></description>
11790             </descriptive>
11791             <Type type="unsigned short"/>
11792           </Argument>
11793           <Argument name="name">
11794             <descriptive>
11795                 <description><p>
11796  The friendly name associated with sink application.
11797                 </p></description>
11798             </descriptive>
11799             <Type type="DOMString"/>
11800           </Argument>
11801           <Argument name="successCallback">
11802             <descriptive>
11803                 <description><p>
11804  The method to invoke when a sink application is registered successfully.
11805                 </p></description>
11806             </descriptive>
11807             <Type name="BluetoothHealthApplicationSuccessCallback"/>
11808           </Argument>
11809           <Argument optional="optional" name="errorCallback">
11810             <descriptive>
11811                 <description><p>
11812  The method to invoke when an error occurs.
11813                 </p></description>
11814             </descriptive>
11815             <Type name="ErrorCallback" nullable="nullable"/>
11816           </Argument>
11817         </ArgumentList>
11818         <Raises>
11819           <RaiseException name="WebAPIException">
11820             <descriptive>
11821                 <description><p>
11822  with error type SecurityError, if the application does not have the privilege to call this method.
11823                 </p></description>
11824                 <description><p>
11825  with error type TypeMismatchError, if any of the input parameter is not compatible with the expected type for that parameter.
11826                 </p></description>
11827                 <description><p>
11828  with error type NotSupportedError, if this feature is not supported.
11829                 </p></description>
11830             </descriptive>
11831           </RaiseException>
11832         </Raises>
11833       </Operation>
11834       <Operation name="connectToSource" id="::Bluetooth::BluetoothHealthProfileHandler::connectToSource">
11835         <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>
11836         <descriptive>
11837             <brief>
11838  Connect to the health device which acts as the Source role.
11839             </brief>
11840            <description>
11841             <p>
11842 The ErrorCallback is launched with these error types:
11843             </p>
11844             <ul>
11845               <li>
11846  ServiceNotAvailableError - If a Bluetooth device is turned off.              </li>
11847               <li>
11848  InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
11849               <li>
11850  UnknownError - If any other error occurs.              </li>
11851             </ul>
11852            </description>
11853             <version>
11854  2.2
11855             </version>
11856             <privilegelevel>
11857  public
11858             </privilegelevel>
11859             <privilege>
11860  http://tizen.org/privilege/bluetooth.health
11861             </privilege>
11862             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
11863  var healthProfileHandler = adapter.getBluetoothProfileHandler(&quot;HEALTH&quot;);
11864  var registerHealthApp = null;
11865
11866  function healthConnectSuccess(channel) {
11867      console.log(&quot;Health device is connected&quot;);
11868  }
11869  
11870  function healthConnectError(e) {
11871      console.log(&quot;Failed to connect to source: &quot; + e.message);
11872  };
11873  
11874  function gotDeviceInfo(device) {
11875      healthProfileHandler.connectToSource(device, registerHealthApp, healthConnectSuccess, healthConnectError);
11876  }
11877  
11878  function healthRegisterSuccess(app) {
11879      console.log(&quot;Registered application: &quot; + app.name);
11880      registerHealthApp = app;
11881      var peer = adapter.getDevice(&quot;35:F4:59:D1:7A:03&quot;, gotDeviceInfo);
11882  }
11883
11884  function healthRegisterError(e) {
11885      console.log(&quot;Failed to register application: &quot; + e.message);
11886  };
11887
11888  healthProfileHandler.registerSinkApplication(4100, &quot;testSinkApp&quot;, healthRegisterSuccess, healthRegisterError);
11889  </Code>
11890         </descriptive>
11891         <Type type="void"/>
11892         <ArgumentList>
11893           <Argument name="peer">
11894             <descriptive>
11895                 <description><p>
11896  The remote device which acts as the Source role. 
11897                 </p></description>
11898             </descriptive>
11899             <Type name="BluetoothDevice"/>
11900           </Argument>
11901           <Argument name="application">
11902             <descriptive>
11903                 <description><p>
11904  The registered application for the Sink role.
11905                 </p></description>
11906             </descriptive>
11907             <Type name="BluetoothHealthApplication"/>
11908           </Argument>
11909           <Argument name="successCallback">
11910             <descriptive>
11911                 <description><p>
11912  The method to invoke when a connection is established successfully.
11913                 </p></description>
11914             </descriptive>
11915             <Type name="BluetoothHealthChannelSuccessCallback"/>
11916           </Argument>
11917           <Argument optional="optional" name="errorCallback">
11918             <descriptive>
11919                 <description><p>
11920  The method to invoke when an error occurs.
11921                 </p></description>
11922             </descriptive>
11923             <Type name="ErrorCallback" nullable="nullable"/>
11924           </Argument>
11925         </ArgumentList>
11926         <Raises>
11927           <RaiseException name="WebAPIException">
11928             <descriptive>
11929                 <description><p>
11930  with error type SecurityError, if the application does not have the privilege to call this method.
11931                 </p></description>
11932                 <description><p>
11933  with error type TypeMismatchError, if any of the input parameter is not compatible with the expected type for that parameter.
11934                 </p></description>
11935                 <description><p>
11936  with error type NotSupportedError, if this feature is not supported.
11937                 </p></description>
11938             </descriptive>
11939           </RaiseException>
11940         </Raises>
11941       </Operation>
11942     </Interface>
11943     <Interface name="BluetoothHealthApplication" id="::Bluetooth::BluetoothHealthApplication">
11944       <webidl>    [NoInterfaceObject] interface BluetoothHealthApplication {
11945
11946         readonly attribute unsigned short dataType;
11947                 
11948         readonly attribute DOMString name;
11949
11950         [TreatNonCallableAsNull] attribute <ref>BluetoothHealthChannelSuccessCallback</ref>? onconnect raises(<ref>WebAPIException</ref>);
11951                 
11952         void unregister(optional <ref>SuccessCallback</ref>? successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
11953                 
11954     };</webidl>
11955       <descriptive>
11956           <brief>
11957  This interface represents the Bluetooth health application.
11958           </brief>
11959           <version>
11960  2.2
11961           </version>
11962       </descriptive>
11963       <ExtendedAttributeList>
11964         <ExtendedAttribute name="NoInterfaceObject">
11965           <webidl>NoInterfaceObject</webidl>
11966         </ExtendedAttribute>
11967       </ExtendedAttributeList>
11968       <Attribute readonly="readonly" name="dataType" id="::Bluetooth::BluetoothHealthApplication::dataType">
11969         <webidl>        readonly attribute unsigned short dataType;</webidl>
11970         <descriptive>
11971             <brief>
11972  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.
11973             </brief>
11974             <version>
11975  2.2
11976             </version>
11977         </descriptive>
11978         <Type type="unsigned short"/>
11979       </Attribute>
11980       <Attribute readonly="readonly" name="name" id="::Bluetooth::BluetoothHealthApplication::name">
11981         <webidl>        readonly attribute DOMString name;</webidl>
11982         <descriptive>
11983             <brief>
11984  The friendly name associated with sink application.
11985             </brief>
11986             <version>
11987  2.2
11988             </version>
11989         </descriptive>
11990         <Type type="DOMString"/>
11991       </Attribute>
11992       <Attribute name="onconnect" id="::Bluetooth::BluetoothHealthApplication::onconnect">
11993         <webidl>        [TreatNonCallableAsNull] attribute <ref>BluetoothHealthChannelSuccessCallback</ref>? onconnect raises(<ref>WebAPIException</ref>);</webidl>
11994         <descriptive>
11995             <brief>
11996  The callback invoked when a health device is connected through this application.
11997 By default, this attribute is set to null.
11998             </brief>
11999             <version>
12000  2.2
12001             </version>
12002         </descriptive>
12003         <ExtendedAttributeList>
12004           <ExtendedAttribute name="TreatNonCallableAsNull">
12005             <webidl>TreatNonCallableAsNull</webidl>
12006           </ExtendedAttribute>
12007         </ExtendedAttributeList>
12008         <Type name="BluetoothHealthChannelSuccessCallback" nullable="nullable"/>
12009         <Raises>
12010           <RaiseException name="WebAPIException">
12011             <descriptive>
12012                 <description><p>
12013  with error type TypeMismatchError, if an input attribute is not compatible with the expected type for this attribute.
12014                 </p></description>
12015             </descriptive>
12016           </RaiseException>
12017         </Raises>
12018       </Attribute>
12019       <Operation name="unregister" id="::Bluetooth::BluetoothHealthApplication::unregister">
12020         <webidl>        void unregister(optional <ref>SuccessCallback</ref>? successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
12021         <descriptive>
12022             <brief>
12023  Unregisters this application.
12024             </brief>
12025            <description>
12026             <p>
12027 The ErrorCallback is launched with these error types:
12028             </p>
12029             <ul>
12030               <li>
12031  ServiceNotAvailableError - If a Bluetooth device is turned off.              </li>
12032               <li>
12033  UnknownError - If any other error occurs.              </li>
12034             </ul>
12035            </description>
12036             <version>
12037  2.2
12038             </version>
12039             <privilegelevel>
12040  public
12041             </privilegelevel>
12042             <privilege>
12043  http://tizen.org/privilege/bluetooth.health
12044             </privilege>
12045             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
12046  var healthProfileHandler = adapter.getBluetoothProfileHandler(&quot;HEALTH&quot;);
12047  var healthApp = null;
12048
12049  function healthRegisterSuccess(app) {
12050      console.log(&quot;Registered application: &quot; + app.name);
12051      healthApp = app;
12052      healthApp.onconnect = function(channel) {
12053          console.log(&quot;Connected!!&quot;);
12054      };
12055  }
12056
12057  function healthRegisterError(e) {
12058      console.log(&quot;Failed to register application: &quot; + e.message);
12059  };
12060
12061  function startSink() {
12062      try {
12063          healthProfileHandler.registerSinkApplication(4100, &quot;testSinkApp&quot;, healthRegisterSuccess, healthRegisterError);
12064      } catch(e) {
12065          console.log(&quot;Error: &quot; + e.message);
12066      }
12067  }
12068
12069  function stopSink() {
12070      try {
12071          if(healthApp != null) {
12072              healthApp.unregister(function() {
12073                  healthApp = null;
12074                  console.log(&quot;Health application is unregistered.&quot;);
12075              },
12076              function(e) {
12077                  console.log (&quot;Error: &quot; + e.message);
12078              });
12079          }
12080      } catch(err) {
12081          console.log(&quot;Error: &quot; + err.message);
12082      }
12083  }
12084  </Code>
12085         </descriptive>
12086         <Type type="void"/>
12087         <ArgumentList>
12088           <Argument optional="optional" name="successCallback">
12089             <descriptive>
12090                 <description><p>
12091  The method to invoke when a sink application is registered successfully.
12092                 </p></description>
12093             </descriptive>
12094             <Type name="SuccessCallback" nullable="nullable"/>
12095           </Argument>
12096           <Argument optional="optional" name="errorCallback">
12097             <descriptive>
12098                 <description><p>
12099  The method to invoke when an error occurs.
12100                 </p></description>
12101             </descriptive>
12102             <Type name="ErrorCallback" nullable="nullable"/>
12103           </Argument>
12104         </ArgumentList>
12105         <Raises>
12106           <RaiseException name="WebAPIException">
12107             <descriptive>
12108                 <description><p>
12109  with error type SecurityError, if the application does not have the privilege to call this method.
12110                 </p></description>
12111                 <description><p>
12112  with error type TypeMismatchError, if any of the input parameter is not compatible with the expected type for that parameter.
12113                 </p></description>
12114                 <description><p>
12115  with error type NotSupportedError, if this feature is not supported.
12116                 </p></description>
12117             </descriptive>
12118           </RaiseException>
12119         </Raises>
12120       </Operation>
12121     </Interface>
12122     <Interface name="BluetoothHealthChannel" id="::Bluetooth::BluetoothHealthChannel">
12123       <webidl>    [NoInterfaceObject] interface BluetoothHealthChannel {
12124
12125         readonly attribute <ref>BluetoothDevice</ref> peer;
12126                 
12127         readonly attribute <ref>BluetoothHealthChannelType</ref> channelType;
12128
12129         readonly attribute <ref>BluetoothHealthApplication</ref> application;
12130                 
12131         readonly attribute boolean isConnected;
12132
12133         void close() raises(<ref>WebAPIException</ref>);
12134
12135         unsigned long sendData(byte[] data) raises(<ref>WebAPIException</ref>);
12136
12137         void setListener(<ref>BluetoothHealthChannelChangeCallback</ref> listener) raises(<ref>WebAPIException</ref>); 
12138  
12139         void unsetListener() raises(<ref>WebAPIException</ref>);
12140                 
12141     };</webidl>
12142       <descriptive>
12143           <brief>
12144  This interface represents the Bluetooth health channel.
12145           </brief>
12146           <version>
12147  2.2
12148           </version>
12149       </descriptive>
12150       <ExtendedAttributeList>
12151         <ExtendedAttribute name="NoInterfaceObject">
12152           <webidl>NoInterfaceObject</webidl>
12153         </ExtendedAttribute>
12154       </ExtendedAttributeList>
12155       <Attribute readonly="readonly" name="peer" id="::Bluetooth::BluetoothHealthChannel::peer">
12156         <webidl>        readonly attribute <ref>BluetoothDevice</ref> peer;</webidl>
12157         <descriptive>
12158             <brief>
12159  The remote device to which this channel is connected.
12160             </brief>
12161             <version>
12162  2.2
12163             </version>
12164         </descriptive>
12165         <Type name="BluetoothDevice"/>
12166       </Attribute>
12167       <Attribute readonly="readonly" name="channelType" id="::Bluetooth::BluetoothHealthChannel::channelType">
12168         <webidl>        readonly attribute <ref>BluetoothHealthChannelType</ref> channelType;</webidl>
12169         <descriptive>
12170             <brief>
12171  The type of of this channel.
12172             </brief>
12173             <version>
12174  2.2
12175             </version>
12176         </descriptive>
12177         <Type name="BluetoothHealthChannelType"/>
12178       </Attribute>
12179       <Attribute readonly="readonly" name="application" id="::Bluetooth::BluetoothHealthChannel::application">
12180         <webidl>        readonly attribute <ref>BluetoothHealthApplication</ref> application;</webidl>
12181         <descriptive>
12182             <brief>
12183  The health application which is used to communicate with the remote device.
12184             </brief>
12185             <version>
12186  2.2
12187             </version>
12188         </descriptive>
12189         <Type name="BluetoothHealthApplication"/>
12190       </Attribute>
12191       <Attribute readonly="readonly" name="isConnected" id="::Bluetooth::BluetoothHealthChannel::isConnected">
12192         <webidl>        readonly attribute boolean isConnected;</webidl>
12193         <descriptive>
12194             <brief>
12195  An attrbitue to check whether any remote device is connected or not.
12196             </brief>
12197             <version>
12198  2.2
12199             </version>
12200         </descriptive>
12201         <Type type="boolean"/>
12202       </Attribute>
12203       <Operation name="close" id="::Bluetooth::BluetoothHealthChannel::close">
12204         <webidl>        void close() raises(<ref>WebAPIException</ref>);</webidl>
12205         <descriptive>
12206             <brief>
12207  Close the connected channel.
12208 <em>BluetoothHealthChannel.isConnected</em> is changed to <var>false</var> and <em>BluetoothHealthChannelChangeCallback.onclose</em> is invoked when this channel is closed successfully.
12209             </brief>
12210             <version>
12211  2.2
12212             </version>
12213             <privilegelevel>
12214  public
12215             </privilegelevel>
12216             <privilege>
12217  http://tizen.org/privilege/bluetooth.health
12218             </privilege>
12219             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
12220  var healthProfileHandler = adapter.getBluetoothProfileHandler(&quot;HEALTH&quot;);
12221  
12222  function healthRegisterSuccess(app) {
12223      console.log(&quot;Registered application: &quot; + app.name);
12224      app.onconnect = function(channel) {;
12225          console.log(&quot;Health device is connected&quot;);
12226          channel.close();
12227      }
12228  }
12229
12230  function healthRegisterError(e) {
12231      console.log(&quot;Failed to register application: &quot; + e.message);
12232  };
12233
12234  healthProfileHandler.registerSinkApplication(4100, &quot;testSinkApp&quot;, healthRegisterSuccess, healthRegisterError);
12235  </Code>
12236         </descriptive>
12237         <Type type="void"/>
12238         <ArgumentList/>
12239         <Raises>
12240           <RaiseException name="WebAPIException">
12241             <descriptive>
12242                 <description><p>
12243  with error type SecurityError, if the application does not have the privilege to call this method.
12244                 </p></description>
12245                 <description><p>
12246  with error type ServiceNotAvailableError - If a Bluetooth device is turned off.
12247                 </p></description>
12248                 <description><p>
12249  with error type UnknownError, if any other error occurs.
12250                 </p></description>
12251                 <description><p>
12252  with error type NotSupportedError, if this feature is not supported.
12253                 </p></description>
12254             </descriptive>
12255           </RaiseException>
12256         </Raises>
12257       </Operation>
12258       <Operation name="sendData" id="::Bluetooth::BluetoothHealthChannel::sendData">
12259         <webidl>        unsigned long sendData(byte[] data) raises(<ref>WebAPIException</ref>);</webidl>
12260         <descriptive>
12261             <brief>
12262  Send data and returns the number of bytes actually written.
12263             </brief>
12264             <version>
12265  2.2
12266             </version>
12267             <privilegelevel>
12268  public
12269             </privilegelevel>
12270             <privilege>
12271  http://tizen.org/privilege/bluetooth.health
12272             </privilege>
12273             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
12274  var healthProfileHandler = adapter.getBluetoothProfileHandler(&quot;HEALTH&quot;);
12275
12276  function healthRegisterSuccess(app) {
12277      console.log(&quot;Registered application: &quot; + app.name);
12278      app.onconnect = function(channel) {
12279          console.log(&quot;Health device is connected&quot;);
12280          channel.sendData(dataToSend);
12281      }
12282  }
12283
12284  function healthRegisterError(e) {
12285      console.log(&quot;Failed to register application: &quot; + e.message);
12286  };
12287
12288  healthProfileHandler.registerSinkApplication(4100, &quot;testSinkApp&quot;, healthRegisterSuccess, healthRegisterError);
12289  </Code>
12290         </descriptive>
12291         <Type type="unsigned long">
12292           <descriptive>
12293               <description><p>
12294  unsigned long The number of bytes actually sent.
12295               </p></description>
12296           </descriptive>
12297         </Type>
12298         <ArgumentList>
12299           <Argument name="data">
12300             <descriptive>
12301                 <description><p>
12302  The data to send.
12303                 </p></description>
12304             </descriptive>
12305             <Type type="array">
12306               <Type type="byte"/>
12307             </Type>
12308           </Argument>
12309         </ArgumentList>
12310         <Raises>
12311           <RaiseException name="WebAPIException">
12312             <descriptive>
12313                 <description><p>
12314  with error type SecurityError, if the application does not have the privilege to call this method.
12315                 </p></description>
12316                 <description><p>
12317  with error type ServiceNotAvailableError - If a Bluetooth device is turned off.
12318                 </p></description>
12319                 <description><p>
12320  with error type TypeMismatchError, if any of the input parameter is not compatible with the expected type for that parameter.
12321                 </p></description>
12322                 <description><p>
12323  with error type UnknownError, if any other error occurs.
12324                 </p></description>
12325                 <description><p>
12326  with error type NotSupportedError, if this feature is not supported.
12327                 </p></description>
12328             </descriptive>
12329           </RaiseException>
12330         </Raises>
12331       </Operation>
12332       <Operation name="setListener" id="::Bluetooth::BluetoothHealthChannel::setListener">
12333         <webidl>        void setListener(<ref>BluetoothHealthChannelChangeCallback</ref> listener) raises(<ref>WebAPIException</ref>);</webidl>
12334         <descriptive>
12335             <brief>
12336  Sets the listener to receive notifications.
12337             </brief>
12338             <version>
12339  2.2
12340             </version>
12341             <privilegelevel>
12342  public
12343             </privilegelevel>
12344             <privilege>
12345  http://tizen.org/privilege/bluetooth.health
12346             </privilege>
12347             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
12348  var healthProfileHandler = adapter.getBluetoothProfileHandler(&quot;HEALTH&quot;);
12349
12350  var channelCallback = {
12351      onmessage: function(data) {
12352          console.log(&quot;data is received&quot;)
12353      },
12354      onclose: function() {
12355          console.log(&quot;channel is closed&quot;);
12356      }
12357  };
12358
12359  function healthRegisterSuccess(app) {
12360      console.log(&quot;Registered application: &quot; + app.name);
12361      app.onconnect = function(channel) {;
12362          console.log(&quot;Health device is connected&quot;);
12363          channel.setListener(channelCallback);
12364      }
12365  }
12366
12367  function healthRegisterError(e) {
12368      console.log(&quot;Failed to register application: &quot; + e.message);
12369  };
12370
12371  healthProfileHandler.registerSinkApplication(4100, &quot;testSinkApp&quot;, healthRegisterSuccess, healthRegisterError);
12372  </Code>
12373         </descriptive>
12374         <Type type="void"/>
12375         <ArgumentList>
12376           <Argument name="listener">
12377             <descriptive>
12378                 <description><p>
12379  The event listener of Bluetooth health channel.
12380                 </p></description>
12381             </descriptive>
12382             <Type name="BluetoothHealthChannelChangeCallback"/>
12383           </Argument>
12384         </ArgumentList>
12385         <Raises>
12386           <RaiseException name="WebAPIException">
12387             <descriptive>
12388                 <description><p>
12389  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
12390                 </p></description>
12391                 <description><p>
12392  with error type SecurityError, if the application does not have the privilege to call this method.
12393                 </p></description>
12394                 <description><p>
12395  with error type UnknownError, if any other error occurs.
12396                 </p></description>
12397             </descriptive>
12398           </RaiseException>
12399         </Raises>
12400       </Operation>
12401       <Operation name="unsetListener" id="::Bluetooth::BluetoothHealthChannel::unsetListener">
12402         <webidl>        void unsetListener() raises(<ref>WebAPIException</ref>);</webidl>
12403         <descriptive>
12404             <brief>
12405  Unsets the listener, so stop receiving notifications.
12406             </brief>
12407             <version>
12408  2.2
12409             </version>
12410             <privilegelevel>
12411  public
12412             </privilegelevel>
12413             <privilege>
12414  http://tizen.org/privilege/bluetooth.health
12415             </privilege>
12416             <Code> var adapter = tizen.bluetooth.getDefaultAdapter();
12417  var healthProfileHandler = adapter.getBluetoothProfileHandler(&quot;HEALTH&quot;);
12418  var connectedChannel = null;
12419
12420  var channelCallback = {
12421      onmessage: function(data) {
12422          console.log(&quot;data is received&quot;)
12423      },
12424      onclose: function() {
12425          console.log(&quot;channel is closed&quot;);
12426          connectedChannel.unsetListener();
12427      }
12428  };
12429
12430  function healthRegisterSuccess(app) {
12431      console.log(&quot;Registered application: &quot; + app.name);
12432      app.onconnect = function(channel) {;
12433          console.log(&quot;Health device is connected&quot;);
12434          connectedChannel = channel;
12435          connectedChannel.setListener(channelCallback);
12436      }
12437  }
12438
12439  function healthRegisterError(e) {
12440      console.log(&quot;Failed to register application: &quot; + e.message);
12441  };
12442
12443  healthProfileHandler.registerSinkApplication(4100, &quot;testSinkApp&quot;, healthRegisterSuccess, healthRegisterError);
12444  </Code>
12445         </descriptive>
12446         <Type type="void"/>
12447         <ArgumentList/>
12448         <Raises>
12449           <RaiseException name="WebAPIException">
12450             <descriptive>
12451                 <description><p>
12452  with error type SecurityError, if the application does not have the privilege to call this method.
12453                 </p></description>
12454                 <description><p>
12455  with error type UnknownError, if any other error occurs.
12456                 </p></description>
12457             </descriptive>
12458           </RaiseException>
12459         </Raises>
12460       </Operation>
12461     </Interface>
12462     <Interface name="BluetoothAdapterChangeCallback" id="::Bluetooth::BluetoothAdapterChangeCallback">
12463       <webidl>    [Callback, NoInterfaceObject] interface BluetoothAdapterChangeCallback {
12464         void onstatechanged(boolean powered);
12465         void onnamechanged(DOMString name);
12466         void onvisibilitychanged(boolean visible);
12467     };</webidl>
12468       <descriptive>
12469           <brief>
12470  This interface specifies a set of methods to be invoked when the changes of Bluetooth adapter occur.
12471           </brief>
12472           <version>
12473  2.2
12474           </version>
12475       </descriptive>
12476       <ExtendedAttributeList>
12477         <ExtendedAttribute name="Callback">
12478           <webidl>Callback</webidl>
12479         </ExtendedAttribute>
12480         <ExtendedAttribute name="NoInterfaceObject">
12481           <webidl> NoInterfaceObject</webidl>
12482         </ExtendedAttribute>
12483       </ExtendedAttributeList>
12484       <Operation name="onstatechanged" id="::Bluetooth::BluetoothAdapterChangeCallback::onstatechanged">
12485         <webidl>        void onstatechanged(boolean powered);</webidl>
12486         <descriptive>
12487             <brief>
12488  The method to be invoked when the power state is changed.
12489             </brief>
12490             <version>
12491  2.2
12492             </version>
12493         </descriptive>
12494         <Type type="void"/>
12495         <ArgumentList>
12496           <Argument name="powered">
12497             <descriptive>
12498                 <description><p>
12499  The power state of local Bluetooth: <var>true</var> means power-on, <var>false</var> means power-off.
12500                 </p></description>
12501             </descriptive>
12502             <Type type="boolean"/>
12503           </Argument>
12504         </ArgumentList>
12505       </Operation>
12506       <Operation name="onnamechanged" id="::Bluetooth::BluetoothAdapterChangeCallback::onnamechanged">
12507         <webidl>        void onnamechanged(DOMString name);</webidl>
12508         <descriptive>
12509             <brief>
12510  The method to be invoked when the name is changed.
12511             </brief>
12512             <version>
12513  2.2
12514             </version>
12515         </descriptive>
12516         <Type type="void"/>
12517         <ArgumentList>
12518           <Argument name="name">
12519             <descriptive>
12520                 <description><p>
12521  The name of local Bluetooth.
12522                 </p></description>
12523             </descriptive>
12524             <Type type="DOMString"/>
12525           </Argument>
12526         </ArgumentList>
12527       </Operation>
12528       <Operation name="onvisibilitychanged" id="::Bluetooth::BluetoothAdapterChangeCallback::onvisibilitychanged">
12529         <webidl>        void onvisibilitychanged(boolean visible);</webidl>
12530         <descriptive>
12531             <brief>
12532  The method to be invoked when the visibility is changed.
12533             </brief>
12534             <version>
12535  2.2
12536             </version>
12537         </descriptive>
12538         <Type type="void"/>
12539         <ArgumentList>
12540           <Argument name="visible">
12541             <descriptive>
12542                 <description><p>
12543  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.
12544                 </p></description>
12545             </descriptive>
12546             <Type type="boolean"/>
12547           </Argument>
12548         </ArgumentList>
12549       </Operation>
12550     </Interface>
12551     <Interface name="BluetoothDeviceSuccessCallback" id="::Bluetooth::BluetoothDeviceSuccessCallback">
12552       <webidl>    [Callback=FunctionOnly, NoInterfaceObject] interface BluetoothDeviceSuccessCallback {
12553         void onsuccess(<ref>BluetoothDevice</ref> device);
12554     };</webidl>
12555       <descriptive>
12556           <brief>
12557  This interface implements the success callback <em>BluetoothAdapter.getDevice() </em>and <em>BluetoothAdapter.createBonding()</em>.
12558           </brief>
12559           <version>
12560  1.0
12561           </version>
12562       </descriptive>
12563       <ExtendedAttributeList>
12564         <ExtendedAttribute name="Callback" value="FunctionOnly">
12565           <webidl>Callback</webidl>
12566         </ExtendedAttribute>
12567         <ExtendedAttribute name="NoInterfaceObject">
12568           <webidl> NoInterfaceObject</webidl>
12569         </ExtendedAttribute>
12570       </ExtendedAttributeList>
12571       <Operation name="onsuccess" id="::Bluetooth::BluetoothDeviceSuccessCallback::onsuccess">
12572         <webidl>        void onsuccess(<ref>BluetoothDevice</ref> device);</webidl>
12573         <descriptive>
12574             <brief>
12575  The method to be invoked on success.
12576             </brief>
12577             <version>
12578  1.0
12579             </version>
12580         </descriptive>
12581         <Type type="void"/>
12582         <ArgumentList>
12583           <Argument name="device">
12584             <descriptive>
12585                 <description><p>
12586  The BluetoothDevice object.
12587                 </p></description>
12588             </descriptive>
12589             <Type name="BluetoothDevice"/>
12590           </Argument>
12591         </ArgumentList>
12592       </Operation>
12593     </Interface>
12594     <Interface name="BluetoothDeviceArraySuccessCallback" id="::Bluetooth::BluetoothDeviceArraySuccessCallback">
12595       <webidl>    [Callback=FunctionOnly, NoInterfaceObject] interface BluetoothDeviceArraySuccessCallback {
12596         void onsuccess(<ref>BluetoothDevice</ref>[] devices);
12597     };</webidl>
12598       <descriptive>
12599           <brief>
12600  The success callback for <em>BluetoothAdapter.getKnownDevices()</em>.
12601           </brief>
12602           <version>
12603  1.0
12604           </version>
12605       </descriptive>
12606       <ExtendedAttributeList>
12607         <ExtendedAttribute name="Callback" value="FunctionOnly">
12608           <webidl>Callback</webidl>
12609         </ExtendedAttribute>
12610         <ExtendedAttribute name="NoInterfaceObject">
12611           <webidl> NoInterfaceObject</webidl>
12612         </ExtendedAttribute>
12613       </ExtendedAttributeList>
12614       <Operation name="onsuccess" id="::Bluetooth::BluetoothDeviceArraySuccessCallback::onsuccess">
12615         <webidl>        void onsuccess(<ref>BluetoothDevice</ref>[] devices);</webidl>
12616         <descriptive>
12617             <brief>
12618  The method to be invoked when device information is ready.
12619             </brief>
12620             <version>
12621  1.0
12622             </version>
12623         </descriptive>
12624         <Type type="void"/>
12625         <ArgumentList>
12626           <Argument name="devices">
12627             <descriptive>
12628                 <description><p>
12629  List of devices known to local Bluetooth adapter. Each element is a BluetoothDevice.
12630                 </p></description>
12631             </descriptive>
12632             <Type type="array">
12633               <Type name="BluetoothDevice"/>
12634             </Type>
12635           </Argument>
12636         </ArgumentList>
12637       </Operation>
12638     </Interface>
12639     <Interface name="BluetoothDiscoverDevicesSuccessCallback" id="::Bluetooth::BluetoothDiscoverDevicesSuccessCallback">
12640       <webidl>    [Callback, NoInterfaceObject] interface BluetoothDiscoverDevicesSuccessCallback {
12641         void onstarted();
12642         void ondevicefound(<ref>BluetoothDevice</ref> device);
12643         void ondevicedisappeared(<ref>BluetoothAddress</ref> address);
12644         void onfinished(<ref>BluetoothDevice</ref>[] foundDevices);
12645     };</webidl>
12646       <descriptive>
12647           <brief>
12648  The success callback for <em>BluetoothAdapter.discoverDevices()</em>.
12649           </brief>
12650           <version>
12651  1.0
12652           </version>
12653       </descriptive>
12654       <ExtendedAttributeList>
12655         <ExtendedAttribute name="Callback">
12656           <webidl>Callback</webidl>
12657         </ExtendedAttribute>
12658         <ExtendedAttribute name="NoInterfaceObject">
12659           <webidl> NoInterfaceObject</webidl>
12660         </ExtendedAttribute>
12661       </ExtendedAttributeList>
12662       <Operation name="onstarted" id="::Bluetooth::BluetoothDiscoverDevicesSuccessCallback::onstarted">
12663         <webidl>        void onstarted();</webidl>
12664         <descriptive>
12665             <brief>
12666  The method to be invoked at the beginning of a device discovery process for finding the nearby Bluetooth device.
12667             </brief>
12668             <version>
12669  1.0
12670             </version>
12671         </descriptive>
12672         <Type type="void"/>
12673         <ArgumentList/>
12674       </Operation>
12675       <Operation name="ondevicefound" id="::Bluetooth::BluetoothDiscoverDevicesSuccessCallback::ondevicefound">
12676         <webidl>        void ondevicefound(<ref>BluetoothDevice</ref> device);</webidl>
12677         <descriptive>
12678             <brief>
12679  The method to be invoked when a new device is discovered in the process of inquiry/discovery.
12680             </brief>
12681             <version>
12682  1.0
12683             </version>
12684         </descriptive>
12685         <Type type="void"/>
12686         <ArgumentList>
12687           <Argument name="device">
12688             <descriptive>
12689                 <description><p>
12690  The found device.
12691                 </p></description>
12692             </descriptive>
12693             <Type name="BluetoothDevice"/>
12694           </Argument>
12695         </ArgumentList>
12696       </Operation>
12697       <Operation name="ondevicedisappeared" id="::Bluetooth::BluetoothDiscoverDevicesSuccessCallback::ondevicedisappeared">
12698         <webidl>        void ondevicedisappeared(<ref>BluetoothAddress</ref> address);</webidl>
12699         <descriptive>
12700             <brief>
12701  The method to be invoked when a device is lost from proximity.
12702 After that, this device is no longer visible.
12703             </brief>
12704             <version>
12705  1.0
12706             </version>
12707         </descriptive>
12708         <Type type="void"/>
12709         <ArgumentList>
12710           <Argument name="address">
12711             <descriptive>
12712                 <description><p>
12713  The address of the device that is no longer in range or visible.
12714                 </p></description>
12715             </descriptive>
12716             <Type name="BluetoothAddress"/>
12717           </Argument>
12718         </ArgumentList>
12719       </Operation>
12720       <Operation name="onfinished" id="::Bluetooth::BluetoothDiscoverDevicesSuccessCallback::onfinished">
12721         <webidl>        void onfinished(<ref>BluetoothDevice</ref>[] foundDevices);</webidl>
12722         <descriptive>
12723             <brief>
12724  The method to be invoked when the device discovery process has finished.
12725             </brief>
12726             <version>
12727  1.0
12728             </version>
12729         </descriptive>
12730         <Type type="void"/>
12731         <ArgumentList>
12732           <Argument name="foundDevices">
12733             <descriptive>
12734                 <description><p>
12735  The array of devices found in this discovery session.                         </p></description>
12736             </descriptive>
12737             <Type type="array">
12738               <Type name="BluetoothDevice"/>
12739             </Type>
12740           </Argument>
12741         </ArgumentList>
12742       </Operation>
12743     </Interface>
12744     <Interface name="BluetoothSocketSuccessCallback" id="::Bluetooth::BluetoothSocketSuccessCallback">
12745       <webidl>    [Callback=FunctionOnly, NoInterfaceObject] interface BluetoothSocketSuccessCallback {
12746         void onsuccess(<ref>BluetoothSocket</ref> socket);
12747     };</webidl>
12748       <descriptive>
12749           <brief>
12750  The success method for <em>BluetoothDevice.connectToServiceByUUID()</em>.
12751           </brief>
12752           <version>
12753  1.0
12754           </version>
12755       </descriptive>
12756       <ExtendedAttributeList>
12757         <ExtendedAttribute name="Callback" value="FunctionOnly">
12758           <webidl>Callback</webidl>
12759         </ExtendedAttribute>
12760         <ExtendedAttribute name="NoInterfaceObject">
12761           <webidl> NoInterfaceObject</webidl>
12762         </ExtendedAttribute>
12763       </ExtendedAttributeList>
12764       <Operation name="onsuccess" id="::Bluetooth::BluetoothSocketSuccessCallback::onsuccess">
12765         <webidl>        void onsuccess(<ref>BluetoothSocket</ref> socket);</webidl>
12766         <descriptive>
12767             <brief>
12768  The method to be invoked when the connection to a service is ready.
12769             </brief>
12770             <version>
12771  1.0
12772             </version>
12773         </descriptive>
12774         <Type type="void"/>
12775         <ArgumentList>
12776           <Argument name="socket">
12777             <descriptive>
12778                 <description><p>
12779  The socket to connect to the specified service on a remote device.
12780                 </p></description>
12781             </descriptive>
12782             <Type name="BluetoothSocket"/>
12783           </Argument>
12784         </ArgumentList>
12785       </Operation>
12786     </Interface>
12787     <Interface name="BluetoothServiceSuccessCallback" id="::Bluetooth::BluetoothServiceSuccessCallback">
12788       <webidl>    [Callback=FunctionOnly, NoInterfaceObject] interface BluetoothServiceSuccessCallback {
12789         void onsuccess(<ref>BluetoothServiceHandler</ref> handler);
12790     };</webidl>
12791       <descriptive>
12792           <brief>
12793  This interface implements the success callback for <em>BluetoothAdapter.registerRFCOMMServiceByUUID()</em>.
12794           </brief>
12795           <version>
12796  1.0
12797           </version>
12798       </descriptive>
12799       <ExtendedAttributeList>
12800         <ExtendedAttribute name="Callback" value="FunctionOnly">
12801           <webidl>Callback</webidl>
12802         </ExtendedAttribute>
12803         <ExtendedAttribute name="NoInterfaceObject">
12804           <webidl> NoInterfaceObject</webidl>
12805         </ExtendedAttribute>
12806       </ExtendedAttributeList>
12807       <Operation name="onsuccess" id="::Bluetooth::BluetoothServiceSuccessCallback::onsuccess">
12808         <webidl>        void onsuccess(<ref>BluetoothServiceHandler</ref> handler);</webidl>
12809         <descriptive>
12810             <brief>
12811  The method to be invoked when registering a service with the local device is successful.
12812             </brief>
12813             <version>
12814  1.0
12815             </version>
12816         </descriptive>
12817         <Type type="void"/>
12818         <ArgumentList>
12819           <Argument name="handler">
12820             <descriptive>
12821                 <description><p>
12822  Bluetooth service handler.
12823                 </p></description>
12824             </descriptive>
12825             <Type name="BluetoothServiceHandler"/>
12826           </Argument>
12827         </ArgumentList>
12828       </Operation>
12829     </Interface>
12830     <Interface name="BluetoothHealthApplicationSuccessCallback" id="::Bluetooth::BluetoothHealthApplicationSuccessCallback">
12831       <webidl>    [Callback=FunctionOnly, NoInterfaceObject] interface BluetoothHealthApplicationSuccessCallback {
12832         void onsuccess(<ref>BluetoothHealthApplication</ref> application);
12833     };</webidl>
12834       <descriptive>
12835           <brief>
12836  The success method for <em>BluetoothHealthProfileHandler.registerSinkApplication()</em>.
12837           </brief>
12838           <version>
12839  2.2
12840           </version>
12841       </descriptive>
12842       <ExtendedAttributeList>
12843         <ExtendedAttribute name="Callback" value="FunctionOnly">
12844           <webidl>Callback</webidl>
12845         </ExtendedAttribute>
12846         <ExtendedAttribute name="NoInterfaceObject">
12847           <webidl> NoInterfaceObject</webidl>
12848         </ExtendedAttribute>
12849       </ExtendedAttributeList>
12850       <Operation name="onsuccess" id="::Bluetooth::BluetoothHealthApplicationSuccessCallback::onsuccess">
12851         <webidl>        void onsuccess(<ref>BluetoothHealthApplication</ref> application);</webidl>
12852         <descriptive>
12853             <brief>
12854  The method to be invoked when the application is registered successfully.
12855             </brief>
12856             <version>
12857  2.2
12858             </version>
12859         </descriptive>
12860         <Type type="void"/>
12861         <ArgumentList>
12862           <Argument name="application">
12863             <descriptive>
12864                 <description><p>
12865  The registered health application.
12866                 </p></description>
12867             </descriptive>
12868             <Type name="BluetoothHealthApplication"/>
12869           </Argument>
12870         </ArgumentList>
12871       </Operation>
12872     </Interface>
12873     <Interface name="BluetoothHealthChannelSuccessCallback" id="::Bluetooth::BluetoothHealthChannelSuccessCallback">
12874       <webidl>    [Callback=FunctionOnly, NoInterfaceObject] interface BluetoothHealthChannelSuccessCallback {
12875         void onsuccess(<ref>BluetoothHealthChannel</ref> channel);
12876     };</webidl>
12877       <descriptive>
12878           <brief>
12879  The success method for <em>BluetoothHealthProfileHandler.connectToSource()</em> and the event callback for <em>BluetoothHealthApplication.onconnect</em>.
12880           </brief>
12881           <version>
12882  2.2
12883           </version>
12884       </descriptive>
12885       <ExtendedAttributeList>
12886         <ExtendedAttribute name="Callback" value="FunctionOnly">
12887           <webidl>Callback</webidl>
12888         </ExtendedAttribute>
12889         <ExtendedAttribute name="NoInterfaceObject">
12890           <webidl> NoInterfaceObject</webidl>
12891         </ExtendedAttribute>
12892       </ExtendedAttributeList>
12893       <Operation name="onsuccess" id="::Bluetooth::BluetoothHealthChannelSuccessCallback::onsuccess">
12894         <webidl>        void onsuccess(<ref>BluetoothHealthChannel</ref> channel);</webidl>
12895         <descriptive>
12896             <brief>
12897  The method to be invoked when a connection is established.
12898             </brief>
12899             <version>
12900  2.2
12901             </version>
12902         </descriptive>
12903         <Type type="void"/>
12904         <ArgumentList>
12905           <Argument name="channel">
12906             <descriptive>
12907                 <description><p>
12908  The connected health channel.
12909                 </p></description>
12910             </descriptive>
12911             <Type name="BluetoothHealthChannel"/>
12912           </Argument>
12913         </ArgumentList>
12914       </Operation>
12915     </Interface>
12916     <Interface name="BluetoothHealthChannelChangeCallback" id="::Bluetooth::BluetoothHealthChannelChangeCallback">
12917       <webidl>    [Callback, NoInterfaceObject] interface BluetoothHealthChannelChangeCallback {
12918         void onmessage(byte[] data);
12919                 
12920         void onclose(); 
12921     };</webidl>
12922       <descriptive>
12923           <brief>
12924  This interface specifies a set of methods to be invoked when the changes of heath channel occur.
12925           </brief>
12926           <version>
12927  2.2
12928           </version>
12929       </descriptive>
12930       <ExtendedAttributeList>
12931         <ExtendedAttribute name="Callback">
12932           <webidl>Callback</webidl>
12933         </ExtendedAttribute>
12934         <ExtendedAttribute name="NoInterfaceObject">
12935           <webidl> NoInterfaceObject</webidl>
12936         </ExtendedAttribute>
12937       </ExtendedAttributeList>
12938       <Operation name="onmessage" id="::Bluetooth::BluetoothHealthChannelChangeCallback::onmessage">
12939         <webidl>        void onmessage(byte[] data);</webidl>
12940         <descriptive>
12941             <brief>
12942  The method to be invoked when the message is received.
12943             </brief>
12944             <version>
12945  2.2
12946             </version>
12947         </descriptive>
12948         <Type type="void"/>
12949         <ArgumentList>
12950           <Argument name="data">
12951             <descriptive>
12952                 <description><p>
12953  The received data.
12954                 </p></description>
12955             </descriptive>
12956             <Type type="array">
12957               <Type type="byte"/>
12958             </Type>
12959           </Argument>
12960         </ArgumentList>
12961       </Operation>
12962       <Operation name="onclose" id="::Bluetooth::BluetoothHealthChannelChangeCallback::onclose">
12963         <webidl>        void onclose();</webidl>
12964         <descriptive>
12965             <brief>
12966  The method to be invoked when the health channel is closed.
12967             </brief>
12968             <version>
12969  2.2
12970             </version>
12971         </descriptive>
12972         <Type type="void"/>
12973         <ArgumentList/>
12974       </Operation>
12975     </Interface>
12976   </Module>
12977   <Module name="Bookmark" id="::Bookmark">
12978     <webidl>module Bookmark {&#13;
12979 &#13;
12980   typedef (<ref>BookmarkItem</ref> or <ref>BookmarkFolder</ref>) Bookmark;&#13;
12981 &#13;
12982 &#13;
12983   [NoInterfaceObject] interface BookmarkManagerObject {&#13;
12984     readonly attribute <ref>BookmarkManager</ref> bookmark;&#13;
12985   };&#13;
12986   <ref>Tizen</ref> implements <ref>BookmarkManagerObject</ref>;&#13;
12987 &#13;
12988 &#13;
12989   [NoInterfaceObject] interface BookmarkManager {&#13;
12990 &#13;
12991     <ref>Bookmark</ref>[] get(optional <ref>BookmarkFolder</ref>? parentFolder, optional boolean? recursive) raises(<ref>WebAPIException</ref>);&#13;
12992 &#13;
12993     void add(<ref>Bookmark</ref> bookmark, optional <ref>BookmarkFolder</ref>? parentFolder) raises(<ref>WebAPIException</ref>);&#13;
12994 &#13;
12995     void remove(optional <ref>Bookmark</ref>? bookmark) raises(<ref>WebAPIException</ref>);&#13;
12996 &#13;
12997   };&#13;
12998 &#13;
12999 &#13;
13000   [Constructor(DOMString title, DOMString url)]&#13;
13001 &#13;
13002   interface BookmarkItem {&#13;
13003 &#13;
13004     readonly attribute <ref>BookmarkFolder</ref>? parent;&#13;
13005 &#13;
13006     readonly attribute DOMString title;&#13;
13007 &#13;
13008     readonly attribute DOMString url;&#13;
13009 &#13;
13010   };&#13;
13011 &#13;
13012   [Constructor(DOMString title)]&#13;
13013 &#13;
13014   interface BookmarkFolder {&#13;
13015 &#13;
13016     readonly attribute <ref>BookmarkFolder</ref>? parent;&#13;
13017 &#13;
13018     readonly attribute DOMString title;&#13;
13019 &#13;
13020   };&#13;
13021 };</webidl>
13022     <descriptive>
13023         <brief>
13024  This API provides interfaces and methods for accessing Bookmark.
13025 This API provides functionality to get, add, and remove bookmarks.
13026         </brief>
13027        <description>
13028         <p>
13029 For more information on the Bookmark features, see <a href="../../org.tizen.web.appprogramming/html/guide/social_guide/bookmark.htm">Bookmark Guide</a>. 
13030         </p>
13031        </description>
13032         <version>
13033  2.1
13034         </version>
13035     </descriptive>
13036     <Typedef name="Bookmark" id="::Bookmark::Bookmark">
13037       <webidl>  typedef (<ref>BookmarkItem</ref> or <ref>BookmarkFolder</ref>) Bookmark;</webidl>
13038       <descriptive>
13039           <brief>
13040  A bookmark, which could be either a <em>BookmarkItem </em>or a <em>BookmarkFolder</em>.
13041           </brief>
13042           <version>
13043  2.1
13044           </version>
13045       </descriptive>
13046       <Type type="union">
13047         <Type name="BookmarkItem"/>
13048         <Type name="BookmarkFolder"/>
13049       </Type>
13050     </Typedef>
13051     <Interface name="BookmarkManagerObject" id="::Bookmark::BookmarkManagerObject">
13052       <webidl>  [NoInterfaceObject] interface BookmarkManagerObject {&#13;
13053     readonly attribute <ref>BookmarkManager</ref> bookmark;&#13;
13054   };</webidl>
13055       <descriptive>
13056           <brief>
13057  Defines what is instantiated by the Tizen object from the Tizen Platform.
13058           </brief>
13059          <description>
13060           <p>
13061 There will be a <em>tizen.bookmark </em>object that allows to access the functionality of the Bookmark API.
13062           </p>
13063          </description>
13064           <version>
13065  2.1
13066           </version>
13067       </descriptive>
13068       <ExtendedAttributeList>
13069         <ExtendedAttribute name="NoInterfaceObject">
13070           <webidl>NoInterfaceObject</webidl>
13071         </ExtendedAttribute>
13072       </ExtendedAttributeList>
13073       <Attribute readonly="readonly" name="bookmark" id="::Bookmark::BookmarkManagerObject::bookmark">
13074         <webidl>    readonly attribute <ref>BookmarkManager</ref> bookmark;</webidl>
13075         <Type name="BookmarkManager"/>
13076       </Attribute>
13077     </Interface>
13078     <Implements name1="Tizen" name2="BookmarkManagerObject">
13079       <webidl>  <ref>Tizen</ref> implements <ref>BookmarkManagerObject</ref>;</webidl>
13080     </Implements>
13081     <Interface name="BookmarkManager" id="::Bookmark::BookmarkManager">
13082       <webidl>  [NoInterfaceObject] interface BookmarkManager {&#13;
13083 &#13;
13084     <ref>Bookmark</ref>[] get(optional <ref>BookmarkFolder</ref>? parentFolder, optional boolean? recursive) raises(<ref>WebAPIException</ref>);&#13;
13085 &#13;
13086     void add(<ref>Bookmark</ref> bookmark, optional <ref>BookmarkFolder</ref>? parentFolder) raises(<ref>WebAPIException</ref>);&#13;
13087 &#13;
13088     void remove(optional <ref>Bookmark</ref>? bookmark) raises(<ref>WebAPIException</ref>);&#13;
13089 &#13;
13090   };</webidl>
13091       <descriptive>
13092           <brief>
13093  This interface provides access to the bookmark folder and bookmark item.
13094           </brief>
13095          <description>
13096           <p>
13097 It provides access to the API functionalities through the <em>tizen.bookmark </em>interface.
13098           </p>
13099          </description>
13100           <version>
13101  2.1
13102           </version>
13103       </descriptive>
13104       <ExtendedAttributeList>
13105         <ExtendedAttribute name="NoInterfaceObject">
13106           <webidl>NoInterfaceObject</webidl>
13107         </ExtendedAttribute>
13108       </ExtendedAttributeList>
13109       <Operation name="get" id="::Bookmark::BookmarkManager::get">
13110         <webidl>    <ref>Bookmark</ref>[] get(optional <ref>BookmarkFolder</ref>? parentFolder, optional boolean? recursive) raises(<ref>WebAPIException</ref>);</webidl>
13111         <descriptive>
13112             <brief>
13113  Gets all bookmark items and bookmark folders.
13114             </brief>
13115            <description>
13116             <p>
13117 If no parentFolder is passed, or the parentFolder contains <var>null</var>, it is considered as the default bookmark folder(The root bookmark folder).
13118 In this case, the return will contain bookmarks under the root bookmark folder.
13119             </p>
13120            </description>
13121             <version>
13122  2.1
13123             </version>
13124             <privilege>
13125  http://tizen.org/privilege/bookmark.read
13126             </privilege>
13127             <privilegelevel>
13128  platform
13129             </privilegelevel>
13130             <Code> try {
13131   // retrieve bookmarks from the root bookmark folder recursively
13132   var allBookmarks = tizen.bookmark.get(null, true);
13133  } catch (err) {
13134   console.log (err.name +&quot;: &quot; + err.message);
13135  }
13136  </Code>
13137         </descriptive>
13138         <Type type="array">
13139           <descriptive>
13140               <description><p>
13141  Bookmark[] Array of Bookmarks.
13142               </p></description>
13143           </descriptive>
13144           <Type name="Bookmark"/>
13145         </Type>
13146         <ArgumentList>
13147           <Argument optional="optional" name="parentFolder">
13148             <descriptive>
13149                 <description><p>
13150  The parent bookmark folder to retrieve the result bookmarks.
13151                 </p></description>
13152             </descriptive>
13153             <Type name="BookmarkFolder" nullable="nullable"/>
13154           </Argument>
13155           <Argument optional="optional" name="recursive">
13156             <descriptive>
13157                 <description><p>
13158  The flag indicating whether sub-bookmarks are also retrieved recursively or not<br/> (The default value is <em>false</em>).
13159                 </p></description>
13160             </descriptive>
13161             <Type type="boolean" nullable="nullable"/>
13162           </Argument>
13163         </ArgumentList>
13164         <Raises>
13165           <RaiseException name="WebAPIException">
13166             <descriptive>
13167                 <description><p>
13168  with error type NotFoundError, if the parentFolder parameter isn't found in bookmark database.
13169                 </p></description>
13170                 <description><p>
13171  with error type TypeMismatchError, if an input parameter is not compatible with the expected type for that parameter.
13172                 </p></description>
13173                 <description><p>
13174  with error type SecurityError, if the application does not have the privilege to call this method.
13175                 </p></description>
13176                 <description><p>
13177  with error type UnknownError, if any other error occurs.
13178                 </p></description>
13179             </descriptive>
13180           </RaiseException>
13181         </Raises>
13182       </Operation>
13183       <Operation name="add" id="::Bookmark::BookmarkManager::add">
13184         <webidl>    void add(<ref>Bookmark</ref> bookmark, optional <ref>BookmarkFolder</ref>? parentFolder) raises(<ref>WebAPIException</ref>);</webidl>
13185         <descriptive>
13186             <brief>
13187  Adds a bookmark item or a bookmark folder.
13188             </brief>
13189            <description>
13190             <p>
13191 If no parentFolder is passed, or the parentFolder contains <var>null</var>, it is considered as the default bookmark folder(The root bookmark folder).
13192 In this case, the bookmark is added under the root bookmark folder.
13193             </p>
13194            </description>
13195             <version>
13196  2.1
13197             </version>
13198             <privilege>
13199  http://tizen.org/privilege/bookmark.write
13200             </privilege>
13201             <privilegelevel>
13202  platform
13203             </privilegelevel>
13204             <Code> try {
13205  // add a bookmark item to root bookmark folder.
13206   tizen.bookmark.add(new tizen.BookmarkItem(&quot;tizen&quot;, &quot;https://www.tizen.org&quot;));
13207  } catch (err) {
13208   console.log (err.name +&quot;: &quot; + err.message);
13209  }
13210  </Code>
13211         </descriptive>
13212         <Type type="void"/>
13213         <ArgumentList>
13214           <Argument name="bookmark">
13215             <descriptive>
13216                 <description><p>
13217  The bookmark to be added.
13218                 </p></description>
13219             </descriptive>
13220             <Type name="Bookmark"/>
13221           </Argument>
13222           <Argument optional="optional" name="parentFolder">
13223             <descriptive>
13224                 <description><p>
13225  The parent folder of a bookmark to be added.
13226                 </p></description>
13227             </descriptive>
13228             <Type name="BookmarkFolder" nullable="nullable"/>
13229           </Argument>
13230         </ArgumentList>
13231         <Raises>
13232           <RaiseException name="WebAPIException">
13233             <descriptive>
13234                 <description><p>
13235  with error type NotFoundError, if a parentFolder parameter isn't found in bookmark database.
13236                 </p></description>
13237                 <description><p>
13238  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.
13239                 </p></description>
13240                 <description><p>
13241  with error type TypeMismatchError, if an input parameter is not compatible with the expected type for that parameter.
13242                 </p></description>
13243                 <description><p>
13244  with error type SecurityError, if the application does not have the privilege to call this method.
13245                 </p></description>
13246                 <description><p>
13247  with error type UnknownError, if any other error occurs.
13248                 </p></description>
13249             </descriptive>
13250           </RaiseException>
13251         </Raises>
13252       </Operation>
13253       <Operation name="remove" id="::Bookmark::BookmarkManager::remove">
13254         <webidl>    void remove(optional <ref>Bookmark</ref>? bookmark) raises(<ref>WebAPIException</ref>);</webidl>
13255         <descriptive>
13256             <brief>
13257  Removes a bookmark item or a bookmark folder.
13258             </brief>
13259            <description>
13260             <p>
13261 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).
13262 In this case, all the bookmarks will be removed.
13263             </p>
13264            </description>
13265             <version>
13266  2.1
13267             </version>
13268             <privilege>
13269  http://tizen.org/privilege/bookmark.write
13270             </privilege>
13271             <privilegelevel>
13272  platform
13273             </privilegelevel>
13274             <Code> try {
13275  // remove all the bookmark folders and items
13276   tizen.bookmark.remove();
13277  } catch (err) {
13278   console.log (err.name +&quot;: &quot; + err.message);
13279  }
13280  </Code>
13281         </descriptive>
13282         <Type type="void"/>
13283         <ArgumentList>
13284           <Argument optional="optional" name="bookmark">
13285             <descriptive>
13286                 <description><p>
13287  The bookmark to be removed.
13288                 </p></description>
13289             </descriptive>
13290             <Type name="Bookmark" nullable="nullable"/>
13291           </Argument>
13292         </ArgumentList>
13293         <Raises>
13294           <RaiseException name="WebAPIException">
13295             <descriptive>
13296                 <description><p>
13297  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
13298                 </p></description>
13299                 <description><p>
13300  with error type SecurityError, if the application does not have the privilege to call this method.
13301                 </p></description>
13302                 <description><p>
13303  with error type UnknownError, if any other error occurs.
13304                 </p></description>
13305             </descriptive>
13306           </RaiseException>
13307         </Raises>
13308       </Operation>
13309     </Interface>
13310     <Interface name="BookmarkItem" id="::Bookmark::BookmarkItem">
13311       <webidl>  [Constructor(DOMString title, DOMString url)]&#13;
13312 &#13;
13313   interface BookmarkItem {&#13;
13314 &#13;
13315     readonly attribute <ref>BookmarkFolder</ref>? parent;&#13;
13316 &#13;
13317     readonly attribute DOMString title;&#13;
13318 &#13;
13319     readonly attribute DOMString url;&#13;
13320 &#13;
13321   };</webidl>
13322       <descriptive>
13323           <brief>
13324  This interface implements the <em>BookmarkItem </em>object.
13325           </brief>
13326           <version>
13327  2.1
13328           </version>
13329       </descriptive>
13330       <ExtendedAttributeList>
13331         <ExtendedAttribute name="Constructor">
13332           <webidl>Constructor(DOMString title, DOMString url)</webidl>
13333           <descriptive>
13334               <Code> try {
13335  // create a bookmark item
13336   var tizen = new tizen.BookmarkItem(&quot;tizen&quot;, &quot;https://www.tizen.org&quot;);
13337  } catch (err) {
13338   console.log (err.name +&quot;: &quot; + err.message);
13339  }
13340  </Code>
13341           </descriptive>
13342           <ArgumentList>
13343             <Argument name="title">
13344               <Type type="DOMString"/>
13345             </Argument>
13346             <Argument name="url">
13347               <Type type="DOMString"/>
13348             </Argument>
13349           </ArgumentList>
13350         </ExtendedAttribute>
13351       </ExtendedAttributeList>
13352       <Attribute readonly="readonly" name="parent" id="::Bookmark::BookmarkItem::parent">
13353         <webidl>    readonly attribute <ref>BookmarkFolder</ref>? parent;</webidl>
13354         <descriptive>
13355             <brief>
13356  The parent bookmark folder.
13357             </brief>
13358            <description>
13359             <p>
13360 This attribute is meaningful when this object is successfully added or retrieved.
13361 If this BookmarkItem is not added yet, its value is set to undefined.
13362             </p>
13363             <p>
13364 If the parent bookmark folder indicates the root bookmark folder, the value will be <var>null</var>.
13365             </p>
13366            </description>
13367             <version>
13368  2.1
13369             </version>
13370         </descriptive>
13371         <Type name="BookmarkFolder" nullable="nullable"/>
13372       </Attribute>
13373       <Attribute readonly="readonly" name="title" id="::Bookmark::BookmarkItem::title">
13374         <webidl>    readonly attribute DOMString title;</webidl>
13375         <descriptive>
13376             <brief>
13377  The title of the bookmark.
13378             </brief>
13379             <version>
13380  2.1
13381             </version>
13382         </descriptive>
13383         <Type type="DOMString"/>
13384       </Attribute>
13385       <Attribute readonly="readonly" name="url" id="::Bookmark::BookmarkItem::url">
13386         <webidl>    readonly attribute DOMString url;</webidl>
13387         <descriptive>
13388             <brief>
13389  The uri of the bookmark.
13390             </brief>
13391             <version>
13392  2.1
13393             </version>
13394         </descriptive>
13395         <Type type="DOMString"/>
13396       </Attribute>
13397     </Interface>
13398     <Interface name="BookmarkFolder" id="::Bookmark::BookmarkFolder">
13399       <webidl>  [Constructor(DOMString title)]&#13;
13400 &#13;
13401   interface BookmarkFolder {&#13;
13402 &#13;
13403     readonly attribute <ref>BookmarkFolder</ref>? parent;&#13;
13404 &#13;
13405     readonly attribute DOMString title;&#13;
13406 &#13;
13407   };</webidl>
13408       <descriptive>
13409           <brief>
13410  This interface implements the <em>BookmarkFolder </em>object.
13411           </brief>
13412           <version>
13413  2.1
13414           </version>
13415       </descriptive>
13416       <ExtendedAttributeList>
13417         <ExtendedAttribute name="Constructor">
13418           <webidl>Constructor(DOMString title)</webidl>
13419           <descriptive>
13420               <Code> try {
13421  // create a bookmark folder
13422   var folder = new tizen.BookmarkFolder(&quot;folder&quot;);
13423  } catch (err) {
13424   console.log (err.name +&quot;: &quot; + err.message);
13425  }
13426  </Code>
13427           </descriptive>
13428           <ArgumentList>
13429             <Argument name="title">
13430               <Type type="DOMString"/>
13431             </Argument>
13432           </ArgumentList>
13433         </ExtendedAttribute>
13434       </ExtendedAttributeList>
13435       <Attribute readonly="readonly" name="parent" id="::Bookmark::BookmarkFolder::parent">
13436         <webidl>    readonly attribute <ref>BookmarkFolder</ref>? parent;</webidl>
13437         <descriptive>
13438             <brief>
13439  The parent bookmark folder.
13440             </brief>
13441            <description>
13442             <p>
13443 This attribute is meaningful when this object is successfully added or retrieved.
13444 If this BookmarkFolder is not added yet, its value is set to undefined.
13445             </p>
13446             <p>
13447 If the parent bookmark folder indicates the root bookmark folder, the value will be <var>null</var>.
13448             </p>
13449            </description>
13450             <version>
13451  2.1
13452             </version>
13453         </descriptive>
13454         <Type name="BookmarkFolder" nullable="nullable"/>
13455       </Attribute>
13456       <Attribute readonly="readonly" name="title" id="::Bookmark::BookmarkFolder::title">
13457         <webidl>    readonly attribute DOMString title;</webidl>
13458         <descriptive>
13459             <brief>
13460  The title of the bookmark folder.
13461             </brief>
13462             <version>
13463  2.1
13464             </version>
13465         </descriptive>
13466         <Type type="DOMString"/>
13467       </Attribute>
13468     </Interface>
13469   </Module>
13470   <Module name="Calendar" id="::Calendar">
13471     <webidl>module Calendar {
13472   typedef DOMString CalendarId;
13473   
13474   typedef DOMString CalendarTaskId;
13475   
13476   typedef (<ref>CalendarEventId</ref> or <ref>CalendarTaskId</ref>) CalendarItemId;
13477   
13478   enum CalendarType { &quot;EVENT&quot;, &quot;TASK&quot; };
13479   
13480   enum CalendarTextFormat { &quot;ICALENDAR_20&quot;, &quot;VCALENDAR_10&quot; };
13481   
13482   enum AlarmMethod { &quot;SOUND&quot;, &quot;DISPLAY&quot; };
13483   
13484   
13485   enum RecurrenceRuleFrequency { &quot;DAILY&quot;, &quot;WEEKLY&quot;, &quot;MONTHLY&quot;, &quot;YEARLY&quot; };
13486   
13487   enum ByDayValue { &quot;MO&quot;, &quot;TU&quot;, &quot;WE&quot;, &quot;TH&quot;, &quot;FR&quot;, &quot;SA&quot;, &quot;SU&quot; };
13488   
13489   enum EventAvailability { &quot;BUSY&quot;, &quot;FREE&quot; };
13490   
13491   enum AttendeeType { &quot;INDIVIDUAL&quot;, &quot;GROUP&quot;, &quot;RESOURCE&quot;, &quot;ROOM&quot;, &quot;UNKNOWN&quot; };
13492   
13493   enum AttendeeStatus { &quot;PENDING&quot;, &quot;ACCEPTED&quot;, &quot;DECLINED&quot;, &quot;TENTATIVE&quot;, &quot;DELEGATED&quot;, &quot;COMPLETED&quot;, &quot;IN_PROCESS&quot; };
13494   
13495   enum AttendeeRole { &quot;REQ_PARTICIPANT&quot;, &quot;OPT_PARTICIPANT&quot;, &quot;NON_PARTICIPANT&quot;, &quot;CHAIR&quot; };
13496   
13497   enum CalendarItemPriority { &quot;HIGH&quot;, &quot;MEDIUM&quot;, &quot;LOW&quot; };
13498   
13499    enum CalendarItemVisibility { &quot;PUBLIC&quot;, &quot;PRIVATE&quot;, &quot;CONFIDENTIAL&quot; };
13500    
13501    enum CalendarItemStatus { &quot;TENTATIVE&quot;, &quot;CONFIRMED&quot;, &quot;CANCELLED&quot;, &quot;NEEDS_ACTION&quot;, &quot;IN_PROCESS&quot;, &quot;COMPLETED&quot; };
13502   
13503   [NoInterfaceObject] interface CalendarManagerObject{
13504     readonly attribute <ref>CalendarManager</ref> calendar; 
13505   };
13506   <ref>Tizen</ref> implements <ref>CalendarManagerObject</ref>;    
13507
13508   [NoInterfaceObject] interface CalendarManager {
13509     void getCalendars(<ref>CalendarType</ref> type,
13510                       <ref>CalendarArraySuccessCallback</ref> successCallback,
13511                       optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
13512
13513     <ref>Calendar</ref> getUnifiedCalendar(<ref>CalendarType</ref> type) raises(<ref>WebAPIException</ref>);
13514
13515     <ref>Calendar</ref> getDefaultCalendar(<ref>CalendarType</ref> type) raises(<ref>WebAPIException</ref>);
13516     
13517     <ref>Calendar</ref> getCalendar(<ref>CalendarType</ref> type, <ref>CalendarId</ref> id) raises(<ref>WebAPIException</ref>);
13518   };
13519
13520   [NoInterfaceObject] interface Calendar {
13521     
13522     readonly attribute <ref>CalendarId</ref> id;
13523
13524     readonly attribute DOMString name;
13525                               
13526     <ref>CalendarItem</ref> get(<ref>CalendarItemId</ref> id) raises(<ref>WebAPIException</ref>);
13527
13528     void add(<ref>CalendarItem</ref> item) raises(<ref>WebAPIException</ref>);
13529
13530     void addBatch(<ref>CalendarItem</ref>[] items,
13531                   optional <ref>CalendarItemArraySuccessCallback</ref>? successCallback,
13532                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
13533
13534     void update(<ref>CalendarItem</ref> item,
13535                 optional boolean? updateAllInstances) raises(<ref>WebAPIException</ref>);
13536
13537      void updateBatch(<ref>CalendarItem</ref>[] items,
13538                      optional <ref>SuccessCallback</ref>? successCallback,
13539                      optional <ref>ErrorCallback</ref>? errorCallback,
13540                      optional boolean? updateAllInstances) raises(<ref>WebAPIException</ref>);
13541
13542     void remove(<ref>CalendarItemId</ref> id) raises(<ref>WebAPIException</ref>);
13543
13544     void removeBatch(<ref>CalendarItemId</ref>[] ids,
13545                      optional <ref>SuccessCallback</ref>? successCallback,
13546                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
13547  
13548     void find(<ref>CalendarItemArraySuccessCallback</ref> successCallback,
13549               optional <ref>ErrorCallback</ref>? errorCallback,
13550               optional <ref>AbstractFilter</ref>? filter,
13551               optional <ref>SortMode</ref>? sortMode) raises(<ref>WebAPIException</ref>);
13552                                 
13553     long addChangeListener(<ref>CalendarChangeCallback</ref> successCallback) raises(<ref>WebAPIException</ref>);
13554                       
13555     void removeChangeListener(long watchId) raises(<ref>WebAPIException</ref>);
13556   };
13557   
13558   dictionary CalendarItemInit {
13559     DOMString description;
13560     DOMString summary;
13561     boolean isAllDay;
13562     <ref>TZDate</ref> startDate;
13563     <ref>TimeDuration</ref> duration;
13564     DOMString location;
13565     <ref>SimpleCoordinates</ref> geolocation;
13566     DOMString organizer;
13567     <ref>CalendarItemVisibility</ref> visibility;
13568     <ref>CalendarItemStatus</ref> status;
13569     <ref>CalendarItemPriority</ref> priority;
13570     <ref>CalendarAlarm</ref>[] alarms;
13571     DOMString[] categories;
13572     <ref>CalendarAttendee</ref>[] attendees;
13573   };
13574   
13575   dictionary CalendarTaskInit: <ref>CalendarItemInit</ref> {
13576     <ref>TZDate</ref> dueDate;
13577     <ref>TZDate</ref> completedDate;
13578     short progress;
13579   };
13580
13581   dictionary CalendarEventInit: <ref>CalendarItemInit</ref> {
13582     <ref>TZDate</ref> endDate;
13583     <ref>EventAvailability</ref> availability;
13584     <ref>CalendarRecurrenceRule</ref> recurrenceRule;
13585   };
13586   
13587   [NoInterfaceObject] interface CalendarItem {
13588     readonly attribute <ref>CalendarItemId</ref>? id;
13589
13590     readonly attribute <ref>CalendarId</ref>? calendarId;
13591
13592     readonly attribute <ref>TZDate</ref>? lastModificationDate;
13593     
13594     attribute DOMString? description setraises(<ref>WebAPIException</ref>);
13595     
13596     attribute DOMString? summary setraises(<ref>WebAPIException</ref>);
13597     
13598     attribute boolean isAllDay setraises(<ref>WebAPIException</ref>);
13599     
13600     attribute <ref>TZDate</ref>? startDate setraises(<ref>WebAPIException</ref>);
13601     
13602     attribute <ref>TimeDuration</ref>? duration setraises(<ref>WebAPIException</ref>);
13603     
13604     attribute DOMString? location setraises(<ref>WebAPIException</ref>);
13605     
13606     attribute <ref>SimpleCoordinates</ref>? geolocation setraises(<ref>WebAPIException</ref>);
13607     
13608     attribute DOMString? organizer setraises(<ref>WebAPIException</ref>);
13609     
13610     attribute <ref>CalendarItemVisibility</ref> visibility setraises(<ref>WebAPIException</ref>);
13611     
13612     attribute <ref>CalendarItemStatus</ref> status setraises(<ref>WebAPIException</ref>);
13613     
13614     attribute <ref>CalendarItemPriority</ref> priority setraises(<ref>WebAPIException</ref>);
13615     
13616     attribute <ref>CalendarAlarm</ref>[] alarms setraises(<ref>WebAPIException</ref>);
13617     
13618     attribute DOMString[] categories setraises(<ref>WebAPIException</ref>);
13619     
13620     attribute <ref>CalendarAttendee</ref>[] attendees setraises(<ref>WebAPIException</ref>);
13621     
13622     DOMString convertToString(<ref>CalendarTextFormat</ref> format) raises(<ref>WebAPIException</ref>);
13623
13624     <ref>CalendarItem</ref> clone() raises(<ref>WebAPIException</ref>);
13625   };
13626   
13627   [Constructor(optional <ref>CalendarTaskInit</ref>? taskInitDict),
13628    Constructor(DOMString stringRepresentation, <ref>CalendarTextFormat</ref> format)]
13629   interface CalendarTask : <ref>CalendarItem</ref> {
13630     attribute <ref>TZDate</ref>? dueDate setraises(<ref>WebAPIException</ref>);
13631     
13632     attribute <ref>TZDate</ref>? completedDate setraises(<ref>WebAPIException</ref>);
13633     
13634     attribute unsigned short progress setraises(<ref>WebAPIException</ref>);
13635   };
13636
13637   [Constructor(optional <ref>CalendarEventInit</ref>? eventInitDict),
13638    Constructor(DOMString stringRepresentation, <ref>CalendarTextFormat</ref> format)]
13639   interface CalendarEvent : <ref>CalendarItem</ref> {
13640     readonly attribute boolean isDetached;
13641     
13642     attribute <ref>TZDate</ref>? endDate setraises(<ref>WebAPIException</ref>);
13643     
13644     attribute <ref>EventAvailability</ref> availability setraises(<ref>WebAPIException</ref>);
13645     
13646     attribute <ref>CalendarRecurrenceRule</ref>? recurrenceRule setraises(<ref>WebAPIException</ref>);
13647     
13648     void expandRecurrence(<ref>TZDate</ref> startDate,
13649                           <ref>TZDate</ref> endDate,
13650                           <ref>CalendarEventArraySuccessCallback</ref> successCallback,
13651                           optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
13652   };
13653   
13654   dictionary CalendarAttendeeInit {
13655     DOMString name;
13656     <ref>AttendeeRole</ref> role;
13657     <ref>AttendeeStatus</ref> status;
13658     boolean RSVP;
13659     <ref>AttendeeType</ref> type;
13660     DOMString? group;
13661     DOMString delegatorURI;
13662     DOMString delegateURI;
13663     <ref>ContactRef</ref> contactRef;
13664   };
13665
13666   [Constructor(DOMString uri, optional <ref>CalendarAttendeeInit</ref>? attendeeInitDict)]
13667   interface CalendarAttendee
13668   {
13669     attribute DOMString uri;
13670     
13671     attribute DOMString? name;
13672     
13673     attribute <ref>AttendeeRole</ref> role;
13674     
13675     attribute <ref>AttendeeStatus</ref> status;
13676     
13677     attribute boolean RSVP;
13678     
13679     attribute <ref>AttendeeType</ref> type;
13680      
13681     attribute DOMString? group;
13682       
13683     attribute DOMString? delegatorURI;
13684       
13685     attribute DOMString? delegateURI;
13686      
13687     attribute <ref>ContactRef</ref>? contactRef;
13688   };
13689   
13690   dictionary CalendarRecurrenceRuleInit {
13691     short interval;
13692     <ref>TZDate</ref> untilDate;
13693     long occurrenceCount;
13694     <ref>ByDayValue</ref>[] daysOfTheWeek;
13695     short[] setPositions;
13696     <ref>TZDate</ref>[] exceptions;
13697   };
13698   
13699   [Constructor(<ref>RecurrenceRuleFrequency</ref> frequency, optional <ref>CalendarRecurrenceRuleInit</ref>? ruleInitDict)]
13700   interface CalendarRecurrenceRule
13701   { 
13702     attribute <ref>RecurrenceRuleFrequency</ref> frequency;
13703     
13704     attribute unsigned short interval;
13705     
13706     attribute <ref>TZDate</ref>? untilDate;
13707     
13708     attribute long occurrenceCount;
13709     
13710     attribute <ref>ByDayValue</ref>[] daysOfTheWeek;
13711     
13712     attribute short[] setPositions;
13713     
13714     attribute <ref>TZDate</ref>[] exceptions;
13715   };
13716   
13717   [Constructor(DOMString uid, optional DOMString? rid)]
13718   interface CalendarEventId {
13719     attribute DOMString uid;
13720     
13721     attribute DOMString? rid;
13722   };
13723   
13724   [Constructor(<ref>TZDate</ref> absoluteDate, <ref>AlarmMethod</ref> method, optional DOMString? description),
13725    Constructor(<ref>TimeDuration</ref> before, <ref>AlarmMethod</ref> method, optional DOMString? description)]
13726   interface CalendarAlarm {
13727     attribute <ref>TZDate</ref>? absoluteDate setraises(<ref>WebAPIException</ref>);
13728     
13729     attribute <ref>TimeDuration</ref>? before setraises(<ref>WebAPIException</ref>);
13730   
13731     attribute <ref>AlarmMethod</ref> method setraises(<ref>WebAPIException</ref>);
13732     
13733     attribute DOMString? description;
13734   };
13735
13736   [Callback=FunctionOnly, NoInterfaceObject]
13737   interface CalendarEventArraySuccessCallback {
13738     void onsuccess(<ref>CalendarEvent</ref>[] events);
13739   };
13740   
13741   [Callback=FunctionOnly, NoInterfaceObject]
13742   interface CalendarItemArraySuccessCallback {
13743     void onsuccess(<ref>CalendarItem</ref>[] items);
13744   };
13745
13746   [Callback=FunctionOnly, NoInterfaceObject]
13747   interface CalendarArraySuccessCallback {
13748     void onsuccess(<ref>Calendar</ref>[] calendars);
13749   };
13750   
13751   [Callback, NoInterfaceObject] interface CalendarChangeCallback {
13752     void onitemsadded(<ref>CalendarItem</ref>[] items);
13753     
13754     void onitemsupdated(<ref>CalendarItem</ref>[] items);
13755     
13756     void onitemsremoved(<ref>CalendarItemId</ref>[] ids);
13757   };
13758 };</webidl>
13759     <descriptive>
13760         <brief>
13761  This API provides interfaces and methods for users to manage their schedule. 
13762 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.
13763         </brief>
13764        <description>
13765         <p>
13766 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>. 
13767         </p>
13768         <p>
13769 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.
13770         </p>
13771         <p>
13772 For more information on the Calendar features, see <a href="../../org.tizen.web.appprogramming/html/guide/social_guide/calendar.htm">Calendar Guide</a>. 
13773         </p>
13774        </description>
13775         <version>
13776  1.0
13777         </version>
13778     </descriptive>
13779     <Typedef name="CalendarId" id="::Calendar::CalendarId">
13780       <webidl>  typedef DOMString CalendarId;</webidl>
13781       <descriptive>
13782           <brief>
13783  An attribute to identify the calendar.
13784           </brief>
13785           <version>
13786  1.0
13787           </version>
13788       </descriptive>
13789       <Type type="DOMString"/>
13790     </Typedef>
13791     <Typedef name="CalendarTaskId" id="::Calendar::CalendarTaskId">
13792       <webidl>  typedef DOMString CalendarTaskId;</webidl>
13793       <descriptive>
13794           <brief>
13795  An attribute to identify a calendar task.
13796           </brief>
13797           <version>
13798  1.0
13799           </version>
13800       </descriptive>
13801       <Type type="DOMString"/>
13802     </Typedef>
13803     <Typedef name="CalendarItemId" id="::Calendar::CalendarItemId">
13804       <webidl>  typedef (<ref>CalendarEventId</ref> or <ref>CalendarTaskId</ref>) CalendarItemId;</webidl>
13805       <descriptive>
13806           <brief>
13807  A calendar item identifier, which can either be a <em>CalendarEventId </em>or a <em>CalendarTaskId</em>.
13808           </brief>
13809           <version>
13810  1.0
13811           </version>
13812       </descriptive>
13813       <Type type="union">
13814         <Type name="CalendarEventId"/>
13815         <Type name="CalendarTaskId"/>
13816       </Type>
13817     </Typedef>
13818     <Enum name="CalendarType" id="::Calendar::CalendarType">
13819       <webidl>  enum CalendarType { &quot;EVENT&quot;, &quot;TASK&quot; };</webidl>
13820       <descriptive>
13821           <brief>
13822  An enumerator that indicates the type of a calendar.
13823           </brief>
13824          <description>
13825           <p>
13826 The following types are supported:
13827           </p>
13828           <ul>
13829             <li>
13830 EVENT - if a calendar contains events (VEVENT objects)            </li>
13831             <li>
13832 TASK - if a calendar contains tasks (VTODO objects)            </li>
13833           </ul>
13834          </description>
13835           <version>
13836  1.0
13837           </version>
13838       </descriptive>
13839       <EnumValue stringvalue="EVENT">
13840         <webidl> &quot;EVENT</webidl>
13841       </EnumValue>
13842       <EnumValue stringvalue="TASK">
13843         <webidl> &quot;TASK</webidl>
13844       </EnumValue>
13845     </Enum>
13846     <Enum name="CalendarTextFormat" id="::Calendar::CalendarTextFormat">
13847       <webidl>  enum CalendarTextFormat { &quot;ICALENDAR_20&quot;, &quot;VCALENDAR_10&quot; };</webidl>
13848       <descriptive>
13849           <brief>
13850  An enumerator that indicates the type of textual format of a Calendar.
13851           </brief>
13852          <description>
13853           <p>
13854 The following values are supported:
13855           </p>
13856           <ul>
13857             <li>
13858 ICALENDAR_20 -  if the textual format is iCalendar v2.0            </li>
13859             <li>
13860 VCALENDAR_10 -  if the textual format is vCalendar v1.0            </li>
13861           </ul>
13862          </description>
13863           <version>
13864  1.0
13865           </version>
13866       </descriptive>
13867       <EnumValue stringvalue="ICALENDAR_20">
13868         <webidl> &quot;ICALENDAR_20</webidl>
13869       </EnumValue>
13870       <EnumValue stringvalue="VCALENDAR_10">
13871         <webidl> &quot;VCALENDAR_10</webidl>
13872       </EnumValue>
13873     </Enum>
13874     <Enum name="AlarmMethod" id="::Calendar::AlarmMethod">
13875       <webidl>  enum AlarmMethod { &quot;SOUND&quot;, &quot;DISPLAY&quot; };</webidl>
13876       <descriptive>
13877           <brief>
13878  An enumerator that indicates the type of an alarm.
13879           </brief>
13880          <description>
13881           <p>
13882 The following values are supported:
13883           </p>
13884           <ul>
13885             <li>
13886 SOUND - if sound is played to alert the user            </li>
13887             <li>
13888 DISPLAY - if display on screen without any sound is used to alert the user            </li>
13889           </ul>
13890          </description>
13891           <version>
13892  1.0
13893           </version>
13894       </descriptive>
13895       <EnumValue stringvalue="SOUND">
13896         <webidl> &quot;SOUND</webidl>
13897       </EnumValue>
13898       <EnumValue stringvalue="DISPLAY">
13899         <webidl> &quot;DISPLAY</webidl>
13900       </EnumValue>
13901     </Enum>
13902     <Enum name="RecurrenceRuleFrequency" id="::Calendar::RecurrenceRuleFrequency">
13903       <webidl>  enum RecurrenceRuleFrequency { &quot;DAILY&quot;, &quot;WEEKLY&quot;, &quot;MONTHLY&quot;, &quot;YEARLY&quot; };</webidl>
13904       <descriptive>
13905           <brief>
13906  An enumerator that indicates the type of frequency for the recurrence of an event.
13907           </brief>
13908          <description>
13909           <p>
13910 Only the following values are valid for this attribute:
13911           </p>
13912           <ul>
13913             <li>
13914 DAILY - if the event occurs daily            </li>
13915             <li>
13916 WEEKLY - if the event occurs weekly            </li>
13917             <li>
13918 MONTHLY -  if the event occurs monthly            </li>
13919             <li>
13920 YEARLY - if the event occurs yearly            </li>
13921           </ul>
13922          </description>
13923           <version>
13924  1.0
13925           </version>
13926       </descriptive>
13927       <EnumValue stringvalue="DAILY">
13928         <webidl> &quot;DAILY</webidl>
13929       </EnumValue>
13930       <EnumValue stringvalue="WEEKLY">
13931         <webidl> &quot;WEEKLY</webidl>
13932       </EnumValue>
13933       <EnumValue stringvalue="MONTHLY">
13934         <webidl> &quot;MONTHLY</webidl>
13935       </EnumValue>
13936       <EnumValue stringvalue="YEARLY">
13937         <webidl> &quot;YEARLY</webidl>
13938       </EnumValue>
13939     </Enum>
13940     <Enum name="ByDayValue" id="::Calendar::ByDayValue">
13941       <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>
13942       <descriptive>
13943           <brief>
13944  An enumerator that indicates the values for <em>CalendarRecurrenceRule.daysOfWeek</em>.
13945           </brief>
13946          <description>
13947           <p>
13948 &quot;MO&quot; to &quot;SU&quot; correspond to &quot;Monday&quot; to &quot;Sunday&quot;.
13949           </p>
13950          </description>
13951           <version>
13952  1.0
13953           </version>
13954       </descriptive>
13955       <EnumValue stringvalue="MO">
13956         <webidl> &quot;MO</webidl>
13957       </EnumValue>
13958       <EnumValue stringvalue="TU">
13959         <webidl> &quot;TU</webidl>
13960       </EnumValue>
13961       <EnumValue stringvalue="WE">
13962         <webidl> &quot;WE</webidl>
13963       </EnumValue>
13964       <EnumValue stringvalue="TH">
13965         <webidl> &quot;TH</webidl>
13966       </EnumValue>
13967       <EnumValue stringvalue="FR">
13968         <webidl> &quot;FR</webidl>
13969       </EnumValue>
13970       <EnumValue stringvalue="SA">
13971         <webidl> &quot;SA</webidl>
13972       </EnumValue>
13973       <EnumValue stringvalue="SU">
13974         <webidl> &quot;SU</webidl>
13975       </EnumValue>
13976     </Enum>
13977     <Enum name="EventAvailability" id="::Calendar::EventAvailability">
13978       <webidl>  enum EventAvailability { &quot;BUSY&quot;, &quot;FREE&quot; };</webidl>
13979       <descriptive>
13980           <brief>
13981  An enumerator that indicates the availability of time for an event.
13982           </brief>
13983          <description>
13984           <p>
13985 The following values are supported:
13986           </p>
13987           <ul>
13988             <li>
13989 FREE - if the specified time slot is vacant            </li>
13990             <li>
13991 BUSY - if the specified time slot is not vacant            </li>
13992             <li>
13993 BUSY-UNAVAILABLE - if the specified time slot is not vacant and can not be scheduled            </li>
13994             <li>
13995 BUSY-TENTATIVE - if the specified time slot is not vacant because one or more events have been tentatively scheduled for that interval            </li>
13996           </ul>
13997          </description>
13998           <version>
13999  1.0
14000           </version>
14001       </descriptive>
14002       <EnumValue stringvalue="BUSY">
14003         <webidl> &quot;BUSY</webidl>
14004       </EnumValue>
14005       <EnumValue stringvalue="FREE">
14006         <webidl> &quot;FREE</webidl>
14007       </EnumValue>
14008     </Enum>
14009     <Enum name="AttendeeType" id="::Calendar::AttendeeType">
14010       <webidl>  enum AttendeeType { &quot;INDIVIDUAL&quot;, &quot;GROUP&quot;, &quot;RESOURCE&quot;, &quot;ROOM&quot;, &quot;UNKNOWN&quot; };</webidl>
14011       <descriptive>
14012           <brief>
14013  An enumerator that indicates the type of attendee.
14014           </brief>
14015          <description>
14016           <p>
14017 At least the following values must be supported:
14018           </p>
14019           <ul>
14020             <li>
14021 INDIVIDUAL - Individual            </li>
14022             <li>
14023 GROUP - Group of individuals            </li>
14024             <li>
14025 RESOURCE - Physical resource            </li>
14026             <li>
14027 ROOM - Room resource            </li>
14028             <li>
14029 UNKNOWN - Unknown            </li>
14030           </ul>
14031          </description>
14032           <version>
14033  1.0
14034           </version>
14035       </descriptive>
14036       <EnumValue stringvalue="INDIVIDUAL">
14037         <webidl> &quot;INDIVIDUAL</webidl>
14038       </EnumValue>
14039       <EnumValue stringvalue="GROUP">
14040         <webidl> &quot;GROUP</webidl>
14041       </EnumValue>
14042       <EnumValue stringvalue="RESOURCE">
14043         <webidl> &quot;RESOURCE</webidl>
14044       </EnumValue>
14045       <EnumValue stringvalue="ROOM">
14046         <webidl> &quot;ROOM</webidl>
14047       </EnumValue>
14048       <EnumValue stringvalue="UNKNOWN">
14049         <webidl> &quot;UNKNOWN</webidl>
14050       </EnumValue>
14051     </Enum>
14052     <Enum name="AttendeeStatus" id="::Calendar::AttendeeStatus">
14053       <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>
14054       <descriptive>
14055           <brief>
14056  An enumerator that indicates the attendance status of a participant.
14057           </brief>
14058          <description>
14059           <p>
14060 At least the following values must be supported:
14061           </p>
14062           <ul>
14063             <li>
14064 PENDING - if the participant has not yet responded to the event            </li>
14065             <li>
14066 ACCEPTED - if the participant has accepted the event            </li>
14067             <li>
14068 DECLINED - if the participant has declined the event            </li>
14069             <li>
14070 TENTATIVE - if the participant has tentatively accepted the event            </li>
14071             <li>
14072 DELEGATED - if the participant has delegated attendance to another participant            </li>
14073             <li>
14074 COMPLETED - if the participant's event has been completed            </li>
14075             <li>
14076 IN_PROCESS - if the participant's event is currently in process            </li>
14077           </ul>
14078          </description>
14079           <version>
14080  1.0
14081           </version>
14082       </descriptive>
14083       <EnumValue stringvalue="PENDING">
14084         <webidl> &quot;PENDING</webidl>
14085       </EnumValue>
14086       <EnumValue stringvalue="ACCEPTED">
14087         <webidl> &quot;ACCEPTED</webidl>
14088       </EnumValue>
14089       <EnumValue stringvalue="DECLINED">
14090         <webidl> &quot;DECLINED</webidl>
14091       </EnumValue>
14092       <EnumValue stringvalue="TENTATIVE">
14093         <webidl> &quot;TENTATIVE</webidl>
14094       </EnumValue>
14095       <EnumValue stringvalue="DELEGATED">
14096         <webidl> &quot;DELEGATED</webidl>
14097       </EnumValue>
14098       <EnumValue stringvalue="COMPLETED">
14099         <webidl> &quot;COMPLETED</webidl>
14100       </EnumValue>
14101       <EnumValue stringvalue="IN_PROCESS">
14102         <webidl> &quot;IN_PROCESS</webidl>
14103       </EnumValue>
14104     </Enum>
14105     <Enum name="AttendeeRole" id="::Calendar::AttendeeRole">
14106       <webidl>  enum AttendeeRole { &quot;REQ_PARTICIPANT&quot;, &quot;OPT_PARTICIPANT&quot;, &quot;NON_PARTICIPANT&quot;, &quot;CHAIR&quot; };</webidl>
14107       <descriptive>
14108           <brief>
14109  An enumerator that indicates the role of an attendee.
14110           </brief>
14111          <description>
14112           <p>
14113 At least the following values must be supported:
14114           </p>
14115           <ul>
14116             <li>
14117 REQ_PARTICIPANT - if the participation of an attendee is mandatory            </li>
14118             <li>
14119 OPT_PARTICIPANT - if the participation of an attendee is optional            </li>
14120             <li>
14121 NON_PARTICIPANT - if the attendee is not a participant but is copied for information purposes            </li>
14122             <li>
14123 CHAIR - if the attendee is the chairperson of the event.            </li>
14124           </ul>
14125          </description>
14126           <version>
14127  1.0
14128           </version>
14129       </descriptive>
14130       <EnumValue stringvalue="REQ_PARTICIPANT">
14131         <webidl> &quot;REQ_PARTICIPANT</webidl>
14132       </EnumValue>
14133       <EnumValue stringvalue="OPT_PARTICIPANT">
14134         <webidl> &quot;OPT_PARTICIPANT</webidl>
14135       </EnumValue>
14136       <EnumValue stringvalue="NON_PARTICIPANT">
14137         <webidl> &quot;NON_PARTICIPANT</webidl>
14138       </EnumValue>
14139       <EnumValue stringvalue="CHAIR">
14140         <webidl> &quot;CHAIR</webidl>
14141       </EnumValue>
14142     </Enum>
14143     <Enum name="CalendarItemPriority" id="::Calendar::CalendarItemPriority">
14144       <webidl>  enum CalendarItemPriority { &quot;HIGH&quot;, &quot;MEDIUM&quot;, &quot;LOW&quot; };</webidl>
14145       <descriptive>
14146           <brief>
14147  An enumerator that indicates the priority of a calendar item.
14148           </brief>
14149          <description>
14150           <p>
14151 The following values are supported:
14152           </p>
14153           <ul>
14154             <li>
14155 HIGH - if item priority is high            </li>
14156             <li>
14157 MEDIUM - if item priority is medium            </li>
14158             <li>
14159 LOW - if item priority is low            </li>
14160           </ul>
14161          </description>
14162           <version>
14163  1.0
14164           </version>
14165       </descriptive>
14166       <EnumValue stringvalue="HIGH">
14167         <webidl> &quot;HIGH</webidl>
14168       </EnumValue>
14169       <EnumValue stringvalue="MEDIUM">
14170         <webidl> &quot;MEDIUM</webidl>
14171       </EnumValue>
14172       <EnumValue stringvalue="LOW">
14173         <webidl> &quot;LOW</webidl>
14174       </EnumValue>
14175     </Enum>
14176     <Enum name="CalendarItemVisibility" id="::Calendar::CalendarItemVisibility">
14177       <webidl>   enum CalendarItemVisibility { &quot;PUBLIC&quot;, &quot;PRIVATE&quot;, &quot;CONFIDENTIAL&quot; };</webidl>
14178       <descriptive>
14179           <brief>
14180  An enumerator that indicates the visibility type of a calendar item.
14181           </brief>
14182          <description>
14183           <p>
14184 The following values are supported:
14185           </p>
14186           <ul>
14187             <li>
14188 PUBLIC - if item visibility is public            </li>
14189             <li>
14190 PRIVATE - if item visibility is private            </li>
14191             <li>
14192 CONFIDENTIAL - if item visibility is confidential            </li>
14193           </ul>
14194          </description>
14195           <version>
14196  1.0
14197           </version>
14198       </descriptive>
14199       <EnumValue stringvalue="PUBLIC">
14200         <webidl> &quot;PUBLIC</webidl>
14201       </EnumValue>
14202       <EnumValue stringvalue="PRIVATE">
14203         <webidl> &quot;PRIVATE</webidl>
14204       </EnumValue>
14205       <EnumValue stringvalue="CONFIDENTIAL">
14206         <webidl> &quot;CONFIDENTIAL</webidl>
14207       </EnumValue>
14208     </Enum>
14209     <Enum name="CalendarItemStatus" id="::Calendar::CalendarItemStatus">
14210       <webidl>   enum CalendarItemStatus { &quot;TENTATIVE&quot;, &quot;CONFIRMED&quot;, &quot;CANCELLED&quot;, &quot;NEEDS_ACTION&quot;, &quot;IN_PROCESS&quot;, &quot;COMPLETED&quot; };</webidl>
14211       <descriptive>
14212           <brief>
14213  An enumerator that indicates the status of a calendar item.
14214           </brief>
14215          <description>
14216           <p>
14217 For an event, the possible values are:
14218           </p>
14219           <ul>
14220             <li>
14221 TENTATIVE - if the event is tentative            </li>
14222             <li>
14223 CONFIRMED - if the event is confirmed            </li>
14224             <li>
14225 CANCELLED -  if the event is cancelled            </li>
14226           </ul>
14227           <p>
14228 For a task, the possible values are:
14229           </p>
14230           <ul>
14231             <li>
14232 NEEDS_ACTION - if the task needs action            </li>
14233             <li>
14234 IN_PROCESS -  if the task is in process or being worked on            </li>
14235             <li>
14236 COMPLETED - if the task has been completed            </li>
14237             <li>
14238 CANCELLED -  if the task has been cancelled            </li>
14239           </ul>
14240          </description>
14241           <version>
14242  1.0
14243           </version>
14244       </descriptive>
14245       <EnumValue stringvalue="TENTATIVE">
14246         <webidl> &quot;TENTATIVE</webidl>
14247       </EnumValue>
14248       <EnumValue stringvalue="CONFIRMED">
14249         <webidl> &quot;CONFIRMED</webidl>
14250       </EnumValue>
14251       <EnumValue stringvalue="CANCELLED">
14252         <webidl> &quot;CANCELLED</webidl>
14253       </EnumValue>
14254       <EnumValue stringvalue="NEEDS_ACTION">
14255         <webidl> &quot;NEEDS_ACTION</webidl>
14256       </EnumValue>
14257       <EnumValue stringvalue="IN_PROCESS">
14258         <webidl> &quot;IN_PROCESS</webidl>
14259       </EnumValue>
14260       <EnumValue stringvalue="COMPLETED">
14261         <webidl> &quot;COMPLETED</webidl>
14262       </EnumValue>
14263     </Enum>
14264     <Interface name="CalendarManagerObject" id="::Calendar::CalendarManagerObject">
14265       <webidl>  [NoInterfaceObject] interface CalendarManagerObject{
14266     readonly attribute <ref>CalendarManager</ref> calendar; 
14267   };</webidl>
14268       <descriptive>
14269           <brief>
14270  This interface gives access to the Calendar API from the <em>tizen.calendar </em>object. 
14271           </brief>
14272           <version>
14273  1.0
14274           </version>
14275       </descriptive>
14276       <ExtendedAttributeList>
14277         <ExtendedAttribute name="NoInterfaceObject">
14278           <webidl>NoInterfaceObject</webidl>
14279         </ExtendedAttribute>
14280       </ExtendedAttributeList>
14281       <Attribute readonly="readonly" name="calendar" id="::Calendar::CalendarManagerObject::calendar">
14282         <webidl>    readonly attribute <ref>CalendarManager</ref> calendar;</webidl>
14283         <Type name="CalendarManager"/>
14284       </Attribute>
14285     </Interface>
14286     <Implements name1="Tizen" name2="CalendarManagerObject">
14287       <webidl>  <ref>Tizen</ref> implements <ref>CalendarManagerObject</ref>;</webidl>
14288     </Implements>
14289     <Interface name="CalendarManager" id="::Calendar::CalendarManager">
14290       <webidl>  [NoInterfaceObject] interface CalendarManager {
14291     void getCalendars(<ref>CalendarType</ref> type,
14292                       <ref>CalendarArraySuccessCallback</ref> successCallback,
14293                       optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
14294
14295     <ref>Calendar</ref> getUnifiedCalendar(<ref>CalendarType</ref> type) raises(<ref>WebAPIException</ref>);
14296
14297     <ref>Calendar</ref> getDefaultCalendar(<ref>CalendarType</ref> type) raises(<ref>WebAPIException</ref>);
14298     
14299     <ref>Calendar</ref> getCalendar(<ref>CalendarType</ref> type, <ref>CalendarId</ref> id) raises(<ref>WebAPIException</ref>);
14300   };</webidl>
14301       <descriptive>
14302           <brief>
14303  This interface provides methods to access calendars and attributes for calendars. 
14304 Once a calendar object is obtained, it is possible to add, remove, or update the information it contains through the Calendar interface methods.   
14305           </brief>
14306           <version>
14307  1.0
14308           </version>
14309       </descriptive>
14310       <ExtendedAttributeList>
14311         <ExtendedAttribute name="NoInterfaceObject">
14312           <webidl>NoInterfaceObject</webidl>
14313         </ExtendedAttribute>
14314       </ExtendedAttributeList>
14315       <Operation name="getCalendars" id="::Calendar::CalendarManager::getCalendars">
14316         <webidl>    void getCalendars(<ref>CalendarType</ref> type,
14317                       <ref>CalendarArraySuccessCallback</ref> successCallback,
14318                       optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
14319         <descriptive>
14320             <brief>
14321  Gets an array of Calendar objects.
14322             </brief>
14323            <description>
14324             <p>
14325 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.
14326             </p>
14327             <p>
14328 If no Calendar object is available, the <em>successCallback()</em> is invoked with an empty array.
14329             </p>
14330             <p>
14331 The errorCallback is launched with these error types:
14332             </p>
14333             <ul>
14334               <li>
14335 InvalidValuesError - if any of the input parameters contain an invalid value.              </li>
14336               <li>
14337 UnknownError - if any other error occurs.              </li>
14338             </ul>
14339            </description>
14340             <version>
14341  1.0
14342             </version>
14343             <privilegelevel>
14344  public
14345             </privilegelevel>
14346             <privilege>
14347  http://tizen.org/privilege/calendar.read
14348             </privilege>
14349             <Code>  var calendar;
14350
14351   function eventFoundCallback(events) {
14352     // The event has been successfully found
14353     // Changes the summary
14354     events[0].summary = 'HTML6 Webinar'; 
14355     calendar.update(events[0]);
14356     console.log('First event was updated!');
14357   }
14358
14359   // Defines the error callback for all the asynchronous calls
14360   function errorCallback(response) {
14361     console.log( 'The following error occurred: ' +  response.name);
14362   }
14363
14364   // Defines the success callback for retrieving the list of calendars
14365   function calendarListCallback(calendars) {
14366     if(calendars.length > 0) {
14367       calendar = calendars[0];
14368       console.log('The calendar id is ' + calendar.id + ' and name ' + calendar.name);
14369
14370       var ev = new tizen.CalendarEvent({description:'HTML5 Introduction',
14371                                          summary:'HTML5 Webinar', 
14372                                          startDate: new tizen.TZDate(2011, 3, 30, 10, 0), 
14373                                          duration: new tizen.TimeDuration(1, &quot;HOURS&quot;),
14374                                          location:'Huesca'});
14375       calendar.add(ev);
14376
14377       // The event has been successfully added
14378       // Checks if the added event can be retrieved from the calendar
14379       // If the calendar was empty, only the item added through add() should be returned
14380       var filter = new tizen.AttributeFilter('summary', 'CONTAINS', 'HTML5');
14381       calendar.find(eventFoundCallback, errorCallback, filter);
14382     }
14383   }
14384
14385   // Gets a list of available calendars
14386   tizen.calendar.getCalendars(&quot;EVENT&quot;, calendarListCallback, errorCallback);
14387  </Code>
14388         </descriptive>
14389         <Type type="void"/>
14390         <ArgumentList>
14391           <Argument name="type">
14392             <descriptive>
14393                 <description><p>
14394  The type of calendar.
14395                 </p></description>
14396             </descriptive>
14397             <Type name="CalendarType"/>
14398           </Argument>
14399           <Argument name="successCallback">
14400             <descriptive>
14401                 <description><p>
14402  The method to invoke when the invocation ends successfully.
14403                 </p></description>
14404             </descriptive>
14405             <Type name="CalendarArraySuccessCallback"/>
14406           </Argument>
14407           <Argument optional="optional" name="errorCallback">
14408             <descriptive>
14409                 <description><p>
14410  The method to invoke when an error occurs. 
14411                 </p></description>
14412             </descriptive>
14413             <Type name="ErrorCallback" nullable="nullable"/>
14414           </Argument>
14415         </ArgumentList>
14416         <Raises>
14417           <RaiseException name="WebAPIException">
14418             <descriptive>
14419                 <description><p>
14420  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
14421                 </p></description>
14422                 <description><p>
14423  with error type SecurityError, if the application does not have the privilege to call this method.
14424                 </p></description>
14425                 <description><p>
14426  with error type NotSupportedError, if this feature is not supported.
14427                 </p></description>
14428             </descriptive>
14429           </RaiseException>
14430         </Raises>
14431       </Operation>
14432       <Operation name="getUnifiedCalendar" id="::Calendar::CalendarManager::getUnifiedCalendar">
14433         <webidl>    <ref>Calendar</ref> getUnifiedCalendar(<ref>CalendarType</ref> type) raises(<ref>WebAPIException</ref>);</webidl>
14434         <descriptive>
14435             <brief>
14436  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>.
14437             </brief>
14438            <description>
14439             <p>
14440 If an item is added to the unified calendar, it will be saved in the default calendar.
14441             </p>
14442            </description>
14443             <version>
14444  2.1
14445             </version>
14446             <privilegelevel>
14447  public
14448             </privilegelevel>
14449             <privilege>
14450  http://tizen.org/privilege/calendar.read
14451             </privilege>
14452             <Code>  var unifiedCalendar;
14453
14454   // Defines the error callback for all the asynchronous calls
14455   function errorCallback(response) {
14456     console.log( 'The following error occurred: ' +  response.name);
14457   }
14458
14459   function eventFoundCallback(events) {
14460     // The event has been successfully found
14461     // Changes the summary
14462     events[0].summary = 'HTML6 Webinar'; 
14463     unifiedCalendar.update(events[0]);
14464     console.log('First event was updated!');
14465   }
14466
14467   // Gets the unified calendar
14468   unifiedCalendar = tizen.calendar.getUnifiedCalendar(&quot;EVENT&quot;);
14469
14470   var ev = new tizen.CalendarEvent({description:'HTML5 Introduction', 
14471                                     summary:'HTML5 Webinar ', 
14472                                     startDate: new tizen.TZDate(2011, 3, 30, 10, 0), 
14473                                     duration: new tizen.TimeDuration(1, &quot;HOURS&quot;),
14474                                     location:'Huesca'});
14475
14476   unifiedCalendar.add(ev);
14477    
14478   // The event has been added
14479   // Checks if the added event can be retrieved from the calendar
14480   // If the calendar was empty, only the item added through add() should be returned
14481   var filter = new tizen.AttributeFilter('summary', 'CONTAINS', 'HTML5');
14482   unifiedCalendar.find(eventFoundCallback, errorCallback, filter);
14483      
14484 </Code>
14485         </descriptive>
14486         <Type name="Calendar">
14487           <descriptive>
14488               <description><p>
14489  Calendar The unified Calendar object.
14490               </p></description>
14491           </descriptive>
14492         </Type>
14493         <ArgumentList>
14494           <Argument name="type">
14495             <descriptive>
14496                 <description><p>
14497  The type of a calendar.
14498                 </p></description>
14499             </descriptive>
14500             <Type name="CalendarType"/>
14501           </Argument>
14502         </ArgumentList>
14503         <Raises>
14504           <RaiseException name="WebAPIException">
14505             <descriptive>
14506                 <description><p>
14507  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
14508                 </p></description>
14509                 <description><p>
14510  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
14511                 </p></description>
14512                 <description><p>
14513  with error type SecurityError, if the application does not have the privilege to call this method.
14514                 </p></description>
14515                 <description><p>
14516  with error type NotSupportedError, if this feature is not supported.
14517                 </p></description>
14518                 <description><p>
14519  with error type UnknownError, if any other error occurs.
14520                 </p></description>
14521             </descriptive>
14522           </RaiseException>
14523         </Raises>
14524       </Operation>
14525       <Operation name="getDefaultCalendar" id="::Calendar::CalendarManager::getDefaultCalendar">
14526         <webidl>    <ref>Calendar</ref> getDefaultCalendar(<ref>CalendarType</ref> type) raises(<ref>WebAPIException</ref>);</webidl>
14527         <descriptive>
14528             <brief>
14529  Gets the default calendar, which is used for new items.
14530             </brief>
14531             <version>
14532  1.0
14533             </version>
14534             <privilegelevel>
14535  public
14536             </privilegelevel>
14537             <privilege>
14538  http://tizen.org/privilege/calendar.read
14539             </privilege>
14540             <Code>  var myCalendar;
14541
14542   // Defines the error callback for all the asynchronous calls
14543   function errorCallback(response) {
14544     console.log( 'The following error occurred: ' +  response.name);
14545   }
14546
14547   function eventFoundCallback(events) {
14548     // The event has been successfully found
14549     // Changes the summary
14550     events[0].summary = 'HTML6 Webinar'; 
14551     myCalendar.update(events[0]);
14552     console.log('First event was updated!');
14553   }
14554
14555   // Gets the default calendar
14556   myCalendar = tizen.calendar.getDefaultCalendar(&quot;EVENT&quot;);
14557
14558   var ev = new tizen.CalendarEvent({description:'HTML5 Introduction', 
14559                                     summary:'HTML5 Webinar ', 
14560                                     startDate: new tizen.TZDate(2011, 3, 30, 10, 0), 
14561                                     duration: new tizen.TimeDuration(1, &quot;HOURS&quot;),
14562                                     location:'Huesca'});
14563                   
14564   myCalendar.add(ev);
14565    
14566   // The event has been added
14567   // Checks if the added event can be retrieved from the calendar
14568   // If the calendar was empty, only the item added through add() should be returned
14569   var filter = new tizen.AttributeFilter('summary', 'CONTAINS', 'HTML5');
14570   myCalendar.find(eventFoundCallback, errorCallback, filter);
14571      
14572 </Code>
14573         </descriptive>
14574         <Type name="Calendar">
14575           <descriptive>
14576               <description><p>
14577  Calendar The default Calendar object.
14578               </p></description>
14579           </descriptive>
14580         </Type>
14581         <ArgumentList>
14582           <Argument name="type">
14583             <descriptive>
14584                 <description><p>
14585  The type of a calendar.
14586                 </p></description>
14587             </descriptive>
14588             <Type name="CalendarType"/>
14589           </Argument>
14590         </ArgumentList>
14591         <Raises>
14592           <RaiseException name="WebAPIException">
14593             <descriptive>
14594                 <description><p>
14595  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
14596                 </p></description>
14597                 <description><p>
14598  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
14599                 </p></description>
14600                 <description><p>
14601  with error type SecurityError, if the application does not have the privilege to call this method.
14602                 </p></description>
14603                 <description><p>
14604  with error type NotSupportedError, if this feature is not supported.
14605                 </p></description>
14606                 <description><p>
14607  with error type UnknownError, if any other error occurs.
14608                 </p></description>
14609             </descriptive>
14610           </RaiseException>
14611         </Raises>
14612       </Operation>
14613       <Operation name="getCalendar" id="::Calendar::CalendarManager::getCalendar">
14614         <webidl>    <ref>Calendar</ref> getCalendar(<ref>CalendarType</ref> type, <ref>CalendarId</ref> id) raises(<ref>WebAPIException</ref>);</webidl>
14615         <descriptive>
14616             <brief>
14617  Gets the calendar with the specified identifier and type.
14618             </brief>
14619             <version>
14620  1.0
14621             </version>
14622             <privilegelevel>
14623  public
14624             </privilegelevel>
14625             <privilege>
14626  http://tizen.org/privilege/calendar.read
14627             </privilege>
14628             <Code>  var calendarId; // calendarId supposed to be initialized
14629   try {
14630     var calendar = tizen.calendar.getCalendar(&quot;EVENT&quot;, calendarId);
14631     console.log(&quot;Successfully retrieved event calendar with id: &quot; + calendarId);
14632   } catch(err) {
14633     console.log(&quot;Error: &quot; + err.name);
14634   }
14635  </Code>
14636         </descriptive>
14637         <Type name="Calendar">
14638           <descriptive>
14639               <description><p>
14640  Calendar The matching Calendar object.
14641               </p></description>
14642           </descriptive>
14643         </Type>
14644         <ArgumentList>
14645           <Argument name="type">
14646             <descriptive>
14647                 <description><p>
14648  The type of a calendar.
14649                 </p></description>
14650             </descriptive>
14651             <Type name="CalendarType"/>
14652           </Argument>
14653           <Argument name="id">
14654             <descriptive>
14655                 <description><p>
14656  The calendar identifier.
14657                 </p></description>
14658             </descriptive>
14659             <Type name="CalendarId"/>
14660           </Argument>
14661         </ArgumentList>
14662         <Raises>
14663           <RaiseException name="WebAPIException">
14664             <descriptive>
14665                 <description><p>
14666  with error type NotFoundError, if there is no calendar with the given identifier.  
14667                 </p></description>
14668                 <description><p>
14669  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
14670                 </p></description>
14671                 <description><p>
14672  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
14673                 </p></description>
14674                 <description><p>
14675  with error type SecurityError, if the application does not have the privilege to call this method.
14676                 </p></description>
14677                 <description><p>
14678  with error type NotSupportedError, if this feature is not supported.
14679                 </p></description>
14680                 <description><p>
14681  with error type UnknownError, if any other error occurs.
14682                 </p></description>
14683             </descriptive>
14684           </RaiseException>
14685         </Raises>
14686       </Operation>
14687     </Interface>
14688     <Interface name="Calendar" id="::Calendar::Calendar">
14689       <webidl>  [NoInterfaceObject] interface Calendar {
14690     
14691     readonly attribute <ref>CalendarId</ref> id;
14692
14693     readonly attribute DOMString name;
14694                               
14695     <ref>CalendarItem</ref> get(<ref>CalendarItemId</ref> id) raises(<ref>WebAPIException</ref>);
14696
14697     void add(<ref>CalendarItem</ref> item) raises(<ref>WebAPIException</ref>);
14698
14699     void addBatch(<ref>CalendarItem</ref>[] items,
14700                   optional <ref>CalendarItemArraySuccessCallback</ref>? successCallback,
14701                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
14702
14703     void update(<ref>CalendarItem</ref> item,
14704                 optional boolean? updateAllInstances) raises(<ref>WebAPIException</ref>);
14705
14706      void updateBatch(<ref>CalendarItem</ref>[] items,
14707                      optional <ref>SuccessCallback</ref>? successCallback,
14708                      optional <ref>ErrorCallback</ref>? errorCallback,
14709                      optional boolean? updateAllInstances) raises(<ref>WebAPIException</ref>);
14710
14711     void remove(<ref>CalendarItemId</ref> id) raises(<ref>WebAPIException</ref>);
14712
14713     void removeBatch(<ref>CalendarItemId</ref>[] ids,
14714                      optional <ref>SuccessCallback</ref>? successCallback,
14715                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
14716  
14717     void find(<ref>CalendarItemArraySuccessCallback</ref> successCallback,
14718               optional <ref>ErrorCallback</ref>? errorCallback,
14719               optional <ref>AbstractFilter</ref>? filter,
14720               optional <ref>SortMode</ref>? sortMode) raises(<ref>WebAPIException</ref>);
14721                                 
14722     long addChangeListener(<ref>CalendarChangeCallback</ref> successCallback) raises(<ref>WebAPIException</ref>);
14723                       
14724     void removeChangeListener(long watchId) raises(<ref>WebAPIException</ref>);
14725   };</webidl>
14726       <descriptive>
14727           <brief>
14728  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.
14729           </brief>
14730          <description>
14731           <p>
14732 This interface offers the following methods to manage events in a calendar:
14733           </p>
14734           <ul>
14735             <li>
14736  Finding items using a key-value filter.            </li>
14737             <li>
14738  Adding items to a specific calendar using <em>add() </em>/ <em>addBatch() </em>methods.            </li>
14739             <li>
14740  Updating existing items using <em>update() </em>/ <em>updateBatch()</em> methods.            </li>
14741             <li>
14742  Deleting existing items using <em>remove()</em> / <em>removeBatch() </em>methods.            </li>
14743             <li>
14744  Tracking calendar changes using <em>addChangeListener()</em> / <em>removeChangeListener() </em>methods.            </li>
14745           </ul>
14746          </description>
14747           <version>
14748  1.0
14749           </version>
14750       </descriptive>
14751       <ExtendedAttributeList>
14752         <ExtendedAttribute name="NoInterfaceObject">
14753           <webidl>NoInterfaceObject</webidl>
14754         </ExtendedAttribute>
14755       </ExtendedAttributeList>
14756       <Attribute readonly="readonly" name="id" id="::Calendar::Calendar::id">
14757         <webidl>    readonly attribute <ref>CalendarId</ref> id;</webidl>
14758         <descriptive>
14759             <brief>
14760  An attribute to uniquely identify a calendar.
14761             </brief>
14762             <version>
14763  1.0
14764             </version>
14765         </descriptive>
14766         <Type name="CalendarId"/>
14767       </Attribute>
14768       <Attribute readonly="readonly" name="name" id="::Calendar::Calendar::name">
14769         <webidl>    readonly attribute DOMString name;</webidl>
14770         <descriptive>
14771             <brief>
14772  An attribute to assign a readable (descriptive) name for a calendar, such as work, personal, etc.
14773             </brief>
14774             <version>
14775  1.0
14776             </version>
14777             <Code>  // Gets the default calendar and show its name
14778   var calendar = tizen.calendar.getDefaultCalendar(&quot;EVENT&quot;);
14779   console.log('The calendar name is ' + calendar.name);
14780  </Code>
14781         </descriptive>
14782         <Type type="DOMString"/>
14783       </Attribute>
14784       <Operation name="get" id="::Calendar::Calendar::get">
14785         <webidl>    <ref>CalendarItem</ref> get(<ref>CalendarItemId</ref> id) raises(<ref>WebAPIException</ref>);</webidl>
14786         <descriptive>
14787             <brief>
14788  Gets the calendar item with the specified identifier.
14789             </brief>
14790             <version>
14791  1.0
14792             </version>
14793             <privilegelevel>
14794  public
14795             </privilegelevel>
14796             <privilege>
14797  http://tizen.org/privilege/calendar.read
14798             </privilege>
14799             <Code>  var myCalendar; // Calendar supposed to be initialized
14800   var itemId; // Calendar item identifier
14801   try {
14802     var item = myCalendar.get(itemId);
14803     console.log(&quot;Successfully retrieved item with id: &quot; + itemId);
14804   } catch(err) {
14805     console.log(&quot;Error: &quot; + err.name);
14806   }
14807  </Code>
14808         </descriptive>
14809         <Type name="CalendarItem">
14810           <descriptive>
14811               <description><p>
14812  CalendarItem The matching <em>CalendarItem </em>object.
14813               </p></description>
14814           </descriptive>
14815         </Type>
14816         <ArgumentList>
14817           <Argument name="id">
14818             <descriptive>
14819                 <description><p>
14820  The Calendar item identifier.
14821                 </p></description>
14822             </descriptive>
14823             <Type name="CalendarItemId"/>
14824           </Argument>
14825         </ArgumentList>
14826         <Raises>
14827           <RaiseException name="WebAPIException">
14828             <descriptive>
14829                 <description><p>
14830  with error type NotFoundError, if there is no calendar item with the given identifier.
14831                 </p></description>
14832                 <description><p>
14833  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
14834                 </p></description>
14835                 <description><p>
14836  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
14837                 </p></description>
14838                 <description><p>
14839  with error type SecurityError, if the application does not have the privilege to call this method.
14840                 </p></description>
14841                 <description><p>
14842  with error type NotSupportedError, if this feature is not supported.
14843                 </p></description>
14844                 <description><p>
14845  with error type UnknownError, if any other error occurs.
14846                 </p></description>
14847             </descriptive>
14848           </RaiseException>
14849         </Raises>
14850       </Operation>
14851       <Operation name="add" id="::Calendar::Calendar::add">
14852         <webidl>    void add(<ref>CalendarItem</ref> item) raises(<ref>WebAPIException</ref>);</webidl>
14853         <descriptive>
14854             <brief>
14855  Adds an item to the calendar synchronously.
14856             </brief>
14857            <description>
14858             <p>
14859 If the item is successfully inserted in the calendar, the <em>CalendarItem </em>will have its identifier (id attribute) set when the method returns.
14860             </p>
14861             <p>
14862 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.
14863             </p>
14864            </description>
14865             <version>
14866  1.0
14867             </version>
14868             <privilegelevel>
14869  public
14870             </privilegelevel>
14871             <privilege>
14872  http://tizen.org/privilege/calendar.write
14873             </privilege>
14874             <Code>  // Gets the default calendar
14875   var calendar = tizen.calendar.getDefaultCalendar(&quot;EVENT&quot;);
14876   
14877   var ev = new tizen.CalendarEvent({description:'HTML5 Introduction', 
14878                                    summary:'HTML5 Webinar ', 
14879                                    startDate: new tizen.TZDate(2011, 3, 30, 10, 0), 
14880                                    duration: new tizen.TimeDuration(1, &quot;HOURS&quot;),
14881                                    location:'Huesca'});
14882                  
14883   calendar.add(ev);
14884   console.log('Event added with uid ' + ev.id.uid);
14885  </Code>
14886         </descriptive>
14887         <Type type="void"/>
14888         <ArgumentList>
14889           <Argument name="item">
14890             <descriptive>
14891                 <description><p>
14892  The calendar item to be added.
14893                 </p></description>
14894             </descriptive>
14895             <Type name="CalendarItem"/>
14896           </Argument>
14897         </ArgumentList>
14898         <Raises>
14899           <RaiseException name="WebAPIException">
14900             <descriptive>
14901                 <description><p>
14902  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
14903                 </p></description>
14904                 <description><p>
14905  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
14906                 </p></description>
14907                 <description><p>
14908  with error type SecurityError, if the application does not have the privilege to call this method.
14909                 </p></description>
14910                 <description><p>
14911  with error type NotSupportedError, if the feature is not supported.
14912                 </p></description>
14913                 <description><p>
14914  with error type UnknownError, if any other error occurs.
14915                 </p></description>
14916             </descriptive>
14917           </RaiseException>
14918         </Raises>
14919       </Operation>
14920       <Operation name="addBatch" id="::Calendar::Calendar::addBatch">
14921         <webidl>    void addBatch(<ref>CalendarItem</ref>[] items,
14922                   optional <ref>CalendarItemArraySuccessCallback</ref>? successCallback,
14923                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
14924         <descriptive>
14925             <brief>
14926  Adds an array of items to the calendar asynchronously.
14927             </brief>
14928            <description>
14929             <p>
14930 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).
14931             </p>
14932             <p>
14933 The <em>errorCallback()</em> is launched with these error types:
14934             </p>
14935             <ul>
14936               <li>
14937 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>
14938               <li>
14939 UnknownError - if any other error occurs.               </li>
14940             </ul>
14941             <p>
14942 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.
14943             </p>
14944            </description>
14945             <version>
14946  1.0
14947             </version>
14948             <privilegelevel>
14949  public
14950             </privilegelevel>
14951             <privilege>
14952  http://tizen.org/privilege/calendar.write
14953             </privilege>
14954             <Code>  // Defines the error callback.
14955   function errorCallback(response) {
14956     console.log( 'The following error occurred: ' +  response.name);
14957   }
14958
14959   function addEventsSuccess(events) {
14960     console.log(&quot;Successfully added &quot; + events.length + &quot; events!&quot;);
14961   }
14962
14963   // Gets the default calendar
14964   var calendar = tizen.calendar.getDefaultCalendar(&quot;EVENT&quot;);
14965   
14966   var ev = new tizen.CalendarEvent({description:'HTML5 Introduction', 
14967                                    summary:'HTML5 Webinar ', 
14968                                    startDate: new tizen.TZDate(2011, 3, 30, 10, 0), 
14969                                    duration: new tizen.TimeDuration(1, &quot;HOURS&quot;),
14970                                    location:'Huesca'});
14971                  
14972   calendar.addBatch([ev], addEventsSuccess, errorCallback);
14973  </Code>
14974         </descriptive>
14975         <Type type="void"/>
14976         <ArgumentList>
14977           <Argument name="items">
14978             <descriptive>
14979                 <description><p>
14980  The list of calendar items to add.
14981                 </p></description>
14982             </descriptive>
14983             <Type type="array">
14984               <Type name="CalendarItem"/>
14985             </Type>
14986           </Argument>
14987           <Argument optional="optional" name="successCallback">
14988             <descriptive>
14989                 <description><p>
14990  The method to call when the invocation ends successfully.
14991                 </p></description>
14992             </descriptive>
14993             <Type name="CalendarItemArraySuccessCallback" nullable="nullable"/>
14994           </Argument>
14995           <Argument optional="optional" name="errorCallback">
14996             <descriptive>
14997                 <description><p>
14998  The method to invoke when the request fails.
14999                 </p></description>
15000             </descriptive>
15001             <Type name="ErrorCallback" nullable="nullable"/>
15002           </Argument>
15003         </ArgumentList>
15004         <Raises>
15005           <RaiseException name="WebAPIException">
15006             <descriptive>
15007                 <description><p>
15008  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
15009                 </p></description>
15010                 <description><p>
15011  with error type SecurityError, if the application does not have the privilege to call this method.
15012                 </p></description>
15013                 <description><p>
15014  with error type NotSupportedError, if the feature is not supported.
15015                 </p></description>
15016             </descriptive>
15017           </RaiseException>
15018         </Raises>
15019       </Operation>
15020       <Operation name="update" id="::Calendar::Calendar::update">
15021         <webidl>    void update(<ref>CalendarItem</ref> item,
15022                 optional boolean? updateAllInstances) raises(<ref>WebAPIException</ref>);</webidl>
15023         <descriptive>
15024             <brief>
15025  Updates an existing item in the calendar synchronously with the one specified in the argument.
15026             </brief>
15027            <description>
15028             <p>
15029 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>.
15030             </p>
15031            </description>
15032             <version>
15033  1.0
15034             </version>
15035             <privilegelevel>
15036  public
15037             </privilegelevel>
15038             <privilege>
15039  http://tizen.org/privilege/calendar.write
15040             </privilege>
15041             <Code>  var myCalendar;
15042
15043   // Defines the error callback.
15044   function errorCallback(response) {
15045     console.log( 'The following error occurred: ' +  response.name);
15046   }
15047
15048   // Defines the event success callback.
15049   function eventSearchSuccessCallback(events) {
15050     events[0].description = 'New Description';
15051     // Updates the first existing event.
15052     myCalendar.update(events[0]);
15053     console.log(&quot;The first item description was updated!&quot;);
15054   }
15055   
15056   // Gets the default calendar
15057   myCalendar = tizen.calendar.getDefaultCalendar(&quot;EVENT&quot;);
15058
15059   // Finds all events in a Calendar
15060   myCalendar.find(eventSearchSuccessCallback, errorCallback);
15061  </Code>
15062         </descriptive>
15063         <Type type="void"/>
15064         <ArgumentList>
15065           <Argument name="item">
15066             <descriptive>
15067                 <description><p>
15068  The Item object to update.
15069                 </p></description>
15070             </descriptive>
15071             <Type name="CalendarItem"/>
15072           </Argument>
15073           <Argument optional="optional" name="updateAllInstances">
15074             <descriptive>
15075                 <description><p>
15076  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.
15077                 </p></description>
15078             </descriptive>
15079             <Type type="boolean" nullable="nullable"/>
15080           </Argument>
15081         </ArgumentList>
15082         <Raises>
15083           <RaiseException name="WebAPIException">
15084             <descriptive>
15085                 <description><p>
15086  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
15087                 </p></description>
15088                 <description><p>
15089  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
15090                 </p></description>
15091                 <description><p>
15092  with error type SecurityError, if the application does not have the privilege to call this method.
15093                 </p></description>
15094                 <description><p>
15095  with error type NotSupportedError, if the feature is not supported.
15096                 </p></description>
15097                 <description><p>
15098  with error type UnknownError, if any other error occurs.
15099                 </p></description>
15100             </descriptive>
15101           </RaiseException>
15102         </Raises>
15103       </Operation>
15104       <Operation name="updateBatch" id="::Calendar::Calendar::updateBatch">
15105         <webidl>     void updateBatch(<ref>CalendarItem</ref>[] items,
15106                      optional <ref>SuccessCallback</ref>? successCallback,
15107                      optional <ref>ErrorCallback</ref>? errorCallback,
15108                      optional boolean? updateAllInstances) raises(<ref>WebAPIException</ref>);</webidl>
15109         <descriptive>
15110             <brief>
15111  Updates an array of existing items in the calendar asynchronously with the specified values in the argument.
15112             </brief>
15113            <description>
15114             <p>
15115 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.
15116             </p>
15117             <p>
15118 The <em>errorCallback() </em>is launched with these error types:
15119             </p>
15120             <ul>
15121               <li>
15122 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>
15123               <li>
15124 UnknownError - if any other error occurs.              </li>
15125             </ul>
15126            </description>
15127             <version>
15128  1.0
15129             </version>
15130             <privilegelevel>
15131  public
15132             </privilegelevel>
15133             <privilege>
15134  http://tizen.org/privilege/calendar.write
15135             </privilege>
15136             <Code>  var myCalendar;
15137
15138   // Defines the error callback.
15139   function errorCallback(response) {
15140     console.log( 'The following error occurred: ' +  response.name);
15141   }
15142
15143   // Defines the success callback
15144   function updateEventsSuccess() {
15145     console.log(&quot;Successfully updated !&quot; );
15146   }
15147
15148   // Defines the event success callback.
15149   function eventSearchSuccessCallback(events) {
15150     events[0].description = 'New Description 1';
15151     events[1].description = 'New Description 2';
15152     // Update the first two existing events.
15153     myCalendar.updateBatch(events.slice(0,2), updateEventsSuccess, errorCallback);
15154   }
15155
15156   // Gets the default calendar
15157   myCalendar = tizen.calendar.getDefaultCalendar(&quot;EVENT&quot;);
15158
15159   // Finds all events in Calendar
15160   myCalendar.find(eventSearchSuccessCallback, errorCallback);
15161  </Code>
15162         </descriptive>
15163         <Type type="void"/>
15164         <ArgumentList>
15165           <Argument name="items">
15166             <descriptive>
15167                 <description><p>
15168  The list of calendar item objects to update.
15169                 </p></description>
15170             </descriptive>
15171             <Type type="array">
15172               <Type name="CalendarItem"/>
15173             </Type>
15174           </Argument>
15175           <Argument optional="optional" name="successCallback">
15176             <descriptive>
15177                 <description><p>
15178  The method to invoke when the <em>updateEvents() </em>request succeeds.
15179                 </p></description>
15180             </descriptive>
15181             <Type name="SuccessCallback" nullable="nullable"/>
15182           </Argument>
15183           <Argument optional="optional" name="errorCallback">
15184             <descriptive>
15185                 <description><p>
15186  The method to invoke when the <em>updateEvents() </em>request fails.
15187                 </p></description>
15188             </descriptive>
15189             <Type name="ErrorCallback" nullable="nullable"/>
15190           </Argument>
15191           <Argument optional="optional" name="updateAllInstances">
15192             <descriptive>
15193                 <description><p>
15194  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.
15195                 </p></description>
15196             </descriptive>
15197             <Type type="boolean" nullable="nullable"/>
15198           </Argument>
15199         </ArgumentList>
15200         <Raises>
15201           <RaiseException name="WebAPIException">
15202             <descriptive>
15203                 <description><p>
15204  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
15205                 </p></description>
15206                 <description><p>
15207  with error type SecurityError, if the application does not have the privilege to call this method.
15208                 </p></description>
15209                 <description><p>
15210  with error type NotSupportedError, if the feature is not supported.
15211                 </p></description>
15212             </descriptive>
15213           </RaiseException>
15214         </Raises>
15215       </Operation>
15216       <Operation name="remove" id="::Calendar::Calendar::remove">
15217         <webidl>    void remove(<ref>CalendarItemId</ref> id) raises(<ref>WebAPIException</ref>);</webidl>
15218         <descriptive>
15219             <brief>
15220  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.
15221             </brief>
15222             <version>
15223  1.0
15224             </version>
15225             <privilegelevel>
15226  public
15227             </privilegelevel>
15228             <privilege>
15229  http://tizen.org/privilege/calendar.write
15230             </privilege>
15231             <remark>
15232  <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.
15233             </remark>
15234             <Code>  var myCalendar;
15235
15236   // Defines the error callback.
15237   function errorCallback(response) {
15238     console.log( 'The following error occurred: ' +  response.name);
15239   }
15240
15241   // Defines the event success callback.
15242   function eventSearchSuccessCallback(events) {
15243     // Deletes the first existing event.
15244     myCalendar.remove(events[0].id);
15245     console.log('The first event was removed');
15246   }
15247
15248   // Gets default calendar
15249   myCalendar = tizen.calendar.getDefaultCalendar(&quot;EVENT&quot;);
15250   
15251   // Finds all events in Calendar
15252   myCalendar.find(eventSearchSuccessCallback, errorCallback);
15253  </Code>
15254         </descriptive>
15255         <Type type="void"/>
15256         <ArgumentList>
15257           <Argument name="id">
15258             <descriptive>
15259                 <description><p>
15260  The identifier (ID attribute) of the item object to delete.
15261                 </p></description>
15262             </descriptive>
15263             <Type name="CalendarItemId"/>
15264           </Argument>
15265         </ArgumentList>
15266         <Raises>
15267           <RaiseException name="WebAPIException">
15268             <descriptive>
15269                 <description><p>
15270  with error type NotFoundError, if the identifier does not match any item in the calendar.
15271                 </p></description>
15272                 <description><p>
15273  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
15274                 </p></description>
15275                 <description><p>
15276  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
15277                 </p></description>
15278                 <description><p>
15279  with error type SecurityError, if the application does not have the privilege to call this method.
15280                 </p></description>
15281                 <description><p>
15282  with error type NotSupportedError, if the feature is not supported.
15283                 </p></description>
15284                 <description><p>
15285  with error type UnknownError, if the item could not be removed because of an unknown error.
15286                 </p></description>
15287             </descriptive>
15288           </RaiseException>
15289         </Raises>
15290       </Operation>
15291       <Operation name="removeBatch" id="::Calendar::Calendar::removeBatch">
15292         <webidl>    void removeBatch(<ref>CalendarItemId</ref>[] ids,
15293                      optional <ref>SuccessCallback</ref>? successCallback,
15294                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
15295         <descriptive>
15296             <brief>
15297  Removes several items from the calendar asynchronously depending on the specified identifiers.
15298             </brief>
15299            <description>
15300             <p>
15301 The errorCallback is launched with these error types:
15302             </p>
15303             <ul>
15304               <li>
15305 NotFoundError - if an identifier in the <em>ids </em>parameter does not correspond to the ID attribute of an item in the calendar.              </li>
15306               <li>
15307 InvalidValuesError - if any of the input parameters contain an invalid value.              </li>
15308               <li>
15309 UnknownError - if any other error occurs.              </li>
15310             </ul>
15311            </description>
15312             <version>
15313  1.0
15314             </version>
15315             <privilegelevel>
15316  public
15317             </privilegelevel>
15318             <privilege>
15319  http://tizen.org/privilege/calendar.write
15320             </privilege>
15321             <remark>
15322  <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.
15323             </remark>
15324             <Code>  var myCalendar;
15325
15326   // Defines the error callback.
15327   function errorCallback(response) {
15328     console.log( 'The following error occurred: ' +  response.name);
15329   }
15330
15331   // Defines the removeBatch callback
15332   function removeBatchCallback() {
15333     console.log(&quot;Requested events were successfully removed.&quot;);
15334   }
15335
15336   // Defines the event search success callback.
15337   function eventSearchSuccessCallback(events) {
15338     // Deletes the first two existing events.
15339     myCalendar.removeBatch([events[0].id, events[1].id], 
15340                            removeBatchCallback, 
15341                            errorCallback);
15342   }
15343
15344   // Gets default calendar
15345   myCalendar = tizen.calendar.getDefaultCalendar(&quot;EVENT&quot;);
15346     
15347   // Retrieves all events in Calendar
15348   myCalendar.find(eventSearchSuccessCallback, errorCallback);
15349  </Code>
15350         </descriptive>
15351         <Type type="void"/>
15352         <ArgumentList>
15353           <Argument name="ids">
15354             <descriptive>
15355                 <description><p>
15356  The identifiers (<em>id </em>attribute) of the items to delete.
15357                 </p></description>
15358             </descriptive>
15359             <Type type="array">
15360               <Type name="CalendarItemId"/>
15361             </Type>
15362           </Argument>
15363           <Argument optional="optional" name="successCallback">
15364             <descriptive>
15365                 <description><p>
15366  The method to invoke when the <em>removeBatch()</em> request succeeds.
15367                 </p></description>
15368             </descriptive>
15369             <Type name="SuccessCallback" nullable="nullable"/>
15370           </Argument>
15371           <Argument optional="optional" name="errorCallback">
15372             <descriptive>
15373                 <description><p>
15374  The method to invoke when the <em>removeBatch()</em> request fails.
15375                 </p></description>
15376             </descriptive>
15377             <Type name="ErrorCallback" nullable="nullable"/>
15378           </Argument>
15379         </ArgumentList>
15380         <Raises>
15381           <RaiseException name="WebAPIException">
15382             <descriptive>
15383                 <description><p>
15384  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
15385                 </p></description>
15386                 <description><p>
15387  with error type SecurityError, if the application does not have the privilege to call this method.
15388                 </p></description>
15389                 <description><p>
15390  with error type NotSupportedError, if the feature is not supported.
15391                 </p></description>
15392             </descriptive>
15393           </RaiseException>
15394         </Raises>
15395       </Operation>
15396       <Operation name="find" id="::Calendar::Calendar::find">
15397         <webidl>    void find(<ref>CalendarItemArraySuccessCallback</ref> successCallback,
15398               optional <ref>ErrorCallback</ref>? errorCallback,
15399               optional <ref>AbstractFilter</ref>? filter,
15400               optional <ref>SortMode</ref>? sortMode) raises(<ref>WebAPIException</ref>);</webidl>
15401         <descriptive>
15402             <brief>
15403  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.
15404             </brief>
15405            <description>
15406             <p>
15407 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>.
15408 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>.
15409 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.
15410             </p>
15411             <p>
15412 The errorCallback is launched with these error types:
15413             </p>
15414             <ul>
15415               <li>
15416 InvalidValuesError - if any of the input parameters contain an invalid value.              </li>
15417               <li>
15418 UnknownError - if any other error occurs.              </li>
15419             </ul>
15420             <p>
15421 <b>Filter specific remarks:</b>            </p>
15422             <ul>
15423               <li>
15424 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>
15425               <li>
15426 For event filtering based on the identifier, the identifier type should be CalendarEventID (<em>uid</em> and <em>rid</em>).
15427 If no recurrence ID is given, the filter will match both the parent event and all its detached instances.              </li>
15428             </ul>
15429            </description>
15430             <version>
15431  1.0
15432             </version>
15433             <privilegelevel>
15434  public
15435             </privilegelevel>
15436             <privilege>
15437  http://tizen.org/privilege/calendar.read
15438             </privilege>
15439             <Code>  // Defines the error callback.
15440   function errorCallback(response) {
15441     console.log( 'The following error occurred: ' +  response.name);
15442   }
15443
15444   // Defines the event search success callback.
15445   function eventSearchSuccessCallback(events) {
15446     console.log(events.length + ' results found.');
15447   }
15448
15449   // Gets default calendar
15450   var calendar = tizen.calendar.getDefaultCalendar(&quot;EVENT&quot;);
15451   
15452   // Finds all events the calendar that contain in the summary the string Tizen.
15453   var filter = new tizen.AttributeFilter('summary', 'CONTAINS', 'Tizen');
15454
15455   // The events returned by the find() query will be sorted by ascending summary
15456   var sortingMode = new tizen.SortMode('summary', 'ASC');
15457                         
15458   calendar.find(eventSearchSuccessCallback, errorCallback, filter, sortingMode);
15459  </Code>
15460         </descriptive>
15461         <Type type="void"/>
15462         <ArgumentList>
15463           <Argument name="successCallback">
15464             <descriptive>
15465                 <description><p>
15466  The method to call when the invocation ends successfully.
15467                 </p></description>
15468             </descriptive>
15469             <Type name="CalendarItemArraySuccessCallback"/>
15470           </Argument>
15471           <Argument optional="optional" name="errorCallback">
15472             <descriptive>
15473                 <description><p>
15474  The method to call when an error occurs.
15475                 </p></description>
15476             </descriptive>
15477             <Type name="ErrorCallback" nullable="nullable"/>
15478           </Argument>
15479           <Argument optional="optional" name="filter">
15480             <descriptive>
15481                 <description><p>
15482  The supplied data used to filter the results of the <em>find() </em>method.
15483                 </p></description>
15484             </descriptive>
15485             <Type name="AbstractFilter" nullable="nullable"/>
15486           </Argument>
15487           <Argument optional="optional" name="sortMode">
15488             <descriptive>
15489                 <description><p>
15490  The sort order in which the items return.
15491                 </p></description>
15492             </descriptive>
15493             <Type name="SortMode" nullable="nullable"/>
15494           </Argument>
15495         </ArgumentList>
15496         <Raises>
15497           <RaiseException name="WebAPIException">
15498             <descriptive>
15499                 <description><p>
15500  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
15501                 </p></description>
15502                 <description><p>
15503  with error type SecurityError, if the application does not have the privilege to call this method.
15504                 </p></description>
15505                 <description><p>
15506  with error type NotSupportedError, if the feature is not supported.
15507                 </p></description>
15508             </descriptive>
15509           </RaiseException>
15510         </Raises>
15511       </Operation>
15512       <Operation name="addChangeListener" id="::Calendar::Calendar::addChangeListener">
15513         <webidl>    long addChangeListener(<ref>CalendarChangeCallback</ref> successCallback) raises(<ref>WebAPIException</ref>);</webidl>
15514         <descriptive>
15515             <brief>
15516  Adds a listener to receive notifications about calendar changes.
15517             </brief>
15518            <description>
15519             <p>
15520 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.
15521             </p>
15522            </description>
15523             <version>
15524  1.0
15525             </version>
15526             <privilegelevel>
15527  public
15528             </privilegelevel>
15529             <privilege>
15530  http://tizen.org/privilege/calendar.read
15531             </privilege>
15532             <Code>  var watcherId = 0; // watcher identifier
15533   var calendar; // This example assumes calendar is initialized
15534
15535   var watcher = {
15536     onitemsadded: function(items) {
15537       console.log(items.length + ' items were added');
15538     },
15539     onitemsupdated: function(items) {
15540       console.log(items.length + ' items were updated');
15541     },
15542     onitemsremoved: function(ids) {
15543       console.log(ids.length + ' items were removed');
15544     }
15545   };
15546
15547   // Registers to be notified when the calendar changes
15548   watcherId = calendar.addChangeListener(watcher);
15549  </Code>
15550         </descriptive>
15551         <Type type="long">
15552           <descriptive>
15553               <description><p>
15554  long The identifier used to clear the watch subscription.
15555               </p></description>
15556           </descriptive>
15557         </Type>
15558         <ArgumentList>
15559           <Argument name="successCallback">
15560             <descriptive>
15561                 <description><p>
15562  The methods to invoke on receiving calendar change notifications.
15563                 </p></description>
15564             </descriptive>
15565             <Type name="CalendarChangeCallback"/>
15566           </Argument>
15567         </ArgumentList>
15568         <Raises>
15569           <RaiseException name="WebAPIException">
15570             <descriptive>
15571                 <description><p>
15572  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
15573                 </p></description>
15574                 <description><p>
15575  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
15576                 </p></description>
15577                 <description><p>
15578  with error type SecurityError, if the application does not have the privilege to call this method.
15579                 </p></description>
15580                 <description><p>
15581  with error type NotSupportedError, if the feature is not supported.
15582                 </p></description>
15583                 <description><p>
15584  with error type UnknownError, if any other error occurs.
15585                 </p></description>
15586             </descriptive>
15587           </RaiseException>
15588         </Raises>
15589       </Operation>
15590       <Operation name="removeChangeListener" id="::Calendar::Calendar::removeChangeListener">
15591         <webidl>    void removeChangeListener(long watchId) raises(<ref>WebAPIException</ref>);</webidl>
15592         <descriptive>
15593             <brief>
15594  Unsubscribes from receiving notification for a calendar item changes.
15595             </brief>
15596            <description>
15597             <p>
15598 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.
15599             </p>
15600            </description>
15601             <version>
15602  1.0
15603             </version>
15604             <privilegelevel>
15605  public
15606             </privilegelevel>
15607             <privilege>
15608  http://tizen.org/privilege/calendar.read
15609             </privilege>
15610             <Code>  var watcherId = 0; // watcher identifier
15611   var calendar; // This example assumes calendar is initialized
15612
15613   // Receives calendar changes
15614   var watcher = {
15615     onitemsadded: function(items) {
15616       console.log(items.length + ' items were added');
15617     },
15618     onitemsupdated: function(items) {
15619       console.log(evitemsents.length + ' items were updated');
15620     },
15621     onitemsremoved: function(ids) {
15622       console.log(ids.length + ' items were removed');
15623     }
15624   };
15625
15626   // Registers to be notified when the calendar changes
15627   watcherId = calendar.addChangeListener(watcher);
15628
15629   // Cancels the watch operation
15630   calendar.removeChangeListener(watcherId);
15631  </Code>
15632         </descriptive>
15633         <Type type="void"/>
15634         <ArgumentList>
15635           <Argument name="watchId">
15636             <descriptive>
15637                 <description><p>
15638  Subscription Identifier.
15639                 </p></description>
15640             </descriptive>
15641             <Type type="long"/>
15642           </Argument>
15643         </ArgumentList>
15644         <Raises>
15645           <RaiseException name="WebAPIException">
15646             <descriptive>
15647                 <description><p>
15648  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
15649                 </p></description>
15650                 <description><p>
15651  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
15652                 </p></description>
15653                 <description><p>
15654  with error type SecurityError, if the application does not have the privilege to call this method.
15655                 </p></description>
15656                 <description><p>
15657  with error type NotSupportedError, if the feature is not supported.
15658                 </p></description>
15659                 <description><p>
15660  with error type UnknownError if any other error occurs.
15661                 </p></description>
15662             </descriptive>
15663           </RaiseException>
15664         </Raises>
15665       </Operation>
15666     </Interface>
15667     <Dictionary name="CalendarItemInit" id="::Calendar::CalendarItemInit">
15668       <webidl>  dictionary CalendarItemInit {
15669     DOMString description;
15670     DOMString summary;
15671     boolean isAllDay;
15672     <ref>TZDate</ref> startDate;
15673     <ref>TimeDuration</ref> duration;
15674     DOMString location;
15675     <ref>SimpleCoordinates</ref> geolocation;
15676     DOMString organizer;
15677     <ref>CalendarItemVisibility</ref> visibility;
15678     <ref>CalendarItemStatus</ref> status;
15679     <ref>CalendarItemPriority</ref> priority;
15680     <ref>CalendarAlarm</ref>[] alarms;
15681     DOMString[] categories;
15682     <ref>CalendarAttendee</ref>[] attendees;
15683   };</webidl>
15684       <descriptive>
15685           <brief>
15686  A dictionary that is used for creating calendar items.
15687           </brief>
15688          <description>
15689           <p>
15690 These attributes are shared by both calendar events and tasks.
15691           </p>
15692          </description>
15693           <version>
15694  1.0
15695           </version>
15696       </descriptive>
15697       <DictionaryMember name="description" id="::Calendar::CalendarItemInit::description">
15698         <webidl>    DOMString description;</webidl>
15699         <Type type="DOMString"/>
15700       </DictionaryMember>
15701       <DictionaryMember name="summary" id="::Calendar::CalendarItemInit::summary">
15702         <webidl>    DOMString summary;</webidl>
15703         <Type type="DOMString"/>
15704       </DictionaryMember>
15705       <DictionaryMember name="isAllDay" id="::Calendar::CalendarItemInit::isAllDay">
15706         <webidl>    boolean isAllDay;</webidl>
15707         <Type type="boolean"/>
15708       </DictionaryMember>
15709       <DictionaryMember name="startDate" id="::Calendar::CalendarItemInit::startDate">
15710         <webidl>    <ref>TZDate</ref> startDate;</webidl>
15711         <Type name="TZDate"/>
15712       </DictionaryMember>
15713       <DictionaryMember name="duration" id="::Calendar::CalendarItemInit::duration">
15714         <webidl>    <ref>TimeDuration</ref> duration;</webidl>
15715         <Type name="TimeDuration"/>
15716       </DictionaryMember>
15717       <DictionaryMember name="location" id="::Calendar::CalendarItemInit::location">
15718         <webidl>    DOMString location;</webidl>
15719         <Type type="DOMString"/>
15720       </DictionaryMember>
15721       <DictionaryMember name="geolocation" id="::Calendar::CalendarItemInit::geolocation">
15722         <webidl>    <ref>SimpleCoordinates</ref> geolocation;</webidl>
15723         <Type name="SimpleCoordinates"/>
15724       </DictionaryMember>
15725       <DictionaryMember name="organizer" id="::Calendar::CalendarItemInit::organizer">
15726         <webidl>    DOMString organizer;</webidl>
15727         <Type type="DOMString"/>
15728       </DictionaryMember>
15729       <DictionaryMember name="visibility" id="::Calendar::CalendarItemInit::visibility">
15730         <webidl>    <ref>CalendarItemVisibility</ref> visibility;</webidl>
15731         <Type name="CalendarItemVisibility"/>
15732       </DictionaryMember>
15733       <DictionaryMember name="status" id="::Calendar::CalendarItemInit::status">
15734         <webidl>    <ref>CalendarItemStatus</ref> status;</webidl>
15735         <Type name="CalendarItemStatus"/>
15736       </DictionaryMember>
15737       <DictionaryMember name="priority" id="::Calendar::CalendarItemInit::priority">
15738         <webidl>    <ref>CalendarItemPriority</ref> priority;</webidl>
15739         <Type name="CalendarItemPriority"/>
15740       </DictionaryMember>
15741       <DictionaryMember name="alarms" id="::Calendar::CalendarItemInit::alarms">
15742         <webidl>    <ref>CalendarAlarm</ref>[] alarms;</webidl>
15743         <Type type="array">
15744           <Type name="CalendarAlarm"/>
15745         </Type>
15746       </DictionaryMember>
15747       <DictionaryMember name="categories" id="::Calendar::CalendarItemInit::categories">
15748         <webidl>    DOMString[] categories;</webidl>
15749         <Type type="array">
15750           <Type type="DOMString"/>
15751         </Type>
15752       </DictionaryMember>
15753       <DictionaryMember name="attendees" id="::Calendar::CalendarItemInit::attendees">
15754         <webidl>    <ref>CalendarAttendee</ref>[] attendees;</webidl>
15755         <Type type="array">
15756           <Type name="CalendarAttendee"/>
15757         </Type>
15758       </DictionaryMember>
15759     </Dictionary>
15760     <Dictionary name="CalendarTaskInit" id="::Calendar::CalendarTaskInit">
15761       <webidl>  dictionary CalendarTaskInit: <ref>CalendarItemInit</ref> {
15762     <ref>TZDate</ref> dueDate;
15763     <ref>TZDate</ref> completedDate;
15764     short progress;
15765   };</webidl>
15766       <descriptive>
15767           <brief>
15768  A dictionary that is used for creating calendar tasks.
15769           </brief>
15770          <description>
15771           <p>
15772 It also provides an interface for specifying task attributes upon task creation (in the <em>CalendarTask </em>constructor).
15773           </p>
15774           <p>
15775 All the attributes are optional and are undefined by default.
15776           </p>
15777          </description>
15778           <version>
15779  1.0
15780           </version>
15781       </descriptive>
15782       <DictionaryInheritance>
15783         <Name name="CalendarItemInit"/>
15784       </DictionaryInheritance>
15785       <DictionaryMember name="dueDate" id="::Calendar::CalendarTaskInit::dueDate">
15786         <webidl>    <ref>TZDate</ref> dueDate;</webidl>
15787         <Type name="TZDate"/>
15788       </DictionaryMember>
15789       <DictionaryMember name="completedDate" id="::Calendar::CalendarTaskInit::completedDate">
15790         <webidl>    <ref>TZDate</ref> completedDate;</webidl>
15791         <Type name="TZDate"/>
15792       </DictionaryMember>
15793       <DictionaryMember name="progress" id="::Calendar::CalendarTaskInit::progress">
15794         <webidl>    short progress;</webidl>
15795         <Type type="short"/>
15796       </DictionaryMember>
15797     </Dictionary>
15798     <Dictionary name="CalendarEventInit" id="::Calendar::CalendarEventInit">
15799       <webidl>  dictionary CalendarEventInit: <ref>CalendarItemInit</ref> {
15800     <ref>TZDate</ref> endDate;
15801     <ref>EventAvailability</ref> availability;
15802     <ref>CalendarRecurrenceRule</ref> recurrenceRule;
15803   };</webidl>
15804       <descriptive>
15805           <brief>
15806  A dictionary that is used for creating calendar events.
15807           </brief>
15808          <description>
15809           <p>
15810 Provides an interface for specifying event attributes upon event creation (in the <em>CalendarEvent </em>constructor).
15811           </p>
15812           <p>
15813 All the attributes are optional and are undefined by default.
15814           </p>
15815          </description>
15816           <version>
15817  1.0
15818           </version>
15819       </descriptive>
15820       <DictionaryInheritance>
15821         <Name name="CalendarItemInit"/>
15822       </DictionaryInheritance>
15823       <DictionaryMember name="endDate" id="::Calendar::CalendarEventInit::endDate">
15824         <webidl>    <ref>TZDate</ref> endDate;</webidl>
15825         <Type name="TZDate"/>
15826       </DictionaryMember>
15827       <DictionaryMember name="availability" id="::Calendar::CalendarEventInit::availability">
15828         <webidl>    <ref>EventAvailability</ref> availability;</webidl>
15829         <Type name="EventAvailability"/>
15830       </DictionaryMember>
15831       <DictionaryMember name="recurrenceRule" id="::Calendar::CalendarEventInit::recurrenceRule">
15832         <webidl>    <ref>CalendarRecurrenceRule</ref> recurrenceRule;</webidl>
15833         <Type name="CalendarRecurrenceRule"/>
15834       </DictionaryMember>
15835     </Dictionary>
15836     <Interface name="CalendarItem" id="::Calendar::CalendarItem">
15837       <webidl>  [NoInterfaceObject] interface CalendarItem {
15838     readonly attribute <ref>CalendarItemId</ref>? id;
15839
15840     readonly attribute <ref>CalendarId</ref>? calendarId;
15841
15842     readonly attribute <ref>TZDate</ref>? lastModificationDate;
15843     
15844     attribute DOMString? description setraises(<ref>WebAPIException</ref>);
15845     
15846     attribute DOMString? summary setraises(<ref>WebAPIException</ref>);
15847     
15848     attribute boolean isAllDay setraises(<ref>WebAPIException</ref>);
15849     
15850     attribute <ref>TZDate</ref>? startDate setraises(<ref>WebAPIException</ref>);
15851     
15852     attribute <ref>TimeDuration</ref>? duration setraises(<ref>WebAPIException</ref>);
15853     
15854     attribute DOMString? location setraises(<ref>WebAPIException</ref>);
15855     
15856     attribute <ref>SimpleCoordinates</ref>? geolocation setraises(<ref>WebAPIException</ref>);
15857     
15858     attribute DOMString? organizer setraises(<ref>WebAPIException</ref>);
15859     
15860     attribute <ref>CalendarItemVisibility</ref> visibility setraises(<ref>WebAPIException</ref>);
15861     
15862     attribute <ref>CalendarItemStatus</ref> status setraises(<ref>WebAPIException</ref>);
15863     
15864     attribute <ref>CalendarItemPriority</ref> priority setraises(<ref>WebAPIException</ref>);
15865     
15866     attribute <ref>CalendarAlarm</ref>[] alarms setraises(<ref>WebAPIException</ref>);
15867     
15868     attribute DOMString[] categories setraises(<ref>WebAPIException</ref>);
15869     
15870     attribute <ref>CalendarAttendee</ref>[] attendees setraises(<ref>WebAPIException</ref>);
15871     
15872     DOMString convertToString(<ref>CalendarTextFormat</ref> format) raises(<ref>WebAPIException</ref>);
15873
15874     <ref>CalendarItem</ref> clone() raises(<ref>WebAPIException</ref>);
15875   };</webidl>
15876       <descriptive>
15877           <brief>
15878  This is a parent interface that is used to create Calendar events and tasks.
15879 These attributes are shared by both events and tasks.
15880           </brief>
15881           <version>
15882  1.0
15883           </version>
15884       </descriptive>
15885       <ExtendedAttributeList>
15886         <ExtendedAttribute name="NoInterfaceObject">
15887           <webidl>NoInterfaceObject</webidl>
15888         </ExtendedAttribute>
15889       </ExtendedAttributeList>
15890       <Attribute readonly="readonly" name="id" id="::Calendar::CalendarItem::id">
15891         <webidl>    readonly attribute <ref>CalendarItemId</ref>? id;</webidl>
15892         <descriptive>
15893             <brief>
15894  An attribute to persistently and uniquely identify an item in implementation.
15895             </brief>
15896            <description>
15897             <p>
15898 Includes a UID and a possible recurrence ID that is needed to identify a particular instance of a recurring event.
15899             </p>
15900             <p>
15901 By default, this attribute is set to null.
15902             </p>
15903            </description>
15904             <version>
15905  1.0
15906             </version>
15907         </descriptive>
15908         <Type name="CalendarItemId" nullable="nullable"/>
15909       </Attribute>
15910       <Attribute readonly="readonly" name="calendarId" id="::Calendar::CalendarItem::calendarId">
15911         <webidl>    readonly attribute <ref>CalendarId</ref>? calendarId;</webidl>
15912         <descriptive>
15913             <brief>
15914  An attribute to identify the calendar in which this item is saved.
15915             </brief>
15916            <description>
15917             <p>
15918 By default, this attribute is set to null.
15919             </p>
15920            </description>
15921             <version>
15922  2.1
15923             </version>
15924         </descriptive>
15925         <Type name="CalendarId" nullable="nullable"/>
15926       </Attribute>
15927       <Attribute readonly="readonly" name="lastModificationDate" id="::Calendar::CalendarItem::lastModificationDate">
15928         <webidl>    readonly attribute <ref>TZDate</ref>? lastModificationDate;</webidl>
15929         <descriptive>
15930             <brief>
15931  An attribute to identify the last modified date and time of an item.
15932             </brief>
15933            <description>
15934             <p>
15935 This attribute is automatically populated and cannot be edited by the client.
15936 (See RFC 5545 - Section 3.8.7.3).
15937             </p>
15938            </description>
15939             <version>
15940  1.0
15941             </version>
15942         </descriptive>
15943         <Type name="TZDate" nullable="nullable"/>
15944       </Attribute>
15945       <Attribute name="description" id="::Calendar::CalendarItem::description">
15946         <webidl>    attribute DOMString? description setraises(<ref>WebAPIException</ref>);</webidl>
15947         <descriptive>
15948             <brief>
15949  An attribute to store the textual descriptions of an item.
15950             </brief>
15951            <description>
15952             <p>
15953 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.
15954 (See RFC 5545 - Section 3.8.1.5).
15955             </p>
15956             <p>
15957 The default value is an empty string. 
15958             </p>
15959            </description>
15960             <version>
15961  1.0
15962             </version>
15963             <Code>  event.description = 'Tizen Codefest';
15964  </Code>
15965         </descriptive>
15966         <Type type="DOMString" nullable="nullable"/>
15967         <SetRaises>
15968           <RaiseException name="WebAPIException"/>
15969         </SetRaises>
15970       </Attribute>
15971       <Attribute name="summary" id="::Calendar::CalendarItem::summary">
15972         <webidl>    attribute DOMString? summary setraises(<ref>WebAPIException</ref>);</webidl>
15973         <descriptive>
15974             <brief>
15975  An attribute to store a short summary or subject for an item.
15976 (See RFC 5545 - Section 3.8.1.12)
15977             </brief>
15978            <description>
15979             <p>
15980 The default value is an empty string. 
15981             </p>
15982            </description>
15983             <version>
15984  1.0
15985             </version>
15986             <Code>  event.summary = 'Launching the Tizen reference implementation';
15987  </Code>
15988         </descriptive>
15989         <Type type="DOMString" nullable="nullable"/>
15990         <SetRaises>
15991           <RaiseException name="WebAPIException"/>
15992         </SetRaises>
15993       </Attribute>
15994       <Attribute name="isAllDay" id="::Calendar::CalendarItem::isAllDay">
15995         <webidl>    attribute boolean isAllDay setraises(<ref>WebAPIException</ref>);</webidl>
15996         <descriptive>
15997             <brief>
15998  An attribute that behaves like a flag to indicate whether an event is an all-day event or not.
15999             </brief>
16000            <description>
16001             <p>
16002 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.
16003             </p>
16004             <p>
16005 The default value for this attribute is <var>false</var>.
16006             </p>
16007            </description>
16008             <version>
16009  1.0
16010             </version>
16011             <Code>  event.isAllDay = true; // All-Day event
16012  </Code>
16013         </descriptive>
16014         <Type type="boolean"/>
16015         <SetRaises>
16016           <RaiseException name="WebAPIException"/>
16017         </SetRaises>
16018       </Attribute>
16019       <Attribute name="startDate" id="::Calendar::CalendarItem::startDate">
16020         <webidl>    attribute <ref>TZDate</ref>? startDate setraises(<ref>WebAPIException</ref>);</webidl>
16021         <descriptive>
16022             <brief>
16023  An attribute to store the start date/time for an item.
16024 (see RFC 5545 - Section 3.8.2.4).
16025             </brief>
16026            <description>
16027             <p>
16028 The default value for this attribute is <var>null</var>.
16029             </p>
16030             <p>
16031 <em>startDate</em> must be specified in the same time zone as <em>endDate / dueDate</em> if provided.
16032             </p>
16033            </description>
16034             <version>
16035  1.0
16036             </version>
16037            <description>
16038             <p>
16039 This attribute is precise to the second. Milliseconds are ignored.
16040             </p>
16041            </description>
16042             <Code>  // 2010-04-30 09:00
16043   event.startDate = new tizen.TZDate(2010, 3, 30, 9, 0);
16044  </Code>
16045         </descriptive>
16046         <Type name="TZDate" nullable="nullable"/>
16047         <SetRaises>
16048           <RaiseException name="WebAPIException"/>
16049         </SetRaises>
16050       </Attribute>
16051       <Attribute name="duration" id="::Calendar::CalendarItem::duration">
16052         <webidl>    attribute <ref>TimeDuration</ref>? duration setraises(<ref>WebAPIException</ref>);</webidl>
16053         <descriptive>
16054             <brief>
16055  An attribute to denote the duration of the calendar component.
16056 (See RFC 5545 - Section 3.8.2.5).
16057             </brief>
16058            <description>
16059             <p>
16060 By default, this attribute is set to <var>null</var>.
16061             </p>
16062             <p>
16063 <em>duration</em> and <em>endDate / dueDate</em> are mutually exclusive, hence, only one of them can be non-null.
16064             </p>
16065             <p>
16066 This attribute is precise to the second. Milliseconds are ignored.
16067             </p>
16068            </description>
16069             <remark>
16070  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.
16071             </remark>
16072             <version>
16073  1.0
16074             </version>
16075             <Code>  // 1 hour meeting
16076   event.duration = new tizen.TimeDuration(1, &quot;HOURS&quot;);
16077  </Code>
16078         </descriptive>
16079         <Type name="TimeDuration" nullable="nullable"/>
16080         <SetRaises>
16081           <RaiseException name="WebAPIException"/>
16082         </SetRaises>
16083       </Attribute>
16084       <Attribute name="location" id="::Calendar::CalendarItem::location">
16085         <webidl>    attribute DOMString? location setraises(<ref>WebAPIException</ref>);</webidl>
16086         <descriptive>
16087             <brief>
16088  An attribute to store the location or the intended venue for the activity defined by the calendar item.
16089 (See RFC 5545 - Section 3.8.1.7)
16090             </brief>
16091            <description>
16092             <p>
16093 The default value for this attribute is an empty string. 
16094             </p>
16095            </description>
16096             <version>
16097  1.0
16098             </version>
16099             <Code>  event.location = 'Huesca';
16100  </Code>
16101         </descriptive>
16102         <Type type="DOMString" nullable="nullable"/>
16103         <SetRaises>
16104           <RaiseException name="WebAPIException"/>
16105         </SetRaises>
16106       </Attribute>
16107       <Attribute name="geolocation" id="::Calendar::CalendarItem::geolocation">
16108         <webidl>    attribute <ref>SimpleCoordinates</ref>? geolocation setraises(<ref>WebAPIException</ref>);</webidl>
16109         <descriptive>
16110             <brief>
16111  An attribute to store the global position latitude and longitude of the location where the event is planned to take place.
16112 (See RFC 5545 - Section 3.8.1.6).
16113             </brief>
16114             <version>
16115  1.0
16116             </version>
16117             <Code>  event.geolocation = new tizen.SimpleCoordinates(60.175, 24.934);
16118  </Code>
16119         </descriptive>
16120         <Type name="SimpleCoordinates" nullable="nullable"/>
16121         <SetRaises>
16122           <RaiseException name="WebAPIException"/>
16123         </SetRaises>
16124       </Attribute>
16125       <Attribute name="organizer" id="::Calendar::CalendarItem::organizer">
16126         <webidl>    attribute DOMString? organizer setraises(<ref>WebAPIException</ref>);</webidl>
16127         <descriptive>
16128             <brief>
16129  An attribute to store the name of the person who organized this event.
16130 (See RFC 5545 - Section 3.8.4.3).
16131             </brief>
16132            <description>
16133             <p>
16134 By default, this attribute is initialized to an empty string.
16135             </p>
16136            </description>
16137             <version>
16138  1.0
16139             </version>
16140             <Code>  event.organizer = 'Mr. Jones';
16141  </Code>
16142         </descriptive>
16143         <Type type="DOMString" nullable="nullable"/>
16144         <SetRaises>
16145           <RaiseException name="WebAPIException"/>
16146         </SetRaises>
16147       </Attribute>
16148       <Attribute name="visibility" id="::Calendar::CalendarItem::visibility">
16149         <webidl>    attribute <ref>CalendarItemVisibility</ref> visibility setraises(<ref>WebAPIException</ref>);</webidl>
16150         <descriptive>
16151             <brief>
16152  An attribute to mark the visibility (secrecy) level of the item.
16153 (See RFC 5545 - Section 3.8.1.3).
16154             </brief>
16155            <description>
16156             <p>
16157 The default value is <var>PUBLIC</var>.
16158             </p>
16159            </description>
16160             <version>
16161  1.0
16162             </version>
16163         </descriptive>
16164         <Type name="CalendarItemVisibility"/>
16165         <SetRaises>
16166           <RaiseException name="WebAPIException"/>
16167         </SetRaises>
16168       </Attribute>
16169       <Attribute name="status" id="::Calendar::CalendarItem::status">
16170         <webidl>    attribute <ref>CalendarItemStatus</ref> status setraises(<ref>WebAPIException</ref>);</webidl>
16171         <descriptive>
16172             <brief>
16173  An attribute to store the overall confirmation status for a calendar component.
16174 (See RFC 5545 - Section 3.8.1.11).
16175             </brief>
16176            <description>
16177             <p>
16178 For an event, the default value is <var>CONFIRMED</var>. For a task, the default value is <var>NEEDS_ACTION</var>.
16179             </p>
16180            </description>
16181             <version>
16182  1.0
16183             </version>
16184             <Code>  event.status = &quot;TENTATIVE&quot;;
16185  </Code>
16186         </descriptive>
16187         <Type name="CalendarItemStatus"/>
16188         <SetRaises>
16189           <RaiseException name="WebAPIException"/>
16190         </SetRaises>
16191       </Attribute>
16192       <Attribute name="priority" id="::Calendar::CalendarItem::priority">
16193         <webidl>    attribute <ref>CalendarItemPriority</ref> priority setraises(<ref>WebAPIException</ref>);</webidl>
16194         <descriptive>
16195             <brief>
16196  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.
16197 (See RFC 5545 - Section 3.8.1.9).
16198             </brief>
16199            <description>
16200             <p>
16201 The default value for this attribute is <var>LOW </var>priority.
16202             </p>
16203             <p>
16204 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:
16205             </p>
16206             <ul>
16207               <li>
16208 1-4 to HIGH,              </li>
16209               <li>
16210 5 to MEDIUM,              </li>
16211               <li>
16212 6-9 to LOW.              </li>
16213             </ul>
16214            </description>
16215             <version>
16216  1.0
16217             </version>
16218             <Code>  task.priority = &quot;HIGH&quot;;
16219  </Code>
16220         </descriptive>
16221         <Type name="CalendarItemPriority"/>
16222         <SetRaises>
16223           <RaiseException name="WebAPIException"/>
16224         </SetRaises>
16225       </Attribute>
16226       <Attribute name="alarms" id="::Calendar::CalendarItem::alarms">
16227         <webidl>    attribute <ref>CalendarAlarm</ref>[] alarms setraises(<ref>WebAPIException</ref>);</webidl>
16228         <descriptive>
16229             <brief>
16230  An attribute array to lists the alarms (or reminders) associated to an item.
16231             </brief>
16232             <version>
16233  1.0
16234             </version>
16235             <Code>  ev.startDate = new tizen.TZDate(2011, 2, 11, 8, 0, 0);
16236   // Gives a sound notification 30 minutes before the item's start time
16237   var alarm = new tizen.CalendarAlarm(new tizen.TimeDuration(30, &quot;MINS&quot;),
16238                                        &quot;SOUND&quot;);
16239   ev.alarms = [alarm];
16240  </Code>
16241         </descriptive>
16242         <Type type="array">
16243           <Type name="CalendarAlarm"/>
16244         </Type>
16245         <SetRaises>
16246           <RaiseException name="WebAPIException"/>
16247         </SetRaises>
16248       </Attribute>
16249       <Attribute name="categories" id="::Calendar::CalendarItem::categories">
16250         <webidl>    attribute DOMString[] categories setraises(<ref>WebAPIException</ref>);</webidl>
16251         <descriptive>
16252             <brief>
16253  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.
16254 (See RFC 5545 - Section 3.8.1.2).
16255             </brief>
16256            <description>
16257             <p>
16258 Examples of categories are personal, work, vacation, travel, etc.
16259             </p>
16260             <p>
16261 By default, this attribute is set to an empty array.
16262             </p>
16263            </description>
16264             <version>
16265  1.0
16266             </version>
16267             <Code>  event.categories = ['Personal'];
16268  </Code>
16269         </descriptive>
16270         <Type type="array">
16271           <Type type="DOMString"/>
16272         </Type>
16273         <SetRaises>
16274           <RaiseException name="WebAPIException"/>
16275         </SetRaises>
16276       </Attribute>
16277       <Attribute name="attendees" id="::Calendar::CalendarItem::attendees">
16278         <webidl>    attribute <ref>CalendarAttendee</ref>[] attendees setraises(<ref>WebAPIException</ref>);</webidl>
16279         <descriptive>
16280             <brief>
16281  An attribute array that lists the people attending an event.
16282 (See RFC 5545 - Section 3.8.4.3).
16283             </brief>
16284            <description>
16285             <p>
16286 By default, this attribute is set to an empty array.
16287             </p>
16288            </description>
16289             <version>
16290  1.0
16291             </version>
16292             <Code>  var attendee = new tizen.CalendarAttendee('mailto:bob@domain.com',
16293                                            {role: &quot;CHAIR&quot;, RSVP: true});
16294   event.attendees = [attendee];
16295  </Code>
16296         </descriptive>
16297         <Type type="array">
16298           <Type name="CalendarAttendee"/>
16299         </Type>
16300         <SetRaises>
16301           <RaiseException name="WebAPIException"/>
16302         </SetRaises>
16303       </Attribute>
16304       <Operation name="convertToString" id="::Calendar::CalendarItem::convertToString">
16305         <webidl>    DOMString convertToString(<ref>CalendarTextFormat</ref> format) raises(<ref>WebAPIException</ref>);</webidl>
16306         <descriptive>
16307             <brief>
16308  Converts the calendar item to a string format that will be generated and returned synchronously.
16309 The export format is set using the format parameter.
16310             </brief>
16311             <version>
16312  1.0
16313             </version>
16314             <privilegelevel>
16315  public
16316             </privilegelevel>
16317             <privilege>
16318  http://tizen.org/privilege/calendar.read
16319             </privilege>
16320             <Code>  // Defines the event search success callback.
16321   function eventSearchSuccessCallback(events) {
16322     // Converts the first event to iCalendar 2.0 format (default)
16323     var vevent = events[0].convertToString(&quot;ICALENDAR_20&quot;);
16324     console.log('iCalendar 2.0 representation of the event is: ' + vevent);
16325   }
16326
16327   function errorCallback(response) {
16328     console.log( 'The following error occurred: ' +  response.name);
16329   }
16330
16331   // Gets the default calendar
16332   var myCalendar = tizen.calendar.getDefaultCalendar(&quot;EVENT&quot;);
16333     
16334   // Finds all events in the first calendar that contain in the summary the string Tizen.
16335   var filter = new tizen.AttributeFilter('summary', 'CONTAINS', 'Tizen');
16336   myCalendar.find(eventSearchSuccessCallback, errorCallback, filter);
16337  </Code>
16338         </descriptive>
16339         <Type type="DOMString">
16340           <descriptive>
16341               <description><p>
16342  DOMString The representation of the Calendar item.
16343               </p></description>
16344           </descriptive>
16345         </Type>
16346         <ArgumentList>
16347           <Argument name="format">
16348             <descriptive>
16349                 <description><p>
16350  The format to use for exporting.
16351                 </p></description>
16352             </descriptive>
16353             <Type name="CalendarTextFormat"/>
16354           </Argument>
16355         </ArgumentList>
16356         <Raises>
16357           <RaiseException name="WebAPIException">
16358             <descriptive>
16359                 <description><p>
16360  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
16361                 </p></description>
16362                 <description><p>
16363  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
16364                 </p></description>
16365                 <description><p>
16366  with error type SecurityError, if the application does not have the privilege to call this method.
16367                 </p></description>
16368                 <description><p>
16369  with error type NotSupportedError, if the feature is not supported.
16370                 </p></description>
16371                 <description><p>
16372  with error type UnknownError, if any other error occurs.
16373                 </p></description>
16374             </descriptive>
16375           </RaiseException>
16376         </Raises>
16377       </Operation>
16378       <Operation name="clone" id="::Calendar::CalendarItem::clone">
16379         <webidl>    <ref>CalendarItem</ref> clone() raises(<ref>WebAPIException</ref>);</webidl>
16380         <descriptive>
16381             <brief>
16382  Clones the <em>CalendarItem </em>object, detached from any calendar.
16383             </brief>
16384            <description>
16385             <p>
16386 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.
16387             </p>
16388            </description>
16389             <version>
16390  1.0
16391             </version>
16392             <privilegelevel>
16393  public
16394             </privilegelevel>
16395             <privilege>
16396  http://tizen.org/privilege/calendar.read
16397             </privilege>
16398             <Code>  // Gets default calendar.
16399   var calendar = tizen.calendar.getDefaultCalendar();
16400
16401   var html5seminar = new tizen.CalendarEvent({startDate: new tizen.TZDate(2012, 3, 4),
16402                                               duration: new tizen.TimeDuration(3, &quot;DAYS&quot;),
16403                                               summary: &quot;HTML5 Seminar&quot;});
16404                                      
16405   calendar.add(html5seminar);
16406   var tizenseminar = html5seminar.clone();
16407   tizenseminar.summary = &quot;Tizen Seminar&quot;;
16408   calendar.add(tizenseminar);
16409  </Code>
16410         </descriptive>
16411         <Type name="CalendarItem">
16412           <descriptive>
16413               <description><p>
16414  CalendarItem The new clone of the <em>CalendarItem </em>object.
16415               </p></description>
16416           </descriptive>
16417         </Type>
16418         <ArgumentList/>
16419         <Raises>
16420           <RaiseException name="WebAPIException">
16421             <descriptive>
16422                 <description><p>
16423  with error type SecurityError, if the application does not have the privilege to call this method.
16424                 </p></description>
16425                 <description><p>
16426  with error type NotSupportedError, if the feature is not supported.
16427                 </p></description>
16428                 <description><p>
16429  with error type UnknownError if any other error occurs.
16430                 </p></description>
16431             </descriptive>
16432           </RaiseException>
16433         </Raises>
16434       </Operation>
16435     </Interface>
16436     <Interface name="CalendarTask" id="::Calendar::CalendarTask">
16437       <webidl>  [Constructor(optional <ref>CalendarTaskInit</ref>? taskInitDict),
16438    Constructor(DOMString stringRepresentation, <ref>CalendarTextFormat</ref> format)]
16439   interface CalendarTask : <ref>CalendarItem</ref> {
16440     attribute <ref>TZDate</ref>? dueDate setraises(<ref>WebAPIException</ref>);
16441     
16442     attribute <ref>TZDate</ref>? completedDate setraises(<ref>WebAPIException</ref>);
16443     
16444     attribute unsigned short progress setraises(<ref>WebAPIException</ref>);
16445   };</webidl>
16446       <descriptive>
16447           <brief>
16448  An interface that implements the <em>CalendarTask </em>object.
16449           </brief>
16450           <version>
16451  1.0
16452           </version>
16453       </descriptive>
16454       <ExtendedAttributeList>
16455         <ExtendedAttribute name="Constructor">
16456           <webidl>Constructor(optional <ref>CalendarTaskInit</ref>? taskInitDict)</webidl>
16457           <ArgumentList>
16458             <Argument optional="optional" name="taskInitDict">
16459               <Type name="CalendarTaskInit" nullable="nullable"/>
16460             </Argument>
16461           </ArgumentList>
16462         </ExtendedAttribute>
16463         <ExtendedAttribute name="Constructor">
16464           <webidl>   Constructor(DOMString stringRepresentation, <ref>CalendarTextFormat</ref> format)</webidl>
16465           <ArgumentList>
16466             <Argument name="stringRepresentation">
16467               <Type type="DOMString"/>
16468             </Argument>
16469             <Argument name="format">
16470               <Type name="CalendarTextFormat"/>
16471             </Argument>
16472           </ArgumentList>
16473         </ExtendedAttribute>
16474       </ExtendedAttributeList>
16475       <InterfaceInheritance>
16476         <Name name="CalendarItem"/>
16477       </InterfaceInheritance>
16478       <Attribute name="dueDate" id="::Calendar::CalendarTask::dueDate">
16479         <webidl>    attribute <ref>TZDate</ref>? dueDate setraises(<ref>WebAPIException</ref>);</webidl>
16480         <descriptive>
16481             <brief>
16482  An attribute to store the due date and time for completing a task. (See RFC 5545 - Section 3.8.2.3).
16483             </brief>
16484            <description>
16485             <p>
16486 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.
16487             </p>
16488             <p>
16489 This attribute is precise to the second. Milliseconds are ignored.
16490             </p>
16491             <p>
16492 The default value is <var>null</var>. If no value is provided, the task doesn't have a due date.
16493             </p>
16494            </description>
16495             <version>
16496  1.0
16497             </version>
16498             <Code>  task.dueDate = new tizen.TZDate(2011, 2, 11);
16499  </Code>
16500         </descriptive>
16501         <Type name="TZDate" nullable="nullable"/>
16502         <SetRaises>
16503           <RaiseException name="WebAPIException"/>
16504         </SetRaises>
16505       </Attribute>
16506       <Attribute name="completedDate" id="::Calendar::CalendarTask::completedDate">
16507         <webidl>    attribute <ref>TZDate</ref>? completedDate setraises(<ref>WebAPIException</ref>);</webidl>
16508         <descriptive>
16509             <brief>
16510  An attribute to record the date and time when an task is completed.
16511 (See RFC 5545 - Section 3.8.2.1).
16512             </brief>
16513            <description>
16514             <p>
16515 This attribute is precise to the second. Milliseconds are ignored.
16516             </p>
16517             <p>
16518 The default value is <var>null</var>. If no value is provided, the task is not completed yet.  
16519             </p>
16520            </description>
16521             <version>
16522  1.0
16523             </version>
16524             <Code>  task.completedDate = new tizen.TZDate(2011, 2, 11);
16525  </Code>
16526         </descriptive>
16527         <Type name="TZDate" nullable="nullable"/>
16528         <SetRaises>
16529           <RaiseException name="WebAPIException"/>
16530         </SetRaises>
16531       </Attribute>
16532       <Attribute name="progress" id="::Calendar::CalendarTask::progress">
16533         <webidl>    attribute unsigned short progress setraises(<ref>WebAPIException</ref>);</webidl>
16534         <descriptive>
16535             <brief>
16536  An attribute to denote the percent of completion of a task.
16537             </brief>
16538            <description>
16539             <p>
16540 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.
16541             </p>
16542             <p>
16543 Integer values in between indicate the percent partially complete.
16544 (See RFC 5545 - Section 3.8.1.8).
16545             </p>
16546             <p>
16547 The default value is <var>0</var>, implies that the task has not been started.
16548             </p>
16549            </description>
16550             <version>
16551  1.0
16552             </version>
16553             <Code>  task.progress = 50; // 50% done
16554  </Code>
16555         </descriptive>
16556         <Type type="unsigned short"/>
16557         <SetRaises>
16558           <RaiseException name="WebAPIException"/>
16559         </SetRaises>
16560       </Attribute>
16561     </Interface>
16562     <Interface name="CalendarEvent" id="::Calendar::CalendarEvent">
16563       <webidl>  [Constructor(optional <ref>CalendarEventInit</ref>? eventInitDict),
16564    Constructor(DOMString stringRepresentation, <ref>CalendarTextFormat</ref> format)]
16565   interface CalendarEvent : <ref>CalendarItem</ref> {
16566     readonly attribute boolean isDetached;
16567     
16568     attribute <ref>TZDate</ref>? endDate setraises(<ref>WebAPIException</ref>);
16569     
16570     attribute <ref>EventAvailability</ref> availability setraises(<ref>WebAPIException</ref>);
16571     
16572     attribute <ref>CalendarRecurrenceRule</ref>? recurrenceRule setraises(<ref>WebAPIException</ref>);
16573     
16574     void expandRecurrence(<ref>TZDate</ref> startDate,
16575                           <ref>TZDate</ref> endDate,
16576                           <ref>CalendarEventArraySuccessCallback</ref> successCallback,
16577                           optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
16578   };</webidl>
16579       <descriptive>
16580           <brief>
16581  An interface that implements the <em>calendarEvent </em>object.
16582           </brief>
16583           <version>
16584  1.0
16585           </version>
16586           <Code>  // Gets the default calendar
16587   var calendar = tizen.calendar.getDefaultCalendar(&quot;EVENT&quot;);
16588
16589   try {
16590     var ev = new tizen.CalendarEvent(&quot;BEGIN:VCALENDAR\r\n&quot; +
16591                   &quot;BEGIN:VEVENT\r\n&quot; +
16592                   &quot;DTSTAMP:19970901T1300Z\r\n&quot; +
16593                   &quot;DTSTART:19970903T163000Z\r\n&quot; +
16594                   &quot;DTEND:19970903T190000Z\r\n&quot; +
16595                   &quot;SUMMARY:Annual Employee Review\r\n&quot; +
16596                   &quot;CATEGORIES:BUSINESS,HUMAN RESOURCES\r\n&quot; +
16597                   &quot;END:VEVENT\r\n&quot; +
16598                   &quot;END:VCALENDAR&quot;, &quot;ICALENDAR_20&quot;);
16599                    
16600     calendar.add(ev);
16601     console.log('Event added with UID ' + ev.id.uid);
16602   } catch (err) {
16603     console.log(&quot;Failed to add VEVENT to the calendar, error: &quot; + err.name);
16604   }
16605  </Code>
16606       </descriptive>
16607       <ExtendedAttributeList>
16608         <ExtendedAttribute name="Constructor">
16609           <webidl>Constructor(optional <ref>CalendarEventInit</ref>? eventInitDict)</webidl>
16610           <ArgumentList>
16611             <Argument optional="optional" name="eventInitDict">
16612               <Type name="CalendarEventInit" nullable="nullable"/>
16613             </Argument>
16614           </ArgumentList>
16615         </ExtendedAttribute>
16616         <ExtendedAttribute name="Constructor">
16617           <webidl>   Constructor(DOMString stringRepresentation, <ref>CalendarTextFormat</ref> format)</webidl>
16618           <ArgumentList>
16619             <Argument name="stringRepresentation">
16620               <Type type="DOMString"/>
16621             </Argument>
16622             <Argument name="format">
16623               <Type name="CalendarTextFormat"/>
16624             </Argument>
16625           </ArgumentList>
16626         </ExtendedAttribute>
16627       </ExtendedAttributeList>
16628       <InterfaceInheritance>
16629         <Name name="CalendarItem"/>
16630       </InterfaceInheritance>
16631       <Attribute readonly="readonly" name="isDetached" id="::Calendar::CalendarEvent::isDetached">
16632         <webidl>    readonly attribute boolean isDetached;</webidl>
16633         <descriptive>
16634             <brief>
16635  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.
16636             </brief>
16637             <version>
16638  1.0
16639             </version>
16640         </descriptive>
16641         <Type type="boolean"/>
16642       </Attribute>
16643       <Attribute name="endDate" id="::Calendar::CalendarEvent::endDate">
16644         <webidl>    attribute <ref>TZDate</ref>? endDate setraises(<ref>WebAPIException</ref>);</webidl>
16645         <descriptive>
16646             <brief>
16647  An attribute to store the end date/time of an event.
16648             </brief>
16649            <description>
16650             <p>
16651 (see RFC 5545 - Section 3.8.2.2).
16652             </p>
16653             <p>
16654 This <em>endDate</em> must be in the same time zone as the <em>startDate</em>. 
16655 Note that <em>duration</em> and <em>endDate</em> are mutually exclusive, only one of them can be non-null.
16656             </p>
16657             <p>
16658 This attribute is precise to the second. Milliseconds are ignored.
16659             </p>
16660             <p>
16661 The default value for this attribute is <var>null</var>. 
16662             </p>
16663            </description>
16664             <version>
16665  1.0
16666             </version>
16667             <Code>  // 2010-04-30 09:00
16668   event.endDate = new tizen.TZDate(2010, 3, 30, 9, 0);
16669  </Code>
16670         </descriptive>
16671         <Type name="TZDate" nullable="nullable"/>
16672         <SetRaises>
16673           <RaiseException name="WebAPIException"/>
16674         </SetRaises>
16675       </Attribute>
16676       <Attribute name="availability" id="::Calendar::CalendarEvent::availability">
16677         <webidl>    attribute <ref>EventAvailability</ref> availability setraises(<ref>WebAPIException</ref>);</webidl>
16678         <descriptive>
16679             <brief>
16680  An attribute to indicate the availability of a person for an event.
16681 (See RFC 5545 - Section 3.2.9).
16682             </brief>
16683            <description>
16684             <p>
16685 The default value is <var>BUSY</var>.
16686             </p>
16687            </description>
16688             <version>
16689  1.0
16690             </version>
16691         </descriptive>
16692         <Type name="EventAvailability"/>
16693         <SetRaises>
16694           <RaiseException name="WebAPIException"/>
16695         </SetRaises>
16696       </Attribute>
16697       <Attribute name="recurrenceRule" id="::Calendar::CalendarEvent::recurrenceRule">
16698         <webidl>    attribute <ref>CalendarRecurrenceRule</ref>? recurrenceRule setraises(<ref>WebAPIException</ref>);</webidl>
16699         <descriptive>
16700             <brief>
16701  An attribute to denote the recurrence rule for the event.
16702             </brief>
16703            <description>
16704             <p>
16705 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.
16706             </p>
16707             <p>
16708 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.
16709 (See RFC 5545, Section 3.3.10.)
16710             </p>
16711            </description>
16712             <version>
16713  1.0
16714             </version>
16715             <Code>  // Repeats daily for 7 days
16716   var rule = new tizen.CalendarRecurrenceRule(&quot;DAILY&quot;, {occurrenceCount: 7});
16717   event.recurrenceRule = rule;
16718  </Code>
16719         </descriptive>
16720         <Type name="CalendarRecurrenceRule" nullable="nullable"/>
16721         <SetRaises>
16722           <RaiseException name="WebAPIException"/>
16723         </SetRaises>
16724       </Attribute>
16725       <Operation name="expandRecurrence" id="::Calendar::CalendarEvent::expandRecurrence">
16726         <webidl>    void expandRecurrence(<ref>TZDate</ref> startDate,
16727                           <ref>TZDate</ref> endDate,
16728                           <ref>CalendarEventArraySuccessCallback</ref> successCallback,
16729                           optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
16730         <descriptive>
16731             <brief>
16732  Expands a recurring event and returns asynchronously the list of instances occurring in a given time interval (inclusive).
16733             </brief>
16734            <description>
16735             <p>
16736 This method takes into consideration all the parameters of the event recurrence rule to generate the instances occurring in a given time interval.
16737             </p>
16738             <p>
16739 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.
16740             </p>
16741             <p>
16742 The errorCallback is launched with these error types: 
16743             </p>
16744             <ul>
16745               <li>
16746 InvalidValuesError - if the event in operation is not recurring.              </li>
16747               <li>
16748 UnknownError - if any other error occurs.              </li>
16749             </ul>
16750            </description>
16751             <version>
16752  1.0
16753             </version>
16754             <privilegelevel>
16755  public
16756             </privilegelevel>
16757             <privilege>
16758  http://tizen.org/privilege/calendar.read
16759             </privilege>
16760             <Code>  // eventId should be set to ID of event obtained with the find function.
16761   var eventId;
16762   // Defines the error callback.
16763   function errorCallback(response) {
16764     console.log( 'The following error occurred: ' +  response.name);
16765   }
16766
16767   // Defines the event expanding success callback.
16768   function eventExpandingSuccessCallback(events) {
16769     console.log(events.length + ' event instances were returned.');
16770   }
16771  
16772   var calendar = tizen.calendar.getDefaultCalendar();
16773   var event = calendar.get(eventId);
16774
16775   if (event.recurrenceRule != null) {
16776     // This is a recurring event. Expand all the instances during August 2011.
16777     event.expandRecurrence(new tizen.TZDate(2011, 7, 1),
16778                           new tizen.TZDate(2011, 7, 31),
16779                           eventExpandingSuccessCallback,
16780                           errorCallback);
16781   }
16782  </Code>
16783         </descriptive>
16784         <Type type="void"/>
16785         <ArgumentList>
16786           <Argument name="startDate">
16787             <descriptive>
16788                 <description><p>
16789  The start date/ time of an event(inclusive).
16790                 </p></description>
16791             </descriptive>
16792             <Type name="TZDate"/>
16793           </Argument>
16794           <Argument name="endDate">
16795             <descriptive>
16796                 <description><p>
16797  The end date/ time of an event (inclusive).
16798                 </p></description>
16799             </descriptive>
16800             <Type name="TZDate"/>
16801           </Argument>
16802           <Argument name="successCallback">
16803             <descriptive>
16804                 <description><p>
16805  The method to call when the invocation ends successfully.
16806                 </p></description>
16807             </descriptive>
16808             <Type name="CalendarEventArraySuccessCallback"/>
16809           </Argument>
16810           <Argument optional="optional" name="errorCallback">
16811             <descriptive>
16812                 <description><p>
16813  The method to call when an error occurs.
16814                 </p></description>
16815             </descriptive>
16816             <Type name="ErrorCallback" nullable="nullable"/>
16817           </Argument>
16818         </ArgumentList>
16819         <Raises>
16820           <RaiseException name="WebAPIException">
16821             <descriptive>
16822                 <description><p>
16823  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
16824                 </p></description>
16825                 <description><p>
16826  with error type SecurityError, if the application does not have the privilege to call this method.
16827                 </p></description>
16828                 <description><p>
16829  with error type NotSupportedError, if the feature is not supported.
16830                 </p></description>
16831             </descriptive>
16832           </RaiseException>
16833         </Raises>
16834       </Operation>
16835     </Interface>
16836     <Dictionary name="CalendarAttendeeInit" id="::Calendar::CalendarAttendeeInit">
16837       <webidl>  dictionary CalendarAttendeeInit {
16838     DOMString name;
16839     <ref>AttendeeRole</ref> role;
16840     <ref>AttendeeStatus</ref> status;
16841     boolean RSVP;
16842     <ref>AttendeeType</ref> type;
16843     DOMString? group;
16844     DOMString delegatorURI;
16845     DOMString delegateURI;
16846     <ref>ContactRef</ref> contactRef;
16847   };</webidl>
16848       <descriptive>
16849           <brief>
16850  The properties of a <em>CalendarAttendee</em>, to pass to its constructor.
16851           </brief>
16852          <description>
16853           <p>
16854 See <em>CalendarAttendee </em>interface for more information about the members.
16855           </p>
16856          </description>
16857           <version>
16858  1.0
16859           </version>
16860       </descriptive>
16861       <DictionaryMember name="name" id="::Calendar::CalendarAttendeeInit::name">
16862         <webidl>    DOMString name;</webidl>
16863         <Type type="DOMString"/>
16864       </DictionaryMember>
16865       <DictionaryMember name="role" id="::Calendar::CalendarAttendeeInit::role">
16866         <webidl>    <ref>AttendeeRole</ref> role;</webidl>
16867         <Type name="AttendeeRole"/>
16868       </DictionaryMember>
16869       <DictionaryMember name="status" id="::Calendar::CalendarAttendeeInit::status">
16870         <webidl>    <ref>AttendeeStatus</ref> status;</webidl>
16871         <Type name="AttendeeStatus"/>
16872       </DictionaryMember>
16873       <DictionaryMember name="RSVP" id="::Calendar::CalendarAttendeeInit::RSVP">
16874         <webidl>    boolean RSVP;</webidl>
16875         <Type type="boolean"/>
16876       </DictionaryMember>
16877       <DictionaryMember name="type" id="::Calendar::CalendarAttendeeInit::type">
16878         <webidl>    <ref>AttendeeType</ref> type;</webidl>
16879         <Type name="AttendeeType"/>
16880       </DictionaryMember>
16881       <DictionaryMember name="group" id="::Calendar::CalendarAttendeeInit::group">
16882         <webidl>    DOMString? group;</webidl>
16883         <Type type="DOMString" nullable="nullable"/>
16884       </DictionaryMember>
16885       <DictionaryMember name="delegatorURI" id="::Calendar::CalendarAttendeeInit::delegatorURI">
16886         <webidl>    DOMString delegatorURI;</webidl>
16887         <Type type="DOMString"/>
16888       </DictionaryMember>
16889       <DictionaryMember name="delegateURI" id="::Calendar::CalendarAttendeeInit::delegateURI">
16890         <webidl>    DOMString delegateURI;</webidl>
16891         <Type type="DOMString"/>
16892       </DictionaryMember>
16893       <DictionaryMember name="contactRef" id="::Calendar::CalendarAttendeeInit::contactRef">
16894         <webidl>    <ref>ContactRef</ref> contactRef;</webidl>
16895         <Type name="ContactRef"/>
16896       </DictionaryMember>
16897     </Dictionary>
16898     <Interface name="CalendarAttendee" id="::Calendar::CalendarAttendee">
16899       <webidl>  [Constructor(DOMString uri, optional <ref>CalendarAttendeeInit</ref>? attendeeInitDict)]
16900   interface CalendarAttendee
16901   {
16902     attribute DOMString uri;
16903     
16904     attribute DOMString? name;
16905     
16906     attribute <ref>AttendeeRole</ref> role;
16907     
16908     attribute <ref>AttendeeStatus</ref> status;
16909     
16910     attribute boolean RSVP;
16911     
16912     attribute <ref>AttendeeType</ref> type;
16913      
16914     attribute DOMString? group;
16915       
16916     attribute DOMString? delegatorURI;
16917       
16918     attribute DOMString? delegateURI;
16919      
16920     attribute <ref>ContactRef</ref>? contactRef;
16921   };</webidl>
16922       <descriptive>
16923           <brief>
16924  This interface implements the <em>CalendarAttendee </em>object that contains information about an event attendee.
16925           </brief>
16926          <description>
16927           <p>
16928 By default, each of the attributes of this interface are undefined.
16929           </p>
16930           <p>
16931 (For more details, see RFC 5545, Section 3.8.4.1.)
16932           </p>
16933          </description>
16934           <version>
16935  1.0
16936           </version>
16937           <Code>  var attendee = new tizen.CalendarAttendee('mailto:bob@domain.com',
16938                                            {role: &quot;CHAIR&quot;, RSVP: true});
16939   event.attendees = [attendee];
16940  </Code>
16941       </descriptive>
16942       <ExtendedAttributeList>
16943         <ExtendedAttribute name="Constructor">
16944           <webidl>Constructor(DOMString uri, optional <ref>CalendarAttendeeInit</ref>? attendeeInitDict)</webidl>
16945           <ArgumentList>
16946             <Argument name="uri">
16947               <Type type="DOMString"/>
16948             </Argument>
16949             <Argument optional="optional" name="attendeeInitDict">
16950               <Type name="CalendarAttendeeInit" nullable="nullable"/>
16951             </Argument>
16952           </ArgumentList>
16953         </ExtendedAttribute>
16954       </ExtendedAttributeList>
16955       <Attribute name="uri" id="::Calendar::CalendarAttendee::uri">
16956         <webidl>    attribute DOMString uri;</webidl>
16957         <descriptive>
16958             <brief>
16959  An attribute to store the URI for the attendee.
16960             </brief>
16961            <description>
16962             <p>
16963 This is often an email in the form 'mailto:name@domain.com'.
16964             </p>
16965            </description>
16966             <version>
16967  1.0
16968             </version>
16969         </descriptive>
16970         <Type type="DOMString"/>
16971       </Attribute>
16972       <Attribute name="name" id="::Calendar::CalendarAttendee::name">
16973         <webidl>    attribute DOMString? name;</webidl>
16974         <descriptive>
16975             <brief>
16976  An attribute to store the name of an attendee.
16977             </brief>
16978             <version>
16979  1.0
16980             </version>
16981         </descriptive>
16982         <Type type="DOMString" nullable="nullable"/>
16983       </Attribute>
16984       <Attribute name="role" id="::Calendar::CalendarAttendee::role">
16985         <webidl>    attribute <ref>AttendeeRole</ref> role;</webidl>
16986         <descriptive>
16987             <brief>
16988  An attribute to denote the role of the attendee.
16989             </brief>
16990            <description>
16991             <p>
16992 (See RFC 5545, Section 3.2.16.)
16993             </p>
16994             <p>
16995 The default value is <var>REQ_PARTICIPANT</var>.
16996             </p>
16997            </description>
16998             <version>
16999  1.0
17000             </version>
17001         </descriptive>
17002         <Type name="AttendeeRole"/>
17003       </Attribute>
17004       <Attribute name="status" id="::Calendar::CalendarAttendee::status">
17005         <webidl>    attribute <ref>AttendeeStatus</ref> status;</webidl>
17006         <descriptive>
17007             <brief>
17008  An attribute to store the participant's attendance status.
17009 (See RFC 5545, Section 3.2.12.)
17010             </brief>
17011            <description>
17012             <p>
17013 The default value is <var>PENDING</var>.
17014             </p>
17015            </description>
17016             <version>
17017  1.0
17018             </version>
17019         </descriptive>
17020         <Type name="AttendeeStatus"/>
17021       </Attribute>
17022       <Attribute name="RSVP" id="::Calendar::CalendarAttendee::RSVP">
17023         <webidl>    attribute boolean RSVP;</webidl>
17024         <descriptive>
17025             <brief>
17026  An attribute to store the attendee's participation status reply (RSVP).
17027 (See RFC 5545, Section 3.2.17.)
17028             </brief>
17029            <description>
17030             <p>
17031 By default, this attribute is set to <var>FALSE</var>.
17032             </p>
17033            </description>
17034             <version>
17035  1.0
17036             </version>
17037         </descriptive>
17038         <Type type="boolean"/>
17039       </Attribute>
17040       <Attribute name="type" id="::Calendar::CalendarAttendee::type">
17041         <webidl>    attribute <ref>AttendeeType</ref> type;</webidl>
17042         <descriptive>
17043             <brief>
17044  An attribute to indicate the type of a participant.
17045 (See RFC 5545, Section 3.2.3.)
17046             </brief>
17047            <description>
17048             <p>
17049 The default value is <var>INDIVIDUAL</var>.
17050             </p>
17051            </description>
17052             <version>
17053  1.0
17054             </version>
17055         </descriptive>
17056         <Type name="AttendeeType"/>
17057       </Attribute>
17058       <Attribute name="group" id="::Calendar::CalendarAttendee::group">
17059         <webidl>    attribute DOMString? group;</webidl>
17060         <descriptive>
17061             <brief>
17062  An attribute to store the participant's group or list membership.
17063 (See RFC 5545, Section 3.2.11.)
17064             </brief>
17065             <version>
17066  1.0
17067             </version>
17068         </descriptive>
17069         <Type type="DOMString" nullable="nullable"/>
17070       </Attribute>
17071       <Attribute name="delegatorURI" id="::Calendar::CalendarAttendee::delegatorURI">
17072         <webidl>    attribute DOMString? delegatorURI;</webidl>
17073         <descriptive>
17074             <brief>
17075  An attribute to store the URI of the person who has delegated their participation to this attendee.
17076 (See RFC 5545, Section 3.2.4.)
17077             </brief>
17078             <version>
17079  1.0
17080             </version>
17081         </descriptive>
17082         <Type type="DOMString" nullable="nullable"/>
17083       </Attribute>
17084       <Attribute name="delegateURI" id="::Calendar::CalendarAttendee::delegateURI">
17085         <webidl>    attribute DOMString? delegateURI;</webidl>
17086         <descriptive>
17087             <brief>
17088  An attribute to stores the URI of the attendee to whom the person has delegated his participation.
17089 (See RFC 5545, Section 3.2.5.)
17090             </brief>
17091             <version>
17092  1.0
17093             </version>
17094         </descriptive>
17095         <Type type="DOMString" nullable="nullable"/>
17096       </Attribute>
17097       <Attribute name="contactRef" id="::Calendar::CalendarAttendee::contactRef">
17098         <webidl>    attribute <ref>ContactRef</ref>? contactRef;</webidl>
17099         <descriptive>
17100             <brief>
17101  An attribute to store the participant's reference in the Contact API.
17102             </brief>
17103            <description>
17104             <p>
17105 If the contact is not resolved, this attribute will be set to<var> null</var>.
17106 For more information, see the <a href="../../org.tizen.web.device.apireference/tizen/contact.html">Contact API</a>.
17107             </p>
17108            </description>
17109             <version>
17110  1.0
17111             </version>
17112         </descriptive>
17113         <Type name="ContactRef" nullable="nullable"/>
17114       </Attribute>
17115     </Interface>
17116     <Dictionary name="CalendarRecurrenceRuleInit" id="::Calendar::CalendarRecurrenceRuleInit">
17117       <webidl>  dictionary CalendarRecurrenceRuleInit {
17118     short interval;
17119     <ref>TZDate</ref> untilDate;
17120     long occurrenceCount;
17121     <ref>ByDayValue</ref>[] daysOfTheWeek;
17122     short[] setPositions;
17123     <ref>TZDate</ref>[] exceptions;
17124   };</webidl>
17125       <descriptive>
17126           <brief>
17127  The properties of a <em>CalendarRecurrenceRule</em> to pass to its constructor.
17128           </brief>
17129          <description>
17130           <p>
17131 For more information about the members, see <em>CalendarRecurrenceRule </em>interface.
17132           </p>
17133          </description>
17134           <version>
17135  1.0
17136           </version>
17137       </descriptive>
17138       <DictionaryMember name="interval" id="::Calendar::CalendarRecurrenceRuleInit::interval">
17139         <webidl>    short interval;</webidl>
17140         <Type type="short"/>
17141       </DictionaryMember>
17142       <DictionaryMember name="untilDate" id="::Calendar::CalendarRecurrenceRuleInit::untilDate">
17143         <webidl>    <ref>TZDate</ref> untilDate;</webidl>
17144         <Type name="TZDate"/>
17145       </DictionaryMember>
17146       <DictionaryMember name="occurrenceCount" id="::Calendar::CalendarRecurrenceRuleInit::occurrenceCount">
17147         <webidl>    long occurrenceCount;</webidl>
17148         <Type type="long"/>
17149       </DictionaryMember>
17150       <DictionaryMember name="daysOfTheWeek" id="::Calendar::CalendarRecurrenceRuleInit::daysOfTheWeek">
17151         <webidl>    <ref>ByDayValue</ref>[] daysOfTheWeek;</webidl>
17152         <Type type="array">
17153           <Type name="ByDayValue"/>
17154         </Type>
17155       </DictionaryMember>
17156       <DictionaryMember name="setPositions" id="::Calendar::CalendarRecurrenceRuleInit::setPositions">
17157         <webidl>    short[] setPositions;</webidl>
17158         <Type type="array">
17159           <Type type="short"/>
17160         </Type>
17161       </DictionaryMember>
17162       <DictionaryMember name="exceptions" id="::Calendar::CalendarRecurrenceRuleInit::exceptions">
17163         <webidl>    <ref>TZDate</ref>[] exceptions;</webidl>
17164         <Type type="array">
17165           <Type name="TZDate"/>
17166         </Type>
17167       </DictionaryMember>
17168     </Dictionary>
17169     <Interface name="CalendarRecurrenceRule" id="::Calendar::CalendarRecurrenceRule">
17170       <webidl>  [Constructor(<ref>RecurrenceRuleFrequency</ref> frequency, optional <ref>CalendarRecurrenceRuleInit</ref>? ruleInitDict)]
17171   interface CalendarRecurrenceRule
17172   { 
17173     attribute <ref>RecurrenceRuleFrequency</ref> frequency;
17174     
17175     attribute unsigned short interval;
17176     
17177     attribute <ref>TZDate</ref>? untilDate;
17178     
17179     attribute long occurrenceCount;
17180     
17181     attribute <ref>ByDayValue</ref>[] daysOfTheWeek;
17182     
17183     attribute short[] setPositions;
17184     
17185     attribute <ref>TZDate</ref>[] exceptions;
17186   };</webidl>
17187       <descriptive>
17188           <brief>
17189  This interface implements the<em> CalendarRecurrenceRule </em>object, which contains information about the recurrence of an event.
17190 (See RFC 5545, Section 3.3.10.)
17191           </brief>
17192           <version>
17193  1.0
17194           </version>
17195           <Code>  // Repeats daily for 7 days
17196   var rule = new tizen.CalendarRecurrenceRule(&quot;DAILY&quot;, {occurrenceCount:7});
17197   event.recurrenceRule = rule;
17198  </Code>
17199       </descriptive>
17200       <ExtendedAttributeList>
17201         <ExtendedAttribute name="Constructor">
17202           <webidl>Constructor(<ref>RecurrenceRuleFrequency</ref> frequency, optional <ref>CalendarRecurrenceRuleInit</ref>? ruleInitDict)</webidl>
17203           <ArgumentList>
17204             <Argument name="frequency">
17205               <Type name="RecurrenceRuleFrequency"/>
17206             </Argument>
17207             <Argument optional="optional" name="ruleInitDict">
17208               <Type name="CalendarRecurrenceRuleInit" nullable="nullable"/>
17209             </Argument>
17210           </ArgumentList>
17211         </ExtendedAttribute>
17212       </ExtendedAttributeList>
17213       <Attribute name="frequency" id="::Calendar::CalendarRecurrenceRule::frequency">
17214         <webidl>    attribute <ref>RecurrenceRuleFrequency</ref> frequency;</webidl>
17215         <descriptive>
17216             <brief>
17217  An attribute to store the frequency of a recurrence rule.
17218             </brief>
17219            <description>
17220             <p>
17221 This property corresponds to <em>FREQ</em> in RFC 5545.
17222             </p>
17223            </description>
17224             <version>
17225  1.0
17226             </version>
17227         </descriptive>
17228         <Type name="RecurrenceRuleFrequency"/>
17229       </Attribute>
17230       <Attribute name="interval" id="::Calendar::CalendarRecurrenceRule::interval">
17231         <webidl>    attribute unsigned short interval;</webidl>
17232         <descriptive>
17233             <brief>
17234  An attribute to specify how often the recurrence rule repeats over the unit of time indicated by its frequency.
17235             </brief>
17236            <description>
17237             <p>
17238 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.
17239             </p>
17240             <p>
17241 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.
17242             </p>
17243             <p>
17244 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>.
17245             </p>
17246             <p>
17247 This property corresponds to <em>INTERVAL</em> in RFC 5545.
17248             </p>
17249            </description>
17250             <version>
17251  1.0
17252             </version>
17253         </descriptive>
17254         <Type type="unsigned short"/>
17255       </Attribute>
17256       <Attribute name="untilDate" id="::Calendar::CalendarRecurrenceRule::untilDate">
17257         <webidl>    attribute <ref>TZDate</ref>? untilDate;</webidl>
17258         <descriptive>
17259             <brief>
17260  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).
17261             </brief>
17262            <description>
17263             <p>
17264 By default, this attribute is set to <var>null</var>, meaning that the event recurs infinitely, unless <em>occurrenceCount </em>is set.
17265             </p>
17266             <p>
17267 This attribute is precise to the second. Milliseconds are ignored.
17268             </p>
17269             <p>
17270 This property corresponds to <em>UNTIL</em> in RFC 5545.
17271             </p>
17272            </description>
17273             <version>
17274  1.0
17275             </version>
17276         </descriptive>
17277         <Type name="TZDate" nullable="nullable"/>
17278       </Attribute>
17279       <Attribute name="occurrenceCount" id="::Calendar::CalendarRecurrenceRule::occurrenceCount">
17280         <webidl>    attribute long occurrenceCount;</webidl>
17281         <descriptive>
17282             <brief>
17283  An attribute to indicate the number of occurrences of a recurring event.
17284             </brief>
17285            <description>
17286             <p>
17287 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).
17288             </p>
17289             <p>
17290 By default, this attribute is set to <var>-1</var>, meaning that the event recurs infinitely, unless <em>untilDate </em>is set.
17291             </p>
17292             <p>
17293 This property corresponds to <em>COUNT</em> in RFC 5545.
17294             </p>
17295            </description>
17296             <version>
17297  1.0
17298             </version>
17299         </descriptive>
17300         <Type type="long"/>
17301       </Attribute>
17302       <Attribute name="daysOfTheWeek" id="::Calendar::CalendarRecurrenceRule::daysOfTheWeek">
17303         <webidl>    attribute <ref>ByDayValue</ref>[] daysOfTheWeek;</webidl>
17304         <descriptive>
17305             <brief>
17306  An attribute to store the days of the week associated with the recurrence rule.
17307             </brief>
17308            <description>
17309             <p>
17310 This property value is valid only for recurrence rules with a frequency type of <em>WEEKLY</em>, <em>MONTHLY</em>, and <em>YEARLY</em>.
17311             </p>
17312             <p>
17313 This property corresponds to <em>BYDAY</em> in RFC 5545.
17314             </p>
17315             <p>
17316 By default, this attribute is set to an empty array.
17317             </p>
17318            </description>
17319             <version>
17320  1.0
17321             </version>
17322         </descriptive>
17323         <Type type="array">
17324           <Type name="ByDayValue"/>
17325         </Type>
17326       </Attribute>
17327       <Attribute name="setPositions" id="::Calendar::CalendarRecurrenceRule::setPositions">
17328         <webidl>    attribute short[] setPositions;</webidl>
17329         <descriptive>
17330             <brief>
17331  An attribute to store a list of ordinal numbers that filters which recurrences to include in the recurrence rule's frequency.
17332             </brief>
17333            <description>
17334             <p>
17335 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.
17336             </p>
17337             <p>
17338 Values can be from 1 to 366 or -366 to -1. 
17339 Negative values indicate counting backwards from the end of the recurrence rule's frequency (week, month, or year). 
17340             </p>
17341             <p>
17342 This attribute must only be used in conjunction with another BYxxx rule part (such as <em>daysOfTheWeek</em>).
17343             </p>
17344             <p>
17345 This property corresponds to <em>BYSETPOS</em> in RFC 5545.
17346             </p>
17347             <p>
17348 By default, this attribute is set to an empty array.
17349             </p>
17350            </description>
17351             <version>
17352  1.0
17353             </version>
17354         </descriptive>
17355         <Type type="array">
17356           <Type type="short"/>
17357         </Type>
17358       </Attribute>
17359       <Attribute name="exceptions" id="::Calendar::CalendarRecurrenceRule::exceptions">
17360         <webidl>    attribute <ref>TZDate</ref>[] exceptions;</webidl>
17361         <descriptive>
17362             <brief>
17363  An attribute to list date/time exceptions for the recurring event.
17364 (See RFC 5545, Section 3.8.5.1.) 
17365             </brief>
17366            <description>
17367             <p>
17368 This attribute is precise to the second. Milliseconds are ignored.
17369             </p>
17370             <p>
17371 This property corresponds to <em>EXDATE</em> in RFC 5545.
17372             </p>
17373             <p>
17374 By default, this attribute is set to an empty array.
17375             </p>
17376            </description>
17377             <version>
17378  1.0
17379             </version>
17380         </descriptive>
17381         <Type type="array">
17382           <Type name="TZDate"/>
17383         </Type>
17384       </Attribute>
17385     </Interface>
17386     <Interface name="CalendarEventId" id="::Calendar::CalendarEventId">
17387       <webidl>  [Constructor(DOMString uid, optional DOMString? rid)]
17388   interface CalendarEventId {
17389     attribute DOMString uid;
17390     
17391     attribute DOMString? rid;
17392   };</webidl>
17393       <descriptive>
17394           <brief>
17395  This interface contains a UID and an optional recurrence ID attribute to identify calendar events.
17396           </brief>
17397          <description>
17398           <p>
17399 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.
17400           </p>
17401          </description>
17402           <version>
17403  1.0
17404           </version>
17405       </descriptive>
17406       <ExtendedAttributeList>
17407         <ExtendedAttribute name="Constructor">
17408           <webidl>Constructor(DOMString uid, optional DOMString? rid)</webidl>
17409           <ArgumentList>
17410             <Argument name="uid">
17411               <Type type="DOMString"/>
17412             </Argument>
17413             <Argument optional="optional" name="rid">
17414               <Type type="DOMString" nullable="nullable"/>
17415             </Argument>
17416           </ArgumentList>
17417         </ExtendedAttribute>
17418       </ExtendedAttributeList>
17419       <Attribute name="uid" id="::Calendar::CalendarEventId::uid">
17420         <webidl>    attribute DOMString uid;</webidl>
17421         <descriptive>
17422             <brief>
17423  An attribute to persistently, and uniquely identify a calendar event.
17424             </brief>
17425            <description>
17426             <p>
17427 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.
17428             </p>
17429             <p>
17430 See RFC 5545 (section 3.8.4.7) for more details about this parameter and algorithms to guarantee assignment of unique values.
17431 This value is assigned by the platform when the <em>add()</em> method is successfully invoked.
17432             </p>
17433            </description>
17434             <version>
17435  1.0
17436             </version>
17437         </descriptive>
17438         <Type type="DOMString"/>
17439       </Attribute>
17440       <Attribute name="rid" id="::Calendar::CalendarEventId::rid">
17441         <webidl>    attribute DOMString? rid;</webidl>
17442         <descriptive>
17443             <brief>
17444  An attribute to store the recurrence ID of a <em>CalendarEvent </em>instance.
17445             </brief>
17446            <description>
17447             <p>
17448 This attribute is used in conjunction with the <em>uid</em> property to identify a specific instance of a recurring event.
17449             </p>
17450             <p>
17451 The parent of a recurrence instance has its <em>rid</em> set to <var>null</var>.
17452             </p>
17453             <p>
17454 By default, this attribute is set to <var>null</var>.
17455 (See RFC 5545 (section 3.8.4.4) for more details about this parameter.)
17456             </p>
17457            </description>
17458             <version>
17459  1.0
17460             </version>
17461         </descriptive>
17462         <Type type="DOMString" nullable="nullable"/>
17463       </Attribute>
17464     </Interface>
17465     <Interface name="CalendarAlarm" id="::Calendar::CalendarAlarm">
17466       <webidl>  [Constructor(<ref>TZDate</ref> absoluteDate, <ref>AlarmMethod</ref> method, optional DOMString? description),
17467    Constructor(<ref>TimeDuration</ref> before, <ref>AlarmMethod</ref> method, optional DOMString? description)]
17468   interface CalendarAlarm {
17469     attribute <ref>TZDate</ref>? absoluteDate setraises(<ref>WebAPIException</ref>);
17470     
17471     attribute <ref>TimeDuration</ref>? before setraises(<ref>WebAPIException</ref>);
17472   
17473     attribute <ref>AlarmMethod</ref> method setraises(<ref>WebAPIException</ref>);
17474     
17475     attribute DOMString? description;
17476   };</webidl>
17477       <descriptive>
17478           <brief>
17479  An interface that contains information related to an event alarm or reminder.
17480           </brief>
17481           <version>
17482  1.0
17483           </version>
17484           <Code>  // Creates a sound alarm 30 minutes before the event's start time
17485   var alarm = new tizen.CalendarAlarm(new tizen.TimeDuration(30, &quot;MINS&quot;), &quot;SOUND&quot;);
17486  </Code>
17487       </descriptive>
17488       <ExtendedAttributeList>
17489         <ExtendedAttribute name="Constructor">
17490           <webidl>Constructor(<ref>TZDate</ref> absoluteDate, <ref>AlarmMethod</ref> method, optional DOMString? description)</webidl>
17491           <ArgumentList>
17492             <Argument name="absoluteDate">
17493               <Type name="TZDate"/>
17494             </Argument>
17495             <Argument name="method">
17496               <Type name="AlarmMethod"/>
17497             </Argument>
17498             <Argument optional="optional" name="description">
17499               <Type type="DOMString" nullable="nullable"/>
17500             </Argument>
17501           </ArgumentList>
17502         </ExtendedAttribute>
17503         <ExtendedAttribute name="Constructor">
17504           <webidl>   Constructor(<ref>TimeDuration</ref> before, <ref>AlarmMethod</ref> method, optional DOMString? description)</webidl>
17505           <ArgumentList>
17506             <Argument name="before">
17507               <Type name="TimeDuration"/>
17508             </Argument>
17509             <Argument name="method">
17510               <Type name="AlarmMethod"/>
17511             </Argument>
17512             <Argument optional="optional" name="description">
17513               <Type type="DOMString" nullable="nullable"/>
17514             </Argument>
17515           </ArgumentList>
17516         </ExtendedAttribute>
17517       </ExtendedAttributeList>
17518       <Attribute name="absoluteDate" id="::Calendar::CalendarAlarm::absoluteDate">
17519         <webidl>    attribute <ref>TZDate</ref>? absoluteDate setraises(<ref>WebAPIException</ref>);</webidl>
17520         <descriptive>
17521             <brief>
17522  An attribute to record the absolute date and time when an alarm should be triggered.
17523             </brief>
17524            <description>
17525             <p>
17526 <em>absoluteDate </em>and <em>before </em>are mutually exclusive.
17527             </p>
17528             <p>
17529 This attribute is precise to the second. Milliseconds are ignored.
17530             </p>
17531            </description>
17532             <version>
17533  1.0
17534             </version>
17535         </descriptive>
17536         <Type name="TZDate" nullable="nullable"/>
17537         <SetRaises>
17538           <RaiseException name="WebAPIException"/>
17539         </SetRaises>
17540       </Attribute>
17541       <Attribute name="before" id="::Calendar::CalendarAlarm::before">
17542         <webidl>    attribute <ref>TimeDuration</ref>? before setraises(<ref>WebAPIException</ref>);</webidl>
17543         <descriptive>
17544             <brief>
17545  An attribute to store the duration before an event starts on which the alarm should be triggered.
17546             </brief>
17547            <description>
17548             <p>
17549 The duration should be positive.
17550             </p>
17551             <p>
17552 <em>absoluteDate </em>and <em>before </em>are mutually exclusive.
17553             </p>
17554             <p>
17555 This attribute is precise to the second. Milliseconds are ignored.
17556             </p>
17557            </description>
17558             <version>
17559  1.0
17560             </version>
17561         </descriptive>
17562         <Type name="TimeDuration" nullable="nullable"/>
17563         <SetRaises>
17564           <RaiseException name="WebAPIException"/>
17565         </SetRaises>
17566       </Attribute>
17567       <Attribute name="method" id="::Calendar::CalendarAlarm::method">
17568         <webidl>    attribute <ref>AlarmMethod</ref> method setraises(<ref>WebAPIException</ref>);</webidl>
17569         <descriptive>
17570             <brief>
17571  An attribute to denote the notification method used by an alarm.
17572             </brief>
17573             <version>
17574  1.0
17575             </version>
17576         </descriptive>
17577         <Type name="AlarmMethod"/>
17578         <SetRaises>
17579           <RaiseException name="WebAPIException"/>
17580         </SetRaises>
17581       </Attribute>
17582       <Attribute name="description" id="::Calendar::CalendarAlarm::description">
17583         <webidl>    attribute DOMString? description;</webidl>
17584         <descriptive>
17585             <brief>
17586  An attribute to store the description of an alarm.
17587             </brief>
17588            <description>
17589             <p>
17590 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.
17591             </p>
17592             <p>
17593 The default value is an empty string.
17594             </p>
17595            </description>
17596             <version>
17597  1.0
17598             </version>
17599         </descriptive>
17600         <Type type="DOMString" nullable="nullable"/>
17601       </Attribute>
17602     </Interface>
17603     <Interface name="CalendarEventArraySuccessCallback" id="::Calendar::CalendarEventArraySuccessCallback">
17604       <webidl>  [Callback=FunctionOnly, NoInterfaceObject]
17605   interface CalendarEventArraySuccessCallback {
17606     void onsuccess(<ref>CalendarEvent</ref>[] events);
17607   };</webidl>
17608       <descriptive>
17609           <brief>
17610  An interface that implements the success callback used in the asynchronous operation for retrieving a list of calendar events.
17611           </brief>
17612           <version>
17613  1.0
17614           </version>
17615       </descriptive>
17616       <ExtendedAttributeList>
17617         <ExtendedAttribute name="Callback" value="FunctionOnly">
17618           <webidl>Callback</webidl>
17619         </ExtendedAttribute>
17620         <ExtendedAttribute name="NoInterfaceObject">
17621           <webidl> NoInterfaceObject</webidl>
17622         </ExtendedAttribute>
17623       </ExtendedAttributeList>
17624       <Operation name="onsuccess" id="::Calendar::CalendarEventArraySuccessCallback::onsuccess">
17625         <webidl>    void onsuccess(<ref>CalendarEvent</ref>[] events);</webidl>
17626         <descriptive>
17627             <brief>
17628  Called when the list of calendar events is retrieved successfully.
17629             </brief>
17630             <version>
17631  1.0
17632             </version>
17633         </descriptive>
17634         <Type type="void"/>
17635         <ArgumentList>
17636           <Argument name="events">
17637             <descriptive>
17638                 <description><p>
17639  The array of <em>CalendarEvent </em>objects.
17640                 </p></description>
17641             </descriptive>
17642             <Type type="array">
17643               <Type name="CalendarEvent"/>
17644             </Type>
17645           </Argument>
17646         </ArgumentList>
17647       </Operation>
17648     </Interface>
17649     <Interface name="CalendarItemArraySuccessCallback" id="::Calendar::CalendarItemArraySuccessCallback">
17650       <webidl>  [Callback=FunctionOnly, NoInterfaceObject]
17651   interface CalendarItemArraySuccessCallback {
17652     void onsuccess(<ref>CalendarItem</ref>[] items);
17653   };</webidl>
17654       <descriptive>
17655           <brief>
17656  This interface implements the success callback used in the asynchronous operation for retrieving a list of calendar items.
17657           </brief>
17658           <version>
17659  1.0
17660           </version>
17661       </descriptive>
17662       <ExtendedAttributeList>
17663         <ExtendedAttribute name="Callback" value="FunctionOnly">
17664           <webidl>Callback</webidl>
17665         </ExtendedAttribute>
17666         <ExtendedAttribute name="NoInterfaceObject">
17667           <webidl> NoInterfaceObject</webidl>
17668         </ExtendedAttribute>
17669       </ExtendedAttributeList>
17670       <Operation name="onsuccess" id="::Calendar::CalendarItemArraySuccessCallback::onsuccess">
17671         <webidl>    void onsuccess(<ref>CalendarItem</ref>[] items);</webidl>
17672         <descriptive>
17673             <brief>
17674  Called when the list of calendar items is retrieved successfully.
17675             </brief>
17676             <version>
17677  1.0
17678             </version>
17679         </descriptive>
17680         <Type type="void"/>
17681         <ArgumentList>
17682           <Argument name="items">
17683             <descriptive>
17684                 <description><p>
17685  The array of <em>CalendarItem </em>objects.
17686                 </p></description>
17687             </descriptive>
17688             <Type type="array">
17689               <Type name="CalendarItem"/>
17690             </Type>
17691           </Argument>
17692         </ArgumentList>
17693       </Operation>
17694     </Interface>
17695     <Interface name="CalendarArraySuccessCallback" id="::Calendar::CalendarArraySuccessCallback">
17696       <webidl>  [Callback=FunctionOnly, NoInterfaceObject]
17697   interface CalendarArraySuccessCallback {
17698     void onsuccess(<ref>Calendar</ref>[] calendars);
17699   };</webidl>
17700       <descriptive>
17701           <brief>
17702  This interface implements the success callback used in the asynchronous operation to get a list of calendars using the <em>getCalendars()</em> method.
17703           </brief>
17704           <version>
17705  1.0
17706           </version>
17707       </descriptive>
17708       <ExtendedAttributeList>
17709         <ExtendedAttribute name="Callback" value="FunctionOnly">
17710           <webidl>Callback</webidl>
17711         </ExtendedAttribute>
17712         <ExtendedAttribute name="NoInterfaceObject">
17713           <webidl> NoInterfaceObject</webidl>
17714         </ExtendedAttribute>
17715       </ExtendedAttributeList>
17716       <Operation name="onsuccess" id="::Calendar::CalendarArraySuccessCallback::onsuccess">
17717         <webidl>    void onsuccess(<ref>Calendar</ref>[] calendars);</webidl>
17718         <descriptive>
17719             <brief>
17720  Called when the array of <em>Calendar </em>objects is retrieved successfully.
17721             </brief>
17722             <version>
17723  1.0
17724             </version>
17725         </descriptive>
17726         <Type type="void"/>
17727         <ArgumentList>
17728           <Argument name="calendars">
17729             <descriptive>
17730                 <description><p>
17731  The array of <em>Calendar </em>objects.
17732                 </p></description>
17733             </descriptive>
17734             <Type type="array">
17735               <Type name="Calendar"/>
17736             </Type>
17737           </Argument>
17738         </ArgumentList>
17739       </Operation>
17740     </Interface>
17741     <Interface name="CalendarChangeCallback" id="::Calendar::CalendarChangeCallback">
17742       <webidl>  [Callback, NoInterfaceObject] interface CalendarChangeCallback {
17743     void onitemsadded(<ref>CalendarItem</ref>[] items);
17744     
17745     void onitemsupdated(<ref>CalendarItem</ref>[] items);
17746     
17747     void onitemsremoved(<ref>CalendarItemId</ref>[] ids);
17748   };</webidl>
17749       <descriptive>
17750           <brief>
17751  This interface specifies a set of methods that will be invoked every time a calendar change occurs (calendar item addition/update/removal).
17752           </brief>
17753           <version>
17754  1.0
17755           </version>
17756       </descriptive>
17757       <ExtendedAttributeList>
17758         <ExtendedAttribute name="Callback">
17759           <webidl>Callback</webidl>
17760         </ExtendedAttribute>
17761         <ExtendedAttribute name="NoInterfaceObject">
17762           <webidl> NoInterfaceObject</webidl>
17763         </ExtendedAttribute>
17764       </ExtendedAttributeList>
17765       <Operation name="onitemsadded" id="::Calendar::CalendarChangeCallback::onitemsadded">
17766         <webidl>    void onitemsadded(<ref>CalendarItem</ref>[] items);</webidl>
17767         <descriptive>
17768             <brief>
17769  Called when items are added to the calendar.
17770             </brief>
17771             <version>
17772  1.0
17773             </version>
17774         </descriptive>
17775         <Type type="void"/>
17776         <ArgumentList>
17777           <Argument name="items">
17778             <descriptive>
17779                 <description><p>
17780  The list of items that were added.
17781                 </p></description>
17782             </descriptive>
17783             <Type type="array">
17784               <Type name="CalendarItem"/>
17785             </Type>
17786           </Argument>
17787         </ArgumentList>
17788       </Operation>
17789       <Operation name="onitemsupdated" id="::Calendar::CalendarChangeCallback::onitemsupdated">
17790         <webidl>    void onitemsupdated(<ref>CalendarItem</ref>[] items);</webidl>
17791         <descriptive>
17792             <brief>
17793  Called when items are updated in the calendar.
17794             </brief>
17795             <version>
17796  1.0
17797             </version>
17798         </descriptive>
17799         <Type type="void"/>
17800         <ArgumentList>
17801           <Argument name="items">
17802             <descriptive>
17803                 <description><p>
17804  The list of items that were updated.
17805                 </p></description>
17806             </descriptive>
17807             <Type type="array">
17808               <Type name="CalendarItem"/>
17809             </Type>
17810           </Argument>
17811         </ArgumentList>
17812       </Operation>
17813       <Operation name="onitemsremoved" id="::Calendar::CalendarChangeCallback::onitemsremoved">
17814         <webidl>    void onitemsremoved(<ref>CalendarItemId</ref>[] ids);</webidl>
17815         <descriptive>
17816             <brief>
17817  Called when item are removed from the calendar.
17818             </brief>
17819             <version>
17820  1.0
17821             </version>
17822         </descriptive>
17823         <Type type="void"/>
17824         <ArgumentList>
17825           <Argument name="ids">
17826             <descriptive>
17827                 <description><p>
17828  The list of identifiers for the items that were removed.
17829                 </p></description>
17830             </descriptive>
17831             <Type type="array">
17832               <Type name="CalendarItemId"/>
17833             </Type>
17834           </Argument>
17835         </ArgumentList>
17836       </Operation>
17837     </Interface>
17838   </Module>
17839   <Module name="Callhistory" id="::Callhistory">
17840     <webidl>module Callhistory {
17841     [NoInterfaceObject] interface CallHistoryObject {
17842         readonly attribute <ref>CallHistory</ref> callhistory;
17843     };
17844     
17845     <ref>Tizen</ref> implements <ref>CallHistoryObject</ref>;
17846
17847     [NoInterfaceObject] interface RemoteParty {
17848         readonly attribute DOMString? remoteParty;
17849
17850         readonly attribute <ref>PersonId</ref>? personId;
17851
17852     };
17853
17854     [NoInterfaceObject] interface CallHistoryEntry {
17855     
17856         readonly attribute DOMString uid;
17857
17858         readonly attribute DOMString type;
17859
17860         readonly attribute DOMString[]? features;
17861
17862         readonly attribute <ref>RemoteParty</ref>[] remoteParties;
17863
17864         readonly attribute Date startTime;
17865
17866         readonly attribute unsigned long duration;
17867
17868         attribute DOMString direction;
17869     };
17870
17871     [NoInterfaceObject] interface CallHistory {
17872
17873         void find(<ref>CallHistoryEntryArraySuccessCallback</ref> successCallback,
17874                   optional <ref>ErrorCallback</ref>? errorCallback,
17875                   optional <ref>AbstractFilter</ref>? filter,
17876                   optional <ref>SortMode</ref>? sortMode,
17877                   optional unsigned long? limit,
17878                   optional unsigned long? offset) raises(<ref>WebAPIException</ref>);
17879
17880         void remove(<ref>CallHistoryEntry</ref> entry) raises(<ref>WebAPIException</ref>);
17881
17882         void removeBatch(<ref>CallHistoryEntry</ref>[] entries,
17883                          optional <ref>SuccessCallback</ref>? successCallback,
17884                          optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
17885
17886         void removeAll(optional <ref>SuccessCallback</ref>? successCallback,
17887                        optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
17888
17889         long addChangeListener(<ref>CallHistoryChangeCallback</ref> observer) raises(<ref>WebAPIException</ref>);
17890
17891         void removeChangeListener(long handle) raises(<ref>WebAPIException</ref>);
17892     };
17893
17894     [Callback=FunctionOnly, NoInterfaceObject] interface CallHistoryEntryArraySuccessCallback {
17895         void onsuccess(<ref>CallHistoryEntry</ref>[] entries);
17896     };
17897
17898     [Callback, NoInterfaceObject]
17899     interface CallHistoryChangeCallback {
17900         void onadded(<ref>CallHistoryEntry</ref>[] newItems);
17901
17902         void onchanged(<ref>CallHistoryEntry</ref>[] changedItems);
17903
17904         void onremoved(DOMString[] removedItems);
17905     };
17906 };</webidl>
17907     <descriptive>
17908         <brief>
17909  This API provides interfaces and methods for retrieving information from the call history.
17910         </brief>
17911        <description>
17912         <p>
17913 For more information on the Callhistory features, see <a href="../../org.tizen.web.appprogramming/html/guide/social_guide/call.htm">Call History Guide</a>.  
17914         </p>
17915        </description>
17916         <version>
17917  2.0
17918         </version>
17919         <def-api-feature identifier="http://tizen.org/feature/network.telephony">
17920           <descriptive>
17921            <description>
17922             <p>
17923 To guarantee this application running on a device with Telephony feature, define below in the config file: 
17924             </p>
17925            </description>
17926           </descriptive>
17927         </def-api-feature>
17928     </descriptive>
17929     <Interface name="CallHistoryObject" id="::Callhistory::CallHistoryObject">
17930       <webidl>    [NoInterfaceObject] interface CallHistoryObject {
17931         readonly attribute <ref>CallHistory</ref> callhistory;
17932     };</webidl>
17933       <descriptive>
17934           <brief>
17935  This interface defines what is instantiated by the <em>Tizen </em>object from the Tizen Platform.
17936 The <em>tizen.callhistory<em> object allows access to the CallHistory API.
17937 </em></em>          </brief>
17938           <version>
17939  2.0
17940           </version>
17941       </descriptive>
17942       <ExtendedAttributeList>
17943         <ExtendedAttribute name="NoInterfaceObject">
17944           <webidl>NoInterfaceObject</webidl>
17945         </ExtendedAttribute>
17946       </ExtendedAttributeList>
17947       <Attribute readonly="readonly" name="callhistory" id="::Callhistory::CallHistoryObject::callhistory">
17948         <webidl>        readonly attribute <ref>CallHistory</ref> callhistory;</webidl>
17949         <Type name="CallHistory"/>
17950       </Attribute>
17951     </Interface>
17952     <Implements name1="Tizen" name2="CallHistoryObject">
17953       <webidl>    <ref>Tizen</ref> implements <ref>CallHistoryObject</ref>;</webidl>
17954       <descriptive>
17955           <brief>
17956  The CallHistory interface is available from the <em>Tizen </em>object through the <em>Window </em>object.
17957           </brief>
17958           <version>
17959  2.0
17960           </version>
17961       </descriptive>
17962     </Implements>
17963     <Interface name="RemoteParty" id="::Callhistory::RemoteParty">
17964       <webidl>    [NoInterfaceObject] interface RemoteParty {
17965         readonly attribute DOMString? remoteParty;
17966
17967         readonly attribute <ref>PersonId</ref>? personId;
17968
17969     };</webidl>
17970       <descriptive>
17971           <brief>
17972  This interface represents remote parties.
17973           </brief>
17974           <version>
17975  2.0
17976           </version>
17977       </descriptive>
17978       <ExtendedAttributeList>
17979         <ExtendedAttribute name="NoInterfaceObject">
17980           <webidl>NoInterfaceObject</webidl>
17981         </ExtendedAttribute>
17982       </ExtendedAttributeList>
17983       <Attribute readonly="readonly" name="remoteParty" id="::Callhistory::RemoteParty::remoteParty">
17984         <webidl>        readonly attribute DOMString? remoteParty;</webidl>
17985         <descriptive>
17986             <brief>
17987  An attribute to store the remote party identifier (RPID).
17988 The RPID is a unique identifier used by a service with call capability. It also includes phone numbers.
17989 Contacts are also defined per service, so an RPID can be resolved to a Contact.
17990 A <var>null </var>value means that the remote is hidden (private number).
17991             </brief>
17992             <version>
17993  2.0 
17994             </version>
17995         </descriptive>
17996         <Type type="DOMString" nullable="nullable"/>
17997       </Attribute>
17998       <Attribute readonly="readonly" name="personId" id="::Callhistory::RemoteParty::personId">
17999         <webidl>        readonly attribute <ref>PersonId</ref>? personId;</webidl>
18000         <descriptive>
18001             <brief>
18002  An attribute to store the identifier of the person that the raw contact belongs to.
18003             </brief>
18004            <description>
18005             <p>
18006 If the contact cannot be resolved, the value is <var>null</var>.
18007 See <a href="../../org.tizen.web.device.apireference/tizen/contact.html">Contact API</a> for more information.
18008             </p>
18009            </description>
18010             <version>
18011  2.0
18012             </version>
18013         </descriptive>
18014         <Type name="PersonId" nullable="nullable"/>
18015       </Attribute>
18016     </Interface>
18017     <Interface name="CallHistoryEntry" id="::Callhistory::CallHistoryEntry">
18018       <webidl>    [NoInterfaceObject] interface CallHistoryEntry {
18019     
18020         readonly attribute DOMString uid;
18021
18022         readonly attribute DOMString type;
18023
18024         readonly attribute DOMString[]? features;
18025
18026         readonly attribute <ref>RemoteParty</ref>[] remoteParties;
18027
18028         readonly attribute Date startTime;
18029
18030         readonly attribute unsigned long duration;
18031
18032         attribute DOMString direction;
18033     };</webidl>
18034       <descriptive>
18035           <brief>
18036  This interface represents the subset of properties of calls, which become a call record in the call history after the call ends.
18037           </brief>
18038           <version>
18039  2.0
18040           </version>
18041       </descriptive>
18042       <ExtendedAttributeList>
18043         <ExtendedAttribute name="NoInterfaceObject">
18044           <webidl>NoInterfaceObject</webidl>
18045         </ExtendedAttribute>
18046       </ExtendedAttributeList>
18047       <Attribute readonly="readonly" name="uid" id="::Callhistory::CallHistoryEntry::uid">
18048         <webidl>        readonly attribute DOMString uid;</webidl>
18049         <descriptive>
18050             <brief>
18051  An attribute to store the unique identifier of a call record.
18052             </brief>
18053             <version>
18054  2.0
18055             </version>
18056         </descriptive>
18057         <Type type="DOMString"/>
18058       </Attribute>
18059       <Attribute readonly="readonly" name="type" id="::Callhistory::CallHistoryEntry::type">
18060         <webidl>        readonly attribute DOMString type;</webidl>
18061         <descriptive>
18062             <brief>
18063  An attribute to store the service type of the call saved to call history.
18064             </brief>
18065            <description>
18066             <p>
18067 The following values are the supported:
18068             </p>
18069             <ul>
18070               <li>
18071 TEL - for all protocols with phone number addressing (PSTN, GSM, CDMA, LTE, etc.)               </li>
18072               <li>
18073 XMPP -  for generic XMPP calls              </li>
18074               <li>
18075 SIP - for generic SIP calls              </li>
18076             </ul>
18077            </description>
18078             <version>
18079  2.0
18080             </version>
18081         </descriptive>
18082         <Type type="DOMString"/>
18083       </Attribute>
18084       <Attribute readonly="readonly" name="features" id="::Callhistory::CallHistoryEntry::features">
18085         <webidl>        readonly attribute DOMString[]? features;</webidl>
18086         <descriptive>
18087             <brief>
18088  An attributes to store the features associated with the call service saved to call history.
18089 The following values are the supported:
18090             </brief>
18091            <description>
18092             <ul>
18093               <li>
18094 CALL - for all call types              </li>
18095               <li>
18096 VOICECALL - for voice-only calls               </li>
18097               <li>
18098 VIDEOCALL - for audio and video channel support in the call              </li>
18099               <li>
18100 EMERGENCYCALL - to denote an emergency call              </li>
18101             </ul>
18102            </description>
18103             <version>
18104  2.0
18105             </version>
18106         </descriptive>
18107         <Type type="array" nullable="nullable">
18108           <Type type="DOMString"/>
18109         </Type>
18110       </Attribute>
18111       <Attribute readonly="readonly" name="remoteParties" id="::Callhistory::CallHistoryEntry::remoteParties">
18112         <webidl>        readonly attribute <ref>RemoteParty</ref>[] remoteParties;</webidl>
18113         <descriptive>
18114             <brief>
18115  An attributes to store the remote parties participating in the call.
18116             </brief>
18117             <version>
18118  2.0
18119             </version>
18120         </descriptive>
18121         <Type type="array">
18122           <Type name="RemoteParty"/>
18123         </Type>
18124       </Attribute>
18125       <Attribute readonly="readonly" name="startTime" id="::Callhistory::CallHistoryEntry::startTime">
18126         <webidl>        readonly attribute Date startTime;</webidl>
18127         <descriptive>
18128             <brief>
18129  An attribute to store the start time of the call.
18130 This attribute is the moment when media channels come up. The exact meaning is defined by the back-end.
18131             </brief>
18132             <version>
18133  2.0
18134             </version>
18135         </descriptive>
18136         <Type type="Date"/>
18137       </Attribute>
18138       <Attribute readonly="readonly" name="duration" id="::Callhistory::CallHistoryEntry::duration">
18139         <webidl>        readonly attribute unsigned long duration;</webidl>
18140         <descriptive>
18141             <brief>
18142  An attribute to store the duration of the call in seconds.
18143 This attribute is the duration from media channels coming up to the moment when media channels tear down on the same call service.
18144 If the call is migrated to another service, another call history entry is used.
18145 The exact meaning is defined by the back-end.
18146             </brief>
18147             <version>
18148  2.0
18149             </version>
18150         </descriptive>
18151         <Type type="unsigned long"/>
18152       </Attribute>
18153       <Attribute name="direction" id="::Callhistory::CallHistoryEntry::direction">
18154         <webidl>        attribute DOMString direction;</webidl>
18155         <descriptive>
18156             <brief>
18157  An attribute to indicate whether the call was dialed, received, missed, blocked or rejected.
18158 The following values are the supported:
18159             </brief>
18160            <description>
18161             <ul>
18162               <li>
18163 DIALED - for dialed calls              </li>
18164               <li>
18165 RECEIVED - for received calls              </li>
18166               <li>
18167 MISSEDNEW - for missed calls not seen yet              </li>
18168               <li>
18169 MISSED - for missed calls              </li>
18170               <li>
18171 BLOCKED - for blocked calls              </li>
18172               <li>
18173 REJECTED - for rejected calls              </li>
18174             </ul>
18175            </description>
18176             <version>
18177  2.0
18178             </version>
18179         </descriptive>
18180         <Type type="DOMString"/>
18181       </Attribute>
18182     </Interface>
18183     <Interface name="CallHistory" id="::Callhistory::CallHistory">
18184       <webidl>    [NoInterfaceObject] interface CallHistory {
18185
18186         void find(<ref>CallHistoryEntryArraySuccessCallback</ref> successCallback,
18187                   optional <ref>ErrorCallback</ref>? errorCallback,
18188                   optional <ref>AbstractFilter</ref>? filter,
18189                   optional <ref>SortMode</ref>? sortMode,
18190                   optional unsigned long? limit,
18191                   optional unsigned long? offset) raises(<ref>WebAPIException</ref>);
18192
18193         void remove(<ref>CallHistoryEntry</ref> entry) raises(<ref>WebAPIException</ref>);
18194
18195         void removeBatch(<ref>CallHistoryEntry</ref>[] entries,
18196                          optional <ref>SuccessCallback</ref>? successCallback,
18197                          optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
18198
18199         void removeAll(optional <ref>SuccessCallback</ref>? successCallback,
18200                        optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
18201
18202         long addChangeListener(<ref>CallHistoryChangeCallback</ref> observer) raises(<ref>WebAPIException</ref>);
18203
18204         void removeChangeListener(long handle) raises(<ref>WebAPIException</ref>);
18205     };</webidl>
18206       <descriptive>
18207           <brief>
18208  This interface manages call history.
18209 Apps can read or delete call history (depending on permission).
18210 Modifying call history is allowed for certain attributes, like direction.
18211 Adding call history is owned by the back-end. Filtering is supported for all fields of <em>CallHistoryEntry</em>.
18212           </brief>
18213           <version>
18214  2.0
18215           </version>
18216       </descriptive>
18217       <ExtendedAttributeList>
18218         <ExtendedAttribute name="NoInterfaceObject">
18219           <webidl>NoInterfaceObject</webidl>
18220         </ExtendedAttribute>
18221       </ExtendedAttributeList>
18222       <Operation name="find" id="::Callhistory::CallHistory::find">
18223         <webidl>        void find(<ref>CallHistoryEntryArraySuccessCallback</ref> successCallback,
18224                   optional <ref>ErrorCallback</ref>? errorCallback,
18225                   optional <ref>AbstractFilter</ref>? filter,
18226                   optional <ref>SortMode</ref>? sortMode,
18227                   optional unsigned long? limit,
18228                   optional unsigned long? offset) raises(<ref>WebAPIException</ref>);</webidl>
18229         <descriptive>
18230             <brief>
18231  Finds and returns call history.
18232             </brief>
18233            <description>
18234             <p>
18235 The <em>errorCallback()</em> is launched with these error types:
18236             </p>
18237             <ul>
18238               <li>
18239 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
18240               <li>
18241 UnknownError - If any other error occurs.              </li>
18242             </ul>
18243            </description>
18244             <version>
18245  2.0
18246             </version>
18247             <privilegelevel>
18248  public
18249             </privilegelevel>
18250             <privilege>
18251  http://tizen.org/privilege/callhistory.read
18252             </privilege>
18253             <Code> // Defines success callback
18254  function onSuccess(results) {
18255      console.log(results.length + &quot; call history item(s) found!&quot;);
18256      for (var i=0; i&#60;results.length; i++) {
18257          console.log(i + &quot;. &quot; + results[i].toString()); // process the CallHistoryEntry
18258      }
18259  }
18260
18261  // Defines error callback
18262  function onError(error) {
18263      console.log(&quot;Query failed&quot; + error.name);
18264  }
18265
18266  // Defines filter: list CS calls, most recent first
18267  var filter = new tizen.AttributeFilter(&quot;type&quot;, &quot;EXACTLY&quot;, &quot;TEL&quot;);
18268
18269  // Defines sort mode: descending on call start time.
18270  var sortMode = new tizen.SortMode(&quot;startTime&quot;, &quot;DESC&quot;);
18271
18272  // Makes the query and wire up the callbacks
18273  tizen.callhistory.find(onSuccess,
18274                          onError,
18275                          filter,
18276                          sortMode);
18277
18278  var numberfilter = new tizen.AttributeFilter(
18279                                  &quot;remoteParties.remoteParty&quot;,
18280                                  &quot;EXACTLY&quot;,
18281                                  &quot;123456789&quot;);
18282                    
18283  // Creates a composite filter for time constraints
18284  var y2009Filter = new tizen.AttributeRangeFilter(
18285                                 &quot;startTime&quot;,
18286                                 new Date(2009, 0, 1),
18287                                 new Date(2010, 0, 1));
18288
18289  var y2011Filter = new tizen.AttributeRangeFilter(
18290                                 &quot;startTime&quot;,
18291                                 new Date(2011, 0, 1),
18292                                 new Date(2012, 0, 1));
18293
18294  var datefilter = new tizen.CompositeFilter(&quot;UNION&quot;, [y2009Filter, y2011Filter]);
18295
18296  // Creates a filter to find all video calls (including cellular, skype, etc)
18297  // The filter matches exactly any features from the &quot;features&quot; array
18298  var tfilter = new tizen.AttributeFilter(&quot;features&quot;, &quot;EXACTLY&quot;, &quot;VIDEOCALL&quot;);
18299
18300  // Creates composite filter
18301  var ifilter = new tizen.CompositeFilter(&quot;INTERSECTION&quot;,
18302                                          [numberFilter, dateFilter, tfilter]);
18303
18304  // Makes the query and wire up the callbacks; reuse sortMode
18305  tizen.callhistory.find(onSuccess,
18306                          onError,
18307                          ifilter,
18308                          sortMode);
18309
18310  </Code>
18311         </descriptive>
18312         <Type type="void"/>
18313         <ArgumentList>
18314           <Argument name="successCallback">
18315             <descriptive>
18316                 <description><p>
18317  A handler for query result set.
18318                 </p></description>
18319             </descriptive>
18320             <Type name="CallHistoryEntryArraySuccessCallback"/>
18321           </Argument>
18322           <Argument optional="optional" name="errorCallback">
18323             <descriptive>
18324                 <description><p>
18325  The method to call when an error occurs.
18326                 </p></description>
18327             </descriptive>
18328             <Type name="ErrorCallback" nullable="nullable"/>
18329           </Argument>
18330           <Argument optional="optional" name="filter">
18331             <descriptive>
18332                 <description><p>
18333  A filter defined on <em>CallHistoryEntry </em>attributes. It can be a composite filter.
18334                 </p></description>
18335             </descriptive>
18336             <Type name="AbstractFilter" nullable="nullable"/>
18337           </Argument>
18338           <Argument optional="optional" name="sortMode">
18339             <descriptive>
18340                 <description><p>
18341  The sort order in which call history are return.
18342                 </p></description>
18343             </descriptive>
18344             <Type name="SortMode" nullable="nullable"/>
18345           </Argument>
18346           <Argument optional="optional" name="limit">
18347             <descriptive>
18348                 <description><p>
18349  The maximum limit of query result (It is the same meaning as SQL LIMIT).
18350 If limit is 0, query result is no limit.
18351                 </p></description>
18352             </descriptive>
18353             <Type type="unsigned long" nullable="nullable"/>
18354           </Argument>
18355           <Argument optional="optional" name="offset">
18356             <descriptive>
18357                 <description><p>
18358  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.
18359                 </p></description>
18360             </descriptive>
18361             <Type type="unsigned long" nullable="nullable"/>
18362           </Argument>
18363         </ArgumentList>
18364         <Raises>
18365           <RaiseException name="WebAPIException">
18366             <descriptive>
18367                 <description><p>
18368  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
18369                 </p></description>
18370                 <description><p>
18371  with error type SecurityError, if this functionality is not allowed.
18372                 </p></description>
18373                 <description><p>
18374  with error type NotSupportedError, if the feature is not supported.
18375                 </p></description>
18376             </descriptive>
18377           </RaiseException>
18378         </Raises>
18379       </Operation>
18380       <Operation name="remove" id="::Callhistory::CallHistory::remove">
18381         <webidl>        void remove(<ref>CallHistoryEntry</ref> entry) raises(<ref>WebAPIException</ref>);</webidl>
18382         <descriptive>
18383             <brief>
18384  Removes a call history synchronously.
18385             </brief>
18386             <version>
18387  2.0
18388             </version>
18389             <privilegelevel>
18390  public
18391             </privilegelevel>
18392             <privilege>
18393  http://tizen.org/privilege/callhistory.write
18394             </privilege>
18395             <Code> // Defines success callback
18396  function onSuccess(results) {
18397      if (results.length > 0)
18398          tizen.callhistory.remove(results[0]);
18399  }
18400
18401  // Defines error callback
18402  function onError(error) {
18403      console.log(&quot;Query failed&quot; + error.name);
18404  }
18405
18406  // Makes the query and wires up the callbacks
18407  tizen.callhistory.find(onSuccess, onError);
18408
18409  </Code>
18410         </descriptive>
18411         <Type type="void"/>
18412         <ArgumentList>
18413           <Argument name="entry">
18414             <descriptive>
18415                 <description><p>
18416  Call history entry to be deleted.
18417                 </p></description>
18418             </descriptive>
18419             <Type name="CallHistoryEntry"/>
18420           </Argument>
18421         </ArgumentList>
18422         <Raises>
18423           <RaiseException name="WebAPIException">
18424             <descriptive>
18425                 <description><p>
18426  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
18427                 </p></description>
18428                 <description><p>
18429  with error type InvalidValuesError, if any input parameter contains invalid values.
18430                 </p></description>
18431                 <description><p>
18432  with error type SecurityError, if the application does not have the privilege to call this method.
18433                 </p></description>
18434                 <description><p>
18435  with error type NotSupportedError, if the feature is not supported.
18436                 </p></description>
18437                 <description><p>
18438  with error type UnknownError, if any other error occurs.
18439                 </p></description>
18440             </descriptive>
18441           </RaiseException>
18442         </Raises>
18443       </Operation>
18444       <Operation name="removeBatch" id="::Callhistory::CallHistory::removeBatch">
18445         <webidl>        void removeBatch(<ref>CallHistoryEntry</ref>[] entries,
18446                          optional <ref>SuccessCallback</ref>? successCallback,
18447                          optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
18448         <descriptive>
18449             <brief>
18450  Removes a list of call history asynchronously.
18451             </brief>
18452            <description>
18453             <p>
18454 The <em>errorCallback()</em> is launched with these error types:
18455             </p>
18456             <ul>
18457               <li>
18458 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
18459               <li>
18460 UnknownError - If any other error occurs.              </li>
18461             </ul>
18462            </description>
18463             <version>
18464  2.0
18465             </version>
18466             <privilegelevel>
18467  public
18468             </privilegelevel>
18469             <privilege>
18470  http://tizen.org/privilege/callhistory.write
18471             </privilege>
18472             <Code> // Defines success callback
18473  function onSuccess(results) {
18474      tizen.callhistory.removeBatch(results);
18475  }
18476
18477  // Defines error callback
18478  function onError(error) {
18479      console.log(&quot;Query failed&quot; + error.name);
18480  }
18481
18482  // Makes the query and wires up the callbacks
18483  tizen.callhistory.find(onSuccess, onError);
18484
18485  </Code>
18486         </descriptive>
18487         <Type type="void"/>
18488         <ArgumentList>
18489           <Argument name="entries">
18490             <descriptive>
18491                 <description><p>
18492  A list of call history entries to delete.
18493                 </p></description>
18494             </descriptive>
18495             <Type type="array">
18496               <Type name="CallHistoryEntry"/>
18497             </Type>
18498           </Argument>
18499           <Argument optional="optional" name="successCallback">
18500             <descriptive>
18501                 <description><p>
18502  A generic success handler.
18503                 </p></description>
18504             </descriptive>
18505             <Type name="SuccessCallback" nullable="nullable"/>
18506           </Argument>
18507           <Argument optional="optional" name="errorCallback">
18508             <descriptive>
18509                 <description><p>
18510  An error handler.
18511                 </p></description>
18512             </descriptive>
18513             <Type name="ErrorCallback" nullable="nullable"/>
18514           </Argument>
18515         </ArgumentList>
18516         <Raises>
18517           <RaiseException name="WebAPIException">
18518             <descriptive>
18519                 <description><p>
18520  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
18521                 </p></description>
18522                 <description><p>
18523  with error type SecurityError, if the application does not have the privilege to call this method. 
18524                 </p></description>
18525                 <description><p>
18526  with error type NotSupportedError, if this feature is not supported.
18527                 </p></description>
18528             </descriptive>
18529           </RaiseException>
18530         </Raises>
18531       </Operation>
18532       <Operation name="removeAll" id="::Callhistory::CallHistory::removeAll">
18533         <webidl>        void removeAll(optional <ref>SuccessCallback</ref>? successCallback,
18534                        optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
18535         <descriptive>
18536             <brief>
18537  Removes all call history asynchronously.
18538             </brief>
18539            <description>
18540             <p>
18541 The <em>errorCallback()</em> is launched with these error types:
18542             </p>
18543             <ul>
18544               <li>
18545 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
18546               <li>
18547 UnknownError - If any other error occurs.              </li>
18548             </ul>
18549            </description>
18550             <version>
18551  2.0
18552             </version>
18553             <privilegelevel>
18554  public
18555             </privilegelevel>
18556             <privilege>
18557  http://tizen.org/privilege/callhistory.write
18558             </privilege>
18559         </descriptive>
18560         <Type type="void"/>
18561         <ArgumentList>
18562           <Argument optional="optional" name="successCallback">
18563             <descriptive>
18564                 <description><p>
18565  A generic success handler. 
18566                 </p></description>
18567             </descriptive>
18568             <Type name="SuccessCallback" nullable="nullable"/>
18569           </Argument>
18570           <Argument optional="optional" name="errorCallback">
18571             <descriptive>
18572                 <description><p>
18573  An error handler.
18574                 </p></description>
18575             </descriptive>
18576             <Type name="ErrorCallback" nullable="nullable"/>
18577           </Argument>
18578         </ArgumentList>
18579         <Raises>
18580           <RaiseException name="WebAPIException">
18581             <descriptive>
18582                 <description><p>
18583  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
18584                 </p></description>
18585                 <description><p>
18586  with error type SecurityError, if this functionality is not allowed.
18587                 </p></description>
18588                 <description><p>
18589  with error type NotSupportedError, if this feature is not supported.
18590                 </p></description>
18591             </descriptive>
18592           </RaiseException>
18593         </Raises>
18594       </Operation>
18595       <Operation name="addChangeListener" id="::Callhistory::CallHistory::addChangeListener">
18596         <webidl>        long addChangeListener(<ref>CallHistoryChangeCallback</ref> observer) raises(<ref>WebAPIException</ref>);</webidl>
18597         <descriptive>
18598             <brief>
18599  Adds a listener to register for callback to observe call history changes.
18600             </brief>
18601             <version>
18602  2.0
18603             </version>
18604             <privilegelevel>
18605  public
18606             </privilegelevel>
18607             <privilege>
18608  http://tizen.org/privilege/callhistory.read
18609             </privilege>
18610             <Code> var onListenerCB = {
18611      onadded: function(newItems) {
18612          console.log(&quot;New Item added&quot;);
18613          for (var i in newItems) {
18614              console.log(&quot;Item &quot; + i + &quot; startTime: &quot; + newItems[i].startTime);
18615          }
18616      },
18617      onchanged: function(changedItems) {
18618          console.log(&quot;Items changed&quot;);
18619          for (var i in changedItems) {
18620              console.log(&quot;Item &quot; + i + &quot; direction: &quot; + changedItems[i].direction);
18621          }
18622      },
18623      onremoved: function(removedItems) {
18624          console.log(&quot;Items removed&quot;);
18625          for(var i in removedItems)  {
18626             console.log(&quot;Item &quot; + i + &quot; : &quot; + removedItems[i]);
18627          }
18628      }};
18629
18630  try {
18631      // Registers a call history callback
18632      var handle = tizen.callhistory.addChangeListener(onListenerCB);
18633
18634      // Unregisters a previously registered listener
18635      tizen.callhistory.removeChangeListener(handle);
18636  } catch (error) {
18637      console.log(&quot;Exception - code: &quot; + error.name + &quot; message: &quot; + error.message);
18638  }
18639
18640  </Code>
18641         </descriptive>
18642         <Type type="long">
18643           <descriptive>
18644               <description><p>
18645  long A handle which can be used for unregistering.
18646               </p></description>
18647           </descriptive>
18648         </Type>
18649         <ArgumentList>
18650           <Argument name="observer">
18651             <descriptive>
18652                 <description><p>
18653  A callback for handling the list of new or changed or <em>CallHistoryEntry </em>objects in the call history.
18654                 </p></description>
18655             </descriptive>
18656             <Type name="CallHistoryChangeCallback"/>
18657           </Argument>
18658         </ArgumentList>
18659         <Raises>
18660           <RaiseException name="WebAPIException">
18661             <descriptive>
18662                 <description><p>
18663  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
18664                 </p></description>
18665                 <description><p>
18666  with error type InvalidValuesError, if any input parameter contains invalid values.
18667                 </p></description>
18668                 <description><p>
18669  with error type SecurityError, if the application does not have the privilege to call this method.
18670                 </p></description>
18671                 <description><p>
18672  with error type NotSupportedError, if the feature is not supported.
18673                 </p></description>
18674                 <description><p>
18675  with error type UnknownError, if any other error occurs.
18676                 </p></description>
18677             </descriptive>
18678           </RaiseException>
18679         </Raises>
18680       </Operation>
18681       <Operation name="removeChangeListener" id="::Callhistory::CallHistory::removeChangeListener">
18682         <webidl>        void removeChangeListener(long handle) raises(<ref>WebAPIException</ref>);</webidl>
18683         <descriptive>
18684             <brief>
18685  Removes a listener to unregister a previously registered listener.
18686             </brief>
18687             <version>
18688  2.0
18689             </version>
18690             <privilegelevel>
18691  public
18692             </privilegelevel>
18693             <privilege>
18694  http://tizen.org/privilege/callhistory.read
18695             </privilege>
18696         </descriptive>
18697         <Type type="void"/>
18698         <ArgumentList>
18699           <Argument name="handle">
18700             <descriptive>
18701                 <description><p>
18702  The previously obtained listener handle.
18703                 </p></description>
18704             </descriptive>
18705             <Type type="long"/>
18706           </Argument>
18707         </ArgumentList>
18708         <Raises>
18709           <RaiseException name="WebAPIException">
18710             <descriptive>
18711                 <description><p>
18712  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
18713                 </p></description>
18714                 <description><p>
18715  with error type InvalidValuesError, if any input parameter contains invalid values.
18716                 </p></description>
18717                 <description><p>
18718  with error type SecurityError, if the application does not have the privilege to call this method.
18719                 </p></description>
18720                 <description><p>
18721  with error type NotSupportedError, if the feature is not supported.
18722                 </p></description>
18723                 <description><p>
18724  with error type UnknownError, if any other error occurs.
18725                 </p></description>
18726             </descriptive>
18727           </RaiseException>
18728         </Raises>
18729       </Operation>
18730     </Interface>
18731     <Interface name="CallHistoryEntryArraySuccessCallback" id="::Callhistory::CallHistoryEntryArraySuccessCallback">
18732       <webidl>    [Callback=FunctionOnly, NoInterfaceObject] interface CallHistoryEntryArraySuccessCallback {
18733         void onsuccess(<ref>CallHistoryEntry</ref>[] entries);
18734     };</webidl>
18735       <descriptive>
18736           <brief>
18737  This is a callback interface of <em>CallHistory </em>operations.
18738 For example code, see <em>CallHistory </em>interface.
18739           </brief>
18740           <version>
18741  2.0
18742           </version>
18743       </descriptive>
18744       <ExtendedAttributeList>
18745         <ExtendedAttribute name="Callback" value="FunctionOnly">
18746           <webidl>Callback</webidl>
18747         </ExtendedAttribute>
18748         <ExtendedAttribute name="NoInterfaceObject">
18749           <webidl> NoInterfaceObject</webidl>
18750         </ExtendedAttribute>
18751       </ExtendedAttributeList>
18752       <Operation name="onsuccess" id="::Callhistory::CallHistoryEntryArraySuccessCallback::onsuccess">
18753         <webidl>        void onsuccess(<ref>CallHistoryEntry</ref>[] entries);</webidl>
18754         <descriptive>
18755             <brief>
18756  Called when the queries on call history have been successfully completed.
18757             </brief>
18758             <version>
18759  2.0
18760             </version>
18761         </descriptive>
18762         <Type type="void"/>
18763         <ArgumentList>
18764           <Argument name="entries">
18765             <descriptive>
18766                 <description><p>
18767  An array of <em>CallHistoryEntry </em>objects, representing the result set of the query over the call history.
18768                 </p></description>
18769             </descriptive>
18770             <Type type="array">
18771               <Type name="CallHistoryEntry"/>
18772             </Type>
18773           </Argument>
18774         </ArgumentList>
18775       </Operation>
18776     </Interface>
18777     <Interface name="CallHistoryChangeCallback" id="::Callhistory::CallHistoryChangeCallback">
18778       <webidl>    [Callback, NoInterfaceObject]
18779     interface CallHistoryChangeCallback {
18780         void onadded(<ref>CallHistoryEntry</ref>[] newItems);
18781
18782         void onchanged(<ref>CallHistoryEntry</ref>[] changedItems);
18783
18784         void onremoved(DOMString[] removedItems);
18785     };</webidl>
18786       <descriptive>
18787           <brief>
18788  This is a callback interface of a<em> CallHistory </em>operations.
18789 For example code, see <em>CallHistory </em>interface.
18790           </brief>
18791           <version>
18792  2.0
18793           </version>
18794       </descriptive>
18795       <ExtendedAttributeList>
18796         <ExtendedAttribute name="Callback">
18797           <webidl>Callback</webidl>
18798         </ExtendedAttribute>
18799         <ExtendedAttribute name="NoInterfaceObject">
18800           <webidl> NoInterfaceObject</webidl>
18801         </ExtendedAttribute>
18802       </ExtendedAttributeList>
18803       <Operation name="onadded" id="::Callhistory::CallHistoryChangeCallback::onadded">
18804         <webidl>        void onadded(<ref>CallHistoryEntry</ref>[] newItems);</webidl>
18805         <descriptive>
18806             <brief>
18807  Called when a new call history item is added.
18808             </brief>
18809             <version>
18810  2.0
18811             </version>
18812         </descriptive>
18813         <Type type="void"/>
18814         <ArgumentList>
18815           <Argument name="newItems">
18816             <descriptive>
18817                 <description><p>
18818  An array of <em>CallHistoryEntry </em>objects, representing the new items added to call history.
18819                 </p></description>
18820             </descriptive>
18821             <Type type="array">
18822               <Type name="CallHistoryEntry"/>
18823             </Type>
18824           </Argument>
18825         </ArgumentList>
18826       </Operation>
18827       <Operation name="onchanged" id="::Callhistory::CallHistoryChangeCallback::onchanged">
18828         <webidl>        void onchanged(<ref>CallHistoryEntry</ref>[] changedItems);</webidl>
18829         <descriptive>
18830             <brief>
18831  Called when the call history have been changed.
18832             </brief>
18833             <version>
18834  2.0
18835             </version>
18836         </descriptive>
18837         <Type type="void"/>
18838         <ArgumentList>
18839           <Argument name="changedItems">
18840             <descriptive>
18841                 <description><p>
18842  An array of <em>CallHistoryEntry </em>objects, representing the changed items in call history.
18843                 </p></description>
18844             </descriptive>
18845             <Type type="array">
18846               <Type name="CallHistoryEntry"/>
18847             </Type>
18848           </Argument>
18849         </ArgumentList>
18850       </Operation>
18851       <Operation name="onremoved" id="::Callhistory::CallHistoryChangeCallback::onremoved">
18852         <webidl>        void onremoved(DOMString[] removedItems);</webidl>
18853         <descriptive>
18854             <brief>
18855  Called when the call history have been removed.
18856             </brief>
18857             <version>
18858  2.0
18859             </version>
18860         </descriptive>
18861         <Type type="void"/>
18862         <ArgumentList>
18863           <Argument name="removedItems">
18864             <descriptive>
18865                 <description><p>
18866  An array of an uid of <em>CallHistoryEntry </em>objects, representing the removed items in call history.
18867                 </p></description>
18868             </descriptive>
18869             <Type type="array">
18870               <Type type="DOMString"/>
18871             </Type>
18872           </Argument>
18873         </ArgumentList>
18874       </Operation>
18875     </Interface>
18876   </Module>
18877   <Module name="Contact" id="::Contact">
18878     <webidl>module Contact {
18879
18880   typedef DOMString AddressBookId;
18881
18882   typedef DOMString ContactId;
18883
18884   typedef DOMString PersonId;
18885
18886   typedef DOMString ContactGroupId;
18887
18888   enum ContactTextFormat {&quot;VCARD_30&quot;};
18889
18890   [NoInterfaceObject] interface ContactManagerObject {
18891     readonly attribute <ref>ContactManager</ref> contact;
18892   };
18893   <ref>Tizen</ref> implements <ref>ContactManagerObject</ref>;
18894
18895   [NoInterfaceObject] interface ContactManager {
18896
18897     void getAddressBooks(<ref>AddressBookArraySuccessCallback</ref> successCallback,
18898                          optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
18899
18900     <ref>AddressBook</ref> getUnifiedAddressBook() raises(<ref>WebAPIException</ref>);
18901
18902     <ref>AddressBook</ref> getDefaultAddressBook() raises(<ref>WebAPIException</ref>);
18903
18904     <ref>AddressBook</ref> getAddressBook(<ref>AddressBookId</ref> addressBookId) raises(<ref>WebAPIException</ref>);
18905
18906     <ref>Person</ref> get(<ref>PersonId</ref> personId) raises(<ref>WebAPIException</ref>);
18907
18908     void update(<ref>Person</ref> person) raises(<ref>WebAPIException</ref>);
18909
18910     void updateBatch(<ref>Person</ref>[] persons,
18911                      optional <ref>SuccessCallback</ref>? successCallback,
18912                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
18913
18914     void remove(<ref>PersonId</ref> personId) raises(<ref>WebAPIException</ref>);
18915
18916     void removeBatch(<ref>PersonId</ref>[] personIds,
18917                      optional <ref>SuccessCallback</ref>? successCallback,
18918                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
18919
18920     void find(<ref>PersonArraySuccessCallback</ref> successCallback,
18921               optional <ref>ErrorCallback</ref>? errorCallback,
18922               optional <ref>AbstractFilter</ref>? filter,
18923               optional <ref>SortMode</ref>? sortMode) raises(<ref>WebAPIException</ref>);
18924
18925     long addChangeListener(<ref>PersonsChangeCallback</ref> successCallback) raises(<ref>WebAPIException</ref>);
18926
18927     void removeChangeListener(long watchId) raises(<ref>WebAPIException</ref>);
18928   };
18929
18930   [NoInterfaceObject] interface AddressBook {
18931
18932     readonly attribute <ref>AddressBookId</ref>? id;
18933
18934     readonly attribute DOMString name;
18935
18936     readonly attribute boolean readOnly;
18937
18938     <ref>Contact</ref> get(<ref>ContactId</ref> id) raises(<ref>WebAPIException</ref>);
18939
18940     void add(<ref>Contact</ref> contact) raises(<ref>WebAPIException</ref>);
18941
18942     void addBatch(<ref>Contact</ref>[] contacts,
18943                   optional <ref>ContactArraySuccessCallback</ref>? successCallback,
18944                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
18945
18946     void update(<ref>Contact</ref> contact) raises(<ref>WebAPIException</ref>);
18947
18948     void updateBatch(<ref>Contact</ref>[] contacts,
18949                      optional <ref>SuccessCallback</ref>? successCallback,
18950                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
18951
18952     void remove(<ref>ContactId</ref> id) raises(<ref>WebAPIException</ref>);
18953
18954     void removeBatch(<ref>ContactId</ref>[] ids,
18955                      optional <ref>SuccessCallback</ref>? successCallback,
18956                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
18957
18958     void find(<ref>ContactArraySuccessCallback</ref> successCallback,
18959               optional <ref>ErrorCallback</ref>? errorCallback,
18960               optional <ref>AbstractFilter</ref>? filter,
18961               optional <ref>SortMode</ref>? sortMode) raises(<ref>WebAPIException</ref>);
18962
18963     long addChangeListener(<ref>AddressBookChangeCallback</ref> successCallback,
18964                            optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
18965
18966     void removeChangeListener(long watchId) raises(<ref>WebAPIException</ref>);
18967
18968     <ref>ContactGroup</ref> getGroup(<ref>ContactGroupId</ref> groupId) raises(<ref>WebAPIException</ref>);
18969
18970     void addGroup(<ref>ContactGroup</ref> group) raises(<ref>WebAPIException</ref>);
18971
18972     void updateGroup(<ref>ContactGroup</ref> group) raises(<ref>WebAPIException</ref>);
18973
18974     void removeGroup(<ref>ContactGroupId</ref> groupId) raises(<ref>WebAPIException</ref>);
18975
18976     <ref>ContactGroup</ref>[] getGroups() raises(<ref>WebAPIException</ref>);
18977   };
18978
18979   [NoInterfaceObject] interface Person {
18980     readonly attribute <ref>PersonId</ref> id;
18981
18982     readonly attribute DOMString displayName;
18983
18984     readonly attribute long contactCount;
18985
18986     readonly attribute boolean hasPhoneNumber;
18987
18988     readonly attribute boolean hasEmail;
18989
18990     attribute boolean isFavorite;
18991
18992     attribute DOMString? photoURI;
18993
18994     attribute DOMString? ringtoneURI;
18995
18996     attribute <ref>ContactId</ref> displayContactId;
18997
18998     void link(<ref>PersonId</ref> personId) raises(<ref>WebAPIException</ref>);
18999
19000     <ref>Person</ref> unlink(<ref>ContactId</ref> contactId) raises(<ref>WebAPIException</ref>);
19001   };
19002
19003   dictionary ContactInit {
19004     <ref>ContactName</ref> name;
19005     <ref>ContactAddress</ref>[] addresses;
19006     DOMString photoURI;
19007     <ref>ContactPhoneNumber</ref>[] phoneNumbers;
19008     <ref>ContactEmailAddress</ref>[] emails;
19009     Date birthday;
19010     <ref>ContactAnniversary</ref>[] anniversaries;
19011     <ref>ContactOrganization</ref>[] organizations;
19012     DOMString[] notes;
19013     <ref>ContactWebSite</ref>[] urls;
19014     DOMString ringtoneURI;
19015     <ref>ContactGroupId</ref>[] groupIds;
19016   };
19017
19018   [Constructor(optional <ref>ContactInit</ref>? ContactInitDict),
19019    Constructor(DOMString stringRepresentation)]
19020   interface Contact {
19021     readonly attribute <ref>ContactId</ref>? id;
19022
19023     readonly attribute <ref>PersonId</ref>? personId;
19024
19025     readonly attribute <ref>AddressBookId</ref>? addressBookId;
19026
19027     readonly attribute Date? lastUpdated;
19028
19029     readonly attribute boolean isFavorite;
19030
19031     attribute <ref>ContactName</ref>? name setraises(<ref>WebAPIException</ref>);
19032
19033     attribute <ref>ContactAddress</ref>[] addresses setraises(<ref>WebAPIException</ref>);
19034
19035     attribute DOMString? photoURI setraises(<ref>WebAPIException</ref>);
19036
19037     attribute <ref>ContactPhoneNumber</ref>[] phoneNumbers setraises(<ref>WebAPIException</ref>);
19038
19039     attribute <ref>ContactEmailAddress</ref>[] emails setraises(<ref>WebAPIException</ref>);
19040
19041     attribute Date? birthday setraises(<ref>WebAPIException</ref>);
19042
19043     attribute <ref>ContactAnniversary</ref>[] anniversaries setraises(<ref>WebAPIException</ref>);
19044
19045     attribute <ref>ContactOrganization</ref>[] organizations setraises(<ref>WebAPIException</ref>);
19046
19047     attribute DOMString[] notes setraises(<ref>WebAPIException</ref>);
19048
19049     attribute <ref>ContactWebSite</ref>[] urls setraises(<ref>WebAPIException</ref>);
19050
19051     attribute DOMString? ringtoneURI setraises(<ref>WebAPIException</ref>);
19052
19053     attribute <ref>ContactGroupId</ref>[] groupIds setraises(<ref>WebAPIException</ref>);
19054
19055     DOMString convertToString(optional <ref>ContactTextFormat</ref>? format) raises(<ref>WebAPIException</ref>);
19056
19057     <ref>Contact</ref> clone() raises(<ref>WebAPIException</ref>);
19058   };
19059
19060   [Constructor(<ref>AddressBookId</ref> addressBookId, <ref>ContactId</ref> contactId)]
19061   interface ContactRef {
19062     attribute <ref>AddressBookId</ref> addressBookId;
19063
19064     attribute <ref>ContactId</ref> contactId;
19065   };
19066
19067   dictionary ContactNameInit {
19068     DOMString prefix;
19069     DOMString suffix;
19070     DOMString firstName;
19071     DOMString middleName;
19072     DOMString lastName;
19073     DOMString[] nicknames;
19074     DOMString phoneticFirstName;
19075     DOMString phoneticLastName;
19076   };
19077
19078   [Constructor(optional <ref>ContactNameInit</ref>? nameInitDict)]
19079   interface ContactName {
19080     attribute DOMString? prefix;
19081
19082     attribute DOMString? suffix;
19083
19084     attribute DOMString? firstName;
19085
19086     attribute DOMString? middleName;
19087
19088     attribute DOMString? lastName;
19089
19090     attribute DOMString[] nicknames;
19091
19092     attribute DOMString? phoneticFirstName;
19093
19094     attribute DOMString? phoneticLastName;
19095
19096     readonly attribute DOMString? displayName;
19097   };
19098
19099   dictionary ContactOrganizationInit {
19100     DOMString name;
19101     DOMString department;
19102     DOMString title;
19103     DOMString role;
19104     DOMString logoURI;
19105   };
19106
19107   [Constructor(optional <ref>ContactOrganizationInit</ref>? orgInitDict)]
19108   interface ContactOrganization {
19109     attribute DOMString? name;
19110
19111     attribute DOMString? department;
19112
19113     attribute DOMString? title;
19114
19115     attribute DOMString? role;
19116
19117     attribute DOMString? logoURI;
19118   };
19119
19120   [Constructor(DOMString url, optional DOMString type)]
19121   interface ContactWebSite
19122   {
19123     attribute DOMString url;
19124
19125     attribute DOMString type;
19126   };
19127
19128   [Constructor(Date date, optional DOMString? label)]
19129   interface ContactAnniversary
19130   {
19131     attribute Date date;
19132
19133     attribute DOMString? label;
19134   };
19135
19136   dictionary ContactAddressInit
19137   {
19138     DOMString country;
19139     DOMString region;
19140     DOMString city;
19141     DOMString streetAddress;
19142     DOMString additionalInformation;
19143     DOMString postalCode;
19144     boolean isDefault;
19145     DOMString[] types;
19146   };
19147
19148   [Constructor(optional <ref>ContactAddressInit</ref>? addressInitDict)]
19149   interface ContactAddress
19150   {
19151     attribute DOMString? country;
19152
19153     attribute DOMString? region;
19154
19155     attribute DOMString? city;
19156
19157     attribute DOMString? streetAddress;
19158
19159     attribute DOMString? additionalInformation;
19160
19161     attribute DOMString? postalCode;
19162
19163     attribute boolean isDefault;
19164
19165     attribute DOMString[] types;
19166   };
19167
19168   [Constructor(DOMString number, optional DOMString[] types, optional boolean isDefault)]
19169   interface ContactPhoneNumber
19170   {
19171     attribute DOMString number;
19172
19173     attribute boolean isDefault;
19174
19175     attribute DOMString[] types;
19176   };
19177
19178   [Constructor(DOMString email, optional DOMString[] types, optional boolean isDefault)]
19179   interface ContactEmailAddress
19180   {
19181     attribute DOMString email;
19182
19183     attribute boolean isDefault;
19184
19185     attribute DOMString[] types;
19186   };
19187
19188   [Constructor(DOMString name, optional DOMString? ringtoneURI, optional DOMString? photoURI)]
19189   interface ContactGroup
19190   {
19191     readonly attribute <ref>ContactGroupId</ref>? id;
19192
19193     readonly attribute <ref>AddressBookId</ref>? addressBookId;
19194
19195     attribute DOMString name;
19196
19197     attribute DOMString? ringtoneURI;
19198
19199     attribute DOMString? photoURI;
19200
19201     readonly attribute DOMString readOnly;
19202   };
19203
19204   [Callback=FunctionOnly, NoInterfaceObject] interface PersonArraySuccessCallback {
19205     void onsuccess(<ref>Person</ref>[] persons);
19206   };
19207
19208   [Callback=FunctionOnly, NoInterfaceObject] interface ContactArraySuccessCallback {
19209     void onsuccess(<ref>Contact</ref>[] contacts);
19210   };
19211
19212   [Callback=FunctionOnly, NoInterfaceObject] interface AddressBookArraySuccessCallback {
19213     void onsuccess(<ref>AddressBook</ref>[] addressbooks);
19214   };
19215
19216   [Callback, NoInterfaceObject] interface AddressBookChangeCallback {
19217     void oncontactsadded(<ref>Contact</ref>[] contacts);
19218
19219     void oncontactsupdated(<ref>Contact</ref>[] contacts);
19220
19221     void oncontactsremoved(<ref>ContactId</ref>[] contactIds);
19222   };
19223
19224   [Callback, NoInterfaceObject] interface PersonsChangeCallback {
19225     void onpersonsadded(<ref>Person</ref>[] persons);
19226
19227     void onpersonsupdated(<ref>Person</ref>[] persons);
19228
19229     void onpersonsremoved(<ref>PersonId</ref>[] personIds);
19230   };
19231 };</webidl>
19232     <descriptive>
19233         <brief>
19234  This API is for managing Address Books.
19235         </brief>
19236        <description>
19237         <p>
19238 A contact is a set of information that describes a contact. The contact contains information, such as phone numbers,
19239 e-mail addresses, etc.
19240         </p>
19241         <p>
19242 <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.
19243         </p>
19244         <p>
19245 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.
19246         </p>
19247         <p>
19248 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.
19249         </p>
19250         <p>
19251 For more information on the Contact features, see <a href="../../org.tizen.web.appprogramming/html/guide/social_guide/contact.htm">Contact Guide</a>.
19252         </p>
19253        </description>
19254         <version>
19255  1.0
19256         </version>
19257     </descriptive>
19258     <Typedef name="AddressBookId" id="::Contact::AddressBookId">
19259       <webidl>  typedef DOMString AddressBookId;</webidl>
19260       <descriptive>
19261           <brief>
19262  The address book identifier.
19263           </brief>
19264           <version>
19265  1.0
19266           </version>
19267       </descriptive>
19268       <Type type="DOMString"/>
19269     </Typedef>
19270     <Typedef name="ContactId" id="::Contact::ContactId">
19271       <webidl>  typedef DOMString ContactId;</webidl>
19272       <descriptive>
19273           <brief>
19274  The contact identifier.
19275           </brief>
19276           <version>
19277  1.0
19278           </version>
19279       </descriptive>
19280       <Type type="DOMString"/>
19281     </Typedef>
19282     <Typedef name="PersonId" id="::Contact::PersonId">
19283       <webidl>  typedef DOMString PersonId;</webidl>
19284       <descriptive>
19285           <brief>
19286  The person identifier.
19287           </brief>
19288           <version>
19289  2.0
19290           </version>
19291       </descriptive>
19292       <Type type="DOMString"/>
19293     </Typedef>
19294     <Typedef name="ContactGroupId" id="::Contact::ContactGroupId">
19295       <webidl>  typedef DOMString ContactGroupId;</webidl>
19296       <descriptive>
19297           <brief>
19298  The group identifier.
19299           </brief>
19300           <version>
19301  2.0
19302           </version>
19303       </descriptive>
19304       <Type type="DOMString"/>
19305     </Typedef>
19306     <Enum name="ContactTextFormat" id="::Contact::ContactTextFormat">
19307       <webidl>  enum ContactTextFormat {&quot;VCARD_30&quot;};</webidl>
19308       <descriptive>
19309           <brief>
19310  An enumerator that indicates the contact format that is used for export.   * The possible values are:
19311           </brief>
19312          <description>
19313           <ul>
19314             <li>
19315 VCARD_30 - vCard v3.0 format            </li>
19316           </ul>
19317           <p>
19318 Currently, vCard v3.0 is the only format supported by the Tizen platform.
19319           </p>
19320          </description>
19321           <version>
19322  1.0
19323           </version>
19324       </descriptive>
19325       <EnumValue stringvalue="VCARD_30">
19326         <webidl>&quot;VCARD_30</webidl>
19327       </EnumValue>
19328     </Enum>
19329     <Interface name="ContactManagerObject" id="::Contact::ContactManagerObject">
19330       <webidl>  [NoInterfaceObject] interface ContactManagerObject {
19331     readonly attribute <ref>ContactManager</ref> contact;
19332   };</webidl>
19333       <descriptive>
19334           <brief>
19335  Defines what is instantiated by the <em>Tizen </em>object from the Tizen Platform.
19336           </brief>
19337          <description>
19338           <p>
19339 There is a <em>tizen.contact </em>object that allows access to the Contact API functionality.
19340           </p>
19341          </description>
19342           <version>
19343  1.0
19344           </version>
19345       </descriptive>
19346       <ExtendedAttributeList>
19347         <ExtendedAttribute name="NoInterfaceObject">
19348           <webidl>NoInterfaceObject</webidl>
19349         </ExtendedAttribute>
19350       </ExtendedAttributeList>
19351       <Attribute readonly="readonly" name="contact" id="::Contact::ContactManagerObject::contact">
19352         <webidl>    readonly attribute <ref>ContactManager</ref> contact;</webidl>
19353         <Type name="ContactManager"/>
19354       </Attribute>
19355     </Interface>
19356     <Implements name1="Tizen" name2="ContactManagerObject">
19357       <webidl>  <ref>Tizen</ref> implements <ref>ContactManagerObject</ref>;</webidl>
19358     </Implements>
19359     <Interface name="ContactManager" id="::Contact::ContactManager">
19360       <webidl>  [NoInterfaceObject] interface ContactManager {
19361
19362     void getAddressBooks(<ref>AddressBookArraySuccessCallback</ref> successCallback,
19363                          optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
19364
19365     <ref>AddressBook</ref> getUnifiedAddressBook() raises(<ref>WebAPIException</ref>);
19366
19367     <ref>AddressBook</ref> getDefaultAddressBook() raises(<ref>WebAPIException</ref>);
19368
19369     <ref>AddressBook</ref> getAddressBook(<ref>AddressBookId</ref> addressBookId) raises(<ref>WebAPIException</ref>);
19370
19371     <ref>Person</ref> get(<ref>PersonId</ref> personId) raises(<ref>WebAPIException</ref>);
19372
19373     void update(<ref>Person</ref> person) raises(<ref>WebAPIException</ref>);
19374
19375     void updateBatch(<ref>Person</ref>[] persons,
19376                      optional <ref>SuccessCallback</ref>? successCallback,
19377                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
19378
19379     void remove(<ref>PersonId</ref> personId) raises(<ref>WebAPIException</ref>);
19380
19381     void removeBatch(<ref>PersonId</ref>[] personIds,
19382                      optional <ref>SuccessCallback</ref>? successCallback,
19383                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
19384
19385     void find(<ref>PersonArraySuccessCallback</ref> successCallback,
19386               optional <ref>ErrorCallback</ref>? errorCallback,
19387               optional <ref>AbstractFilter</ref>? filter,
19388               optional <ref>SortMode</ref>? sortMode) raises(<ref>WebAPIException</ref>);
19389
19390     long addChangeListener(<ref>PersonsChangeCallback</ref> successCallback) raises(<ref>WebAPIException</ref>);
19391
19392     void removeChangeListener(long watchId) raises(<ref>WebAPIException</ref>);
19393   };</webidl>
19394       <descriptive>
19395           <brief>
19396  This interface provides access to the API functionality.
19397           </brief>
19398          <description>
19399           <p>
19400 This interface offers a method to retrieve the address books objects.
19401 The address book objects can be manipulated with the provided functionalities to add, remove, and update the contained information.
19402           </p>
19403          </description>
19404           <version>
19405  1.0
19406           </version>
19407       </descriptive>
19408       <ExtendedAttributeList>
19409         <ExtendedAttribute name="NoInterfaceObject">
19410           <webidl>NoInterfaceObject</webidl>
19411         </ExtendedAttribute>
19412       </ExtendedAttributeList>
19413       <Operation name="getAddressBooks" id="::Contact::ContactManager::getAddressBooks">
19414         <webidl>    void getAddressBooks(<ref>AddressBookArraySuccessCallback</ref> successCallback,
19415                          optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
19416         <descriptive>
19417             <brief>
19418  Gets the available address books.
19419             </brief>
19420            <description>
19421             <p>
19422 If the operation completes successfully, the successCallback must
19423 be invoked with the phone address book and the SIM address book (if any).
19424 Other address books present in the device should also be returned.
19425             </p>
19426             <p>
19427 If no address book is present, the <em>successCallback</em> will be invoked with an empty array.
19428             </p>
19429             <p>
19430 The errorCallback is launched with these error types:
19431             </p>
19432             <ul>
19433               <li>
19434 InvalidValuesError - If the event given in argument is not a recurring event.              </li>
19435               <li>
19436 UnknownError - If any other error occurs while trying to get the address books.              </li>
19437             </ul>
19438            </description>
19439             <version>
19440  1.0
19441             </version>
19442             <privilegelevel>
19443  public
19444             </privilegelevel>
19445             <privilege>
19446  http://tizen.org/privilege/contact.read
19447             </privilege>
19448             <Code>  var addressbook;
19449
19450   // Define the error callback for all the asynchronous calls
19451   function errorCB(err) {
19452     console.log( 'The following error occurred: ' +  err.name);
19453   }
19454
19455   function contactsFoundCB(contacts) {
19456     // The contact has been successfully found
19457     // Let's try to change the first name
19458     contacts[0].name.firstName = 'Jeffrey Ross';
19459     try {
19460       addressbook.update(contacts[0]);
19461     } catch (err) {
19462       console.log( 'The following error occurred while updating: ' +  err.name);
19463     }
19464     console.log('First contact was updated');
19465   }
19466
19467   // Define the success callback for retrieving all the
19468   // Address Books
19469   function addressBooksCB(addressbooks) {
19470     if(addressbooks.length > 0) {
19471       addressbook = addressbooks[0];
19472       console.log('The addressbook type is ' + addressbook.type +
19473             ' and name ' + addressbook.name);
19474
19475       var contact = new tizen.Contact(
19476                          {name: new tizen.ContactName({firstName:'Jeffrey',
19477                                  lastName:'Hyman',
19478                                  nicknames:['joey ramone']}),
19479                           emails:[new tizen.ContactEmailAddress('user@domain.com')],
19480                           phoneNumbers:[new tizen.ContactPhoneNumber('123456789')]});
19481
19482       addressbook.add(contact);
19483
19484       // The contact has been successfully added
19485       // Checks whether the added contact can be retrieved from the address book or not.
19486       // If the address book is empty, only the item added through saveContact
19487       // should be returned
19488       var filter = new tizen.AttributeFilter('name.firstName', 'CONTAINS', 'Jeffrey');
19489       try {
19490         addressbook.find(contactsFoundCB, errorCB, filter);
19491       } catch (err) {
19492         console.log( 'The following error occurred while finding: ' +  err.name);
19493       }
19494     }
19495   }
19496
19497   // Get a list of available address books.
19498   tizen.contact.getAddressBooks(addressBooksCB, errorCB);
19499  </Code>
19500         </descriptive>
19501         <Type type="void"/>
19502         <ArgumentList>
19503           <Argument name="successCallback">
19504             <descriptive>
19505                 <description><p>
19506  The method to call when the invocation ends successfully.
19507                 </p></description>
19508             </descriptive>
19509             <Type name="AddressBookArraySuccessCallback"/>
19510           </Argument>
19511           <Argument optional="optional" name="errorCallback">
19512             <descriptive>
19513                 <description><p>
19514  The method to call when an error occurs.
19515                 </p></description>
19516             </descriptive>
19517             <Type name="ErrorCallback" nullable="nullable"/>
19518           </Argument>
19519         </ArgumentList>
19520         <Raises>
19521           <RaiseException name="WebAPIException">
19522             <descriptive>
19523                 <description><p>
19524  with error type TypeMismatchError, if any input parameter
19525 is not compatible with the expected type for that parameter.
19526                 </p></description>
19527                 <description><p>
19528  with error type SecurityError, if the application does not have the privilege to call this method.
19529                 </p></description>
19530                 <description><p>
19531  with error type NotSupportedError, if the feature
19532 is not supported.
19533                 </p></description>
19534             </descriptive>
19535           </RaiseException>
19536         </Raises>
19537       </Operation>
19538       <Operation name="getUnifiedAddressBook" id="::Contact::ContactManager::getUnifiedAddressBook">
19539         <webidl>    <ref>AddressBook</ref> getUnifiedAddressBook() raises(<ref>WebAPIException</ref>);</webidl>
19540         <descriptive>
19541             <brief>
19542  Gets the aggregation of all address books.
19543             </brief>
19544            <description>
19545             <p>
19546 The unified address book is a logical address book that represents an aggregation of all address books
19547 that are obtained by getAddressBooks() and contains all contacts in the address books.
19548 Note that the unified address book does not have an address book ID
19549 and it is set to <var>null</var>.
19550             </p>
19551            </description>
19552             <version>
19553  2.1
19554             </version>
19555             <privilegelevel>
19556  public
19557             </privilegelevel>
19558             <privilege>
19559  http://tizen.org/privilege/contact.read
19560             </privilege>
19561             <Code>  var addressbook;
19562
19563   // Define the error callback
19564   function errorCB(err) {
19565     console.log( 'The following error occurred: ' +  err.name);
19566   }
19567
19568   function contactsFoundCB(contacts) {
19569     // The contact has been successfully found
19570     // Let's try to change the first name
19571     contacts[0].name.firstName = 'Jeffrey Ross';
19572     try {
19573       addressbook.update(contacts[0]);
19574       console.log('First contact was updated');
19575     } catch (err) {
19576       console.log( 'The following error occurred while updating: ' +  err.name);
19577     }
19578   }
19579
19580   // Get unified address book.
19581   addressbook = tizen.contact.getUnifiedAddressBook();
19582
19583   // Add a new contact
19584   var contact = new tizen.Contact(
19585                      {name: new tizen.ContactName({firstName:'Jeffrey',
19586                              lastName:'Hyman',
19587                              nicknames:['joey ramone']}),
19588                       emails:[new tizen.ContactEmailAddress('user@domain.com')],
19589                       phoneNumbers:[new tizen.ContactPhoneNumber('123456789')]});
19590
19591   try {
19592     addressbook.add(contact);
19593   } catch (err) {
19594     console.log( 'The following error occurred while adding: ' +  err.name);
19595   }
19596
19597   // The contact has been successfully added
19598   // Let's try to check if we can retrieve the added
19599   // contact from the address book. If the address book
19600   // was empty only the item added through saveContact should
19601   // be returned
19602   var filter = new tizen.AttributeFiilter('name.firstName', 'CONTAINS', 'Jeffrey');
19603   try {
19604     addressbook.find(contactsFoundCB, errorCB, filter);
19605   } catch (err) {
19606     console.log( 'The following error occurred while finding: ' +  err.name);
19607   }
19608  </Code>
19609         </descriptive>
19610         <Type name="AddressBook">
19611           <descriptive>
19612               <description><p>
19613  AddressBook The unified AddressBook object.
19614               </p></description>
19615           </descriptive>
19616         </Type>
19617         <ArgumentList/>
19618         <Raises>
19619           <RaiseException name="WebAPIException">
19620             <descriptive>
19621                 <description><p>
19622  with error type SecurityError, if the application does not have the privilege to call this method.
19623                 </p></description>
19624                 <description><p>
19625  with error type NotSupportedError, if the feature
19626 is not supported.
19627                 </p></description>
19628                 <description><p>
19629  with error type UnknownError in any other error case.
19630                 </p></description>
19631             </descriptive>
19632           </RaiseException>
19633         </Raises>
19634       </Operation>
19635       <Operation name="getDefaultAddressBook" id="::Contact::ContactManager::getDefaultAddressBook">
19636         <webidl>    <ref>AddressBook</ref> getDefaultAddressBook() raises(<ref>WebAPIException</ref>);</webidl>
19637         <descriptive>
19638             <brief>
19639  Gets the default address book.
19640             </brief>
19641            <description>
19642             <p>
19643 The default address book is the appointed addressbook from platform or operator.
19644 This is one of addressBooks and it has the address book ID.
19645             </p>
19646             <p>
19647 If the operation completes successfully, it must return the
19648 default address book.
19649             </p>
19650            </description>
19651             <version>
19652  1.0
19653             </version>
19654             <privilegelevel>
19655  public
19656             </privilegelevel>
19657             <privilege>
19658  http://tizen.org/privilege/contact.read
19659             </privilege>
19660             <Code>  var addressbook;
19661
19662   // Define the error callback
19663   function errorCB(err) {
19664     console.log( 'The following error occurred: ' +  err.name);
19665   }
19666
19667   function contactsFoundCB(contacts) {
19668     // The contact has been successfully found
19669     // Let's try to change the first name
19670     contacts[0].name.firstName = 'Jeffrey Ross';
19671     try {
19672       addressbook.update(contacts[0]);
19673       console.log('First contact was updated');
19674     } catch (err) {
19675       console.log( 'The following error occurred while updating: ' +  err.name);
19676     }
19677   }
19678
19679   // Get default address book.
19680   addressbook = tizen.contact.getDefaultAddressBook();
19681
19682   // Add a new contact
19683   var contact = new tizen.Contact(
19684                      {name: new tizen.ContactName({firstName:'Jeffrey',
19685                              lastName:'Hyman',
19686                              nicknames:['joey ramone']}),
19687                       emails:[new tizen.ContactEmailAddress('user@domain.com')],
19688                       phoneNumbers:[new tizen.ContactPhoneNumber('123456789')]});
19689
19690   try {
19691     addressbook.add(contact);
19692   } catch (err) {
19693     console.log( 'The following error occurred while adding: ' +  err.name);
19694   }
19695
19696   // The contact has been successfully added
19697   // Checks whether the added contact can be retrieved from the address book or not.
19698   // If the address book is empty, only the item added
19699   // through em>saveContact /em>should be returned
19700   var filter = new tizen.AttributeFiilter('name.firstName', 'CONTAINS', 'Jeffrey');
19701   try {
19702     addressbook.find(contactsFoundCB, errorCB, filter);
19703   } catch (err) {
19704     console.log( 'The following error occurred while finding: ' +  err.name);
19705   }
19706  </Code>
19707         </descriptive>
19708         <Type name="AddressBook">
19709           <descriptive>
19710               <description><p>
19711  AddressBook The default AddressBook object.
19712               </p></description>
19713           </descriptive>
19714         </Type>
19715         <ArgumentList/>
19716         <Raises>
19717           <RaiseException name="WebAPIException">
19718             <descriptive>
19719                 <description><p>
19720  with error type SecurityError, if the application does not have the privilege to call this method.
19721                 </p></description>
19722                 <description><p>
19723  with error type NotSupportedError, if the feature
19724 is not supported.
19725                 </p></description>
19726                 <description><p>
19727  with error type UnknownError in any other error case.
19728                 </p></description>
19729             </descriptive>
19730           </RaiseException>
19731         </Raises>
19732       </Operation>
19733       <Operation name="getAddressBook" id="::Contact::ContactManager::getAddressBook">
19734         <webidl>    <ref>AddressBook</ref> getAddressBook(<ref>AddressBookId</ref> addressBookId) raises(<ref>WebAPIException</ref>);</webidl>
19735         <descriptive>
19736             <brief>
19737  Gets the address book with the specified identifier.
19738             </brief>
19739            <description>
19740             <p>
19741 If the operation completes successfully, it must return the
19742 address book with the specified identifier.
19743             </p>
19744            </description>
19745             <version>
19746  1.0
19747             </version>
19748             <privilegelevel>
19749  public
19750             </privilegelevel>
19751             <privilege>
19752  http://tizen.org/privilege/contact.read
19753             </privilege>
19754             <Code> var contactRef; // ContactRef supposed to be initialized
19755  try {
19756    // Retrieves the Contact corresponding to a given ContactRef.
19757    var addressBook = tizen.contact.getAddressBook(contactRef.addressBookId);
19758    var contact = addressBook.get(contactRef.contactId);
19759    console.log(&quot;Successfully resolved contact with id: &quot; + contactRef.contactId);
19760  } catch(err) {
19761    console.log(&quot;Error: &quot; + err.name);
19762  }
19763  </Code>
19764         </descriptive>
19765         <Type name="AddressBook">
19766           <descriptive>
19767               <description><p>
19768  AddressBook The matching AddressBook object.
19769               </p></description>
19770           </descriptive>
19771         </Type>
19772         <ArgumentList>
19773           <Argument name="addressBookId">
19774             <descriptive>
19775                 <description><p>
19776  The address book identifier.
19777                 </p></description>
19778             </descriptive>
19779             <Type name="AddressBookId"/>
19780           </Argument>
19781         </ArgumentList>
19782         <Raises>
19783           <RaiseException name="WebAPIException">
19784             <descriptive>
19785                 <description><p>
19786  with error type NotFoundError, if there is no address book
19787 with the given identifier.
19788                 </p></description>
19789                 <description><p>
19790  with error type TypeMismatchError, if any input parameter
19791 is not compatible with the expected type for that parameter.
19792                 </p></description>
19793                 <description><p>
19794  with error type InvalidValuesError, if any of the input
19795 parameters contain an invalid value.
19796                 </p></description>
19797                 <description><p>
19798  with error type SecurityError, if the application does not have the privilege to call this method.
19799                 </p></description>
19800                 <description><p>
19801  with error type NotSupportedError, if the feature
19802 is not supported.
19803                 </p></description>
19804                 <description><p>
19805  with error type UnknownError in any other error case.
19806                 </p></description>
19807             </descriptive>
19808           </RaiseException>
19809         </Raises>
19810       </Operation>
19811       <Operation name="get" id="::Contact::ContactManager::get">
19812         <webidl>    <ref>Person</ref> get(<ref>PersonId</ref> personId) raises(<ref>WebAPIException</ref>);</webidl>
19813         <descriptive>
19814             <brief>
19815  Gets the person with the specified identifier.
19816             </brief>
19817            <description>
19818             <p>
19819 If the operation completes successfully, it must return the
19820 person with the specified identifier.
19821             </p>
19822            </description>
19823             <version>
19824  2.0
19825             </version>
19826             <privilegelevel>
19827  public
19828             </privilegelevel>
19829             <privilege>
19830  http://tizen.org/privilege/contact.read
19831             </privilege>
19832             <Code> var contactRef; // ContactRef supposed to be initialized
19833  try {
19834    // Retrieves the Person corresponding to a Contact.
19835    var addressBook = tizen.contact.getAddressBook(contactRef.addressBookId);
19836    var contact = addressBook.get(contactRef.contactId);
19837    var person = tizen.contact.get(contact.personId);
19838    console.log(&quot;Successfully resolved person with id: &quot; + contact.personId);
19839  } catch(err) {
19840    console.log(&quot;Error: &quot; + err.name);
19841  }
19842  </Code>
19843         </descriptive>
19844         <Type name="Person">
19845           <descriptive>
19846               <description><p>
19847  Person The matching Person object.
19848               </p></description>
19849           </descriptive>
19850         </Type>
19851         <ArgumentList>
19852           <Argument name="personId">
19853             <descriptive>
19854                 <description><p>
19855  The Person identifier.
19856                 </p></description>
19857             </descriptive>
19858             <Type name="PersonId"/>
19859           </Argument>
19860         </ArgumentList>
19861         <Raises>
19862           <RaiseException name="WebAPIException">
19863             <descriptive>
19864                 <description><p>
19865  with error type NotFoundError, if there is no person
19866 with the given identifier.
19867                 </p></description>
19868                 <description><p>
19869  with error type TypeMismatchError, if any input parameter
19870 is not compatible with the expected type for that parameter.
19871                 </p></description>
19872                 <description><p>
19873  with error type InvalidValuesError, if any of the input
19874 parameters contain an invalid value.
19875                 </p></description>
19876                 <description><p>
19877  with error type SecurityError, if the application does not have the privilege to call this method.
19878                 </p></description>
19879                 <description><p>
19880  with error type NotSupportedError, if the feature
19881 is not supported.
19882                 </p></description>
19883                 <description><p>
19884  with error type UnknownError in any other error case.
19885                 </p></description>
19886             </descriptive>
19887           </RaiseException>
19888         </Raises>
19889       </Operation>
19890       <Operation name="update" id="::Contact::ContactManager::update">
19891         <webidl>    void update(<ref>Person</ref> person) raises(<ref>WebAPIException</ref>);</webidl>
19892         <descriptive>
19893             <brief>
19894  Updates a person in the address book synchronously.
19895             </brief>
19896             <version>
19897  2.0
19898             </version>
19899             <privilegelevel>
19900  public
19901             </privilegelevel>
19902             <privilege>
19903  http://tizen.org/privilege/contact.write
19904             </privilege>
19905             <Code>  // Define the error callback
19906   function errorCB(err) {
19907     console.log( 'The following error occurred: ' +  err.name);
19908   }
19909
19910   function personsFoundCB(persons) {
19911     // The person has been successfully found
19912     // Let's try to change the isFavorite attribute
19913     persons[0].isFavorite = true;
19914     try {
19915       tizen.contact.update(persons[0]);
19916       console.log('First person was updated');
19917     } catch (err) {
19918       console.log( 'The following error occurred while updating: ' +  err.name);
19919     }
19920   }
19921
19922   try {
19923     tizen.contact.find(personsFoundCB, errorCB);
19924   } catch (err) {
19925     console.log( 'The following error occurred while finding: ' +  err.name);
19926   }
19927  </Code>
19928         </descriptive>
19929         <Type type="void"/>
19930         <ArgumentList>
19931           <Argument name="person">
19932             <descriptive>
19933                 <description><p>
19934  The person object to be updated.
19935                 </p></description>
19936             </descriptive>
19937             <Type name="Person"/>
19938           </Argument>
19939         </ArgumentList>
19940         <Raises>
19941           <RaiseException name="WebAPIException">
19942             <descriptive>
19943                 <description><p>
19944  with error type NotFoundError, if the identifier does not match.
19945                 </p></description>
19946                 <description><p>
19947  with error type TypeMismatchError, if any input parameter
19948 is not compatible with the expected type for that parameter.
19949                 </p></description>
19950                 <description><p>
19951  with error type InvalidValuesError, if any input parameter
19952 contains invalid values.
19953                 </p></description>
19954                 <description><p>
19955  with error type SecurityError, if the application does not have the privilege to call this method.
19956                 </p></description>
19957                 <description><p>
19958  with error type NotSupportedError, if the feature
19959 is not supported.
19960                 </p></description>
19961                 <description><p>
19962  with error type UnknownError, if the person could not be updated
19963 to an unknown error.
19964                 </p></description>
19965             </descriptive>
19966           </RaiseException>
19967         </Raises>
19968       </Operation>
19969       <Operation name="updateBatch" id="::Contact::ContactManager::updateBatch">
19970         <webidl>    void updateBatch(<ref>Person</ref>[] persons,
19971                      optional <ref>SuccessCallback</ref>? successCallback,
19972                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
19973         <descriptive>
19974             <brief>
19975  Updates several existing persons in the contact DB asynchronously.
19976             </brief>
19977            <description>
19978             <p>
19979 The <em>errorCallback()</em> is launched with these error types:
19980             </p>
19981             <ul>
19982               <li>
19983 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>
19984               <li>
19985 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
19986               <li>
19987 UnknownError - If any other error occurs, while trying to add the persons.              </li>
19988             </ul>
19989             <p>
19990 If the details of any persons cannot be updated, the error callback function that was passed in the invocation will be called.
19991             </p>
19992            </description>
19993             <version>
19994  2.0
19995             </version>
19996             <privilegelevel>
19997  public
19998             </privilegelevel>
19999             <privilege>
20000  http://tizen.org/privilege/contact.write
20001             </privilege>
20002             <Code>  // Define the error callback for all the asynchronous calls
20003   function errorCB(err) {
20004     console.log('The following error occurred: ' +  err.name);
20005   }
20006
20007   function personsUpdatedCB() {
20008     console.log('Contacts were updated');
20009   }
20010
20011   function personsFoundCB(persons) {
20012     // The person has been successfully found
20013     for(var i = 0; i &#60; persons.length; i++) {
20014       persons[i].isFavorite = true;
20015     }
20016     try {
20017       tizen.contact.updateBatch(persons, personsUpdatedCB, errorCB);
20018     } catch (err) {
20019       console.log('The following error occurred while updating: ' +  err.name);
20020     }
20021   }
20022
20023   try {
20024     tizen.contact.find(personsFoundCB, errorCB);
20025   } catch (err) {
20026     console.log('The following error occurred while finding: ' +  err.name);
20027   }
20028  </Code>
20029         </descriptive>
20030         <Type type="void"/>
20031         <ArgumentList>
20032           <Argument name="persons">
20033             <descriptive>
20034                 <description><p>
20035  A list of Person objects to be saved in the terminal storage.
20036                 </p></description>
20037             </descriptive>
20038             <Type type="array">
20039               <Type name="Person"/>
20040             </Type>
20041           </Argument>
20042           <Argument optional="optional" name="successCallback">
20043             <descriptive>
20044                 <description><p>
20045  The method to call when the invocation ends successfully.
20046                 </p></description>
20047             </descriptive>
20048             <Type name="SuccessCallback" nullable="nullable"/>
20049           </Argument>
20050           <Argument optional="optional" name="errorCallback">
20051             <descriptive>
20052                 <description><p>
20053  The method to call when the request to update the details of a person fail.
20054                 </p></description>
20055             </descriptive>
20056             <Type name="ErrorCallback" nullable="nullable"/>
20057           </Argument>
20058         </ArgumentList>
20059         <Raises>
20060           <RaiseException name="WebAPIException">
20061             <descriptive>
20062                 <description><p>
20063  with error type TypeMismatchError, if the input parameter
20064 is not compatible with the expected type for that parameter.
20065                 </p></description>
20066                 <description><p>
20067  with error type SecurityError, if the application does not have the privilege to call this method.
20068                 </p></description>
20069                 <description><p>
20070  with error type NotSupportedError, if this feature is not supported.
20071                 </p></description>
20072             </descriptive>
20073           </RaiseException>
20074         </Raises>
20075       </Operation>
20076       <Operation name="remove" id="::Contact::ContactManager::remove">
20077         <webidl>    void remove(<ref>PersonId</ref> personId) raises(<ref>WebAPIException</ref>);</webidl>
20078         <descriptive>
20079             <brief>
20080  Removes a person from the contact DB synchronously.
20081             </brief>
20082            <description>
20083             <p>
20084 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.
20085             </p>
20086            </description>
20087             <version>
20088  2.0
20089             </version>
20090             <privilegelevel>
20091  public
20092             </privilegelevel>
20093             <privilege>
20094  http://tizen.org/privilege/contact.write
20095             </privilege>
20096             <Code>  // Define the error callback
20097   function errorCB(err) {
20098     console.log('The following error occurred: ' +  err.name);
20099   }
20100
20101   function personsFoundCB(persons) {
20102     // The person has been successfully found
20103     if(persons.length > 0) {
20104       try {
20105         tizen.contact.remove(persons[0].id);
20106         console.log('First person was removed');
20107       } catch (err) {
20108         console.log('The following error occurred while removing: ' +  err.name);
20109       }
20110     } else {
20111       console.log( 'No persons.');
20112     }
20113   }
20114
20115   try {
20116     tizen.contact.find(personsFoundCB, errorCB);
20117   } catch (err) {
20118     console.log( 'The following error occurred while finding: ' +  err.name);
20119   }
20120  </Code>
20121         </descriptive>
20122         <Type type="void"/>
20123         <ArgumentList>
20124           <Argument name="personId">
20125             <descriptive>
20126                 <description><p>
20127  An identifier (ID attribute) of the Person object to delete.
20128                 </p></description>
20129             </descriptive>
20130             <Type name="PersonId"/>
20131           </Argument>
20132         </ArgumentList>
20133         <Raises>
20134           <RaiseException name="WebAPIException">
20135             <descriptive>
20136                 <description><p>
20137  with error type NotFoundError, if the identifier does not match
20138 any persons.
20139                 </p></description>
20140                 <description><p>
20141  with error type TypeMismatchError, if any input parameter
20142 is not compatible with the expected type for that parameter.
20143                 </p></description>
20144                 <description><p>
20145  with error type InvalidValuesError, if any input parameter
20146 contains invalid values.
20147                 </p></description>
20148                 <description><p>
20149  with error type SecurityError, if the application does not have the privilege to call this method.
20150                 </p></description>
20151                 <description><p>
20152  with error type NotSupportedError, if the feature
20153 is not supported.
20154                 </p></description>
20155                 <description><p>
20156  with error type UnknownError, if the person could not be removed
20157 to an unknown error.
20158                 </p></description>
20159             </descriptive>
20160           </RaiseException>
20161         </Raises>
20162       </Operation>
20163       <Operation name="removeBatch" id="::Contact::ContactManager::removeBatch">
20164         <webidl>    void removeBatch(<ref>PersonId</ref>[] personIds,
20165                      optional <ref>SuccessCallback</ref>? successCallback,
20166                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
20167         <descriptive>
20168             <brief>
20169  Removes persons from contact DB asynchronously.
20170             </brief>
20171            <description>
20172             <p>
20173 Removes the persons that correspond to the specified identifiers as well as the contacts related to them.
20174             </p>
20175             <p>
20176 The <em>errorCallback() </em>is launched with these error types:
20177             </p>
20178             <ul>
20179               <li>
20180 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>
20181               <li>
20182 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
20183               <li>
20184 UnknownError - If any other error occurs while trying to remove the persons.              </li>
20185             </ul>
20186            </description>
20187             <version>
20188  2.0
20189             </version>
20190             <privilegelevel>
20191  public
20192             </privilegelevel>
20193             <privilege>
20194  http://tizen.org/privilege/contact.write
20195             </privilege>
20196             <Code>  // Define the error callback
20197   function errorCB(err) {
20198     console.log( 'The following error occurred: ' +  err.name);
20199   }
20200
20201   function personsRemovedCB() {
20202     console.log('Contacts were removed');
20203   }
20204
20205   function personsFoundCB(persons) {
20206     // The person has been successfully found
20207     if(persons.length > 2) {
20208       try {
20209         tizen.contact.removeBatch([persons[0].id, persons[1].id], personsRemovedCB, errorCB);
20210       } catch (err) {
20211         console.log( 'The following error occurred while removing: ' +  err.name);
20212       }
20213     } else {
20214       console.log( 'Not enough persons.');
20215     }
20216   }
20217
20218   try {
20219     tizen.contact.find(personsFoundCB, errorCB);
20220   } catch (err) {
20221     console.log( 'The following error occurred while finding: ' +  err.name);
20222   }
20223  </Code>
20224         </descriptive>
20225         <Type type="void"/>
20226         <ArgumentList>
20227           <Argument name="personIds">
20228             <descriptive>
20229                 <description><p>
20230  A list of identifiers (id attribute) for the Person objects to delete.
20231                 </p></description>
20232             </descriptive>
20233             <Type type="array">
20234               <Type name="PersonId"/>
20235             </Type>
20236           </Argument>
20237           <Argument optional="optional" name="successCallback">
20238             <descriptive>
20239                 <description><p>
20240  The method to call when the invocation ends successfully.
20241                 </p></description>
20242             </descriptive>
20243             <Type name="SuccessCallback" nullable="nullable"/>
20244           </Argument>
20245           <Argument optional="optional" name="errorCallback">
20246             <descriptive>
20247                 <description><p>
20248  The method to call when the request to delete persons fails.
20249                 </p></description>
20250             </descriptive>
20251             <Type name="ErrorCallback" nullable="nullable"/>
20252           </Argument>
20253         </ArgumentList>
20254         <Raises>
20255           <RaiseException name="WebAPIException">
20256             <descriptive>
20257                 <description><p>
20258  with error type TypeMismatchError, if any input parameter
20259 is not compatible with the expected type for that parameter.
20260                 </p></description>
20261                 <description><p>
20262  with error type SecurityError, if the application does not have the privilege to call this method.
20263                 </p></description>
20264                 <description><p>
20265  with error type NotSupportedError, if the feature
20266 is not supported.
20267                 </p></description>
20268             </descriptive>
20269           </RaiseException>
20270         </Raises>
20271       </Operation>
20272       <Operation name="find" id="::Contact::ContactManager::find">
20273         <webidl>    void find(<ref>PersonArraySuccessCallback</ref> successCallback,
20274               optional <ref>ErrorCallback</ref>? errorCallback,
20275               optional <ref>AbstractFilter</ref>? filter,
20276               optional <ref>SortMode</ref>? sortMode) raises(<ref>WebAPIException</ref>);</webidl>
20277         <descriptive>
20278             <brief>
20279  Gets an array of all <em>Person </em>objects from the contact DB or the ones that match the optionally supplied filter.
20280             </brief>
20281            <description>
20282             <p>
20283 If the filter is passed and contains valid values, only those values in the
20284 address book that match the filter criteria as specified in the AbstractFilter
20285 interface will be returned in the successCallback. If no filter is passed, the filter
20286 contains any invalid values, the filter is <var>null </var> or undefined, then
20287 the implementation must return the full list of contact items
20288 in the successCallback. If no persons are available in the contact DB or no
20289 person matches the filter criteria, the successCallback will be invoked
20290 with an empty array.
20291             </p>
20292             <p>
20293 The <em>errorCallback() </em>is launched with these error types:
20294             </p>
20295             <ul>
20296               <li>
20297 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
20298               <li>
20299 UnknownError - If any other error occurs while trying to retrieve the persons.              </li>
20300             </ul>
20301            </description>
20302             <version>
20303  2.0
20304             </version>
20305             <privilegelevel>
20306  public
20307             </privilegelevel>
20308             <privilege>
20309  http://tizen.org/privilege/contact.read
20310             </privilege>
20311             <Code>  // Define the error callback.
20312   function errorCB(err) {
20313     console.log( 'The following error occurred: ' +  err.name);
20314   }
20315
20316   // Define the person search success callback.
20317   function personsFoundCB(persons) {
20318     console.log(persons.length + ' results found.');
20319   }
20320
20321   // Finds all the persons in the contact DB that have the word Ramone in their display name
20322   var filter = new tizen.AttributeFilter('displayName', 'CONTAINS', 'Ramone');
20323
20324   // The persons returned by the find() query will be sorted in the ascending order of their display name.
20325   var sortingMode =  new tizen.SortMode('displayName', 'ASC');
20326   try {
20327     tizen.contact.find(personsFoundCB, errorCB,
20328                      filter, sortingMode);
20329   } catch (err) {
20330     console.log( 'The following error occurred while finding: ' +  err.name);
20331   }
20332  </Code>
20333         </descriptive>
20334         <Type type="void"/>
20335         <ArgumentList>
20336           <Argument name="successCallback">
20337             <descriptive>
20338                 <description><p>
20339  The method to call when the invocation ends successfully.
20340                 </p></description>
20341             </descriptive>
20342             <Type name="PersonArraySuccessCallback"/>
20343           </Argument>
20344           <Argument optional="optional" name="errorCallback">
20345             <descriptive>
20346                 <description><p>
20347  The method to call when an error occurs.
20348                 </p></description>
20349             </descriptive>
20350             <Type name="ErrorCallback" nullable="nullable"/>
20351           </Argument>
20352           <Argument optional="optional" name="filter">
20353             <descriptive>
20354                 <description><p>
20355  A filter to select which persons are returned.
20356                 </p></description>
20357             </descriptive>
20358             <Type name="AbstractFilter" nullable="nullable"/>
20359           </Argument>
20360           <Argument optional="optional" name="sortMode">
20361             <descriptive>
20362                 <description><p>
20363  A variable to determine the sort order in which the persons are returned.
20364                 </p></description>
20365             </descriptive>
20366             <Type name="SortMode" nullable="nullable"/>
20367           </Argument>
20368         </ArgumentList>
20369         <Raises>
20370           <RaiseException name="WebAPIException">
20371             <descriptive>
20372                 <description><p>
20373  with error type TypeMismatchError, if any input parameter
20374 is not compatible with the expected type for that parameter.
20375                 </p></description>
20376                 <description><p>
20377  with error type SecurityError, if the application does not have the privilege to call this method.
20378                 </p></description>
20379                 <description><p>
20380  with error type NotSupportedError, if the feature
20381 is not supported.
20382                 </p></description>
20383             </descriptive>
20384           </RaiseException>
20385         </Raises>
20386       </Operation>
20387       <Operation name="addChangeListener" id="::Contact::ContactManager::addChangeListener">
20388         <webidl>    long addChangeListener(<ref>PersonsChangeCallback</ref> successCallback) raises(<ref>WebAPIException</ref>);</webidl>
20389         <descriptive>
20390             <brief>
20391  Subscribes to receive notifications about persons' changes.
20392             </brief>
20393            <description>
20394             <p>
20395 When executed, the implementation must immediately return a subscription identifier that identifies
20396 the watch operation. After returning the identifier, the watch operation is started
20397 asynchronously.
20398             </p>
20399            </description>
20400             <version>
20401  2.0
20402             </version>
20403             <privilegelevel>
20404  public
20405             </privilegelevel>
20406             <privilege>
20407  http://tizen.org/privilege/contact.read
20408             </privilege>
20409             <Code> var watcherId = 0; // watcher identifier
20410
20411  var watcher = {
20412    onpersonsadded: function(persons) {
20413      console.log(persons.length + ' persons were added');
20414    },
20415    onpersonsupdated: function(persons) {
20416      console.log(persons.length + ' persons were updated');
20417    },
20418    onpersonsremoved: function(ids) {
20419      console.log(ids.length + ' persons were deleted');
20420    }
20421  };
20422
20423  // registers to be notified when the persons' changes
20424  watcherId = tizen.contact.addChangeListener(watcher);
20425  </Code>
20426         </descriptive>
20427         <Type type="long">
20428           <descriptive>
20429               <description><p>
20430  long Identifier used to clear the watch subscription.
20431               </p></description>
20432           </descriptive>
20433         </Type>
20434         <ArgumentList>
20435           <Argument name="successCallback">
20436             <descriptive>
20437                 <description><p>
20438  Contains the methods for different types of change notifications.
20439                 </p></description>
20440             </descriptive>
20441             <Type name="PersonsChangeCallback"/>
20442           </Argument>
20443         </ArgumentList>
20444         <Raises>
20445           <RaiseException name="WebAPIException">
20446             <descriptive>
20447                 <description><p>
20448  with error type TypeMismatchError, if any input parameter
20449 is not compatible with the expected type for that parameter.
20450                 </p></description>
20451                 <description><p>
20452  with error type InvalidValuesError, if any of the input parameters
20453 contain an invalid value.
20454                 </p></description>
20455                 <description><p>
20456  with error type SecurityError, if the application does not have the privilege to call this method.
20457                 </p></description>
20458                 <description><p>
20459  with error type NotSupportedError, if the feature
20460 is not supported.
20461                 </p></description>
20462                 <description><p>
20463  with error type UnknownError in any other case.
20464                 </p></description>
20465             </descriptive>
20466           </RaiseException>
20467         </Raises>
20468       </Operation>
20469       <Operation name="removeChangeListener" id="::Contact::ContactManager::removeChangeListener">
20470         <webidl>    void removeChangeListener(long watchId) raises(<ref>WebAPIException</ref>);</webidl>
20471         <descriptive>
20472             <brief>
20473  Unsubscribes a persons' changes watch operation.
20474             </brief>
20475            <description>
20476             <p>
20477 If the watchId argument is valid and corresponds to a subscription already in
20478 place, the watch process must immediately stop and no further callbacks MUST be
20479 invoked. If the watchId argument is not valid or does not correspond to a
20480 valid subscription, the method should return without any further action.
20481             </p>
20482            </description>
20483             <version>
20484  2.0
20485             </version>
20486             <privilegelevel>
20487  public
20488             </privilegelevel>
20489             <privilege>
20490  http://tizen.org/privilege/contact.read
20491             </privilege>
20492             <Code> var watcherId = 0; // watcher identifier
20493
20494  // Receives persons' changes
20495  var watcher = {
20496    onpersonsadded: function(persons) {
20497      console.log(persons.length + ' persons were added');
20498    },
20499    onpersonsupdated: function(persons) {
20500      console.log(persons.length + ' persons were updated');
20501    },
20502    onpersonsremoved: function(ids) {
20503      console.log(ids.length + ' persons were removed');
20504    }
20505  };
20506
20507  // Cancel the watch operation
20508  function cancelWatch() {
20509     tizen.contact.removeChangeListener(watcherId);
20510  }
20511
20512  // registers to be notified when the persons' changes
20513  watcherId = tizen.contact.addChangeListener(watcher);
20514  </Code>
20515         </descriptive>
20516         <Type type="void"/>
20517         <ArgumentList>
20518           <Argument name="watchId">
20519             <descriptive>
20520                 <description><p>
20521  A subscription Identifier.
20522                 </p></description>
20523             </descriptive>
20524             <Type type="long"/>
20525           </Argument>
20526         </ArgumentList>
20527         <Raises>
20528           <RaiseException name="WebAPIException">
20529             <descriptive>
20530                 <description><p>
20531  with error type TypeMismatchError, if any input parameter
20532 is not compatible with the expected type for that parameter.
20533                 </p></description>
20534                 <description><p>
20535  with error type InvalidValuesError, if any of the input
20536 parameters contain an invalid value.
20537                 </p></description>
20538                 <description><p>
20539  with error type NotFoundError, if there is no listener
20540 with the given identifier.
20541                 </p></description>
20542                 <description><p>
20543  with error type SecurityError, if the application does not have the privilege to call this method.
20544                 </p></description>
20545                 <description><p>
20546  with error type NotSupportedError, if the feature
20547 is not supported.
20548                 </p></description>
20549                 <description><p>
20550  with error type UnknownError in any other error case.
20551                 </p></description>
20552             </descriptive>
20553           </RaiseException>
20554         </Raises>
20555       </Operation>
20556     </Interface>
20557     <Interface name="AddressBook" id="::Contact::AddressBook">
20558       <webidl>  [NoInterfaceObject] interface AddressBook {
20559
20560     readonly attribute <ref>AddressBookId</ref>? id;
20561
20562     readonly attribute DOMString name;
20563
20564     readonly attribute boolean readOnly;
20565
20566     <ref>Contact</ref> get(<ref>ContactId</ref> id) raises(<ref>WebAPIException</ref>);
20567
20568     void add(<ref>Contact</ref> contact) raises(<ref>WebAPIException</ref>);
20569
20570     void addBatch(<ref>Contact</ref>[] contacts,
20571                   optional <ref>ContactArraySuccessCallback</ref>? successCallback,
20572                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
20573
20574     void update(<ref>Contact</ref> contact) raises(<ref>WebAPIException</ref>);
20575
20576     void updateBatch(<ref>Contact</ref>[] contacts,
20577                      optional <ref>SuccessCallback</ref>? successCallback,
20578                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
20579
20580     void remove(<ref>ContactId</ref> id) raises(<ref>WebAPIException</ref>);
20581
20582     void removeBatch(<ref>ContactId</ref>[] ids,
20583                      optional <ref>SuccessCallback</ref>? successCallback,
20584                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
20585
20586     void find(<ref>ContactArraySuccessCallback</ref> successCallback,
20587               optional <ref>ErrorCallback</ref>? errorCallback,
20588               optional <ref>AbstractFilter</ref>? filter,
20589               optional <ref>SortMode</ref>? sortMode) raises(<ref>WebAPIException</ref>);
20590
20591     long addChangeListener(<ref>AddressBookChangeCallback</ref> successCallback,
20592                            optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
20593
20594     void removeChangeListener(long watchId) raises(<ref>WebAPIException</ref>);
20595
20596     <ref>ContactGroup</ref> getGroup(<ref>ContactGroupId</ref> groupId) raises(<ref>WebAPIException</ref>);
20597
20598     void addGroup(<ref>ContactGroup</ref> group) raises(<ref>WebAPIException</ref>);
20599
20600     void updateGroup(<ref>ContactGroup</ref> group) raises(<ref>WebAPIException</ref>);
20601
20602     void removeGroup(<ref>ContactGroupId</ref> groupId) raises(<ref>WebAPIException</ref>);
20603
20604     <ref>ContactGroup</ref>[] getGroups() raises(<ref>WebAPIException</ref>);
20605   };</webidl>
20606       <descriptive>
20607           <brief>
20608  This interface provides methods to manage an address book.
20609           </brief>
20610          <description>
20611           <p>
20612 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:
20613           </p>
20614           <ul>
20615             <li>
20616  <em>get()</em> - To get contacts that have a specific ID            </li>
20617             <li>
20618  <em>find()</em> - To find contacts using filters            </li>
20619             <li>
20620  <em>add() </em>or <em>addBatch()</em> - To add contacts to a specific address book            </li>
20621             <li>
20622  <em>update() </em>or <em>updateBatch()</em> - To update contacts in a specific address book            </li>
20623             <li>
20624  <em>remove() </em>or <em>removeBatch() </em> - To remove existing contacts            </li>
20625             <li>
20626  <em>addChangeListener() </em>or <em>removeChangeListener() </em> - To watch for address book changes            </li>
20627           </ul>
20628           <p>
20629 This interface also offers methods to manipulate groups within the address book, such as:
20630           </p>
20631           <ul>
20632             <li>
20633  <em>getGroup()</em> - To get a group having specific ID            </li>
20634             <li>
20635  <em>getGroups()</em> - To get groups in a specific address book            </li>
20636             <li>
20637  <em>addGroup() </em> - To add groups to a specific address book             </li>
20638             <li>
20639  <em>updateGroup() </em> - To update groups in a specific address book            </li>
20640             <li>
20641  <em>removeGroup() </em> - To remove existing groups            </li>
20642           </ul>
20643          </description>
20644           <version>
20645  1.0
20646           </version>
20647       </descriptive>
20648       <ExtendedAttributeList>
20649         <ExtendedAttribute name="NoInterfaceObject">
20650           <webidl>NoInterfaceObject</webidl>
20651         </ExtendedAttribute>
20652       </ExtendedAttributeList>
20653       <Attribute readonly="readonly" name="id" id="::Contact::AddressBook::id">
20654         <webidl>    readonly attribute <ref>AddressBookId</ref>? id;</webidl>
20655         <descriptive>
20656             <brief>
20657  An attribute to uniquely identify the address book.
20658             </brief>
20659            <description>
20660             <p>
20661 The value of this attribute shall be <var>null </var> if the address book
20662 is the unified address book.
20663             </p>
20664            </description>
20665             <version>
20666  1.0
20667             </version>
20668         </descriptive>
20669         <Type name="AddressBookId" nullable="nullable"/>
20670       </Attribute>
20671       <Attribute readonly="readonly" name="name" id="::Contact::AddressBook::name">
20672         <webidl>    readonly attribute DOMString name;</webidl>
20673         <descriptive>
20674             <brief>
20675  The address book descriptive name.
20676             </brief>
20677             <version>
20678  1.0
20679             </version>
20680         </descriptive>
20681         <Type type="DOMString"/>
20682       </Attribute>
20683       <Attribute readonly="readonly" name="readOnly" id="::Contact::AddressBook::readOnly">
20684         <webidl>    readonly attribute boolean readOnly;</webidl>
20685         <descriptive>
20686             <brief>
20687  An attribute to indicate if the address book is read-only.
20688             </brief>
20689            <description>
20690             <p>
20691 Some on line address books cannot be edited and will have this
20692 flag set to <var>true</var>.
20693             </p>
20694            </description>
20695             <version>
20696  1.0
20697             </version>
20698         </descriptive>
20699         <Type type="boolean"/>
20700       </Attribute>
20701       <Operation name="get" id="::Contact::AddressBook::get">
20702         <webidl>    <ref>Contact</ref> get(<ref>ContactId</ref> id) raises(<ref>WebAPIException</ref>);</webidl>
20703         <descriptive>
20704             <brief>
20705  Gets the contact with the specified identifier.
20706             </brief>
20707            <description>
20708             <p>
20709 If the operation completes successfully, it must return the
20710 contact with the specified identifier.
20711             </p>
20712            </description>
20713             <version>
20714  1.0
20715             </version>
20716             <privilegelevel>
20717  public
20718             </privilegelevel>
20719             <privilege>
20720  http://tizen.org/privilege/contact.read
20721             </privilege>
20722             <Code> var contactRef; // ContactRef supposed to be initialized
20723  try {
20724    // Retrieves the Contact corresponding to a given ContactRef.
20725    var addressBook = tizen.contact.getAddressBook(contactRef.addressBookId);
20726    var contact = addressBook.get(contactRef.contactId);
20727    console.log(&quot;Successfully resolved contact with id: &quot; + contactRef.contactId);
20728  } catch(err) {
20729    console.log(&quot;Error: &quot; + err.name);
20730  }
20731  </Code>
20732         </descriptive>
20733         <Type name="Contact">
20734           <descriptive>
20735               <description><p>
20736  Contact The matching Contact object.
20737               </p></description>
20738           </descriptive>
20739         </Type>
20740         <ArgumentList>
20741           <Argument name="id">
20742             <descriptive>
20743                 <description><p>
20744  A contact identifier.
20745                 </p></description>
20746             </descriptive>
20747             <Type name="ContactId"/>
20748           </Argument>
20749         </ArgumentList>
20750         <Raises>
20751           <RaiseException name="WebAPIException">
20752             <descriptive>
20753                 <description><p>
20754  with error type NotFoundError, if there is no contact
20755 with the given identifier.
20756                 </p></description>
20757                 <description><p>
20758  with error type TypeMismatchError, if any input parameter
20759 is not compatible with the expected type for that parameter.
20760                 </p></description>
20761                 <description><p>
20762  with error type InvalidValuesError, if any of the input
20763 parameters contain an invalid value.
20764                 </p></description>
20765                 <description><p>
20766  with error type SecurityError, if the application does not have the privilege to call this method.
20767                 </p></description>
20768                 <description><p>
20769  with error type NotSupportedError, if the feature
20770 is not supported.
20771                 </p></description>
20772                 <description><p>
20773  with error type UnknownError in any other error case.
20774                 </p></description>
20775             </descriptive>
20776           </RaiseException>
20777         </Raises>
20778       </Operation>
20779       <Operation name="add" id="::Contact::AddressBook::add">
20780         <webidl>    void add(<ref>Contact</ref> contact) raises(<ref>WebAPIException</ref>);</webidl>
20781         <descriptive>
20782             <brief>
20783  Adds a contact to the address book synchronously.
20784             </brief>
20785            <description>
20786             <p>
20787 If the contact is successfully inserted in the addressbook, the Contact object
20788 will have its identifier (id attribute) set when the function returns.
20789 This operation is done successfully, new person object is also generated automatically.
20790             </p>
20791             <p>
20792 If you wish to update an
20793 existing contact, call the update() method instead. If you wish to add a copy
20794 of an existing Contact object, call Contact.clone() method first and pass the
20795 clone to the add() method.
20796             </p>
20797             <p>
20798 The contact shall be added to default address book if the address book
20799 is the unified address book.
20800             </p>
20801            </description>
20802             <version>
20803  1.0
20804             </version>
20805             <privilegelevel>
20806  public
20807             </privilegelevel>
20808             <privilege>
20809  http://tizen.org/privilege/contact.write
20810             </privilege>
20811             <Code>  var addressbook;
20812
20813   // Get default address book
20814   addressbook = tizen.contact.getDefaultAddressBook();
20815
20816   try {
20817     var contact = new tizen.Contact({name: new tizen.ContactName({firstName:'Jeffrey',
20818                                           lastName:'Hyman',
20819                                           nicknames:['joey ramone']}),
20820                                     emails:[new tizen.ContactEmailAddress('user@domain.com')],
20821                                     phoneNumbers:[new tizen.ContactPhoneNumber('123456789')]});
20822     addressbook.add(contact);
20823     console.log('Contact added with id ' + contact.id);
20824   } catch (err) {
20825     console.log( 'The following error occurred while adding: ' +  err.name);
20826   }
20827  </Code>
20828         </descriptive>
20829         <Type type="void"/>
20830         <ArgumentList>
20831           <Argument name="contact">
20832             <descriptive>
20833                 <description><p>
20834  A contact to be added.
20835                 </p></description>
20836             </descriptive>
20837             <Type name="Contact"/>
20838           </Argument>
20839         </ArgumentList>
20840         <Raises>
20841           <RaiseException name="WebAPIException">
20842             <descriptive>
20843                 <description><p>
20844  with error type TypeMismatchError, if any input parameter
20845 is not compatible with the expected type for that parameter.
20846                 </p></description>
20847                 <description><p>
20848  with error type InvalidValuesError, if any input parameter
20849 contains invalid values.
20850                 </p></description>
20851                 <description><p>
20852  with error type SecurityError, if the application does not have the privilege to call this method.
20853                 </p></description>
20854                 <description><p>
20855  with error type NotSupportedError, if the feature
20856 is not supported.
20857                 </p></description>
20858                 <description><p>
20859  with error type UnknownError, if any other error occurs while trying to insert the contact.
20860                 </p></description>
20861             </descriptive>
20862           </RaiseException>
20863         </Raises>
20864       </Operation>
20865       <Operation name="addBatch" id="::Contact::AddressBook::addBatch">
20866         <webidl>    void addBatch(<ref>Contact</ref>[] contacts,
20867                   optional <ref>ContactArraySuccessCallback</ref>? successCallback,
20868                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
20869         <descriptive>
20870             <brief>
20871  Adds several contacts to the address book asynchronously.
20872             </brief>
20873            <description>
20874             <p>
20875 If all the contacts are successfully added to the address book,
20876 the success callback will be invoked, passing the list of Contact objects
20877 that were added, with their identifier set (id attribute).
20878             </p>
20879             <p>
20880 The <em>errorCallback()</em> is launched with these error types:
20881             </p>
20882             <ul>
20883               <li>
20884 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>
20885               <li>
20886 UnknownError - If any other error occurs, while trying to add the contacts.              </li>
20887             </ul>
20888             <p>
20889 If you wish to update an
20890 existing contact, call the update() method instead. If you wish to add a copy
20891 of an existing Contact object, call Contact.clone() method first and pass the
20892 clone to the add() method.
20893             </p>
20894             <p>
20895 If any of the contacts cannot be added, the error callback
20896 function that was passed in the invocation will be called.
20897             </p>
20898             <p>
20899 The contacts shall be added to local phone address book if the address book
20900 is the default address book.
20901             </p>
20902            </description>
20903             <version>
20904  1.0
20905             </version>
20906             <privilegelevel>
20907  public
20908             </privilegelevel>
20909             <privilege>
20910  http://tizen.org/privilege/contact.write
20911             </privilege>
20912             <Code>  var addressbook;
20913
20914   // Define the error callback
20915   function errorCB(err) {
20916     console.log( 'The following error occurred: ' +  err.name);
20917   }
20918
20919   // Define the add contact success callback
20920   function contactsAddedCB(contacts) {
20921     console.log( contacts.length + ' contact(s) were successfully added to an Address Book' );
20922   };
20923
20924   // Get default address book
20925   addressbook = tizen.contact.getDefaultAddressBook();
20926
20927   var c1 = new tizen.Contact({name: new tizen.ContactName({firstName:'Jeffrey',
20928                              lastName:'Hyman',
20929                              nicknames:['joey ramone']}),
20930                              emails:[new tizen.ContactEmailAddress('user1@domain.com')],
20931                              phoneNumbers:[new tizen.ContactPhoneNumber('123456789')]});
20932
20933   var c2 = new tizen.Contact({name: new tizen.ContactName({firstName:'Elton',
20934                              lastName:'John',
20935                              nicknames:['El']}),
20936                              emails:[new tizen.ContactEmailAddress('user2@domain.com')],
20937                              phoneNumbers:[new tizen.ContactPhoneNumber('987654321')]});
20938
20939   try {
20940     addressbook.addBatch([c1, c2], contactsAddedCB, errorCB);
20941   } catch (err) {
20942     console.log( 'The following error occurred while adding: ' +  err.name);
20943   }
20944  </Code>
20945         </descriptive>
20946         <Type type="void"/>
20947         <ArgumentList>
20948           <Argument name="contacts">
20949             <descriptive>
20950                 <description><p>
20951  A list of contacts to add.
20952                 </p></description>
20953             </descriptive>
20954             <Type type="array">
20955               <Type name="Contact"/>
20956             </Type>
20957           </Argument>
20958           <Argument optional="optional" name="successCallback">
20959             <descriptive>
20960                 <description><p>
20961  The method to call when the invocation ends successfully.
20962                 </p></description>
20963             </descriptive>
20964             <Type name="ContactArraySuccessCallback" nullable="nullable"/>
20965           </Argument>
20966           <Argument optional="optional" name="errorCallback">
20967             <descriptive>
20968                 <description><p>
20969  The method to call when the request fails.
20970                 </p></description>
20971             </descriptive>
20972             <Type name="ErrorCallback" nullable="nullable"/>
20973           </Argument>
20974         </ArgumentList>
20975         <Raises>
20976           <RaiseException name="WebAPIException">
20977             <descriptive>
20978                 <description><p>
20979  with error type TypeMismatchError, if the input parameter
20980 is not compatible with the expected type for that parameter.
20981                 </p></description>
20982                 <description><p>
20983  with error type SecurityError, if the application does not have the privilege to call this method.
20984                 </p></description>
20985                 <description><p>
20986  with error type NotSupportedError, if this feature is not supported.
20987                 </p></description>
20988             </descriptive>
20989           </RaiseException>
20990         </Raises>
20991       </Operation>
20992       <Operation name="update" id="::Contact::AddressBook::update">
20993         <webidl>    void update(<ref>Contact</ref> contact) raises(<ref>WebAPIException</ref>);</webidl>
20994         <descriptive>
20995             <brief>
20996  Updates a contact in the address book synchronously.
20997             </brief>
20998             <version>
20999  1.0
21000             </version>
21001             <privilegelevel>
21002  public
21003             </privilegelevel>
21004             <privilege>
21005  http://tizen.org/privilege/contact.write
21006             </privilege>
21007             <Code>  var addressbook;
21008
21009   // Define the error callback
21010   function errorCB(err) {
21011     console.log( 'The following error occurred: ' +  err.name);
21012   }
21013
21014   function contactsFoundCB(contacts) {
21015     // The contact has been successfully found
21016     // Let's try to change the first name
21017     contacts[0].name.firstName = 'Christopher';
21018     try {
21019       addressbook.update(contacts[0]);
21020       console.log('First contact was updated');
21021     } catch (err) {
21022       console.log( 'The following error occurred while updating: ' +  err.name);
21023     }
21024   }
21025
21026   // Get default address book.
21027   addressbook = tizen.contact.getDefaultAddressBook();
21028
21029   var filter = new tizen.AttributeFilter('name.firstName', 'CONTAINS', 'Chris');
21030   try {
21031     addressbook.find(contactsFoundCB, errorCB, filter);
21032   } catch (err) {
21033     console.log( 'The following error occurred while finding: ' +  err.name);
21034   }
21035  </Code>
21036         </descriptive>
21037         <Type type="void"/>
21038         <ArgumentList>
21039           <Argument name="contact">
21040             <descriptive>
21041                 <description><p>
21042  A contact object to update.
21043                 </p></description>
21044             </descriptive>
21045             <Type name="Contact"/>
21046           </Argument>
21047         </ArgumentList>
21048         <Raises>
21049           <RaiseException name="WebAPIException">
21050             <descriptive>
21051                 <description><p>
21052  with error type NotFoundError, if the identifier does not match.
21053                 </p></description>
21054                 <description><p>
21055  with error type TypeMismatchError, if any input parameter
21056 is not compatible with the expected type for that parameter.
21057                 </p></description>
21058                 <description><p>
21059  with error type InvalidValuesError, if any input parameter
21060 contains invalid values.
21061                 </p></description>
21062                 <description><p>
21063  with error type SecurityError, if the application does not have the privilege to call this method.
21064                 </p></description>
21065                 <description><p>
21066  with error type NotSupportedError, if the feature
21067 is not supported.
21068                 </p></description>
21069                 <description><p>
21070  with error type UnknownError, if the contact could not be updated
21071 to an unknown error.
21072                 </p></description>
21073             </descriptive>
21074           </RaiseException>
21075         </Raises>
21076       </Operation>
21077       <Operation name="updateBatch" id="::Contact::AddressBook::updateBatch">
21078         <webidl>    void updateBatch(<ref>Contact</ref>[] contacts,
21079                      optional <ref>SuccessCallback</ref>? successCallback,
21080                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
21081         <descriptive>
21082             <brief>
21083  Updates several existing contacts in the address book asynchronously.
21084             </brief>
21085            <description>
21086             <p>
21087 The <em>errorCallback()</em> is launched with these error types:
21088             </p>
21089             <ul>
21090               <li>
21091 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>
21092               <li>
21093 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
21094               <li>
21095 UnknownError - If any other error occurs, while trying to add the contacts.              </li>
21096             </ul>
21097             <p>
21098 If any of the contacts could not be updated, the error callback
21099 function that was passed in the invocation will be called.
21100             </p>
21101            </description>
21102             <version>
21103  1.0
21104             </version>
21105             <privilegelevel>
21106  public
21107             </privilegelevel>
21108             <privilege>
21109  http://tizen.org/privilege/contact.write
21110             </privilege>
21111             <Code>  var addressbook;
21112
21113   // Define the error callback for all the asynchronous calls
21114   function errorCB(err) {
21115     console.log('The following error occurred: ' +  err.name);
21116   }
21117
21118   function contactsUpdatedCB() {
21119     console.log('Contacts were updated');
21120   }
21121
21122   function contactsFoundCB(contacts) {
21123     // The contact has been successfully found
21124     for(var i = 0; i &#60; contacts.length; i++) {
21125       contacts[i].name.firstName = 'Christopher';
21126     }
21127     try {
21128       addressbook.updateBatch(contacts, contactsUpdatedCB, errorCB);
21129     } catch (err) {
21130       console.log('The following error occurred while updating: ' +  err.name);
21131     }
21132   }
21133
21134   // Get default address book.
21135   addressbook = tizen.contact.getDefaultAddressBook();
21136
21137   var filter = new tizen.AttributeFilter('name.firstName', 'CONTAINS', 'Chris');
21138   try {
21139     addressbook.find(contactsFoundCB, errorCB, filter);
21140   } catch (err) {
21141     console.log('The following error occurred while finding: ' +  err.name);
21142   }
21143  </Code>
21144         </descriptive>
21145         <Type type="void"/>
21146         <ArgumentList>
21147           <Argument name="contacts">
21148             <descriptive>
21149                 <description><p>
21150  A list of contact objects to be saved in the terminal storage.
21151                 </p></description>
21152             </descriptive>
21153             <Type type="array">
21154               <Type name="Contact"/>
21155             </Type>
21156           </Argument>
21157           <Argument optional="optional" name="successCallback">
21158             <descriptive>
21159                 <description><p>
21160  The method to call when the invocation ends successfully.
21161                 </p></description>
21162             </descriptive>
21163             <Type name="SuccessCallback" nullable="nullable"/>
21164           </Argument>
21165           <Argument optional="optional" name="errorCallback">
21166             <descriptive>
21167                 <description><p>
21168  The method to call when the request to update contacts fails.
21169                 </p></description>
21170             </descriptive>
21171             <Type name="ErrorCallback" nullable="nullable"/>
21172           </Argument>
21173         </ArgumentList>
21174         <Raises>
21175           <RaiseException name="WebAPIException">
21176             <descriptive>
21177                 <description><p>
21178  with error type TypeMismatchError, if the input parameter
21179 is not compatible with the expected type for that parameter.
21180                 </p></description>
21181                 <description><p>
21182  with error type SecurityError, if the application does not have the privilege to call this method.
21183                 </p></description>
21184                 <description><p>
21185  with error type NotSupportedError, if this feature is not supported.
21186                 </p></description>
21187             </descriptive>
21188           </RaiseException>
21189         </Raises>
21190       </Operation>
21191       <Operation name="remove" id="::Contact::AddressBook::remove">
21192         <webidl>    void remove(<ref>ContactId</ref> id) raises(<ref>WebAPIException</ref>);</webidl>
21193         <descriptive>
21194             <brief>
21195  Removes a contact from the address book synchronously.
21196             </brief>
21197            <description>
21198             <p>
21199 Removes the contact in the address book that corresponds to the specified
21200 identifier. This function will throw an exception if it failed to
21201 remove the specified contact.
21202             </p>
21203            </description>
21204             <version>
21205  1.0
21206             </version>
21207             <privilegelevel>
21208  public
21209             </privilegelevel>
21210             <privilege>
21211  http://tizen.org/privilege/contact.write
21212             </privilege>
21213             <Code>  var addressbook;
21214
21215   // Define the error callback
21216   function errorCB(err) {
21217     console.log('The following error occurred: ' +  err.name);
21218   }
21219
21220   function contactsFoundCB(contacts) {
21221     // The contact has been successfully found
21222     if(contacts.length > 0) {
21223       try {
21224         addressbook.remove(contacts[0].id);
21225         console.log('First contact was removed');
21226       } catch (err) {
21227         console.log('The following error occurred while removing: ' +  err.name);
21228       }
21229     } else {
21230       console.log( 'No contacts.');
21231     }
21232   }
21233
21234   // Get default address book.
21235   addressbook = tizen.contact.getDefaultAddressBook();
21236
21237   var filter = new tizen.AttributeFilter('name.firstName', 'CONTAINS', 'Chris');
21238   try {
21239     addressbook.find(contactsFoundCB, errorCB, filter);
21240   } catch (err) {
21241     console.log( 'The following error occurred while finding: ' +  err.name);
21242   }
21243  </Code>
21244         </descriptive>
21245         <Type type="void"/>
21246         <ArgumentList>
21247           <Argument name="id">
21248             <descriptive>
21249                 <description><p>
21250  An identifier (id attribute) of the contact object to delete.
21251                 </p></description>
21252             </descriptive>
21253             <Type name="ContactId"/>
21254           </Argument>
21255         </ArgumentList>
21256         <Raises>
21257           <RaiseException name="WebAPIException">
21258             <descriptive>
21259                 <description><p>
21260  with error type NotFoundError, if the identifier does not match
21261 any contact in the address book.
21262                 </p></description>
21263                 <description><p>
21264  with error type TypeMismatchError, if any input parameter
21265 is not compatible with the expected type for that parameter.
21266                 </p></description>
21267                 <description><p>
21268  with error type InvalidValuesError, if any input parameter
21269 contains invalid values.
21270                 </p></description>
21271                 <description><p>
21272  with error type SecurityError, if the application does not have the privilege to call this method.
21273                 </p></description>
21274                 <description><p>
21275  with error type NotSupportedError, if the feature
21276 is not supported.
21277                 </p></description>
21278                 <description><p>
21279  with error type UnknownError, if the contact could not be removed
21280 to an unknown error.
21281                 </p></description>
21282             </descriptive>
21283           </RaiseException>
21284         </Raises>
21285       </Operation>
21286       <Operation name="removeBatch" id="::Contact::AddressBook::removeBatch">
21287         <webidl>    void removeBatch(<ref>ContactId</ref>[] ids,
21288                      optional <ref>SuccessCallback</ref>? successCallback,
21289                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
21290         <descriptive>
21291             <brief>
21292  Removes several contacts from the address book asynchronously.
21293             </brief>
21294            <description>
21295             <p>
21296 The <em>errorCallback()</em> is launched with these error types:
21297             </p>
21298             <ul>
21299               <li>
21300 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>
21301               <li>
21302 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
21303               <li>
21304 UnknownError - If any other error occurs while trying to remove the contacts.              </li>
21305             </ul>
21306            </description>
21307             <version>
21308  1.0
21309             </version>
21310             <privilegelevel>
21311  public
21312             </privilegelevel>
21313             <privilege>
21314  http://tizen.org/privilege/contact.write
21315             </privilege>
21316             <Code>  var addressbook;
21317
21318   // Define the error callback
21319   function errorCB(err) {
21320     console.log( 'The following error occurred: ' +  err.name);
21321   }
21322
21323   function contactsRemovedCB() {
21324     console.log('Contacts were removed');
21325   }
21326
21327   function contactsFoundCB(contacts) {
21328     // The contact has been successfully found
21329     if(contacts.length > 2) {
21330       try {
21331         addressbook.removeBatch([contacts[0].id, contacts[1].id], contactsRemovedCB, errorCB);
21332       } catch (err) {
21333         console.log( 'The following error occurred while removing: ' +  err.name);
21334       }
21335     } else {
21336       console.log( 'Not enough contacts.');
21337     }
21338   }
21339
21340   // Get default address book.
21341   addressbook = tizen.contact.getDefaultAddressBook();
21342
21343   var filter = new tizen.AttributeFilter('name.firstName', 'CONTAINS', 'Chris');
21344   try {
21345     addressbook.find(contactsFoundCB, errorCB, filter);
21346   } catch (err) {
21347     console.log( 'The following error occurred while finding: ' +  err.name);
21348   }
21349  </Code>
21350         </descriptive>
21351         <Type type="void"/>
21352         <ArgumentList>
21353           <Argument name="ids">
21354             <descriptive>
21355                 <description><p>
21356  A list of identifiers (id attribute) for the contact objects to be deleted.
21357                 </p></description>
21358             </descriptive>
21359             <Type type="array">
21360               <Type name="ContactId"/>
21361             </Type>
21362           </Argument>
21363           <Argument optional="optional" name="successCallback">
21364             <descriptive>
21365                 <description><p>
21366  The method to call when the invocation ends successfully.
21367                 </p></description>
21368             </descriptive>
21369             <Type name="SuccessCallback" nullable="nullable"/>
21370           </Argument>
21371           <Argument optional="optional" name="errorCallback">
21372             <descriptive>
21373                 <description><p>
21374  The method to call when the request to delete contacts fails.
21375                 </p></description>
21376             </descriptive>
21377             <Type name="ErrorCallback" nullable="nullable"/>
21378           </Argument>
21379         </ArgumentList>
21380         <Raises>
21381           <RaiseException name="WebAPIException">
21382             <descriptive>
21383                 <description><p>
21384  with error type TypeMismatchError, if any input parameter
21385 is not compatible with the expected type for that parameter.
21386                 </p></description>
21387                 <description><p>
21388  with error type SecurityError, if the application does not have the privilege to call this method.
21389                 </p></description>
21390                 <description><p>
21391  with error type NotSupportedError, if the feature
21392 is not supported.
21393                 </p></description>
21394             </descriptive>
21395           </RaiseException>
21396         </Raises>
21397       </Operation>
21398       <Operation name="find" id="::Contact::AddressBook::find">
21399         <webidl>    void find(<ref>ContactArraySuccessCallback</ref> successCallback,
21400               optional <ref>ErrorCallback</ref>? errorCallback,
21401               optional <ref>AbstractFilter</ref>? filter,
21402               optional <ref>SortMode</ref>? sortMode) raises(<ref>WebAPIException</ref>);</webidl>
21403         <descriptive>
21404             <brief>
21405  Finds an array of all Contact objects from the specified address book or an array of
21406 Contact objects that match the optionally supplied filter.
21407             </brief>
21408            <description>
21409             <p>
21410 If the filter is passed and contains valid values, only those values in the
21411 address book that match the filter criteria as specified in the AbstractFilter
21412 interface will be returned in the successCallback. If no filter is passed, the filter
21413 contains any invalid values, the filter is <var>null</var> or undefined, then
21414 the implementation MUST return the full list of contact items
21415 in the successCallback. If no contacts are available in the address book or no
21416 contact matches the filter criteria, the successCallback will be invoked
21417 with an empty array.
21418             </p>
21419             <p>
21420 The <em>errorCallback() </em>is launched with these error types:
21421             </p>
21422             <ul>
21423               <li>
21424 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
21425               <li>
21426 UnknownError - If any other error occurs while trying to retrieve the contacts.              </li>
21427             </ul>
21428            </description>
21429             <version>
21430  1.0
21431             </version>
21432             <privilegelevel>
21433  public
21434             </privilegelevel>
21435             <privilege>
21436  http://tizen.org/privilege/contact.read
21437             </privilege>
21438             <Code>  var addressbook;
21439
21440   // Define the error callback.
21441   function errorCB(err) {
21442     console.log( 'The following error occurred: ' +  err.name);
21443   }
21444
21445   // Define the contact search success callback.
21446   function contactsFoundCB(contacts) {
21447      console.log(contacts.length + ' results found.');
21448   }
21449
21450   // Get default address book
21451   addressbook = tizen.contact.getDefaultAddressBook();
21452
21453   // Find all contacts in the address book that have &quot;Ramone&quot; in the nick name.
21454   var filter = new tizen.AttributeFilter('name.nicknames', 'CONTAINS', 'Ramone');
21455
21456   // The contacts returned by the find() query will be sorted by
21457   // ascending last name.
21458   var sortingMode =  new tizen.SortMode('name.lastName', 'ASC');
21459   try {
21460     addressbook.find(contactsFoundCB, errorCB,
21461                      filter, sortingModes);
21462   } catch (err) {
21463     console.log( 'The following error occurred while finding: ' +  err.name);
21464   }
21465  </Code>
21466         </descriptive>
21467         <Type type="void"/>
21468         <ArgumentList>
21469           <Argument name="successCallback">
21470             <descriptive>
21471                 <description><p>
21472  The method to call when the invocation ends successfully.
21473                 </p></description>
21474             </descriptive>
21475             <Type name="ContactArraySuccessCallback"/>
21476           </Argument>
21477           <Argument optional="optional" name="errorCallback">
21478             <descriptive>
21479                 <description><p>
21480  The method to call when an error occurs.
21481                 </p></description>
21482             </descriptive>
21483             <Type name="ErrorCallback" nullable="nullable"/>
21484           </Argument>
21485           <Argument optional="optional" name="filter">
21486             <descriptive>
21487                 <description><p>
21488  A filter used to select which contacts are returned.
21489                 </p></description>
21490             </descriptive>
21491             <Type name="AbstractFilter" nullable="nullable"/>
21492           </Argument>
21493           <Argument optional="optional" name="sortMode">
21494             <descriptive>
21495                 <description><p>
21496  A variable to determine the sort order in which the contacts are returned.
21497                 </p></description>
21498             </descriptive>
21499             <Type name="SortMode" nullable="nullable"/>
21500           </Argument>
21501         </ArgumentList>
21502         <Raises>
21503           <RaiseException name="WebAPIException">
21504             <descriptive>
21505                 <description><p>
21506  with error type TypeMismatchError, if any input parameter
21507 is not compatible with the expected type for that parameter.
21508                 </p></description>
21509                 <description><p>
21510  with error type SecurityError, if the application does not have the privilege to call this method.
21511                 </p></description>
21512                 <description><p>
21513  with error type NotSupportedError, if the feature
21514 is not supported.
21515                 </p></description>
21516             </descriptive>
21517           </RaiseException>
21518         </Raises>
21519       </Operation>
21520       <Operation name="addChangeListener" id="::Contact::AddressBook::addChangeListener">
21521         <webidl>    long addChangeListener(<ref>AddressBookChangeCallback</ref> successCallback,
21522                            optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
21523         <descriptive>
21524             <brief>
21525  Subscribes to receive notifications about address book changes.
21526             </brief>
21527            <description>
21528             <p>
21529 When executed, the implementation must immediately return a subscription identifier that identifies
21530 the watch operation. After returning the identifier, the watch operation is started
21531 asynchronously.
21532             </p>
21533            </description>
21534             <version>
21535  1.0
21536             </version>
21537             <privilegelevel>
21538  public
21539             </privilegelevel>
21540             <privilege>
21541  http://tizen.org/privilege/contact.read
21542             </privilege>
21543             <Code> var watcherId = 0; // watcher identifier
21544  var addressbook; // This example assumes addressbook is initialized
21545
21546  var watcher = {
21547    oncontactsadded: function(contacts) {
21548      console.log(contacts.length + ' contacts were added');
21549    },
21550    oncontactsupdated: function(contacts) {
21551      console.log(contacts.length + ' contacts were updated');
21552    },
21553    oncontactsremoved: function(ids) {
21554      console.log(ids.length + ' contacts were deleted');
21555    }
21556  };
21557
21558  // Registers to be notified when the address book changes
21559  watcherId = addressbook.addChangeListener(watcher);
21560  </Code>
21561         </descriptive>
21562         <Type type="long">
21563           <descriptive>
21564               <description><p>
21565  long An identifier used to clear the watch subscription.
21566               </p></description>
21567           </descriptive>
21568         </Type>
21569         <ArgumentList>
21570           <Argument name="successCallback">
21571             <descriptive>
21572                 <description><p>
21573  The method to call when different types of address book change notifications are received.
21574                 </p></description>
21575             </descriptive>
21576             <Type name="AddressBookChangeCallback"/>
21577           </Argument>
21578           <Argument optional="optional" name="errorCallback">
21579             <descriptive>
21580                 <description><p>
21581  The method to call if address book changes cannot be watched.
21582                 </p></description>
21583             </descriptive>
21584             <Type name="ErrorCallback" nullable="nullable"/>
21585           </Argument>
21586         </ArgumentList>
21587         <Raises>
21588           <RaiseException name="WebAPIException">
21589             <descriptive>
21590                 <description><p>
21591  with error type TypeMismatchError, if any input parameter
21592 is not compatible with the expected type for that parameter.
21593                 </p></description>
21594                 <description><p>
21595  with error type InvalidValuesError, if any of the input parameters
21596 contain an invalid value.
21597                 </p></description>
21598                 <description><p>
21599  with error type SecurityError, if the application does not have the privilege to call this method.
21600                 </p></description>
21601                 <description><p>
21602  with error type NotSupportedError, if the feature
21603 is not supported.
21604                 </p></description>
21605                 <description><p>
21606  with error type UnknownError in any other case.
21607                 </p></description>
21608             </descriptive>
21609           </RaiseException>
21610         </Raises>
21611       </Operation>
21612       <Operation name="removeChangeListener" id="::Contact::AddressBook::removeChangeListener">
21613         <webidl>    void removeChangeListener(long watchId) raises(<ref>WebAPIException</ref>);</webidl>
21614         <descriptive>
21615             <brief>
21616  Unsubscribes an address book changes watch operation.
21617             </brief>
21618            <description>
21619             <p>
21620 If the watchId argument is valid and corresponds to a subscription already in
21621 place, the watch process MUST immediately stop and no further callbacks MUST be
21622 invoked. If the watchId argument is not valid or does not correspond to a
21623 valid subscription, the method should return without any further action.
21624             </p>
21625            </description>
21626             <version>
21627  1.0
21628             </version>
21629             <privilegelevel>
21630  public
21631             </privilegelevel>
21632             <privilege>
21633  http://tizen.org/privilege/contact.read
21634             </privilege>
21635             <Code> var watcherId = 0; // watcher identifier
21636  var addressbook; // This example assumes addressbook is initialized
21637
21638  // Receives address book changes
21639  var watcher = {
21640    oncontactsadded: function(contacts) {
21641      console.log(contacts.length + ' contacts were added');
21642    },
21643    oncontactsupdated: function(contacts) {
21644      console.log(contacts.length + ' contacts were updated');
21645    },
21646    oncontactsremoved: function(ids) {
21647      console.log(ids.length + ' contacts were removed');
21648    }
21649  };
21650
21651  // Cancel the watch operation
21652  function cancelWatch() {
21653     addressbook.removeChangeListener(watcherId);
21654  }
21655
21656  // registers to be notified when the address book changes
21657  watcherId = addressbook.addChangeListener(watcher);
21658  </Code>
21659         </descriptive>
21660         <Type type="void"/>
21661         <ArgumentList>
21662           <Argument name="watchId">
21663             <descriptive>
21664                 <description><p>
21665  A subscription identifier.
21666                 </p></description>
21667             </descriptive>
21668             <Type type="long"/>
21669           </Argument>
21670         </ArgumentList>
21671         <Raises>
21672           <RaiseException name="WebAPIException">
21673             <descriptive>
21674                 <description><p>
21675  with error type TypeMismatchError, if any input parameter
21676 is not compatible with the expected type for that parameter.
21677                 </p></description>
21678                 <description><p>
21679  with error type InvalidValuesError, if any of the input
21680 parameters contain an invalid value.
21681                 </p></description>
21682                 <description><p>
21683  with error type NotFoundError, if there is no listener
21684 with the given identifier.
21685                 </p></description>
21686                 <description><p>
21687  with error type SecurityError, if the application does not have the privilege to call this method.
21688                 </p></description>
21689                 <description><p>
21690  with error type NotSupportedError, if the feature
21691 is not supported.
21692                 </p></description>
21693                 <description><p>
21694  with error type UnknownError in any other error case.
21695                 </p></description>
21696             </descriptive>
21697           </RaiseException>
21698         </Raises>
21699       </Operation>
21700       <Operation name="getGroup" id="::Contact::AddressBook::getGroup">
21701         <webidl>    <ref>ContactGroup</ref> getGroup(<ref>ContactGroupId</ref> groupId) raises(<ref>WebAPIException</ref>);</webidl>
21702         <descriptive>
21703             <brief>
21704  Gets the group with the specified identifier.
21705             </brief>
21706            <description>
21707             <p>
21708 If the operation completes successfully, it must return the
21709 group with the given identifier.
21710             </p>
21711            </description>
21712             <version>
21713  2.0
21714             </version>
21715             <privilegelevel>
21716  public
21717             </privilegelevel>
21718             <privilege>
21719  http://tizen.org/privilege/contact.read
21720             </privilege>
21721             <Code> try {
21722    // Retrieves the Person corresponding to a Contact.
21723    var addressBook = tizen.contact.getAddressBook(contactRef.addressBookId);
21724    var contact = addressBook.get(contactRef.contactId);
21725    var group = addressBook.getGroup(contact.groupIds[0].id);
21726    console.log(&quot;Successfully resolved group with id: &quot; + contact.groupIds[0].id);
21727  } catch(err) {
21728    console.log(&quot;Error: &quot; + err.name);
21729  }
21730  </Code>
21731         </descriptive>
21732         <Type name="ContactGroup">
21733           <descriptive>
21734               <description><p>
21735  ContactGroup The matching ContactGroup object.
21736               </p></description>
21737           </descriptive>
21738         </Type>
21739         <ArgumentList>
21740           <Argument name="groupId">
21741             <descriptive>
21742                 <description><p>
21743  A group identifier.
21744                 </p></description>
21745             </descriptive>
21746             <Type name="ContactGroupId"/>
21747           </Argument>
21748         </ArgumentList>
21749         <Raises>
21750           <RaiseException name="WebAPIException">
21751             <descriptive>
21752                 <description><p>
21753  with error type NotFoundError, if there is no contact
21754 with the given identifier.
21755                 </p></description>
21756                 <description><p>
21757  with error type TypeMismatchError, if any input parameter
21758 is not compatible with the expected type for that parameter.
21759                 </p></description>
21760                 <description><p>
21761  with error type InvalidValuesError, if any of the input
21762 parameters contain an invalid value.
21763                 </p></description>
21764                 <description><p>
21765  with error type SecurityError, if the application does not have the privilege to call this method.
21766                 </p></description>
21767                 <description><p>
21768  with error type NotSupportedError, if the feature
21769 is not supported.
21770                 </p></description>
21771                 <description><p>
21772  with error type UnknownError in any other error case.
21773                 </p></description>
21774             </descriptive>
21775           </RaiseException>
21776         </Raises>
21777       </Operation>
21778       <Operation name="addGroup" id="::Contact::AddressBook::addGroup">
21779         <webidl>    void addGroup(<ref>ContactGroup</ref> group) raises(<ref>WebAPIException</ref>);</webidl>
21780         <descriptive>
21781             <brief>
21782  Adds a group to the address book.
21783             </brief>
21784            <description>
21785             <p>
21786 If the group is successfully inserted in the addressbook, the Group object
21787 will have its identifier (id attribute) set when the function returns.
21788             </p>
21789             <p>
21790 The group shall be added to local phone address book if the address book
21791 is the default address book.
21792             </p>
21793            </description>
21794             <version>
21795  2.0
21796             </version>
21797             <privilegelevel>
21798  public
21799             </privilegelevel>
21800             <privilege>
21801  http://tizen.org/privilege/contact.write
21802             </privilege>
21803             <Code>  var addressbook;
21804
21805   // Get address book
21806   var addressbooks = tizen.contact.getAddressBooks();
21807   addressbook = addressbooks[0];
21808
21809   try {
21810     var group = new tizen.ContactGroup('Company');
21811     addressbook.addGroup(group);
21812     console.log('Group added with id ' + group.id);
21813   } catch (err) {
21814     console.log( 'The following error occurred while adding: ' +  err.name);
21815   }
21816  </Code>
21817         </descriptive>
21818         <Type type="void"/>
21819         <ArgumentList>
21820           <Argument name="group">
21821             <descriptive>
21822                 <description><p>
21823  A ContactGroup object to be added.
21824                 </p></description>
21825             </descriptive>
21826             <Type name="ContactGroup"/>
21827           </Argument>
21828         </ArgumentList>
21829         <Raises>
21830           <RaiseException name="WebAPIException">
21831             <descriptive>
21832                 <description><p>
21833  with error type TypeMismatchError, if any input parameter
21834 is not compatible with the expected type for that parameter.
21835                 </p></description>
21836                 <description><p>
21837  with error type InvalidValuesError, if any input parameter
21838 contains invalid values.
21839                 </p></description>
21840                 <description><p>
21841  with error type SecurityError, if the application does not have the privilege to call this method.
21842                 </p></description>
21843                 <description><p>
21844  with error type NotSupportedError, if the feature
21845 is not supported.
21846                 </p></description>
21847                 <description><p>
21848  with error type UnknownError, if any other error occurs while trying to insert the contact.
21849                 </p></description>
21850             </descriptive>
21851           </RaiseException>
21852         </Raises>
21853       </Operation>
21854       <Operation name="updateGroup" id="::Contact::AddressBook::updateGroup">
21855         <webidl>    void updateGroup(<ref>ContactGroup</ref> group) raises(<ref>WebAPIException</ref>);</webidl>
21856         <descriptive>
21857             <brief>
21858  Updates a group in the address book.
21859             </brief>
21860             <version>
21861  2.0
21862             </version>
21863             <privilegelevel>
21864  public
21865             </privilegelevel>
21866             <privilege>
21867  http://tizen.org/privilege/contact.write
21868             </privilege>
21869             <Code>  var addressbook;
21870
21871   // Get address book.
21872   var addressbooks = tizen.contact.getAddressBooks();
21873   addressbook = addressbooks[0];
21874
21875   try {
21876     groups = addressbook.getGroups();
21877     groups[0].name = 'Friends';
21878     addressbook.updateGroup(groups[0]);
21879     console.log('First group was updated');
21880   } catch (err) {
21881     console.log( 'The following error occurred while adding: ' +  err.name);
21882   }
21883  </Code>
21884         </descriptive>
21885         <Type type="void"/>
21886         <ArgumentList>
21887           <Argument name="group">
21888             <descriptive>
21889                 <description><p>
21890  A ContactGroup object to be updated.
21891                 </p></description>
21892             </descriptive>
21893             <Type name="ContactGroup"/>
21894           </Argument>
21895         </ArgumentList>
21896         <Raises>
21897           <RaiseException name="WebAPIException">
21898             <descriptive>
21899                 <description><p>
21900  with error type TypeMismatchError, if any input parameter
21901 is not compatible with the expected type for that parameter.
21902                 </p></description>
21903                 <description><p>
21904  with error type InvalidValuesError, if any input parameter
21905 contains invalid values.
21906                 </p></description>
21907                 <description><p>
21908  with error type SecurityError, if the application does not have the privilege to call this method.
21909                 </p></description>
21910                 <description><p>
21911  with error type NotSupportedError, if the feature
21912 is not supported.
21913                 </p></description>
21914                 <description><p>
21915  with error type UnknownError, if the group could not be updated
21916 to an unknown error.
21917                 </p></description>
21918             </descriptive>
21919           </RaiseException>
21920         </Raises>
21921       </Operation>
21922       <Operation name="removeGroup" id="::Contact::AddressBook::removeGroup">
21923         <webidl>    void removeGroup(<ref>ContactGroupId</ref> groupId) raises(<ref>WebAPIException</ref>);</webidl>
21924         <descriptive>
21925             <brief>
21926  Removes a group from the address book.
21927             </brief>
21928            <description>
21929             <p>
21930 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.
21931             </p>
21932            </description>
21933             <version>
21934  2.0
21935             </version>
21936             <privilegelevel>
21937  public
21938             </privilegelevel>
21939             <privilege>
21940  http://tizen.org/privilege/contact.write
21941             </privilege>
21942             <Code>  var addressbook;
21943
21944   // Get default address book.
21945   var addressbooks = tizen.contact.getAddressBooks();
21946   addressbook = addressbooks[0];
21947
21948   try {
21949     groups = addressbook.getGroups();
21950     addressbook.removeGroup(groups[0].id);
21951     console.log('First group was removed');
21952   } catch (err) {
21953     console.log( 'The following error occurred while finding: ' +  err.name);
21954   }
21955  </Code>
21956         </descriptive>
21957         <Type type="void"/>
21958         <ArgumentList>
21959           <Argument name="groupId">
21960             <descriptive>
21961                 <description><p>
21962  An identifier (id attribute) of the ContactGroup object to be deleted.
21963                 </p></description>
21964             </descriptive>
21965             <Type name="ContactGroupId"/>
21966           </Argument>
21967         </ArgumentList>
21968         <Raises>
21969           <RaiseException name="WebAPIException">
21970             <descriptive>
21971                 <description><p>
21972  with error type NotFoundError, if the identifier does not match
21973 any contact in the address book.
21974                 </p></description>
21975                 <description><p>
21976  with error type TypeMismatchError, if any input parameter
21977 is not compatible with the expected type for that parameter.
21978                 </p></description>
21979                 <description><p>
21980  with error type InvalidValuesError, if any input parameter
21981 contains invalid values.
21982                 </p></description>
21983                 <description><p>
21984  with error type SecurityError, if the application does not have the privilege to call this method.
21985                 </p></description>
21986                 <description><p>
21987  with error type NotSupportedError, if the feature
21988 is not supported.
21989                 </p></description>
21990                 <description><p>
21991  with error type UnknownError, if the group could not be removed
21992 to an unknown error.
21993                 </p></description>
21994             </descriptive>
21995           </RaiseException>
21996         </Raises>
21997       </Operation>
21998       <Operation name="getGroups" id="::Contact::AddressBook::getGroups">
21999         <webidl>    <ref>ContactGroup</ref>[] getGroups() raises(<ref>WebAPIException</ref>);</webidl>
22000         <descriptive>
22001             <brief>
22002  Gets an array of all ContactGroup objects from the specified address book.
22003             </brief>
22004             <version>
22005  2.0
22006             </version>
22007             <privilegelevel>
22008  public
22009             </privilegelevel>
22010             <privilege>
22011  http://tizen.org/privilege/contact.read
22012             </privilege>
22013             <Code>  var addressbook;
22014
22015   // Get default address book.
22016   var addressbooks = tizen.contact.getAddressBooks();
22017   addressbook = addressbooks[0];
22018
22019   try {
22020     groups = addressbook.getGroups();
22021     console.log('Number of groups is ' + groups.length);
22022   } catch (err) {
22023     console.log( 'The following error occurred while finding: ' +  err.name);
22024   }
22025  </Code>
22026         </descriptive>
22027         <Type type="array">
22028           <descriptive>
22029               <description><p>
22030  ContactGroup[] The array of ContactGroup object from this address book.
22031               </p></description>
22032           </descriptive>
22033           <Type name="ContactGroup"/>
22034         </Type>
22035         <ArgumentList/>
22036         <Raises>
22037           <RaiseException name="WebAPIException">
22038             <descriptive>
22039                 <description><p>
22040  with error type NotFoundError, if the identifier does not match
22041 any contact in the address book.
22042                 </p></description>
22043                 <description><p>
22044  with error type TypeMismatchError, if any input parameter
22045 is not compatible with the expected type for that parameter.
22046                 </p></description>
22047                 <description><p>
22048  with error type InvalidValuesError, if any input parameter
22049 contains invalid values.
22050                 </p></description>
22051                 <description><p>
22052  with error type SecurityError, if the application does not have the privilege to call this method.
22053                 </p></description>
22054                 <description><p>
22055  with error type NotSupportedError, if the feature
22056 is not supported.
22057                 </p></description>
22058                 <description><p>
22059  with error type UnknownError, if the group could not be retrieved due
22060 to an unknown error.
22061                 </p></description>
22062             </descriptive>
22063           </RaiseException>
22064         </Raises>
22065       </Operation>
22066     </Interface>
22067     <Interface name="Person" id="::Contact::Person">
22068       <webidl>  [NoInterfaceObject] interface Person {
22069     readonly attribute <ref>PersonId</ref> id;
22070
22071     readonly attribute DOMString displayName;
22072
22073     readonly attribute long contactCount;
22074
22075     readonly attribute boolean hasPhoneNumber;
22076
22077     readonly attribute boolean hasEmail;
22078
22079     attribute boolean isFavorite;
22080
22081     attribute DOMString? photoURI;
22082
22083     attribute DOMString? ringtoneURI;
22084
22085     attribute <ref>ContactId</ref> displayContactId;
22086
22087     void link(<ref>PersonId</ref> personId) raises(<ref>WebAPIException</ref>);
22088
22089     <ref>Person</ref> unlink(<ref>ContactId</ref> contactId) raises(<ref>WebAPIException</ref>);
22090   };</webidl>
22091       <descriptive>
22092           <brief>
22093  The person object.
22094           </brief>
22095           <version>
22096  2.0
22097           </version>
22098       </descriptive>
22099       <ExtendedAttributeList>
22100         <ExtendedAttribute name="NoInterfaceObject">
22101           <webidl>NoInterfaceObject</webidl>
22102         </ExtendedAttribute>
22103       </ExtendedAttributeList>
22104       <Attribute readonly="readonly" name="id" id="::Contact::Person::id">
22105         <webidl>    readonly attribute <ref>PersonId</ref> id;</webidl>
22106         <descriptive>
22107             <brief>
22108  The identifier of the person.
22109             </brief>
22110             <version>
22111  2.0
22112             </version>
22113         </descriptive>
22114         <Type name="PersonId"/>
22115       </Attribute>
22116       <Attribute readonly="readonly" name="displayName" id="::Contact::Person::displayName">
22117         <webidl>    readonly attribute DOMString displayName;</webidl>
22118         <descriptive>
22119             <brief>
22120  An attribute to identify a person by storing the display name in a string.
22121 It is selected from the contacts' display names.
22122             </brief>
22123             <version>
22124  2.0
22125             </version>
22126         </descriptive>
22127         <Type type="DOMString"/>
22128       </Attribute>
22129       <Attribute readonly="readonly" name="contactCount" id="::Contact::Person::contactCount">
22130         <webidl>    readonly attribute long contactCount;</webidl>
22131         <descriptive>
22132             <brief>
22133  An attribute to count the number of the contacts that belong to a person.
22134             </brief>
22135             <version>
22136  2.0
22137             </version>
22138         </descriptive>
22139         <Type type="long"/>
22140       </Attribute>
22141       <Attribute readonly="readonly" name="hasPhoneNumber" id="::Contact::Person::hasPhoneNumber">
22142         <webidl>    readonly attribute boolean hasPhoneNumber;</webidl>
22143         <descriptive>
22144             <brief>
22145  An attribute to indicate if a person has a phone number.
22146             </brief>
22147             <version>
22148  2.0
22149             </version>
22150         </descriptive>
22151         <Type type="boolean"/>
22152       </Attribute>
22153       <Attribute readonly="readonly" name="hasEmail" id="::Contact::Person::hasEmail">
22154         <webidl>    readonly attribute boolean hasEmail;</webidl>
22155         <descriptive>
22156             <brief>
22157  An attribute to indicate if the person has an email addresses.
22158             </brief>
22159             <version>
22160  2.0
22161             </version>
22162         </descriptive>
22163         <Type type="boolean"/>
22164       </Attribute>
22165       <Attribute name="isFavorite" id="::Contact::Person::isFavorite">
22166         <webidl>    attribute boolean isFavorite;</webidl>
22167         <descriptive>
22168             <brief>
22169  An attribute to indicate whether the contact is a favorite or not.
22170             </brief>
22171            <description>
22172             <p>
22173 Indicates if the person was marked as <em>Favorite</em> or not.
22174             </p>
22175             <p>
22176 By default, this attribute is set to <var>false</var>.
22177             </p>
22178            </description>
22179             <version>
22180  2.0
22181             </version>
22182         </descriptive>
22183         <Type type="boolean"/>
22184       </Attribute>
22185       <Attribute name="photoURI" id="::Contact::Person::photoURI">
22186         <webidl>    attribute DOMString? photoURI;</webidl>
22187         <descriptive>
22188             <brief>
22189  The URI of a picture of a person.
22190             </brief>
22191            <description>
22192             <p>
22193 This attribute is used to store a URI that points to an image that can represent the
22194 person object. This attribute only contains a local file URI.
22195 Person's photoURI is bounded to linked contacts' valid photoURI.
22196 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
22197             </p>
22198             <p>
22199 By default, this attribute is set to <var>null</var>.
22200             </p>
22201            </description>
22202             <version>
22203  2.0
22204             </version>
22205         </descriptive>
22206         <Type type="DOMString" nullable="nullable"/>
22207       </Attribute>
22208       <Attribute name="ringtoneURI" id="::Contact::Person::ringtoneURI">
22209         <webidl>    attribute DOMString? ringtoneURI;</webidl>
22210         <descriptive>
22211             <brief>
22212  An attribute to specify and store the URI of a custom ringtone for a contact.
22213             </brief>
22214            <description>
22215             <p>
22216 By default, this attribute is initialized to <var>null</var>.
22217 This attribute only contains a local file URI.
22218             </p>
22219            </description>
22220             <version>
22221  2.0
22222             </version>
22223         </descriptive>
22224         <Type type="DOMString" nullable="nullable"/>
22225       </Attribute>
22226       <Attribute name="displayContactId" id="::Contact::Person::displayContactId">
22227         <webidl>    attribute <ref>ContactId</ref> displayContactId;</webidl>
22228         <descriptive>
22229             <brief>
22230  The ID of a contact that represents information of the person.
22231             </brief>
22232            <description>
22233             <p>
22234 The contact, this value is indicating, is used to show detailed information of the person.
22235             </p>
22236            </description>
22237             <version>
22238  2.0
22239             </version>
22240         </descriptive>
22241         <Type name="ContactId"/>
22242       </Attribute>
22243       <Operation name="link" id="::Contact::Person::link">
22244         <webidl>    void link(<ref>PersonId</ref> personId) raises(<ref>WebAPIException</ref>);</webidl>
22245         <descriptive>
22246             <brief>
22247  Aggregates another person to this person.
22248             </brief>
22249            <description>
22250             <p>
22251 Person is a meta object which aggregates contacts and to make a person, user should combine related contacts.
22252 For this operation, link method is provided.
22253 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;.
22254 After this function returns, the target &quot;Person A&quot; is removed from DB.
22255             </p>
22256            </description>
22257             <version>
22258  2.0
22259             </version>
22260             <privilegelevel>
22261  public
22262             </privilegelevel>
22263             <privilege>
22264  http://tizen.org/privilege/contact.write
22265             </privilege>
22266             <Code>  // Define the error callback for all the asynchronous calls
22267   function errorCB(err) {
22268     console.log( 'The following error occurred: ' +  err.name);
22269   }
22270
22271   function personsFoundCB(persons) {
22272     // The persons has been successfully found
22273     try {
22274       persons[0].link(persons[1].id);
22275       console.log('Second person was merged to the first person.');
22276     } catch (err) {
22277       console.log( 'The following error occurred while updating: ' +  err.name);
22278     }
22279   }
22280
22281   try {
22282     tizen.contact.find(personsFoundCB, errorCB);
22283   } catch (err) {
22284     console.log( 'The following error occurred while adding: ' +  err.name);
22285   }
22286  </Code>
22287         </descriptive>
22288         <Type type="void"/>
22289         <ArgumentList>
22290           <Argument name="personId">
22291             <descriptive>
22292                 <description><p>
22293  The ID of person to be merged.
22294                 </p></description>
22295             </descriptive>
22296             <Type name="PersonId"/>
22297           </Argument>
22298         </ArgumentList>
22299         <Raises>
22300           <RaiseException name="WebAPIException">
22301             <descriptive>
22302                 <description><p>
22303  with error type TypeMismatchError, if any input parameter
22304 is not compatible with the expected type for that parameter.
22305                 </p></description>
22306                 <description><p>
22307  with error type InvalidValuesError, if any input parameter
22308 contains invalid values.
22309                 </p></description>
22310                 <description><p>
22311  with error type SecurityError, if the application does not have the privilege to call this method.
22312                 </p></description>
22313                 <description><p>
22314  with error type NotSupportedError, if the feature
22315 is not supported.
22316                 </p></description>
22317                 <description><p>
22318  with error type UnknownError, if any other error occurs while trying to insert the contact.
22319                 </p></description>
22320             </descriptive>
22321           </RaiseException>
22322         </Raises>
22323       </Operation>
22324       <Operation name="unlink" id="::Contact::Person::unlink">
22325         <webidl>    <ref>Person</ref> unlink(<ref>ContactId</ref> contactId) raises(<ref>WebAPIException</ref>);</webidl>
22326         <descriptive>
22327             <brief>
22328  Separates a contact from this person.
22329             </brief>
22330            <description>
22331             <p>
22332 Person is aggregated contacts and if a user wants to detach one contact from person, unlink method is provided.
22333 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.
22334 This function returns a newly created Person object that indicates the separated contact.
22335             </p>
22336            </description>
22337             <version>
22338  2.0
22339             </version>
22340             <privilegelevel>
22341  public
22342             </privilegelevel>
22343             <privilege>
22344  http://tizen.org/privilege/contact.write
22345             </privilege>
22346             <Code>  var myPersonId = '1'; //ID of modified
22347
22348   var addressbook; // Default addressbook
22349   var person;    // Existing person obtained from addressbook
22350   var newPerson; // New person, which will be created during unlink
22351
22352   // Define the error callback.
22353   function errorCB(err) {
22354     console.log( 'The following error occurred: ' +  err.name);
22355   }
22356
22357   // Define the contact search success callback.
22358   function contactsFoundCB(contacts) {
22359     if (contacts.length > 1) {
22360       try {
22361         // unlink first contact
22362         newPerson = person.unlink(contacts[0].id);
22363       } catch (err) {
22364         console.log( 'The following error occurred while unlink: ' +  err.name);
22365       }
22366     } else {
22367         console.log( 'Not enough contacts ');
22368     }
22369   }
22370
22371   try {
22372     // Get person
22373     person = tizen.contact.get(myPersonId);
22374
22375     // Get default address book
22376     addressbook = tizen.contact.getDefaultAddressBook();
22377
22378     // Find all contacts in the default address book that personId
22379     // is exactly myPersonId
22380     var filter = new tizen.AttributeFilter('personId', 'EXACTLY', myPersonId);
22381
22382     addressbook.find(contactsFoundCB, errorCB, filter);
22383   } catch (err) {
22384     console.log( 'The following error occurred while processing: ' +  err.name);
22385   }
22386  </Code>
22387         </descriptive>
22388         <Type name="Person"/>
22389         <ArgumentList>
22390           <Argument name="contactId">
22391             <descriptive>
22392                 <description><p>
22393  The ID of contact to unlink.
22394                 </p></description>
22395             </descriptive>
22396             <Type name="ContactId"/>
22397           </Argument>
22398         </ArgumentList>
22399         <Raises>
22400           <RaiseException name="WebAPIException">
22401             <descriptive>
22402                 <description><p>
22403  with error type TypeMismatchError, if any input parameter
22404 is not compatible with the expected type for that parameter.
22405                 </p></description>
22406                 <description><p>
22407  with error type InvalidValuesError, if any input parameter
22408 contains invalid values.
22409                 </p></description>
22410                 <description><p>
22411  with error type SecurityError, if the application does not have the privilege to call this method.
22412                 </p></description>
22413                 <description><p>
22414  with error type NotSupportedError, if the feature
22415 is not supported.
22416                 </p></description>
22417                 <description><p>
22418  with error type UnknownError, if any other error occurs while trying to insert the contact.
22419                 </p></description>
22420             </descriptive>
22421           </RaiseException>
22422         </Raises>
22423       </Operation>
22424     </Interface>
22425     <Dictionary name="ContactInit" id="::Contact::ContactInit">
22426       <webidl>  dictionary ContactInit {
22427     <ref>ContactName</ref> name;
22428     <ref>ContactAddress</ref>[] addresses;
22429     DOMString photoURI;
22430     <ref>ContactPhoneNumber</ref>[] phoneNumbers;
22431     <ref>ContactEmailAddress</ref>[] emails;
22432     Date birthday;
22433     <ref>ContactAnniversary</ref>[] anniversaries;
22434     <ref>ContactOrganization</ref>[] organizations;
22435     DOMString[] notes;
22436     <ref>ContactWebSite</ref>[] urls;
22437     DOMString ringtoneURI;
22438     <ref>ContactGroupId</ref>[] groupIds;
22439   };</webidl>
22440       <descriptive>
22441           <brief>
22442  Provides a dictionary for specifying contact attributes upon contact creation.
22443           </brief>
22444          <description>
22445           <p>
22446 This dictionary is used to input parameters when contacts are created.
22447           </p>
22448          </description>
22449           <version>
22450  1.0
22451           </version>
22452       </descriptive>
22453       <DictionaryMember name="name" id="::Contact::ContactInit::name">
22454         <webidl>    <ref>ContactName</ref> name;</webidl>
22455         <Type name="ContactName"/>
22456       </DictionaryMember>
22457       <DictionaryMember name="addresses" id="::Contact::ContactInit::addresses">
22458         <webidl>    <ref>ContactAddress</ref>[] addresses;</webidl>
22459         <Type type="array">
22460           <Type name="ContactAddress"/>
22461         </Type>
22462       </DictionaryMember>
22463       <DictionaryMember name="photoURI" id="::Contact::ContactInit::photoURI">
22464         <webidl>    DOMString photoURI;</webidl>
22465         <Type type="DOMString"/>
22466       </DictionaryMember>
22467       <DictionaryMember name="phoneNumbers" id="::Contact::ContactInit::phoneNumbers">
22468         <webidl>    <ref>ContactPhoneNumber</ref>[] phoneNumbers;</webidl>
22469         <Type type="array">
22470           <Type name="ContactPhoneNumber"/>
22471         </Type>
22472       </DictionaryMember>
22473       <DictionaryMember name="emails" id="::Contact::ContactInit::emails">
22474         <webidl>    <ref>ContactEmailAddress</ref>[] emails;</webidl>
22475         <Type type="array">
22476           <Type name="ContactEmailAddress"/>
22477         </Type>
22478       </DictionaryMember>
22479       <DictionaryMember name="birthday" id="::Contact::ContactInit::birthday">
22480         <webidl>    Date birthday;</webidl>
22481         <Type type="Date"/>
22482       </DictionaryMember>
22483       <DictionaryMember name="anniversaries" id="::Contact::ContactInit::anniversaries">
22484         <webidl>    <ref>ContactAnniversary</ref>[] anniversaries;</webidl>
22485         <Type type="array">
22486           <Type name="ContactAnniversary"/>
22487         </Type>
22488       </DictionaryMember>
22489       <DictionaryMember name="organizations" id="::Contact::ContactInit::organizations">
22490         <webidl>    <ref>ContactOrganization</ref>[] organizations;</webidl>
22491         <Type type="array">
22492           <Type name="ContactOrganization"/>
22493         </Type>
22494       </DictionaryMember>
22495       <DictionaryMember name="notes" id="::Contact::ContactInit::notes">
22496         <webidl>    DOMString[] notes;</webidl>
22497         <Type type="array">
22498           <Type type="DOMString"/>
22499         </Type>
22500       </DictionaryMember>
22501       <DictionaryMember name="urls" id="::Contact::ContactInit::urls">
22502         <webidl>    <ref>ContactWebSite</ref>[] urls;</webidl>
22503         <Type type="array">
22504           <Type name="ContactWebSite"/>
22505         </Type>
22506       </DictionaryMember>
22507       <DictionaryMember name="ringtoneURI" id="::Contact::ContactInit::ringtoneURI">
22508         <webidl>    DOMString ringtoneURI;</webidl>
22509         <Type type="DOMString"/>
22510       </DictionaryMember>
22511       <DictionaryMember name="groupIds" id="::Contact::ContactInit::groupIds">
22512         <webidl>    <ref>ContactGroupId</ref>[] groupIds;</webidl>
22513         <Type type="array">
22514           <Type name="ContactGroupId"/>
22515         </Type>
22516       </DictionaryMember>
22517     </Dictionary>
22518     <Interface name="Contact" id="::Contact::Contact">
22519       <webidl>  [Constructor(optional <ref>ContactInit</ref>? ContactInitDict),
22520    Constructor(DOMString stringRepresentation)]
22521   interface Contact {
22522     readonly attribute <ref>ContactId</ref>? id;
22523
22524     readonly attribute <ref>PersonId</ref>? personId;
22525
22526     readonly attribute <ref>AddressBookId</ref>? addressBookId;
22527
22528     readonly attribute Date? lastUpdated;
22529
22530     readonly attribute boolean isFavorite;
22531
22532     attribute <ref>ContactName</ref>? name setraises(<ref>WebAPIException</ref>);
22533
22534     attribute <ref>ContactAddress</ref>[] addresses setraises(<ref>WebAPIException</ref>);
22535
22536     attribute DOMString? photoURI setraises(<ref>WebAPIException</ref>);
22537
22538     attribute <ref>ContactPhoneNumber</ref>[] phoneNumbers setraises(<ref>WebAPIException</ref>);
22539
22540     attribute <ref>ContactEmailAddress</ref>[] emails setraises(<ref>WebAPIException</ref>);
22541
22542     attribute Date? birthday setraises(<ref>WebAPIException</ref>);
22543
22544     attribute <ref>ContactAnniversary</ref>[] anniversaries setraises(<ref>WebAPIException</ref>);
22545
22546     attribute <ref>ContactOrganization</ref>[] organizations setraises(<ref>WebAPIException</ref>);
22547
22548     attribute DOMString[] notes setraises(<ref>WebAPIException</ref>);
22549
22550     attribute <ref>ContactWebSite</ref>[] urls setraises(<ref>WebAPIException</ref>);
22551
22552     attribute DOMString? ringtoneURI setraises(<ref>WebAPIException</ref>);
22553
22554     attribute <ref>ContactGroupId</ref>[] groupIds setraises(<ref>WebAPIException</ref>);
22555
22556     DOMString convertToString(optional <ref>ContactTextFormat</ref>? format) raises(<ref>WebAPIException</ref>);
22557
22558     <ref>Contact</ref> clone() raises(<ref>WebAPIException</ref>);
22559   };</webidl>
22560       <descriptive>
22561           <brief>
22562  This interface is used to create a <em>Contact </em>object.
22563           </brief>
22564           <version>
22565  1.0
22566           </version>
22567           <Code>  // Get the default address book
22568   var addressbook = tizen.contact.getDefaultAddressBook();
22569
22570   var contact = null;
22571
22572   try {
22573     contact = new tizen.Contact(
22574                       &quot;BEGIN:VCARD\n&quot;+
22575                       &quot;VERSION:3.0\n&quot;+
22576                       &quot;N:Gump;Forrest\n&quot;+
22577                       &quot;FN:Forrest Gump\n&quot;+
22578                       &quot;ORG:Bubba Gump Shrimp Co.\n&quot;+
22579                       &quot;TITLE:Shrimp Man\n&quot;+
22580                       &quot;TEL;WORK:(111) 555-1212\n&quot;+
22581                       &quot;TEL;HOME:(404) 555-1212\n&quot;+
22582                       &quot;EMAIL;WORK;PREF:forrestgump@example.com\n&quot;+
22583                       &quot;END:VCARD&quot;);
22584   } catch (err) {
22585     console.log( 'The following error occurred while converting: ' +  err.name);
22586   }
22587
22588   try {
22589     if (contact) {
22590       addressbook.add(contact);
22591       console.log('Contact was added with ID ' + contact.id);
22592     }
22593   } catch (err) {
22594     console.log( 'The following error occurred while adding: ' +  err.name);
22595   }
22596  </Code>
22597       </descriptive>
22598       <ExtendedAttributeList>
22599         <ExtendedAttribute name="Constructor">
22600           <webidl>Constructor(optional <ref>ContactInit</ref>? ContactInitDict)</webidl>
22601           <ArgumentList>
22602             <Argument optional="optional" name="ContactInitDict">
22603               <Type name="ContactInit" nullable="nullable"/>
22604             </Argument>
22605           </ArgumentList>
22606         </ExtendedAttribute>
22607         <ExtendedAttribute name="Constructor">
22608           <webidl>   Constructor(DOMString stringRepresentation)</webidl>
22609           <ArgumentList>
22610             <Argument name="stringRepresentation">
22611               <Type type="DOMString"/>
22612             </Argument>
22613           </ArgumentList>
22614         </ExtendedAttribute>
22615       </ExtendedAttributeList>
22616       <Attribute readonly="readonly" name="id" id="::Contact::Contact::id">
22617         <webidl>    readonly attribute <ref>ContactId</ref>? id;</webidl>
22618         <descriptive>
22619             <brief>
22620  An attribute to identify a raw contact.
22621             </brief>
22622            <description>
22623             <p>
22624 By default, this attribute is set to <var>null</var>.
22625             </p>
22626            </description>
22627             <version>
22628  1.0
22629             </version>
22630         </descriptive>
22631         <Type name="ContactId" nullable="nullable"/>
22632       </Attribute>
22633       <Attribute readonly="readonly" name="personId" id="::Contact::Contact::personId">
22634         <webidl>    readonly attribute <ref>PersonId</ref>? personId;</webidl>
22635         <descriptive>
22636             <brief>
22637  The identifier of the person corresponding to the raw contact.
22638             </brief>
22639            <description>
22640             <p>
22641 By default, this attribute is set to <var>null</var>.
22642             </p>
22643            </description>
22644             <version>
22645  2.0
22646             </version>
22647         </descriptive>
22648         <Type name="PersonId" nullable="nullable"/>
22649       </Attribute>
22650       <Attribute readonly="readonly" name="addressBookId" id="::Contact::Contact::addressBookId">
22651         <webidl>    readonly attribute <ref>AddressBookId</ref>? addressBookId;</webidl>
22652         <descriptive>
22653             <brief>
22654  The identifier of the address book that corresponds to the raw contact.
22655 By default, this attribute is set to <var>null</var>.
22656             </brief>
22657             <version>
22658  2.0
22659             </version>
22660         </descriptive>
22661         <Type name="AddressBookId" nullable="nullable"/>
22662       </Attribute>
22663       <Attribute readonly="readonly" name="lastUpdated" id="::Contact::Contact::lastUpdated">
22664         <webidl>    readonly attribute Date? lastUpdated;</webidl>
22665         <descriptive>
22666             <brief>
22667  The timestamp for the last update of a contact.
22668             </brief>
22669            <description>
22670             <p>
22671 Specifies revision information about the contact.
22672             </p>
22673             <p>
22674 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.
22675 For more details, see RFC 2426, Section 3.6.4.
22676             </p>
22677            </description>
22678             <version>
22679  1.0
22680             </version>
22681         </descriptive>
22682         <Type type="Date" nullable="nullable"/>
22683       </Attribute>
22684       <Attribute readonly="readonly" name="isFavorite" id="::Contact::Contact::isFavorite">
22685         <webidl>    readonly attribute boolean isFavorite;</webidl>
22686         <descriptive>
22687             <brief>
22688  An attribute to indicate whether a contact is favorite or not.
22689             </brief>
22690            <description>
22691             <p>
22692 This value is associated with the <em>isFavorite</em> attribute of Person that this contact indicates.
22693             </p>
22694             <p>
22695 By default, this attribute is set to <var>false</var>.
22696             </p>
22697            </description>
22698             <version>
22699  1.0
22700             </version>
22701             <Code>   if (contact.isFavorite) {
22702      // ...
22703    }
22704  </Code>
22705         </descriptive>
22706         <Type type="boolean"/>
22707       </Attribute>
22708       <Attribute name="name" id="::Contact::Contact::name">
22709         <webidl>    attribute <ref>ContactName</ref>? name setraises(<ref>WebAPIException</ref>);</webidl>
22710         <descriptive>
22711             <brief>
22712  An attribute to store the name of a contact.
22713             </brief>
22714             <version>
22715  1.0
22716             </version>
22717         </descriptive>
22718         <Type name="ContactName" nullable="nullable"/>
22719         <SetRaises>
22720           <RaiseException name="WebAPIException"/>
22721         </SetRaises>
22722       </Attribute>
22723       <Attribute name="addresses" id="::Contact::Contact::addresses">
22724         <webidl>    attribute <ref>ContactAddress</ref>[] addresses setraises(<ref>WebAPIException</ref>);</webidl>
22725         <descriptive>
22726             <brief>
22727  The contact addresses.
22728             </brief>
22729            <description>
22730             <p>
22731 By default, this attribute is set to an empty array.
22732             </p>
22733            </description>
22734             <version>
22735  1.0
22736             </version>
22737             <Code> var contactInit = {};
22738  var contactAddr = new tizen.ContactAddres({streetAddress:'Gran Via, 32',
22739                                             postalCode:'50013',
22740                                                   city:'Zaragoza',
22741                                                   country:'ES'});
22742  contactInit.addresses = [contactAddr];
22743  </Code>
22744         </descriptive>
22745         <Type type="array">
22746           <Type name="ContactAddress"/>
22747         </Type>
22748         <SetRaises>
22749           <RaiseException name="WebAPIException"/>
22750         </SetRaises>
22751       </Attribute>
22752       <Attribute name="photoURI" id="::Contact::Contact::photoURI">
22753         <webidl>    attribute DOMString? photoURI setraises(<ref>WebAPIException</ref>);</webidl>
22754         <descriptive>
22755             <brief>
22756  The URI to the picture of the contact.
22757             </brief>
22758            <description>
22759             <p>
22760 This attribute is used to store a URI that points to an image that can represent the
22761 contact object. This attribute only contains a local file URI.
22762 See RFC 2426, Section 3.1.4.
22763             </p>
22764             <p>
22765 By default, this attribute is set to <var>null</var>.
22766             </p>
22767            </description>
22768             <version>
22769  1.0
22770             </version>
22771             <Code>  var contactInit = {};
22772   contactInit.photoURI = 'file:///opt/media/Downloads/mypicture.jpg';
22773  </Code>
22774         </descriptive>
22775         <Type type="DOMString" nullable="nullable"/>
22776         <SetRaises>
22777           <RaiseException name="WebAPIException"/>
22778         </SetRaises>
22779       </Attribute>
22780       <Attribute name="phoneNumbers" id="::Contact::Contact::phoneNumbers">
22781         <webidl>    attribute <ref>ContactPhoneNumber</ref>[] phoneNumbers setraises(<ref>WebAPIException</ref>);</webidl>
22782         <descriptive>
22783             <brief>
22784  The telephone numbers of the contact.
22785             </brief>
22786            <description>
22787             <p>
22788 By default, this attribute is set to empty array.
22789             </p>
22790            </description>
22791             <version>
22792  1.0
22793             </version>
22794             <Code>   var contactInit = {};
22795    var phoneNumber = new tizen.ContactPhoneNumber('123456789');
22796    contactInit.phoneNumbers = [phoneNumber];
22797  </Code>
22798         </descriptive>
22799         <Type type="array">
22800           <Type name="ContactPhoneNumber"/>
22801         </Type>
22802         <SetRaises>
22803           <RaiseException name="WebAPIException"/>
22804         </SetRaises>
22805       </Attribute>
22806       <Attribute name="emails" id="::Contact::Contact::emails">
22807         <webidl>    attribute <ref>ContactEmailAddress</ref>[] emails setraises(<ref>WebAPIException</ref>);</webidl>
22808         <descriptive>
22809             <brief>
22810  The email addresses of the contact.
22811             </brief>
22812            <description>
22813             <p>
22814 By default, this attribute is set to empty array.
22815             </p>
22816            </description>
22817             <version>
22818  1.0
22819             </version>
22820             <Code>   var contactInit = {};
22821    var email = new tizen.ContactEmailAddress('deedee@ramones.com');
22822    contactInit.emails = [email];
22823  </Code>
22824         </descriptive>
22825         <Type type="array">
22826           <Type name="ContactEmailAddress"/>
22827         </Type>
22828         <SetRaises>
22829           <RaiseException name="WebAPIException"/>
22830         </SetRaises>
22831       </Attribute>
22832       <Attribute name="birthday" id="::Contact::Contact::birthday">
22833         <webidl>    attribute Date? birthday setraises(<ref>WebAPIException</ref>);</webidl>
22834         <descriptive>
22835             <brief>
22836  The birthday of the contact.
22837             </brief>
22838            <description>
22839             <p>
22840 Defines specify the birthday of the contact (see RFC 2426 -
22841 Section 3.1.5).
22842             </p>
22843             <p>
22844 By default, this attribute is set to <var>null</var>.
22845             </p>
22846            </description>
22847             <version>
22848  1.0
22849             </version>
22850             <Code>   var contactInit = {};
22851    contactInit.birthday = new Date(1996, 4, 15);
22852  </Code>
22853         </descriptive>
22854         <Type type="Date" nullable="nullable"/>
22855         <SetRaises>
22856           <RaiseException name="WebAPIException"/>
22857         </SetRaises>
22858       </Attribute>
22859       <Attribute name="anniversaries" id="::Contact::Contact::anniversaries">
22860         <webidl>    attribute <ref>ContactAnniversary</ref>[] anniversaries setraises(<ref>WebAPIException</ref>);</webidl>
22861         <descriptive>
22862             <brief>
22863  The list of anniversaries for the contact.
22864             </brief>
22865            <description>
22866             <p>
22867 Defines specify arbitrary anniversaries for the contact (in addition to the birthday).
22868             </p>
22869             <p>
22870 By default, this attribute is set to empty array.
22871             </p>
22872            </description>
22873             <version>
22874  1.0
22875             </version>
22876             <Code>   var contactInit = {};
22877    var marriage_anniv = new tizen.ContactAnniversary(new Date(1976, 11, 2), 'Marriage');
22878    contactInit.anniversaries = [marriage_anniv];
22879  </Code>
22880         </descriptive>
22881         <Type type="array">
22882           <Type name="ContactAnniversary"/>
22883         </Type>
22884         <SetRaises>
22885           <RaiseException name="WebAPIException"/>
22886         </SetRaises>
22887       </Attribute>
22888       <Attribute name="organizations" id="::Contact::Contact::organizations">
22889         <webidl>    attribute <ref>ContactOrganization</ref>[] organizations setraises(<ref>WebAPIException</ref>);</webidl>
22890         <descriptive>
22891             <brief>
22892  The organizations the contact belongs to.
22893             </brief>
22894            <description>
22895             <p>
22896 Contains information related to the contact's company or organization.
22897             </p>
22898             <p>
22899 For more details, see RFC 2426, Section 3.5.
22900             </p>
22901            </description>
22902             <version>
22903  1.0
22904             </version>
22905         </descriptive>
22906         <Type type="array">
22907           <Type name="ContactOrganization"/>
22908         </Type>
22909         <SetRaises>
22910           <RaiseException name="WebAPIException"/>
22911         </SetRaises>
22912       </Attribute>
22913       <Attribute name="notes" id="::Contact::Contact::notes">
22914         <webidl>    attribute DOMString[] notes setraises(<ref>WebAPIException</ref>);</webidl>
22915         <descriptive>
22916             <brief>
22917  The notes associated to the contact.
22918             </brief>
22919            <description>
22920             <p>
22921 To specify supplemental information or a comment related to the contact.
22922             </p>
22923             <p>
22924 For more details, see RFC 2426, Section 3.6.2.
22925             </p>
22926            </description>
22927             <version>
22928  2.0
22929             </version>
22930         </descriptive>
22931         <Type type="array">
22932           <Type type="DOMString"/>
22933         </Type>
22934         <SetRaises>
22935           <RaiseException name="WebAPIException"/>
22936         </SetRaises>
22937       </Attribute>
22938       <Attribute name="urls" id="::Contact::Contact::urls">
22939         <webidl>    attribute <ref>ContactWebSite</ref>[] urls setraises(<ref>WebAPIException</ref>);</webidl>
22940         <descriptive>
22941             <brief>
22942  The URLs associated to the contact.
22943             </brief>
22944            <description>
22945             <p>
22946 By default, this attribute is initialized to an empty array.
22947             </p>
22948             <p>
22949 In case multiple URLs are available, the first one is the default one.
22950 For more details, see RFC 2426, Section 3.6.8.
22951             </p>
22952            </description>
22953             <version>
22954  1.0
22955             </version>
22956         </descriptive>
22957         <Type type="array">
22958           <Type name="ContactWebSite"/>
22959         </Type>
22960         <SetRaises>
22961           <RaiseException name="WebAPIException"/>
22962         </SetRaises>
22963       </Attribute>
22964       <Attribute name="ringtoneURI" id="::Contact::Contact::ringtoneURI">
22965         <webidl>    attribute DOMString? ringtoneURI setraises(<ref>WebAPIException</ref>);</webidl>
22966         <descriptive>
22967             <brief>
22968  The URI to the custom ringtone for the contact.
22969             </brief>
22970            <description>
22971             <p>
22972 To specify a custom ringtone for the contact.
22973             </p>
22974             <p>
22975 By default, this attribute is initialized to <var>null</var>.
22976 This attribute only contains a local file URI scheme;
22977 For more details, see RFC 2426, Section 3.6.6.
22978             </p>
22979            </description>
22980             <version>
22981  1.0
22982             </version>
22983         </descriptive>
22984         <Type type="DOMString" nullable="nullable"/>
22985         <SetRaises>
22986           <RaiseException name="WebAPIException"/>
22987         </SetRaises>
22988       </Attribute>
22989       <Attribute name="groupIds" id="::Contact::Contact::groupIds">
22990         <webidl>    attribute <ref>ContactGroupId</ref>[] groupIds setraises(<ref>WebAPIException</ref>);</webidl>
22991         <descriptive>
22992             <brief>
22993  The groups the contact belongs to.
22994             </brief>
22995            <description>
22996             <p>
22997 To associate groups to the contact.
22998             </p>
22999             <p>
23000 By default, this attribute is initialized to an empty array.
23001             </p>
23002             <p>
23003 In a case where multiple categories are available, the first one is the default one.
23004 See RFC 2426, Section 3.6.1.
23005             </p>
23006            </description>
23007             <version>
23008  2.0
23009             </version>
23010         </descriptive>
23011         <Type type="array">
23012           <Type name="ContactGroupId"/>
23013         </Type>
23014         <SetRaises>
23015           <RaiseException name="WebAPIException"/>
23016         </SetRaises>
23017       </Attribute>
23018       <Operation name="convertToString" id="::Contact::Contact::convertToString">
23019         <webidl>    DOMString convertToString(optional <ref>ContactTextFormat</ref>? format) raises(<ref>WebAPIException</ref>);</webidl>
23020         <descriptive>
23021             <brief>
23022  Converts the Contact item to a string format.
23023             </brief>
23024            <description>
23025             <p>
23026 A textual representation for the contact will be generated and returned synchronously.
23027 The export format is set via the format parameter.
23028             </p>
23029            </description>
23030             <version>
23031  1.0
23032             </version>
23033             <Code>  var addressbook;
23034
23035   // Define the error callback.
23036   function errorCB(err) {
23037     console.log( 'The following error occurred: ' +  err.name);
23038   }
23039
23040   // Define the contact find success callback.
23041   function contactsFoundCB(contacts) {
23042     try {
23043       // Convert the first contact to vCard 3.0 format
23044       var vcard = contacts[0].convertToString(&quot;VCARD_30&quot;);
23045       console.log('textual representation of the contact is: ' + vcard);
23046     } catch (err) {
23047       console.log( 'The following error occurred while converting: ' +  err.name);
23048     }
23049   }
23050
23051   // Get the default address book
23052   addressbook = tizen.contact.getDefaultAddressBook();
23053
23054   // Find all contact in the address book whose first name contains the string 'Chris'.
23055   var filter = new tizen.AttributeFilter('firstName', 'CONTAINS', 'Chris');
23056   try {
23057     addressbook.find(contactsFoundCB, errorCB, filter);
23058   } catch (err) {
23059     console.log( 'The following error occurred while finding: ' +  err.name);
23060   }
23061  </Code>
23062         </descriptive>
23063         <Type type="DOMString">
23064           <descriptive>
23065               <description><p>
23066  DOMString The string representation of the Contact item.
23067               </p></description>
23068           </descriptive>
23069         </Type>
23070         <ArgumentList>
23071           <Argument optional="optional" name="format">
23072             <descriptive>
23073                 <description><p>
23074  Format to use for export. If this value is <var>null</var> or empty, it converts to platform default format.
23075                 </p></description>
23076             </descriptive>
23077             <Type name="ContactTextFormat" nullable="nullable"/>
23078           </Argument>
23079         </ArgumentList>
23080         <Raises>
23081           <RaiseException name="WebAPIException">
23082             <descriptive>
23083                 <description><p>
23084  with error type TypeMismatchError, if any input parameter
23085 is not compatible with the expected type for that parameter.
23086                 </p></description>
23087                 <description><p>
23088  with error type SecurityError, if the functionality
23089 is not allowed.
23090                 </p></description>
23091                 <description><p>
23092  with error type NotSupportedError, if the feature
23093 is not supported.
23094                 </p></description>
23095                 <description><p>
23096  with error type UnknownError in any other error case.
23097                 </p></description>
23098             </descriptive>
23099           </RaiseException>
23100         </Raises>
23101       </Operation>
23102       <Operation name="clone" id="::Contact::Contact::clone">
23103         <webidl>    <ref>Contact</ref> clone() raises(<ref>WebAPIException</ref>);</webidl>
23104         <descriptive>
23105            <description>
23106             <p>
23107 Creates a clone of the Contact object, detached from any address book.
23108             </p>
23109             <p>
23110 The Contact object returned by the <var>clone()</var> method will have its identifier
23111 set to <var>null</var> and will be detached from any address book.
23112             </p>
23113            </description>
23114             <version>
23115  1.0
23116             </version>
23117             <Code>  // Get default address book.
23118   var addressbook = tizen.contact.getDefaultAddressBook();
23119
23120   var bob = new tizen.Contact();
23121   bob.name = new tizen.ContactName({firstName:'Bob',
23122                                     lastName:'Smith'});
23123   addressbook.add(bob);
23124   var alice = bob.clone();
23125   contact.name.firstName = &quot;Alice&quot;; // Bob's wife
23126   addressbook.add(alice);
23127  </Code>
23128         </descriptive>
23129         <Type name="Contact">
23130           <descriptive>
23131               <description><p>
23132  Contact A new clone of the Contact object.
23133               </p></description>
23134           </descriptive>
23135         </Type>
23136         <ArgumentList/>
23137         <Raises>
23138           <RaiseException name="WebAPIException">
23139             <descriptive>
23140                 <description><p>
23141  with error type SecurityError, if the functionality
23142 is not allowed.
23143                 </p></description>
23144                 <description><p>
23145  with error type NotSupportedError, if the feature
23146 is not supported.
23147                 </p></description>
23148                 <description><p>
23149  with error type UnknownError in any other error case.
23150                 </p></description>
23151             </descriptive>
23152           </RaiseException>
23153         </Raises>
23154       </Operation>
23155     </Interface>
23156     <Interface name="ContactRef" id="::Contact::ContactRef">
23157       <webidl>  [Constructor(<ref>AddressBookId</ref> addressBookId, <ref>ContactId</ref> contactId)]
23158   interface ContactRef {
23159     attribute <ref>AddressBookId</ref> addressBookId;
23160
23161     attribute <ref>ContactId</ref> contactId;
23162   };</webidl>
23163       <descriptive>
23164           <brief>
23165  The fully-defined contact reference.
23166           </brief>
23167          <description>
23168           <p>
23169 It contains both the identifier of the address book which the contact is in, and
23170 the contact identifier within this address book.
23171           </p>
23172           <p>
23173 This interface is used by other APIs to uniquely and globally identify contacts.
23174           </p>
23175          </description>
23176           <version>
23177  1.0
23178           </version>
23179       </descriptive>
23180       <ExtendedAttributeList>
23181         <ExtendedAttribute name="Constructor">
23182           <webidl>Constructor(<ref>AddressBookId</ref> addressBookId, <ref>ContactId</ref> contactId)</webidl>
23183           <ArgumentList>
23184             <Argument name="addressBookId">
23185               <Type name="AddressBookId"/>
23186             </Argument>
23187             <Argument name="contactId">
23188               <Type name="ContactId"/>
23189             </Argument>
23190           </ArgumentList>
23191         </ExtendedAttribute>
23192       </ExtendedAttributeList>
23193       <Attribute name="addressBookId" id="::Contact::ContactRef::addressBookId">
23194         <webidl>    attribute <ref>AddressBookId</ref> addressBookId;</webidl>
23195         <descriptive>
23196             <brief>
23197  The address book identifier.
23198             </brief>
23199             <version>
23200  1.0
23201             </version>
23202         </descriptive>
23203         <Type name="AddressBookId"/>
23204       </Attribute>
23205       <Attribute name="contactId" id="::Contact::ContactRef::contactId">
23206         <webidl>    attribute <ref>ContactId</ref> contactId;</webidl>
23207         <descriptive>
23208             <brief>
23209  The contact identifier inside the address book.
23210             </brief>
23211             <version>
23212  1.0
23213             </version>
23214         </descriptive>
23215         <Type name="ContactId"/>
23216       </Attribute>
23217     </Interface>
23218     <Dictionary name="ContactNameInit" id="::Contact::ContactNameInit">
23219       <webidl>  dictionary ContactNameInit {
23220     DOMString prefix;
23221     DOMString suffix;
23222     DOMString firstName;
23223     DOMString middleName;
23224     DOMString lastName;
23225     DOMString[] nicknames;
23226     DOMString phoneticFirstName;
23227     DOMString phoneticLastName;
23228   };</webidl>
23229       <descriptive>
23230           <brief>
23231  The properties of a ContactName, to pass to the ContactName constructor.
23232           </brief>
23233          <description>
23234           <p>
23235 See ContactName interface for more information about the members.
23236           </p>
23237          </description>
23238           <version>
23239  1.0
23240           </version>
23241       </descriptive>
23242       <DictionaryMember name="prefix" id="::Contact::ContactNameInit::prefix">
23243         <webidl>    DOMString prefix;</webidl>
23244         <Type type="DOMString"/>
23245       </DictionaryMember>
23246       <DictionaryMember name="suffix" id="::Contact::ContactNameInit::suffix">
23247         <webidl>    DOMString suffix;</webidl>
23248         <Type type="DOMString"/>
23249       </DictionaryMember>
23250       <DictionaryMember name="firstName" id="::Contact::ContactNameInit::firstName">
23251         <webidl>    DOMString firstName;</webidl>
23252         <Type type="DOMString"/>
23253       </DictionaryMember>
23254       <DictionaryMember name="middleName" id="::Contact::ContactNameInit::middleName">
23255         <webidl>    DOMString middleName;</webidl>
23256         <Type type="DOMString"/>
23257       </DictionaryMember>
23258       <DictionaryMember name="lastName" id="::Contact::ContactNameInit::lastName">
23259         <webidl>    DOMString lastName;</webidl>
23260         <Type type="DOMString"/>
23261       </DictionaryMember>
23262       <DictionaryMember name="nicknames" id="::Contact::ContactNameInit::nicknames">
23263         <webidl>    DOMString[] nicknames;</webidl>
23264         <Type type="array">
23265           <Type type="DOMString"/>
23266         </Type>
23267       </DictionaryMember>
23268       <DictionaryMember name="phoneticFirstName" id="::Contact::ContactNameInit::phoneticFirstName">
23269         <webidl>    DOMString phoneticFirstName;</webidl>
23270         <Type type="DOMString"/>
23271       </DictionaryMember>
23272       <DictionaryMember name="phoneticLastName" id="::Contact::ContactNameInit::phoneticLastName">
23273         <webidl>    DOMString phoneticLastName;</webidl>
23274         <Type type="DOMString"/>
23275       </DictionaryMember>
23276     </Dictionary>
23277     <Interface name="ContactName" id="::Contact::ContactName">
23278       <webidl>  [Constructor(optional <ref>ContactNameInit</ref>? nameInitDict)]
23279   interface ContactName {
23280     attribute DOMString? prefix;
23281
23282     attribute DOMString? suffix;
23283
23284     attribute DOMString? firstName;
23285
23286     attribute DOMString? middleName;
23287
23288     attribute DOMString? lastName;
23289
23290     attribute DOMString[] nicknames;
23291
23292     attribute DOMString? phoneticFirstName;
23293
23294     attribute DOMString? phoneticLastName;
23295
23296     readonly attribute DOMString? displayName;
23297   };</webidl>
23298       <descriptive>
23299           <brief>
23300  This interface contains all information related to a contact name.
23301           </brief>
23302           <version>
23303  1.0
23304           </version>
23305       </descriptive>
23306       <ExtendedAttributeList>
23307         <ExtendedAttribute name="Constructor">
23308           <webidl>Constructor(optional <ref>ContactNameInit</ref>? nameInitDict)</webidl>
23309           <ArgumentList>
23310             <Argument optional="optional" name="nameInitDict">
23311               <Type name="ContactNameInit" nullable="nullable"/>
23312             </Argument>
23313           </ArgumentList>
23314         </ExtendedAttribute>
23315       </ExtendedAttributeList>
23316       <Attribute name="prefix" id="::Contact::ContactName::prefix">
23317         <webidl>    attribute DOMString? prefix;</webidl>
23318         <descriptive>
23319             <brief>
23320  The name prefix of a contact.
23321             </brief>
23322            <description>
23323             <p>
23324 By default, this attribute is initialized to
23325 <var>null</var>. See also RFC 2426, Section 3.1.1.
23326             </p>
23327            </description>
23328             <version>
23329  1.0
23330             </version>
23331             <Code>   contact.name.prefix = &quot;Dr.&quot;;
23332  </Code>
23333         </descriptive>
23334         <Type type="DOMString" nullable="nullable"/>
23335       </Attribute>
23336       <Attribute name="suffix" id="::Contact::ContactName::suffix">
23337         <webidl>    attribute DOMString? suffix;</webidl>
23338         <descriptive>
23339             <brief>
23340  The name suffix of a contact.
23341             </brief>
23342            <description>
23343             <p>
23344 By default, this attribute is initialized to
23345 <var>null</var>. See also RFC 2426, Section 3.1.1.
23346             </p>
23347            </description>
23348             <version>
23349  2.0
23350             </version>
23351             <Code>   contact.name.suffix = &quot;Jr.&quot;;
23352  </Code>
23353         </descriptive>
23354         <Type type="DOMString" nullable="nullable"/>
23355       </Attribute>
23356       <Attribute name="firstName" id="::Contact::ContactName::firstName">
23357         <webidl>    attribute DOMString? firstName;</webidl>
23358         <descriptive>
23359             <brief>
23360  The first (given) name of a contact.
23361             </brief>
23362            <description>
23363             <p>
23364 By default, this attribute is initialized to
23365 <var>null</var>. See also RFC 2426, Section 3.1.1.
23366             </p>
23367            </description>
23368             <version>
23369  1.0
23370             </version>
23371             <Code>   contact.name.firstName = 'Douglas';
23372  </Code>
23373         </descriptive>
23374         <Type type="DOMString" nullable="nullable"/>
23375       </Attribute>
23376       <Attribute name="middleName" id="::Contact::ContactName::middleName">
23377         <webidl>    attribute DOMString? middleName;</webidl>
23378         <descriptive>
23379             <brief>
23380  The middle name of a contact.
23381             </brief>
23382            <description>
23383             <p>
23384 By default, this attribute is initialized to
23385 <var>null</var>. See also RFC 2426, Section 3.1.1.
23386             </p>
23387            </description>
23388             <version>
23389  1.0
23390             </version>
23391             <Code>   contact.name.middleName = 'Glenn';
23392  </Code>
23393         </descriptive>
23394         <Type type="DOMString" nullable="nullable"/>
23395       </Attribute>
23396       <Attribute name="lastName" id="::Contact::ContactName::lastName">
23397         <webidl>    attribute DOMString? lastName;</webidl>
23398         <descriptive>
23399             <brief>
23400  The last (family) name of a contact.
23401             </brief>
23402            <description>
23403             <p>
23404 By default, this attribute is initialized to
23405 <var>null</var>. See also RFC 2426, Section 3.1.1.
23406             </p>
23407            </description>
23408             <version>
23409  1.0
23410             </version>
23411             <Code>   contact.name.lastName = 'Colvin';
23412  </Code>
23413         </descriptive>
23414         <Type type="DOMString" nullable="nullable"/>
23415       </Attribute>
23416       <Attribute name="nicknames" id="::Contact::ContactName::nicknames">
23417         <webidl>    attribute DOMString[] nicknames;</webidl>
23418         <descriptive>
23419             <brief>
23420  The nicknames of a contact.
23421             </brief>
23422            <description>
23423             <p>
23424 The nickname is a name used instead of, or in addition to, the given name of a contact,
23425 place, or thing. It can also be used to specify a familiar form of a proper name.
23426             </p>
23427             <p>
23428 By default, this attribute is initialized to an empty array.
23429             </p>
23430             <p>
23431 In case multiple nicknames are available the first one is the default.
23432 See RFC 2426, Section 3.1.3.
23433             </p>
23434            </description>
23435             <version>
23436  1.0
23437             </version>
23438             <Code>   contact.name.nickNames = ['Dee Dee'];
23439  </Code>
23440         </descriptive>
23441         <Type type="array">
23442           <Type type="DOMString"/>
23443         </Type>
23444       </Attribute>
23445       <Attribute name="phoneticFirstName" id="::Contact::ContactName::phoneticFirstName">
23446         <webidl>    attribute DOMString? phoneticFirstName;</webidl>
23447         <descriptive>
23448             <brief>
23449  The phonetic first name of a contact.
23450             </brief>
23451            <description>
23452             <p>
23453 Describes how the first name should be
23454 pronounced. This is very important in
23455 some languages, such as Japanese, because the
23456 same 'Kanji' may have several pronunciations.
23457             </p>
23458             <p>
23459 By default, this attribute is set to <var>null</var>.
23460             </p>
23461            </description>
23462             <version>
23463  2.0
23464             </version>
23465         </descriptive>
23466         <Type type="DOMString" nullable="nullable"/>
23467       </Attribute>
23468       <Attribute name="phoneticLastName" id="::Contact::ContactName::phoneticLastName">
23469         <webidl>    attribute DOMString? phoneticLastName;</webidl>
23470         <descriptive>
23471             <brief>
23472  The phonetic last name of a contact.
23473             </brief>
23474            <description>
23475             <p>
23476 Describes how the last name should be
23477 pronounced. This is very important in
23478 some languages, such as Japanese, because the
23479 same 'Kanji' may have several pronunciations.
23480             </p>
23481             <p>
23482 By default, this attribute is set to <var>null</var>.
23483             </p>
23484            </description>
23485             <version>
23486  2.0
23487             </version>
23488         </descriptive>
23489         <Type type="DOMString" nullable="nullable"/>
23490       </Attribute>
23491       <Attribute readonly="readonly" name="displayName" id="::Contact::ContactName::displayName">
23492         <webidl>    readonly attribute DOMString? displayName;</webidl>
23493         <descriptive>
23494             <brief>
23495  The display name of a contact.
23496             </brief>
23497            <description>
23498             <p>
23499 The string which can be displayed to identify the contact. It is composed of the first
23500 and last names if available, otherwise, it will fall back to the most adequate
23501 field available to identify the contact (such as nickname).
23502             </p>
23503             <p>
23504 By default, this attribute is set to <var>null</var>. Initially, once a contact is added to an address book, this value is composed.
23505             </p>
23506            </description>
23507             <version>
23508  1.0
23509             </version>
23510         </descriptive>
23511         <Type type="DOMString" nullable="nullable"/>
23512       </Attribute>
23513     </Interface>
23514     <Dictionary name="ContactOrganizationInit" id="::Contact::ContactOrganizationInit">
23515       <webidl>  dictionary ContactOrganizationInit {
23516     DOMString name;
23517     DOMString department;
23518     DOMString title;
23519     DOMString role;
23520     DOMString logoURI;
23521   };</webidl>
23522       <descriptive>
23523           <brief>
23524  The properties of a ContactOrganization, to pass to the ContactOrganization constructor.
23525           </brief>
23526          <description>
23527           <p>
23528 See ContactOrganization interface for information about members.
23529           </p>
23530          </description>
23531           <version>
23532  1.0
23533           </version>
23534       </descriptive>
23535       <DictionaryMember name="name" id="::Contact::ContactOrganizationInit::name">
23536         <webidl>    DOMString name;</webidl>
23537         <Type type="DOMString"/>
23538       </DictionaryMember>
23539       <DictionaryMember name="department" id="::Contact::ContactOrganizationInit::department">
23540         <webidl>    DOMString department;</webidl>
23541         <Type type="DOMString"/>
23542       </DictionaryMember>
23543       <DictionaryMember name="title" id="::Contact::ContactOrganizationInit::title">
23544         <webidl>    DOMString title;</webidl>
23545         <Type type="DOMString"/>
23546       </DictionaryMember>
23547       <DictionaryMember name="role" id="::Contact::ContactOrganizationInit::role">
23548         <webidl>    DOMString role;</webidl>
23549         <Type type="DOMString"/>
23550       </DictionaryMember>
23551       <DictionaryMember name="logoURI" id="::Contact::ContactOrganizationInit::logoURI">
23552         <webidl>    DOMString logoURI;</webidl>
23553         <Type type="DOMString"/>
23554       </DictionaryMember>
23555     </Dictionary>
23556     <Interface name="ContactOrganization" id="::Contact::ContactOrganization">
23557       <webidl>  [Constructor(optional <ref>ContactOrganizationInit</ref>? orgInitDict)]
23558   interface ContactOrganization {
23559     attribute DOMString? name;
23560
23561     attribute DOMString? department;
23562
23563     attribute DOMString? title;
23564
23565     attribute DOMString? role;
23566
23567     attribute DOMString? logoURI;
23568   };</webidl>
23569       <descriptive>
23570           <brief>
23571  This interface contains the information about the organization or
23572 company that a contact belongs to.
23573           </brief>
23574          <description>
23575           <p>
23576 By default, each of the attributes of this interface are <var>null</var>.
23577           </p>
23578           <p>
23579 For more details, see RFC 2426, Section 3.5.
23580           </p>
23581          </description>
23582           <version>
23583  1.0
23584           </version>
23585           <Code> var organization = new tizen.ContactOrganization({name: &quot;Intel&quot;, role: &quot;SW Engineer&quot;});
23586  </Code>
23587       </descriptive>
23588       <ExtendedAttributeList>
23589         <ExtendedAttribute name="Constructor">
23590           <webidl>Constructor(optional <ref>ContactOrganizationInit</ref>? orgInitDict)</webidl>
23591           <ArgumentList>
23592             <Argument optional="optional" name="orgInitDict">
23593               <Type name="ContactOrganizationInit" nullable="nullable"/>
23594             </Argument>
23595           </ArgumentList>
23596         </ExtendedAttribute>
23597       </ExtendedAttributeList>
23598       <Attribute name="name" id="::Contact::ContactOrganization::name">
23599         <webidl>    attribute DOMString? name;</webidl>
23600         <descriptive>
23601             <brief>
23602  The name of an organization.
23603             </brief>
23604            <description>
23605             <p>
23606 For more details, see RFC 2426, Section 3.5.5.
23607             </p>
23608            </description>
23609             <version>
23610  1.0
23611             </version>
23612         </descriptive>
23613         <Type type="DOMString" nullable="nullable"/>
23614       </Attribute>
23615       <Attribute name="department" id="::Contact::ContactOrganization::department">
23616         <webidl>    attribute DOMString? department;</webidl>
23617         <descriptive>
23618             <brief>
23619  The organizational unit name.
23620             </brief>
23621            <description>
23622             <p>
23623 For more details, see RFC 2426, Section 3.5.5.
23624             </p>
23625            </description>
23626             <version>
23627  1.0
23628             </version>
23629         </descriptive>
23630         <Type type="DOMString" nullable="nullable"/>
23631       </Attribute>
23632       <Attribute name="title" id="::Contact::ContactOrganization::title">
23633         <webidl>    attribute DOMString? title;</webidl>
23634         <descriptive>
23635             <brief>
23636  The job title.
23637             </brief>
23638            <description>
23639             <p>
23640 To specify the job title, functional position or function (such as 'Director,
23641 Research and Development').
23642             </p>
23643             <p>
23644 For more details, see RFC 2426, Section 3.5.1.
23645             </p>
23646            </description>
23647             <version>
23648  1.0
23649             </version>
23650         </descriptive>
23651         <Type type="DOMString" nullable="nullable"/>
23652       </Attribute>
23653       <Attribute name="role" id="::Contact::ContactOrganization::role">
23654         <webidl>    attribute DOMString? role;</webidl>
23655         <descriptive>
23656             <brief>
23657  An attribute to store the role, occupation, or business category
23658 (such as 'Programmer').
23659             </brief>
23660            <description>
23661             <p>
23662 For more details, see RFC 2426, Section 3.5.2.
23663             </p>
23664            </description>
23665             <version>
23666  1.0
23667             </version>
23668         </descriptive>
23669         <Type type="DOMString" nullable="nullable"/>
23670       </Attribute>
23671       <Attribute name="logoURI" id="::Contact::ContactOrganization::logoURI">
23672         <webidl>    attribute DOMString? logoURI;</webidl>
23673         <descriptive>
23674             <brief>
23675  The URI to the logo of a company.
23676             </brief>
23677            <description>
23678             <p>
23679 To specify a graphic image of a logo associated with an organization.
23680 This attribute only contains file URI Scheme;
23681 remote pictures could be loaded to local with Download API.
23682 For more details, see RFC 2426, Section 3.5.3.
23683             </p>
23684            </description>
23685             <version>
23686  1.0
23687             </version>
23688         </descriptive>
23689         <Type type="DOMString" nullable="nullable"/>
23690       </Attribute>
23691     </Interface>
23692     <Interface name="ContactWebSite" id="::Contact::ContactWebSite">
23693       <webidl>  [Constructor(DOMString url, optional DOMString type)]
23694   interface ContactWebSite
23695   {
23696     attribute DOMString url;
23697
23698     attribute DOMString type;
23699   };</webidl>
23700       <descriptive>
23701           <brief>
23702  The ContactWebSite object that contains the URL and the type of web site.
23703           </brief>
23704          <description>
23705           <p>
23706 For more details, see RFC 2426, Section 3.6.8.
23707           </p>
23708          </description>
23709           <version>
23710  1.0
23711           </version>
23712           <Code>  var contactInit = {}
23713   var blog = new tizen.ContactWebSite('http://www.domain.com', 'BLOG');
23714   contactInit.urls = [blog];
23715  </Code>
23716       </descriptive>
23717       <ExtendedAttributeList>
23718         <ExtendedAttribute name="Constructor">
23719           <webidl>Constructor(DOMString url, optional DOMString type)</webidl>
23720           <ArgumentList>
23721             <Argument name="url">
23722               <Type type="DOMString"/>
23723             </Argument>
23724             <Argument optional="optional" name="type">
23725               <Type type="DOMString"/>
23726             </Argument>
23727           </ArgumentList>
23728         </ExtendedAttribute>
23729       </ExtendedAttributeList>
23730       <Attribute name="url" id="::Contact::ContactWebSite::url">
23731         <webidl>    attribute DOMString url;</webidl>
23732         <descriptive>
23733             <brief>
23734  The URL for the contact's web site.
23735             </brief>
23736             <version>
23737  1.0
23738             </version>
23739         </descriptive>
23740         <Type type="DOMString"/>
23741       </Attribute>
23742       <Attribute name="type" id="::Contact::ContactWebSite::type">
23743         <webidl>    attribute DOMString type;</webidl>
23744         <descriptive>
23745             <brief>
23746  The type of web site.
23747             </brief>
23748            <description>
23749             <p>
23750 At least the following values must be supported:
23751             </p>
23752             <ul>
23753               <li>
23754 HOMEPAGE - Indicates a home page.              </li>
23755               <li>
23756 BLOG - Indicates a blog.              </li>
23757             </ul>
23758             <p>
23759 By default, this attribute is set to HOMEPAGE.
23760             </p>
23761            </description>
23762             <version>
23763  1.0
23764             </version>
23765         </descriptive>
23766         <Type type="DOMString"/>
23767       </Attribute>
23768     </Interface>
23769     <Interface name="ContactAnniversary" id="::Contact::ContactAnniversary">
23770       <webidl>  [Constructor(Date date, optional DOMString? label)]
23771   interface ContactAnniversary
23772   {
23773     attribute Date date;
23774
23775     attribute DOMString? label;
23776   };</webidl>
23777       <descriptive>
23778           <brief>
23779  This interface implements the <em>ContactAnniversary </em>object that contains the date and description of an anniversary.
23780           </brief>
23781           <version>
23782  1.0
23783           </version>
23784           <Code>  var contactInit = {}
23785   var marriage_anniv = new tizen.ContactAnniversary(new Date(1976, 11, 2), 'Marriage');
23786   contactInit.anniversaries = [marriage_anniv];
23787  </Code>
23788       </descriptive>
23789       <ExtendedAttributeList>
23790         <ExtendedAttribute name="Constructor">
23791           <webidl>Constructor(Date date, optional DOMString? label)</webidl>
23792           <ArgumentList>
23793             <Argument name="date">
23794               <Type type="Date"/>
23795             </Argument>
23796             <Argument optional="optional" name="label">
23797               <Type type="DOMString" nullable="nullable"/>
23798             </Argument>
23799           </ArgumentList>
23800         </ExtendedAttribute>
23801       </ExtendedAttributeList>
23802       <Attribute name="date" id="::Contact::ContactAnniversary::date">
23803         <webidl>    attribute Date date;</webidl>
23804         <descriptive>
23805             <brief>
23806  The date of an anniversary.
23807             </brief>
23808             <version>
23809  1.0
23810             </version>
23811         </descriptive>
23812         <Type type="Date"/>
23813       </Attribute>
23814       <Attribute name="label" id="::Contact::ContactAnniversary::label">
23815         <webidl>    attribute DOMString? label;</webidl>
23816         <descriptive>
23817             <brief>
23818  The text describing an anniversary.
23819             </brief>
23820            <description>
23821             <p>
23822 By default, this attribute is set to <var>null</var>.
23823             </p>
23824            </description>
23825             <version>
23826  1.0
23827             </version>
23828         </descriptive>
23829         <Type type="DOMString" nullable="nullable"/>
23830       </Attribute>
23831     </Interface>
23832     <Dictionary name="ContactAddressInit" id="::Contact::ContactAddressInit">
23833       <webidl>  dictionary ContactAddressInit
23834   {
23835     DOMString country;
23836     DOMString region;
23837     DOMString city;
23838     DOMString streetAddress;
23839     DOMString additionalInformation;
23840     DOMString postalCode;
23841     boolean isDefault;
23842     DOMString[] types;
23843   };</webidl>
23844       <descriptive>
23845           <brief>
23846  The properties of a ContactAddress to pass to the ContactAddress constructor.
23847           </brief>
23848          <description>
23849           <p>
23850 See ContactAddress interface for more information about the members.
23851           </p>
23852          </description>
23853           <version>
23854  1.0
23855           </version>
23856       </descriptive>
23857       <DictionaryMember name="country" id="::Contact::ContactAddressInit::country">
23858         <webidl>    DOMString country;</webidl>
23859         <Type type="DOMString"/>
23860       </DictionaryMember>
23861       <DictionaryMember name="region" id="::Contact::ContactAddressInit::region">
23862         <webidl>    DOMString region;</webidl>
23863         <Type type="DOMString"/>
23864       </DictionaryMember>
23865       <DictionaryMember name="city" id="::Contact::ContactAddressInit::city">
23866         <webidl>    DOMString city;</webidl>
23867         <Type type="DOMString"/>
23868       </DictionaryMember>
23869       <DictionaryMember name="streetAddress" id="::Contact::ContactAddressInit::streetAddress">
23870         <webidl>    DOMString streetAddress;</webidl>
23871         <Type type="DOMString"/>
23872       </DictionaryMember>
23873       <DictionaryMember name="additionalInformation" id="::Contact::ContactAddressInit::additionalInformation">
23874         <webidl>    DOMString additionalInformation;</webidl>
23875         <Type type="DOMString"/>
23876       </DictionaryMember>
23877       <DictionaryMember name="postalCode" id="::Contact::ContactAddressInit::postalCode">
23878         <webidl>    DOMString postalCode;</webidl>
23879         <Type type="DOMString"/>
23880       </DictionaryMember>
23881       <DictionaryMember name="isDefault" id="::Contact::ContactAddressInit::isDefault">
23882         <webidl>    boolean isDefault;</webidl>
23883         <Type type="boolean"/>
23884       </DictionaryMember>
23885       <DictionaryMember name="types" id="::Contact::ContactAddressInit::types">
23886         <webidl>    DOMString[] types;</webidl>
23887         <Type type="array">
23888           <Type type="DOMString"/>
23889         </Type>
23890       </DictionaryMember>
23891     </Dictionary>
23892     <Interface name="ContactAddress" id="::Contact::ContactAddress">
23893       <webidl>  [Constructor(optional <ref>ContactAddressInit</ref>? addressInitDict)]
23894   interface ContactAddress
23895   {
23896     attribute DOMString? country;
23897
23898     attribute DOMString? region;
23899
23900     attribute DOMString? city;
23901
23902     attribute DOMString? streetAddress;
23903
23904     attribute DOMString? additionalInformation;
23905
23906     attribute DOMString? postalCode;
23907
23908     attribute boolean isDefault;
23909
23910     attribute DOMString[] types;
23911   };</webidl>
23912       <descriptive>
23913           <brief>
23914  This interface contains a set of attributes that represent a particular point
23915 on the Earth's surface.
23916           </brief>
23917          <description>
23918           <p>
23919 Except isDefault and types attributes, each of the attributes of this interface are set to <var>null</var> by default.
23920           </p>
23921           <p>
23922 For more details, see RFC 2426, Section 3.2.1.
23923           </p>
23924          </description>
23925           <version>
23926  1.0
23927           </version>
23928           <Code>   var contactInit = {};
23929    var contactAddress = new tizen.ContactAddress({streetAddress:'Gran Via, 32',
23930                                                   postalCode:'50013', city:'Zaragoza',
23931                                                  country:'ES', types:['WORK']});
23932    contactInit.contactAddress = [contactAddress];
23933  </Code>
23934       </descriptive>
23935       <ExtendedAttributeList>
23936         <ExtendedAttribute name="Constructor">
23937           <webidl>Constructor(optional <ref>ContactAddressInit</ref>? addressInitDict)</webidl>
23938           <ArgumentList>
23939             <Argument optional="optional" name="addressInitDict">
23940               <Type name="ContactAddressInit" nullable="nullable"/>
23941             </Argument>
23942           </ArgumentList>
23943         </ExtendedAttribute>
23944       </ExtendedAttributeList>
23945       <Attribute name="country" id="::Contact::ContactAddress::country">
23946         <webidl>    attribute DOMString? country;</webidl>
23947         <descriptive>
23948             <brief>
23949  The country of the address.
23950             </brief>
23951            <description>
23952             <p>
23953 It is recommended that the country is specified
23954 using the two-letter [ISO 3166-1] code.
23955             </p>
23956            </description>
23957             <version>
23958  1.0
23959             </version>
23960         </descriptive>
23961         <Type type="DOMString" nullable="nullable"/>
23962       </Attribute>
23963       <Attribute name="region" id="::Contact::ContactAddress::region">
23964         <webidl>    attribute DOMString? region;</webidl>
23965         <descriptive>
23966             <brief>
23967  The name of a country subdivision.
23968             </brief>
23969            <description>
23970             <p>
23971 For example, State (United States) or Province (Spain).
23972             </p>
23973            </description>
23974             <version>
23975  1.0
23976             </version>
23977         </descriptive>
23978         <Type type="DOMString" nullable="nullable"/>
23979       </Attribute>
23980       <Attribute name="city" id="::Contact::ContactAddress::city">
23981         <webidl>    attribute DOMString? city;</webidl>
23982         <descriptive>
23983             <brief>
23984  The name of the locality. For example, the city, county, town, or village.
23985             </brief>
23986             <version>
23987  1.0
23988             </version>
23989         </descriptive>
23990         <Type type="DOMString" nullable="nullable"/>
23991       </Attribute>
23992       <Attribute name="streetAddress" id="::Contact::ContactAddress::streetAddress">
23993         <webidl>    attribute DOMString? streetAddress;</webidl>
23994         <descriptive>
23995             <brief>
23996  The street address, for example, building number and street name/number.
23997             </brief>
23998             <version>
23999  1.0
24000             </version>
24001         </descriptive>
24002         <Type type="DOMString" nullable="nullable"/>
24003       </Attribute>
24004       <Attribute name="additionalInformation" id="::Contact::ContactAddress::additionalInformation">
24005         <webidl>    attribute DOMString? additionalInformation;</webidl>
24006         <descriptive>
24007             <brief>
24008  An attribute to capture any other address details that are required for an accurate address.
24009 For example, floor number, apartment number, suite name, the name of an office occupant, etc.
24010             </brief>
24011             <version>
24012  1.0
24013             </version>
24014         </descriptive>
24015         <Type type="DOMString" nullable="nullable"/>
24016       </Attribute>
24017       <Attribute name="postalCode" id="::Contact::ContactAddress::postalCode">
24018         <webidl>    attribute DOMString? postalCode;</webidl>
24019         <descriptive>
24020             <brief>
24021  The postal code of the location (also known as the zip code in the US).
24022             </brief>
24023             <version>
24024  1.0
24025             </version>
24026         </descriptive>
24027         <Type type="DOMString" nullable="nullable"/>
24028       </Attribute>
24029       <Attribute name="isDefault" id="::Contact::ContactAddress::isDefault">
24030         <webidl>    attribute boolean isDefault;</webidl>
24031         <descriptive>
24032             <brief>
24033  The default state of an address.
24034             </brief>
24035            <description>
24036             <p>
24037 Indicates if the address was marked as <em>default</em> or not for the contact.
24038 The only one among addresses for a person can have default property,
24039 so that this attribute might be changed without explicit modification
24040 according to the policy of platform.
24041             </p>
24042             <p>
24043 It deals with the 'pref' TYPE on RFC 2426, Section 3.2.1
24044             </p>
24045             <p>
24046 By default, this attribute is set to <var>false</var>.
24047             </p>
24048            </description>
24049             <version>
24050  2.0
24051             </version>
24052         </descriptive>
24053         <Type type="boolean"/>
24054       </Attribute>
24055       <Attribute name="types" id="::Contact::ContactAddress::types">
24056         <webidl>    attribute DOMString[] types;</webidl>
24057         <descriptive>
24058             <brief>
24059  The case insensitive list of address types.
24060             </brief>
24061            <description>
24062             <p>
24063 For more details, see RFC 2426, Section 3.2.1.
24064             </p>
24065             <p>
24066 At least the following values must be supported:
24067             </p>
24068             <ul>
24069               <li>
24070 WORK - Indicates a work address              </li>
24071               <li>
24072 HOME - Indicates a home address              </li>
24073             </ul>
24074             <p>
24075 By default, this attribute is set to HOME.
24076             </p>
24077            </description>
24078             <version>
24079  1.0
24080             </version>
24081         </descriptive>
24082         <Type type="array">
24083           <Type type="DOMString"/>
24084         </Type>
24085       </Attribute>
24086     </Interface>
24087     <Interface name="ContactPhoneNumber" id="::Contact::ContactPhoneNumber">
24088       <webidl>  [Constructor(DOMString number, optional DOMString[] types, optional boolean isDefault)]
24089   interface ContactPhoneNumber
24090   {
24091     attribute DOMString number;
24092
24093     attribute boolean isDefault;
24094
24095     attribute DOMString[] types;
24096   };</webidl>
24097       <descriptive>
24098           <brief>
24099  The ContactPhoneNumber object that contains the number and the type of phone number.
24100           </brief>
24101          <description>
24102           <p>
24103 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.
24104 At searching by phoneNumber, matchflag &quot;CONTAINS&quot; provides a result set which is retrieved from normalized phoneNumber as searching value.
24105           </p>
24106           <p>
24107 For more details, see RFC 2426, Section 3.3.1
24108           </p>
24109          </description>
24110           <version>
24111  1.0
24112           </version>
24113           <Code>   var contactInit = {};
24114    var phoneNumber = new tizen.ContactPhoneNumber('123456789', ['WORK','VOICE'], true);
24115    contactInit.phoneNumbers = [phoneNumber];
24116  </Code>
24117       </descriptive>
24118       <ExtendedAttributeList>
24119         <ExtendedAttribute name="Constructor">
24120           <webidl>Constructor(DOMString number, optional DOMString[] types, optional boolean isDefault)</webidl>
24121           <ArgumentList>
24122             <Argument name="number">
24123               <Type type="DOMString"/>
24124             </Argument>
24125             <Argument optional="optional" name="types">
24126               <Type type="array">
24127                 <Type type="DOMString"/>
24128               </Type>
24129             </Argument>
24130             <Argument optional="optional" name="isDefault">
24131               <Type type="boolean"/>
24132             </Argument>
24133           </ArgumentList>
24134         </ExtendedAttribute>
24135       </ExtendedAttributeList>
24136       <Attribute name="number" id="::Contact::ContactPhoneNumber::number">
24137         <webidl>    attribute DOMString number;</webidl>
24138         <descriptive>
24139             <brief>
24140  The full phone number.
24141             </brief>
24142             <version>
24143  1.0
24144             </version>
24145         </descriptive>
24146         <Type type="DOMString"/>
24147       </Attribute>
24148       <Attribute name="isDefault" id="::Contact::ContactPhoneNumber::isDefault">
24149         <webidl>    attribute boolean isDefault;</webidl>
24150         <descriptive>
24151             <brief>
24152  The default state of the phone number.
24153             </brief>
24154            <description>
24155             <p>
24156 Indicates if the phone number was marked as <em>default</em> or not for the contact.
24157 The only one among phone numbers for a person can have default property,
24158 so that this attribute might be changed without explicit modification
24159 according to the policy of platform.
24160             </p>
24161             <p>
24162 It deals with the 'pref' TYPE on RFC 2426, Section 3.3.1
24163             </p>
24164             <p>
24165 By default, this attribute is set to false.
24166             </p>
24167            </description>
24168             <version>
24169  2.0
24170             </version>
24171         </descriptive>
24172         <Type type="boolean"/>
24173       </Attribute>
24174       <Attribute name="types" id="::Contact::ContactPhoneNumber::types">
24175         <webidl>    attribute DOMString[] types;</webidl>
24176         <descriptive>
24177             <brief>
24178  The case insensitive list of phone types, as defined in RFC 2426.
24179             </brief>
24180            <description>
24181             <p>
24182 Specifies the intended use of the phone number.
24183             </p>
24184             <p>
24185 At least the following values must be supported:
24186             </p>
24187             <ul>
24188               <li>
24189 <var>WORK</var> - Indicates a work number              </li>
24190               <li>
24191 <var>HOME</var> - Indicates a home number              </li>
24192               <li>
24193 <var>VOICE</var> - Indicates a voice number (Default)              </li>
24194               <li>
24195 <var>FAX</var> - Indicates a facsimile number              </li>
24196               <li>
24197 <var>MSG</var> - Indicates a messaging service on the number              </li>
24198               <li>
24199 <var>CELL</var> - Indicates a cellular number              </li>
24200               <li>
24201 <var>PAGER</var> - Indicates a pager number              </li>
24202               <li>
24203 <var>BBS</var> - Indicates a bulletin board service number              </li>
24204               <li>
24205 <var>MODEM</var> - Indicates a MODEM number              </li>
24206               <li>
24207 <var>CAR</var> - Indicates a car-phone number              </li>
24208               <li>
24209 <var>ISDN</var> - Indicates an ISDN number              </li>
24210               <li>
24211 <var>VIDEO</var> - Indicates a video-phone number              </li>
24212               <li>
24213 <var>PCS</var> - Personal Communication Standard               </li>
24214             </ul>
24215            </description>
24216             <version>
24217  1.0
24218             </version>
24219         </descriptive>
24220         <Type type="array">
24221           <Type type="DOMString"/>
24222         </Type>
24223       </Attribute>
24224     </Interface>
24225     <Interface name="ContactEmailAddress" id="::Contact::ContactEmailAddress">
24226       <webidl>  [Constructor(DOMString email, optional DOMString[] types, optional boolean isDefault)]
24227   interface ContactEmailAddress
24228   {
24229     attribute DOMString email;
24230
24231     attribute boolean isDefault;
24232
24233     attribute DOMString[] types;
24234   };</webidl>
24235       <descriptive>
24236           <brief>
24237  The ContactEmailAddress object that contains the email address and the type of email address.
24238           </brief>
24239          <description>
24240           <p>
24241 For more details, see RFC 2426, Section 3.3.2.
24242           </p>
24243          </description>
24244           <version>
24245  1.0
24246           </version>
24247           <Code>  var contactInit = {};
24248   var email = new tizen.ContactEmailAddress('user@domain.com', ['WORK']);
24249   contactInit.emails = [email];
24250  </Code>
24251       </descriptive>
24252       <ExtendedAttributeList>
24253         <ExtendedAttribute name="Constructor">
24254           <webidl>Constructor(DOMString email, optional DOMString[] types, optional boolean isDefault)</webidl>
24255           <ArgumentList>
24256             <Argument name="email">
24257               <Type type="DOMString"/>
24258             </Argument>
24259             <Argument optional="optional" name="types">
24260               <Type type="array">
24261                 <Type type="DOMString"/>
24262               </Type>
24263             </Argument>
24264             <Argument optional="optional" name="isDefault">
24265               <Type type="boolean"/>
24266             </Argument>
24267           </ArgumentList>
24268         </ExtendedAttribute>
24269       </ExtendedAttributeList>
24270       <Attribute name="email" id="::Contact::ContactEmailAddress::email">
24271         <webidl>    attribute DOMString email;</webidl>
24272         <descriptive>
24273             <brief>
24274  The full email address.
24275             </brief>
24276             <version>
24277  1.0
24278             </version>
24279         </descriptive>
24280         <Type type="DOMString"/>
24281       </Attribute>
24282       <Attribute name="isDefault" id="::Contact::ContactEmailAddress::isDefault">
24283         <webidl>    attribute boolean isDefault;</webidl>
24284         <descriptive>
24285             <brief>
24286  The default state of an email address.
24287             </brief>
24288            <description>
24289             <p>
24290 Indicates if the email address was marked as <em>default</em> or not for the contact.
24291 The only one among email addresses for a person can have default property,
24292 so that this attribute might be changed without explicit modification
24293 according to the policy of platform.
24294             </p>
24295             <p>
24296 It deals with the 'pref' TYPE on RFC 2426, Section 3.3.2
24297             </p>
24298             <p>
24299 By default, this attribute is set to false.
24300             </p>
24301            </description>
24302             <version>
24303  2.0
24304             </version>
24305         </descriptive>
24306         <Type type="boolean"/>
24307       </Attribute>
24308       <Attribute name="types" id="::Contact::ContactEmailAddress::types">
24309         <webidl>    attribute DOMString[] types;</webidl>
24310         <descriptive>
24311             <brief>
24312  The case insensitive list of email types.
24313             </brief>
24314            <description>
24315             <p>
24316 Specifies the intended use of the email address.
24317             </p>
24318             <p>
24319 At least the following values must be supported:
24320             </p>
24321             <ul>
24322               <li>
24323 WORK - Indicates a work email              </li>
24324               <li>
24325 HOME - Indicates a home email              </li>
24326               <li>
24327 MOBILE - Indicates a mobile email              </li>
24328             </ul>
24329             <p>
24330 By default, this attribute is set to WORK.
24331             </p>
24332            </description>
24333             <version>
24334  1.0
24335             </version>
24336         </descriptive>
24337         <Type type="array">
24338           <Type type="DOMString"/>
24339         </Type>
24340       </Attribute>
24341     </Interface>
24342     <Interface name="ContactGroup" id="::Contact::ContactGroup">
24343       <webidl>  [Constructor(DOMString name, optional DOMString? ringtoneURI, optional DOMString? photoURI)]
24344   interface ContactGroup
24345   {
24346     readonly attribute <ref>ContactGroupId</ref>? id;
24347
24348     readonly attribute <ref>AddressBookId</ref>? addressBookId;
24349
24350     attribute DOMString name;
24351
24352     attribute DOMString? ringtoneURI;
24353
24354     attribute DOMString? photoURI;
24355
24356     readonly attribute DOMString readOnly;
24357   };</webidl>
24358       <descriptive>
24359           <brief>
24360  The group object.
24361           </brief>
24362           <version>
24363  2.0
24364           </version>
24365           <Code>  var addressbook = null;
24366   var group = null;
24367
24368   // Define the error callback for all the asynchronous calls
24369   function errorCB(err) {
24370     console.log( 'The following error occurred: ' +  err.name);
24371   }
24372
24373   // Define the success callback for retrieving all the
24374   // Address Books
24375   function addressBooksCB(addressbooks) {
24376     addressbook = addressbooks[0];
24377     try {
24378       group = new tizen.ContactGroup('Family', 'file://opt/media/Downloads/ring.mp3');
24379     } catch (err) {
24380       console.log( 'The following error occurred while converting: ' +  err.name);
24381     }
24382
24383     try {
24384       if (group) {
24385         addressbook.addGroup(group);
24386         console.log('Group was added with ID ' + group.id);
24387       }
24388     } catch (err) {
24389       console.log( 'The following error occurred while adding: ' +  err.name);
24390     }
24391   }
24392
24393   tizen.contact.getAddressBooks(addressBooksCB, errorCB);
24394
24395  </Code>
24396       </descriptive>
24397       <ExtendedAttributeList>
24398         <ExtendedAttribute name="Constructor">
24399           <webidl>Constructor(DOMString name, optional DOMString? ringtoneURI, optional DOMString? photoURI)</webidl>
24400           <ArgumentList>
24401             <Argument name="name">
24402               <Type type="DOMString"/>
24403             </Argument>
24404             <Argument optional="optional" name="ringtoneURI">
24405               <Type type="DOMString" nullable="nullable"/>
24406             </Argument>
24407             <Argument optional="optional" name="photoURI">
24408               <Type type="DOMString" nullable="nullable"/>
24409             </Argument>
24410           </ArgumentList>
24411         </ExtendedAttribute>
24412       </ExtendedAttributeList>
24413       <Attribute readonly="readonly" name="id" id="::Contact::ContactGroup::id">
24414         <webidl>    readonly attribute <ref>ContactGroupId</ref>? id;</webidl>
24415         <descriptive>
24416             <brief>
24417  The identifier of a group.
24418             </brief>
24419            <description>
24420             <p>
24421 By default, this attribute is set to <var>null</var>.
24422             </p>
24423            </description>
24424             <version>
24425  2.0
24426             </version>
24427         </descriptive>
24428         <Type name="ContactGroupId" nullable="nullable"/>
24429       </Attribute>
24430       <Attribute readonly="readonly" name="addressBookId" id="::Contact::ContactGroup::addressBookId">
24431         <webidl>    readonly attribute <ref>AddressBookId</ref>? addressBookId;</webidl>
24432         <descriptive>
24433             <brief>
24434  The identifier of the address book that the group belongs to.
24435             </brief>
24436            <description>
24437             <p>
24438 By default, this attribute is set to <var>null</var>.
24439             </p>
24440            </description>
24441             <version>
24442  2.0
24443             </version>
24444         </descriptive>
24445         <Type name="AddressBookId" nullable="nullable"/>
24446       </Attribute>
24447       <Attribute name="name" id="::Contact::ContactGroup::name">
24448         <webidl>    attribute DOMString name;</webidl>
24449         <descriptive>
24450             <brief>
24451  The name of a group.
24452             </brief>
24453             <version>
24454  2.0
24455             </version>
24456         </descriptive>
24457         <Type type="DOMString"/>
24458       </Attribute>
24459       <Attribute name="ringtoneURI" id="::Contact::ContactGroup::ringtoneURI">
24460         <webidl>    attribute DOMString? ringtoneURI;</webidl>
24461         <descriptive>
24462             <brief>
24463  The URI to the custom ringtone for a group.
24464             </brief>
24465            <description>
24466             <p>
24467 To specify a custom ringtone for a group.
24468             </p>
24469             <p>
24470 By default, this attribute is initialized to <var>null</var>.
24471 This attribute only contains a local file URI.
24472             </p>
24473            </description>
24474             <version>
24475  2.0
24476             </version>
24477         </descriptive>
24478         <Type type="DOMString" nullable="nullable"/>
24479       </Attribute>
24480       <Attribute name="photoURI" id="::Contact::ContactGroup::photoURI">
24481         <webidl>    attribute DOMString? photoURI;</webidl>
24482         <descriptive>
24483             <brief>
24484  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.
24485             </brief>
24486            <description>
24487             <p>
24488 By default, this attribute is set to <var>null</var>.
24489             </p>
24490            </description>
24491             <version>
24492  2.0
24493             </version>
24494         </descriptive>
24495         <Type type="DOMString" nullable="nullable"/>
24496       </Attribute>
24497       <Attribute readonly="readonly" name="readOnly" id="::Contact::ContactGroup::readOnly">
24498         <webidl>    readonly attribute DOMString readOnly;</webidl>
24499         <descriptive>
24500             <brief>
24501  The flag indicating if the group can be modified / removed or not.
24502 Some groups cannot be edited if this flag sets to <var>true</var>.
24503             </brief>
24504            <description>
24505             <p>
24506 By default, this attribute is set to false.
24507             </p>
24508            </description>
24509             <version>
24510  2.0
24511             </version>
24512         </descriptive>
24513         <Type type="DOMString"/>
24514       </Attribute>
24515     </Interface>
24516     <Interface name="PersonArraySuccessCallback" id="::Contact::PersonArraySuccessCallback">
24517       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface PersonArraySuccessCallback {
24518     void onsuccess(<ref>Person</ref>[] persons);
24519   };</webidl>
24520       <descriptive>
24521           <brief>
24522  The success callback that is used for retrieving
24523 a list of persons.
24524           </brief>
24525          <description>
24526           <p>
24527 The success callback that takes an array of persons as an input
24528 argument. It is used in the asynchronous operation to
24529 get or save a list of persons.
24530           </p>
24531          </description>
24532           <version>
24533  2.0
24534           </version>
24535       </descriptive>
24536       <ExtendedAttributeList>
24537         <ExtendedAttribute name="Callback" value="FunctionOnly">
24538           <webidl>Callback</webidl>
24539         </ExtendedAttribute>
24540         <ExtendedAttribute name="NoInterfaceObject">
24541           <webidl> NoInterfaceObject</webidl>
24542         </ExtendedAttribute>
24543       </ExtendedAttributeList>
24544       <Operation name="onsuccess" id="::Contact::PersonArraySuccessCallback::onsuccess">
24545         <webidl>    void onsuccess(<ref>Person</ref>[] persons);</webidl>
24546         <descriptive>
24547             <brief>
24548  The method invoked when a list of persons is retrieved successfully.
24549             </brief>
24550             <version>
24551  2.0
24552             </version>
24553         </descriptive>
24554         <Type type="void"/>
24555         <ArgumentList>
24556           <Argument name="persons">
24557             <descriptive>
24558                 <description><p>
24559  List of persons.
24560                 </p></description>
24561             </descriptive>
24562             <Type type="array">
24563               <Type name="Person"/>
24564             </Type>
24565           </Argument>
24566         </ArgumentList>
24567       </Operation>
24568     </Interface>
24569     <Interface name="ContactArraySuccessCallback" id="::Contact::ContactArraySuccessCallback">
24570       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface ContactArraySuccessCallback {
24571     void onsuccess(<ref>Contact</ref>[] contacts);
24572   };</webidl>
24573       <descriptive>
24574           <brief>
24575  The success callback that is used for saving and retrieving
24576 a list of contacts.
24577           </brief>
24578          <description>
24579           <p>
24580 The success callback that takes an array of contacts as an input
24581 argument. It is used in the asynchronous operation to
24582 get or save a list of contacts.
24583           </p>
24584          </description>
24585           <version>
24586  1.0
24587           </version>
24588       </descriptive>
24589       <ExtendedAttributeList>
24590         <ExtendedAttribute name="Callback" value="FunctionOnly">
24591           <webidl>Callback</webidl>
24592         </ExtendedAttribute>
24593         <ExtendedAttribute name="NoInterfaceObject">
24594           <webidl> NoInterfaceObject</webidl>
24595         </ExtendedAttribute>
24596       </ExtendedAttributeList>
24597       <Operation name="onsuccess" id="::Contact::ContactArraySuccessCallback::onsuccess">
24598         <webidl>    void onsuccess(<ref>Contact</ref>[] contacts);</webidl>
24599         <descriptive>
24600             <brief>
24601  The method invoked when a list of contacts is retrieved successfully.
24602             </brief>
24603             <version>
24604  1.0
24605             </version>
24606         </descriptive>
24607         <Type type="void"/>
24608         <ArgumentList>
24609           <Argument name="contacts">
24610             <descriptive>
24611                 <description><p>
24612  List of contacts.
24613 The Contacts that were successfully saved must have their identifiers set.
24614                 </p></description>
24615             </descriptive>
24616             <Type type="array">
24617               <Type name="Contact"/>
24618             </Type>
24619           </Argument>
24620         </ArgumentList>
24621       </Operation>
24622     </Interface>
24623     <Interface name="AddressBookArraySuccessCallback" id="::Contact::AddressBookArraySuccessCallback">
24624       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface AddressBookArraySuccessCallback {
24625     void onsuccess(<ref>AddressBook</ref>[] addressbooks);
24626   };</webidl>
24627       <descriptive>
24628           <brief>
24629  The success callback when retrieving a list of AddressBooks.
24630           </brief>
24631          <description>
24632           <p>
24633 The success callback that takes an array of AddressBooks as an input
24634 argument. It is used in the asynchronous operation to
24635 get address books.
24636           </p>
24637          </description>
24638           <version>
24639  1.0
24640           </version>
24641       </descriptive>
24642       <ExtendedAttributeList>
24643         <ExtendedAttribute name="Callback" value="FunctionOnly">
24644           <webidl>Callback</webidl>
24645         </ExtendedAttribute>
24646         <ExtendedAttribute name="NoInterfaceObject">
24647           <webidl> NoInterfaceObject</webidl>
24648         </ExtendedAttribute>
24649       </ExtendedAttributeList>
24650       <Operation name="onsuccess" id="::Contact::AddressBookArraySuccessCallback::onsuccess">
24651         <webidl>    void onsuccess(<ref>AddressBook</ref>[] addressbooks);</webidl>
24652         <descriptive>
24653             <brief>
24654  The method invoked when a list of address books is retrieved successfully.
24655             </brief>
24656             <version>
24657  1.0
24658             </version>
24659         </descriptive>
24660         <Type type="void"/>
24661         <ArgumentList>
24662           <Argument name="addressbooks">
24663             <descriptive>
24664                 <description><p>
24665  The address books to retrieve.
24666                 </p></description>
24667             </descriptive>
24668             <Type type="array">
24669               <Type name="AddressBook"/>
24670             </Type>
24671           </Argument>
24672         </ArgumentList>
24673       </Operation>
24674     </Interface>
24675     <Interface name="AddressBookChangeCallback" id="::Contact::AddressBookChangeCallback">
24676       <webidl>  [Callback, NoInterfaceObject] interface AddressBookChangeCallback {
24677     void oncontactsadded(<ref>Contact</ref>[] contacts);
24678
24679     void oncontactsupdated(<ref>Contact</ref>[] contacts);
24680
24681     void oncontactsremoved(<ref>ContactId</ref>[] contactIds);
24682   };</webidl>
24683       <descriptive>
24684           <brief>
24685  The interface for specifying the methods to be called for address book
24686 change notifications.
24687           </brief>
24688          <description>
24689           <p>
24690 This interface specifies a set of functions that will be invoked every time an address
24691 book change occurs (contact addition/update/deletion).
24692           </p>
24693          </description>
24694           <version>
24695  1.0
24696           </version>
24697       </descriptive>
24698       <ExtendedAttributeList>
24699         <ExtendedAttribute name="Callback">
24700           <webidl>Callback</webidl>
24701         </ExtendedAttribute>
24702         <ExtendedAttribute name="NoInterfaceObject">
24703           <webidl> NoInterfaceObject</webidl>
24704         </ExtendedAttribute>
24705       </ExtendedAttributeList>
24706       <Operation name="oncontactsadded" id="::Contact::AddressBookChangeCallback::oncontactsadded">
24707         <webidl>    void oncontactsadded(<ref>Contact</ref>[] contacts);</webidl>
24708         <descriptive>
24709             <brief>
24710  The method invoked when contacts are added to the address book.
24711             </brief>
24712             <version>
24713  1.0
24714             </version>
24715         </descriptive>
24716         <Type type="void"/>
24717         <ArgumentList>
24718           <Argument name="contacts">
24719             <descriptive>
24720                 <description><p>
24721  A list of contacts to add.
24722                 </p></description>
24723             </descriptive>
24724             <Type type="array">
24725               <Type name="Contact"/>
24726             </Type>
24727           </Argument>
24728         </ArgumentList>
24729       </Operation>
24730       <Operation name="oncontactsupdated" id="::Contact::AddressBookChangeCallback::oncontactsupdated">
24731         <webidl>    void oncontactsupdated(<ref>Contact</ref>[] contacts);</webidl>
24732         <descriptive>
24733             <brief>
24734  The method invoked when contacts are updated in the address book.
24735             </brief>
24736             <version>
24737  1.0
24738             </version>
24739         </descriptive>
24740         <Type type="void"/>
24741         <ArgumentList>
24742           <Argument name="contacts">
24743             <descriptive>
24744                 <description><p>
24745  A list of contacts to update.
24746                 </p></description>
24747             </descriptive>
24748             <Type type="array">
24749               <Type name="Contact"/>
24750             </Type>
24751           </Argument>
24752         </ArgumentList>
24753       </Operation>
24754       <Operation name="oncontactsremoved" id="::Contact::AddressBookChangeCallback::oncontactsremoved">
24755         <webidl>    void oncontactsremoved(<ref>ContactId</ref>[] contactIds);</webidl>
24756         <descriptive>
24757             <brief>
24758  The method invoked when contacts are deleted from the address book.
24759             </brief>
24760             <version>
24761  1.0
24762             </version>
24763         </descriptive>
24764         <Type type="void"/>
24765         <ArgumentList>
24766           <Argument name="contactIds">
24767             <descriptive>
24768                 <description><p>
24769  A list of identifiers for the contacts to delete.
24770                 </p></description>
24771             </descriptive>
24772             <Type type="array">
24773               <Type name="ContactId"/>
24774             </Type>
24775           </Argument>
24776         </ArgumentList>
24777       </Operation>
24778     </Interface>
24779     <Interface name="PersonsChangeCallback" id="::Contact::PersonsChangeCallback">
24780       <webidl>  [Callback, NoInterfaceObject] interface PersonsChangeCallback {
24781     void onpersonsadded(<ref>Person</ref>[] persons);
24782
24783     void onpersonsupdated(<ref>Person</ref>[] persons);
24784
24785     void onpersonsremoved(<ref>PersonId</ref>[] personIds);
24786   };</webidl>
24787       <descriptive>
24788           <brief>
24789  The interface for specifying the methods to be called for change notifications.
24790           </brief>
24791          <description>
24792           <p>
24793 This interface specifies a set of functions that will be invoked every time person's
24794 list change occurs (person addition/update/deletion).
24795           </p>
24796          </description>
24797           <version>
24798  2.0
24799           </version>
24800       </descriptive>
24801       <ExtendedAttributeList>
24802         <ExtendedAttribute name="Callback">
24803           <webidl>Callback</webidl>
24804         </ExtendedAttribute>
24805         <ExtendedAttribute name="NoInterfaceObject">
24806           <webidl> NoInterfaceObject</webidl>
24807         </ExtendedAttribute>
24808       </ExtendedAttributeList>
24809       <Operation name="onpersonsadded" id="::Contact::PersonsChangeCallback::onpersonsadded">
24810         <webidl>    void onpersonsadded(<ref>Person</ref>[] persons);</webidl>
24811         <descriptive>
24812             <brief>
24813  The method invoked when persons are added to the person list.
24814             </brief>
24815             <version>
24816  2.0
24817             </version>
24818         </descriptive>
24819         <Type type="void"/>
24820         <ArgumentList>
24821           <Argument name="persons">
24822             <descriptive>
24823                 <description><p>
24824  A list of persons to add.
24825                 </p></description>
24826             </descriptive>
24827             <Type type="array">
24828               <Type name="Person"/>
24829             </Type>
24830           </Argument>
24831         </ArgumentList>
24832       </Operation>
24833       <Operation name="onpersonsupdated" id="::Contact::PersonsChangeCallback::onpersonsupdated">
24834         <webidl>    void onpersonsupdated(<ref>Person</ref>[] persons);</webidl>
24835         <descriptive>
24836             <brief>
24837  The method invoked when persons are updated in the person list.
24838             </brief>
24839             <version>
24840  2.0
24841             </version>
24842         </descriptive>
24843         <Type type="void"/>
24844         <ArgumentList>
24845           <Argument name="persons">
24846             <descriptive>
24847                 <description><p>
24848  A list of persons to update.
24849                 </p></description>
24850             </descriptive>
24851             <Type type="array">
24852               <Type name="Person"/>
24853             </Type>
24854           </Argument>
24855         </ArgumentList>
24856       </Operation>
24857       <Operation name="onpersonsremoved" id="::Contact::PersonsChangeCallback::onpersonsremoved">
24858         <webidl>    void onpersonsremoved(<ref>PersonId</ref>[] personIds);</webidl>
24859         <descriptive>
24860             <brief>
24861  The method invoked when persons are deleted from the person list.
24862             </brief>
24863             <version>
24864  2.0
24865             </version>
24866         </descriptive>
24867         <Type type="void"/>
24868         <ArgumentList>
24869           <Argument name="personIds">
24870             <descriptive>
24871                 <description><p>
24872  A list of identifiers for the persons to delete.
24873                 </p></description>
24874             </descriptive>
24875             <Type type="array">
24876               <Type name="PersonId"/>
24877             </Type>
24878           </Argument>
24879         </ArgumentList>
24880       </Operation>
24881     </Interface>
24882   </Module>
24883   <Module name="Content" id="::Content">
24884     <webidl>module Content {
24885
24886   enum ContentDirectoryStorageType { &quot;INTERNAL&quot;, &quot;EXTERNAL&quot; };
24887
24888   enum ContentType { &quot;IMAGE&quot;, &quot;VIDEO&quot;, &quot;AUDIO&quot;, &quot;OTHER&quot; };
24889
24890   enum AudioContentLyricsType { &quot;SYNCHRONIZED&quot;, &quot;UNSYNCHRONIZED&quot; };
24891
24892   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; };
24893
24894   typedef DOMString ContentId;
24895
24896   typedef DOMString ContentDirectoryId;
24897
24898   [NoInterfaceObject] interface ContentManagerObject {
24899     readonly attribute <ref>ContentManager</ref> content;
24900   };
24901   <ref>Tizen</ref> implements <ref>ContentManagerObject</ref>;
24902
24903   [NoInterfaceObject] interface ContentManager {
24904
24905     void update(<ref>Content</ref> content) raises(<ref>WebAPIException</ref>);
24906
24907     void updateBatch(<ref>Content</ref>[] contents,
24908                      optional <ref>SuccessCallback</ref>? successCallback,
24909                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
24910
24911     void getDirectories(<ref>ContentDirectoryArraySuccessCallback</ref> successCallback,
24912                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
24913
24914     void find(<ref>ContentArraySuccessCallback</ref> successCallback,
24915               optional <ref>ErrorCallback</ref>? errorCallback,
24916               optional <ref>ContentDirectoryId</ref>? directoryId,
24917               optional <ref>AbstractFilter</ref>? filter,
24918               optional <ref>SortMode</ref>? sortMode,
24919               optional unsigned long? count,
24920               optional unsigned long? offset) raises(<ref>WebAPIException</ref>);
24921
24922
24923     void scanFile(DOMString contentURI,
24924                   optional <ref>ContentScanSuccessCallback</ref>? successCallback,
24925                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
24926
24927     void setChangeListener(<ref>ContentChangeCallback</ref> changeCallback) raises(<ref>WebAPIException</ref>);
24928
24929     void unsetChangeListener() raises(<ref>WebAPIException</ref>);
24930
24931   };
24932
24933   [Callback=FunctionOnly, NoInterfaceObject] interface ContentArraySuccessCallback {
24934     void onsuccess(<ref>Content</ref>[] contents);
24935   };
24936
24937   [Callback=FunctionOnly, NoInterfaceObject] interface ContentDirectoryArraySuccessCallback {
24938     void onsuccess(<ref>ContentDirectory</ref>[] directories);
24939   };
24940
24941   [Callback=FunctionOnly, NoInterfaceObject] interface ContentScanSuccessCallback {
24942     void onsuccess(DOMString contentURI);
24943   };
24944
24945   [Callback, NoInterfaceObject] interface ContentChangeCallback {
24946     void oncontentadded(<ref>Content</ref> content);
24947
24948     void oncontentupdated(<ref>Content</ref> content);
24949
24950     void oncontentremoved(<ref>ContentId</ref> id);
24951   };
24952
24953
24954   [NoInterfaceObject] interface ContentDirectory {
24955
24956     readonly attribute <ref>ContentDirectoryId</ref> id;
24957
24958     readonly attribute DOMString directoryURI;
24959
24960     readonly attribute DOMString title;
24961
24962     readonly attribute <ref>ContentDirectoryStorageType</ref> storageType;
24963
24964     readonly attribute Date? modifiedDate;
24965
24966    };
24967
24968   [NoInterfaceObject] interface Content {
24969
24970     readonly attribute DOMString[] editableAttributes;
24971
24972     readonly attribute <ref>ContentId</ref> id;
24973
24974     attribute DOMString name;
24975
24976     readonly attribute <ref>ContentType</ref> type;
24977
24978     readonly attribute DOMString mimeType;
24979
24980     readonly attribute DOMString title;
24981
24982     readonly attribute DOMString contentURI;
24983
24984     readonly attribute DOMString[]? thumbnailURIs;
24985
24986     readonly attribute Date? releaseDate;
24987
24988     readonly attribute Date? modifiedDate;
24989
24990     readonly attribute unsigned long size;
24991
24992     attribute DOMString? description;
24993
24994     attribute unsigned long rating;
24995   };
24996
24997   [NoInterfaceObject] interface VideoContent : <ref>Content</ref> {
24998
24999     attribute <ref>SimpleCoordinates</ref>? geolocation;
25000
25001     readonly attribute DOMString? album;
25002
25003     readonly attribute DOMString[]? artists;
25004
25005     readonly attribute unsigned long duration;
25006
25007     readonly attribute unsigned long width;
25008
25009     readonly attribute unsigned long height;
25010
25011   };
25012
25013
25014   [NoInterfaceObject] interface AudioContentLyrics {
25015
25016     readonly attribute <ref>AudioContentLyricsType</ref> type;
25017
25018     readonly attribute unsigned long[] timestamps;
25019
25020     readonly attribute DOMString[] texts;
25021   };
25022
25023   [NoInterfaceObject] interface AudioContent : <ref>Content</ref> {
25024
25025     readonly attribute DOMString? album;
25026
25027     readonly attribute DOMString[]? genres;
25028
25029     readonly attribute DOMString[]? artists;
25030
25031     readonly attribute DOMString[]? composers;
25032
25033     readonly attribute <ref>AudioContentLyrics</ref>? lyrics;
25034
25035     readonly attribute DOMString? copyright;
25036
25037     readonly attribute unsigned long bitrate;
25038
25039     readonly attribute unsigned short? trackNumber;
25040
25041     readonly attribute unsigned long duration;
25042
25043   };
25044
25045   [NoInterfaceObject] interface ImageContent : <ref>Content</ref> {
25046
25047     attribute <ref>SimpleCoordinates</ref>? geolocation;
25048
25049     readonly attribute unsigned long width;
25050
25051     readonly attribute unsigned long height;
25052
25053     attribute <ref>ImageContentOrientation</ref> orientation;
25054
25055   };
25056 };</webidl>
25057     <descriptive>
25058         <brief>
25059  This API provides functionality to discover contents such as images, videos, music, or other. 
25060         </brief>
25061        <description>
25062         <p>
25063 It is possible to search for specific contents using filters.
25064 The API also supports setting attributes of specific contents.
25065         </p>
25066         <p>
25067 For more information on the Content features, see <a href="../../org.tizen.web.appprogramming/html/guide/content_guide/mediacontent.htm">Content Guide</a>.
25068         </p>
25069        </description>
25070         <version>
25071  2.0
25072         </version>
25073     </descriptive>
25074     <Enum name="ContentDirectoryStorageType" id="::Content::ContentDirectoryStorageType">
25075       <webidl>  enum ContentDirectoryStorageType { &quot;INTERNAL&quot;, &quot;EXTERNAL&quot; };</webidl>
25076       <descriptive>
25077          <description>
25078           <p>
25079 Defines whether a content directory is stored on internal or external storage (such as a removable memory card).
25080           </p>
25081          </description>
25082           <version>
25083  2.0
25084           </version>
25085       </descriptive>
25086       <EnumValue stringvalue="INTERNAL">
25087         <webidl> &quot;INTERNAL</webidl>
25088       </EnumValue>
25089       <EnumValue stringvalue="EXTERNAL">
25090         <webidl> &quot;EXTERNAL</webidl>
25091       </EnumValue>
25092     </Enum>
25093     <Enum name="ContentType" id="::Content::ContentType">
25094       <webidl>  enum ContentType { &quot;IMAGE&quot;, &quot;VIDEO&quot;, &quot;AUDIO&quot;, &quot;OTHER&quot; };</webidl>
25095       <descriptive>
25096          <description>
25097           <p>
25098 Defines the type of content such as image, video, audio and other.
25099           </p>
25100          </description>
25101           <version>
25102  2.0
25103           </version>
25104           <remark>
25105  &quot;OTHER&quot; type is added since 2.1.
25106           </remark>
25107       </descriptive>
25108       <EnumValue stringvalue="IMAGE">
25109         <webidl> &quot;IMAGE</webidl>
25110       </EnumValue>
25111       <EnumValue stringvalue="VIDEO">
25112         <webidl> &quot;VIDEO</webidl>
25113       </EnumValue>
25114       <EnumValue stringvalue="AUDIO">
25115         <webidl> &quot;AUDIO</webidl>
25116       </EnumValue>
25117       <EnumValue stringvalue="OTHER">
25118         <webidl> &quot;OTHER</webidl>
25119       </EnumValue>
25120     </Enum>
25121     <Enum name="AudioContentLyricsType" id="::Content::AudioContentLyricsType">
25122       <webidl>  enum AudioContentLyricsType { &quot;SYNCHRONIZED&quot;, &quot;UNSYNCHRONIZED&quot; };</webidl>
25123       <descriptive>
25124          <description>
25125           <p>
25126 Defines whether the lyric supplied with an audio file is time-synchronized or not.
25127           </p>
25128          </description>
25129           <version>
25130  2.0
25131           </version>
25132       </descriptive>
25133       <EnumValue stringvalue="SYNCHRONIZED">
25134         <webidl> &quot;SYNCHRONIZED</webidl>
25135       </EnumValue>
25136       <EnumValue stringvalue="UNSYNCHRONIZED">
25137         <webidl> &quot;UNSYNCHRONIZED</webidl>
25138       </EnumValue>
25139     </Enum>
25140     <Enum name="ImageContentOrientation" id="::Content::ImageContentOrientation">
25141       <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>
25142       <descriptive>
25143          <description>
25144           <p>
25145 Defines an orientation of an image.
25146           </p>
25147          </description>
25148           <version>
25149  2.0
25150           </version>
25151       </descriptive>
25152       <EnumValue stringvalue="NORMAL">
25153         <webidl> &quot;NORMAL</webidl>
25154       </EnumValue>
25155       <EnumValue stringvalue="FLIP_HORIZONTAL">
25156         <webidl> &quot;FLIP_HORIZONTAL</webidl>
25157       </EnumValue>
25158       <EnumValue stringvalue="ROTATE_180">
25159         <webidl> &quot;ROTATE_180</webidl>
25160       </EnumValue>
25161       <EnumValue stringvalue="FLIP_VERTICAL">
25162         <webidl> &quot;FLIP_VERTICAL</webidl>
25163       </EnumValue>
25164       <EnumValue stringvalue="TRANSPOSE">
25165         <webidl> &quot;TRANSPOSE</webidl>
25166       </EnumValue>
25167       <EnumValue stringvalue="ROTATE_90">
25168         <webidl> &quot;ROTATE_90</webidl>
25169       </EnumValue>
25170       <EnumValue stringvalue="TRANSVERSE">
25171         <webidl> &quot;TRANSVERSE</webidl>
25172       </EnumValue>
25173       <EnumValue stringvalue="ROTATE_270">
25174         <webidl> &quot;ROTATE_270</webidl>
25175       </EnumValue>
25176     </Enum>
25177     <Typedef name="ContentId" id="::Content::ContentId">
25178       <webidl>  typedef DOMString ContentId;</webidl>
25179       <descriptive>
25180           <brief>
25181  Content identifier.
25182           </brief>
25183           <version>
25184  2.0
25185           </version>
25186       </descriptive>
25187       <Type type="DOMString"/>
25188     </Typedef>
25189     <Typedef name="ContentDirectoryId" id="::Content::ContentDirectoryId">
25190       <webidl>  typedef DOMString ContentDirectoryId;</webidl>
25191       <descriptive>
25192           <brief>
25193  Content directory identifier.
25194           </brief>
25195           <version>
25196  2.0
25197           </version>
25198       </descriptive>
25199       <Type type="DOMString"/>
25200     </Typedef>
25201     <Interface name="ContentManagerObject" id="::Content::ContentManagerObject">
25202       <webidl>  [NoInterfaceObject] interface ContentManagerObject {
25203     readonly attribute <ref>ContentManager</ref> content;
25204   };</webidl>
25205       <descriptive>
25206           <brief>
25207  Defines what is instantiated by the Tizen object.
25208           </brief>
25209          <description>
25210           <p>
25211 There is a <em>tizen.content </em>object that allows accessing the functionality of the Content module.
25212           </p>
25213          </description>
25214           <version>
25215  2.0
25216           </version>
25217       </descriptive>
25218       <ExtendedAttributeList>
25219         <ExtendedAttribute name="NoInterfaceObject">
25220           <webidl>NoInterfaceObject</webidl>
25221         </ExtendedAttribute>
25222       </ExtendedAttributeList>
25223       <Attribute readonly="readonly" name="content" id="::Content::ContentManagerObject::content">
25224         <webidl>    readonly attribute <ref>ContentManager</ref> content;</webidl>
25225         <Type name="ContentManager"/>
25226       </Attribute>
25227     </Interface>
25228     <Implements name1="Tizen" name2="ContentManagerObject">
25229       <webidl>  <ref>Tizen</ref> implements <ref>ContentManagerObject</ref>;</webidl>
25230     </Implements>
25231     <Interface name="ContentManager" id="::Content::ContentManager">
25232       <webidl>  [NoInterfaceObject] interface ContentManager {
25233
25234     void update(<ref>Content</ref> content) raises(<ref>WebAPIException</ref>);
25235
25236     void updateBatch(<ref>Content</ref>[] contents,
25237                      optional <ref>SuccessCallback</ref>? successCallback,
25238                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
25239
25240     void getDirectories(<ref>ContentDirectoryArraySuccessCallback</ref> successCallback,
25241                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
25242
25243     void find(<ref>ContentArraySuccessCallback</ref> successCallback,
25244               optional <ref>ErrorCallback</ref>? errorCallback,
25245               optional <ref>ContentDirectoryId</ref>? directoryId,
25246               optional <ref>AbstractFilter</ref>? filter,
25247               optional <ref>SortMode</ref>? sortMode,
25248               optional unsigned long? count,
25249               optional unsigned long? offset) raises(<ref>WebAPIException</ref>);
25250
25251
25252     void scanFile(DOMString contentURI,
25253                   optional <ref>ContentScanSuccessCallback</ref>? successCallback,
25254                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
25255
25256     void setChangeListener(<ref>ContentChangeCallback</ref> changeCallback) raises(<ref>WebAPIException</ref>);
25257
25258     void unsetChangeListener() raises(<ref>WebAPIException</ref>);
25259
25260   };</webidl>
25261       <descriptive>
25262           <brief>
25263  This interface provides operations to retrieve and manipulate contents.
25264           </brief>
25265           <version>
25266  2.0
25267           </version>
25268       </descriptive>
25269       <ExtendedAttributeList>
25270         <ExtendedAttribute name="NoInterfaceObject">
25271           <webidl>NoInterfaceObject</webidl>
25272         </ExtendedAttribute>
25273       </ExtendedAttributeList>
25274       <Operation name="update" id="::Content::ContentManager::update">
25275         <webidl>    void update(<ref>Content</ref> content) raises(<ref>WebAPIException</ref>);</webidl>
25276         <descriptive>
25277             <brief>
25278  Updates attributes of the content in content database synchronously.
25279             </brief>
25280            <description>
25281             <p>
25282 When an application has changed some attributes of a content, this method allows
25283 writing it back to the content database.
25284             </p>
25285            </description>
25286             <version>
25287  2.0
25288             </version>
25289             <privilegelevel>
25290  public
25291             </privilegelevel>
25292             <privilege>
25293  http://tizen.org/privilege/content.write
25294             </privilege>
25295             <remark>
25296  The <em>editableAttributes </em>in <em>Content </em>interface indicates 
25297 the attributes that can be changed. 
25298 This API does not support updating the metadata of a file.
25299             </remark>
25300             <Code> // Assume the content is a Content object as a result of find method.
25301  // Check the description is editable, and then set a description.
25302  if (content.editableAttributes.indexOf(&quot;description&quot;) >= 0) {
25303      content.description = &quot;Sample content&quot;;
25304  }
25305  tizen.content.update(content);
25306  </Code>
25307         </descriptive>
25308         <Type type="void"/>
25309         <ArgumentList>
25310           <Argument name="content">
25311             <descriptive>
25312                 <description><p>
25313  The content to update.
25314                 </p></description>
25315             </descriptive>
25316             <Type name="Content"/>
25317           </Argument>
25318         </ArgumentList>
25319         <Raises>
25320           <RaiseException name="WebAPIException">
25321             <descriptive>
25322                 <description><p>
25323  with error type TypeMismatchError, if any input parameter
25324 is not compatible with the expected type for that parameter.
25325                 </p></description>
25326                 <description><p>
25327  with error type InvalidValuesError, if any of the input parameters
25328 contain an invalid value.
25329                 </p></description>
25330                 <description><p>
25331  with error type SecurityError, if the application does not have the privilege to call this method.
25332                 </p></description>
25333                 <description><p>
25334  with error type UnknownError in any other error case.
25335                 </p></description>
25336             </descriptive>
25337           </RaiseException>
25338         </Raises>
25339       </Operation>
25340       <Operation name="updateBatch" id="::Content::ContentManager::updateBatch">
25341         <webidl>    void updateBatch(<ref>Content</ref>[] contents,
25342                      optional <ref>SuccessCallback</ref>? successCallback,
25343                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
25344         <descriptive>
25345             <brief>
25346  Updates a batch of content attributes in the content database synchronously.
25347             </brief>
25348            <description>
25349             <p>
25350 When an application has changed any attributes in array of content, this method allows writing them
25351 back to the content database.
25352             </p>
25353             <p>
25354 The errorCallback can be launched with any of these error types:
25355             </p>
25356             <ul>
25357               <li>
25358 InvalidValuesError: If any of the input parameters contain an invalid value.              </li>
25359               <li>
25360 UnknownError: In any other error case.              </li>
25361             </ul>
25362            </description>
25363             <version>
25364  2.0
25365             </version>
25366             <privilegelevel>
25367  public
25368             </privilegelevel>
25369             <privilege>
25370  http://tizen.org/privilege/content.write
25371             </privilege>
25372             <remark>
25373  The <em>editableAttributes </em>in <em>Content </em>interface indicates 
25374 the attributes that can be changed.
25375 This API does not support updating the metadata of a file.
25376             </remark>
25377             <Code> // The following example increases rating of an content by 1
25378
25379  function errorCB(err) {
25380      console.log( 'The following error occurred: ' +  err.name);
25381  }
25382
25383  function successCB() {
25384      console.log('Attributes set successfully');
25385  }
25386
25387  // Assume the content is a Content object as a result of find method.
25388  // Check the rating is editable, and then increase by 1.
25389  if (content.editableAttributes.indexOf(&quot;rating&quot;) >= 0) {
25390      content.rating++;
25391  }
25392  tizen.content.updateBatch([content], successCB, errorCB);
25393  </Code>
25394         </descriptive>
25395         <Type type="void"/>
25396         <ArgumentList>
25397           <Argument name="contents">
25398             <descriptive>
25399                 <description><p>
25400  Array of content to change.
25401                 </p></description>
25402             </descriptive>
25403             <Type type="array">
25404               <Type name="Content"/>
25405             </Type>
25406           </Argument>
25407           <Argument optional="optional" name="successCallback">
25408             <descriptive>
25409                 <description><p>
25410  Function called when attributes have been changed.
25411                 </p></description>
25412             </descriptive>
25413             <Type name="SuccessCallback" nullable="nullable"/>
25414           </Argument>
25415           <Argument optional="optional" name="errorCallback">
25416             <descriptive>
25417                 <description><p>
25418  Function called when an error has occurred.
25419                 </p></description>
25420             </descriptive>
25421             <Type name="ErrorCallback" nullable="nullable"/>
25422           </Argument>
25423         </ArgumentList>
25424         <Raises>
25425           <RaiseException name="WebAPIException">
25426             <descriptive>
25427                 <description><p>
25428  with error type TypeMismatchError, if the input parameter
25429 is not compatible with the expected type for that parameter.
25430                 </p></description>
25431                 <description><p>
25432  with error type SecurityError, if the application does not have the privilege to call this method.
25433                 </p></description>
25434             </descriptive>
25435           </RaiseException>
25436         </Raises>
25437       </Operation>
25438       <Operation name="getDirectories" id="::Content::ContentManager::getDirectories">
25439         <webidl>    void getDirectories(<ref>ContentDirectoryArraySuccessCallback</ref> successCallback,
25440                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
25441         <descriptive>
25442             <brief>
25443  Gets a list of content directory.
25444             </brief>
25445            <description>
25446             <p>
25447 This method returns (via callback) a list of content directory objects. To obtain a list of contents
25448 in a specific directory, use find() method with the directory ID.
25449             </p>
25450             <p>
25451 The errorCallback is launched with this error type:
25452             </p>
25453             <ul>
25454               <li>
25455 UnknownError: In any other error case.              </li>
25456             </ul>
25457            </description>
25458             <version>
25459  2.0
25460             </version>
25461             <Code> // The following example retrieves content directories in the storage.
25462
25463  function errorCB(err) {
25464      console.log( 'The following error occurred: ' +  err.name);
25465  }
25466
25467  function printDirectory(directory, index, directories) {
25468      console.log('directoryURI: ' + directory.directoryURI + ' Title: ' + directory.title);
25469  }
25470  function getDirectoriesCB(directories) {
25471      directories.forEach(printDirectory);
25472  }
25473
25474  tizen.content.getDirectories(getDirectoriesCB, errorCB);
25475  </Code>
25476         </descriptive>
25477         <Type type="void"/>
25478         <ArgumentList>
25479           <Argument name="successCallback">
25480             <descriptive>
25481                 <description><p>
25482  Function called when content directories have been retrieved successfully.
25483                 </p></description>
25484             </descriptive>
25485             <Type name="ContentDirectoryArraySuccessCallback"/>
25486           </Argument>
25487           <Argument optional="optional" name="errorCallback">
25488             <descriptive>
25489                 <description><p>
25490  Function called when an error has occurred.
25491                 </p></description>
25492             </descriptive>
25493             <Type name="ErrorCallback" nullable="nullable"/>
25494           </Argument>
25495         </ArgumentList>
25496         <Raises>
25497           <RaiseException name="WebAPIException">
25498             <descriptive>
25499                 <description><p>
25500  with error type TypeMismatchError, if the input parameter
25501 is not compatible with the expected type for that parameter.
25502                 </p></description>
25503             </descriptive>
25504           </RaiseException>
25505         </Raises>
25506       </Operation>
25507       <Operation name="find" id="::Content::ContentManager::find">
25508         <webidl>    void find(<ref>ContentArraySuccessCallback</ref> successCallback,
25509               optional <ref>ErrorCallback</ref>? errorCallback,
25510               optional <ref>ContentDirectoryId</ref>? directoryId,
25511               optional <ref>AbstractFilter</ref>? filter,
25512               optional <ref>SortMode</ref>? sortMode,
25513               optional unsigned long? count,
25514               optional unsigned long? offset) raises(<ref>WebAPIException</ref>);</webidl>
25515         <descriptive>
25516             <brief>
25517  Finds contents that satisfy the conditions set by a filter.
25518             </brief>
25519            <description>
25520             <p>
25521 This method allows searching based on a supplied filter. For more detail on AbstractFilter, see
25522 <a href="../../org.tizen.web.device.apireference/tizen/tizen.html#::Tizen::AbstractFilter">Tizen</a> module. The filter allows precise searching such
25523 as &quot;return all songs by artist U2, ordered by name&quot;.
25524             </p>
25525             <p>
25526 The errorCallback can be launched with these error types:
25527             </p>
25528             <ul>
25529               <li>
25530 InvalidValuesError: If any of the input parameters contain an invalid value.              </li>
25531               <li>
25532 UnknownError: In any other error case.              </li>
25533             </ul>
25534            </description>
25535             <version>
25536  2.0
25537             </version>
25538             <privilegelevel>
25539  public
25540             </privilegelevel>
25541             <privilege>
25542  http://tizen.org/privilege/content.read
25543             </privilege>
25544             <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.
25545  var count = 100;
25546  var offset = 0;
25547  var sortMode = new tizen.SortMode(&quot;trackNumber&quot;, &quot;ASC&quot;);
25548  var artistFilter = new tizen.AttributeFilter(&quot;artists&quot;, &quot;EXACTLY&quot;, &quot;U2&quot;);
25549  var albumFilter = new tizen.AttributeFilter(&quot;album&quot;, &quot;EXACTLY&quot;, &quot;The Joshua Tree&quot;);
25550  var filter = new tizen.CompositeFilter(&quot;INTERSECTION&quot;, [albumFilter, artistFilter]);
25551  
25552  function errorCB(err) {
25553      console.log( 'The following error occurred: ' +  err.name);
25554  }
25555
25556  function printContent(content, index, contents) {
25557      console.log('Track: ' + content.trackNumber + ' Title: ' + content.title + 'Duration: ' + content.duration + 'URL: ' + content.contentURI + 'MIME: ' + content.mimeType);
25558  }
25559
25560  function findCB(contents) {
25561      console.log('The Joshua Tree by U2:');
25562      contents.forEach(printContent);
25563      // Increase the offset as much as the count and then find content again.
25564      if (contents.length == count) {
25565          offset += count;
25566          tizen.content.find(findCB, errorCB, null, filter, sortMode, count, offset);
25567      }
25568  }
25569
25570  tizen.content.find(findCB, errorCB, null, filter, sortMode, count, offset);
25571
25572  </Code>
25573         </descriptive>
25574         <Type type="void"/>
25575         <ArgumentList>
25576           <Argument name="successCallback">
25577             <descriptive>
25578                 <description><p>
25579  Function called when a content have been retrieved.
25580                 </p></description>
25581             </descriptive>
25582             <Type name="ContentArraySuccessCallback"/>
25583           </Argument>
25584           <Argument optional="optional" name="errorCallback">
25585             <descriptive>
25586                 <description><p>
25587  Function called when an error has occurred.
25588                 </p></description>
25589             </descriptive>
25590             <Type name="ErrorCallback" nullable="nullable"/>
25591           </Argument>
25592           <Argument optional="optional" name="directoryId">
25593             <descriptive>
25594                 <description><p>
25595  Directory ID that is use to select content to retrieve in a specified directory.
25596                 </p></description>
25597             </descriptive>
25598             <Type name="ContentDirectoryId" nullable="nullable"/>
25599           </Argument>
25600           <Argument optional="optional" name="filter">
25601             <descriptive>
25602                 <description><p>
25603  Filter that is used to select content to retrieve.
25604                 </p></description>
25605             </descriptive>
25606             <Type name="AbstractFilter" nullable="nullable"/>
25607           </Argument>
25608           <Argument optional="optional" name="sortMode">
25609             <descriptive>
25610                 <description><p>
25611  Used to determine the sort order in which the content are returned.
25612                 </p></description>
25613             </descriptive>
25614             <Type name="SortMode" nullable="nullable"/>
25615           </Argument>
25616           <Argument optional="optional" name="count">
25617             <descriptive>
25618                 <description><p>
25619  Maximum amount of content to return.
25620                 </p></description>
25621             </descriptive>
25622             <Type type="unsigned long" nullable="nullable"/>
25623           </Argument>
25624           <Argument optional="optional" name="offset">
25625             <descriptive>
25626                 <description><p>
25627  Offset of the result set.
25628                 </p></description>
25629             </descriptive>
25630             <Type type="unsigned long" nullable="nullable"/>
25631           </Argument>
25632         </ArgumentList>
25633         <Raises>
25634           <RaiseException name="WebAPIException">
25635             <descriptive>
25636                 <description><p>
25637  with error type TypeMismatchError, if the input parameter
25638 is not compatible with the expected type for that parameter.
25639                 </p></description>
25640                 <description><p>
25641  with error type SecurityError, if the application does not have the privilege to call this method.
25642                 </p></description>
25643                 <description><p>
25644  with error type NotSupportedError, if this feature is not supported.
25645                 </p></description>
25646             </descriptive>
25647           </RaiseException>
25648         </Raises>
25649       </Operation>
25650       <Operation name="scanFile" id="::Content::ContentManager::scanFile">
25651         <webidl>    void scanFile(DOMString contentURI,
25652                   optional <ref>ContentScanSuccessCallback</ref>? successCallback,
25653                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
25654         <descriptive>
25655             <brief>
25656  Scan a file to create or update a content in the content database.
25657             </brief>
25658            <description>
25659             <p>
25660 When an application creates or updates a content, this method allows scan it 
25661 to insert or update the content in the content database.
25662             </p>
25663            </description>
25664             <version>
25665  2.1
25666             </version>
25667             <privilegelevel>
25668  public
25669             </privilegelevel>
25670             <privilege>
25671  http://tizen.org/privilege/content.write
25672             </privilege>
25673             <Code> // The following example scan 'tizen.jpg' in media directory
25674
25675  function errorCB(err) {
25676      console.log( 'The following error occurred: ' +  err.name);
25677  }
25678
25679  function successCB(path) {
25680      console.log('scanning is completed');
25681  }
25682
25683  var path = &quot;file:///opt/usr/media/tizen.jpg&quot;;
25684  tizen.content.scanFile(path, successCB, errorCB);
25685
25686  </Code>
25687         </descriptive>
25688         <Type type="void"/>
25689         <ArgumentList>
25690           <Argument name="contentURI">
25691             <descriptive>
25692                 <description><p>
25693  The URI of content to scan.
25694                 </p></description>
25695             </descriptive>
25696             <Type type="DOMString"/>
25697           </Argument>
25698           <Argument optional="optional" name="successCallback">
25699             <descriptive>
25700                 <description><p>
25701  Function called when scanning has been completed.
25702                 </p></description>
25703             </descriptive>
25704             <Type name="ContentScanSuccessCallback" nullable="nullable"/>
25705           </Argument>
25706           <Argument optional="optional" name="errorCallback">
25707             <descriptive>
25708                 <description><p>
25709  Function called when an error has occurred.
25710                 </p></description>
25711             </descriptive>
25712             <Type name="ErrorCallback" nullable="nullable"/>
25713           </Argument>
25714         </ArgumentList>
25715         <Raises>
25716           <RaiseException name="WebAPIException">
25717             <descriptive>
25718                 <description><p>
25719  with error type TypeMismatchError, if any input parameter
25720 is not compatible with the expected type for that parameter.
25721                 </p></description>
25722                 <description><p>
25723  with error type InvalidValuesError, if any of the input parameters
25724 contain an invalid value.
25725                 </p></description>
25726                 <description><p>
25727  with error type SecurityError, if the application does not have the privilege to call this method.
25728                 </p></description>
25729                 <description><p>
25730  with error type UnknownError in any other error case.
25731                 </p></description>
25732             </descriptive>
25733           </RaiseException>
25734         </Raises>
25735       </Operation>
25736       <Operation name="setChangeListener" id="::Content::ContentManager::setChangeListener">
25737         <webidl>    void setChangeListener(<ref>ContentChangeCallback</ref> changeCallback) raises(<ref>WebAPIException</ref>);</webidl>
25738         <descriptive>
25739             <brief>
25740  Sets a listener to receive notifications about content changes.
25741             </brief>
25742             <version>
25743  2.1
25744             </version>
25745             <privilegelevel>
25746  public
25747             </privilegelevel>
25748             <privilege>
25749  http://tizen.org/privilege/content.read
25750             </privilege>
25751             <Code> var listener= {
25752     oncontentadded: function(content) {
25753         console.log(content.contentURI + ' content is added');
25754     },
25755     oncontentupdated: function(content) {
25756         console.log(content.contentURI + ' content is updated');
25757     },
25758     oncontentremoved: function(id) {
25759         console.log(id + ' is removed');
25760     }
25761  };
25762
25763  // Registers to be notified when the content changes
25764  tizen.content.setChangeListener(listener);
25765
25766  </Code>
25767         </descriptive>
25768         <Type type="void"/>
25769         <ArgumentList>
25770           <Argument name="changeCallback">
25771             <descriptive>
25772                 <description><p>
25773  A callback to be invoked for receiving content change notification.
25774                 </p></description>
25775             </descriptive>
25776             <Type name="ContentChangeCallback"/>
25777           </Argument>
25778         </ArgumentList>
25779         <Raises>
25780           <RaiseException name="WebAPIException">
25781             <descriptive>
25782                 <description><p>
25783  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
25784                 </p></description>
25785                 <description><p>
25786  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
25787                 </p></description>
25788                 <description><p>
25789  with error type SecurityError, if the application does not have the privilege to call this method.
25790                 </p></description>
25791                 <description><p>
25792  with error type UnknownError, if any other error occurs.
25793                 </p></description>
25794             </descriptive>
25795           </RaiseException>
25796         </Raises>
25797       </Operation>
25798       <Operation name="unsetChangeListener" id="::Content::ContentManager::unsetChangeListener">
25799         <webidl>    void unsetChangeListener() raises(<ref>WebAPIException</ref>);</webidl>
25800         <descriptive>
25801             <brief>
25802  Unsets the listener to unsubscribes from receiving notification for any content changes.
25803             </brief>
25804             <version>
25805  2.1
25806             </version>
25807             <privilegelevel>
25808  public
25809             </privilegelevel>
25810             <privilege>
25811  http://tizen.org/privilege/content.read
25812             </privilege>
25813             <Code> tizen.content.unsetChangeListener();
25814
25815  </Code>
25816         </descriptive>
25817         <Type type="void"/>
25818         <ArgumentList/>
25819         <Raises>
25820           <RaiseException name="WebAPIException">
25821             <descriptive>
25822                 <description><p>
25823  with error type SecurityError, if the application does not have the privilege to call this method.
25824                 </p></description>
25825                 <description><p>
25826  with error type UnknownError if any other error occurs.
25827                 </p></description>
25828             </descriptive>
25829           </RaiseException>
25830         </Raises>
25831       </Operation>
25832     </Interface>
25833     <Interface name="ContentArraySuccessCallback" id="::Content::ContentArraySuccessCallback">
25834       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface ContentArraySuccessCallback {
25835     void onsuccess(<ref>Content</ref>[] contents);
25836   };</webidl>
25837       <descriptive>
25838           <brief>
25839  The callback function used to return a list of content objects.
25840           </brief>
25841           <version>
25842  2.0
25843           </version>
25844       </descriptive>
25845       <ExtendedAttributeList>
25846         <ExtendedAttribute name="Callback" value="FunctionOnly">
25847           <webidl>Callback</webidl>
25848         </ExtendedAttribute>
25849         <ExtendedAttribute name="NoInterfaceObject">
25850           <webidl> NoInterfaceObject</webidl>
25851         </ExtendedAttribute>
25852       </ExtendedAttributeList>
25853       <Operation name="onsuccess" id="::Content::ContentArraySuccessCallback::onsuccess">
25854         <webidl>    void onsuccess(<ref>Content</ref>[] contents);</webidl>
25855         <descriptive>
25856             <brief>
25857  Called when the list of content is retrieved successfully.
25858             </brief>
25859             <version>
25860  2.0
25861             </version>
25862         </descriptive>
25863         <Type type="void"/>
25864         <ArgumentList>
25865           <Argument name="contents">
25866             <descriptive>
25867                 <description><p>
25868  The array of <em>Content </em>objects.
25869                 </p></description>
25870             </descriptive>
25871             <Type type="array">
25872               <Type name="Content"/>
25873             </Type>
25874           </Argument>
25875         </ArgumentList>
25876       </Operation>
25877     </Interface>
25878     <Interface name="ContentDirectoryArraySuccessCallback" id="::Content::ContentDirectoryArraySuccessCallback">
25879       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface ContentDirectoryArraySuccessCallback {
25880     void onsuccess(<ref>ContentDirectory</ref>[] directories);
25881   };</webidl>
25882       <descriptive>
25883           <brief>
25884  The callback function used to return a list of ContentDirectory objects.
25885           </brief>
25886           <version>
25887  2.0
25888           </version>
25889       </descriptive>
25890       <ExtendedAttributeList>
25891         <ExtendedAttribute name="Callback" value="FunctionOnly">
25892           <webidl>Callback</webidl>
25893         </ExtendedAttribute>
25894         <ExtendedAttribute name="NoInterfaceObject">
25895           <webidl> NoInterfaceObject</webidl>
25896         </ExtendedAttribute>
25897       </ExtendedAttributeList>
25898       <Operation name="onsuccess" id="::Content::ContentDirectoryArraySuccessCallback::onsuccess">
25899         <webidl>    void onsuccess(<ref>ContentDirectory</ref>[] directories);</webidl>
25900         <descriptive>
25901             <brief>
25902  Called when the list of directory is retrieved successfully.
25903             </brief>
25904             <version>
25905  2.0
25906             </version>
25907         </descriptive>
25908         <Type type="void"/>
25909         <ArgumentList>
25910           <Argument name="directories">
25911             <descriptive>
25912                 <description><p>
25913  The array of <em>ContentDirectory </em>objects.
25914                 </p></description>
25915             </descriptive>
25916             <Type type="array">
25917               <Type name="ContentDirectory"/>
25918             </Type>
25919           </Argument>
25920         </ArgumentList>
25921       </Operation>
25922     </Interface>
25923     <Interface name="ContentScanSuccessCallback" id="::Content::ContentScanSuccessCallback">
25924       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface ContentScanSuccessCallback {
25925     void onsuccess(DOMString contentURI);
25926   };</webidl>
25927       <descriptive>
25928           <brief>
25929  The callback function used to return a content to scan has been completed.
25930           </brief>
25931           <version>
25932  2.1
25933           </version>
25934       </descriptive>
25935       <ExtendedAttributeList>
25936         <ExtendedAttribute name="Callback" value="FunctionOnly">
25937           <webidl>Callback</webidl>
25938         </ExtendedAttribute>
25939         <ExtendedAttribute name="NoInterfaceObject">
25940           <webidl> NoInterfaceObject</webidl>
25941         </ExtendedAttribute>
25942       </ExtendedAttributeList>
25943       <Operation name="onsuccess" id="::Content::ContentScanSuccessCallback::onsuccess">
25944         <webidl>    void onsuccess(DOMString contentURI);</webidl>
25945         <descriptive>
25946             <brief>
25947  Called when the scanning has been completed.
25948             </brief>
25949             <version>
25950  2.1
25951             </version>
25952         </descriptive>
25953         <Type type="void"/>
25954         <ArgumentList>
25955           <Argument name="contentURI">
25956             <descriptive>
25957                 <description><p>
25958  The URI of <em>Content </em>objects.
25959                 </p></description>
25960             </descriptive>
25961             <Type type="DOMString"/>
25962           </Argument>
25963         </ArgumentList>
25964       </Operation>
25965     </Interface>
25966     <Interface name="ContentChangeCallback" id="::Content::ContentChangeCallback">
25967       <webidl>  [Callback, NoInterfaceObject] interface ContentChangeCallback {
25968     void oncontentadded(<ref>Content</ref> content);
25969
25970     void oncontentupdated(<ref>Content</ref> content);
25971
25972     void oncontentremoved(<ref>ContentId</ref> id);
25973   };</webidl>
25974       <descriptive>
25975           <brief>
25976  This interface specifies a set of methods that are invoked every time a content change occurs.
25977           </brief>
25978           <version>
25979  2.1
25980           </version>
25981       </descriptive>
25982       <ExtendedAttributeList>
25983         <ExtendedAttribute name="Callback">
25984           <webidl>Callback</webidl>
25985         </ExtendedAttribute>
25986         <ExtendedAttribute name="NoInterfaceObject">
25987           <webidl> NoInterfaceObject</webidl>
25988         </ExtendedAttribute>
25989       </ExtendedAttributeList>
25990       <Operation name="oncontentadded" id="::Content::ContentChangeCallback::oncontentadded">
25991         <webidl>    void oncontentadded(<ref>Content</ref> content);</webidl>
25992         <descriptive>
25993             <brief>
25994  Called when content is added.
25995             </brief>
25996             <version>
25997  2.1
25998             </version>
25999         </descriptive>
26000         <Type type="void"/>
26001         <ArgumentList>
26002           <Argument name="content">
26003             <descriptive>
26004                 <description><p>
26005  The content to add.
26006                 </p></description>
26007             </descriptive>
26008             <Type name="Content"/>
26009           </Argument>
26010         </ArgumentList>
26011       </Operation>
26012       <Operation name="oncontentupdated" id="::Content::ContentChangeCallback::oncontentupdated">
26013         <webidl>    void oncontentupdated(<ref>Content</ref> content);</webidl>
26014         <descriptive>
26015             <brief>
26016  Called when content is updated.
26017             </brief>
26018             <version>
26019  2.1
26020             </version>
26021         </descriptive>
26022         <Type type="void"/>
26023         <ArgumentList>
26024           <Argument name="content">
26025             <descriptive>
26026                 <description><p>
26027  The content to update.
26028                 </p></description>
26029             </descriptive>
26030             <Type name="Content"/>
26031           </Argument>
26032         </ArgumentList>
26033       </Operation>
26034       <Operation name="oncontentremoved" id="::Content::ContentChangeCallback::oncontentremoved">
26035         <webidl>    void oncontentremoved(<ref>ContentId</ref> id);</webidl>
26036         <descriptive>
26037             <brief>
26038  Called when content is removed.
26039             </brief>
26040             <version>
26041  2.1
26042             </version>
26043         </descriptive>
26044         <Type type="void"/>
26045         <ArgumentList>
26046           <Argument name="id">
26047             <descriptive>
26048                 <description><p>
26049  The id of content to remove.
26050                 </p></description>
26051             </descriptive>
26052             <Type name="ContentId"/>
26053           </Argument>
26054         </ArgumentList>
26055       </Operation>
26056     </Interface>
26057     <Interface name="ContentDirectory" id="::Content::ContentDirectory">
26058       <webidl>  [NoInterfaceObject] interface ContentDirectory {
26059
26060     readonly attribute <ref>ContentDirectoryId</ref> id;
26061
26062     readonly attribute DOMString directoryURI;
26063
26064     readonly attribute DOMString title;
26065
26066     readonly attribute <ref>ContentDirectoryStorageType</ref> storageType;
26067
26068     readonly attribute Date? modifiedDate;
26069
26070    };</webidl>
26071       <descriptive>
26072           <brief>
26073  This interface that provides access to properties of a content directory.
26074           </brief>
26075           <version>
26076  2.0
26077           </version>
26078       </descriptive>
26079       <ExtendedAttributeList>
26080         <ExtendedAttribute name="NoInterfaceObject">
26081           <webidl>NoInterfaceObject</webidl>
26082         </ExtendedAttribute>
26083       </ExtendedAttributeList>
26084       <Attribute readonly="readonly" name="id" id="::Content::ContentDirectory::id">
26085         <webidl>    readonly attribute <ref>ContentDirectoryId</ref> id;</webidl>
26086         <descriptive>
26087             <brief>
26088  The opaque content directory identifier.
26089             </brief>
26090             <version>
26091  2.0
26092             </version>
26093         </descriptive>
26094         <Type name="ContentDirectoryId"/>
26095       </Attribute>
26096       <Attribute readonly="readonly" name="directoryURI" id="::Content::ContentDirectory::directoryURI">
26097         <webidl>    readonly attribute DOMString directoryURI;</webidl>
26098         <descriptive>
26099             <brief>
26100  The directory path on the device.
26101             </brief>
26102             <version>
26103  2.0
26104             </version>
26105         </descriptive>
26106         <Type type="DOMString"/>
26107       </Attribute>
26108       <Attribute readonly="readonly" name="title" id="::Content::ContentDirectory::title">
26109         <webidl>    readonly attribute DOMString title;</webidl>
26110         <descriptive>
26111             <brief>
26112  The directory name.
26113             </brief>
26114             <version>
26115  2.0
26116             </version>
26117         </descriptive>
26118         <Type type="DOMString"/>
26119       </Attribute>
26120       <Attribute readonly="readonly" name="storageType" id="::Content::ContentDirectory::storageType">
26121         <webidl>    readonly attribute <ref>ContentDirectoryStorageType</ref> storageType;</webidl>
26122         <descriptive>
26123             <brief>
26124  The type of a device storage.
26125             </brief>
26126             <version>
26127  2.0
26128             </version>
26129         </descriptive>
26130         <Type name="ContentDirectoryStorageType"/>
26131       </Attribute>
26132       <Attribute readonly="readonly" name="modifiedDate" id="::Content::ContentDirectory::modifiedDate">
26133         <webidl>    readonly attribute Date? modifiedDate;</webidl>
26134         <descriptive>
26135             <brief>
26136  The last modified date for a directory.
26137             </brief>
26138             <version>
26139  2.0
26140             </version>
26141         </descriptive>
26142         <Type type="Date" nullable="nullable"/>
26143       </Attribute>
26144     </Interface>
26145     <Interface name="Content" id="::Content::Content">
26146       <webidl>  [NoInterfaceObject] interface Content {
26147
26148     readonly attribute DOMString[] editableAttributes;
26149
26150     readonly attribute <ref>ContentId</ref> id;
26151
26152     attribute DOMString name;
26153
26154     readonly attribute <ref>ContentType</ref> type;
26155
26156     readonly attribute DOMString mimeType;
26157
26158     readonly attribute DOMString title;
26159
26160     readonly attribute DOMString contentURI;
26161
26162     readonly attribute DOMString[]? thumbnailURIs;
26163
26164     readonly attribute Date? releaseDate;
26165
26166     readonly attribute Date? modifiedDate;
26167
26168     readonly attribute unsigned long size;
26169
26170     attribute DOMString? description;
26171
26172     attribute unsigned long rating;
26173   };</webidl>
26174       <descriptive>
26175           <brief>
26176  This interface provides access to properties of a content.
26177           </brief>
26178           <version>
26179  2.0
26180           </version>
26181       </descriptive>
26182       <ExtendedAttributeList>
26183         <ExtendedAttribute name="NoInterfaceObject">
26184           <webidl>NoInterfaceObject</webidl>
26185         </ExtendedAttribute>
26186       </ExtendedAttributeList>
26187       <Attribute readonly="readonly" name="editableAttributes" id="::Content::Content::editableAttributes">
26188         <webidl>    readonly attribute DOMString[] editableAttributes;</webidl>
26189         <descriptive>
26190             <brief>
26191  The list of attributes that can be editable to the local backend using update or updateBatch method.
26192             </brief>
26193             <version>
26194  2.0
26195             </version>
26196         </descriptive>
26197         <Type type="array">
26198           <Type type="DOMString"/>
26199         </Type>
26200       </Attribute>
26201       <Attribute readonly="readonly" name="id" id="::Content::Content::id">
26202         <webidl>    readonly attribute <ref>ContentId</ref> id;</webidl>
26203         <descriptive>
26204             <brief>
26205  The opaque content identifier.
26206             </brief>
26207             <version>
26208  2.0
26209             </version>
26210         </descriptive>
26211         <Type name="ContentId"/>
26212       </Attribute>
26213       <Attribute name="name" id="::Content::Content::name">
26214         <webidl>    attribute DOMString name;</webidl>
26215         <descriptive>
26216             <brief>
26217  The content name. The initial value is the file name of the content.
26218             </brief>
26219             <version>
26220  2.1
26221             </version>
26222         </descriptive>
26223         <Type type="DOMString"/>
26224       </Attribute>
26225       <Attribute readonly="readonly" name="type" id="::Content::Content::type">
26226         <webidl>    readonly attribute <ref>ContentType</ref> type;</webidl>
26227         <descriptive>
26228             <brief>
26229  The content type.
26230             </brief>
26231             <version>
26232  2.0
26233             </version>
26234         </descriptive>
26235         <Type name="ContentType"/>
26236       </Attribute>
26237       <Attribute readonly="readonly" name="mimeType" id="::Content::Content::mimeType">
26238         <webidl>    readonly attribute DOMString mimeType;</webidl>
26239         <descriptive>
26240             <brief>
26241  The content MIME type.
26242             </brief>
26243             <version>
26244  2.0
26245             </version>
26246         </descriptive>
26247         <Type type="DOMString"/>
26248       </Attribute>
26249       <Attribute readonly="readonly" name="title" id="::Content::Content::title">
26250         <webidl>    readonly attribute DOMString title;</webidl>
26251         <descriptive>
26252             <brief>
26253  The content title.
26254             </brief>
26255             <version>
26256  2.0
26257             </version>
26258         </descriptive>
26259         <Type type="DOMString"/>
26260       </Attribute>
26261       <Attribute readonly="readonly" name="contentURI" id="::Content::Content::contentURI">
26262         <webidl>    readonly attribute DOMString contentURI;</webidl>
26263         <descriptive>
26264             <brief>
26265  The URI to access the content.
26266             </brief>
26267             <version>
26268  2.0
26269             </version>
26270         </descriptive>
26271         <Type type="DOMString"/>
26272       </Attribute>
26273       <Attribute readonly="readonly" name="thumbnailURIs" id="::Content::Content::thumbnailURIs">
26274         <webidl>    readonly attribute DOMString[]? thumbnailURIs;</webidl>
26275         <descriptive>
26276             <brief>
26277  The array of content thumbnails URIs.
26278             </brief>
26279             <version>
26280  2.0
26281             </version>
26282         </descriptive>
26283         <Type type="array" nullable="nullable">
26284           <Type type="DOMString"/>
26285         </Type>
26286       </Attribute>
26287       <Attribute readonly="readonly" name="releaseDate" id="::Content::Content::releaseDate">
26288         <webidl>    readonly attribute Date? releaseDate;</webidl>
26289         <descriptive>
26290             <brief>
26291  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.
26292             </brief>
26293             <version>
26294  2.0
26295             </version>
26296         </descriptive>
26297         <Type type="Date" nullable="nullable"/>
26298       </Attribute>
26299       <Attribute readonly="readonly" name="modifiedDate" id="::Content::Content::modifiedDate">
26300         <webidl>    readonly attribute Date? modifiedDate;</webidl>
26301         <descriptive>
26302             <brief>
26303  The last modified date for a content.
26304             </brief>
26305             <version>
26306  2.0
26307             </version>
26308         </descriptive>
26309         <Type type="Date" nullable="nullable"/>
26310       </Attribute>
26311       <Attribute readonly="readonly" name="size" id="::Content::Content::size">
26312         <webidl>    readonly attribute unsigned long size;</webidl>
26313         <descriptive>
26314             <brief>
26315  The file size of the content in bytes.
26316             </brief>
26317             <version>
26318  2.0
26319             </version>
26320         </descriptive>
26321         <Type type="unsigned long"/>
26322       </Attribute>
26323       <Attribute name="description" id="::Content::Content::description">
26324         <webidl>    attribute DOMString? description;</webidl>
26325         <descriptive>
26326             <brief>
26327  The content description.
26328             </brief>
26329             <version>
26330  2.0
26331             </version>
26332         </descriptive>
26333         <Type type="DOMString" nullable="nullable"/>
26334       </Attribute>
26335       <Attribute name="rating" id="::Content::Content::rating">
26336         <webidl>    attribute unsigned long rating;</webidl>
26337         <descriptive>
26338             <brief>
26339  The content rating and this value can vary from <var>0 </var>to <var>10</var>.
26340             </brief>
26341             <version>
26342  2.0
26343             </version>
26344         </descriptive>
26345         <Type type="unsigned long"/>
26346       </Attribute>
26347     </Interface>
26348     <Interface name="VideoContent" id="::Content::VideoContent">
26349       <webidl>  [NoInterfaceObject] interface VideoContent : <ref>Content</ref> {
26350
26351     attribute <ref>SimpleCoordinates</ref>? geolocation;
26352
26353     readonly attribute DOMString? album;
26354
26355     readonly attribute DOMString[]? artists;
26356
26357     readonly attribute unsigned long duration;
26358
26359     readonly attribute unsigned long width;
26360
26361     readonly attribute unsigned long height;
26362
26363   };</webidl>
26364       <descriptive>
26365           <brief>
26366  This interface extends a basic <em>Content </em>object with video-specific attributes.
26367           </brief>
26368           <version>
26369  2.0
26370           </version>
26371       </descriptive>
26372       <ExtendedAttributeList>
26373         <ExtendedAttribute name="NoInterfaceObject">
26374           <webidl>NoInterfaceObject</webidl>
26375         </ExtendedAttribute>
26376       </ExtendedAttributeList>
26377       <InterfaceInheritance>
26378         <Name name="Content"/>
26379       </InterfaceInheritance>
26380       <Attribute name="geolocation" id="::Content::VideoContent::geolocation">
26381         <webidl>    attribute <ref>SimpleCoordinates</ref>? geolocation;</webidl>
26382         <descriptive>
26383             <brief>
26384  The geographical location where the video was made.
26385             </brief>
26386             <version>
26387  2.0
26388             </version>
26389         </descriptive>
26390         <Type name="SimpleCoordinates" nullable="nullable"/>
26391       </Attribute>
26392       <Attribute readonly="readonly" name="album" id="::Content::VideoContent::album">
26393         <webidl>    readonly attribute DOMString? album;</webidl>
26394         <descriptive>
26395             <brief>
26396  The album name to which the video belongs.
26397             </brief>
26398             <version>
26399  2.0
26400             </version>
26401         </descriptive>
26402         <Type type="DOMString" nullable="nullable"/>
26403       </Attribute>
26404       <Attribute readonly="readonly" name="artists" id="::Content::VideoContent::artists">
26405         <webidl>    readonly attribute DOMString[]? artists;</webidl>
26406         <descriptive>
26407             <brief>
26408  The list of artists who created the video.
26409             </brief>
26410             <version>
26411  2.0
26412             </version>
26413         </descriptive>
26414         <Type type="array" nullable="nullable">
26415           <Type type="DOMString"/>
26416         </Type>
26417       </Attribute>
26418       <Attribute readonly="readonly" name="duration" id="::Content::VideoContent::duration">
26419         <webidl>    readonly attribute unsigned long duration;</webidl>
26420         <descriptive>
26421             <brief>
26422  The video duration in milliseconds.
26423             </brief>
26424             <version>
26425  2.0
26426             </version>
26427         </descriptive>
26428         <Type type="unsigned long"/>
26429       </Attribute>
26430       <Attribute readonly="readonly" name="width" id="::Content::VideoContent::width">
26431         <webidl>    readonly attribute unsigned long width;</webidl>
26432         <descriptive>
26433             <brief>
26434  The width of a video in pixels.
26435             </brief>
26436             <version>
26437  2.0
26438             </version>
26439         </descriptive>
26440         <Type type="unsigned long"/>
26441       </Attribute>
26442       <Attribute readonly="readonly" name="height" id="::Content::VideoContent::height">
26443         <webidl>    readonly attribute unsigned long height;</webidl>
26444         <descriptive>
26445             <brief>
26446  The height of the video in pixels.
26447             </brief>
26448             <version>
26449  2.0
26450             </version>
26451         </descriptive>
26452         <Type type="unsigned long"/>
26453       </Attribute>
26454     </Interface>
26455     <Interface name="AudioContentLyrics" id="::Content::AudioContentLyrics">
26456       <webidl>  [NoInterfaceObject] interface AudioContentLyrics {
26457
26458     readonly attribute <ref>AudioContentLyricsType</ref> type;
26459
26460     readonly attribute unsigned long[] timestamps;
26461
26462     readonly attribute DOMString[] texts;
26463   };</webidl>
26464       <descriptive>
26465           <brief>
26466  This interface provides lyrics for music.
26467           </brief>
26468           <version>
26469  2.0
26470           </version>
26471       </descriptive>
26472       <ExtendedAttributeList>
26473         <ExtendedAttribute name="NoInterfaceObject">
26474           <webidl>NoInterfaceObject</webidl>
26475         </ExtendedAttribute>
26476       </ExtendedAttributeList>
26477       <Attribute readonly="readonly" name="type" id="::Content::AudioContentLyrics::type">
26478         <webidl>    readonly attribute <ref>AudioContentLyricsType</ref> type;</webidl>
26479         <descriptive>
26480             <brief>
26481  The type of lyrics, that is, whether they are synchronized with the music or not.
26482             </brief>
26483             <version>
26484  2.0
26485             </version>
26486         </descriptive>
26487         <Type name="AudioContentLyricsType"/>
26488       </Attribute>
26489       <Attribute readonly="readonly" name="timestamps" id="::Content::AudioContentLyrics::timestamps">
26490         <webidl>    readonly attribute unsigned long[] timestamps;</webidl>
26491         <descriptive>
26492             <brief>
26493  The array of timestamps in milliseconds for lyrics.
26494             </brief>
26495            <description>
26496             <p>
26497 If the lyrics are not synchronized (if there is no time information for the lyrics) the array is undefined.
26498             </p>
26499            </description>
26500             <version>
26501  2.0
26502             </version>
26503         </descriptive>
26504         <Type type="array">
26505           <Type type="unsigned long"/>
26506         </Type>
26507       </Attribute>
26508       <Attribute readonly="readonly" name="texts" id="::Content::AudioContentLyrics::texts">
26509         <webidl>    readonly attribute DOMString[] texts;</webidl>
26510         <descriptive>
26511             <brief>
26512  The array of lyric snippets.
26513             </brief>
26514            <description>
26515             <p>
26516 If the lyrics are not synchronized, the array has only one member with full lyrics.
26517             </p>
26518            </description>
26519             <version>
26520  2.0
26521             </version>
26522         </descriptive>
26523         <Type type="array">
26524           <Type type="DOMString"/>
26525         </Type>
26526       </Attribute>
26527     </Interface>
26528     <Interface name="AudioContent" id="::Content::AudioContent">
26529       <webidl>  [NoInterfaceObject] interface AudioContent : <ref>Content</ref> {
26530
26531     readonly attribute DOMString? album;
26532
26533     readonly attribute DOMString[]? genres;
26534
26535     readonly attribute DOMString[]? artists;
26536
26537     readonly attribute DOMString[]? composers;
26538
26539     readonly attribute <ref>AudioContentLyrics</ref>? lyrics;
26540
26541     readonly attribute DOMString? copyright;
26542
26543     readonly attribute unsigned long bitrate;
26544
26545     readonly attribute unsigned short? trackNumber;
26546
26547     readonly attribute unsigned long duration;
26548
26549   };</webidl>
26550       <descriptive>
26551           <brief>
26552  This interface extends a basic <em>Content </em>object with audio-specific attributes.
26553           </brief>
26554           <version>
26555  2.0
26556           </version>
26557       </descriptive>
26558       <ExtendedAttributeList>
26559         <ExtendedAttribute name="NoInterfaceObject">
26560           <webidl>NoInterfaceObject</webidl>
26561         </ExtendedAttribute>
26562       </ExtendedAttributeList>
26563       <InterfaceInheritance>
26564         <Name name="Content"/>
26565       </InterfaceInheritance>
26566       <Attribute readonly="readonly" name="album" id="::Content::AudioContent::album">
26567         <webidl>    readonly attribute DOMString? album;</webidl>
26568         <descriptive>
26569             <brief>
26570  The album name to which the audio belongs.
26571             </brief>
26572             <version>
26573  2.0
26574             </version>
26575         </descriptive>
26576         <Type type="DOMString" nullable="nullable"/>
26577       </Attribute>
26578       <Attribute readonly="readonly" name="genres" id="::Content::AudioContent::genres">
26579         <webidl>    readonly attribute DOMString[]? genres;</webidl>
26580         <descriptive>
26581             <brief>
26582  The list of genres to which the audio belongs.
26583             </brief>
26584             <version>
26585  2.0
26586             </version>
26587         </descriptive>
26588         <Type type="array" nullable="nullable">
26589           <Type type="DOMString"/>
26590         </Type>
26591       </Attribute>
26592       <Attribute readonly="readonly" name="artists" id="::Content::AudioContent::artists">
26593         <webidl>    readonly attribute DOMString[]? artists;</webidl>
26594         <descriptive>
26595             <brief>
26596  The list of artists who created the audio.
26597             </brief>
26598             <version>
26599  2.0
26600             </version>
26601         </descriptive>
26602         <Type type="array" nullable="nullable">
26603           <Type type="DOMString"/>
26604         </Type>
26605       </Attribute>
26606       <Attribute readonly="readonly" name="composers" id="::Content::AudioContent::composers">
26607         <webidl>    readonly attribute DOMString[]? composers;</webidl>
26608         <descriptive>
26609             <brief>
26610  The list of composers for the music.
26611             </brief>
26612             <version>
26613  2.0
26614             </version>
26615         </descriptive>
26616         <Type type="array" nullable="nullable">
26617           <Type type="DOMString"/>
26618         </Type>
26619       </Attribute>
26620       <Attribute readonly="readonly" name="lyrics" id="::Content::AudioContent::lyrics">
26621         <webidl>    readonly attribute <ref>AudioContentLyrics</ref>? lyrics;</webidl>
26622         <descriptive>
26623             <brief>
26624  The lyrics of a song in an audio file.
26625             </brief>
26626             <version>
26627  2.0
26628             </version>
26629         </descriptive>
26630         <Type name="AudioContentLyrics" nullable="nullable"/>
26631       </Attribute>
26632       <Attribute readonly="readonly" name="copyright" id="::Content::AudioContent::copyright">
26633         <webidl>    readonly attribute DOMString? copyright;</webidl>
26634         <descriptive>
26635             <brief>
26636  The copyright information.
26637             </brief>
26638             <version>
26639  2.0
26640             </version>
26641         </descriptive>
26642         <Type type="DOMString" nullable="nullable"/>
26643       </Attribute>
26644       <Attribute readonly="readonly" name="bitrate" id="::Content::AudioContent::bitrate">
26645         <webidl>    readonly attribute unsigned long bitrate;</webidl>
26646         <descriptive>
26647             <brief>
26648  The audio bitrate in bits per second. By default, this value is 0.
26649             </brief>
26650             <version>
26651  2.0
26652             </version>
26653         </descriptive>
26654         <Type type="unsigned long"/>
26655       </Attribute>
26656       <Attribute readonly="readonly" name="trackNumber" id="::Content::AudioContent::trackNumber">
26657         <webidl>    readonly attribute unsigned short? trackNumber;</webidl>
26658         <descriptive>
26659             <brief>
26660  The track number if the audio belongs to an album.
26661             </brief>
26662             <version>
26663  2.0
26664             </version>
26665         </descriptive>
26666         <Type type="unsigned short" nullable="nullable"/>
26667       </Attribute>
26668       <Attribute readonly="readonly" name="duration" id="::Content::AudioContent::duration">
26669         <webidl>    readonly attribute unsigned long duration;</webidl>
26670         <descriptive>
26671             <brief>
26672  The audio duration in milliseconds.
26673             </brief>
26674             <version>
26675  2.0
26676             </version>
26677         </descriptive>
26678         <Type type="unsigned long"/>
26679       </Attribute>
26680     </Interface>
26681     <Interface name="ImageContent" id="::Content::ImageContent">
26682       <webidl>  [NoInterfaceObject] interface ImageContent : <ref>Content</ref> {
26683
26684     attribute <ref>SimpleCoordinates</ref>? geolocation;
26685
26686     readonly attribute unsigned long width;
26687
26688     readonly attribute unsigned long height;
26689
26690     attribute <ref>ImageContentOrientation</ref> orientation;
26691
26692   };</webidl>
26693       <descriptive>
26694           <brief>
26695  This interface extends a basic <em>Content </em>object with image-specific attributes.
26696           </brief>
26697           <version>
26698  2.0
26699           </version>
26700       </descriptive>
26701       <ExtendedAttributeList>
26702         <ExtendedAttribute name="NoInterfaceObject">
26703           <webidl>NoInterfaceObject</webidl>
26704         </ExtendedAttribute>
26705       </ExtendedAttributeList>
26706       <InterfaceInheritance>
26707         <Name name="Content"/>
26708       </InterfaceInheritance>
26709       <Attribute name="geolocation" id="::Content::ImageContent::geolocation">
26710         <webidl>    attribute <ref>SimpleCoordinates</ref>? geolocation;</webidl>
26711         <descriptive>
26712             <brief>
26713  The geographical location where the image has been made.
26714             </brief>
26715             <version>
26716  2.0
26717             </version>
26718         </descriptive>
26719         <Type name="SimpleCoordinates" nullable="nullable"/>
26720       </Attribute>
26721       <Attribute readonly="readonly" name="width" id="::Content::ImageContent::width">
26722         <webidl>    readonly attribute unsigned long width;</webidl>
26723         <descriptive>
26724             <brief>
26725  The width of an image in pixels.
26726             </brief>
26727             <version>
26728  2.0
26729             </version>
26730         </descriptive>
26731         <Type type="unsigned long"/>
26732       </Attribute>
26733       <Attribute readonly="readonly" name="height" id="::Content::ImageContent::height">
26734         <webidl>    readonly attribute unsigned long height;</webidl>
26735         <descriptive>
26736             <brief>
26737  The height of an image in pixels.
26738             </brief>
26739             <version>
26740  2.0
26741             </version>
26742         </descriptive>
26743         <Type type="unsigned long"/>
26744       </Attribute>
26745       <Attribute name="orientation" id="::Content::ImageContent::orientation">
26746         <webidl>    attribute <ref>ImageContentOrientation</ref> orientation;</webidl>
26747         <descriptive>
26748             <brief>
26749  The image orientation.
26750             </brief>
26751             <version>
26752  2.0
26753             </version>
26754         </descriptive>
26755         <Type name="ImageContentOrientation"/>
26756       </Attribute>
26757     </Interface>
26758   </Module>
26759   <Module name="DataControl" id="::DataControl">
26760     <webidl>module DataControl {
26761     enum DataType { &quot;MAP&quot;, &quot;SQL&quot;};
26762  
26763     [NoInterfaceObject] interface DataControlManagerObject {
26764         readonly attribute <ref>DataControlManager</ref> datacontrol;
26765     };
26766     <ref>Tizen</ref> implements <ref>DataControlManagerObject</ref>;
26767
26768     
26769     [NoInterfaceObject] interface DataControlManager {
26770         <ref>DataControlConsumerObject</ref> getDataControlConsumer(DOMString providerId, DOMString dataId, <ref>DataType</ref> type) raises(<ref>WebAPIException</ref>);
26771     };
26772
26773      
26774     [NoInterfaceObject] interface DataControlConsumerObject {
26775         readonly attribute <ref>DataType</ref> type;
26776         readonly attribute DOMString providerId;
26777         readonly attribute DOMString dataId;
26778     };
26779
26780          
26781     [NoInterfaceObject] interface SQLDataControlConsumer : <ref>DataControlConsumerObject</ref> {
26782         void insert(unsigned long reqId, <ref>RowData</ref> insertionData, 
26783                     optional <ref>DataControlInsertSuccessCallback</ref>? successCallback, 
26784                     optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
26785
26786         void update(unsigned long reqId, <ref>RowData</ref> updateData, DOMString where, 
26787                     optional <ref>DataControlSuccessCallback</ref>? successCallback, 
26788                     optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);        
26789
26790         void remove(unsigned long reqId, DOMString where, 
26791                     optional <ref>DataControlSuccessCallback</ref>? successCallback, 
26792                     optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
26793
26794      
26795         void select(unsigned long reqId, DOMString[] columns, DOMString where,
26796                     <ref>DataControlSelectSuccessCallback</ref> successCallback, optional <ref>DataControlErrorCallback</ref>? errorCallback, 
26797                     optional unsigned long? page, optional unsigned long? maxNumberPerPage) raises(<ref>WebAPIException</ref>);
26798     };
26799
26800     [NoInterfaceObject] interface MappedDataControlConsumer : <ref>DataControlConsumerObject</ref> {
26801         void addValue(unsigned long reqId, DOMString key, DOMString value, 
26802                      optional <ref>DataControlSuccessCallback</ref>? successCallback, 
26803                      optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
26804
26805          void removeValue(unsigned long reqId, DOMString key, DOMString value, 
26806                           <ref>DataControlSuccessCallback</ref> successCallback, 
26807                           optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
26808
26809          void getValue(unsigned long reqId, DOMString key, 
26810                        <ref>DataControlGetValueSuccessCallback</ref> successCallback, 
26811                        optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
26812
26813          void updateValue(unsigned long reqId, DOMString key, DOMString oldValue, DOMString newValue, 
26814                           <ref>DataControlSuccessCallback</ref> successCallback, 
26815                           optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
26816     };
26817
26818          
26819     [Callback=FunctionOnly, NoInterfaceObject] interface DataControlSuccessCallback {
26820         void onsuccess(unsigned long reqId);
26821     };
26822
26823    
26824     [Callback=FunctionOnly, NoInterfaceObject] interface DataControlErrorCallback {
26825         void onerror(unsigned long reqId, <ref>WebAPIError</ref> error);
26826     };
26827
26828          
26829     [Callback=FunctionOnly, NoInterfaceObject] interface DataControlInsertSuccessCallback {
26830         void onsuccess(unsigned long reqId, long insertRowId);
26831     };
26832
26833
26834          
26835     [Callback=FunctionOnly, NoInterfaceObject] interface DataControlSelectSuccessCallback {
26836         void onsuccess(<ref>RowData</ref>[] rows, unsigned long reqId);
26837     };
26838
26839          
26840     [Callback=FunctionOnly, NoInterfaceObject] interface DataControlGetValueSuccessCallback {
26841         void onsuccess(DOMString[] values, unsigned long reqid);
26842     };
26843     
26844      
26845     dictionary RowData {
26846         DOMString[] columns;
26847         DOMString[] values;
26848     };
26849 };</webidl>
26850     <descriptive>
26851         <brief>
26852  This specification defines a DataControl API for applications.
26853         </brief>
26854        <description>
26855         <p>
26856 The DataControl functionality provides a way to access specific data that is exported by other applications.
26857         </p>
26858         <p>
26859 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.
26860         </p>
26861        </description>
26862         <version>
26863  2.1
26864         </version>
26865     </descriptive>
26866     <Enum name="DataType" id="::DataControl::DataType">
26867       <webidl>    enum DataType { &quot;MAP&quot;, &quot;SQL&quot;};</webidl>
26868       <descriptive>
26869           <brief>
26870  Data types.
26871           </brief>
26872           <version>
26873  2.1
26874           </version>
26875       </descriptive>
26876       <EnumValue stringvalue="MAP">
26877         <webidl> &quot;MAP</webidl>
26878       </EnumValue>
26879       <EnumValue stringvalue="SQL">
26880         <webidl> &quot;SQL</webidl>
26881       </EnumValue>
26882     </Enum>
26883     <Interface name="DataControlManagerObject" id="::DataControl::DataControlManagerObject">
26884       <webidl>    [NoInterfaceObject] interface DataControlManagerObject {
26885         readonly attribute <ref>DataControlManager</ref> datacontrol;
26886     };</webidl>
26887       <descriptive>
26888           <brief>
26889  Defines what is instantiated in the <em>Tizen</em> object.
26890           </brief>
26891          <description>
26892           <p>
26893 There is a <em>tizen.datacontrol</em> object that allows access to the
26894 DataControl API.
26895           </p>
26896          </description>
26897           <version>
26898  2.1
26899           </version>
26900       </descriptive>
26901       <ExtendedAttributeList>
26902         <ExtendedAttribute name="NoInterfaceObject">
26903           <webidl>NoInterfaceObject</webidl>
26904         </ExtendedAttribute>
26905       </ExtendedAttributeList>
26906       <Attribute readonly="readonly" name="datacontrol" id="::DataControl::DataControlManagerObject::datacontrol">
26907         <webidl>        readonly attribute <ref>DataControlManager</ref> datacontrol;</webidl>
26908         <Type name="DataControlManager"/>
26909       </Attribute>
26910     </Interface>
26911     <Implements name1="Tizen" name2="DataControlManagerObject">
26912       <webidl>    <ref>Tizen</ref> implements <ref>DataControlManagerObject</ref>;</webidl>
26913     </Implements>
26914     <Interface name="DataControlManager" id="::DataControl::DataControlManager">
26915       <webidl>    [NoInterfaceObject] interface DataControlManager {
26916         <ref>DataControlConsumerObject</ref> getDataControlConsumer(DOMString providerId, DOMString dataId, <ref>DataType</ref> type) raises(<ref>WebAPIException</ref>);
26917     };</webidl>
26918       <descriptive>
26919           <brief>
26920  This interface provides access to the <em>DataControlManager </em>object.
26921           </brief>
26922           <version>
26923  2.1
26924           </version>
26925       </descriptive>
26926       <ExtendedAttributeList>
26927         <ExtendedAttribute name="NoInterfaceObject">
26928           <webidl>NoInterfaceObject</webidl>
26929         </ExtendedAttribute>
26930       </ExtendedAttributeList>
26931       <Operation name="getDataControlConsumer" id="::DataControl::DataControlManager::getDataControlConsumer">
26932         <webidl>        <ref>DataControlConsumerObject</ref> getDataControlConsumer(DOMString providerId, DOMString dataId, <ref>DataType</ref> type) raises(<ref>WebAPIException</ref>);</webidl>
26933         <descriptive>
26934             <brief>
26935  Gets <em>DataControlConsumerObject</em> with a given DataType.
26936             </brief>
26937             <version>
26938  2.1
26939             </version>
26940             <privilegelevel>
26941  partner
26942             </privilegelevel>
26943             <privilege>
26944  http://tizen.org/privilege/datacontrol.consumer
26945             </privilege>
26946             <Code> //The data provider, a native application, should be pre-installed and launched.
26947  //The same provider id should be defined for the use of this API between a native application(provider) and a web application(consumer).
26948  //In this example, DictionaryDataControlProvider native sample application is used as a data control provider.
26949
26950  //Gets SQL type DataControlConsumerObject
26951  try {
26952      var globalSQLConsumer = tizen.datacontrol.getDataControlConsumer(
26953      &quot;http://tizen.org/datacontrol/provider/DictionaryDataControlProvider&quot;, &quot;Dictionary&quot;, &quot;SQL&quot;);
26954  } catch (err) {
26955      console.log (err.name +&quot;: &quot; + err.message);
26956  }
26957  // Gets MAP type DataControlConsumerObject
26958  try {
26959       globalMappedConsumer = tizen.datacontrol.getDataControlConsumer(
26960       &quot;http://tizen.org/datacontrol/provider/DictionaryDataControlProvider&quot;, &quot;Dictionary&quot;, &quot;MAP&quot;);
26961  } catch (err) {
26962       console.log (err.name +&quot;: &quot; + err.message);
26963  }
26964  </Code>
26965         </descriptive>
26966         <Type name="DataControlConsumerObject">
26967           <descriptive>
26968               <description><p>
26969  DataControlConsumerObject The local <em>DataControlConsumerObject</em>.
26970               </p></description>
26971           </descriptive>
26972         </Type>
26973         <ArgumentList>
26974           <Argument name="providerId">
26975             <descriptive>
26976                 <description><p>
26977  A provider ID to use and it should be shared between DataControl provider and DataControl consumer.
26978                 </p></description>
26979             </descriptive>
26980             <Type type="DOMString"/>
26981           </Argument>
26982           <Argument name="dataId">
26983             <descriptive>
26984                 <description><p>
26985  A string for identifying a specific data.
26986                 </p></description>
26987             </descriptive>
26988             <Type type="DOMString"/>
26989           </Argument>
26990           <Argument name="type">
26991             <descriptive>
26992                 <description><p>
26993  The DataType to use.
26994                 </p></description>
26995             </descriptive>
26996             <Type name="DataType"/>
26997           </Argument>
26998         </ArgumentList>
26999         <Raises>
27000           <RaiseException name="WebAPIException">
27001             <descriptive>
27002                 <description><p>
27003  with error type TypeMismatchError, if parameter type is mismatched.  
27004                 </p></description>
27005                 <description><p>
27006  with error type SecurityError, if the application does not have the privilege to call this method.
27007                 </p></description>
27008                 <description><p>
27009  with error type UnknownError, if any other error occurs. 
27010                 </p></description>
27011             </descriptive>
27012           </RaiseException>
27013         </Raises>
27014       </Operation>
27015     </Interface>
27016     <Interface name="DataControlConsumerObject" id="::DataControl::DataControlConsumerObject">
27017       <webidl>    [NoInterfaceObject] interface DataControlConsumerObject {
27018         readonly attribute <ref>DataType</ref> type;
27019         readonly attribute DOMString providerId;
27020         readonly attribute DOMString dataId;
27021     };</webidl>
27022       <descriptive>
27023           <brief>
27024  This interface provides common attributes for other derived DataControlCunsumerObject.
27025           </brief>
27026           <version>
27027  2.1
27028           </version>
27029       </descriptive>
27030       <ExtendedAttributeList>
27031         <ExtendedAttribute name="NoInterfaceObject">
27032           <webidl>NoInterfaceObject</webidl>
27033         </ExtendedAttribute>
27034       </ExtendedAttributeList>
27035       <Attribute readonly="readonly" name="type" id="::DataControl::DataControlConsumerObject::type">
27036         <webidl>        readonly attribute <ref>DataType</ref> type;</webidl>
27037         <descriptive>
27038             <brief>
27039  An attribute to store the DataType.
27040             </brief>
27041             <version>
27042  2.1
27043             </version>
27044         </descriptive>
27045         <Type name="DataType"/>
27046       </Attribute>
27047       <Attribute readonly="readonly" name="providerId" id="::DataControl::DataControlConsumerObject::providerId">
27048         <webidl>        readonly attribute DOMString providerId;</webidl>
27049         <descriptive>
27050             <brief>
27051  An attribute to hold a provider identifier of the application whom it shares the DataControl with.
27052 This attribute should be known to users who want to interact with application to provide.
27053             </brief>
27054             <version>
27055  2.1
27056             </version>
27057         </descriptive>
27058         <Type type="DOMString"/>
27059       </Attribute>
27060       <Attribute readonly="readonly" name="dataId" id="::DataControl::DataControlConsumerObject::dataId">
27061         <webidl>        readonly attribute DOMString dataId;</webidl>
27062         <descriptive>
27063             <brief>
27064  The dataId identifies specific data, usually a database table to process(insert, delete, update).
27065 The string consists of one or more components, separated by a slash('/').
27066             </brief>
27067             <version>
27068  2.1
27069             </version>
27070         </descriptive>
27071         <Type type="DOMString"/>
27072       </Attribute>
27073     </Interface>
27074     <Interface name="SQLDataControlConsumer" id="::DataControl::SQLDataControlConsumer">
27075       <webidl>    [NoInterfaceObject] interface SQLDataControlConsumer : <ref>DataControlConsumerObject</ref> {
27076         void insert(unsigned long reqId, <ref>RowData</ref> insertionData, 
27077                     optional <ref>DataControlInsertSuccessCallback</ref>? successCallback, 
27078                     optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
27079
27080         void update(unsigned long reqId, <ref>RowData</ref> updateData, DOMString where, 
27081                     optional <ref>DataControlSuccessCallback</ref>? successCallback, 
27082                     optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);        
27083
27084         void remove(unsigned long reqId, DOMString where, 
27085                     optional <ref>DataControlSuccessCallback</ref>? successCallback, 
27086                     optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
27087
27088      
27089         void select(unsigned long reqId, DOMString[] columns, DOMString where,
27090                     <ref>DataControlSelectSuccessCallback</ref> successCallback, optional <ref>DataControlErrorCallback</ref>? errorCallback, 
27091                     optional unsigned long? page, optional unsigned long? maxNumberPerPage) raises(<ref>WebAPIException</ref>);
27092     };</webidl>
27093       <descriptive>
27094           <brief>
27095  This interface defines SQL data type operatiors. 
27096           </brief>
27097           <version>
27098  2.1
27099           </version>
27100       </descriptive>
27101       <ExtendedAttributeList>
27102         <ExtendedAttribute name="NoInterfaceObject">
27103           <webidl>NoInterfaceObject</webidl>
27104         </ExtendedAttribute>
27105       </ExtendedAttributeList>
27106       <InterfaceInheritance>
27107         <Name name="DataControlConsumerObject"/>
27108       </InterfaceInheritance>
27109       <Operation name="insert" id="::DataControl::SQLDataControlConsumer::insert">
27110         <webidl>        void insert(unsigned long reqId, <ref>RowData</ref> insertionData, 
27111                     optional <ref>DataControlInsertSuccessCallback</ref>? successCallback, 
27112                     optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
27113         <descriptive>
27114             <brief>
27115  Inserts new rows into a table owned by an SQL-type data control provider.
27116             </brief>
27117             <version>
27118  2.1
27119             </version>
27120             <privilegelevel>
27121  partner
27122             </privilegelevel>
27123             <privilege>
27124  http://tizen.org/privilege/datacontrol.consumer
27125             </privilege>
27126             <Code> function successcb(id)
27127  {
27128      console.log(&quot;ok : reqid &quot;+ id);
27129  }
27130  
27131  function errorcb(id, error)
27132  {
27133      console.log(&quot;error id : &quot; + id + &quot;, error msg : &quot; + error.message);
27134  }
27135  
27136  try {
27137      var rowData = { 
27138          columns : [&quot;WORD&quot;, &quot;WORD_DESC&quot;] ,
27139          values  : [&quot;'tizen1'&quot;, &quot;'tizen2'&quot;]
27140      };
27141      // Defines globalReqId before
27142      // Increases globalReqId for uniqueness
27143      globalReqId++;
27144      globalSQLConsumer.insert(globalReqId, rowData, 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="insertionData">
27161             <descriptive>
27162                 <description><p>
27163  The data on columns and values to insert.
27164                 </p></description>
27165             </descriptive>
27166             <Type name="RowData"/>
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="DataControlInsertSuccessCallback" 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 has been 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="update" id="::DataControl::SQLDataControlConsumer::update">
27208         <webidl>        void update(unsigned long reqId, <ref>RowData</ref> updateData, DOMString where, 
27209                     optional <ref>DataControlSuccessCallback</ref>? successCallback, 
27210                     optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
27211         <descriptive>
27212             <brief>
27213  Updates values of 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 successcb(id)
27225  {
27226      console.log(&quot;ok : reqid &quot; + id);
27227  }
27228  
27229  function errorcb(id, error)
27230  {
27231      console.log(&quot;error id : &quot; + id + &quot;, error msg : &quot; + error.message);
27232  }
27233  
27234  try {
27235      var rowData = { 
27236          columns : [&quot;WORD&quot;, &quot;WORD_DESC&quot;] ,
27237          values  : [&quot;'tizen1'&quot;, &quot;'samsung platform!'&quot;]
27238      };
27239      // Defines globalReqId before
27240      // Increases globalReqId for uniqueness
27241      globalReqId++;
27242      globalSQLConsumer.update(globalReqId, rowData, &quot;WORD='tizen1'&quot;, successcb, errorcb);
27243  } catch (err) {
27244      console.log (err.name +&quot;: &quot; + err.message);
27245  }
27246  </Code>
27247         </descriptive>
27248         <Type type="void"/>
27249         <ArgumentList>
27250           <Argument name="reqId">
27251             <descriptive>
27252                 <description><p>
27253  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.
27254                 </p></description>
27255             </descriptive>
27256             <Type type="unsigned long"/>
27257           </Argument>
27258           <Argument name="updateData">
27259             <descriptive>
27260                 <description><p>
27261  The data on columns and values to update.
27262                 </p></description>
27263             </descriptive>
27264             <Type name="RowData"/>
27265           </Argument>
27266           <Argument name="where">
27267             <descriptive>
27268                 <description><p>
27269  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>.
27270                 </p></description>
27271             </descriptive>
27272             <Type type="DOMString"/>
27273           </Argument>
27274           <Argument optional="optional" name="successCallback">
27275             <descriptive>
27276                 <description><p>
27277  The method to invoke when the asynchronous call completes successfully.
27278                 </p></description>
27279             </descriptive>
27280             <Type name="DataControlSuccessCallback" nullable="nullable"/>
27281           </Argument>
27282           <Argument optional="optional" name="errorCallback">
27283             <descriptive>
27284                 <description><p>
27285  The method to invoke when an error occurs.
27286                 </p></description>
27287             </descriptive>
27288             <Type name="DataControlErrorCallback" nullable="nullable"/>
27289           </Argument>
27290         </ArgumentList>
27291         <Raises>
27292           <RaiseException name="WebAPIException">
27293             <descriptive>
27294                 <description><p>
27295  with error type TypeMismatchError, if parameter type is not compatible with the expected type for that parameter.
27296                 </p></description>
27297                 <description><p>
27298  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.
27299                 </p></description>
27300                 <description><p>
27301  with error type IOError, if a DB operation has failed.
27302                 </p></description>
27303                 <description><p>
27304  with error type SecurityError, if the application does not have the privilege to call this method.
27305                 </p></description>
27306                 <description><p>
27307  with error type UnknownError, if any other error occurs.
27308                 </p></description>
27309             </descriptive>
27310           </RaiseException>
27311         </Raises>
27312       </Operation>
27313       <Operation name="remove" id="::DataControl::SQLDataControlConsumer::remove">
27314         <webidl>        void remove(unsigned long reqId, DOMString where, 
27315                     optional <ref>DataControlSuccessCallback</ref>? successCallback, 
27316                     optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
27317         <descriptive>
27318             <brief>
27319  Delete rows from a table that is owned by an SQL-type data control provider. 
27320             </brief>
27321             <version>
27322  2.1
27323             </version>
27324             <privilegelevel>
27325  partner
27326             </privilegelevel>
27327             <privilege>
27328  http://tizen.org/privilege/datacontrol.consumer
27329             </privilege>
27330             <Code> function successcb(id)
27331  {
27332      console.log(&quot;ok : reqid &quot; + id);
27333  }
27334  
27335  function errorcb(id, error)
27336  {
27337      console.log(&quot;error id : &quot; + id + &quot;, error msg : &quot; + error.message);
27338  }
27339  
27340  try {
27341      // Defines globalReqId before
27342      // Increases globalReqId for uniqueness
27343      globalReqId++;
27344      globalSQLConsumer.remove(globalReqId, &quot;WORD='tizen1'&quot;, successcb, errorcb);
27345  } catch (err) {
27346      console.log (err.name +&quot;: &quot; + err.message);
27347  }
27348  </Code>
27349         </descriptive>
27350         <Type type="void"/>
27351         <ArgumentList>
27352           <Argument name="reqId">
27353             <descriptive>
27354                 <description><p>
27355  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.
27356                 </p></description>
27357             </descriptive>
27358             <Type type="unsigned long"/>
27359           </Argument>
27360           <Argument name="where">
27361             <descriptive>
27362                 <description><p>
27363  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>.
27364                 </p></description>
27365             </descriptive>
27366             <Type type="DOMString"/>
27367           </Argument>
27368           <Argument optional="optional" name="successCallback">
27369             <descriptive>
27370                 <description><p>
27371  The method to invoke when the asynchronous call completes successfully.
27372                 </p></description>
27373             </descriptive>
27374             <Type name="DataControlSuccessCallback" nullable="nullable"/>
27375           </Argument>
27376           <Argument optional="optional" name="errorCallback">
27377             <descriptive>
27378                 <description><p>
27379  The method to invoke when an error occurs.
27380                 </p></description>
27381             </descriptive>
27382             <Type name="DataControlErrorCallback" nullable="nullable"/>
27383           </Argument>
27384         </ArgumentList>
27385         <Raises>
27386           <RaiseException name="WebAPIException">
27387             <descriptive>
27388                 <description><p>
27389  with error type TypeMismatchError, if parameter type is not compatible with the expected type for that parameter.
27390                 </p></description>
27391                 <description><p>
27392  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.
27393                 </p></description>
27394                 <description><p>
27395  with error type IOError, if a DB operation has failed.
27396                 </p></description>
27397                 <description><p>
27398  with error type SecurityError, if the application does not have the privilege to call this method.
27399                 </p></description>
27400                 <description><p>
27401  with error type UnknownError, if any other error occurs.
27402                 </p></description>
27403             </descriptive>
27404           </RaiseException>
27405         </Raises>
27406       </Operation>
27407       <Operation name="select" id="::DataControl::SQLDataControlConsumer::select">
27408         <webidl>        void select(unsigned long reqId, DOMString[] columns, DOMString where,
27409                     <ref>DataControlSelectSuccessCallback</ref> successCallback, optional <ref>DataControlErrorCallback</ref>? errorCallback, 
27410                     optional unsigned long? page, optional unsigned long? maxNumberPerPage) raises(<ref>WebAPIException</ref>);</webidl>
27411         <descriptive>
27412             <brief>
27413  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. 
27414             </brief>
27415             <version>
27416  2.1
27417             </version>
27418             <privilegelevel>
27419  partner
27420             </privilegelevel>
27421             <privilege>
27422  http://tizen.org/privilege/datacontrol.consumer
27423             </privilege>
27424             <Code> function getValueSuccessCB(result, id)
27425  {
27426      var length = result.length;
27427      for (var i = 0; i &#60; length; i++)
27428      {
27429          var j = 0;
27430          for (j = 0; j &#60; result[i].columns.length; j++)
27431          {
27432              console.log(&quot;column: &quot; + result[i].columns[j] + &quot;, value: &quot; + result[i].values[j]);
27433          }
27434      }
27435  }
27436
27437  function errorcb(id, error)
27438  {
27439      console.log(&quot;error id : &quot; + id + &quot;, error msg : &quot; + error.message);
27440  }
27441
27442  try {
27443      // Defines globalReqId before
27444      // Increases globalReqId for uniqueness
27445      var array = [&quot;WORD&quot;, &quot;WORD_DESC&quot; ];
27446      globalReqId++;
27447      globalSQLConsumer.select(globalReqId, array, &quot;WORD='tizen1'&quot;, getValueSuccessCB, errorcb);
27448  }
27449  catch (err) {
27450      console.log (err.name +&quot;: &quot; + err.message);
27451  }
27452  
27453   
27454 </Code>
27455         </descriptive>
27456         <Type type="void"/>
27457         <ArgumentList>
27458           <Argument name="reqId">
27459             <descriptive>
27460                 <description><p>
27461  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.
27462                 </p></description>
27463             </descriptive>
27464             <Type type="unsigned long"/>
27465           </Argument>
27466           <Argument name="columns">
27467             <descriptive>
27468                 <description><p>
27469  The columns to select.
27470                 </p></description>
27471             </descriptive>
27472             <Type type="array">
27473               <Type type="DOMString"/>
27474             </Type>
27475           </Argument>
27476           <Argument name="where">
27477             <descriptive>
27478                 <description><p>
27479  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>.
27480                 </p></description>
27481             </descriptive>
27482             <Type type="DOMString"/>
27483           </Argument>
27484           <Argument name="successCallback">
27485             <descriptive>
27486                 <description><p>
27487  The method to invoke when the asynchronous call completes successfully.
27488                 </p></description>
27489             </descriptive>
27490             <Type name="DataControlSelectSuccessCallback"/>
27491           </Argument>
27492           <Argument optional="optional" name="errorCallback">
27493             <descriptive>
27494                 <description><p>
27495  The method to invoke when an error occurs.
27496                 </p></description>
27497             </descriptive>
27498             <Type name="DataControlErrorCallback" nullable="nullable"/>
27499           </Argument>
27500           <Argument optional="optional" name="page">
27501             <descriptive>
27502                 <description><p>
27503  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.
27504                 </p></description>
27505             </descriptive>
27506             <Type type="unsigned long" nullable="nullable"/>
27507           </Argument>
27508           <Argument optional="optional" name="maxNumberPerPage">
27509             <descriptive>
27510                 <description><p>
27511  The maximum number of rows on a page.
27512                 </p></description>
27513             </descriptive>
27514             <Type type="unsigned long" nullable="nullable"/>
27515           </Argument>
27516         </ArgumentList>
27517         <Raises>
27518           <RaiseException name="WebAPIException">
27519             <descriptive>
27520                 <description><p>
27521  with error type TypeMismatchError, if parameter type is not compatible with the expected type for that parameter.
27522                 </p></description>
27523                 <description><p>
27524  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.
27525                 </p></description>
27526                 <description><p>
27527  with error type IOError, if a DB operation has failed.
27528                 </p></description>
27529                 <description><p>
27530  with error type SecurityError, if the application does not have the privilege to call this method.
27531                 </p></description>
27532                 <description><p>
27533  with error type UnknownError, if any other error occurs.
27534                 </p></description>
27535             </descriptive>
27536           </RaiseException>
27537         </Raises>
27538       </Operation>
27539     </Interface>
27540     <Interface name="MappedDataControlConsumer" id="::DataControl::MappedDataControlConsumer">
27541       <webidl>    [NoInterfaceObject] interface MappedDataControlConsumer : <ref>DataControlConsumerObject</ref> {
27542         void addValue(unsigned long reqId, DOMString key, DOMString value, 
27543                      optional <ref>DataControlSuccessCallback</ref>? successCallback, 
27544                      optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
27545
27546          void removeValue(unsigned long reqId, DOMString key, DOMString value, 
27547                           <ref>DataControlSuccessCallback</ref> successCallback, 
27548                           optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
27549
27550          void getValue(unsigned long reqId, DOMString key, 
27551                        <ref>DataControlGetValueSuccessCallback</ref> successCallback, 
27552                        optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
27553
27554          void updateValue(unsigned long reqId, DOMString key, DOMString oldValue, DOMString newValue, 
27555                           <ref>DataControlSuccessCallback</ref> successCallback, 
27556                           optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
27557     };</webidl>
27558       <descriptive>
27559           <brief>
27560  This interface defines MAP data type operators.
27561           </brief>
27562           <version>
27563  2.1
27564           </version>
27565       </descriptive>
27566       <ExtendedAttributeList>
27567         <ExtendedAttribute name="NoInterfaceObject">
27568           <webidl>NoInterfaceObject</webidl>
27569         </ExtendedAttribute>
27570       </ExtendedAttributeList>
27571       <InterfaceInheritance>
27572         <Name name="DataControlConsumerObject"/>
27573       </InterfaceInheritance>
27574       <Operation name="addValue" id="::DataControl::MappedDataControlConsumer::addValue">
27575         <webidl>        void addValue(unsigned long reqId, DOMString key, DOMString value, 
27576                      optional <ref>DataControlSuccessCallback</ref>? successCallback, 
27577                      optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
27578         <descriptive>
27579             <brief>
27580  Adds the value associated with the specified key to a key-values map owned by MAP-type data control provider. 
27581             </brief>
27582             <version>
27583  2.1
27584             </version>
27585             <privilegelevel>
27586  partner
27587             </privilegelevel>
27588             <privilege>
27589  http://tizen.org/privilege/datacontrol.consumer
27590             </privilege>
27591             <Code>         
27592  function successcb(id)
27593  {
27594      console.log(&quot;ok : reqid &quot; + id);
27595  }
27596  
27597  function errorcb(id, error)
27598  {
27599      console.log(&quot;error id : &quot; + id + &quot;, error msg : &quot; + error.message);
27600  }
27601  
27602  try {
27603      // Defines globalReqId before
27604      // Increases globalReqId for uniqueness
27605      globalReqId++;
27606      globalMappedConsumer.addValue(globalReqId, &quot;tizen&quot;, &quot;samsung&quot;, successcb, errorcb);
27607  } catch (err) {
27608      console.log (err.name +&quot;: &quot; + err.message);
27609  }
27610  </Code>
27611         </descriptive>
27612         <Type type="void"/>
27613         <ArgumentList>
27614           <Argument name="reqId">
27615             <descriptive>
27616                 <description><p>
27617  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.
27618                 </p></description>
27619             </descriptive>
27620             <Type type="unsigned long"/>
27621           </Argument>
27622           <Argument name="key">
27623             <descriptive>
27624                 <description><p>
27625  The key to search a mapped data.
27626                 </p></description>
27627             </descriptive>
27628             <Type type="DOMString"/>
27629           </Argument>
27630           <Argument name="value">
27631             <descriptive>
27632                 <description><p>
27633  The value to add into values array mapped by the key.
27634                 </p></description>
27635             </descriptive>
27636             <Type type="DOMString"/>
27637           </Argument>
27638           <Argument optional="optional" 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="DataControlSuccessCallback" nullable="nullable"/>
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 SecurityError, if the application does not have the privilege to call this method.
27669                 </p></description>
27670                 <description><p>
27671  with error type UnknownError, if any other error occurs.
27672                 </p></description>
27673             </descriptive>
27674           </RaiseException>
27675         </Raises>
27676       </Operation>
27677       <Operation name="removeValue" id="::DataControl::MappedDataControlConsumer::removeValue">
27678         <webidl>         void removeValue(unsigned long reqId, DOMString key, DOMString value, 
27679                           <ref>DataControlSuccessCallback</ref> successCallback, 
27680                           optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
27681         <descriptive>
27682             <brief>
27683  Removes the value associated with the specified key from a key-values map owned by MAP-type data control provider.
27684             </brief>
27685             <version>
27686  2.1
27687             </version>
27688             <privilegelevel>
27689  partner
27690             </privilegelevel>
27691             <privilege>
27692  http://tizen.org/privilege/datacontrol.consumer
27693             </privilege>
27694             <Code> function successcb(id)
27695  {
27696      console.log(&quot;ok : reqid &quot; + id);
27697  }
27698  
27699  function errorcb(id, error)
27700  {
27701      console.log(&quot;error id : &quot; + id + &quot;, error msg : &quot; + error.message);
27702  }
27703  
27704  
27705  try {
27706      // Defines globalReqId before
27707      // Increases globalReqId for uniqueness
27708      globalReqId++;
27709      globalMappedConsumer.removeValue(globalReqId, &quot;tizen&quot;, &quot;intel&quot;, successcb, errorcb);
27710  } catch (err) {
27711      console.log (err.name +&quot;: &quot; + err.message);
27712  }
27713  </Code>
27714         </descriptive>
27715         <Type type="void"/>
27716         <ArgumentList>
27717           <Argument name="reqId">
27718             <descriptive>
27719                 <description><p>
27720  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.
27721                 </p></description>
27722             </descriptive>
27723             <Type type="unsigned long"/>
27724           </Argument>
27725           <Argument name="key">
27726             <descriptive>
27727                 <description><p>
27728  The key to search a mapped data.
27729                 </p></description>
27730             </descriptive>
27731             <Type type="DOMString"/>
27732           </Argument>
27733           <Argument name="value">
27734             <descriptive>
27735                 <description><p>
27736  The value to remove from a values array mapped by the key.
27737                 </p></description>
27738             </descriptive>
27739             <Type type="DOMString"/>
27740           </Argument>
27741           <Argument name="successCallback">
27742             <descriptive>
27743                 <description><p>
27744  The method to invoke when the asynchronous call completes successfully.
27745                 </p></description>
27746             </descriptive>
27747             <Type name="DataControlSuccessCallback"/>
27748           </Argument>
27749           <Argument optional="optional" name="errorCallback">
27750             <descriptive>
27751                 <description><p>
27752  The method to invoke when an error occurs.
27753                 </p></description>
27754             </descriptive>
27755             <Type name="DataControlErrorCallback" nullable="nullable"/>
27756           </Argument>
27757         </ArgumentList>
27758         <Raises>
27759           <RaiseException name="WebAPIException">
27760             <descriptive>
27761                 <description><p>
27762  with error type TypeMismatchError, if parameter type is not compatible with the expected type for that parameter.
27763                 </p></description>
27764                 <description><p>
27765  with error type InvalidValuesError, if the passed parameter is not available in data provider side or platform. 
27766                 </p></description>
27767                 <description><p>
27768  with error type IOError, if a DB operation has failed.  
27769                 </p></description>
27770                 <description><p>
27771  with error type NotFoundError, if the key cannot be found.
27772                 </p></description>
27773                 <description><p>
27774  with error type SecurityError, if the application does not have the privilege to call this method.
27775                 </p></description>
27776                 <description><p>
27777  with error type UnknownError, if any other error occurs. 
27778                 </p></description>
27779             </descriptive>
27780           </RaiseException>
27781         </Raises>
27782       </Operation>
27783       <Operation name="getValue" id="::DataControl::MappedDataControlConsumer::getValue">
27784         <webidl>         void getValue(unsigned long reqId, DOMString key, 
27785                        <ref>DataControlGetValueSuccessCallback</ref> successCallback, 
27786                        optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
27787         <descriptive>
27788             <brief>
27789  Gets value associated with the specified key, from a key-values map owned by MAP-type data control provider. 
27790             </brief>
27791             <version>
27792  2.1
27793             </version>
27794             <privilegelevel>
27795  partner
27796             </privilegelevel>
27797             <privilege>
27798  http://tizen.org/privilege/datacontrol.consumer
27799             </privilege>
27800             <Code> function getValueSuccessCB(result, id)
27801  {
27802      console.log(result.length + &quot;:&quot; + result[0]);
27803  }
27804  
27805  function errorcb(id, error)
27806  {
27807      console.log(&quot;error id : &quot; + id + &quot;, error msg : &quot; + error.message);
27808  }
27809  
27810  try {
27811      // Defines globalReqId before
27812      // Increases globalReqId for uniqueness
27813      globalReqId++;
27814      globalMappedConsumer.getValue(globalReqId, &quot;tizen&quot;, getValueSuccessCB, errorcb);
27815  } catch (err) {
27816      console.log (err.name +&quot;: &quot; + err.message);
27817  }
27818  </Code>
27819         </descriptive>
27820         <Type type="void"/>
27821         <ArgumentList>
27822           <Argument name="reqId">
27823             <descriptive>
27824                 <description><p>
27825  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.
27826                 </p></description>
27827             </descriptive>
27828             <Type type="unsigned long"/>
27829           </Argument>
27830           <Argument name="key">
27831             <descriptive>
27832                 <description><p>
27833  The key to search a mapped data.
27834                 </p></description>
27835             </descriptive>
27836             <Type type="DOMString"/>
27837           </Argument>
27838           <Argument name="successCallback">
27839             <descriptive>
27840                 <description><p>
27841  The method to invoke when the asynchronous call completes successfully.
27842                 </p></description>
27843             </descriptive>
27844             <Type name="DataControlGetValueSuccessCallback"/>
27845           </Argument>
27846           <Argument optional="optional" name="errorCallback">
27847             <descriptive>
27848                 <description><p>
27849  The method to invoke when an error occurs.
27850                 </p></description>
27851             </descriptive>
27852             <Type name="DataControlErrorCallback" nullable="nullable"/>
27853           </Argument>
27854         </ArgumentList>
27855         <Raises>
27856           <RaiseException name="WebAPIException">
27857             <descriptive>
27858                 <description><p>
27859  with error type TypeMismatchError, if parameter type is not compatible with the expected type for that parameter.
27860                 </p></description>
27861                 <description><p>
27862  with error type InvalidValuesError, if the passed parameter is not available on data provider side or platform.
27863                 </p></description>
27864                 <description><p>
27865  with error type IOError, if a DB operation has failed.
27866                 </p></description>
27867                 <description><p>
27868  with error type NotFoundError, if the key cannot be found.
27869                 </p></description>
27870                 <description><p>
27871  with error type SecurityError, if the application does not have the privilege to call this method.
27872                 </p></description>
27873                 <description><p>
27874  with error type UnknownError, if any other error occurs.
27875                 </p></description>
27876             </descriptive>
27877           </RaiseException>
27878         </Raises>
27879       </Operation>
27880       <Operation name="updateValue" id="::DataControl::MappedDataControlConsumer::updateValue">
27881         <webidl>         void updateValue(unsigned long reqId, DOMString key, DOMString oldValue, DOMString newValue, 
27882                           <ref>DataControlSuccessCallback</ref> successCallback, 
27883                           optional <ref>DataControlErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
27884         <descriptive>
27885             <brief>
27886  Sets the value associated with the specified key with a new value.            
27887             </brief>
27888             <version>
27889  2.1
27890             </version>
27891             <privilegelevel>
27892  partner
27893             </privilegelevel>
27894             <privilege>
27895  http://tizen.org/privilege/datacontrol.consumer
27896             </privilege>
27897             <Code> 
27898  function successcb(id)
27899  {
27900      console.log(&quot;ok : reqid &quot; + id);
27901  }
27902  
27903  function errorcb(id, error)
27904  {
27905      console.log(&quot;error id : &quot; + id + &quot;, error msg : &quot; + error.message);
27906  }
27907  
27908  try {
27909      // Defines globalReqId before
27910      // Increases globalReqId for uniqueness
27911      globalReqId++;
27912      globalMappedConsumer.updateValue(globalReqId, &quot;tizen&quot;, &quot;samsung&quot;, &quot;intel&quot;, successcb, errorcb);
27913  } catch (err) {
27914      console.log (err.name +&quot;: &quot; + err.message);
27915  }
27916  </Code>
27917         </descriptive>
27918         <Type type="void"/>
27919         <ArgumentList>
27920           <Argument name="reqId">
27921             <descriptive>
27922                 <description><p>
27923  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.
27924                 </p></description>
27925             </descriptive>
27926             <Type type="unsigned long"/>
27927           </Argument>
27928           <Argument name="key">
27929             <descriptive>
27930                 <description><p>
27931  The key to search a mapped data.
27932                 </p></description>
27933             </descriptive>
27934             <Type type="DOMString"/>
27935           </Argument>
27936           <Argument name="oldValue">
27937             <descriptive>
27938                 <description><p>
27939  The value to update in values array mapped by the key.
27940                 </p></description>
27941             </descriptive>
27942             <Type type="DOMString"/>
27943           </Argument>
27944           <Argument name="newValue">
27945             <descriptive>
27946                 <description><p>
27947  The new value to replace in values array mapped by the key.
27948                 </p></description>
27949             </descriptive>
27950             <Type type="DOMString"/>
27951           </Argument>
27952           <Argument name="successCallback">
27953             <descriptive>
27954                 <description><p>
27955  The method to invoke when the asynchronous call completes successfully.
27956                 </p></description>
27957             </descriptive>
27958             <Type name="DataControlSuccessCallback"/>
27959           </Argument>
27960           <Argument optional="optional" name="errorCallback">
27961             <descriptive>
27962                 <description><p>
27963  The method to invoke when an error occurs.
27964                 </p></description>
27965             </descriptive>
27966             <Type name="DataControlErrorCallback" nullable="nullable"/>
27967           </Argument>
27968         </ArgumentList>
27969         <Raises>
27970           <RaiseException name="WebAPIException">
27971             <descriptive>
27972                 <description><p>
27973  with error type TypeMismatchError, if parameter type is not compatible with the expected type for that parameter.
27974                 </p></description>
27975                 <description><p>
27976  with error type InvalidValuesError, if the passed parameter is not available on data provider side or platform.
27977                 </p></description>
27978                 <description><p>
27979  with error type IOError, if a DB operation has failed.
27980                 </p></description>
27981                 <description><p>
27982  with error type NotFoundError, if the key cannot be found.
27983                 </p></description>
27984                 <description><p>
27985  with error type SecurityError, if the application does not have the privilege to call this method.
27986                 </p></description>
27987                 <description><p>
27988  with error type UnknownError, if any other error occurs.
27989                 </p></description>
27990             </descriptive>
27991           </RaiseException>
27992         </Raises>
27993       </Operation>
27994     </Interface>
27995     <Interface name="DataControlSuccessCallback" id="::DataControl::DataControlSuccessCallback">
27996       <webidl>    [Callback=FunctionOnly, NoInterfaceObject] interface DataControlSuccessCallback {
27997         void onsuccess(unsigned long reqId);
27998     };</webidl>
27999       <descriptive>
28000           <brief>
28001  This interface provides a SuccessCallback for DataControlConsumerObject.
28002           </brief>
28003           <version>
28004  2.1
28005           </version>
28006       </descriptive>
28007       <ExtendedAttributeList>
28008         <ExtendedAttribute name="Callback" value="FunctionOnly">
28009           <webidl>Callback</webidl>
28010         </ExtendedAttribute>
28011         <ExtendedAttribute name="NoInterfaceObject">
28012           <webidl> NoInterfaceObject</webidl>
28013         </ExtendedAttribute>
28014       </ExtendedAttributeList>
28015       <Operation name="onsuccess" id="::DataControl::DataControlSuccessCallback::onsuccess">
28016         <webidl>        void onsuccess(unsigned long reqId);</webidl>
28017         <Type type="void"/>
28018         <ArgumentList>
28019           <Argument name="reqId">
28020             <Type type="unsigned long"/>
28021           </Argument>
28022         </ArgumentList>
28023       </Operation>
28024     </Interface>
28025     <Interface name="DataControlErrorCallback" id="::DataControl::DataControlErrorCallback">
28026       <webidl>    [Callback=FunctionOnly, NoInterfaceObject] interface DataControlErrorCallback {
28027         void onerror(unsigned long reqId, <ref>WebAPIError</ref> error);
28028     };</webidl>
28029       <descriptive>
28030           <brief>
28031  This interface provides a ErrorCallback for DataControlConsumerObject.
28032           </brief>
28033           <version>
28034  2.1
28035           </version>
28036       </descriptive>
28037       <ExtendedAttributeList>
28038         <ExtendedAttribute name="Callback" value="FunctionOnly">
28039           <webidl>Callback</webidl>
28040         </ExtendedAttribute>
28041         <ExtendedAttribute name="NoInterfaceObject">
28042           <webidl> NoInterfaceObject</webidl>
28043         </ExtendedAttribute>
28044       </ExtendedAttributeList>
28045       <Operation name="onerror" id="::DataControl::DataControlErrorCallback::onerror">
28046         <webidl>        void onerror(unsigned long reqId, <ref>WebAPIError</ref> error);</webidl>
28047         <Type type="void"/>
28048         <ArgumentList>
28049           <Argument name="reqId">
28050             <Type type="unsigned long"/>
28051           </Argument>
28052           <Argument name="error">
28053             <Type name="WebAPIError"/>
28054           </Argument>
28055         </ArgumentList>
28056       </Operation>
28057     </Interface>
28058     <Interface name="DataControlInsertSuccessCallback" id="::DataControl::DataControlInsertSuccessCallback">
28059       <webidl>    [Callback=FunctionOnly, NoInterfaceObject] interface DataControlInsertSuccessCallback {
28060         void onsuccess(unsigned long reqId, long insertRowId);
28061     };</webidl>
28062       <descriptive>
28063           <brief>
28064  This interface provides a SuccessCallback for SQLDataControlConsumer.insert().
28065           </brief>
28066           <version>
28067  2.1
28068           </version>
28069       </descriptive>
28070       <ExtendedAttributeList>
28071         <ExtendedAttribute name="Callback" value="FunctionOnly">
28072           <webidl>Callback</webidl>
28073         </ExtendedAttribute>
28074         <ExtendedAttribute name="NoInterfaceObject">
28075           <webidl> NoInterfaceObject</webidl>
28076         </ExtendedAttribute>
28077       </ExtendedAttributeList>
28078       <Operation name="onsuccess" id="::DataControl::DataControlInsertSuccessCallback::onsuccess">
28079         <webidl>        void onsuccess(unsigned long reqId, long insertRowId);</webidl>
28080         <descriptive>
28081             <brief>
28082  Called on success.
28083             </brief>
28084             <version>
28085  2.1
28086             </version>
28087         </descriptive>
28088         <Type type="void"/>
28089         <ArgumentList>
28090           <Argument name="reqId">
28091             <descriptive>
28092                 <description><p>
28093  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.
28094                 </p></description>
28095             </descriptive>
28096             <Type type="unsigned long"/>
28097           </Argument>
28098           <Argument name="insertRowId">
28099             <descriptive>
28100                 <description><p>
28101  The inserted row ID set by the data control provider if the specified providerResult is <var>true</var>, else <var>-1</var>.
28102                 </p></description>
28103             </descriptive>
28104             <Type type="long"/>
28105           </Argument>
28106         </ArgumentList>
28107       </Operation>
28108     </Interface>
28109     <Interface name="DataControlSelectSuccessCallback" id="::DataControl::DataControlSelectSuccessCallback">
28110       <webidl>    [Callback=FunctionOnly, NoInterfaceObject] interface DataControlSelectSuccessCallback {
28111         void onsuccess(<ref>RowData</ref>[] rows, unsigned long reqId);
28112     };</webidl>
28113       <descriptive>
28114           <brief>
28115  This interface provides a SuccessCallback for SQLDataControlConsumer.select().
28116           </brief>
28117           <version>
28118  2.1
28119           </version>
28120       </descriptive>
28121       <ExtendedAttributeList>
28122         <ExtendedAttribute name="Callback" value="FunctionOnly">
28123           <webidl>Callback</webidl>
28124         </ExtendedAttribute>
28125         <ExtendedAttribute name="NoInterfaceObject">
28126           <webidl> NoInterfaceObject</webidl>
28127         </ExtendedAttribute>
28128       </ExtendedAttributeList>
28129       <Operation name="onsuccess" id="::DataControl::DataControlSelectSuccessCallback::onsuccess">
28130         <webidl>        void onsuccess(<ref>RowData</ref>[] rows, unsigned long reqId);</webidl>
28131         <descriptive>
28132             <brief>
28133  Called on success.
28134             </brief>
28135             <version>
28136  2.1
28137             </version>
28138         </descriptive>
28139         <Type type="void"/>
28140         <ArgumentList>
28141           <Argument name="rows">
28142             <descriptive>
28143                 <description><p>
28144  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>.
28145                 </p></description>
28146             </descriptive>
28147             <Type type="array">
28148               <Type name="RowData"/>
28149             </Type>
28150           </Argument>
28151           <Argument name="reqId">
28152             <descriptive>
28153                 <description><p>
28154  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.
28155                 </p></description>
28156             </descriptive>
28157             <Type type="unsigned long"/>
28158           </Argument>
28159         </ArgumentList>
28160       </Operation>
28161     </Interface>
28162     <Interface name="DataControlGetValueSuccessCallback" id="::DataControl::DataControlGetValueSuccessCallback">
28163       <webidl>    [Callback=FunctionOnly, NoInterfaceObject] interface DataControlGetValueSuccessCallback {
28164         void onsuccess(DOMString[] values, unsigned long reqid);
28165     };</webidl>
28166       <descriptive>
28167           <brief>
28168  This interface provides a SuccessCallback for MapDataControlConsumer.getValue().
28169           </brief>
28170           <version>
28171  2.1
28172           </version>
28173       </descriptive>
28174       <ExtendedAttributeList>
28175         <ExtendedAttribute name="Callback" value="FunctionOnly">
28176           <webidl>Callback</webidl>
28177         </ExtendedAttribute>
28178         <ExtendedAttribute name="NoInterfaceObject">
28179           <webidl> NoInterfaceObject</webidl>
28180         </ExtendedAttribute>
28181       </ExtendedAttributeList>
28182       <Operation name="onsuccess" id="::DataControl::DataControlGetValueSuccessCallback::onsuccess">
28183         <webidl>        void onsuccess(DOMString[] values, unsigned long reqid);</webidl>
28184         <Type type="void"/>
28185         <ArgumentList>
28186           <Argument name="values">
28187             <Type type="array">
28188               <Type type="DOMString"/>
28189             </Type>
28190           </Argument>
28191           <Argument name="reqid">
28192             <Type type="unsigned long"/>
28193           </Argument>
28194         </ArgumentList>
28195       </Operation>
28196     </Interface>
28197     <Dictionary name="RowData" id="::DataControl::RowData">
28198       <webidl>    dictionary RowData {
28199         DOMString[] columns;
28200         DOMString[] values;
28201     };</webidl>
28202       <descriptive>
28203           <brief>
28204  The dictionary represents RowData holding 1 row of SQL selection results from another application.
28205           </brief>
28206           <version>
28207  2.1
28208           </version>
28209       </descriptive>
28210       <DictionaryMember name="columns" id="::DataControl::RowData::columns">
28211         <webidl>        DOMString[] columns;</webidl>
28212         <descriptive>
28213             <brief>
28214  An attribute to hold column names to select, update, and insert.
28215             </brief>
28216             <version>
28217  2.1
28218             </version>
28219         </descriptive>
28220         <Type type="array">
28221           <Type type="DOMString"/>
28222         </Type>
28223       </DictionaryMember>
28224       <DictionaryMember name="values" id="::DataControl::RowData::values">
28225         <webidl>        DOMString[] values;</webidl>
28226         <descriptive>
28227             <brief>
28228  An attribute to hold values of columns to select, update, and insert.
28229             </brief>
28230             <version>
28231  2.1
28232             </version>
28233         </descriptive>
28234         <Type type="array">
28235           <Type type="DOMString"/>
28236         </Type>
28237       </DictionaryMember>
28238     </Dictionary>
28239   </Module>
28240   <Module name="DataSynchronization" id="::DataSynchronization">
28241     <webidl>module DataSynchronization {
28242
28243   typedef DOMString SyncProfileId;
28244
28245   enum SyncMode { &quot;MANUAL&quot;, &quot;PERIODIC&quot;, &quot;PUSH&quot; };
28246
28247   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; };
28248
28249   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; };
28250
28251   enum SyncServiceType { &quot;CONTACT&quot;, &quot;EVENT&quot; };
28252
28253   enum SyncStatus { &quot;SUCCESS&quot;, &quot;FAIL&quot;, &quot;STOP&quot;, &quot;NONE&quot; };
28254
28255   [NoInterfaceObject] interface DataSynchronizationManagerObject {
28256     readonly attribute <ref>DataSynchronizationManager</ref> datasync;
28257   };
28258
28259   <ref>Tizen</ref> implements <ref>DataSynchronizationManagerObject</ref>;
28260
28261   [Constructor(DOMString url, DOMString id, DOMString password, <ref>SyncMode</ref> mode),
28262   Constructor(DOMString url, DOMString id, DOMString password, <ref>SyncMode</ref> mode, <ref>SyncType</ref> type),
28263   Constructor(DOMString url, DOMString id, DOMString password, <ref>SyncMode</ref> mode, <ref>SyncInterval</ref> interval)]
28264   interface SyncInfo {
28265     attribute DOMString url;
28266
28267     attribute DOMString id;
28268
28269     attribute DOMString password;
28270
28271     attribute <ref>SyncMode</ref> mode;
28272
28273     attribute <ref>SyncType</ref>? type;
28274
28275     attribute <ref>SyncInterval</ref>? interval;
28276   };
28277
28278   [Constructor(boolean enable, <ref>SyncServiceType</ref> serviceType, DOMString serverDatabaseUri, optional DOMString? id, optional DOMString? password)]
28279   interface SyncServiceInfo {
28280     attribute boolean enable;
28281
28282     attribute <ref>SyncServiceType</ref> serviceType;
28283
28284     attribute DOMString serverDatabaseUri;
28285
28286     attribute DOMString? id;
28287
28288     attribute DOMString? password;
28289   };
28290
28291   [Constructor(DOMString profileName, <ref>SyncInfo</ref> syncInfo, optional <ref>SyncServiceInfo</ref>[]? serviceInfo)]
28292   interface SyncProfileInfo {
28293     readonly attribute <ref>SyncProfileId</ref> profileId;
28294
28295     attribute DOMString profileName;
28296
28297     attribute <ref>SyncInfo</ref> syncInfo;
28298
28299     attribute <ref>SyncServiceInfo</ref>[]? serviceInfo;
28300   };
28301
28302   [NoInterfaceObject] interface SyncStatistics {
28303     readonly attribute <ref>SyncStatus</ref> syncStatus;
28304
28305     readonly attribute <ref>SyncServiceType</ref> serviceType;
28306
28307     readonly attribute Date lastSyncTime;
28308
28309     readonly attribute unsigned long serverToClientTotal;
28310
28311     readonly attribute unsigned long serverToClientAdded;
28312
28313     readonly attribute unsigned long serverToClientUpdated;
28314
28315     readonly attribute unsigned long serverToClientRemoved;
28316
28317     readonly attribute unsigned long clientToServerTotal;
28318
28319     readonly attribute unsigned long clientToServerAdded;
28320
28321     readonly attribute unsigned long clientToServerUpdated;
28322
28323     readonly attribute unsigned long clientToServerRemoved;
28324   };
28325
28326   [NoInterfaceObject] interface DataSynchronizationManager {
28327     void add(<ref>SyncProfileInfo</ref> profile) raises(<ref>WebAPIException</ref>);
28328
28329     void update(<ref>SyncProfileInfo</ref> profile) raises(<ref>WebAPIException</ref>);
28330
28331     void remove(<ref>SyncProfileId</ref> profileId) raises(<ref>WebAPIException</ref>);
28332
28333     long getMaxProfilesNum() raises(<ref>WebAPIException</ref>);
28334
28335     unsigned long getProfilesNum() raises(<ref>WebAPIException</ref>);
28336
28337     <ref>SyncProfileInfo</ref> get(<ref>SyncProfileId</ref> profileId) raises(<ref>WebAPIException</ref>);
28338
28339     <ref>SyncProfileInfo</ref>[] getAll() raises(<ref>WebAPIException</ref>);
28340
28341     void startSync(<ref>SyncProfileId</ref> profileId, optional <ref>SyncProgressCallback</ref>? progressCallback) raises(<ref>WebAPIException</ref>);
28342
28343     void stopSync(<ref>SyncProfileId</ref> profileId) raises(<ref>WebAPIException</ref>);
28344
28345     <ref>SyncStatistics</ref>[] getLastSyncStatistics(<ref>SyncProfileId</ref> profileId) raises(<ref>WebAPIException</ref>);
28346   };
28347
28348   [Callback, NoInterfaceObject] interface SyncProgressCallback {
28349     void onprogress(<ref>SyncProfileId</ref> profileId, <ref>SyncServiceType</ref> serviceType, boolean isFromServer, unsigned long totalPerService, unsigned long syncedPerService);
28350
28351     void oncompleted(<ref>SyncProfileId</ref> profileId);
28352
28353     void onstopped(<ref>SyncProfileId</ref> profileId);
28354
28355     void onfailed(<ref>SyncProfileId</ref> profileId, <ref>WebAPIError</ref> error);
28356   };
28357 };</webidl>
28358     <descriptive>
28359         <brief>
28360  This API provides methods to synchronize contact and event data to the server using the OMA DS 1.2 protocol.
28361 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>.
28362         </brief>
28363         <version>
28364  2.1
28365         </version>
28366     </descriptive>
28367     <Typedef name="SyncProfileId" id="::DataSynchronization::SyncProfileId">
28368       <webidl>  typedef DOMString SyncProfileId;</webidl>
28369       <descriptive>
28370           <brief>
28371  An attribute to uniquely identify a sync profile.
28372           </brief>
28373           <version>
28374  2.1
28375           </version>
28376       </descriptive>
28377       <Type type="DOMString"/>
28378     </Typedef>
28379     <Enum name="SyncMode" id="::DataSynchronization::SyncMode">
28380       <webidl>  enum SyncMode { &quot;MANUAL&quot;, &quot;PERIODIC&quot;, &quot;PUSH&quot; };</webidl>
28381       <descriptive>
28382           <brief>
28383  An enumerator that indicates the supported synchronization modes.
28384           </brief>
28385          <description>
28386           <p>
28387 The following values are supported:
28388           </p>
28389           <ul>
28390             <li>
28391 MANUAL - Indicates that the synchronization starts by manual trigger. The sync type should be specified. The default value is <em>TWO_WAY</em>.            </li>
28392             <li>
28393 PERIODIC - Indicates that the synchronization starts automatically by a preset period. The sync interval should be provided.            </li>
28394             <li>
28395 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>
28396           </ul>
28397          </description>
28398           <version>
28399  2.1
28400           </version>
28401       </descriptive>
28402       <EnumValue stringvalue="MANUAL">
28403         <webidl> &quot;MANUAL</webidl>
28404       </EnumValue>
28405       <EnumValue stringvalue="PERIODIC">
28406         <webidl> &quot;PERIODIC</webidl>
28407       </EnumValue>
28408       <EnumValue stringvalue="PUSH">
28409         <webidl> &quot;PUSH</webidl>
28410       </EnumValue>
28411     </Enum>
28412     <Enum name="SyncType" id="::DataSynchronization::SyncType">
28413       <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>
28414       <descriptive>
28415           <brief>
28416  An enumerator that indicates the supported synchronization types.
28417           </brief>
28418          <description>
28419           <p>
28420 The following values are supported:
28421           </p>
28422           <ul>
28423             <li>
28424 TWO_WAY - Indicates a normal sync type in which the client and the server exchange information about modified data in these devices.            </li>
28425             <li>
28426 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>
28427             <li>
28428 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>
28429             <li>
28430 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>
28431             <li>
28432 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>
28433             <li>
28434 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>
28435           </ul>
28436          </description>
28437           <version>
28438  2.1
28439           </version>
28440       </descriptive>
28441       <EnumValue stringvalue="TWO_WAY">
28442         <webidl> &quot;TWO_WAY</webidl>
28443       </EnumValue>
28444       <EnumValue stringvalue="SLOW">
28445         <webidl> &quot;SLOW</webidl>
28446       </EnumValue>
28447       <EnumValue stringvalue="ONE_WAY_FROM_CLIENT">
28448         <webidl> &quot;ONE_WAY_FROM_CLIENT</webidl>
28449       </EnumValue>
28450       <EnumValue stringvalue="REFRESH_FROM_CLIENT">
28451         <webidl> &quot;REFRESH_FROM_CLIENT</webidl>
28452       </EnumValue>
28453       <EnumValue stringvalue="ONE_WAY_FROM_SERVER">
28454         <webidl> &quot;ONE_WAY_FROM_SERVER</webidl>
28455       </EnumValue>
28456       <EnumValue stringvalue="REFRESH_FROM_SERVER">
28457         <webidl> &quot;REFRESH_FROM_SERVER</webidl>
28458       </EnumValue>
28459     </Enum>
28460     <Enum name="SyncInterval" id="::DataSynchronization::SyncInterval">
28461       <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>
28462       <descriptive>
28463           <brief>
28464  An enumerator that indicates the supported synchronization intervals.
28465           </brief>
28466          <description>
28467           <p>
28468 The following values are supported:
28469           </p>
28470           <ul>
28471             <li>
28472 5_MINUTES - Indicates a time period of 5 minutes.            </li>
28473             <li>
28474 15_MINUTES - Indicates a time period of 15 minutes.            </li>
28475             <li>
28476 1_HOUR - Indicates a time period of 1 hour.            </li>
28477             <li>
28478 4_HOURS - Indicates a time period of 4 hours.            </li>
28479             <li>
28480 12_HOURS - Indicates a time period of 12 hours.            </li>
28481             <li>
28482 1_DAY - Indicates a time period of 1 day.            </li>
28483             <li>
28484 1_WEEK - Indicates a time period of 1 week.            </li>
28485             <li>
28486 1_MONTH - Indicates a time period of 1 month.            </li>
28487           </ul>
28488          </description>
28489           <version>
28490  2.1
28491           </version>
28492       </descriptive>
28493       <EnumValue stringvalue="5_MINUTES">
28494         <webidl> &quot;5_MINUTES</webidl>
28495       </EnumValue>
28496       <EnumValue stringvalue="15_MINUTES">
28497         <webidl> &quot;15_MINUTES</webidl>
28498       </EnumValue>
28499       <EnumValue stringvalue="1_HOUR">
28500         <webidl> &quot;1_HOUR</webidl>
28501       </EnumValue>
28502       <EnumValue stringvalue="4_HOURS">
28503         <webidl> &quot;4_HOURS</webidl>
28504       </EnumValue>
28505       <EnumValue stringvalue="12_HOURS">
28506         <webidl> &quot;12_HOURS</webidl>
28507       </EnumValue>
28508       <EnumValue stringvalue="1_DAY">
28509         <webidl> &quot;1_DAY</webidl>
28510       </EnumValue>
28511       <EnumValue stringvalue="1_WEEK">
28512         <webidl> &quot;1_WEEK</webidl>
28513       </EnumValue>
28514       <EnumValue stringvalue="1_MONTH">
28515         <webidl> &quot;1_MONTH</webidl>
28516       </EnumValue>
28517     </Enum>
28518     <Enum name="SyncServiceType" id="::DataSynchronization::SyncServiceType">
28519       <webidl>  enum SyncServiceType { &quot;CONTACT&quot;, &quot;EVENT&quot; };</webidl>
28520       <descriptive>
28521           <brief>
28522  An enumerator that indicates the supported synchronization service type of the device.
28523           </brief>
28524          <description>
28525           <p>
28526 The following values are supported:
28527           </p>
28528           <ul>
28529             <li>
28530 CONTACT - Indicates the device contact records.            </li>
28531             <li>
28532 EVENT - Indicates the device calendar event records.            </li>
28533           </ul>
28534          </description>
28535           <version>
28536  2.1
28537           </version>
28538       </descriptive>
28539       <EnumValue stringvalue="CONTACT">
28540         <webidl> &quot;CONTACT</webidl>
28541       </EnumValue>
28542       <EnumValue stringvalue="EVENT">
28543         <webidl> &quot;EVENT</webidl>
28544       </EnumValue>
28545     </Enum>
28546     <Enum name="SyncStatus" id="::DataSynchronization::SyncStatus">
28547       <webidl>  enum SyncStatus { &quot;SUCCESS&quot;, &quot;FAIL&quot;, &quot;STOP&quot;, &quot;NONE&quot; };</webidl>
28548       <descriptive>
28549           <brief>
28550  An enumerator that indicates the last sync statuses.
28551           </brief>
28552          <description>
28553           <p>
28554 The following values are supported:
28555           </p>
28556           <ul>
28557             <li>
28558 SUCCESS - Indicates the sync is successful.            </li>
28559             <li>
28560 FAIL - Indicates the sync has failed.            </li>
28561             <li>
28562 STOP - Indicates the sync has been stopped by user's action.            </li>
28563             <li>
28564 NONE - Indicates the sync was never performed.            </li>
28565           </ul>
28566          </description>
28567           <version>
28568  2.1
28569           </version>
28570       </descriptive>
28571       <EnumValue stringvalue="SUCCESS">
28572         <webidl> &quot;SUCCESS</webidl>
28573       </EnumValue>
28574       <EnumValue stringvalue="FAIL">
28575         <webidl> &quot;FAIL</webidl>
28576       </EnumValue>
28577       <EnumValue stringvalue="STOP">
28578         <webidl> &quot;STOP</webidl>
28579       </EnumValue>
28580       <EnumValue stringvalue="NONE">
28581         <webidl> &quot;NONE</webidl>
28582       </EnumValue>
28583     </Enum>
28584     <Interface name="DataSynchronizationManagerObject" id="::DataSynchronization::DataSynchronizationManagerObject">
28585       <webidl>  [NoInterfaceObject] interface DataSynchronizationManagerObject {
28586     readonly attribute <ref>DataSynchronizationManager</ref> datasync;
28587   };</webidl>
28588       <descriptive>
28589           <brief>
28590  This interface defines the default data synchronization manager that is instantiated by the <em>Tizen </em>object.
28591 There will be a <em>tizen.datasync</em> object that allows access to the functionality of the DataSynchronization API.
28592           </brief>
28593           <version>
28594  2.1
28595           </version>
28596       </descriptive>
28597       <ExtendedAttributeList>
28598         <ExtendedAttribute name="NoInterfaceObject">
28599           <webidl>NoInterfaceObject</webidl>
28600         </ExtendedAttribute>
28601       </ExtendedAttributeList>
28602       <Attribute readonly="readonly" name="datasync" id="::DataSynchronization::DataSynchronizationManagerObject::datasync">
28603         <webidl>    readonly attribute <ref>DataSynchronizationManager</ref> datasync;</webidl>
28604         <Type name="DataSynchronizationManager"/>
28605       </Attribute>
28606     </Interface>
28607     <Implements name1="Tizen" name2="DataSynchronizationManagerObject">
28608       <webidl>  <ref>Tizen</ref> implements <ref>DataSynchronizationManagerObject</ref>;</webidl>
28609     </Implements>
28610     <Interface name="SyncInfo" id="::DataSynchronization::SyncInfo">
28611       <webidl>  [Constructor(DOMString url, DOMString id, DOMString password, <ref>SyncMode</ref> mode),
28612   Constructor(DOMString url, DOMString id, DOMString password, <ref>SyncMode</ref> mode, <ref>SyncType</ref> type),
28613   Constructor(DOMString url, DOMString id, DOMString password, <ref>SyncMode</ref> mode, <ref>SyncInterval</ref> interval)]
28614   interface SyncInfo {
28615     attribute DOMString url;
28616
28617     attribute DOMString id;
28618
28619     attribute DOMString password;
28620
28621     attribute <ref>SyncMode</ref> mode;
28622
28623     attribute <ref>SyncType</ref>? type;
28624
28625     attribute <ref>SyncInterval</ref>? interval;
28626   };</webidl>
28627       <descriptive>
28628           <brief>
28629  This interface defines the sync information.
28630           </brief>
28631           <version>
28632  2.1
28633           </version>
28634           <remark>
28635  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.
28636           </remark>
28637       </descriptive>
28638       <ExtendedAttributeList>
28639         <ExtendedAttribute name="Constructor">
28640           <webidl>Constructor(DOMString url, DOMString id, DOMString password, <ref>SyncMode</ref> mode)</webidl>
28641           <ArgumentList>
28642             <Argument name="url">
28643               <Type type="DOMString"/>
28644             </Argument>
28645             <Argument name="id">
28646               <Type type="DOMString"/>
28647             </Argument>
28648             <Argument name="password">
28649               <Type type="DOMString"/>
28650             </Argument>
28651             <Argument name="mode">
28652               <Type name="SyncMode"/>
28653             </Argument>
28654           </ArgumentList>
28655         </ExtendedAttribute>
28656         <ExtendedAttribute name="Constructor">
28657           <webidl>  Constructor(DOMString url, DOMString id, DOMString password, <ref>SyncMode</ref> mode, <ref>SyncType</ref> type)</webidl>
28658           <ArgumentList>
28659             <Argument name="url">
28660               <Type type="DOMString"/>
28661             </Argument>
28662             <Argument name="id">
28663               <Type type="DOMString"/>
28664             </Argument>
28665             <Argument name="password">
28666               <Type type="DOMString"/>
28667             </Argument>
28668             <Argument name="mode">
28669               <Type name="SyncMode"/>
28670             </Argument>
28671             <Argument name="type">
28672               <Type name="SyncType"/>
28673             </Argument>
28674           </ArgumentList>
28675         </ExtendedAttribute>
28676         <ExtendedAttribute name="Constructor">
28677           <webidl>  Constructor(DOMString url, DOMString id, DOMString password, <ref>SyncMode</ref> mode, <ref>SyncInterval</ref> interval)</webidl>
28678           <ArgumentList>
28679             <Argument name="url">
28680               <Type type="DOMString"/>
28681             </Argument>
28682             <Argument name="id">
28683               <Type type="DOMString"/>
28684             </Argument>
28685             <Argument name="password">
28686               <Type type="DOMString"/>
28687             </Argument>
28688             <Argument name="mode">
28689               <Type name="SyncMode"/>
28690             </Argument>
28691             <Argument name="interval">
28692               <Type name="SyncInterval"/>
28693             </Argument>
28694           </ArgumentList>
28695         </ExtendedAttribute>
28696       </ExtendedAttributeList>
28697       <Attribute name="url" id="::DataSynchronization::SyncInfo::url">
28698         <webidl>    attribute DOMString url;</webidl>
28699         <descriptive>
28700             <brief>
28701  An attribute to store the URL of the sync server.
28702             </brief>
28703             <version>
28704  2.1
28705             </version>
28706         </descriptive>
28707         <Type type="DOMString"/>
28708       </Attribute>
28709       <Attribute name="id" id="::DataSynchronization::SyncInfo::id">
28710         <webidl>    attribute DOMString id;</webidl>
28711         <descriptive>
28712             <brief>
28713  An attribute to store the login ID for the sync server.
28714             </brief>
28715            <description>
28716             <p>
28717 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.
28718             </p>
28719            </description>
28720             <version>
28721  2.1
28722             </version>
28723         </descriptive>
28724         <Type type="DOMString"/>
28725       </Attribute>
28726       <Attribute name="password" id="::DataSynchronization::SyncInfo::password">
28727         <webidl>    attribute DOMString password;</webidl>
28728         <descriptive>
28729             <brief>
28730  An attribute to store the login password to the sync server.
28731             </brief>
28732            <description>
28733             <p>
28734 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.
28735             </p>
28736            </description>
28737             <version>
28738  2.1
28739             </version>
28740         </descriptive>
28741         <Type type="DOMString"/>
28742       </Attribute>
28743       <Attribute name="mode" id="::DataSynchronization::SyncInfo::mode">
28744         <webidl>    attribute <ref>SyncMode</ref> mode;</webidl>
28745         <descriptive>
28746             <brief>
28747  An attribute to store the sync mode.
28748             </brief>
28749             <version>
28750  2.1
28751             </version>
28752         </descriptive>
28753         <Type name="SyncMode"/>
28754       </Attribute>
28755       <Attribute name="type" id="::DataSynchronization::SyncInfo::type">
28756         <webidl>    attribute <ref>SyncType</ref>? type;</webidl>
28757         <descriptive>
28758             <brief>
28759  An attribute to store the sync type.
28760             </brief>
28761            <description>
28762             <p>
28763 This attribute is used when the sync mode is set to <em>MANUAL</em> option.
28764             </p>
28765            </description>
28766             <version>
28767  2.1
28768             </version>
28769         </descriptive>
28770         <Type name="SyncType" nullable="nullable"/>
28771       </Attribute>
28772       <Attribute name="interval" id="::DataSynchronization::SyncInfo::interval">
28773         <webidl>    attribute <ref>SyncInterval</ref>? interval;</webidl>
28774         <descriptive>
28775             <brief>
28776  An attribute to store the sync interval.
28777             </brief>
28778            <description>
28779             <p>
28780 This attribute is used when the sync mode is set to <em>PERIODIC</em> option.
28781             </p>
28782            </description>
28783             <version>
28784  2.1
28785             </version>
28786         </descriptive>
28787         <Type name="SyncInterval" nullable="nullable"/>
28788       </Attribute>
28789     </Interface>
28790     <Interface name="SyncServiceInfo" id="::DataSynchronization::SyncServiceInfo">
28791       <webidl>  [Constructor(boolean enable, <ref>SyncServiceType</ref> serviceType, DOMString serverDatabaseUri, optional DOMString? id, optional DOMString? password)]
28792   interface SyncServiceInfo {
28793     attribute boolean enable;
28794
28795     attribute <ref>SyncServiceType</ref> serviceType;
28796
28797     attribute DOMString serverDatabaseUri;
28798
28799     attribute DOMString? id;
28800
28801     attribute DOMString? password;
28802   };</webidl>
28803       <descriptive>
28804           <brief>
28805  This interface defines the sync service information.
28806           </brief>
28807           <version>
28808  2.1
28809           </version>
28810       </descriptive>
28811       <ExtendedAttributeList>
28812         <ExtendedAttribute name="Constructor">
28813           <webidl>Constructor(boolean enable, <ref>SyncServiceType</ref> serviceType, DOMString serverDatabaseUri, optional DOMString? id, optional DOMString? password)</webidl>
28814           <ArgumentList>
28815             <Argument name="enable">
28816               <Type type="boolean"/>
28817             </Argument>
28818             <Argument name="serviceType">
28819               <Type name="SyncServiceType"/>
28820             </Argument>
28821             <Argument name="serverDatabaseUri">
28822               <Type type="DOMString"/>
28823             </Argument>
28824             <Argument optional="optional" name="id">
28825               <Type type="DOMString" nullable="nullable"/>
28826             </Argument>
28827             <Argument optional="optional" name="password">
28828               <Type type="DOMString" nullable="nullable"/>
28829             </Argument>
28830           </ArgumentList>
28831         </ExtendedAttribute>
28832       </ExtendedAttributeList>
28833       <Attribute name="enable" id="::DataSynchronization::SyncServiceInfo::enable">
28834         <webidl>    attribute boolean enable;</webidl>
28835         <descriptive>
28836             <brief>
28837  An attribute to enable or disable a service category for sync.
28838             </brief>
28839             <version>
28840  2.1
28841             </version>
28842         </descriptive>
28843         <Type type="boolean"/>
28844       </Attribute>
28845       <Attribute name="serviceType" id="::DataSynchronization::SyncServiceInfo::serviceType">
28846         <webidl>    attribute <ref>SyncServiceType</ref> serviceType;</webidl>
28847         <descriptive>
28848             <brief>
28849  An attribute to indicate the sync service type.
28850             </brief>
28851             <version>
28852  2.1
28853             </version>
28854         </descriptive>
28855         <Type name="SyncServiceType"/>
28856       </Attribute>
28857       <Attribute name="serverDatabaseUri" id="::DataSynchronization::SyncServiceInfo::serverDatabaseUri">
28858         <webidl>    attribute DOMString serverDatabaseUri;</webidl>
28859         <descriptive>
28860             <brief>
28861  An attribute to store the sync service DB URI of the server.
28862             </brief>
28863             <version>
28864  2.1
28865             </version>
28866         </descriptive>
28867         <Type type="DOMString"/>
28868       </Attribute>
28869       <Attribute name="id" id="::DataSynchronization::SyncServiceInfo::id">
28870         <webidl>    attribute DOMString? id;</webidl>
28871         <descriptive>
28872             <brief>
28873  An attribute to store the sync service DB access ID to the server.
28874             </brief>
28875            <description>
28876             <p>
28877 This is used only when the server requires a separate access right to each DB.
28878 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.
28879             </p>
28880            </description>
28881             <version>
28882  2.1
28883             </version>
28884         </descriptive>
28885         <Type type="DOMString" nullable="nullable"/>
28886       </Attribute>
28887       <Attribute name="password" id="::DataSynchronization::SyncServiceInfo::password">
28888         <webidl>    attribute DOMString? password;</webidl>
28889         <descriptive>
28890             <brief>
28891  An attribute to store the sync service DB access password to the server.
28892             </brief>
28893            <description>
28894             <p>
28895 This is used only when the server requires a separate access right to each DB.
28896 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.
28897             </p>
28898            </description>
28899             <version>
28900  2.1
28901             </version>
28902         </descriptive>
28903         <Type type="DOMString" nullable="nullable"/>
28904       </Attribute>
28905     </Interface>
28906     <Interface name="SyncProfileInfo" id="::DataSynchronization::SyncProfileInfo">
28907       <webidl>  [Constructor(DOMString profileName, <ref>SyncInfo</ref> syncInfo, optional <ref>SyncServiceInfo</ref>[]? serviceInfo)]
28908   interface SyncProfileInfo {
28909     readonly attribute <ref>SyncProfileId</ref> profileId;
28910
28911     attribute DOMString profileName;
28912
28913     attribute <ref>SyncInfo</ref> syncInfo;
28914
28915     attribute <ref>SyncServiceInfo</ref>[]? serviceInfo;
28916   };</webidl>
28917       <descriptive>
28918           <brief>
28919  This interface defines the sync profile information, based on which the synchronization is performed.
28920           </brief>
28921           <version>
28922  2.1
28923           </version>
28924       </descriptive>
28925       <ExtendedAttributeList>
28926         <ExtendedAttribute name="Constructor">
28927           <webidl>Constructor(DOMString profileName, <ref>SyncInfo</ref> syncInfo, optional <ref>SyncServiceInfo</ref>[]? serviceInfo)</webidl>
28928           <ArgumentList>
28929             <Argument name="profileName">
28930               <Type type="DOMString"/>
28931             </Argument>
28932             <Argument name="syncInfo">
28933               <Type name="SyncInfo"/>
28934             </Argument>
28935             <Argument optional="optional" name="serviceInfo">
28936               <Type type="array" nullable="nullable">
28937                 <Type name="SyncServiceInfo"/>
28938               </Type>
28939             </Argument>
28940           </ArgumentList>
28941         </ExtendedAttribute>
28942       </ExtendedAttributeList>
28943       <Attribute readonly="readonly" name="profileId" id="::DataSynchronization::SyncProfileInfo::profileId">
28944         <webidl>    readonly attribute <ref>SyncProfileId</ref> profileId;</webidl>
28945         <descriptive>
28946             <brief>
28947  An attribute to store the unique identifier provided by the platform for a profile that has been successfully added.
28948             </brief>
28949             <version>
28950  2.1
28951             </version>
28952         </descriptive>
28953         <Type name="SyncProfileId"/>
28954       </Attribute>
28955       <Attribute name="profileName" id="::DataSynchronization::SyncProfileInfo::profileName">
28956         <webidl>    attribute DOMString profileName;</webidl>
28957         <descriptive>
28958             <brief>
28959  An attribute to store the profile name.
28960             </brief>
28961             <version>
28962  2.1
28963             </version>
28964         </descriptive>
28965         <Type type="DOMString"/>
28966       </Attribute>
28967       <Attribute name="syncInfo" id="::DataSynchronization::SyncProfileInfo::syncInfo">
28968         <webidl>    attribute <ref>SyncInfo</ref> syncInfo;</webidl>
28969         <descriptive>
28970             <brief>
28971  An attribute to store the sync info.
28972             </brief>
28973             <version>
28974  2.1
28975             </version>
28976         </descriptive>
28977         <Type name="SyncInfo"/>
28978       </Attribute>
28979       <Attribute name="serviceInfo" id="::DataSynchronization::SyncProfileInfo::serviceInfo">
28980         <webidl>    attribute <ref>SyncServiceInfo</ref>[]? serviceInfo;</webidl>
28981         <descriptive>
28982             <brief>
28983  An attribute to indicate the service info.
28984             </brief>
28985             <version>
28986  2.1
28987             </version>
28988         </descriptive>
28989         <Type type="array" nullable="nullable">
28990           <Type name="SyncServiceInfo"/>
28991         </Type>
28992       </Attribute>
28993     </Interface>
28994     <Interface name="SyncStatistics" id="::DataSynchronization::SyncStatistics">
28995       <webidl>  [NoInterfaceObject] interface SyncStatistics {
28996     readonly attribute <ref>SyncStatus</ref> syncStatus;
28997
28998     readonly attribute <ref>SyncServiceType</ref> serviceType;
28999
29000     readonly attribute Date lastSyncTime;
29001
29002     readonly attribute unsigned long serverToClientTotal;
29003
29004     readonly attribute unsigned long serverToClientAdded;
29005
29006     readonly attribute unsigned long serverToClientUpdated;
29007
29008     readonly attribute unsigned long serverToClientRemoved;
29009
29010     readonly attribute unsigned long clientToServerTotal;
29011
29012     readonly attribute unsigned long clientToServerAdded;
29013
29014     readonly attribute unsigned long clientToServerUpdated;
29015
29016     readonly attribute unsigned long clientToServerRemoved;
29017   };</webidl>
29018       <descriptive>
29019           <brief>
29020  This interface defines the sync statistics for a profile service.
29021           </brief>
29022           <version>
29023  2.1
29024           </version>
29025       </descriptive>
29026       <ExtendedAttributeList>
29027         <ExtendedAttribute name="NoInterfaceObject">
29028           <webidl>NoInterfaceObject</webidl>
29029         </ExtendedAttribute>
29030       </ExtendedAttributeList>
29031       <Attribute readonly="readonly" name="syncStatus" id="::DataSynchronization::SyncStatistics::syncStatus">
29032         <webidl>    readonly attribute <ref>SyncStatus</ref> syncStatus;</webidl>
29033         <descriptive>
29034             <brief>
29035  An attribute to store the last sync status for a corresponding service category.
29036             </brief>
29037             <version>
29038  2.1
29039             </version>
29040         </descriptive>
29041         <Type name="SyncStatus"/>
29042       </Attribute>
29043       <Attribute readonly="readonly" name="serviceType" id="::DataSynchronization::SyncStatistics::serviceType">
29044         <webidl>    readonly attribute <ref>SyncServiceType</ref> serviceType;</webidl>
29045         <descriptive>
29046             <brief>
29047  An attribute to indicate the sync service type.
29048             </brief>
29049             <version>
29050  2.1
29051             </version>
29052         </descriptive>
29053         <Type name="SyncServiceType"/>
29054       </Attribute>
29055       <Attribute readonly="readonly" name="lastSyncTime" id="::DataSynchronization::SyncStatistics::lastSyncTime">
29056         <webidl>    readonly attribute Date lastSyncTime;</webidl>
29057         <descriptive>
29058             <brief>
29059  An attribute to store the last sync time.
29060             </brief>
29061             <version>
29062  2.1
29063             </version>
29064         </descriptive>
29065         <Type type="Date"/>
29066       </Attribute>
29067       <Attribute readonly="readonly" name="serverToClientTotal" id="::DataSynchronization::SyncStatistics::serverToClientTotal">
29068         <webidl>    readonly attribute unsigned long serverToClientTotal;</webidl>
29069         <descriptive>
29070             <brief>
29071  An attribute to indicate the total number of items sent from the server to the client direction.
29072             </brief>
29073             <version>
29074  2.1
29075             </version>
29076         </descriptive>
29077         <Type type="unsigned long"/>
29078       </Attribute>
29079       <Attribute readonly="readonly" name="serverToClientAdded" id="::DataSynchronization::SyncStatistics::serverToClientAdded">
29080         <webidl>    readonly attribute unsigned long serverToClientAdded;</webidl>
29081         <descriptive>
29082             <brief>
29083  An attribute to indicate the number of added items from the server to the client direction.
29084             </brief>
29085             <version>
29086  2.1
29087             </version>
29088         </descriptive>
29089         <Type type="unsigned long"/>
29090       </Attribute>
29091       <Attribute readonly="readonly" name="serverToClientUpdated" id="::DataSynchronization::SyncStatistics::serverToClientUpdated">
29092         <webidl>    readonly attribute unsigned long serverToClientUpdated;</webidl>
29093         <descriptive>
29094             <brief>
29095  An attribute to indicate the number of updated items from the server to the client direction.
29096             </brief>
29097             <version>
29098  2.1
29099             </version>
29100         </descriptive>
29101         <Type type="unsigned long"/>
29102       </Attribute>
29103       <Attribute readonly="readonly" name="serverToClientRemoved" id="::DataSynchronization::SyncStatistics::serverToClientRemoved">
29104         <webidl>    readonly attribute unsigned long serverToClientRemoved;</webidl>
29105         <descriptive>
29106             <brief>
29107  An attribute to indicate the number of removed items from the server to the client direction.
29108             </brief>
29109             <version>
29110  2.1
29111             </version>
29112         </descriptive>
29113         <Type type="unsigned long"/>
29114       </Attribute>
29115       <Attribute readonly="readonly" name="clientToServerTotal" id="::DataSynchronization::SyncStatistics::clientToServerTotal">
29116         <webidl>    readonly attribute unsigned long clientToServerTotal;</webidl>
29117         <descriptive>
29118             <brief>
29119  An attribute to indicate the total number of items from the client to the server direction.
29120             </brief>
29121             <version>
29122  2.1
29123             </version>
29124         </descriptive>
29125         <Type type="unsigned long"/>
29126       </Attribute>
29127       <Attribute readonly="readonly" name="clientToServerAdded" id="::DataSynchronization::SyncStatistics::clientToServerAdded">
29128         <webidl>    readonly attribute unsigned long clientToServerAdded;</webidl>
29129         <descriptive>
29130             <brief>
29131  An attribute to indicate the number of added items from the client to the server direction.
29132             </brief>
29133             <version>
29134  2.1
29135             </version>
29136         </descriptive>
29137         <Type type="unsigned long"/>
29138       </Attribute>
29139       <Attribute readonly="readonly" name="clientToServerUpdated" id="::DataSynchronization::SyncStatistics::clientToServerUpdated">
29140         <webidl>    readonly attribute unsigned long clientToServerUpdated;</webidl>
29141         <descriptive>
29142             <brief>
29143  An attribute to indicate the number of updated items from the client to the server direction.
29144             </brief>
29145             <version>
29146  2.1
29147             </version>
29148         </descriptive>
29149         <Type type="unsigned long"/>
29150       </Attribute>
29151       <Attribute readonly="readonly" name="clientToServerRemoved" id="::DataSynchronization::SyncStatistics::clientToServerRemoved">
29152         <webidl>    readonly attribute unsigned long clientToServerRemoved;</webidl>
29153         <descriptive>
29154             <brief>
29155  An attribute to indicate the number of removed items from the client to the server direction.
29156             </brief>
29157             <version>
29158  2.1
29159             </version>
29160         </descriptive>
29161         <Type type="unsigned long"/>
29162       </Attribute>
29163     </Interface>
29164     <Interface name="DataSynchronizationManager" id="::DataSynchronization::DataSynchronizationManager">
29165       <webidl>  [NoInterfaceObject] interface DataSynchronizationManager {
29166     void add(<ref>SyncProfileInfo</ref> profile) raises(<ref>WebAPIException</ref>);
29167
29168     void update(<ref>SyncProfileInfo</ref> profile) raises(<ref>WebAPIException</ref>);
29169
29170     void remove(<ref>SyncProfileId</ref> profileId) raises(<ref>WebAPIException</ref>);
29171
29172     long getMaxProfilesNum() raises(<ref>WebAPIException</ref>);
29173
29174     unsigned long getProfilesNum() raises(<ref>WebAPIException</ref>);
29175
29176     <ref>SyncProfileInfo</ref> get(<ref>SyncProfileId</ref> profileId) raises(<ref>WebAPIException</ref>);
29177
29178     <ref>SyncProfileInfo</ref>[] getAll() raises(<ref>WebAPIException</ref>);
29179
29180     void startSync(<ref>SyncProfileId</ref> profileId, optional <ref>SyncProgressCallback</ref>? progressCallback) raises(<ref>WebAPIException</ref>);
29181
29182     void stopSync(<ref>SyncProfileId</ref> profileId) raises(<ref>WebAPIException</ref>);
29183
29184     <ref>SyncStatistics</ref>[] getLastSyncStatistics(<ref>SyncProfileId</ref> profileId) raises(<ref>WebAPIException</ref>);
29185   };</webidl>
29186       <descriptive>
29187           <brief>
29188  This interface allows managing profiles and synchronizing data between the server and the client device based on the stored profile information.
29189           </brief>
29190           <version>
29191  2.1
29192           </version>
29193       </descriptive>
29194       <ExtendedAttributeList>
29195         <ExtendedAttribute name="NoInterfaceObject">
29196           <webidl>NoInterfaceObject</webidl>
29197         </ExtendedAttribute>
29198       </ExtendedAttributeList>
29199       <Operation name="add" id="::DataSynchronization::DataSynchronizationManager::add">
29200         <webidl>    void add(<ref>SyncProfileInfo</ref> profile) raises(<ref>WebAPIException</ref>);</webidl>
29201         <descriptive>
29202             <brief>
29203  Adds a sync profile.
29204             </brief>
29205            <description>
29206             <p>
29207 The profile ID is provided when the profile is successfully added.
29208             </p>
29209            </description>
29210             <version>
29211  2.1
29212             </version>
29213             <privilegelevel>
29214  public
29215             </privilegelevel>
29216             <privilege>
29217  http://tizen.org/privilege/datasync
29218             </privilege>
29219             <Code> // Creates a sync info
29220  var syncInfo = new tizen.SyncInfo(&quot;http://example.com/sync&quot;, &quot;myId&quot;, &quot;myPassword&quot;, &quot;MANUAL&quot;, &quot;TWO_WAY&quot;);
29221
29222  // Syncs both contacts and events
29223  var contactInfo = new tizen.SyncServiceInfo(true, &quot;CONTACT&quot;, &quot;serverContact&quot;);
29224  var eventInfo = new tizen.SyncServiceInfo(true, &quot;EVENT&quot;, &quot;serverEvent&quot;);
29225  var serviceInfo = [contactInfo, eventInfo];
29226
29227  // Adds a profile to sync
29228  var profile = new tizen.SyncProfileInfo(&quot;MyProfile&quot;, syncInfo, serviceInfo);
29229  tizen.datasync.add(profile);
29230  </Code>
29231         </descriptive>
29232         <Type type="void"/>
29233         <ArgumentList>
29234           <Argument name="profile">
29235             <descriptive>
29236                 <description><p>
29237  The sync profile information to add.
29238                 </p></description>
29239             </descriptive>
29240             <Type name="SyncProfileInfo"/>
29241           </Argument>
29242         </ArgumentList>
29243         <Raises>
29244           <RaiseException name="WebAPIException">
29245             <descriptive>
29246                 <description><p>
29247  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
29248                 </p></description>
29249                 <description><p>
29250  with error type QuotaExceededError, if the platform has already reached the maximum number of profiles.
29251                 </p></description>
29252                 <description><p>
29253  with error type NotSupportedError, if this feature is not supported.
29254                 </p></description>
29255                 <description><p>
29256  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
29257                 </p></description>
29258                 <description><p>
29259  with error type SecurityError, if the application does not have the privilege to call this method.
29260                 </p></description>
29261                 <description><p>
29262  with error type UnknownError, if any other error occurs.
29263                 </p></description>
29264             </descriptive>
29265           </RaiseException>
29266         </Raises>
29267       </Operation>
29268       <Operation name="update" id="::DataSynchronization::DataSynchronizationManager::update">
29269         <webidl>    void update(<ref>SyncProfileInfo</ref> profile) raises(<ref>WebAPIException</ref>);</webidl>
29270         <descriptive>
29271             <brief>
29272  Updates an existing sync profile.
29273             </brief>
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> // Retrieves and updates a profile
29284  var profile = tizen.datasync.get(profileId);
29285
29286  profile.profileName = &quot;newProfileName&quot;;
29287
29288  tizen.datasync.update(profile);
29289  </Code>
29290         </descriptive>
29291         <Type type="void"/>
29292         <ArgumentList>
29293           <Argument name="profile">
29294             <descriptive>
29295                 <description><p>
29296  The sync profile information to update.
29297                 </p></description>
29298             </descriptive>
29299             <Type name="SyncProfileInfo"/>
29300           </Argument>
29301         </ArgumentList>
29302         <Raises>
29303           <RaiseException name="WebAPIException">
29304             <descriptive>
29305                 <description><p>
29306  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
29307                 </p></description>
29308                 <description><p>
29309  with error type NotSupportedError, if this feature is not supported.
29310                 </p></description>
29311                 <description><p>
29312  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
29313                 </p></description>
29314                 <description><p>
29315  with error type SecurityError, if the application does not have the privilege to call this method.
29316                 </p></description>
29317                 <description><p>
29318  with error type UnknownError, if any other error occurs.
29319                 </p></description>
29320             </descriptive>
29321           </RaiseException>
29322         </Raises>
29323       </Operation>
29324       <Operation name="remove" id="::DataSynchronization::DataSynchronizationManager::remove">
29325         <webidl>    void remove(<ref>SyncProfileId</ref> profileId) raises(<ref>WebAPIException</ref>);</webidl>
29326         <descriptive>
29327             <brief>
29328  Removes an existing sync profile.
29329             </brief>
29330             <version>
29331  2.1
29332             </version>
29333             <privilegelevel>
29334  public
29335             </privilegelevel>
29336             <privilege>
29337  http://tizen.org/privilege/datasync
29338             </privilege>
29339             <Code> // Removes a profile
29340  tizen.datasync.remove(profileId);
29341  </Code>
29342         </descriptive>
29343         <Type type="void"/>
29344         <ArgumentList>
29345           <Argument name="profileId">
29346             <descriptive>
29347                 <description><p>
29348  The sync profile ID to remove.
29349                 </p></description>
29350             </descriptive>
29351             <Type name="SyncProfileId"/>
29352           </Argument>
29353         </ArgumentList>
29354         <Raises>
29355           <RaiseException name="WebAPIException">
29356             <descriptive>
29357                 <description><p>
29358  with error type NotFoundError, if the identifier does not match any saved profile.
29359                 </p></description>
29360                 <description><p>
29361  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
29362                 </p></description>
29363                 <description><p>
29364  with error type NotSupportedError, if this feature is not supported.
29365                 </p></description>
29366                 <description><p>
29367  with error type SecurityError, if the application does not have the privilege to call this method.
29368                 </p></description>
29369                 <description><p>
29370  with error type UnknownError, if any other error occurs.
29371                 </p></description>
29372             </descriptive>
29373           </RaiseException>
29374         </Raises>
29375       </Operation>
29376       <Operation name="getMaxProfilesNum" id="::DataSynchronization::DataSynchronizationManager::getMaxProfilesNum">
29377         <webidl>    long getMaxProfilesNum() raises(<ref>WebAPIException</ref>);</webidl>
29378         <descriptive>
29379             <brief>
29380  Gets the maximum number of supported sync profiles on a platform.
29381 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.
29382             </brief>
29383             <version>
29384  2.1
29385             </version>
29386             <privilegelevel>
29387  public
29388             </privilegelevel>
29389             <privilege>
29390  http://tizen.org/privilege/datasync
29391             </privilege>
29392             <Code> // Gets the maximum number of supported profiles on the platform
29393  var numMaxProfiles = tizen.datasync.getMaxProfilesNum();
29394  </Code>
29395         </descriptive>
29396         <Type type="long">
29397           <descriptive>
29398               <description><p>
29399  long The number of supported profiles on a platform.
29400               </p></description>
29401           </descriptive>
29402         </Type>
29403         <ArgumentList/>
29404         <Raises>
29405           <RaiseException name="WebAPIException">
29406             <descriptive>
29407                 <description><p>
29408  with error type NotSupportedError, if this feature is not supported.
29409                 </p></description>
29410                 <description><p>
29411  with error type SecurityError, if the application does not have the privilege to call this method.
29412                 </p></description>
29413                 <description><p>
29414  with error type UnknownError, if any other error occurs.
29415                 </p></description>
29416             </descriptive>
29417           </RaiseException>
29418         </Raises>
29419       </Operation>
29420       <Operation name="getProfilesNum" id="::DataSynchronization::DataSynchronizationManager::getProfilesNum">
29421         <webidl>    unsigned long getProfilesNum() raises(<ref>WebAPIException</ref>);</webidl>
29422         <descriptive>
29423             <brief>
29424  Gets the current number of sync profiles on a device.
29425             </brief>
29426             <version>
29427  2.1
29428             </version>
29429             <privilegelevel>
29430  public
29431             </privilegelevel>
29432             <privilege>
29433  http://tizen.org/privilege/datasync
29434             </privilege>
29435             <Code> // Gets the present number of profiles on the device
29436  var numProfiles = tizen.datasync.getProfilesNum();
29437  </Code>
29438         </descriptive>
29439         <Type type="unsigned long">
29440           <descriptive>
29441               <description><p>
29442  unsigned long The current number of profiles on a device.
29443               </p></description>
29444           </descriptive>
29445         </Type>
29446         <ArgumentList/>
29447         <Raises>
29448           <RaiseException name="WebAPIException">
29449             <descriptive>
29450                 <description><p>
29451  with error type NotSupportedError, if this feature is not supported.
29452                 </p></description>
29453                 <description><p>
29454  with error type SecurityError, if the application does not have the privilege to call this method.
29455                 </p></description>
29456                 <description><p>
29457  with error type UnknownError, if any other error occurs.
29458                 </p></description>
29459             </descriptive>
29460           </RaiseException>
29461         </Raises>
29462       </Operation>
29463       <Operation name="get" id="::DataSynchronization::DataSynchronizationManager::get">
29464         <webidl>    <ref>SyncProfileInfo</ref> get(<ref>SyncProfileId</ref> profileId) raises(<ref>WebAPIException</ref>);</webidl>
29465         <descriptive>
29466             <brief>
29467  Gets the <em>SyncProfileInfo</em> object from a given profile ID.
29468             </brief>
29469            <description>
29470             <p>
29471 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>.
29472             </p>
29473            </description>
29474             <version>
29475  2.1
29476             </version>
29477             <privilegelevel>
29478  public
29479             </privilegelevel>
29480             <privilege>
29481  http://tizen.org/privilege/datasync
29482             </privilege>
29483             <Code> // Gets the profile information with the given ID
29484  var profile = tizen.datasync.get(profileId);
29485  </Code>
29486         </descriptive>
29487         <Type name="SyncProfileInfo">
29488           <descriptive>
29489               <description><p>
29490  SyncProfileInfo The profile information of the given ID.
29491               </p></description>
29492           </descriptive>
29493         </Type>
29494         <ArgumentList>
29495           <Argument name="profileId">
29496             <descriptive>
29497                 <description><p>
29498  The ID to use to get the profile information.
29499                 </p></description>
29500             </descriptive>
29501             <Type name="SyncProfileId"/>
29502           </Argument>
29503         </ArgumentList>
29504         <Raises>
29505           <RaiseException name="WebAPIException">
29506             <descriptive>
29507                 <description><p>
29508  with error type NotFoundError, if the identifier does not match any profile saved.
29509                 </p></description>
29510                 <description><p>
29511  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
29512                 </p></description>
29513                 <description><p>
29514  with error type NotSupportedError, if this feature is not supported.
29515                 </p></description>
29516                 <description><p>
29517  with error type SecurityError, if the application does not have the privilege to call this method.
29518                 </p></description>
29519                 <description><p>
29520  with error type UnknownError, if any other error occurs.
29521                 </p></description>
29522             </descriptive>
29523           </RaiseException>
29524         </Raises>
29525       </Operation>
29526       <Operation name="getAll" id="::DataSynchronization::DataSynchronizationManager::getAll">
29527         <webidl>    <ref>SyncProfileInfo</ref>[] getAll() raises(<ref>WebAPIException</ref>);</webidl>
29528         <descriptive>
29529             <brief>
29530  Gets the information of all sync profiles saved in a device.
29531             </brief>
29532            <description>
29533             <p>
29534 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>.
29535             </p>
29536            </description>
29537             <version>
29538  2.1
29539             </version>
29540             <privilegelevel>
29541  public
29542             </privilegelevel>
29543             <privilege>
29544  http://tizen.org/privilege/datasync
29545             </privilege>
29546             <Code> // Gets the all profile information
29547  var profiles = tizen.datasync.getAll();
29548  </Code>
29549         </descriptive>
29550         <Type type="array">
29551           <descriptive>
29552               <description><p>
29553  SyncProfileInfo[] The profile information array.
29554               </p></description>
29555           </descriptive>
29556           <Type name="SyncProfileInfo"/>
29557         </Type>
29558         <ArgumentList/>
29559         <Raises>
29560           <RaiseException name="WebAPIException">
29561             <descriptive>
29562                 <description><p>
29563  with error type NotSupportedError, if this feature is not supported.
29564                 </p></description>
29565                 <description><p>
29566  with error type SecurityError, if the application does not have the privilege to call this method.
29567                 </p></description>
29568                 <description><p>
29569  with error type UnknownError, if any other error occurs.
29570                 </p></description>
29571             </descriptive>
29572           </RaiseException>
29573         </Raises>
29574       </Operation>
29575       <Operation name="startSync" id="::DataSynchronization::DataSynchronizationManager::startSync">
29576         <webidl>    void startSync(<ref>SyncProfileId</ref> profileId, optional <ref>SyncProgressCallback</ref>? progressCallback) raises(<ref>WebAPIException</ref>);</webidl>
29577         <descriptive>
29578             <brief>
29579  Starts a sync operation with a given profile ID.
29580             </brief>
29581            <description>
29582             <p>
29583 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.
29584             </p>
29585            </description>
29586             <version>
29587  2.1
29588             </version>
29589             <privilegelevel>
29590  public
29591             </privilegelevel>
29592             <privilege>
29593  http://tizen.org/privilege/datasync
29594             </privilege>
29595             <Code> var profileId; //profileId obtained from SyncProfileInfo
29596  var syncCallback = {
29597    onprogress: function(profileId, serviceType, isFromServer, totalPerType, syncedPerType) {
29598      console.log('Total: ' + totalPerType + ', synced: ' + syncedPerType + ' for the sync type: ' + serviceType);
29599    },
29600    onfailed: function(profileId, error) {
29601       console.log('Failed with id: ' + profileId + ', error name: ' + error.name);
29602    }
29603  };
29604
29605  // Starts the sync operation with the corresponding callbacks
29606  tizen.datasync.startSync(profileId, syncCallback);
29607  </Code>
29608         </descriptive>
29609         <Type type="void"/>
29610         <ArgumentList>
29611           <Argument name="profileId">
29612             <descriptive>
29613                 <description><p>
29614  The profile ID with which to initiate the sync operation.
29615                 </p></description>
29616             </descriptive>
29617             <Type name="SyncProfileId"/>
29618           </Argument>
29619           <Argument optional="optional" name="progressCallback">
29620             <descriptive>
29621                 <description><p>
29622  The method to invoke when the sync operation progresses or an error occurs.
29623                 </p></description>
29624             </descriptive>
29625             <Type name="SyncProgressCallback" nullable="nullable"/>
29626           </Argument>
29627         </ArgumentList>
29628         <Raises>
29629           <RaiseException name="WebAPIException">
29630             <descriptive>
29631                 <description><p>
29632  with error type NotFoundError, if the identifier does not match any profile saved.
29633                 </p></description>
29634                 <description><p>
29635  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
29636                 </p></description>
29637                 <description><p>
29638  with error type NotSupportedError, if this feature is not supported.
29639                 </p></description>
29640                 <description><p>
29641  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
29642                 </p></description>
29643                 <description><p>
29644  with error type SecurityError, if the application does not have the privilege to call this method.
29645                 </p></description>
29646                 <description><p>
29647  with error type UnknownError, if any other error occurs.
29648                 </p></description>
29649             </descriptive>
29650           </RaiseException>
29651         </Raises>
29652       </Operation>
29653       <Operation name="stopSync" id="::DataSynchronization::DataSynchronizationManager::stopSync">
29654         <webidl>    void stopSync(<ref>SyncProfileId</ref> profileId) raises(<ref>WebAPIException</ref>);</webidl>
29655         <descriptive>
29656             <brief>
29657  Stops an ongoing sync operation that is specified by the <em>profileId</em> parameter.
29658             </brief>
29659             <version>
29660  2.1
29661             </version>
29662             <privilegelevel>
29663  public
29664             </privilegelevel>
29665             <privilege>
29666  http://tizen.org/privilege/datasync
29667             </privilege>
29668             <Code> var profileId; //profileId obtained from SyncProfileInfo
29669  // Stops the ongoing sync operation
29670  tizen.datasync.stopSync(profileId);
29671  </Code>
29672         </descriptive>
29673         <Type type="void"/>
29674         <ArgumentList>
29675           <Argument name="profileId">
29676             <descriptive>
29677                 <description><p>
29678  The ID of the ongoing sync operation to stop.
29679                 </p></description>
29680             </descriptive>
29681             <Type name="SyncProfileId"/>
29682           </Argument>
29683         </ArgumentList>
29684         <Raises>
29685           <RaiseException name="WebAPIException">
29686             <descriptive>
29687                 <description><p>
29688  with error type NotFoundError, if the identifier does not match any profile saved.
29689                 </p></description>
29690                 <description><p>
29691  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
29692                 </p></description>
29693                 <description><p>
29694  with error type NotSupportedError, if this feature is not supported.
29695                 </p></description>
29696                 <description><p>
29697  with error type SecurityError, if the application does not have the privilege to call this method.
29698                 </p></description>
29699                 <description><p>
29700  with error type UnknownError, if any other error occurs.
29701                 </p></description>
29702             </descriptive>
29703           </RaiseException>
29704         </Raises>
29705       </Operation>
29706       <Operation name="getLastSyncStatistics" id="::DataSynchronization::DataSynchronizationManager::getLastSyncStatistics">
29707         <webidl>    <ref>SyncStatistics</ref>[] getLastSyncStatistics(<ref>SyncProfileId</ref> profileId) raises(<ref>WebAPIException</ref>);</webidl>
29708         <descriptive>
29709             <brief>
29710  Gets the sync statistics of a given profile ID.
29711             </brief>
29712             <version>
29713  2.1
29714             </version>
29715             <privilegelevel>
29716  public
29717             </privilegelevel>
29718             <privilege>
29719  http://tizen.org/privilege/datasync
29720             </privilege>
29721             <Code> var profileId; //profileId obtained from SyncProfileInfo
29722  // Gets the sync statistics information with the given ID
29723  var statistics = tizen.datasync.getLastSyncStatistics(profileId);
29724  </Code>
29725         </descriptive>
29726         <Type type="array">
29727           <descriptive>
29728               <description><p>
29729  SyncStatictics[] The sync statistics information of a given ID.
29730               </p></description>
29731           </descriptive>
29732           <Type name="SyncStatistics"/>
29733         </Type>
29734         <ArgumentList>
29735           <Argument name="profileId">
29736             <descriptive>
29737                 <description><p>
29738  The ID to use to get the sync statistics.
29739                 </p></description>
29740             </descriptive>
29741             <Type name="SyncProfileId"/>
29742           </Argument>
29743         </ArgumentList>
29744         <Raises>
29745           <RaiseException name="WebAPIException">
29746             <descriptive>
29747                 <description><p>
29748  with error type NotFoundError, if the identifier does not match any profile saved.
29749                 </p></description>
29750                 <description><p>
29751  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
29752                 </p></description>
29753                 <description><p>
29754  with error type NotSupportedError, if this feature is not supported.
29755                 </p></description>
29756                 <description><p>
29757  with error type SecurityError, if the application does not have the privilege to call this method.
29758                 </p></description>
29759                 <description><p>
29760  with error type UnknownError, if any other error occurs.
29761                 </p></description>
29762             </descriptive>
29763           </RaiseException>
29764         </Raises>
29765       </Operation>
29766     </Interface>
29767     <Interface name="SyncProgressCallback" id="::DataSynchronization::SyncProgressCallback">
29768       <webidl>  [Callback, NoInterfaceObject] interface SyncProgressCallback {
29769     void onprogress(<ref>SyncProfileId</ref> profileId, <ref>SyncServiceType</ref> serviceType, boolean isFromServer, unsigned long totalPerService, unsigned long syncedPerService);
29770
29771     void oncompleted(<ref>SyncProfileId</ref> profileId);
29772
29773     void onstopped(<ref>SyncProfileId</ref> profileId);
29774
29775     void onfailed(<ref>SyncProfileId</ref> profileId, <ref>WebAPIError</ref> error);
29776   };</webidl>
29777       <descriptive>
29778           <brief>
29779  This interface defines progress notification callbacks for the ongoing sync operation.
29780           </brief>
29781           <version>
29782  2.1
29783           </version>
29784       </descriptive>
29785       <ExtendedAttributeList>
29786         <ExtendedAttribute name="Callback">
29787           <webidl>Callback</webidl>
29788         </ExtendedAttribute>
29789         <ExtendedAttribute name="NoInterfaceObject">
29790           <webidl> NoInterfaceObject</webidl>
29791         </ExtendedAttribute>
29792       </ExtendedAttributeList>
29793       <Operation name="onprogress" id="::DataSynchronization::SyncProgressCallback::onprogress">
29794         <webidl>    void onprogress(<ref>SyncProfileId</ref> profileId, <ref>SyncServiceType</ref> serviceType, boolean isFromServer, unsigned long totalPerService, unsigned long syncedPerService);</webidl>
29795         <descriptive>
29796             <brief>
29797  Called when a synchronization operation is started and progress is made.
29798             </brief>
29799            <description>
29800             <p>
29801 The frequency of this callback invocation is dependent on the platform implementation.
29802 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.
29803             </p>
29804            </description>
29805             <version>
29806  2.1
29807             </version>
29808         </descriptive>
29809         <Type type="void"/>
29810         <ArgumentList>
29811           <Argument name="profileId">
29812             <descriptive>
29813                 <description><p>
29814  The ID of the corresponding sync operation.
29815                 </p></description>
29816             </descriptive>
29817             <Type name="SyncProfileId"/>
29818           </Argument>
29819           <Argument name="serviceType">
29820             <descriptive>
29821                 <description><p>
29822  The sync service category type.
29823                 </p></description>
29824             </descriptive>
29825             <Type name="SyncServiceType"/>
29826           </Argument>
29827           <Argument name="isFromServer">
29828             <descriptive>
29829                 <description><p>
29830  The direction of the operation.<br/> If the direction of operation is from the server to the client, then value is<var> true</var>.
29831                 </p></description>
29832             </descriptive>
29833             <Type type="boolean"/>
29834           </Argument>
29835           <Argument name="totalPerService">
29836             <descriptive>
29837                 <description><p>
29838  The total number of records to synchronize for the current sync service type aggregating all operations.
29839                 </p></description>
29840             </descriptive>
29841             <Type type="unsigned long"/>
29842           </Argument>
29843           <Argument name="syncedPerService">
29844             <descriptive>
29845                 <description><p>
29846  The number of synchronized records for the current sync service type aggregating all operations.
29847                 </p></description>
29848             </descriptive>
29849             <Type type="unsigned long"/>
29850           </Argument>
29851         </ArgumentList>
29852       </Operation>
29853       <Operation name="oncompleted" id="::DataSynchronization::SyncProgressCallback::oncompleted">
29854         <webidl>    void oncompleted(<ref>SyncProfileId</ref> profileId);</webidl>
29855         <descriptive>
29856             <brief>
29857  Called when the sync operation has completed.
29858             </brief>
29859             <version>
29860  2.1
29861             </version>
29862         </descriptive>
29863         <Type type="void"/>
29864         <ArgumentList>
29865           <Argument name="profileId">
29866             <descriptive>
29867                 <description><p>
29868  The ID of the corresponding sync operation.
29869                 </p></description>
29870             </descriptive>
29871             <Type name="SyncProfileId"/>
29872           </Argument>
29873         </ArgumentList>
29874       </Operation>
29875       <Operation name="onstopped" id="::DataSynchronization::SyncProgressCallback::onstopped">
29876         <webidl>    void onstopped(<ref>SyncProfileId</ref> profileId);</webidl>
29877         <descriptive>
29878             <brief>
29879  Called when the sync operation is stopped by user.
29880             </brief>
29881             <version>
29882  2.1
29883             </version>
29884         </descriptive>
29885         <Type type="void"/>
29886         <ArgumentList>
29887           <Argument name="profileId">
29888             <descriptive>
29889                 <description><p>
29890  The ID of the corresponding sync operation.
29891                 </p></description>
29892             </descriptive>
29893             <Type name="SyncProfileId"/>
29894           </Argument>
29895         </ArgumentList>
29896       </Operation>
29897       <Operation name="onfailed" id="::DataSynchronization::SyncProgressCallback::onfailed">
29898         <webidl>    void onfailed(<ref>SyncProfileId</ref> profileId, <ref>WebAPIError</ref> error);</webidl>
29899         <descriptive>
29900             <brief>
29901  Called when the sync operation fails.
29902             </brief>
29903             <version>
29904  2.1
29905             </version>
29906         </descriptive>
29907         <Type type="void"/>
29908         <ArgumentList>
29909           <Argument name="profileId">
29910             <descriptive>
29911                 <description><p>
29912  The ID of the corresponding sync operation.
29913                 </p></description>
29914             </descriptive>
29915             <Type name="SyncProfileId"/>
29916           </Argument>
29917           <Argument name="error">
29918             <descriptive>
29919                 <description><p>
29920  The reason for the sync failure.
29921                 </p></description>
29922             </descriptive>
29923             <Type name="WebAPIError"/>
29924           </Argument>
29925         </ArgumentList>
29926       </Operation>
29927     </Interface>
29928   </Module>
29929   <Module name="Download" id="::Download">
29930     <webidl>module Download {
29931     typedef object DownloadHTTPHeaderFields;
29932
29933     enum DownloadState { &quot;QUEUED&quot;, &quot;DOWNLOADING&quot;, &quot;PAUSED&quot;, &quot;CANCELED&quot;, &quot;COMPLETED&quot;, &quot;FAILED&quot; };
29934
29935     enum DownloadNetworkType { &quot;CELLULAR&quot;, &quot;WIFI&quot;, &quot;ALL&quot; };
29936
29937     [NoInterfaceObject] interface DownloadManagerObject {
29938         readonly attribute <ref>DownloadManager</ref> download;
29939     };
29940     <ref>Tizen</ref> implements <ref>DownloadManagerObject</ref>;
29941
29942     [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     };
29954
29955    [NoInterfaceObject] interface DownloadManager {
29956        long start(<ref>DownloadRequest</ref> downloadRequest,
29957                     optional <ref>DownloadCallback</ref>? downloadCallback) raises(<ref>WebAPIException</ref>);
29958
29959        void cancel(long downloadId) raises(<ref>WebAPIException</ref>);
29960
29961        void pause(long downloadId) raises(<ref>WebAPIException</ref>);
29962
29963        void resume(long downloadId) raises(<ref>WebAPIException</ref>);
29964
29965        <ref>DownloadState</ref> getState(long downloadId) raises(<ref>WebAPIException</ref>);
29966
29967        <ref>DownloadRequest</ref> getDownloadRequest(long downloadId) raises(<ref>WebAPIException</ref>);
29968
29969        DOMString getMIMEType(long downloadId) raises(<ref>WebAPIException</ref>);
29970
29971        void setListener(long downloadId, <ref>DownloadCallback</ref> downloadCallback) raises(<ref>WebAPIException</ref>);
29972    };
29973
29974    [Callback, NoInterfaceObject] interface DownloadCallback {
29975        void onprogress(long downloadId, unsigned long long receivedSize, unsigned long long totalSize);
29976
29977        void onpaused(long downloadId);
29978
29979        void oncanceled(long downloadId);
29980
29981        void oncompleted(long downloadId, DOMString fullPath);
29982
29983        void onfailed(long downloadId, <ref>WebAPIError</ref> error);
29984    };
29985 };</webidl>
29986     <descriptive>
29987         <brief>
29988  This API provides methods to asynchronously download the contents of a URL to a storage.
29989         </brief>
29990        <description>
29991         <p>
29992 For more information on the Download features, see <a href="../../org.tizen.web.appprogramming/html/guide/content_guide/download.htm">Download Guide</a>.
29993         </p>
29994        </description>
29995         <version>
29996  2.0
29997         </version>
29998         <def-api-feature identifier="http://tizen.org/feature/network.wifi">
29999           <descriptive>
30000            <description>
30001             <p>
30002 To guarantee this application running on a device with Wi-Fi feature, define below in the config file: 
30003             </p>
30004            </description>
30005           </descriptive>
30006         </def-api-feature>
30007         <def-api-feature identifier="http://tizen.org/feature/network.telephony">
30008           <descriptive>
30009            <description>
30010             <p>
30011 To guarantee this application running on a device with Cellular feature, define below in the config file: 
30012             </p>
30013            </description>
30014           </descriptive>
30015         </def-api-feature>
30016     </descriptive>
30017     <Typedef name="DownloadHTTPHeaderFields" id="::Download::DownloadHTTPHeaderFields">
30018       <webidl>    typedef object DownloadHTTPHeaderFields;</webidl>
30019       <descriptive>
30020           <brief>
30021  A set of HTTP header fields.
30022           </brief>
30023          <description>
30024           <p>
30025 The key / value type of each HTTP header field should be DOMString.
30026           </p>
30027          </description>
30028           <version>
30029  2.1
30030           </version>
30031       </descriptive>
30032       <Type type="object"/>
30033     </Typedef>
30034     <Enum name="DownloadState" id="::Download::DownloadState">
30035       <webidl>    enum DownloadState { &quot;QUEUED&quot;, &quot;DOWNLOADING&quot;, &quot;PAUSED&quot;, &quot;CANCELED&quot;, &quot;COMPLETED&quot;, &quot;FAILED&quot; };</webidl>
30036       <descriptive>
30037           <brief>
30038  An enumerator to indicate the state of a download operation.
30039           </brief>
30040          <description>
30041           <p>
30042 The following values are supported:
30043           </p>
30044           <ul>
30045             <li>
30046 QUEUED - Indicates that the download operation is listed in a queue.            </li>
30047             <li>
30048 DOWNLOADING - Indicates that the download operation is in progress.            </li>
30049             <li>
30050 PAUSED - Indicates that the download operation is in a paused state by user request.            </li>
30051             <li>
30052 CANCELED - Indicates that the download operation is canceled by user request.            </li>
30053             <li>
30054 COMPLETED - Indicates that the download operation is in a completed state.            </li>
30055             <li>
30056 FAILED - Indicates that the download operation has failed due to some reasons.            </li>
30057           </ul>
30058          </description>
30059           <version>
30060  2.0
30061           </version>
30062       </descriptive>
30063       <EnumValue stringvalue="QUEUED">
30064         <webidl> &quot;QUEUED</webidl>
30065       </EnumValue>
30066       <EnumValue stringvalue="DOWNLOADING">
30067         <webidl> &quot;DOWNLOADING</webidl>
30068       </EnumValue>
30069       <EnumValue stringvalue="PAUSED">
30070         <webidl> &quot;PAUSED</webidl>
30071       </EnumValue>
30072       <EnumValue stringvalue="CANCELED">
30073         <webidl> &quot;CANCELED</webidl>
30074       </EnumValue>
30075       <EnumValue stringvalue="COMPLETED">
30076         <webidl> &quot;COMPLETED</webidl>
30077       </EnumValue>
30078       <EnumValue stringvalue="FAILED">
30079         <webidl> &quot;FAILED</webidl>
30080       </EnumValue>
30081     </Enum>
30082     <Enum name="DownloadNetworkType" id="::Download::DownloadNetworkType">
30083       <webidl>    enum DownloadNetworkType { &quot;CELLULAR&quot;, &quot;WIFI&quot;, &quot;ALL&quot; };</webidl>
30084       <descriptive>
30085           <brief>
30086  An enumerator to indicate the network type.
30087           </brief>
30088          <description>
30089           <p>
30090 The following values are supported:
30091           </p>
30092           <ul>
30093             <li>
30094 CELLULAR - Indicates that the download operation is allowed in the cellular network only.            </li>
30095             <li>
30096 WIFI - Indicates that the download operation is allowed in the Wi-Fi network only.            </li>
30097             <li>
30098 ALL - Indicates that the download operation is allowed in all network types.            </li>
30099           </ul>
30100          </description>
30101           <version>
30102  2.1
30103           </version>
30104       </descriptive>
30105       <EnumValue stringvalue="CELLULAR">
30106         <webidl> &quot;CELLULAR</webidl>
30107       </EnumValue>
30108       <EnumValue stringvalue="WIFI">
30109         <webidl> &quot;WIFI</webidl>
30110       </EnumValue>
30111       <EnumValue stringvalue="ALL">
30112         <webidl> &quot;ALL</webidl>
30113       </EnumValue>
30114     </Enum>
30115     <Interface name="DownloadManagerObject" id="::Download::DownloadManagerObject">
30116       <webidl>    [NoInterfaceObject] interface DownloadManagerObject {
30117         readonly attribute <ref>DownloadManager</ref> download;
30118     };</webidl>
30119       <descriptive>
30120           <brief>
30121  This interface defines the default download manager that is instantiated by the <em>Tizen </em>object.
30122 There will be a <em>tizen.download </em>object that allows access to the functionality of the Download API.
30123           </brief>
30124           <version>
30125  2.0
30126           </version>
30127       </descriptive>
30128       <ExtendedAttributeList>
30129         <ExtendedAttribute name="NoInterfaceObject">
30130           <webidl>NoInterfaceObject</webidl>
30131         </ExtendedAttribute>
30132       </ExtendedAttributeList>
30133       <Attribute readonly="readonly" name="download" id="::Download::DownloadManagerObject::download">
30134         <webidl>        readonly attribute <ref>DownloadManager</ref> download;</webidl>
30135         <Type name="DownloadManager"/>
30136       </Attribute>
30137     </Interface>
30138     <Implements name1="Tizen" name2="DownloadManagerObject">
30139       <webidl>    <ref>Tizen</ref> implements <ref>DownloadManagerObject</ref>;</webidl>
30140     </Implements>
30141     <Interface name="DownloadRequest" id="::Download::DownloadRequest">
30142       <webidl>    [Constructor(DOMString url, optional DOMString? destination, optional DOMString? fileName, optional <ref>DownloadNetworkType</ref>? networkType, optional <ref>DownloadHTTPHeaderFields</ref>? httpHeader)]
30143     interface DownloadRequest {
30144         attribute DOMString url;
30145
30146         attribute DOMString? destination;
30147
30148         attribute DOMString? fileName;
30149
30150         attribute <ref>DownloadNetworkType</ref>? networkType;
30151
30152         attribute <ref>DownloadHTTPHeaderFields</ref>? httpHeader;
30153     };</webidl>
30154       <descriptive>
30155           <brief>
30156  This interface defines the download request object.
30157           </brief>
30158           <version>
30159  2.0
30160           </version>
30161       </descriptive>
30162       <ExtendedAttributeList>
30163         <ExtendedAttribute name="Constructor">
30164           <webidl>Constructor(DOMString url, optional DOMString? destination, optional DOMString? fileName, optional <ref>DownloadNetworkType</ref>? networkType, optional <ref>DownloadHTTPHeaderFields</ref>? httpHeader)</webidl>
30165           <ArgumentList>
30166             <Argument name="url">
30167               <Type type="DOMString"/>
30168             </Argument>
30169             <Argument optional="optional" name="destination">
30170               <Type type="DOMString" nullable="nullable"/>
30171             </Argument>
30172             <Argument optional="optional" name="fileName">
30173               <Type type="DOMString" nullable="nullable"/>
30174             </Argument>
30175             <Argument optional="optional" name="networkType">
30176               <Type name="DownloadNetworkType" nullable="nullable"/>
30177             </Argument>
30178             <Argument optional="optional" name="httpHeader">
30179               <Type name="DownloadHTTPHeaderFields" nullable="nullable"/>
30180             </Argument>
30181           </ArgumentList>
30182         </ExtendedAttribute>
30183       </ExtendedAttributeList>
30184       <Attribute name="url" id="::Download::DownloadRequest::url">
30185         <webidl>        attribute DOMString url;</webidl>
30186         <descriptive>
30187             <brief>
30188  An attribute to store the URL of the object to download.
30189             </brief>
30190             <version>
30191  2.0
30192             </version>
30193         </descriptive>
30194         <Type type="DOMString"/>
30195       </Attribute>
30196       <Attribute name="destination" id="::Download::DownloadRequest::destination">
30197         <webidl>        attribute DOMString? destination;</webidl>
30198         <descriptive>
30199             <brief>
30200  An attribute to store the folder path of the destination folder to which a requested file object will be downloaded.
30201             </brief>
30202            <description>
30203             <p>
30204 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>.
30205             </p>
30206             <p>
30207 The default value is an empty string.
30208             </p>
30209            </description>
30210             <version>
30211  2.0
30212             </version>
30213         </descriptive>
30214         <Type type="DOMString" nullable="nullable"/>
30215       </Attribute>
30216       <Attribute name="fileName" id="::Download::DownloadRequest::fileName">
30217         <webidl>        attribute DOMString? fileName;</webidl>
30218         <descriptive>
30219             <brief>
30220  An attribute to store the file name for the specified URL.
30221             </brief>
30222            <description>
30223             <p>
30224 If the file name is not given or an empty string, the original file name from URL is used.
30225             </p>
30226             <p>
30227 The default value is an empty string.
30228             </p>
30229            </description>
30230             <version>
30231  2.0
30232             </version>
30233         </descriptive>
30234         <Type type="DOMString" nullable="nullable"/>
30235       </Attribute>
30236       <Attribute name="networkType" id="::Download::DownloadRequest::networkType">
30237         <webidl>        attribute <ref>DownloadNetworkType</ref>? networkType;</webidl>
30238         <descriptive>
30239             <brief>
30240  An attribute to store the allowed network type.
30241             </brief>
30242            <description>
30243             <p>
30244 If the network type is not given, all network type are allowed.
30245             </p>
30246             <p>
30247 The default value is &quot;ALL&quot;.
30248             </p>
30249            </description>
30250             <version>
30251  2.1
30252             </version>
30253         </descriptive>
30254         <Type name="DownloadNetworkType" nullable="nullable"/>
30255       </Attribute>
30256       <Attribute name="httpHeader" id="::Download::DownloadRequest::httpHeader">
30257         <webidl>        attribute <ref>DownloadHTTPHeaderFields</ref>? httpHeader;</webidl>
30258         <descriptive>
30259             <brief>
30260  An attribute to store extra HTTP header fields.
30261             </brief>
30262            <description>
30263             <p>
30264 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>
30265             <p>
30266 The default value is an empty object.
30267             </p>
30268            </description>
30269             <Code> var req = new tizen.DownloadRequest(&quot;http://download.tizen.org/tools/README.txt&quot;);
30270  req.httpHeader[&quot;Pragma&quot;] = &quot;no-cache&quot;;
30271  req.httpHeader[&quot;Cookie&quot;] = &quot;version=1; Skin=new&quot;;
30272  req.httpHeader[&quot;X-Agent&quot;] = &quot;Tizen Sample App&quot;;
30273  </Code>
30274             <version>
30275  2.1
30276             </version>
30277         </descriptive>
30278         <Type name="DownloadHTTPHeaderFields" nullable="nullable"/>
30279       </Attribute>
30280     </Interface>
30281     <Interface name="DownloadManager" id="::Download::DownloadManager">
30282       <webidl>   [NoInterfaceObject] interface DownloadManager {
30283        long start(<ref>DownloadRequest</ref> downloadRequest,
30284                     optional <ref>DownloadCallback</ref>? downloadCallback) raises(<ref>WebAPIException</ref>);
30285
30286        void cancel(long downloadId) raises(<ref>WebAPIException</ref>);
30287
30288        void pause(long downloadId) raises(<ref>WebAPIException</ref>);
30289
30290        void resume(long downloadId) raises(<ref>WebAPIException</ref>);
30291
30292        <ref>DownloadState</ref> getState(long downloadId) raises(<ref>WebAPIException</ref>);
30293
30294        <ref>DownloadRequest</ref> getDownloadRequest(long downloadId) raises(<ref>WebAPIException</ref>);
30295
30296        DOMString getMIMEType(long downloadId) raises(<ref>WebAPIException</ref>);
30297
30298        void setListener(long downloadId, <ref>DownloadCallback</ref> downloadCallback) raises(<ref>WebAPIException</ref>);
30299    };</webidl>
30300       <descriptive>
30301           <brief>
30302  This interface handles requests for downloading. Each step of download operation will be informed through callbacks.
30303           </brief>
30304           <version>
30305  2.0
30306           </version>
30307       </descriptive>
30308       <ExtendedAttributeList>
30309         <ExtendedAttribute name="NoInterfaceObject">
30310           <webidl>NoInterfaceObject</webidl>
30311         </ExtendedAttribute>
30312       </ExtendedAttributeList>
30313       <Operation name="start" id="::Download::DownloadManager::start">
30314         <webidl>       long start(<ref>DownloadRequest</ref> downloadRequest,
30315                     optional <ref>DownloadCallback</ref>? downloadCallback) raises(<ref>WebAPIException</ref>);</webidl>
30316         <descriptive>
30317             <brief>
30318  Starts a download operation with the specified URL information.
30319             </brief>
30320             <version>
30321  2.0
30322             </version>
30323             <privilegelevel>
30324  public
30325             </privilegelevel>
30326             <privilege>
30327  http://tizen.org/privilege/download
30328             </privilege>
30329             <Code> var listener = {
30330    onprogress: function(id, receivedSize, totalSize) {
30331      console.log('Received with id: ' + id + ', ' + receivedSize + '/' + totalSize);
30332    },
30333    onpaused: function(id) {
30334      console.log('Paused with id: ' + id);
30335    },
30336    oncanceled: function(id) {
30337      console.log('Canceled with id: ' + id);
30338    },
30339    oncompleted: function(id, fullPath) {
30340      console.log('Completed with id: ' + id + ', full path: ' + fullPath);
30341    },
30342    onfailed: function(id, error) {
30343      console.log('Failed with id: ' + id + ', error name: ' + error.name);
30344    }
30345  };
30346
30347  // Starts downloading of the file from the Web with the corresponding callbacks.
30348  var downloadRequest = new tizen.DownloadRequest(&quot;http://download.tizen.org/tools/README.txt&quot;, &quot;documents&quot;);
30349  downloadId = tizen.download.start(downloadRequest, listener);
30350  </Code>
30351         </descriptive>
30352         <Type type="long">
30353           <descriptive>
30354               <description><p>
30355  long An identifier for each download operation.
30356               </p></description>
30357           </descriptive>
30358         </Type>
30359         <ArgumentList>
30360           <Argument name="downloadRequest">
30361             <descriptive>
30362                 <description><p>
30363  The URL and destination information of the object to download.
30364                 </p></description>
30365             </descriptive>
30366             <Type name="DownloadRequest"/>
30367           </Argument>
30368           <Argument optional="optional" name="downloadCallback">
30369             <descriptive>
30370                 <description><p>
30371  The method to invoke when the download state changes or an error occurs.
30372                 </p></description>
30373             </descriptive>
30374             <Type name="DownloadCallback" nullable="nullable"/>
30375           </Argument>
30376         </ArgumentList>
30377         <Raises>
30378           <RaiseException name="WebAPIException">
30379             <descriptive>
30380                 <description><p>
30381  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
30382                 </p></description>
30383                 <description><p>
30384  with error type NotSupportedError, if this feature is not supported.
30385                 </p></description>
30386                 <description><p>
30387  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
30388                 </p></description>
30389                 <description><p>
30390  with error type SecurityError, if the application does not have the privilege to call this method.
30391                 </p></description>
30392                 <description><p>
30393  with error type UnknownError if any other error occurs.
30394                 </p></description>
30395             </descriptive>
30396           </RaiseException>
30397         </Raises>
30398       </Operation>
30399       <Operation name="cancel" id="::Download::DownloadManager::cancel">
30400         <webidl>       void cancel(long downloadId) raises(<ref>WebAPIException</ref>);</webidl>
30401         <descriptive>
30402             <brief>
30403  Cancels an ongoing download operation that is specified by the <em>downloadId</em> parameter.
30404             </brief>
30405             <version>
30406  2.0
30407             </version>
30408             <Code> // Cancels the ongoing download operation with the specified id.
30409  tizen.download.cancel(downloadId);
30410  </Code>
30411         </descriptive>
30412         <Type type="void"/>
30413         <ArgumentList>
30414           <Argument name="downloadId">
30415             <descriptive>
30416                 <description><p>
30417  The ID of the ongoing download operation to stop.
30418                 </p></description>
30419             </descriptive>
30420             <Type type="long"/>
30421           </Argument>
30422         </ArgumentList>
30423         <Raises>
30424           <RaiseException name="WebAPIException">
30425             <descriptive>
30426                 <description><p>
30427  with error type NotFoundError, if the identifier does not match any download operation in progress.
30428                 </p></description>
30429                 <description><p>
30430  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
30431                 </p></description>
30432                 <description><p>
30433  with error type NotSupportedError, if this feature is not supported.
30434                 </p></description>
30435                 <description><p>
30436  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
30437                 </p></description>
30438                 <description><p>
30439  with error type UnknownError, if any other error occurs.
30440                 </p></description>
30441             </descriptive>
30442           </RaiseException>
30443         </Raises>
30444       </Operation>
30445       <Operation name="pause" id="::Download::DownloadManager::pause">
30446         <webidl>       void pause(long downloadId) raises(<ref>WebAPIException</ref>);</webidl>
30447         <descriptive>
30448             <brief>
30449  Pauses an ongoing download operation that is specified by the <em>downloadId</em> parameter.
30450 The paused download operation can be resumed later by the <em>resume()</em> method.
30451             </brief>
30452             <version>
30453  2.0
30454             </version>
30455             <Code> // Pauses the ongoing download operation with the specified id.
30456  tizen.download.pause(downloadId);
30457  </Code>
30458         </descriptive>
30459         <Type type="void"/>
30460         <ArgumentList>
30461           <Argument name="downloadId">
30462             <descriptive>
30463                 <description><p>
30464  The ID of the ongoing download operation to pause.
30465                 </p></description>
30466             </descriptive>
30467             <Type type="long"/>
30468           </Argument>
30469         </ArgumentList>
30470         <Raises>
30471           <RaiseException name="WebAPIException">
30472             <descriptive>
30473                 <description><p>
30474  with error type NotFoundError, if the identifier does not match any download operation in progress.
30475                 </p></description>
30476                 <description><p>
30477  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
30478                 </p></description>
30479                 <description><p>
30480  with error type NotSupportedError, if this feature is not supported.
30481                 </p></description>
30482                 <description><p>
30483  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
30484                 </p></description>
30485                 <description><p>
30486  with error type UnknownError, if any other error occurs.
30487                 </p></description>
30488             </descriptive>
30489           </RaiseException>
30490         </Raises>
30491       </Operation>
30492       <Operation name="resume" id="::Download::DownloadManager::resume">
30493         <webidl>       void resume(long downloadId) raises(<ref>WebAPIException</ref>);</webidl>
30494         <descriptive>
30495             <brief>
30496  Resumes a paused download operation that is specified by the <em>downloadId</em> parameter.
30497             </brief>
30498             <version>
30499  2.0
30500             </version>
30501             <Code> // Resumes the paused download operation with the specified id.
30502  tizen.download.resume(downloadId);
30503  </Code>
30504         </descriptive>
30505         <Type type="void"/>
30506         <ArgumentList>
30507           <Argument name="downloadId">
30508             <descriptive>
30509                 <description><p>
30510  The ID of the paused download operation to be resume.
30511                 </p></description>
30512             </descriptive>
30513             <Type type="long"/>
30514           </Argument>
30515         </ArgumentList>
30516         <Raises>
30517           <RaiseException name="WebAPIException">
30518             <descriptive>
30519                 <description><p>
30520  with error type NotFoundError, if the identifier does not match any download operation in progress.
30521                 </p></description>
30522                 <description><p>
30523  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
30524                 </p></description>
30525                 <description><p>
30526  with error type NotSupportedError, if this feature is not supported.
30527                 </p></description>
30528                 <description><p>
30529  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
30530                 </p></description>
30531                 <description><p>
30532  with error type UnknownError, if any other error occurs.
30533                 </p></description>
30534             </descriptive>
30535           </RaiseException>
30536         </Raises>
30537       </Operation>
30538       <Operation name="getState" id="::Download::DownloadManager::getState">
30539         <webidl>       <ref>DownloadState</ref> getState(long downloadId) raises(<ref>WebAPIException</ref>);</webidl>
30540         <descriptive>
30541             <brief>
30542  Gets the download state of an operation synchronously with the specified ID.
30543             </brief>
30544             <version>
30545  2.0
30546             </version>
30547             <Code> // Gets the state of the download operation with the given id.
30548  var state = tizen.download.getState(downloadId);
30549  </Code>
30550         </descriptive>
30551         <Type name="DownloadState">
30552           <descriptive>
30553               <description><p>
30554  DownloadState The current download state of the specified ID.
30555               </p></description>
30556           </descriptive>
30557         </Type>
30558         <ArgumentList>
30559           <Argument name="downloadId">
30560             <descriptive>
30561                 <description><p>
30562  The ID to get the current state of download operation.
30563                 </p></description>
30564             </descriptive>
30565             <Type type="long"/>
30566           </Argument>
30567         </ArgumentList>
30568         <Raises>
30569           <RaiseException name="WebAPIException">
30570             <descriptive>
30571                 <description><p>
30572  with error type NotFoundError, if the identifier does not match any download operation in progress.
30573                 </p></description>
30574                 <description><p>
30575  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
30576                 </p></description>
30577                 <description><p>
30578  with error type NotSupportedError, if this feature is not supported.
30579                 </p></description>
30580                 <description><p>
30581  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
30582                 </p></description>
30583                 <description><p>
30584  with error type UnknownError, if any other error occurs.
30585                 </p></description>
30586             </descriptive>
30587           </RaiseException>
30588         </Raises>
30589       </Operation>
30590       <Operation name="getDownloadRequest" id="::Download::DownloadManager::getDownloadRequest">
30591         <webidl>       <ref>DownloadRequest</ref> getDownloadRequest(long downloadId) raises(<ref>WebAPIException</ref>);</webidl>
30592         <descriptive>
30593             <brief>
30594  Gets the DownloadRequest object from a given id.
30595             </brief>
30596             <version>
30597  2.0
30598             </version>
30599             <Code> // Gets the download request information with the given id.
30600  var downloadRequest = tizen.download.getDownloadRequest(downloadId);
30601  </Code>
30602         </descriptive>
30603         <Type name="DownloadRequest">
30604           <descriptive>
30605               <description><p>
30606  DownloadRequest The download request information of the given id.
30607               </p></description>
30608           </descriptive>
30609         </Type>
30610         <ArgumentList>
30611           <Argument name="downloadId">
30612             <descriptive>
30613                 <description><p>
30614  The ID to get the download request information.
30615                 </p></description>
30616             </descriptive>
30617             <Type type="long"/>
30618           </Argument>
30619         </ArgumentList>
30620         <Raises>
30621           <RaiseException name="WebAPIException">
30622             <descriptive>
30623                 <description><p>
30624  with error type NotFoundError, if the identifier does not match
30625 any download operation in progress.
30626                 </p></description>
30627                 <description><p>
30628  with error type TypeMismatchError, if the input parameter is not
30629 compatible with the expected type.
30630                 </p></description>
30631                 <description><p>
30632  with error type NotSupportedError, if this feature is not supported.
30633                 </p></description>
30634                 <description><p>
30635  with error type InvalidValuesError, if any of the input
30636 parameters contain an invalid value.
30637                 </p></description>
30638                 <description><p>
30639  with error type UnknownError in any other error case.
30640                 </p></description>
30641             </descriptive>
30642           </RaiseException>
30643         </Raises>
30644       </Operation>
30645       <Operation name="getMIMEType" id="::Download::DownloadManager::getMIMEType">
30646         <webidl>       DOMString getMIMEType(long downloadId) raises(<ref>WebAPIException</ref>);</webidl>
30647         <descriptive>
30648             <brief>
30649  Gets the MIME type of the downloaded file.
30650             </brief>
30651             <remark>
30652  This function will return a valid MIME type when the download operation has been started
30653 and successfully retrieved the file header.
30654             </remark>
30655             <version>
30656  2.0
30657             </version>
30658             <Code> // Get the MIME type of the download operation with the given id.
30659  var MIMEtype = tizen.download.getMIMEType(downloadId);
30660  </Code>
30661         </descriptive>
30662         <Type type="DOMString">
30663           <descriptive>
30664               <description><p>
30665  DOMString The MIME type of the downloaded file.
30666               </p></description>
30667           </descriptive>
30668         </Type>
30669         <ArgumentList>
30670           <Argument name="downloadId">
30671             <descriptive>
30672                 <description><p>
30673  The ID to get the MIME type information.
30674                 </p></description>
30675             </descriptive>
30676             <Type type="long"/>
30677           </Argument>
30678         </ArgumentList>
30679         <Raises>
30680           <RaiseException name="WebAPIException">
30681             <descriptive>
30682                 <description><p>
30683  with error type NotFoundError, if the identifier does not match
30684 any download operation in progress.
30685                 </p></description>
30686                 <description><p>
30687  with error type TypeMismatchError, if the input parameter is not
30688 compatible with the expected type.
30689                 </p></description>
30690                 <description><p>
30691  with error type NotSupportedError, if this feature is not supported.
30692                 </p></description>
30693                 <description><p>
30694  with error type InvalidValuesError, if any of the input
30695 parameters contain an invalid value.
30696                 </p></description>
30697                 <description><p>
30698  with error type UnknownError in any other error case.
30699                 </p></description>
30700             </descriptive>
30701           </RaiseException>
30702         </Raises>
30703       </Operation>
30704       <Operation name="setListener" id="::Download::DownloadManager::setListener">
30705         <webidl>       void setListener(long downloadId, <ref>DownloadCallback</ref> downloadCallback) raises(<ref>WebAPIException</ref>);</webidl>
30706         <descriptive>
30707             <brief>
30708  Sets the download callback to the download operation of given id.
30709 It's possible to change or register the listener of download operation using the saved id.
30710             </brief>
30711             <version>
30712  2.0
30713             </version>
30714             <Code> var listener = {
30715    onprogress: function(id, receivedSize, totalSize) {
30716      console.log('Received with id: ' + id + ', ' + receivedSize + '/' + totalSize);
30717    },
30718    onpaused: function(id) {
30719      console.log('Paused with id: ' + id);
30720    },
30721    oncanceled: function(id) {
30722      console.log('Canceled with id: ' + id);
30723    },
30724    oncompleted: function(id, fileName) {
30725      console.log('Completed with id: ' + id + ', file name: ' + fileName);
30726    },
30727    onfailed: function(id, error) {
30728      console.log('Failed with id: ' + id + ', error name: ' + error.name);
30729    }
30730  };
30731
30732  // Start downloading the html file on the web with the corresponding callbacks.
30733  var downloadRequest = new tizen.DownloadRequest(&quot;http://download.tizen.org/tools/README.txt&quot;, &quot;documents&quot;);
30734  downloadId = tizen.download.start(downloadRequest);
30735
30736  // Add the listener.
30737  tizen.download.setListener(downloadId, listener);
30738  </Code>
30739         </descriptive>
30740         <Type type="void"/>
30741         <ArgumentList>
30742           <Argument name="downloadId">
30743             <descriptive>
30744                 <description><p>
30745  The ID to set the download callback.
30746                 </p></description>
30747             </descriptive>
30748             <Type type="long"/>
30749           </Argument>
30750           <Argument name="downloadCallback">
30751             <descriptive>
30752                 <description><p>
30753  The method to invoke when the download state changes or an error occurs.
30754                 </p></description>
30755             </descriptive>
30756             <Type name="DownloadCallback"/>
30757           </Argument>
30758         </ArgumentList>
30759         <Raises>
30760           <RaiseException name="WebAPIException">
30761             <descriptive>
30762                 <description><p>
30763  with error type NotFoundError, if the identifier does not match
30764 any download operation in progress.
30765                 </p></description>
30766                 <description><p>
30767  with error type TypeMismatchError, if the input parameter is not
30768 compatible with the expected type.
30769                 </p></description>
30770                 <description><p>
30771  with error type NotSupportedError, if this feature is not supported.
30772                 </p></description>
30773                 <description><p>
30774  with error type InvalidValuesError, if any of the input
30775 parameters contain an invalid value.
30776                 </p></description>
30777                 <description><p>
30778  with error type UnknownError in any other error case.
30779                 </p></description>
30780             </descriptive>
30781           </RaiseException>
30782         </Raises>
30783       </Operation>
30784     </Interface>
30785     <Interface name="DownloadCallback" id="::Download::DownloadCallback">
30786       <webidl>   [Callback, NoInterfaceObject] interface DownloadCallback {
30787        void onprogress(long downloadId, unsigned long long receivedSize, unsigned long long totalSize);
30788
30789        void onpaused(long downloadId);
30790
30791        void oncanceled(long downloadId);
30792
30793        void oncompleted(long downloadId, DOMString fullPath);
30794
30795        void onfailed(long downloadId, <ref>WebAPIError</ref> error);
30796    };</webidl>
30797       <descriptive>
30798           <brief>
30799  This interface defines notification callbacks for the download state change or progress.
30800           </brief>
30801           <version>
30802  2.0
30803           </version>
30804       </descriptive>
30805       <ExtendedAttributeList>
30806         <ExtendedAttribute name="Callback">
30807           <webidl>Callback</webidl>
30808         </ExtendedAttribute>
30809         <ExtendedAttribute name="NoInterfaceObject">
30810           <webidl> NoInterfaceObject</webidl>
30811         </ExtendedAttribute>
30812       </ExtendedAttributeList>
30813       <Operation name="onprogress" id="::Download::DownloadCallback::onprogress">
30814         <webidl>       void onprogress(long downloadId, unsigned long long receivedSize, unsigned long long totalSize);</webidl>
30815         <descriptive>
30816             <brief>
30817  Called when a download is successful and it called multiple times as the download progresses.
30818 The interval between <em>onprogress()</em> callback is platform-dependent. When the download is started, the <em>receivedSize </em>can be <var>0</var>.
30819             </brief>
30820             <version>
30821  2.0
30822             </version>
30823         </descriptive>
30824         <Type type="void"/>
30825         <ArgumentList>
30826           <Argument name="downloadId">
30827             <descriptive>
30828                 <description><p>
30829  The ID of the corresponding download operation.
30830                 </p></description>
30831             </descriptive>
30832             <Type type="long"/>
30833           </Argument>
30834           <Argument name="receivedSize">
30835             <descriptive>
30836                 <description><p>
30837  The size of data received in bytes.
30838                 </p></description>
30839             </descriptive>
30840             <Type type="unsigned long long"/>
30841           </Argument>
30842           <Argument name="totalSize">
30843             <descriptive>
30844                 <description><p>
30845  The total size of data to receive in bytes.
30846                 </p></description>
30847             </descriptive>
30848             <Type type="unsigned long long"/>
30849           </Argument>
30850         </ArgumentList>
30851       </Operation>
30852       <Operation name="onpaused" id="::Download::DownloadCallback::onpaused">
30853         <webidl>       void onpaused(long downloadId);</webidl>
30854         <descriptive>
30855             <brief>
30856  Called when the download operation is paused by the <em>pause() </em>method.
30857             </brief>
30858             <version>
30859  2.0
30860             </version>
30861         </descriptive>
30862         <Type type="void"/>
30863         <ArgumentList>
30864           <Argument name="downloadId">
30865             <descriptive>
30866                 <description><p>
30867  The ID of the corresponding download operation.
30868                 </p></description>
30869             </descriptive>
30870             <Type type="long"/>
30871           </Argument>
30872         </ArgumentList>
30873       </Operation>
30874       <Operation name="oncanceled" id="::Download::DownloadCallback::oncanceled">
30875         <webidl>       void oncanceled(long downloadId);</webidl>
30876         <descriptive>
30877             <brief>
30878  Called when download is canceled by the <em>cancel() </em>method.
30879             </brief>
30880             <version>
30881  2.0
30882             </version>
30883         </descriptive>
30884         <Type type="void"/>
30885         <ArgumentList>
30886           <Argument name="downloadId">
30887             <descriptive>
30888                 <description><p>
30889  The ID of the corresponding download operation.
30890                 </p></description>
30891             </descriptive>
30892             <Type type="long"/>
30893           </Argument>
30894         </ArgumentList>
30895       </Operation>
30896       <Operation name="oncompleted" id="::Download::DownloadCallback::oncompleted">
30897         <webidl>       void oncompleted(long downloadId, DOMString fullPath);</webidl>
30898         <descriptive>
30899             <brief>
30900  Called when the download operation is completed with the final full path.
30901 If the same file name already exists in the destination, it is changed according to the platform policy and delivered in this callback.
30902             </brief>
30903             <version>
30904  2.0
30905             </version>
30906         </descriptive>
30907         <Type type="void"/>
30908         <ArgumentList>
30909           <Argument name="downloadId">
30910             <descriptive>
30911                 <description><p>
30912  The ID of the corresponding download operation.
30913                 </p></description>
30914             </descriptive>
30915             <Type type="long"/>
30916           </Argument>
30917           <Argument name="fullPath">
30918             <descriptive>
30919                 <description><p>
30920  The final full path for the downloaded file.
30921                 </p></description>
30922             </descriptive>
30923             <Type type="DOMString"/>
30924           </Argument>
30925         </ArgumentList>
30926       </Operation>
30927       <Operation name="onfailed" id="::Download::DownloadCallback::onfailed">
30928         <webidl>       void onfailed(long downloadId, <ref>WebAPIError</ref> error);</webidl>
30929         <descriptive>
30930             <brief>
30931  Called when the download operation fails.
30932             </brief>
30933             <version>
30934  2.0
30935             </version>
30936         </descriptive>
30937         <Type type="void"/>
30938         <ArgumentList>
30939           <Argument name="downloadId">
30940             <descriptive>
30941                 <description><p>
30942  The ID of the corresponding download operation.
30943                 </p></description>
30944             </descriptive>
30945             <Type type="long"/>
30946           </Argument>
30947           <Argument name="error">
30948             <descriptive>
30949                 <description><p>
30950  The reason for the download failure.
30951                 </p></description>
30952             </descriptive>
30953             <Type name="WebAPIError"/>
30954           </Argument>
30955         </ArgumentList>
30956       </Operation>
30957     </Interface>
30958   </Module>
30959   <Module name="Filesystem" id="::Filesystem">
30960     <webidl>module Filesystem {
30961   enum FileMode { &quot;r&quot;, &quot;rw&quot;, &quot;w&quot;, &quot;a&quot; };
30962   
30963   enum FileSystemStorageType { &quot;INTERNAL&quot;, &quot;EXTERNAL&quot; };
30964   
30965   enum FileSystemStorageState { &quot;MOUNTED&quot;, &quot;REMOVED&quot;, &quot;UNMOUNTABLE&quot; };
30966   
30967   [NoInterfaceObject] interface FileSystemManagerObject {
30968     readonly attribute <ref>FileSystemManager</ref> filesystem;
30969   };
30970   <ref>Tizen</ref> implements <ref>FileSystemManagerObject</ref>;
30971
30972   [NoInterfaceObject] interface FileSystemManager {
30973     readonly attribute long maxPathLength;
30974
30975     void resolve(DOMString location,
30976                  <ref>FileSuccessCallback</ref> onsuccess,
30977                  optional <ref>ErrorCallback</ref>? onerror,
30978                  optional <ref>FileMode</ref>? mode) raises(<ref>WebAPIException</ref>);
30979
30980     void getStorage(DOMString label,
30981                     <ref>FileSystemStorageSuccessCallback</ref> onsuccess,
30982                     optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);
30983
30984     void listStorages(<ref>FileSystemStorageArraySuccessCallback</ref> onsuccess,
30985                       optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);
30986
30987     long addStorageStateChangeListener(<ref>FileSystemStorageSuccessCallback</ref> onsuccess,
30988                                        optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);
30989
30990     void removeStorageStateChangeListener(long watchId) raises(<ref>WebAPIException</ref>);
30991   };
30992
30993   [NoInterfaceObject] interface FileSystemStorage {
30994     readonly attribute DOMString label;
30995
30996     readonly attribute <ref>FileSystemStorageType</ref> type;
30997
30998     readonly attribute <ref>FileSystemStorageState</ref> state;
30999   };
31000
31001   [NoInterfaceObject] interface File {
31002     readonly attribute <ref>File</ref>? parent;
31003
31004     readonly attribute boolean readOnly;
31005
31006     readonly attribute boolean isFile;
31007
31008     readonly attribute boolean isDirectory;
31009
31010     readonly attribute Date? created;
31011
31012     readonly attribute Date? modified;
31013
31014     readonly attribute DOMString path;
31015
31016     readonly attribute DOMString name;
31017
31018     readonly attribute DOMString fullPath;
31019
31020     readonly attribute unsigned long long fileSize;
31021
31022     readonly attribute long length;
31023
31024     DOMString toURI() raises(<ref>WebAPIException</ref>);
31025
31026     void listFiles(<ref>FileArraySuccessCallback</ref> onsuccess,
31027                    optional <ref>ErrorCallback</ref>? onerror,
31028                    optional <ref>FileFilter</ref>? filter) raises(<ref>WebAPIException</ref>);
31029
31030     void openStream(<ref>FileMode</ref> mode,
31031                     <ref>FileStreamSuccessCallback</ref> onsuccess,
31032                     optional <ref>ErrorCallback</ref>? onerror,
31033                     optional DOMString? encoding) raises(<ref>WebAPIException</ref>);
31034
31035     void readAsText(<ref>FileStringSuccessCallback</ref> onsuccess,
31036                     optional <ref>ErrorCallback</ref>? onerror,
31037                     optional DOMString? encoding) raises(<ref>WebAPIException</ref>);
31038
31039     void copyTo(DOMString originFilePath,
31040                 DOMString destinationFilePath,
31041                 boolean overwrite,
31042                 optional <ref>SuccessCallback</ref>? onsuccess,
31043                 optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);
31044
31045     void moveTo(DOMString originFilePath,
31046                 DOMString destinationFilePath,
31047                 boolean overwrite,
31048                 optional <ref>SuccessCallback</ref>? onsuccess,
31049                 optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);
31050
31051     <ref>File</ref> createDirectory(DOMString dirPath) raises(<ref>WebAPIException</ref>);
31052
31053     <ref>File</ref> createFile(DOMString relativeFilePath) raises(<ref>WebAPIException</ref>);
31054
31055     <ref>File</ref> resolve(DOMString filePath) raises(<ref>WebAPIException</ref>);
31056
31057     void deleteDirectory(DOMString directoryPath,
31058                          boolean recursive,
31059                          optional <ref>SuccessCallback</ref>? onsuccess,
31060                          optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);
31061
31062     void deleteFile(DOMString filePath,
31063                     optional <ref>SuccessCallback</ref>? onsuccess,
31064                     optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);
31065   };
31066
31067
31068   dictionary FileFilter {
31069     DOMString name;
31070
31071     Date startModified;
31072
31073     Date endModified;
31074
31075     Date startCreated;
31076
31077     Date endCreated;
31078   };
31079
31080   [NoInterfaceObject] interface FileStream {
31081     readonly attribute boolean eof;
31082
31083     attribute long position setraises(<ref>WebAPIException</ref>);
31084
31085     readonly attribute long bytesAvailable;
31086
31087     void close();
31088
31089     DOMString read(long charCount) raises(<ref>WebAPIException</ref>);
31090
31091     octet[] readBytes(long byteCount) raises(<ref>WebAPIException</ref>);
31092
31093     DOMString readBase64(long byteCount) raises(<ref>WebAPIException</ref>);
31094
31095     void write(DOMString stringData) raises(<ref>WebAPIException</ref>);
31096
31097     void writeBytes(octet[] byteData) raises(<ref>WebAPIException</ref>);
31098
31099     void writeBase64(DOMString base64Data) raises(<ref>WebAPIException</ref>);
31100   };
31101
31102   [Callback=FunctionOnly, NoInterfaceObject] interface FileSuccessCallback {
31103     void onsuccess(<ref>File</ref> file);
31104   };
31105
31106   [Callback=FunctionOnly, NoInterfaceObject] interface FileSystemStorageArraySuccessCallback {
31107     void onsuccess(<ref>FileSystemStorage</ref>[] storages);
31108   };
31109
31110   [Callback=FunctionOnly, NoInterfaceObject] interface FileSystemStorageSuccessCallback {
31111     void onsuccess(<ref>FileSystemStorage</ref> storage);
31112   };
31113
31114   [Callback=FunctionOnly, NoInterfaceObject] interface FileStringSuccessCallback {
31115     void onsuccess(DOMString fileStr);
31116   };
31117
31118   [Callback=FunctionOnly, NoInterfaceObject] interface FileStreamSuccessCallback {
31119     void onsuccess(<ref>FileStream</ref> filestream);
31120   };
31121
31122   [Callback=FunctionOnly, NoInterfaceObject] interface FileArraySuccessCallback {
31123     void onsuccess(<ref>File</ref>[] files);
31124   };
31125 };</webidl>
31126     <descriptive>
31127         <brief>
31128  This API provides access to a device's filesystem.
31129         </brief>
31130        <description>
31131         <p>
31132 The filesystem is represented as an abstract collection of disjointed filesystem virtual
31133 root locations, each corresponding to a specific location in the device
31134 filesystem. The filesystem API exposes the hierarchies below these root
31135 locations as a single virtual filesystem, but provides no access to other
31136 parts of the device filesystem.
31137         </p>
31138         <p>
31139 Each virtual root has a string name. Each file or directory within the virtual
31140 filesystem is addressed using a fully-qualified path of the form:
31141 <em>&#60;root name&#62;/&#60;path&#62;</em> where <em>&#60;rootname&#62;</em> is
31142 the name of the virtual root and <em>&#60;path&#62;</em> is the path to the file or
31143 directory relative to that root.
31144         </p>
31145         <p>
31146 The following virtual roots MUST be supported:
31147         </p>
31148         <ul>
31149           <li>
31150 images: the images location           </li>
31151           <li>
31152 videos: the videos location           </li>
31153           <li>
31154 music: the sounds location           </li>
31155           <li>
31156 documents: the documents location           </li>
31157           <li>
31158 downloads: the location for downloaded items           </li>
31159           <li>
31160 ringtones: the location for ringtones (read-only location)           </li>
31161           <li>
31162 wgt-package: the widget package location (read-only location)           </li>
31163           <li>
31164 wgt-private: the widget private storage           </li>
31165           <li>
31166 wgt-private-tmp: the widget private volatile storage area          </li>
31167         </ul>
31168         <p>
31169 The file URI path is also supported. if you want to access other paths out of virtual root, 
31170 for example '/tmp/', 'file:///tmp' could be used as location parameter.
31171         </p>
31172         <p>
31173 To access specific locations from those specified above, a file handle
31174 must be retrieved using the filesystem.resolve call.
31175         </p>
31176         <p>
31177 A file handle represents either a file or a directory. For a file, the
31178 isFile attribute is <em>true</em>. For a directory, the isDirectory attribute
31179 is <em>true</em>. A file can be opened for read and write operations, using a
31180 FileStream handle. A list of files and sub-directories can be obtained from a
31181 directory and a resolve method exists to resolve files or sub-directories
31182 more conveniently than processing directory listings.
31183         </p>
31184         <p>
31185 The implementation MUST support the use of the following
31186 characters in file names:
31187         </p>
31188         <ul>
31189           <li>
31190 Letters (azAZ)          </li>
31191           <li>
31192 Numbers (0-9)          </li>
31193           <li>
31194 Blank spaces          </li>
31195           <li>
31196 Underscores (&quot;_&quot;)          </li>
31197           <li>
31198 Hyphens (&quot;-&quot;)          </li>
31199           <li>
31200 Periods (&quot;.&quot;)          </li>
31201         </ul>
31202         <p>
31203 The implementation MAY support additional characters in file names,
31204 depending on platform support.
31205         </p>
31206         <p>
31207 The implementation MAY forbid the use of additional characters in file
31208 names, depending on the platform. The use of the path separator &quot;/&quot;
31209 in file names MUST NOT be allowed. The &quot;/&quot; character is used as the (path)
31210 component separator.
31211         </p>
31212         <p>
31213 Some other file name and path characteristics are platform-dependent,
31214 for example, maximum path length, file name length, case sensitivity, additional
31215 character support, etc. Therefore, it is recommended that you avoid any dependency
31216 on aspects that cannot be supported across many platforms.
31217         </p>
31218         <p>
31219 When a path is used to interact with the underlying filesystem,
31220 the encoding used for the file path SHOULD be the platform default.
31221         </p>
31222         <p>
31223 For more information on the Filesystem features, see <a href="../../org.tizen.web.appprogramming/html/guide/io_guide/filesystem.htm">File System Guide</a>.
31224         </p>
31225        </description>
31226         <version>
31227  1.0
31228         </version>
31229     </descriptive>
31230     <Enum name="FileMode" id="::Filesystem::FileMode">
31231       <webidl>  enum FileMode { &quot;r&quot;, &quot;rw&quot;, &quot;w&quot;, &quot;a&quot; };</webidl>
31232       <descriptive>
31233           <brief>
31234  The file mode provided when opening.
31235           </brief>
31236          <description>
31237           <p>
31238 Value &quot;r&quot; to obtain read-only access, &quot;rw&quot; to obtain read and write
31239 access, &quot;w&quot; to obtain write access and &quot;a&quot; for appending.
31240           </p>
31241          </description>
31242           <version>
31243  1.0
31244           </version>
31245       </descriptive>
31246       <EnumValue stringvalue="r">
31247         <webidl> &quot;r</webidl>
31248       </EnumValue>
31249       <EnumValue stringvalue="rw">
31250         <webidl> &quot;rw</webidl>
31251       </EnumValue>
31252       <EnumValue stringvalue="w">
31253         <webidl> &quot;w</webidl>
31254       </EnumValue>
31255       <EnumValue stringvalue="a">
31256         <webidl> &quot;a</webidl>
31257       </EnumValue>
31258     </Enum>
31259     <Enum name="FileSystemStorageType" id="::Filesystem::FileSystemStorageType">
31260       <webidl>  enum FileSystemStorageType { &quot;INTERNAL&quot;, &quot;EXTERNAL&quot; };</webidl>
31261       <descriptive>
31262           <brief>
31263  The type of storage.
31264           </brief>
31265          <description>
31266           <ul>
31267             <li>
31268 INTERNAL: Internal storage is storage that cannot be removed, such as a
31269 flash memory.            </li>
31270             <li>
31271 EXTERNAL: External storage is removable storage, such as a USB drive or
31272 memory cards.            </li>
31273           </ul>
31274          </description>
31275           <version>
31276  1.0
31277           </version>
31278       </descriptive>
31279       <EnumValue stringvalue="INTERNAL">
31280         <webidl> &quot;INTERNAL</webidl>
31281       </EnumValue>
31282       <EnumValue stringvalue="EXTERNAL">
31283         <webidl> &quot;EXTERNAL</webidl>
31284       </EnumValue>
31285     </Enum>
31286     <Enum name="FileSystemStorageState" id="::Filesystem::FileSystemStorageState">
31287       <webidl>  enum FileSystemStorageState { &quot;MOUNTED&quot;, &quot;REMOVED&quot;, &quot;UNMOUNTABLE&quot; };</webidl>
31288       <descriptive>
31289           <brief>
31290  The state of the storage.
31291           </brief>
31292          <description>
31293           <ul>
31294             <li>
31295 MOUNTED: The device is mounted and can be browsed.            </li>
31296             <li>
31297 REMOVED: The device was removed. This states only applies to external drives.            </li>
31298             <li>
31299 UNMOUNTABLE: The device cannot be mounted due to an error.            </li>
31300           </ul>
31301          </description>
31302           <version>
31303  1.0
31304           </version>
31305       </descriptive>
31306       <EnumValue stringvalue="MOUNTED">
31307         <webidl> &quot;MOUNTED</webidl>
31308       </EnumValue>
31309       <EnumValue stringvalue="REMOVED">
31310         <webidl> &quot;REMOVED</webidl>
31311       </EnumValue>
31312       <EnumValue stringvalue="UNMOUNTABLE">
31313         <webidl> &quot;UNMOUNTABLE</webidl>
31314       </EnumValue>
31315     </Enum>
31316     <Interface name="FileSystemManagerObject" id="::Filesystem::FileSystemManagerObject">
31317       <webidl>  [NoInterfaceObject] interface FileSystemManagerObject {
31318     readonly attribute <ref>FileSystemManager</ref> filesystem;
31319   };</webidl>
31320       <descriptive>
31321           <brief>
31322  Defines what is instantiated in the tizen object.
31323           </brief>
31324          <description>
31325           <p>
31326 There will be a tizen.filesystem object that allows accessing the
31327 functionality of the filesystem API.
31328           </p>
31329          </description>
31330           <version>
31331  1.0
31332           </version>
31333       </descriptive>
31334       <ExtendedAttributeList>
31335         <ExtendedAttribute name="NoInterfaceObject">
31336           <webidl>NoInterfaceObject</webidl>
31337         </ExtendedAttribute>
31338       </ExtendedAttributeList>
31339       <Attribute readonly="readonly" name="filesystem" id="::Filesystem::FileSystemManagerObject::filesystem">
31340         <webidl>    readonly attribute <ref>FileSystemManager</ref> filesystem;</webidl>
31341         <Type name="FileSystemManager"/>
31342       </Attribute>
31343     </Interface>
31344     <Implements name1="Tizen" name2="FileSystemManagerObject">
31345       <webidl>  <ref>Tizen</ref> implements <ref>FileSystemManagerObject</ref>;</webidl>
31346     </Implements>
31347     <Interface name="FileSystemManager" id="::Filesystem::FileSystemManager">
31348       <webidl>  [NoInterfaceObject] interface FileSystemManager {
31349     readonly attribute long maxPathLength;
31350
31351     void resolve(DOMString location,
31352                  <ref>FileSuccessCallback</ref> onsuccess,
31353                  optional <ref>ErrorCallback</ref>? onerror,
31354                  optional <ref>FileMode</ref>? mode) raises(<ref>WebAPIException</ref>);
31355
31356     void getStorage(DOMString label,
31357                     <ref>FileSystemStorageSuccessCallback</ref> onsuccess,
31358                     optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);
31359
31360     void listStorages(<ref>FileSystemStorageArraySuccessCallback</ref> onsuccess,
31361                       optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);
31362
31363     long addStorageStateChangeListener(<ref>FileSystemStorageSuccessCallback</ref> onsuccess,
31364                                        optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);
31365
31366     void removeStorageStateChangeListener(long watchId) raises(<ref>WebAPIException</ref>);
31367   };</webidl>
31368       <descriptive>
31369           <brief>
31370  The file system manager interface that provides access to the filesystem API.
31371           </brief>
31372          <description>
31373           <p>
31374 This manager exposes the filesystem base API, and provides functionality, such as
31375 determining root and default locations, resolving a given location
31376 into a file handle, and registering filesystem listeners for
31377 filesystem events.
31378           </p>
31379          </description>
31380           <version>
31381  1.0
31382           </version>
31383           <Code> var documentsDir;
31384  function onsuccess(files) {
31385    for(var i = 0; i &#60; files.length; i++) {
31386      console.log(&quot;File Name is &quot; + files[i].name); // displays file name
31387    }
31388
31389    var testFile = documentsDir.createFile(&quot;test.txt&quot;);
31390
31391    if (testFile != null) {
31392      testFile.openStream(
31393        &quot;w&quot;,
31394        function(fs){
31395          fs.write(&quot;HelloWorld&quot;);
31396          fs.close();
31397        }, function(e){
31398          console.log(&quot;Error &quot; + e.message);
31399        }, &quot;UTF-8&quot;
31400      );
31401    }
31402  }
31403
31404  function onerror(error) {
31405    console.log(&quot;The error &quot; + error.message + &quot; occurred when listing the files in the selected folder&quot;);
31406  }
31407
31408  tizen.filesystem.resolve(
31409    'documents', 
31410    function(dir){
31411      documentsDir = dir;
31412      dir.listFiles(onsuccess, onerror);
31413    }, function(e){
31414      console.log(&quot;Error&quot; + e.message);
31415    }, &quot;rw&quot;
31416  );
31417  </Code>
31418       </descriptive>
31419       <ExtendedAttributeList>
31420         <ExtendedAttribute name="NoInterfaceObject">
31421           <webidl>NoInterfaceObject</webidl>
31422         </ExtendedAttribute>
31423       </ExtendedAttributeList>
31424       <Attribute readonly="readonly" name="maxPathLength" id="::Filesystem::FileSystemManager::maxPathLength">
31425         <webidl>    readonly attribute long maxPathLength;</webidl>
31426         <descriptive>
31427             <brief>
31428  Contains the platform-dependent maximum path length.
31429             </brief>
31430             <version>
31431  1.0
31432             </version>
31433             <Code> console.log(&quot;The maximum path length is &quot; + tizen.filesystem.maxPathLength);
31434  </Code>
31435         </descriptive>
31436         <Type type="long"/>
31437       </Attribute>
31438       <Operation name="resolve" id="::Filesystem::FileSystemManager::resolve">
31439         <webidl>    void resolve(DOMString location,
31440                  <ref>FileSuccessCallback</ref> onsuccess,
31441                  optional <ref>ErrorCallback</ref>? onerror,
31442                  optional <ref>FileMode</ref>? mode) raises(<ref>WebAPIException</ref>);</webidl>
31443         <descriptive>
31444             <brief>
31445  Resolves a location to a file handle.
31446             </brief>
31447            <description>
31448             <p>
31449 It validates and resolves the given location to a file handle.
31450 If the operation completes successfully, the handle is returned
31451 in the FileSuccessCallback.
31452 A valid location is prefixed with a valid root or
31453 default location and must address an existing,
31454 accessible file or directory.
31455             </p>
31456             <p>
31457 A location can contain virtual path like (<var>documents/some_file.txt</var>)
31458 or it can be a file's URI (<var>file:///my_strange_path/some_file.png</var>).
31459             </p>
31460             <p>
31461 The list of root locations that MUST be supported by a compliant
31462 implementation are:
31463             </p>
31464             <ul>
31465               <li>
31466 documents: Describes the default folder in which text documents
31467 (such as pdf, doc...) are stored by default in the device. For example, in some
31468 platforms it corresponds to the &quot;My Documents&quot; folder.              </li>
31469               <li>
31470 images: Describes the default folder in which still images, like
31471 pictures (such as jpg, gif, png, etc.), are stored in the
31472 device by default. For example, in some platforms it corresponds to the &quot;My Images&quot;
31473 folder.              </li>
31474               <li>
31475 music: Describes the default folder in which sound clips (such as mp3,
31476 aac, etc.) are stored in the device by default. For example, in some platforms it
31477 corresponds to the &quot;My Music&quot; folder.              </li>
31478               <li>
31479 videos: Describes the default folder in which video clips (such as
31480 avi, mp4, etc.) are stored in the device by default. For example, in some platforms
31481 it corresponds to the &quot;My Videos&quot; folder.              </li>
31482               <li>
31483 downloads: Describes the default folder in which files downloaded
31484 (such as by a browser, e-mail client, etc.) are stored by default in the
31485 device. For example, in some platforms it corresponds to the &quot;Downloads&quot; folder.
31486               </li>
31487               <li>
31488 ringtones: Describes the default folder in which ringtones (such as mp3, etc)
31489 are stored by default in the device.               </li>
31490               <li>
31491 wgt-package: Describes the read-only folder in which the content of
31492 the widget file was extracted to.              </li>
31493               <li>
31494 wgt-private: Describes a private folder in which a widget can
31495 store information. This folder MUST be accessible only to the
31496 widget. Other widgets or applications MUST NOT access the
31497 information stored there.              </li>
31498               <li>
31499 wgt-private-tmp: Describes a temporary, private folder in which a widget
31500 can store data that is available during one widget execution
31501 cycle. Content of this folder MAY be removed from this directory
31502 when the widget is closed or the Web Runtime is restarted.
31503 This folder MUST be accessible only to the widget. Other
31504 widgets or applications MUST NOT have access to it.              </li>
31505             </ul>
31506             <p>
31507 The mode parameter specifies whether the resulting File object
31508 has read-only access (&quot;r&quot; access), read and write access (&quot;rw&quot; access),
31509 append access (&quot;a&quot; access), or write access (&quot;w&quot; access) 
31510 to the root location containing directory tree. 
31511 Permission for the requested access is obtained from the security framework. 
31512 Once the resulting File object has access, access is inherited by
31513 any other File objects derived from this instance without any
31514 further reference to the security framework, as noted in
31515 descriptions of certain methods of File.
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.
31523 For example, the mode is not valid (that is not &quot;r&quot;, &quot;rw&quot;, &quot;a&quot;, or &quot;w&quot;).              </li>
31524               <li>
31525 NotFoundError: The location input argument does not correspond to a valid location.              </li>
31526               <li>
31527 UnknownError: In any other error case.               </li>
31528             </ul>
31529            </description>
31530             <version>
31531  1.0
31532             </version>
31533             <privilegelevel>
31534  public
31535             </privilegelevel>
31536             <privilege>
31537  http://tizen.org/privilege/filesystem.read
31538             </privilege>
31539             <Code> tizen.filesystem.resolve(
31540    'images',
31541    function(dir) {
31542      console.log(&quot;Mount point Name is &quot; +  dir.path);
31543    }, function(e) {
31544      console.log(&quot;Error: &quot; + e.message);
31545    }, &quot;r&quot;
31546  );
31547  </Code>
31548         </descriptive>
31549         <Type type="void"/>
31550         <ArgumentList>
31551           <Argument name="location">
31552             <descriptive>
31553                 <description><p>
31554  Location to resolve.
31555                 </p></description>
31556             </descriptive>
31557             <Type type="DOMString"/>
31558           </Argument>
31559           <Argument name="onsuccess">
31560             <descriptive>
31561                 <description><p>
31562  Called when the location has been.
31563 successfully resolved, passing the newly created File object.
31564                 </p></description>
31565             </descriptive>
31566             <Type name="FileSuccessCallback"/>
31567           </Argument>
31568           <Argument optional="optional" name="onerror">
31569             <descriptive>
31570                 <description><p>
31571  Called if an error occurred.
31572                 </p></description>
31573             </descriptive>
31574             <Type name="ErrorCallback" nullable="nullable"/>
31575           </Argument>
31576           <Argument optional="optional" name="mode">
31577             <descriptive>
31578                 <description><p>
31579  Optional string of value &quot;r&quot; to obtain read-only access,
31580 &quot;rw&quot; to obtain read and write access, &quot;a&quot; to obtain append access,
31581 or &quot;w&quot; to obtain write access to all files and
31582 directories that can be reached from the File object passed
31583 to onsuccess. Defaults to &quot;rw&quot; if absent or <em>null</em>.
31584                 </p></description>
31585             </descriptive>
31586             <Type name="FileMode" nullable="nullable"/>
31587           </Argument>
31588         </ArgumentList>
31589         <Raises>
31590           <RaiseException name="WebAPIException">
31591             <descriptive>
31592                 <description><p>
31593  with error type TypeMismatchError, if the input parameter
31594 is not compatible with the expected type for that parameter.
31595                 </p></description>
31596                 <description><p>
31597  with error type SecurityError, if the application does not have the privilege to call this method.
31598                 </p></description>
31599                 <description><p>
31600  with error type NotSupportedError, if the feature is not supported.
31601                 </p></description>
31602             </descriptive>
31603           </RaiseException>
31604         </Raises>
31605       </Operation>
31606       <Operation name="getStorage" id="::Filesystem::FileSystemManager::getStorage">
31607         <webidl>    void getStorage(DOMString label,
31608                     <ref>FileSystemStorageSuccessCallback</ref> onsuccess,
31609                     optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);</webidl>
31610         <descriptive>
31611             <brief>
31612  Gets information about a storage based on its label.
31613             </brief>
31614            <description>
31615             <p>
31616 Get storage information based on its label (example: &quot;MyThumbDrive&quot;,
31617 &quot;InternalFlash&quot;). The onsuccess will receive as input argument the data
31618 structure containing additional information about the drive.
31619             </p>
31620             <p>
31621 The ErrorCallback is launched with these error types:
31622             </p>
31623             <ul>
31624               <li>
31625 NotFoundError: No drive was found with the given label.              </li>
31626               <li>
31627 InvalidValuesError: If any of the input parameters contain an invalid value.              </li>
31628               <li>
31629 UnknownError: In any other error case.               </li>
31630             </ul>
31631            </description>
31632             <version>
31633  1.0
31634             </version>
31635             <privilegelevel>
31636  public
31637             </privilegelevel>
31638             <privilege>
31639  http://tizen.org/privilege/filesystem.read
31640             </privilege>
31641             <Code> function onStorage(storage) {
31642      // Do something
31643  }
31644
31645  function onStorageError(e) {
31646  console.log(&quot;Storage not found!&quot; + e.message);
31647  }
31648
31649  tizen.filesystem.getStorage(&quot;music&quot;, onStorage, onStorageError);
31650  </Code>
31651         </descriptive>
31652         <Type type="void"/>
31653         <ArgumentList>
31654           <Argument name="label">
31655             <descriptive>
31656                 <description><p>
31657  Storage label.
31658                 </p></description>
31659             </descriptive>
31660             <Type type="DOMString"/>
31661           </Argument>
31662           <Argument name="onsuccess">
31663             <descriptive>
31664                 <description><p>
31665  Called when the list of storage is available,
31666 passing the storage list to the callback.
31667                 </p></description>
31668             </descriptive>
31669             <Type name="FileSystemStorageSuccessCallback"/>
31670           </Argument>
31671           <Argument optional="optional" name="onerror">
31672             <descriptive>
31673                 <description><p>
31674  Called if an error occurred.
31675                 </p></description>
31676             </descriptive>
31677             <Type name="ErrorCallback" nullable="nullable"/>
31678           </Argument>
31679         </ArgumentList>
31680         <Raises>
31681           <RaiseException name="WebAPIException">
31682             <descriptive>
31683                 <description><p>
31684  with error type TypeMismatchError, if the input parameter
31685 is not compatible with the expected type for that parameter.
31686                 </p></description>
31687                 <description><p>
31688  with error type SecurityError, if the application does not have the privilege to call this method.
31689                 </p></description>
31690                 <description><p>
31691  with error type NotSupportedError, if the feature is not supported.
31692                 </p></description>
31693             </descriptive>
31694           </RaiseException>
31695         </Raises>
31696       </Operation>
31697       <Operation name="listStorages" id="::Filesystem::FileSystemManager::listStorages">
31698         <webidl>    void listStorages(<ref>FileSystemStorageArraySuccessCallback</ref> onsuccess,
31699                       optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);</webidl>
31700         <descriptive>
31701             <brief>
31702  Lists the available storages on the device.
31703             </brief>
31704            <description>
31705             <p>
31706 Get the list of available internal and external storage devices. The
31707 onsuccess will receive as input argument a list of the data
31708 structure containing additional information about each drive found.
31709 Can get storages would have a label named as 'internal0', virtual roots (images, documents,...), 'removable1', 'removable2'.
31710 'removable1' label would be used to resolve sdcard and 'removable2' label would be used to resolve usb host, if supported.
31711 The vfat filesystem used widly as sdcard filesystem is not case-sensitive. 
31712 If you want to handle the file on sdcard, you need to consider case-sensitive filenames are regarded as same name.
31713             </p>
31714             <p>
31715 Labels can be different, depends on platform implementation.
31716             </p>
31717             <p>
31718 The ErrorCallback is launched with these error types:
31719             </p>
31720             <ul>
31721               <li>
31722 InvalidValuesError: If any of the input parameters contain an invalid value.              </li>
31723               <li>
31724 UnknownError: In any other error case.               </li>
31725             </ul>
31726            </description>
31727             <version>
31728  1.0
31729             </version>
31730             <privilegelevel>
31731  public
31732             </privilegelevel>
31733             <privilege>
31734  http://tizen.org/privilege/filesystem.read
31735             </privilege>
31736             <Code> function alertForCorruptedRemovableDrives(storages) {
31737      for (var i = 0; i &#60; storages.length; i++) {
31738          if (storages[i].type != &quot;EXTERNAL&quot;)
31739              continue;
31740          if (storages[i].state == &quot;UNMOUNTABLE&quot;)
31741              console.log(&quot;External drive &quot; + storages[i].label + &quot; is corrupted.&quot;);
31742      }
31743  }
31744
31745  tizen.filesystem.listStorages(alertForCorruptedRemovableDrives);
31746  </Code>
31747         </descriptive>
31748         <Type type="void"/>
31749         <ArgumentList>
31750           <Argument name="onsuccess">
31751             <descriptive>
31752                 <description><p>
31753  Called when the list of storage is available,
31754 passing the storage list to the callback.
31755                 </p></description>
31756             </descriptive>
31757             <Type name="FileSystemStorageArraySuccessCallback"/>
31758           </Argument>
31759           <Argument optional="optional" name="onerror">
31760             <descriptive>
31761                 <description><p>
31762  Called if an error occurred.
31763                 </p></description>
31764             </descriptive>
31765             <Type name="ErrorCallback" nullable="nullable"/>
31766           </Argument>
31767         </ArgumentList>
31768         <Raises>
31769           <RaiseException name="WebAPIException">
31770             <descriptive>
31771                 <description><p>
31772  with error type TypeMismatchError, if the input parameter
31773 is not compatible with the expected type for that parameter.
31774                 </p></description>
31775                 <description><p>
31776  with error type SecurityError, if the application does not have the privilege to call this method.
31777                 </p></description>
31778                 <description><p>
31779  with error type NotSupportedError, if the feature is not supported.
31780                 </p></description>
31781             </descriptive>
31782           </RaiseException>
31783         </Raises>
31784       </Operation>
31785       <Operation name="addStorageStateChangeListener" id="::Filesystem::FileSystemManager::addStorageStateChangeListener">
31786         <webidl>    long addStorageStateChangeListener(<ref>FileSystemStorageSuccessCallback</ref> onsuccess,
31787                                        optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);</webidl>
31788         <descriptive>
31789             <brief>
31790  Subscribes to notifications when a storage state changes.
31791             </brief>
31792            <description>
31793             <p>
31794 The most common usage for this method would be to watch notifications of
31795 additions and removals of external storages.
31796             </p>
31797             <p>
31798 When executed, the implementation MUST immediately return a subscription identifier that identifies
31799 the watch operation. After returning the identifier, the watch operation is started
31800 asynchronously. The onsuccess MUST be invoked every time
31801 a storage state changes. If the attempt fails, the onerror (if present)
31802 MUST be invoked with the relevant error type.
31803             </p>
31804             <p>
31805 The watch operation MUST continue until the removeStorageStateChangeListener() method is
31806 called with the corresponding subscription identifier.
31807             </p>
31808            </description>
31809             <version>
31810  1.0
31811             </version>
31812             <privilegelevel>
31813  public
31814             </privilegelevel>
31815             <privilege>
31816  http://tizen.org/privilege/filesystem.write
31817             </privilege>
31818             <Code> var watchID;
31819  function onStorageStateChanged(storage) {
31820      if (storage.state == &quot;MOUNTED&quot;)
31821          console.log(&quot;Storage &quot; + storage.label + &quot; was added!&quot;);
31822  }
31823
31824  watchID = tizen.filesystem.addStorageStateChangeListener(onStorageStateChanged);
31825  </Code>
31826         </descriptive>
31827         <Type type="long">
31828           <descriptive>
31829               <description><p>
31830  long The identifier used to clear the watch subscription.
31831               </p></description>
31832           </descriptive>
31833         </Type>
31834         <ArgumentList>
31835           <Argument name="onsuccess">
31836             <descriptive>
31837                 <description><p>
31838  To be invoked in every change on storage state.
31839                 </p></description>
31840             </descriptive>
31841             <Type name="FileSystemStorageSuccessCallback"/>
31842           </Argument>
31843           <Argument optional="optional" name="onerror">
31844             <descriptive>
31845                 <description><p>
31846  To be invoked in case of error during the watch process.
31847                 </p></description>
31848             </descriptive>
31849             <Type name="ErrorCallback" nullable="nullable"/>
31850           </Argument>
31851         </ArgumentList>
31852         <Raises>
31853           <RaiseException name="WebAPIException">
31854             <descriptive>
31855                 <description><p>
31856  with error type TypeMismatchError, if any input parameter
31857 is not compatible with the expected type for that parameter.
31858                 </p></description>
31859                 <description><p>
31860  with error type SecurityError, if the application does not have the privilege to call this method.
31861                 </p></description>
31862                 <description><p>
31863  with error type NotSupportedError, if the feature is not supported.
31864                 </p></description>
31865                 <description><p>
31866  with error type UnknownError, if any other error case.
31867                 </p></description>
31868             </descriptive>
31869           </RaiseException>
31870         </Raises>
31871       </Operation>
31872       <Operation name="removeStorageStateChangeListener" id="::Filesystem::FileSystemManager::removeStorageStateChangeListener">
31873         <webidl>    void removeStorageStateChangeListener(long watchId) raises(<ref>WebAPIException</ref>);</webidl>
31874         <descriptive>
31875             <brief>
31876  Unsubscribes a storage watch operation.
31877             </brief>
31878            <description>
31879             <p>
31880 If the watchId argument is valid and corresponds to a subscription already in
31881 place, the watch process MUST immediately stop and no further callbacks MUST be
31882 invoked.
31883             </p>
31884            </description>
31885             <version>
31886  1.0
31887             </version>
31888             <privilegelevel>
31889  public
31890             </privilegelevel>
31891             <privilege>
31892  http://tizen.org/privilege/filesystem.write
31893             </privilege>
31894             <Code> var watchID;
31895  function onStorageStateChanged(storage) {
31896      if (storage.state == &quot;MOUNTED&quot;)
31897          console.log(&quot;Storage &quot; + storage.label + &quot; was added!&quot;);
31898      tizen.filesystem.removeStorageStateChangeListener(watchID);
31899  }
31900
31901  watchID = tizen.filesystem.addStorageStateChangeListener(onStorageStateChanged);
31902  
31903
31904  </Code>
31905         </descriptive>
31906         <Type type="void"/>
31907         <ArgumentList>
31908           <Argument name="watchId">
31909             <descriptive>
31910                 <description><p>
31911  Subscription Identifier.
31912                 </p></description>
31913             </descriptive>
31914             <Type type="long"/>
31915           </Argument>
31916         </ArgumentList>
31917         <Raises>
31918           <RaiseException name="WebAPIException">
31919             <descriptive>
31920                 <description><p>
31921  with error type TypeMismatchError, if any input parameter
31922 is not compatible with the expected type for that parameter.
31923                 </p></description>
31924                 <description><p>
31925  with error type InvalidValuesError, if any of the input 
31926 parameters contain an invalid value.
31927                 </p></description>
31928                 <description><p>
31929  with error type SecurityError, if the application does not have the privilege to call this method.
31930                 </p></description>
31931                 <description><p>
31932  with error type NotSupportedError, if the feature is not supported.
31933                 </p></description>
31934                 <description><p>
31935  with error type UnknownError, if any other error case.      
31936                 </p></description>
31937                 <description><p>
31938  with error type NotFoundError, if the watchId does not exist.      
31939                 </p></description>
31940             </descriptive>
31941           </RaiseException>
31942         </Raises>
31943       </Operation>
31944     </Interface>
31945     <Interface name="FileSystemStorage" id="::Filesystem::FileSystemStorage">
31946       <webidl>  [NoInterfaceObject] interface FileSystemStorage {
31947     readonly attribute DOMString label;
31948
31949     readonly attribute <ref>FileSystemStorageType</ref> type;
31950
31951     readonly attribute <ref>FileSystemStorageState</ref> state;
31952   };</webidl>
31953       <descriptive>
31954           <brief>
31955  The FileSystemStorage interface.
31956           </brief>
31957          <description>
31958           <p>
31959 This interface gives additional information about a storage, such as if the
31960 device is mounted, if it's a removable drive or not, or the device's name.
31961 To retrieve the mount point, the resolve() method should be used using
31962 the label as argument.
31963           </p>
31964          </description>
31965           <version>
31966  1.0
31967           </version>
31968       </descriptive>
31969       <ExtendedAttributeList>
31970         <ExtendedAttribute name="NoInterfaceObject">
31971           <webidl>NoInterfaceObject</webidl>
31972         </ExtendedAttribute>
31973       </ExtendedAttributeList>
31974       <Attribute readonly="readonly" name="label" id="::Filesystem::FileSystemStorage::label">
31975         <webidl>    readonly attribute DOMString label;</webidl>
31976         <descriptive>
31977             <brief>
31978  The storage name.
31979             </brief>
31980            <description>
31981             <p>
31982 Used as input for functions like getStorage() and also used as 'location' parameter for File.resolve() and FileSystemManager.resolve().
31983             </p>
31984            </description>
31985             <version>
31986  1.0
31987             </version>
31988         </descriptive>
31989         <Type type="DOMString"/>
31990       </Attribute>
31991       <Attribute readonly="readonly" name="type" id="::Filesystem::FileSystemStorage::type">
31992         <webidl>    readonly attribute <ref>FileSystemStorageType</ref> type;</webidl>
31993         <descriptive>
31994             <brief>
31995  The storage type.
31996             </brief>
31997            <description>
31998             <p>
31999 Defines whether the storage is internal or external.
32000             </p>
32001            </description>
32002             <version>
32003  1.0
32004             </version>
32005         </descriptive>
32006         <Type name="FileSystemStorageType"/>
32007       </Attribute>
32008       <Attribute readonly="readonly" name="state" id="::Filesystem::FileSystemStorage::state">
32009         <webidl>    readonly attribute <ref>FileSystemStorageState</ref> state;</webidl>
32010         <descriptive>
32011             <brief>
32012  The storage state.
32013             </brief>
32014            <description>
32015             <p>
32016 Defines whether the storage is mounted or not.
32017             </p>
32018            </description>
32019             <version>
32020  1.0
32021             </version>
32022         </descriptive>
32023         <Type name="FileSystemStorageState"/>
32024       </Attribute>
32025     </Interface>
32026     <Interface name="File" id="::Filesystem::File">
32027       <webidl>  [NoInterfaceObject] interface File {
32028     readonly attribute <ref>File</ref>? parent;
32029
32030     readonly attribute boolean readOnly;
32031
32032     readonly attribute boolean isFile;
32033
32034     readonly attribute boolean isDirectory;
32035
32036     readonly attribute Date? created;
32037
32038     readonly attribute Date? modified;
32039
32040     readonly attribute DOMString path;
32041
32042     readonly attribute DOMString name;
32043
32044     readonly attribute DOMString fullPath;
32045
32046     readonly attribute unsigned long long fileSize;
32047
32048     readonly attribute long length;
32049
32050     DOMString toURI() raises(<ref>WebAPIException</ref>);
32051
32052     void listFiles(<ref>FileArraySuccessCallback</ref> onsuccess,
32053                    optional <ref>ErrorCallback</ref>? onerror,
32054                    optional <ref>FileFilter</ref>? filter) raises(<ref>WebAPIException</ref>);
32055
32056     void openStream(<ref>FileMode</ref> mode,
32057                     <ref>FileStreamSuccessCallback</ref> onsuccess,
32058                     optional <ref>ErrorCallback</ref>? onerror,
32059                     optional DOMString? encoding) raises(<ref>WebAPIException</ref>);
32060
32061     void readAsText(<ref>FileStringSuccessCallback</ref> onsuccess,
32062                     optional <ref>ErrorCallback</ref>? onerror,
32063                     optional DOMString? encoding) raises(<ref>WebAPIException</ref>);
32064
32065     void copyTo(DOMString originFilePath,
32066                 DOMString destinationFilePath,
32067                 boolean overwrite,
32068                 optional <ref>SuccessCallback</ref>? onsuccess,
32069                 optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);
32070
32071     void moveTo(DOMString originFilePath,
32072                 DOMString destinationFilePath,
32073                 boolean overwrite,
32074                 optional <ref>SuccessCallback</ref>? onsuccess,
32075                 optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);
32076
32077     <ref>File</ref> createDirectory(DOMString dirPath) raises(<ref>WebAPIException</ref>);
32078
32079     <ref>File</ref> createFile(DOMString relativeFilePath) raises(<ref>WebAPIException</ref>);
32080
32081     <ref>File</ref> resolve(DOMString filePath) raises(<ref>WebAPIException</ref>);
32082
32083     void deleteDirectory(DOMString directoryPath,
32084                          boolean recursive,
32085                          optional <ref>SuccessCallback</ref>? onsuccess,
32086                          optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);
32087
32088     void deleteFile(DOMString filePath,
32089                     optional <ref>SuccessCallback</ref>? onsuccess,
32090                     optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);
32091   };</webidl>
32092       <descriptive>
32093           <brief>
32094  The file interface.
32095           </brief>
32096          <description>
32097           <p>
32098 This interface represents the file abstraction in use.
32099 A file handle represents a file
32100 if the isFile property is <em>true</em>, if the isFile property is <em>false</em>, the file
32101 handle represents a directory.
32102 If a file handle represents a directory, it can address files and directories.
32103           </p>
32104           <p>
32105 The file object permissions for the file object location and tree rooted
32106 at that location depends upon the mode defined in the resolve method.
32107 When a File object creates a child File object, 
32108 the new File object inherits its access rights from
32109 the parent object without any reference to the security framework, as
32110 noted in certain methods of File.
32111           </p>
32112           <p>
32113 A file handle representing a file can be opened for I/O operations,
32114 such as reading and writing.
32115           </p>
32116           <p>
32117 A file handle representing a directory can be used for listing all
32118 files and directories rooted as the file handle location.
32119           </p>
32120          </description>
32121           <version>
32122  1.0
32123           </version>
32124           <Code> function onsuccess(files) {
32125    for(var i = 0; i &#60; files.length; i++) {
32126      // alerts each name of dir's contents
32127      console.log(files[i].name);
32128    }
32129  }
32130
32131  function onerror(error) {
32132    console.log(&quot;The error &quot; + error.message +
32133                &quot; occurred when listing the files in the selected folder&quot;);
32134  }
32135
32136  // list directory contents
32137  dir.listFiles(onsuccess, onerror);
32138  </Code>
32139       </descriptive>
32140       <ExtendedAttributeList>
32141         <ExtendedAttribute name="NoInterfaceObject">
32142           <webidl>NoInterfaceObject</webidl>
32143         </ExtendedAttribute>
32144       </ExtendedAttributeList>
32145       <Attribute readonly="readonly" name="parent" id="::Filesystem::File::parent">
32146         <webidl>    readonly attribute <ref>File</ref>? parent;</webidl>
32147         <descriptive>
32148             <brief>
32149  The parent directory handle.
32150             </brief>
32151            <description>
32152             <p>
32153 <em>null</em> if there is no parent directory.
32154             </p>
32155             <p>
32156 If there is no parent directory, this represents a root location.
32157             </p>
32158            </description>
32159             <version>
32160  1.0
32161             </version>
32162             <Code> // list directory contents
32163  dir.listFiles(onsuccess, onerror);
32164
32165  function onsuccess(files) {
32166    for(var i = 0; i &#60; files.length; i++) {
32167      // prints the file parent, should contain the
32168      // same value for all the files in the loop
32169      console.log(&quot;All the files should have the same parent &quot; +
32170                  files[i].parent);
32171    }
32172  }
32173
32174  function onerror(error){
32175    console.log(&quot;The error &quot; + error.message +
32176                &quot; occurred when listing the files in the selected folder&quot;);
32177  }
32178  </Code>
32179         </descriptive>
32180         <Type name="File" nullable="nullable"/>
32181       </Attribute>
32182       <Attribute readonly="readonly" name="readOnly" id="::Filesystem::File::readOnly">
32183         <webidl>    readonly attribute boolean readOnly;</webidl>
32184         <descriptive>
32185             <brief>
32186  The file/directory access state in the filesystem.
32187             </brief>
32188            <description>
32189             <p>
32190 <em>true</em> if object has read-only access at its location.
32191             </p>
32192             <p>
32193 <em>false</em> if object has write access at its location.
32194             </p>
32195             <p>
32196 This attribute represents the actual state of a
32197 file or directory in the filesystem. Its value is not affected by
32198 the mode used in FileSystemManager.resolve that was used to
32199 create the File object from which this File object was obtained.
32200             </p>
32201            </description>
32202             <version>
32203  1.0
32204             </version>
32205             <Code> // list directory contents
32206  dir.listFiles(onsuccess, onerror);
32207
32208  function onsuccess(files) {
32209    for(var i = 0; i &#60; files.length; i++) {
32210      if(files[i].readOnly)
32211        console.log(&quot;Cannot write to file &quot; + files[i].name);
32212      else
32213        console.log(&quot;Can write to file &quot; + files[i].name);
32214    }
32215  }
32216
32217  function onerror(error) {
32218    console.log(&quot;The error &quot; + error.message + &quot; occurred when listing the files in the selected folder&quot;);
32219  }
32220  </Code>
32221         </descriptive>
32222         <Type type="boolean"/>
32223       </Attribute>
32224       <Attribute readonly="readonly" name="isFile" id="::Filesystem::File::isFile">
32225         <webidl>    readonly attribute boolean isFile;</webidl>
32226         <descriptive>
32227             <brief>
32228  The file type.
32229             </brief>
32230            <description>
32231             <p>
32232 <em>true</em> if this handle is a file.
32233 <em>false</em> if this handle is a directory.
32234             </p>
32235            </description>
32236             <version>
32237  1.0
32238             </version>
32239         </descriptive>
32240         <Type type="boolean"/>
32241       </Attribute>
32242       <Attribute readonly="readonly" name="isDirectory" id="::Filesystem::File::isDirectory">
32243         <webidl>    readonly attribute boolean isDirectory;</webidl>
32244         <descriptive>
32245             <brief>
32246  The file type.
32247             </brief>
32248            <description>
32249             <p>
32250 <em>true</em> if this handle is a directory,
32251 <em>false</em> if this handle is a file.
32252             </p>
32253            </description>
32254             <version>
32255  1.0
32256             </version>
32257         </descriptive>
32258         <Type type="boolean"/>
32259       </Attribute>
32260       <Attribute readonly="readonly" name="created" id="::Filesystem::File::created">
32261         <webidl>    readonly attribute Date? created;</webidl>
32262         <descriptive>
32263             <brief>
32264  The creation timestamp of this file.
32265             </brief>
32266            <description>
32267             <p>
32268 This is the timestamp when the file was first created in the filesystem.
32269 Equivalent to the timestamp when a call to createFile() succeeds.
32270             </p>
32271             <p>
32272 If the platform does not support this attribute, it MUST
32273 be <em>null</em>.
32274             </p>
32275             <p>
32276 It is unspecified and platform-dependent if the creation
32277 timestamp changes when a file is moved.
32278             </p>
32279            </description>
32280             <version>
32281  1.0
32282             </version>
32283         </descriptive>
32284         <Type type="Date" nullable="nullable"/>
32285       </Attribute>
32286       <Attribute readonly="readonly" name="modified" id="::Filesystem::File::modified">
32287         <webidl>    readonly attribute Date? modified;</webidl>
32288         <descriptive>
32289             <brief>
32290  The modification timestamp.
32291             </brief>
32292            <description>
32293             <p>
32294 The modification timestamp of this file. This is the timestamp
32295 of the most recent modification to the file, usually when the last
32296 write operation succeeded. Opening a file for reading does not change
32297 the modification timestamp.
32298             </p>
32299             <p>
32300 If the platform does not support this attribute, it MUST
32301 be <em>null</em>.
32302             </p>
32303             <p>
32304 It is unspecified and platform-dependent if the modified
32305 timestamp changes when a file is moved.
32306             </p>
32307            </description>
32308             <version>
32309  1.0
32310             </version>
32311             <Code> console.log(file.modified); // displays the modification timestamp
32312  </Code>
32313         </descriptive>
32314         <Type type="Date" nullable="nullable"/>
32315       </Attribute>
32316       <Attribute readonly="readonly" name="path" id="::Filesystem::File::path">
32317         <webidl>    readonly attribute DOMString path;</webidl>
32318         <descriptive>
32319             <brief>
32320  The path of this file, excluding the file name.
32321             </brief>
32322            <description>
32323             <p>
32324 This is the path of this file, beginning with the name of the root containing the file,
32325 up to and including the directory containing the file, but excluding the file name.
32326             </p>
32327             <p>
32328 Except in a special case of the File representing the root itself, the last
32329 character is always the character '/'.
32330             </p>
32331             <p>
32332 For example, if a file is located at music/ramones/volume1/RockawayBeach.mp3,
32333 the path would be music/ramones/volume1/.
32334             </p>
32335             <p>
32336 For example, if a directory is located at music/ramones/volume1, the path would be
32337 music/ramones/.
32338             </p>
32339             <p>
32340 For the virtual roots, the path is same as the name of the virtual root. 
32341 For example, if the root is music, then the path is music. If the root is documents, then the path is documents.
32342             </p>
32343            </description>
32344             <version>
32345  1.0
32346             </version>
32347             <Code> console.log(file.path); // should be 'music/' if the file is music/foo.mp3
32348  </Code>
32349         </descriptive>
32350         <Type type="DOMString"/>
32351       </Attribute>
32352       <Attribute readonly="readonly" name="name" id="::Filesystem::File::name">
32353         <webidl>    readonly attribute DOMString name;</webidl>
32354         <descriptive>
32355             <brief>
32356  The file name, excluding any path components.
32357             </brief>
32358            <description>
32359             <p>
32360 This is the name of this file, excluding the root name and any other path components.
32361             </p>
32362             <p>
32363 For example, if a file is located at
32364 music/ramones/volume1/RockawayBeach.mp3, the name would be RockawayBeach.mp3.
32365             </p>
32366             <p>
32367 For example, if a directory is located at music/ramones/volume1, the
32368 name would be volume1.
32369             </p>
32370             <p>
32371 For the special case of the root itself, the name is an empty string.
32372             </p>
32373            </description>
32374             <version>
32375  1.0
32376             </version>
32377             <Code> console.log(file.name); // should be foo.mp3 if the file path is music/foo.mp3
32378  </Code>
32379         </descriptive>
32380         <Type type="DOMString"/>
32381       </Attribute>
32382       <Attribute readonly="readonly" name="fullPath" id="::Filesystem::File::fullPath">
32383         <webidl>    readonly attribute DOMString fullPath;</webidl>
32384         <descriptive>
32385             <brief>
32386  The full path of this file.
32387             </brief>
32388            <description>
32389             <p>
32390 The full path of this file, beginning with the name of the root containing the file,
32391 and including the name of the file or directory itself.
32392             </p>
32393             <p>
32394 For instance, for a file, if the file is located at
32395 music/ramones/volume1/RockawayBeach.mp3, then the fullPath is
32396 music/ramones/volume1/RockawayBeach.mp3.
32397             </p>
32398             <p>
32399 For a directory, if the directory is located at music/ramones/volume1, then the
32400 fullPath is music/ramones/volume1.
32401             </p>
32402             <p>
32403 For the special case of the root itself, if the root is music, then the fullPath is
32404 music.
32405             </p>
32406             <p>
32407 The fullPath is always equal to path + name.
32408             </p>
32409            </description>
32410             <version>
32411  1.0
32412             </version>
32413             <Code> console.log(file.fullPath); // should be music/track1.mp3 if the file is music/track1.mp3
32414  </Code>
32415         </descriptive>
32416         <Type type="DOMString"/>
32417       </Attribute>
32418       <Attribute readonly="readonly" name="fileSize" id="::Filesystem::File::fileSize">
32419         <webidl>    readonly attribute unsigned long long fileSize;</webidl>
32420         <descriptive>
32421             <brief>
32422  The size of this file, in bytes.
32423             </brief>
32424            <description>
32425             <p>
32426 If there's an attempt to read this attribute on a directory,
32427 <em>undefined</em> is returned. To retrieve the
32428 number of files and directories contained in the directory,
32429 use the length attribute, instead.
32430             </p>
32431            </description>
32432             <version>
32433  1.0
32434             </version>
32435             <Code> console.log(file.fileSize); // displays the file size
32436  </Code>
32437         </descriptive>
32438         <Type type="unsigned long long"/>
32439       </Attribute>
32440       <Attribute readonly="readonly" name="length" id="::Filesystem::File::length">
32441         <webidl>    readonly attribute long length;</webidl>
32442         <descriptive>
32443             <brief>
32444  The number of files and directories contained in this file handle.
32445             </brief>
32446            <description>
32447             <p>
32448 If there's an attempt to read this attribute on a file,
32449 <em>undefined</em> is returned. To retrieve the
32450 size of a file, use the fileSize attribute instead.
32451             </p>
32452            </description>
32453             <version>
32454  1.0
32455             </version>
32456             <Code> console.log(file.length); // '3' if the directory contains two files and one sub-directory
32457  </Code>
32458         </descriptive>
32459         <Type type="long"/>
32460       </Attribute>
32461       <Operation name="toURI" id="::Filesystem::File::toURI">
32462         <webidl>    DOMString toURI() raises(<ref>WebAPIException</ref>);</webidl>
32463         <descriptive>
32464             <brief>
32465  Returns a URI for the file.
32466             </brief>
32467            <description>
32468             <p>
32469 Returns a URI that can be used to identify this entry (such as using it
32470 as the src attribute on an HTML img element). The URI has no specific
32471 expiration, it should be valid at least as long as the file exists.
32472             </p>
32473             <p>
32474 When this method is invoked, the implementation MUST generate a URI.
32475             </p>
32476             <p>
32477 If that URI corresponds to any of the public virtual roots (that is
32478 images, videos, music, documents, and downloads) the URI
32479 MUST be globally unique and could be used by any widget.
32480             </p>
32481             <p>
32482 If that URI corresponds to a file located in any of the widget private
32483 areas (such as wgt-package, wgt-private, wgt-private-tmp). The generated
32484 URI MUST be unique for that file and for the widget making the request
32485 (such as including some derived from the widget id in the URI). 
32486 These URIs MUST NOT be accessible to other widgets,
32487 apart from the one invoking this method.
32488             </p>
32489            </description>
32490             <version>
32491  1.0
32492             </version>
32493             <privilegelevel>
32494  public
32495             </privilegelevel>
32496             <privilege>
32497  http://tizen.org/privilege/filesystem.read
32498             </privilege>
32499             <Code> // 'file:///opt/usr/media/music/ramones/RockawayBeach.mp3' if the file is
32500  // music/ramones/RockawayBeach.mp3
32501  console.log(file.toURI());
32502  </Code>
32503         </descriptive>
32504         <Type type="DOMString">
32505           <descriptive>
32506               <description><p>
32507  DOMString The URI that identifies the file or <em>null</em> if an error occurs.
32508               </p></description>
32509           </descriptive>
32510         </Type>
32511         <ArgumentList/>
32512         <Raises>
32513           <RaiseException name="WebAPIException">
32514             <descriptive>
32515                 <description><p>
32516  with error type NotSupportedError, if the feature is not supported.
32517                 </p></description>
32518                 <description><p>
32519  with error type SecurityError, if the application does not have the privilege to call this method.
32520                 </p></description>
32521                 <description><p>
32522  with error type UnknownError in any other error situation.     
32523                 </p></description>
32524             </descriptive>
32525           </RaiseException>
32526         </Raises>
32527       </Operation>
32528       <Operation name="listFiles" id="::Filesystem::File::listFiles">
32529         <webidl>    void listFiles(<ref>FileArraySuccessCallback</ref> onsuccess,
32530                    optional <ref>ErrorCallback</ref>? onerror,
32531                    optional <ref>FileFilter</ref>? filter) raises(<ref>WebAPIException</ref>);</webidl>
32532         <descriptive>
32533             <brief>
32534  Returns the list of all files in this directory.
32535             </brief>
32536            <description>
32537             <p>
32538 The list of files will be passed as a File[] in the onsuccess
32539 and contains directories and files. However, the directories &quot;.&quot; and &quot;..&quot;
32540 MUST NOT be returned. Each File object part of the array MUST inherit
32541 all the access rights (that is one of the values in FileMode) from the File object in which
32542 this method was invoked.
32543             </p>
32544             <p>
32545 If the filter is passed and contains valid values, only those directories
32546 and files in the directory that match the filter criteria specified
32547 in the FileFilter interface MUST be returned in the onsuccess.
32548 If no filter is passed, the filter is <em>null</em> or undefined, or the filter contains invalid
32549 values, the implementation MUST return the full list of files in the directory.
32550             </p>
32551             <p>
32552 If the directory does not contain any files or directories, or
32553 the filter criteria is unmatched to any files or directories, the onsuccess will be
32554 invoked with an empty array.
32555             </p>
32556             <p>
32557 The ErrorCallback is launched with these error types:
32558             </p>
32559             <ul>
32560               <li>
32561 IOError: The operation is launched on a file (not a directory).              </li>
32562               <li>
32563 InvalidValuesError: If any of the input parameters contain an invalid value.              </li>
32564               <li>
32565 UnknownError: In any other error case.               </li>
32566             </ul>
32567            </description>
32568             <version>
32569  1.0
32570             </version>
32571             <privilegelevel>
32572  public
32573             </privilegelevel>
32574             <privilege>
32575  http://tizen.org/privilege/filesystem.read
32576             </privilege>
32577             <Code> function onsuccess(files) {
32578    console.log(&quot;There are &quot; + files.length  + &quot; in the selected folder&quot;);
32579  }
32580
32581  function onerror(error) {
32582    console.log(&quot;The error &quot; + error.message + &quot; occurred when listing the files in the selected folder&quot;);
32583  }
32584
32585  tizen.filesystem.resolve(
32586      &quot;documents&quot;,
32587      function(dir){
32588        dir.listFiles(onsuccess, onerror);
32589      }, function(e){
32590        console.log(&quot;Error &quot; + e.message);
32591      }, &quot;r&quot;
32592  );
32593  </Code>
32594         </descriptive>
32595         <Type type="void"/>
32596         <ArgumentList>
32597           <Argument name="onsuccess">
32598             <descriptive>
32599                 <description><p>
32600  Called when the list operation has been successfully completed.
32601                 </p></description>
32602             </descriptive>
32603             <Type name="FileArraySuccessCallback"/>
32604           </Argument>
32605           <Argument optional="optional" name="onerror">
32606             <descriptive>
32607                 <description><p>
32608  Called if an error occurred.
32609                 </p></description>
32610             </descriptive>
32611             <Type name="ErrorCallback" nullable="nullable"/>
32612           </Argument>
32613           <Argument optional="optional" name="filter">
32614             <descriptive>
32615                 <description><p>
32616  Used to restrict the listed files.
32617                 </p></description>
32618             </descriptive>
32619             <Type name="FileFilter" nullable="nullable"/>
32620           </Argument>
32621         </ArgumentList>
32622         <Raises>
32623           <RaiseException name="WebAPIException">
32624             <descriptive>
32625                 <description><p>
32626  with error type TypeMismatchError, if the input parameter
32627 is not compatible with the expected type for that parameter.
32628                 </p></description>
32629                 <description><p>
32630  with error type SecurityError, if the application does not have the privilege to call this method.
32631                 </p></description>
32632                 <description><p>
32633  with error type NotSupportedError, if the feature is not supported.
32634                 </p></description>
32635             </descriptive>
32636           </RaiseException>
32637         </Raises>
32638       </Operation>
32639       <Operation name="openStream" id="::Filesystem::File::openStream">
32640         <webidl>    void openStream(<ref>FileMode</ref> mode,
32641                     <ref>FileStreamSuccessCallback</ref> onsuccess,
32642                     optional <ref>ErrorCallback</ref>? onerror,
32643                     optional DOMString? encoding) raises(<ref>WebAPIException</ref>);</webidl>
32644         <descriptive>
32645             <brief>
32646  Opens the file in the given mode supporting the given
32647 encoding.
32648             </brief>
32649            <description>
32650             <p>
32651 This operation is performed asynchronously. If the file is opened
32652 successfully, the onsuccess is invoked with a FileStream
32653 that can be used for reading and writing the file, depending on the
32654 mode. The return FileStream instance includes a file pointer, which represents
32655 the current position in the file. The filepointer will, by default, be at the start of the file,
32656 except in the case of opening with append (&quot;a&quot;) mode, in which case
32657 the filepointer points to the end of the file.
32658             </p>
32659             <p>
32660 The ErrorCallback is launched with these error types:
32661             </p>
32662             <ul>
32663               <li>
32664 InvalidValuesError: If any of the input parameters contains an invalid value.               </li>
32665               <li>
32666 IOError: The operation is launched on a directory (not a file), the file is not
32667 valid or it does not exist.              </li>
32668               <li>
32669 UnknownError: In any other error case.              </li>
32670             </ul>
32671            </description>
32672             <version>
32673  1.0
32674             </version>
32675             <privilegelevel>
32676  public
32677             </privilegelevel>
32678             <privilege>
32679  http://tizen.org/privilege/filesystem.read
32680             </privilege>
32681             <Code> var documentsDir;
32682  function onsuccess(files) {
32683    for(var i = 0; i &#60; files.length; i++) {
32684      console.log(&quot;File Name is &quot; + files[i].name); // displays file name
32685    }
32686
32687    var testFile = documentsDir.createFile(&quot;test.txt&quot;);
32688    if (testFile != null) {
32689      testFile.openStream(
32690          &quot;w&quot;,
32691          function(fs){
32692            fs.write(&quot;HelloWorld&quot;);
32693            fs.close();
32694          }, function(e){
32695            console.log(&quot;Error &quot; + e.message);
32696          }, &quot;UTF-8&quot;
32697      );
32698    }
32699  }
32700
32701  function onerror(error) {
32702    console.log(&quot;The error &quot; + error.message + &quot; occurred when listing the files in the selected folder&quot;);
32703  }
32704
32705  tizen.filesystem.resolve(
32706      'documents',
32707      function(dir){
32708        documentsDir = dir; dir.listFiles(onsuccess,onerror);
32709      }, function(e) {
32710        console.log(&quot;Error&quot; + e.message);
32711      }, &quot;rw&quot;
32712  );
32713  </Code>
32714         </descriptive>
32715         <Type type="void"/>
32716         <ArgumentList>
32717           <Argument name="mode">
32718             <descriptive>
32719                 <description><p>
32720  The mode for opening a file:
32721 <b>&quot;r&quot;</b> for reading
32722 <b>&quot;a&quot;</b> for appending
32723 <b>&quot;w&quot;</b> for [over]writing
32724 <b>&quot;rw&quot;</b> for reading and writing
32725                 </p></description>
32726             </descriptive>
32727             <Type name="FileMode"/>
32728           </Argument>
32729           <Argument name="onsuccess">
32730             <descriptive>
32731                 <description><p>
32732  Called when the file has been opened.
32733                 </p></description>
32734             </descriptive>
32735             <Type name="FileStreamSuccessCallback"/>
32736           </Argument>
32737           <Argument optional="optional" name="onerror">
32738             <descriptive>
32739                 <description><p>
32740  Called if an error occurred.
32741                 </p></description>
32742             </descriptive>
32743             <Type name="ErrorCallback" nullable="nullable"/>
32744           </Argument>
32745           <Argument optional="optional" name="encoding">
32746             <descriptive>
32747                 <description><p>
32748  The encoding for read/write operations on the file,
32749 at least the following encodings MUST be supported:
32750 &quot;<a href="http://www.ietf.org/rfc/rfc2279.txt">UTF-8</a>&quot; default encoding,
32751 &quot;<a href="http://en.wikipedia.org/wiki/ISO/IEC_8859-1">ISO-8859-1</a>&quot; latin1 encoding.
32752 If no encoding is passed by the developer, then the default platform encoding
32753 MUST be used.
32754                 </p></description>
32755             </descriptive>
32756             <Type type="DOMString" nullable="nullable"/>
32757           </Argument>
32758         </ArgumentList>
32759         <Raises>
32760           <RaiseException name="WebAPIException">
32761             <descriptive>
32762                 <description><p>
32763  with error type TypeMismatchError, if the input parameter
32764 is not compatible with the expected type for that parameter.
32765                 </p></description>
32766                 <description><p>
32767  with error type SecurityError, if the application does not have the privilege to call this method.
32768                 </p></description>
32769                 <description><p>
32770  with error type NotSupportedError, if the feature is not supported.
32771                 </p></description>
32772             </descriptive>
32773           </RaiseException>
32774         </Raises>
32775       </Operation>
32776       <Operation name="readAsText" id="::Filesystem::File::readAsText">
32777         <webidl>    void readAsText(<ref>FileStringSuccessCallback</ref> onsuccess,
32778                     optional <ref>ErrorCallback</ref>? onerror,
32779                     optional DOMString? encoding) raises(<ref>WebAPIException</ref>);</webidl>
32780         <descriptive>
32781             <brief>
32782  Reads the content of a file as a DOMString.
32783             </brief>
32784            <description>
32785             <p>
32786 If the operation is successfully executed, the onsuccess is
32787 invoked and a DOMString is passed as input parameter that represents
32788 the file content in the format determined by the encoding parameter.
32789             </p>
32790             <p>
32791 The ErrorCallback is launched with these error types:
32792             </p>
32793             <ul>
32794               <li>
32795 InvalidValuesError: If any of the input parameters contain an invalid value.              </li>
32796               <li>
32797 IOError: The operation is launched on a directory (not a file), the file is not
32798 valid, or the file does not exist.              </li>
32799               <li>
32800 UnknownError: In any other error case.              </li>
32801             </ul>
32802            </description>
32803             <version>
32804  1.0
32805             </version>
32806             <privilegelevel>
32807  public
32808             </privilegelevel>
32809             <privilege>
32810  http://tizen.org/privilege/filesystem.read
32811             </privilege>
32812             <Code> function onsuccess(files) {
32813    for(var i = 0; i &#60; files.length; i++) {
32814      console.log(&quot;File Name is &quot; + files[i].name); // displays file name
32815      if (files[i].isDirectory == false)
32816        files[i].readAsText(
32817            function(str){
32818              console.log(&quot;The file content &quot; + str);
32819            }, function(e){
32820              console.log(&quot;Error &quot; + e.message);
32821            }, &quot;UTF-8&quot;
32822        );
32823    }
32824  }
32825
32826  function onerror(error) {
32827    console.log(&quot;The error &quot; + error.message + &quot; occurred when listing the files in the selected folder&quot;);
32828  }
32829
32830  var documentsDir;
32831  tizen.filesystem.resolve(
32832      'documents', 
32833      function(dir){
32834        documentsDir = dir;
32835        dir.listFiles(onsuccess,onerror);
32836      }, function(e) {
32837        console.log(&quot;Error&quot; + e.message);
32838      }, &quot;rw&quot;
32839  );
32840  </Code>
32841         </descriptive>
32842         <Type type="void"/>
32843         <ArgumentList>
32844           <Argument name="onsuccess">
32845             <descriptive>
32846                 <description><p>
32847  Called when the file has been successfully read.
32848                 </p></description>
32849             </descriptive>
32850             <Type name="FileStringSuccessCallback"/>
32851           </Argument>
32852           <Argument optional="optional" name="onerror">
32853             <descriptive>
32854                 <description><p>
32855  If an error occurs while reading the file.
32856                 </p></description>
32857             </descriptive>
32858             <Type name="ErrorCallback" nullable="nullable"/>
32859           </Argument>
32860           <Argument optional="optional" name="encoding">
32861             <descriptive>
32862                 <description><p>
32863  The encoding for read/write operations on the file,
32864 at least the following encodings MUST be supported:
32865 &quot;<a href="http://www.ietf.org/rfc/rfc2279.txt">UTF-8</a>&quot; default encoding,
32866 &quot;<a href="http://en.wikipedia.org/wiki/ISO/IEC_8859-1">ISO-8859-1</a>&quot; latin1 encoding.
32867 If no encoding is passed by the developer, then the default platform
32868 encoding MUST be used.
32869                 </p></description>
32870             </descriptive>
32871             <Type type="DOMString" nullable="nullable"/>
32872           </Argument>
32873         </ArgumentList>
32874         <Raises>
32875           <RaiseException name="WebAPIException">
32876             <descriptive>
32877                 <description><p>
32878  with error type TypeMismatchError, if the input parameter
32879 is not compatible with the expected type for that parameter.
32880                 </p></description>
32881                 <description><p>
32882  with error type SecurityError, if the application does not have the privilege to call this method.
32883                 </p></description>
32884                 <description><p>
32885  with error type NotSupportedError, if the feature is not supported.
32886                 </p></description>
32887             </descriptive>
32888           </RaiseException>
32889         </Raises>
32890       </Operation>
32891       <Operation name="copyTo" id="::Filesystem::File::copyTo">
32892         <webidl>    void copyTo(DOMString originFilePath,
32893                 DOMString destinationFilePath,
32894                 boolean overwrite,
32895                 optional <ref>SuccessCallback</ref>? onsuccess,
32896                 optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);</webidl>
32897         <descriptive>
32898             <brief>
32899  Copies (and overwrites if possible and specified) a file or a
32900 directory from a specified location to another specified location.
32901             </brief>
32902            <description>
32903             <p>
32904 The copy of the file or directory identified by the originFilePath parameter
32905 MUST be created in the path passed in the destinationFilePath parameter.
32906             </p>
32907             <p>
32908 The file or directory to be copied MUST be under the Directory from which the method
32909 is invoked, otherwise the operation MUST NOT be performed.
32910             </p>
32911             <p>
32912 If the copy is performed successfully, the onsuccess is invoked.
32913             </p>
32914             <p>
32915 The ErrorCallback is launched with these error types:
32916             </p>
32917             <ul>
32918               <li>
32919 InvalidValuesError: If any of the input parameters contain an invalid value.              </li>
32920               <li>
32921 NotFoundError: originFilePath does not correspond to a valid file or destinationPath is not a valid path.              </li>
32922               <li>
32923 IOError: The File in which the copyTo method is invoked is a file (not a directory), 
32924 originFilePath corresponds to a file or directory in use by another process,
32925 overwrite parameter is <em>false</em> and destinationFilePath corresponds to an existing
32926 file or directory.              </li>
32927               <li>
32928 UnknownError: In any other error case.              </li>
32929             </ul>
32930            </description>
32931             <version>
32932  1.0
32933             </version>
32934             <privilegelevel>
32935  public
32936             </privilegelevel>
32937             <privilege>
32938  http://tizen.org/privilege/filesystem.write
32939             </privilege>
32940             <Code> var documentsDir;
32941  function onsuccess(files) {
32942    for(var i = 0; i &#60; files.length; i++) {
32943      if (files[i].isDirectory == false) {
32944        documentsDir.copyTo(files[i].fullPath,
32945                            &quot;images/backup/&quot; + files[i].name,
32946                            false,
32947                            function(){console.log(&quot;file copied&quot;);});
32948      }
32949    }
32950  }
32951
32952  function onerror(error) {
32953    console.log(&quot;The error &quot; + error.message +
32954                &quot; occurred when listing the files in the selected folder&quot;);
32955  }
32956
32957  tizen.filesystem.resolve(
32958      'documents', 
32959      function(dir){
32960        documentsDir = dir;
32961        dir.listFiles(onsuccess, onerror);
32962      }, function(e) {
32963        console.log(&quot;Error&quot; + e.message);
32964      }, &quot;rw&quot;
32965  );
32966  </Code>
32967         </descriptive>
32968         <Type type="void"/>
32969         <ArgumentList>
32970           <Argument name="originFilePath">
32971             <descriptive>
32972                 <description><p>
32973  The origin full virtual file or directory path, it must be under the current directory.
32974                 </p></description>
32975             </descriptive>
32976             <Type type="DOMString"/>
32977           </Argument>
32978           <Argument name="destinationFilePath">
32979             <descriptive>
32980                 <description><p>
32981  The new full virtual file path or directory path.
32982                 </p></description>
32983             </descriptive>
32984             <Type type="DOMString"/>
32985           </Argument>
32986           <Argument name="overwrite">
32987             <descriptive>
32988                 <description><p>
32989  <em>true</em> enforces overwriting an existing file.
32990                 </p></description>
32991             </descriptive>
32992             <Type type="boolean"/>
32993           </Argument>
32994           <Argument optional="optional" name="onsuccess">
32995             <descriptive>
32996                 <description><p>
32997  Called when the file has been copied.
32998                 </p></description>
32999             </descriptive>
33000             <Type name="SuccessCallback" nullable="nullable"/>
33001           </Argument>
33002           <Argument optional="optional" name="onerror">
33003             <descriptive>
33004                 <description><p>
33005  Called if an error occurred.
33006                 </p></description>
33007             </descriptive>
33008             <Type name="ErrorCallback" nullable="nullable"/>
33009           </Argument>
33010         </ArgumentList>
33011         <Raises>
33012           <RaiseException name="WebAPIException">
33013             <descriptive>
33014                 <description><p>
33015  with error type TypeMismatchError, if the input parameter
33016 is not compatible with the expected type for that parameter.
33017                 </p></description>
33018                 <description><p>
33019  with error type SecurityError, if the application does not have the privilege to call this method.
33020                 </p></description>
33021                 <description><p>
33022  with error type NotSupportedError, if the feature is not supported.
33023                 </p></description>
33024             </descriptive>
33025           </RaiseException>
33026         </Raises>
33027       </Operation>
33028       <Operation name="moveTo" id="::Filesystem::File::moveTo">
33029         <webidl>    void moveTo(DOMString originFilePath,
33030                 DOMString destinationFilePath,
33031                 boolean overwrite,
33032                 optional <ref>SuccessCallback</ref>? onsuccess,
33033                 optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);</webidl>
33034         <descriptive>
33035             <brief>
33036  Moves a file or a directory from a specified location to another.
33037             </brief>
33038            <description>
33039             <p>
33040 The file or directory will be moved (and will overwrite if possible and specified)
33041 atomically to the given path. This operation is different from 
33042 instantiating copyTo and then deleting the original file, as on certain
33043 platforms, this operation does not require extra disk space.
33044             </p>
33045             <p>
33046 The file or directory identified by the originFilePath parameter
33047 MUST be moved to the path passed in the destinationFilePath parameter.
33048             </p>
33049             <p>
33050 The file to be moved MUST be under the Directory from which the method
33051 is invoked, otherwise the operation MUST NOT be performed.
33052             </p>
33053             <p>
33054 If the file or directory is moved successfully, the onsuccess is
33055 invoked.
33056             </p>
33057             <p>
33058 The ErrorCallback is launched with these error types:
33059             </p>
33060             <ul>
33061               <li>
33062 InvalidValuesError: If any of the input parameters contain an invalid value.               </li>
33063               <li>
33064 NotFoundError: originFilePath does not correspond to a valid file or destinationPath is not a valid path.              </li>
33065               <li>
33066 IOError: The File in which the moveTo method is invoked is a file (not a directory),
33067 originFilePath corresponds to a file or directory in use by another process,
33068 overwrite parameter is <em>false</em> and destinationFilePath corresponds to an existing
33069 file or directory.              </li>
33070               <li>
33071 UnknownError: In any other error case.              </li>
33072             </ul>
33073            </description>
33074             <version>
33075  1.0
33076             </version>
33077             <privilegelevel>
33078  public
33079             </privilegelevel>
33080             <privilege>
33081  http://tizen.org/privilege/filesystem.write
33082             </privilege>
33083             <Code> var documentsDir;
33084  function onsuccess(files) {
33085    for(var i = 0; i &#60; files.length; i++) {
33086      if (files[i].isDirectory == false) {
33087        documentsDir.moveTo(files[i].fullPath,
33088                            &quot;images/newFolder/&quot; + files[i].name,
33089                            false,
33090                            function(){console.log(&quot;file moved&quot;);});
33091      }
33092    }
33093  }
33094
33095  function onerror(error) {
33096    console.log(&quot;The error &quot; + error.message +
33097                &quot; occurred during listing the files in the selected folder&quot;);
33098  }
33099
33100  tizen.filesystem.resolve(
33101      'documents', 
33102      function(dir){
33103        documentsDir = dir;
33104        dir.listFiles(onsuccess, onerror);
33105      }, function(e) {
33106        console.log(&quot;Error&quot; + e.message);
33107      }, &quot;rw&quot;
33108  );
33109  </Code>
33110         </descriptive>
33111         <Type type="void"/>
33112         <ArgumentList>
33113           <Argument name="originFilePath">
33114             <descriptive>
33115                 <description><p>
33116  The origin full virtual file or directory path, it must be under the current directory.
33117                 </p></description>
33118             </descriptive>
33119             <Type type="DOMString"/>
33120           </Argument>
33121           <Argument name="destinationFilePath">
33122             <descriptive>
33123                 <description><p>
33124  The new full virtual file path or directory path.
33125                 </p></description>
33126             </descriptive>
33127             <Type type="DOMString"/>
33128           </Argument>
33129           <Argument name="overwrite">
33130             <descriptive>
33131                 <description><p>
33132  <em>true</em> enforces overwriting an existing file.
33133                 </p></description>
33134             </descriptive>
33135             <Type type="boolean"/>
33136           </Argument>
33137           <Argument optional="optional" name="onsuccess">
33138             <descriptive>
33139                 <description><p>
33140  Called when the file has been moved.
33141                 </p></description>
33142             </descriptive>
33143             <Type name="SuccessCallback" nullable="nullable"/>
33144           </Argument>
33145           <Argument optional="optional" name="onerror">
33146             <descriptive>
33147                 <description><p>
33148  Called if an error occurred.
33149                 </p></description>
33150             </descriptive>
33151             <Type name="ErrorCallback" nullable="nullable"/>
33152           </Argument>
33153         </ArgumentList>
33154         <Raises>
33155           <RaiseException name="WebAPIException">
33156             <descriptive>
33157                 <description><p>
33158  with error type TypeMismatchError, if the input parameter
33159 is not compatible with the expected type for that parameter.
33160                 </p></description>
33161                 <description><p>
33162  with error type SecurityError, if the application does not have the privilege to call this method.
33163                 </p></description>
33164                 <description><p>
33165  with error type NotSupportedError, if the feature is not supported.
33166                 </p></description>
33167             </descriptive>
33168           </RaiseException>
33169         </Raises>
33170       </Operation>
33171       <Operation name="createDirectory" id="::Filesystem::File::createDirectory">
33172         <webidl>    <ref>File</ref> createDirectory(DOMString dirPath) raises(<ref>WebAPIException</ref>);</webidl>
33173         <descriptive>
33174             <brief>
33175  Creates a new directory.
33176             </brief>
33177            <description>
33178             <p>
33179 A new directory will be created relative to the current
33180 directory that this operation is performed on. The implementation will attempt to
33181 create all necessary sub-directories specified in the dirPath, as well. The use of &quot;.&quot;
33182 or &quot;..&quot; in path components is not supported.
33183             </p>
33184             <p>
33185 This operation can only be performed on file handlers that
33186 represent a directory (that is, <var>isDirectory == true</var>).
33187             </p>
33188             <p>
33189 If the directory is successfully created, it will be returned.
33190             </p>
33191             <p>
33192 In case the directory cannot be created, an error MUST be thrown
33193 with the appropriate error type.
33194             </p>
33195            </description>
33196             <version>
33197  1.0
33198             </version>
33199             <privilegelevel>
33200  public
33201             </privilegelevel>
33202             <privilege>
33203  http://tizen.org/privilege/filesystem.write
33204             </privilege>
33205             <Code> var dir; //Directory object obtained from filesystem API
33206  var newDir = dir.createDirectory(&quot;newDir&quot;);
33207  var anotherNewDir = dir.createDirectory(&quot;newDir1/subNewDir1&quot;);
33208  </Code>
33209         </descriptive>
33210         <Type name="File">
33211           <descriptive>
33212               <description><p>
33213  File The file handle of the new directory. The new File object
33214 will have &quot;rw&quot; access rights, as it inherits this from
33215 the File object on which the createDirectory() method is
33216 called.
33217               </p></description>
33218           </descriptive>
33219         </Type>
33220         <ArgumentList>
33221           <Argument name="dirPath">
33222             <descriptive>
33223                 <description><p>
33224  The relative directory path, it should only contain
33225 characters supported by the underlying filesystem.
33226                 </p></description>
33227             </descriptive>
33228             <Type type="DOMString"/>
33229           </Argument>
33230         </ArgumentList>
33231         <Raises>
33232           <RaiseException name="WebAPIException">
33233             <descriptive>
33234                 <description><p>
33235  with error type IOError, if the dirPath already exists.
33236                 </p></description>
33237                 <description><p>
33238  with error type InvalidValuesError, if the dirPath does not contain a valid path.
33239                 </p></description>
33240                 <description><p>
33241  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
33242                 </p></description>
33243                 <description><p>
33244  with error type SecurityError, if the application does not have the privilege to call this method.
33245                 </p></description>
33246                 <description><p>
33247  with error type NotSupportedError, if the feature is not supported.
33248                 </p></description>
33249                 <description><p>
33250  with error type UnknownError in any other error case.     
33251                 </p></description>
33252             </descriptive>
33253           </RaiseException>
33254         </Raises>
33255       </Operation>
33256       <Operation name="createFile" id="::Filesystem::File::createFile">
33257         <webidl>    <ref>File</ref> createFile(DOMString relativeFilePath) raises(<ref>WebAPIException</ref>);</webidl>
33258         <descriptive>
33259             <brief>
33260  Creates a new empty file in a specified location.
33261             </brief>
33262            <description>
33263             <p>
33264 A new empty file is created in the given path relative
33265 to the directory indicated by current 'File' object's 'path' attribute.
33266 The use of &quot;.&quot; or &quot;..&quot; in path components is not supported.
33267 This operation can only be performed on file handlers that
33268 represent a directory (that is, <var>isDirectory == true</var>).
33269             </p>
33270             <p>
33271 If the file is successfully created, a file handler MUST
33272 be returned by this method.
33273             </p>
33274             <p>
33275 In case the file cannot be created, an error MUST be thrown
33276 with the appropriate error type.
33277             </p>
33278            </description>
33279             <version>
33280  1.0
33281             </version>
33282             <privilegelevel>
33283  public
33284             </privilegelevel>
33285             <privilege>
33286  http://tizen.org/privilege/filesystem.write
33287             </privilege>
33288             <Code> var newFile = dir.createFile(&quot;newFilePath&quot;);
33289  </Code>
33290         </descriptive>
33291         <Type name="File">
33292           <descriptive>
33293               <description><p>
33294  File The file handle of the new empty file. The new File object
33295 will have &quot;rw&quot; access rights, as it inherits this from
33296 the File object on which the createFile() method is
33297 called.
33298               </p></description>
33299           </descriptive>
33300         </Type>
33301         <ArgumentList>
33302           <Argument name="relativeFilePath">
33303             <descriptive>
33304                 <description><p>
33305  The new file path, it should only contain characters supported by the underlying filesystem.
33306                 </p></description>
33307             </descriptive>
33308             <Type type="DOMString"/>
33309           </Argument>
33310         </ArgumentList>
33311         <Raises>
33312           <RaiseException name="WebAPIException">
33313             <descriptive>
33314                 <description><p>
33315  with error type IOError, if the filePath already exists.
33316                 </p></description>
33317                 <description><p>
33318  with error type InvalidValuesError, if the filePath contains an invalid value.
33319                 </p></description>
33320                 <description><p>
33321  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
33322                 </p></description>
33323                 <description><p>
33324  with error type SecurityError, if the application does not have the privilege to call this method.
33325                 </p></description>
33326                 <description><p>
33327  with error type NotSupportedError, if the feature is not supported.
33328                 </p></description>
33329                 <description><p>
33330  with error type UnknownError, in any other error case.     
33331                 </p></description>
33332             </descriptive>
33333           </RaiseException>
33334         </Raises>
33335       </Operation>
33336       <Operation name="resolve" id="::Filesystem::File::resolve">
33337         <webidl>    <ref>File</ref> resolve(DOMString filePath) raises(<ref>WebAPIException</ref>);</webidl>
33338         <descriptive>
33339             <brief>
33340  Resolves an existing file or directory relative to
33341 the current directory this operation is performed on, and
33342 returns a file handle for it.
33343             </brief>
33344            <description>
33345             <p>
33346 The filePath is not allowed to contain the &quot;.&quot; or &quot;..&quot; directories.
33347             </p>
33348             <p>
33349 The encoding of file paths is <a href="http://www.ietf.org/rfc/rfc2279.txt">UTF-8</a>.
33350             </p>
33351            </description>
33352             <version>
33353  1.0
33354             </version>
33355             <privilegelevel>
33356  public
33357             </privilegelevel>
33358             <privilege>
33359  http://tizen.org/privilege/filesystem.read
33360             </privilege>
33361             <Code> var file;
33362  // Resolves helloWorld.doc file that is located in the
33363  // documents root location
33364  tizen.filesystem.resolve(
33365    'documents', 
33366    function(dir){ file = dir.resolve(&quot;helloWorld.doc&quot;);},
33367    function(e){ console.log(&quot;Error&quot; + e.message);},
33368    &quot;rw&quot;);
33369  </Code>
33370         </descriptive>
33371         <Type name="File">
33372           <descriptive>
33373               <description><p>
33374  File The file handle of the file. The new File object will inherit its access
33375 rights from the File object on which this resolve() method
33376 is called.
33377               </p></description>
33378           </descriptive>
33379         </Type>
33380         <ArgumentList>
33381           <Argument name="filePath">
33382             <descriptive>
33383                 <description><p>
33384  The relative file/directory path/file URI to resolve.
33385                 </p></description>
33386             </descriptive>
33387             <Type type="DOMString"/>
33388           </Argument>
33389         </ArgumentList>
33390         <Raises>
33391           <RaiseException name="WebAPIException">
33392             <descriptive>
33393                 <description><p>
33394  with error type TypeMismatchError, if the input parameter
33395 is not compatible with the expected type for that parameter.
33396                 </p></description>
33397                 <description><p>
33398  with error type InvalidValuesError, if the file path contains an
33399 invalid value.
33400                 </p></description>
33401                 <description><p>
33402  with error type IOError, if the method is executed in a File object
33403 that does not represent a directory (that is, isDirectory attribute is false).
33404                 </p></description>
33405                 <description><p>
33406  with error type NotFoundError, if a file does not exist for the passed
33407 file path.
33408                 </p></description>
33409                 <description><p>
33410  with error type SecurityError, if the application does not have the privilege to call this method.
33411                 </p></description>
33412                 <description><p>
33413  with error type NotSupportedError, if the feature is not supported.
33414                 </p></description>
33415                 <description><p>
33416  with error type UnknownError in any other error case.     
33417                 </p></description>
33418             </descriptive>
33419           </RaiseException>
33420         </Raises>
33421       </Operation>
33422       <Operation name="deleteDirectory" id="::Filesystem::File::deleteDirectory">
33423         <webidl>    void deleteDirectory(DOMString directoryPath,
33424                          boolean recursive,
33425                          optional <ref>SuccessCallback</ref>? onsuccess,
33426                          optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);</webidl>
33427         <descriptive>
33428             <brief>
33429  Deletes a specified directory and directory tree if specified.
33430             </brief>
33431            <description>
33432             <p>
33433 This function attempts to asynchronously delete a directory or directory tree under the current
33434 directory.
33435             </p>
33436             <p>
33437 If the recursive parameter is set to <em>true</em>, all the directories and files under the specified
33438 directory MUST be deleted. If the recursive parameter is set to false, the directory will
33439 only be deleted if it is empty, otherwise an IOError error type will be passed in onerror.
33440             </p>
33441             <p>
33442 The directory to be deleted MUST be under the Directory that the method
33443 is invoked from, otherwise the operation MUST NOT be performed.
33444 If the deletion is performed successfully, the onsuccess is invoked.
33445             </p>
33446             <p>
33447 The ErrorCallback is launched with these error types:
33448             </p>
33449             <ul>
33450               <li>
33451 InvalidValuesError: If any of the input parameters contain an invalid value.               </li>
33452               <li>
33453 NotFoundError: The passed directory does not correspond to a valid directory.               </li>
33454               <li>
33455 IOError: The File in which the delete method is invoked
33456 is a file (not a directory), the directory is in use by another process
33457 or the directory is not empty and recursive argument is <em>false</em>.
33458 This code will be also used if a recursive deletion partially fails
33459 and any data deleted so far cannot be recovered. This may occur
33460 due to the lack of filesystem permissions or if any
33461 directories or files are opened by other processes.              </li>
33462               <li>
33463 UnknownError: In any other error case.              </li>
33464             </ul>
33465            </description>
33466             <version>
33467  1.0
33468             </version>
33469             <privilegelevel>
33470  public
33471             </privilegelevel>
33472             <privilege>
33473  http://tizen.org/privilege/filesystem.write
33474             </privilege>
33475             <Code> var documentsDir;
33476  function onsuccess(files) {
33477    for(var i = 0; i &#60; files.length; i++) {
33478      if (files[i].isDirectory) {
33479        documentsDir.deleteDirectory(
33480            files[i].fullPath,
33481            false,
33482            function(){
33483              console.log(&quot;Directory Deleted&quot;);
33484            }, function(e) {
33485              console.log(&quot;Error&quot; + e.message);
33486            });
33487      } else {
33488        documentsDir.deleteFile(
33489            files[i].fullPath,
33490            function(){
33491              console.log(&quot;File Deleted&quot;);
33492            }, function(e) {
33493              console.log(&quot;Error&quot; + e.message);
33494            });
33495      }
33496    }
33497  }
33498
33499  function onerror(error) {
33500    console.log(&quot;The error &quot; + error.message + &quot; occurred when listing the files in the selected folder&quot;);
33501  }
33502
33503  tizen.filesystem.resolve(
33504      'documents', 
33505      function(dir){
33506        documentsDir = dir;
33507        dir.listFiles(onsuccess,onerror);
33508      }, function(e) {
33509        console.log(&quot;Error&quot; + e.message);
33510      }, &quot;rw&quot;
33511  );
33512  </Code>
33513         </descriptive>
33514         <Type type="void"/>
33515         <ArgumentList>
33516           <Argument name="directoryPath">
33517             <descriptive>
33518                 <description><p>
33519  The full virtual path to the directory to be deleted (must be under the current one).
33520                 </p></description>
33521             </descriptive>
33522             <Type type="DOMString"/>
33523           </Argument>
33524           <Argument name="recursive">
33525             <descriptive>
33526                 <description><p>
33527  <em>true</em> means a recursive deletion. This
33528 will delete all data in all subdirectories. Use with caution.
33529                 </p></description>
33530             </descriptive>
33531             <Type type="boolean"/>
33532           </Argument>
33533           <Argument optional="optional" name="onsuccess">
33534             <descriptive>
33535                 <description><p>
33536  Called if the directory is successfully deleted.
33537                 </p></description>
33538             </descriptive>
33539             <Type name="SuccessCallback" nullable="nullable"/>
33540           </Argument>
33541           <Argument optional="optional" name="onerror">
33542             <descriptive>
33543                 <description><p>
33544  Called if an error occurred.
33545                 </p></description>
33546             </descriptive>
33547             <Type name="ErrorCallback" nullable="nullable"/>
33548           </Argument>
33549         </ArgumentList>
33550         <Raises>
33551           <RaiseException name="WebAPIException">
33552             <descriptive>
33553                 <description><p>
33554  with error type TypeMismatchError, if the input parameter
33555 is not compatible with the expected type for that parameter.
33556                 </p></description>
33557                 <description><p>
33558  with error type SecurityError, if the application does not have the privilege to call this method.
33559                 </p></description>
33560                 <description><p>
33561  with error type NotSupportedError, if the feature is not supported.
33562                 </p></description>
33563             </descriptive>
33564           </RaiseException>
33565         </Raises>
33566       </Operation>
33567       <Operation name="deleteFile" id="::Filesystem::File::deleteFile">
33568         <webidl>    void deleteFile(DOMString filePath,
33569                     optional <ref>SuccessCallback</ref>? onsuccess,
33570                     optional <ref>ErrorCallback</ref>? onerror) raises(<ref>WebAPIException</ref>);</webidl>
33571         <descriptive>
33572             <brief>
33573  Deletes a specified file.
33574             </brief>
33575            <description>
33576             <p>
33577 This function attempts to asynchronously delete a file under the current directory.
33578             </p>
33579             <p>
33580 The file to be deleted MUST be under the Directory from which the method
33581 is invoked, otherwise the operation MUST NOT be performed.
33582             </p>
33583             <p>
33584 If the deletion is performed successfully, the onsuccess is invoked.
33585             </p>
33586             <p>
33587 The ErrorCallback is launched with these error types:
33588             </p>
33589             <ul>
33590               <li>
33591 InvalidValuesError: If any of the input parameters contain an invalid value.               </li>
33592               <li>
33593 NotFoundError: The file does not correspond to a valid file.               </li>
33594               <li>
33595 IOError: The file in which the delete method is invoked
33596 is a directory (not a file), the file is in use by another process,
33597 or there is no permission in the file system.              </li>
33598               <li>
33599 UnknownError: In any other error case.              </li>
33600             </ul>
33601            </description>
33602             <version>
33603  1.0
33604             </version>
33605             <privilegelevel>
33606  public
33607             </privilegelevel>
33608             <privilege>
33609  http://tizen.org/privilege/filesystem.write
33610             </privilege>
33611             <Code> function onsuccess(files) {
33612    for(var i = 0; i &#60; files.length; i++) {
33613      if (files[i].isDirectory) {
33614        documentsDir.deleteDirectory(
33615            files[i].fullPath,
33616            false,
33617            function(){
33618              console.log(&quot;Directory Deleted&quot;);
33619            }, function(e) {
33620              console.log(&quot;Error&quot; + e.message);
33621            });
33622      } else {
33623        documentsDir.deleteFile(
33624            files[i].fullPath,
33625            function(){
33626              console.log(&quot;File Deleted&quot;);
33627            }, function(e) {
33628              console.log(&quot;Error&quot; + e.message);
33629            });
33630      }
33631    }
33632  }
33633
33634  function onerror(error) {
33635    console.log(&quot;The error &quot; + error.message + &quot; occurred when listing the files in the selected folder&quot;);
33636  }
33637
33638  var documentsDir;
33639  tizen.filesystem.resolve(
33640    'documents', 
33641    function(dir){
33642      documentsDir = dir;
33643      dir.listFiles(onsuccess,onerror);
33644    }, function(e){
33645      console.log(&quot;Error&quot; + e.message);
33646    }, &quot;rw&quot;
33647  );
33648  </Code>
33649         </descriptive>
33650         <Type type="void"/>
33651         <ArgumentList>
33652           <Argument name="filePath">
33653             <descriptive>
33654                 <description><p>
33655  The full virtual path to the file to be deleted (must be under the current directory).
33656                 </p></description>
33657             </descriptive>
33658             <Type type="DOMString"/>
33659           </Argument>
33660           <Argument optional="optional" name="onsuccess">
33661             <descriptive>
33662                 <description><p>
33663  Called if the file is successfully deleted.
33664                 </p></description>
33665             </descriptive>
33666             <Type name="SuccessCallback" nullable="nullable"/>
33667           </Argument>
33668           <Argument optional="optional" name="onerror">
33669             <descriptive>
33670                 <description><p>
33671  Called if an error occurred.
33672                 </p></description>
33673             </descriptive>
33674             <Type name="ErrorCallback" nullable="nullable"/>
33675           </Argument>
33676         </ArgumentList>
33677         <Raises>
33678           <RaiseException name="WebAPIException">
33679             <descriptive>
33680                 <description><p>
33681  with error type TypeMismatchError, if the input parameter
33682 is not compatible with the expected type for that parameter.
33683                 </p></description>
33684                 <description><p>
33685  with error type SecurityError, if the application does not have the privilege to call this method.
33686                 </p></description>
33687                 <description><p>
33688  with error type NotSupportedError, if the feature is not supported.
33689                 </p></description>
33690             </descriptive>
33691           </RaiseException>
33692         </Raises>
33693       </Operation>
33694     </Interface>
33695     <Dictionary name="FileFilter" id="::Filesystem::FileFilter">
33696       <webidl>  dictionary FileFilter {
33697     DOMString name;
33698
33699     Date startModified;
33700
33701     Date endModified;
33702
33703     Date startCreated;
33704
33705     Date endCreated;
33706   };</webidl>
33707       <descriptive>
33708           <brief>
33709  Dictionary created to filter the items returned by the listFiles method.
33710           </brief>
33711          <description>
33712           <p>
33713 When this dictionary is passed in the listFiles method, the result-set of
33714 the listFiles method MUST only contain the file items entries that match
33715 the attribute values of the filter.
33716 The result set of the listFiles method does not guarantee any sort order.
33717           </p>
33718           <p>
33719 A file item only matches the FileFilter object if all the attributes of the file item match
33720 all the attribute values of the filter which are defined (that is, only matching values other
33721 than undefined or <em>null</em>). This is similar to an SQL &quot;AND&quot; operation.
33722           </p>
33723           <p>
33724 An attribute of the file entry matches the FileFilter attribute value in accordance with the
33725 following rules:
33726           </p>
33727           <ul>
33728             <li>
33729 For FileFilter attributes of type DOMString, an entry matches this value only if its
33730 corresponding attribute is an exact match. If the filter contains U+0025 'PERCENT SIGN' it is
33731 interpreted as a wildcard character and '%' matches any string of any length, including no
33732 length. If wildcards are used, the behavior is similar to the LIKE condition in SQL. To
33733 specify that a 'PERCENT SIGN' character is to be considered literally instead of interpreting it
33734 as a wildcard, developers may escape it with the backslash character (\).
33735 The matching is not case sensitive, such as &quot;FOO&quot; matches a &quot;foo&quot; or an &quot;f%&quot; filter.
33736             </li>
33737             <li>
33738 For File entry attributes of type Date, attributes start and end are included to allow
33739 filtering of File entries between two supplied dates. If either or both of these attributes are
33740 specified, the following rules apply:
33741 A) If both start and end dates are specified (that is, other than <em>null</em>), a File entry matches the
33742 filter if it's corresponding attribute is the same as either start or end or between the two
33743 supplied dates (that is, after start and before end).
33744 B) If only the start attribute contains a value (other than <em>null</em>), a File entry matches the
33745 filter if its corresponding attribute is later than or equal to the start one.
33746 C) If only the end date contains a value (other than <em>null</em>), a file matches the filter if its
33747 corresponding attribute is earlier than or equal to the end date.
33748             </li>
33749           </ul>
33750          </description>
33751           <version>
33752  1.0
33753           </version>
33754       </descriptive>
33755       <DictionaryMember name="name" id="::Filesystem::FileFilter::name">
33756         <webidl>    DOMString name;</webidl>
33757         <descriptive>
33758             <brief>
33759  Used for filtering the File name attribute.
33760             </brief>
33761            <description>
33762             <p>
33763 Files which name corresponds with this attribute
33764 (either exactly or with the specified wildcards) match
33765 this filtering criteria.
33766             </p>
33767            </description>
33768             <version>
33769  1.0
33770             </version>
33771         </descriptive>
33772         <Type type="DOMString"/>
33773       </DictionaryMember>
33774       <DictionaryMember name="startModified" id="::Filesystem::FileFilter::startModified">
33775         <webidl>    Date startModified;</webidl>
33776         <descriptive>
33777             <brief>
33778  Used for filtering the File modified attribute.
33779             </brief>
33780            <description>
33781             <p>
33782 Files with modified date later than this attribute or equal to it match
33783 the filtering criteria.
33784             </p>
33785            </description>
33786             <version>
33787  1.0
33788             </version>
33789         </descriptive>
33790         <Type type="Date"/>
33791       </DictionaryMember>
33792       <DictionaryMember name="endModified" id="::Filesystem::FileFilter::endModified">
33793         <webidl>    Date endModified;</webidl>
33794         <descriptive>
33795             <brief>
33796  Used for filtering the File created attribute.
33797             </brief>
33798            <description>
33799             <p>
33800 Files with modified date earlier than this attribute or equal to it
33801 match the filtering criteria.
33802             </p>
33803            </description>
33804             <version>
33805  1.0
33806             </version>
33807         </descriptive>
33808         <Type type="Date"/>
33809       </DictionaryMember>
33810       <DictionaryMember name="startCreated" id="::Filesystem::FileFilter::startCreated">
33811         <webidl>    Date startCreated;</webidl>
33812         <descriptive>
33813             <brief>
33814  Used for filtering the File created attribute.
33815             </brief>
33816            <description>
33817             <p>
33818 Files with created date later than this attribute or equal to it match
33819 the filtering criteria.
33820             </p>
33821            </description>
33822             <version>
33823  1.0
33824             </version>
33825         </descriptive>
33826         <Type type="Date"/>
33827       </DictionaryMember>
33828       <DictionaryMember name="endCreated" id="::Filesystem::FileFilter::endCreated">
33829         <webidl>    Date endCreated;</webidl>
33830         <descriptive>
33831             <brief>
33832  Used for filtering the File created attribute.
33833             </brief>
33834            <description>
33835             <p>
33836 Files with created date earlier than this attribute or equal to it
33837 match the filtering criteria.
33838             </p>
33839            </description>
33840             <version>
33841  1.0
33842             </version>
33843         </descriptive>
33844         <Type type="Date"/>
33845       </DictionaryMember>
33846     </Dictionary>
33847     <Interface name="FileStream" id="::Filesystem::FileStream">
33848       <webidl>  [NoInterfaceObject] interface FileStream {
33849     readonly attribute boolean eof;
33850
33851     attribute long position setraises(<ref>WebAPIException</ref>);
33852
33853     readonly attribute long bytesAvailable;
33854
33855     void close();
33856
33857     DOMString read(long charCount) raises(<ref>WebAPIException</ref>);
33858
33859     octet[] readBytes(long byteCount) raises(<ref>WebAPIException</ref>);
33860
33861     DOMString readBase64(long byteCount) raises(<ref>WebAPIException</ref>);
33862
33863     void write(DOMString stringData) raises(<ref>WebAPIException</ref>);
33864
33865     void writeBytes(octet[] byteData) raises(<ref>WebAPIException</ref>);
33866
33867     void writeBase64(DOMString base64Data) raises(<ref>WebAPIException</ref>);
33868   };</webidl>
33869       <descriptive>
33870           <brief>
33871  FileStream API.
33872           </brief>
33873          <description>
33874           <p>
33875 A FileStream represents a handle to a File opened for read and/or
33876 write operations. Read and write operations are performed relative
33877 to a position attribute, which is a pointer that represents the current position in the file.
33878           </p>
33879           <p>
33880 A series of read/write methods are available that permit both binary and
33881 text to be processed.
33882           </p>
33883           <p>
33884 Once a file stream is closed, any operation attempted on this stream
33885 will result in a standard JavaScript error.
33886           </p>
33887           <p>
33888 The read/write operations in this interface do not throw any security
33889 exceptions as the access rights are expected to be granted through the initial
33890 resolve() method or through the openStream() method of the File interface.
33891 Therefore, all actions performed on a successfully resolved File and FileStream are
33892 expected to succeed. This avoids successive asynchronous calls and may potentially increase
33893 application for a user.
33894           </p>
33895          </description>
33896           <version>
33897  1.0
33898           </version>
33899       </descriptive>
33900       <ExtendedAttributeList>
33901         <ExtendedAttribute name="NoInterfaceObject">
33902           <webidl>NoInterfaceObject</webidl>
33903         </ExtendedAttribute>
33904       </ExtendedAttributeList>
33905       <Attribute readonly="readonly" name="eof" id="::Filesystem::FileStream::eof">
33906         <webidl>    readonly attribute boolean eof;</webidl>
33907         <descriptive>
33908             <brief>
33909  Indicates whether or not the current file pointer is at the end
33910 of the file.
33911             </brief>
33912            <description>
33913             <p>
33914 If <em>true</em>, this attribute indicates that the file pointer is at the end of the file.
33915             </p>
33916             <p>
33917 If <em>false</em>, this attribute indicates that the file pointer is not at the end of the file
33918 and may be anywhere within the file.
33919             </p>
33920            </description>
33921             <version>
33922  1.0
33923             </version>
33924             <Code> if(stream.eof) {
33925    // file has been read completely
33926  }
33927  </Code>
33928         </descriptive>
33929         <Type type="boolean"/>
33930       </Attribute>
33931       <Attribute name="position" id="::Filesystem::FileStream::position">
33932         <webidl>    attribute long position setraises(<ref>WebAPIException</ref>);</webidl>
33933         <descriptive>
33934             <brief>
33935  Gets/sets stream position for reads/writes.
33936             </brief>
33937            <description>
33938             <p>
33939 The stream position is an offset of bytes from the start of
33940 the file stream. When invoking an operation that reads or
33941 writes from the stream, the operation will take place from the
33942 byte defined by this position attribute. If the read or write
33943 operation is successful, the position of the stream is advanced
33944 by the number of bytes read or written. If the read/write operation is not
33945 successful, the position of the stream is unchanged.
33946             </p>
33947            </description>
33948             <version>
33949  1.0
33950             </version>
33951             <Code> console.log(stream.position); // displays current stream position
33952  // alters current stream position to the begin of the file,
33953  // like seek() in C
33954  stream.position = 0;
33955  </Code>
33956         </descriptive>
33957         <Type type="long"/>
33958         <SetRaises>
33959           <RaiseException name="WebAPIException"/>
33960         </SetRaises>
33961       </Attribute>
33962       <Attribute readonly="readonly" name="bytesAvailable" id="::Filesystem::FileStream::bytesAvailable">
33963         <webidl>    readonly attribute long bytesAvailable;</webidl>
33964         <descriptive>
33965             <brief>
33966  Returns the number of bytes that are available for
33967 reading from the stream.
33968             </brief>
33969            <description>
33970             <p>
33971 The number of bytes available for reading is the maximum
33972 amount of bytes that can be read in the next read operation.
33973 It corresponds to the number of bytes available after the file pointer
33974 denoted by the position attribute.
33975             </p>
33976             <p>
33977 -1 if eof is <em>true</em>.
33978             </p>
33979            </description>
33980             <version>
33981  1.0
33982             </version>
33983             <Code> console.log(stream.bytesAvailable); // displays the available bytes to be read
33984  </Code>
33985         </descriptive>
33986         <Type type="long"/>
33987       </Attribute>
33988       <Operation name="close" id="::Filesystem::FileStream::close">
33989         <webidl>    void close();</webidl>
33990         <descriptive>
33991             <brief>
33992  Closes this FileStream.
33993             </brief>
33994            <description>
33995             <p>
33996 Flushes any pending buffered writes and closes the File. Always succeeds.
33997 Note that pending writes might not succeed.
33998             </p>
33999            </description>
34000             <version>
34001  1.0
34002             </version>
34003             <privilegelevel>
34004  public
34005             </privilegelevel>
34006             <privilege>
34007  http://tizen.org/privilege/filesystem.read
34008             </privilege>
34009             <Code> stream.close(); // closes this stream, no subsequent access to stream allowed
34010  </Code>
34011         </descriptive>
34012         <Type type="void"/>
34013         <ArgumentList/>
34014       </Operation>
34015       <Operation name="read" id="::Filesystem::FileStream::read">
34016         <webidl>    DOMString read(long charCount) raises(<ref>WebAPIException</ref>);</webidl>
34017         <descriptive>
34018             <brief>
34019  Reads the specified number of characters from this FileStream.
34020             </brief>
34021            <description>
34022             <p>
34023 Reads the specified number of characters after the position file pointer and returns them as a string.
34024 The resulting string length might be shorter than charCount if eof
34025 is <em>true</em>.
34026             </p>
34027            </description>
34028             <version>
34029  1.0
34030             </version>
34031             <privilegelevel>
34032  public
34033             </privilegelevel>
34034             <privilege>
34035  http://tizen.org/privilege/filesystem.read
34036             </privilege>
34037             <Code> var text = stream.read(file.fileSize);
34038  stream.close();
34039  </Code>
34040         </descriptive>
34041         <Type type="DOMString">
34042           <descriptive>
34043               <description><p>
34044  DOMString The result of read characters as a string.
34045               </p></description>
34046           </descriptive>
34047         </Type>
34048         <ArgumentList>
34049           <Argument name="charCount">
34050             <descriptive>
34051                 <description><p>
34052  Number of characters being read.
34053                 </p></description>
34054             </descriptive>
34055             <Type type="long"/>
34056           </Argument>
34057         </ArgumentList>
34058         <Raises>
34059           <RaiseException name="WebAPIException">
34060             <descriptive>
34061                 <description><p>
34062  with error type IOError, if a read error occurs, such as the bytes in the stream
34063 cannot be decoded with the encoding in use.
34064                 </p></description>
34065                 <description><p>
34066  with error type TypeMismatchError, if the input parameter
34067 is not compatible with the expected type for that parameter.
34068                 </p></description>
34069                 <description><p>
34070  with error type InvalidValuesError, if any of the input 
34071 parameters contain an invalid value.
34072                 </p></description>
34073                 <description><p>
34074  with error type SecurityError, if the application does not have the privilege to call this method.
34075                 </p></description>
34076                 <description><p>
34077  with error type NotSupportedError, if the feature is not supported.
34078                 </p></description>
34079             </descriptive>
34080           </RaiseException>
34081         </Raises>
34082       </Operation>
34083       <Operation name="readBytes" id="::Filesystem::FileStream::readBytes">
34084         <webidl>    octet[] readBytes(long byteCount) raises(<ref>WebAPIException</ref>);</webidl>
34085         <descriptive>
34086             <brief>
34087  Reads the specified number of bytes from this FileStream.
34088             </brief>
34089             <version>
34090  1.0
34091             </version>
34092             <privilegelevel>
34093  public
34094             </privilegelevel>
34095             <privilege>
34096  http://tizen.org/privilege/filesystem.read
34097             </privilege>
34098             <Code> // reads up to 256 bytes from the stream
34099  var raw = stream.readBytes(256);
34100  for(var i = 0; i &#60; raw.length; i++) {
34101    // raw[i] contains the i-th byte of the current data chunk
34102  }
34103  </Code>
34104         </descriptive>
34105         <Type type="array">
34106           <descriptive>
34107               <description><p>
34108  octet[] The result of read bytes as a byte (or number) array.
34109               </p></description>
34110           </descriptive>
34111           <Type type="octet"/>
34112         </Type>
34113         <ArgumentList>
34114           <Argument name="byteCount">
34115             <descriptive>
34116                 <description><p>
34117  Number of bytes being read.
34118                 </p></description>
34119             </descriptive>
34120             <Type type="long"/>
34121           </Argument>
34122         </ArgumentList>
34123         <Raises>
34124           <RaiseException name="WebAPIException">
34125             <descriptive>
34126                 <description><p>
34127  with error type IOError, if a read error occurs.
34128                 </p></description>
34129                 <description><p>
34130  with error type TypeMismatchError, if the input parameter
34131 is not compatible with the expected type for that parameter.
34132                 </p></description>
34133                 <description><p>
34134  with error type InvalidValuesError, if any of the input 
34135 parameters contain an invalid value.
34136                 </p></description>
34137                 <description><p>
34138  with error type SecurityError, if the application does not have the privilege to call this method.
34139                 </p></description>
34140                 <description><p>
34141  with error type NotSupportedError, if the feature is not supported.
34142                 </p></description>
34143             </descriptive>
34144           </RaiseException>
34145         </Raises>
34146       </Operation>
34147       <Operation name="readBase64" id="::Filesystem::FileStream::readBase64">
34148         <webidl>    DOMString readBase64(long byteCount) raises(<ref>WebAPIException</ref>);</webidl>
34149         <descriptive>
34150             <brief>
34151  Reads the specified number of bytes from this FileStream, encoding
34152 the result in base64.
34153             </brief>
34154             <version>
34155  1.0
34156             </version>
34157             <privilegelevel>
34158  public
34159             </privilegelevel>
34160             <privilege>
34161  http://tizen.org/privilege/filesystem.read
34162             </privilege>
34163             <Code> // reads up to 256 bytes from the stream
34164  var base64 = stream.readBase64(256);
34165  </Code>
34166         </descriptive>
34167         <Type type="DOMString">
34168           <descriptive>
34169               <description><p>
34170  DOMString The result of read bytes as base64 encoding string.
34171               </p></description>
34172           </descriptive>
34173         </Type>
34174         <ArgumentList>
34175           <Argument name="byteCount">
34176             <descriptive>
34177                 <description><p>
34178  Number of bytes being read.
34179                 </p></description>
34180             </descriptive>
34181             <Type type="long"/>
34182           </Argument>
34183         </ArgumentList>
34184         <Raises>
34185           <RaiseException name="WebAPIException">
34186             <descriptive>
34187                 <description><p>
34188  with error type IOError, if a read error occurs.
34189                 </p></description>
34190                 <description><p>
34191  with error type TypeMismatchError, if the input parameter
34192 is not compatible with the expected type for that parameter.
34193                 </p></description>
34194                 <description><p>
34195  with error type InvalidValuesError, if any of the input 
34196 parameters contain an invalid value.
34197                 </p></description>
34198                 <description><p>
34199  with error type SecurityError, if the application does not have the privilege to call this method.
34200                 </p></description>
34201                 <description><p>
34202  with error type NotSupportedError, if the feature is not supported.
34203                 </p></description>
34204             </descriptive>
34205           </RaiseException>
34206         </Raises>
34207       </Operation>
34208       <Operation name="write" id="::Filesystem::FileStream::write">
34209         <webidl>    void write(DOMString stringData) raises(<ref>WebAPIException</ref>);</webidl>
34210         <descriptive>
34211             <brief>
34212  Writes the specified DOMString to this FileStream.
34213             </brief>
34214             <version>
34215  1.0
34216             </version>
34217             <privilegelevel>
34218  public
34219             </privilegelevel>
34220             <privilege>
34221  http://tizen.org/privilege/filesystem.write
34222             </privilege>
34223             <Code> var text = &quot;Hello world&quot;;
34224  stream.write(text);
34225  </Code>
34226         </descriptive>
34227         <Type type="void"/>
34228         <ArgumentList>
34229           <Argument name="stringData">
34230             <descriptive>
34231                 <description><p>
34232  The actual string to be written.
34233                 </p></description>
34234             </descriptive>
34235             <Type type="DOMString"/>
34236           </Argument>
34237         </ArgumentList>
34238         <Raises>
34239           <RaiseException name="WebAPIException">
34240             <descriptive>
34241                 <description><p>
34242  with error type IOError, if a write error occurs.
34243                 </p></description>
34244                 <description><p>
34245  with error type TypeMismatchError, if the input parameter
34246 is not compatible with the expected type for that parameter.
34247                 </p></description>
34248                 <description><p>
34249  with error type SecurityError, if the application does not have the privilege to call this method.
34250                 </p></description>
34251                 <description><p>
34252  with error type NotSupportedError, if the feature is not supported.
34253                 </p></description>
34254             </descriptive>
34255           </RaiseException>
34256         </Raises>
34257       </Operation>
34258       <Operation name="writeBytes" id="::Filesystem::FileStream::writeBytes">
34259         <webidl>    void writeBytes(octet[] byteData) raises(<ref>WebAPIException</ref>);</webidl>
34260         <descriptive>
34261             <brief>
34262  Writes the specified bytes to this FileStream.
34263             </brief>
34264             <version>
34265  1.0
34266             </version>
34267             <privilegelevel>
34268  public
34269             </privilegelevel>
34270             <privilege>
34271  http://tizen.org/privilege/filesystem.write
34272             </privilege>
34273             <Code> var bytes = in.readBytes(256);
34274  out.writeBytes(bytes); // writes the bytes read from in to out
34275  </Code>
34276         </descriptive>
34277         <Type type="void"/>
34278         <ArgumentList>
34279           <Argument name="byteData">
34280             <descriptive>
34281                 <description><p>
34282  The byte data array being written.
34283                 </p></description>
34284             </descriptive>
34285             <Type type="array">
34286               <Type type="octet"/>
34287             </Type>
34288           </Argument>
34289         </ArgumentList>
34290         <Raises>
34291           <RaiseException name="WebAPIException">
34292             <descriptive>
34293                 <description><p>
34294  with error type IOError, if a write error occurs.
34295                 </p></description>
34296                 <description><p>
34297  with error type TypeMismatchError, if the input parameter
34298 is not compatible with the expected type for that parameter.
34299                 </p></description>
34300                 <description><p>
34301  with error type SecurityError, if the application does not have the privilege to call this method.
34302                 </p></description>
34303                 <description><p>
34304  with error type NotSupportedError, if the feature is not supported.
34305                 </p></description>
34306             </descriptive>
34307           </RaiseException>
34308         </Raises>
34309       </Operation>
34310       <Operation name="writeBase64" id="::Filesystem::FileStream::writeBase64">
34311         <webidl>    void writeBase64(DOMString base64Data) raises(<ref>WebAPIException</ref>);</webidl>
34312         <descriptive>
34313             <brief>
34314  Converts the specified base64 DOMString to bytes and writes the
34315 result to this FileStream.
34316             </brief>
34317             <version>
34318  1.0
34319             </version>
34320             <privilegelevel>
34321  public
34322             </privilegelevel>
34323             <privilege>
34324  http://tizen.org/privilege/filesystem.write
34325             </privilege>
34326             <Code> var base64 = in.readBase64(256);
34327  out.writeBase64(base64); // writes the base64 data read from in to out
34328  </Code>
34329         </descriptive>
34330         <Type type="void"/>
34331         <ArgumentList>
34332           <Argument name="base64Data">
34333             <descriptive>
34334                 <description><p>
34335  The base64 data being written.
34336                 </p></description>
34337             </descriptive>
34338             <Type type="DOMString"/>
34339           </Argument>
34340         </ArgumentList>
34341         <Raises>
34342           <RaiseException name="WebAPIException">
34343             <descriptive>
34344                 <description><p>
34345  with error type IOError, if an error occurs during writeBase64.
34346                 </p></description>
34347                 <description><p>
34348  with error type TypeMismatchError, if the input parameter
34349 is not compatible with the expected type for that parameter.
34350                 </p></description>
34351                 <description><p>
34352  with error type SecurityError, if the application does not have the privilege to call this method.
34353                 </p></description>
34354                 <description><p>
34355  with error type NotSupportedError, if the feature is not supported.
34356                 </p></description>
34357             </descriptive>
34358           </RaiseException>
34359         </Raises>
34360       </Operation>
34361     </Interface>
34362     <Interface name="FileSuccessCallback" id="::Filesystem::FileSuccessCallback">
34363       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface FileSuccessCallback {
34364     void onsuccess(<ref>File</ref> file);
34365   };</webidl>
34366       <descriptive>
34367           <brief>
34368  The file system specific success callback.
34369           </brief>
34370          <description>
34371           <p>
34372 This callback interface specifies a success callback with 
34373 a File object as input argument. It is used in asynchronous
34374 operations, such as FileSystemManager.resolve() and
34375 copying, moving, and deleting files.
34376           </p>
34377          </description>
34378           <version>
34379  1.0
34380           </version>
34381       </descriptive>
34382       <ExtendedAttributeList>
34383         <ExtendedAttribute name="Callback" value="FunctionOnly">
34384           <webidl>Callback</webidl>
34385         </ExtendedAttribute>
34386         <ExtendedAttribute name="NoInterfaceObject">
34387           <webidl> NoInterfaceObject</webidl>
34388         </ExtendedAttribute>
34389       </ExtendedAttributeList>
34390       <Operation name="onsuccess" id="::Filesystem::FileSuccessCallback::onsuccess">
34391         <webidl>    void onsuccess(<ref>File</ref> file);</webidl>
34392         <descriptive>
34393             <brief>
34394  The method invoked when the asynchronous call completes successfully.
34395             </brief>
34396             <version>
34397  1.0
34398             </version>
34399         </descriptive>
34400         <Type type="void"/>
34401         <ArgumentList>
34402           <Argument name="file">
34403             <descriptive>
34404                 <description><p>
34405  The file resulting from the asynchronous call.
34406                 </p></description>
34407             </descriptive>
34408             <Type name="File"/>
34409           </Argument>
34410         </ArgumentList>
34411       </Operation>
34412     </Interface>
34413     <Interface name="FileSystemStorageArraySuccessCallback" id="::Filesystem::FileSystemStorageArraySuccessCallback">
34414       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface FileSystemStorageArraySuccessCallback {
34415     void onsuccess(<ref>FileSystemStorage</ref>[] storages);
34416   };</webidl>
34417       <descriptive>
34418           <brief>
34419  The success callback to retrieve FileSystemStorage objects.
34420           </brief>
34421          <description>
34422           <p>
34423 This callback interface specifies a success callback with 
34424 an array of FileSystemStorage objects as input argument. It is used in asynchronous
34425 operations, such as FileSystemManager.listStorages().
34426           </p>
34427          </description>
34428           <version>
34429  1.0
34430           </version>
34431       </descriptive>
34432       <ExtendedAttributeList>
34433         <ExtendedAttribute name="Callback" value="FunctionOnly">
34434           <webidl>Callback</webidl>
34435         </ExtendedAttribute>
34436         <ExtendedAttribute name="NoInterfaceObject">
34437           <webidl> NoInterfaceObject</webidl>
34438         </ExtendedAttribute>
34439       </ExtendedAttributeList>
34440       <Operation name="onsuccess" id="::Filesystem::FileSystemStorageArraySuccessCallback::onsuccess">
34441         <webidl>    void onsuccess(<ref>FileSystemStorage</ref>[] storages);</webidl>
34442         <descriptive>
34443             <brief>
34444  The method invoked when the asynchronous call completes successfully.
34445             </brief>
34446             <version>
34447  1.0
34448             </version>
34449         </descriptive>
34450         <Type type="void"/>
34451         <ArgumentList>
34452           <Argument name="storages">
34453             <descriptive>
34454                 <description><p>
34455  List of available storage devices.
34456                 </p></description>
34457             </descriptive>
34458             <Type type="array">
34459               <Type name="FileSystemStorage"/>
34460             </Type>
34461           </Argument>
34462         </ArgumentList>
34463       </Operation>
34464     </Interface>
34465     <Interface name="FileSystemStorageSuccessCallback" id="::Filesystem::FileSystemStorageSuccessCallback">
34466       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface FileSystemStorageSuccessCallback {
34467     void onsuccess(<ref>FileSystemStorage</ref> storage);
34468   };</webidl>
34469       <descriptive>
34470           <brief>
34471  The success callback to retrieve a FileSystemStorage object.
34472           </brief>
34473          <description>
34474           <p>
34475 This callback interface specifies a success callback with 
34476 a FileSystmeStorage object as input argument. It is used in asynchronous
34477 operations, such as FileSystemManager.getStorage() and
34478 FileSystemManager.addStorageStateChangeListener().
34479           </p>
34480          </description>
34481           <version>
34482  1.0
34483           </version>
34484       </descriptive>
34485       <ExtendedAttributeList>
34486         <ExtendedAttribute name="Callback" value="FunctionOnly">
34487           <webidl>Callback</webidl>
34488         </ExtendedAttribute>
34489         <ExtendedAttribute name="NoInterfaceObject">
34490           <webidl> NoInterfaceObject</webidl>
34491         </ExtendedAttribute>
34492       </ExtendedAttributeList>
34493       <Operation name="onsuccess" id="::Filesystem::FileSystemStorageSuccessCallback::onsuccess">
34494         <webidl>    void onsuccess(<ref>FileSystemStorage</ref> storage);</webidl>
34495         <descriptive>
34496             <brief>
34497  The method invoked when the asynchronous call completes successfully.
34498             </brief>
34499             <version>
34500  1.0
34501             </version>
34502         </descriptive>
34503         <Type type="void"/>
34504         <ArgumentList>
34505           <Argument name="storage">
34506             <descriptive>
34507                 <description><p>
34508  The storage device structure.
34509                 </p></description>
34510             </descriptive>
34511             <Type name="FileSystemStorage"/>
34512           </Argument>
34513         </ArgumentList>
34514       </Operation>
34515     </Interface>
34516     <Interface name="FileStringSuccessCallback" id="::Filesystem::FileStringSuccessCallback">
34517       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface FileStringSuccessCallback {
34518     void onsuccess(DOMString fileStr);
34519   };</webidl>
34520       <descriptive>
34521           <brief>
34522  The success callback to read the content of a file as a DOMString.
34523           </brief>
34524          <description>
34525           <p>
34526 This callback interface specifies a success callback with 
34527 a DOMString object as input argument. It is used in asynchronous
34528 operations, such as File.readAsText().
34529           </p>
34530          </description>
34531           <version>
34532  1.0
34533           </version>
34534       </descriptive>
34535       <ExtendedAttributeList>
34536         <ExtendedAttribute name="Callback" value="FunctionOnly">
34537           <webidl>Callback</webidl>
34538         </ExtendedAttribute>
34539         <ExtendedAttribute name="NoInterfaceObject">
34540           <webidl> NoInterfaceObject</webidl>
34541         </ExtendedAttribute>
34542       </ExtendedAttributeList>
34543       <Operation name="onsuccess" id="::Filesystem::FileStringSuccessCallback::onsuccess">
34544         <webidl>    void onsuccess(DOMString fileStr);</webidl>
34545         <descriptive>
34546             <brief>
34547  The method invoked when the asynchronous call completes successfully.
34548             </brief>
34549             <version>
34550  1.0
34551             </version>
34552         </descriptive>
34553         <Type type="void"/>
34554         <ArgumentList>
34555           <Argument name="fileStr">
34556             <descriptive>
34557                 <description><p>
34558  The file represented as a DOMString resulting from the asynchronous call.
34559                 </p></description>
34560             </descriptive>
34561             <Type type="DOMString"/>
34562           </Argument>
34563         </ArgumentList>
34564       </Operation>
34565     </Interface>
34566     <Interface name="FileStreamSuccessCallback" id="::Filesystem::FileStreamSuccessCallback">
34567       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface FileStreamSuccessCallback {
34568     void onsuccess(<ref>FileStream</ref> filestream);
34569   };</webidl>
34570       <descriptive>
34571           <brief>
34572  The success callback to open a file for raw access.
34573           </brief>
34574          <description>
34575           <p>
34576 This callback interface specifies a success callback with 
34577 a FileStream object as input argument. It is used by asynchronous
34578 methods, such as File.openStream().
34579           </p>
34580          </description>
34581           <version>
34582  1.0
34583           </version>
34584       </descriptive>
34585       <ExtendedAttributeList>
34586         <ExtendedAttribute name="Callback" value="FunctionOnly">
34587           <webidl>Callback</webidl>
34588         </ExtendedAttribute>
34589         <ExtendedAttribute name="NoInterfaceObject">
34590           <webidl> NoInterfaceObject</webidl>
34591         </ExtendedAttribute>
34592       </ExtendedAttributeList>
34593       <Operation name="onsuccess" id="::Filesystem::FileStreamSuccessCallback::onsuccess">
34594         <webidl>    void onsuccess(<ref>FileStream</ref> filestream);</webidl>
34595         <descriptive>
34596             <brief>
34597  The method invoked when the File.openStream asynchronous call completes successfully.
34598             </brief>
34599             <version>
34600  1.0
34601             </version>
34602         </descriptive>
34603         <Type type="void"/>
34604         <ArgumentList>
34605           <Argument name="filestream">
34606             <descriptive>
34607                 <description><p>
34608  The filestream to access file content.
34609                 </p></description>
34610             </descriptive>
34611             <Type name="FileStream"/>
34612           </Argument>
34613         </ArgumentList>
34614       </Operation>
34615     </Interface>
34616     <Interface name="FileArraySuccessCallback" id="::Filesystem::FileArraySuccessCallback">
34617       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface FileArraySuccessCallback {
34618     void onsuccess(<ref>File</ref>[] files);
34619   };</webidl>
34620       <descriptive>
34621           <brief>
34622  The file system specific success callback for listing methods.
34623           </brief>
34624          <description>
34625           <p>
34626 This callback interface specifies a success callback with a function
34627 taking an array of File objects as input argument. It is used in asynchronous
34628 methods, such as File.listFiles().
34629           </p>
34630          </description>
34631           <version>
34632  1.0
34633           </version>
34634       </descriptive>
34635       <ExtendedAttributeList>
34636         <ExtendedAttribute name="Callback" value="FunctionOnly">
34637           <webidl>Callback</webidl>
34638         </ExtendedAttribute>
34639         <ExtendedAttribute name="NoInterfaceObject">
34640           <webidl> NoInterfaceObject</webidl>
34641         </ExtendedAttribute>
34642       </ExtendedAttributeList>
34643       <Operation name="onsuccess" id="::Filesystem::FileArraySuccessCallback::onsuccess">
34644         <webidl>    void onsuccess(<ref>File</ref>[] files);</webidl>
34645         <descriptive>
34646             <brief>
34647  The method invoked when the asynchronous call completes successfully.
34648             </brief>
34649             <version>
34650  1.0
34651             </version>
34652         </descriptive>
34653         <Type type="void"/>
34654         <ArgumentList>
34655           <Argument name="files">
34656             <descriptive>
34657                 <description><p>
34658  The files resulting from the asynchronous call.
34659                 </p></description>
34660             </descriptive>
34661             <Type type="array">
34662               <Type name="File"/>
34663             </Type>
34664           </Argument>
34665         </ArgumentList>
34666       </Operation>
34667     </Interface>
34668   </Module>
34669   <Module name="MessagePort" id="::MessagePort">
34670     <webidl>module MessagePort {
34671
34672   [NoInterfaceObject] interface MessagePortManagerObject {
34673     readonly attribute <ref>MessagePortManager</ref> messageport;
34674   };
34675   <ref>Tizen</ref> implements <ref>MessagePortManagerObject</ref>;
34676
34677   [NoInterfaceObject] interface MessagePortManager {
34678
34679     <ref>LocalMessagePort</ref> requestLocalMessagePort(DOMString localMessagePortName) raises(<ref>WebAPIException</ref>);
34680
34681     <ref>LocalMessagePort</ref> requestTrustedLocalMessagePort(DOMString localMessagePortName) raises(<ref>WebAPIException</ref>);
34682
34683     <ref>RemoteMessagePort</ref> requestRemoteMessagePort(<ref>ApplicationId</ref> appId, DOMString remoteMessagePortName) raises(<ref>WebAPIException</ref>);
34684
34685     <ref>RemoteMessagePort</ref> requestTrustedRemoteMessagePort(<ref>ApplicationId</ref> appId, DOMString remoteMessagePortName) raises(<ref>WebAPIException</ref>);
34686   };
34687
34688   [NoInterfaceObject] interface LocalMessagePort {
34689
34690     readonly attribute DOMString messagePortName;
34691
34692     readonly attribute boolean isTrusted;
34693
34694     long addMessagePortListener(<ref>MessagePortCallback</ref> listener) raises(<ref>WebAPIException</ref>);
34695
34696     void removeMessagePortListener(long watchId) raises(<ref>WebAPIException</ref>);
34697   };
34698
34699   [NoInterfaceObject] interface RemoteMessagePort {
34700
34701     readonly attribute DOMString messagePortName;
34702
34703     readonly attribute <ref>ApplicationId</ref> appId;
34704
34705     readonly attribute boolean isTrusted;
34706
34707     void sendMessage(<ref>MessagePortDataItem</ref>[] data, optional <ref>LocalMessagePort</ref>? localMessagePort) raises(<ref>WebAPIException</ref>);
34708   };
34709
34710   dictionary MessagePortDataItem {
34711     DOMString key;
34712     DOMString value;
34713   };
34714
34715   [Callback=FunctionOnly, NoInterfaceObject] interface MessagePortCallback {
34716     void onreceived(<ref>MessagePortDataItem</ref>[] data, <ref>RemoteMessagePort</ref>? remoteMessagePort);
34717   };
34718 };</webidl>
34719     <descriptive>
34720         <brief>
34721  This API provides the functionality for communicating with other applications.
34722         </brief>
34723         <version>
34724  2.1
34725         </version>
34726     </descriptive>
34727     <Interface name="MessagePortManagerObject" id="::MessagePort::MessagePortManagerObject">
34728       <webidl>  [NoInterfaceObject] interface MessagePortManagerObject {
34729     readonly attribute <ref>MessagePortManager</ref> messageport;
34730   };</webidl>
34731       <descriptive>
34732           <brief>
34733  The <em>MessagePortManagerObject</em> interface defines what is instantiated by the Tizen object from the Tizen Platform.
34734           </brief>
34735          <description>
34736           <p>
34737 There is a <em>tizen.messageport</em> object that allows access to the functionality of the Message Port API.
34738           </p>
34739          </description>
34740           <version>
34741  2.1
34742           </version>
34743       </descriptive>
34744       <ExtendedAttributeList>
34745         <ExtendedAttribute name="NoInterfaceObject">
34746           <webidl>NoInterfaceObject</webidl>
34747         </ExtendedAttribute>
34748       </ExtendedAttributeList>
34749       <Attribute readonly="readonly" name="messageport" id="::MessagePort::MessagePortManagerObject::messageport">
34750         <webidl>    readonly attribute <ref>MessagePortManager</ref> messageport;</webidl>
34751         <Type name="MessagePortManager"/>
34752       </Attribute>
34753     </Interface>
34754     <Implements name1="Tizen" name2="MessagePortManagerObject">
34755       <webidl>  <ref>Tizen</ref> implements <ref>MessagePortManagerObject</ref>;</webidl>
34756     </Implements>
34757     <Interface name="MessagePortManager" id="::MessagePort::MessagePortManager">
34758       <webidl>  [NoInterfaceObject] interface MessagePortManager {
34759
34760     <ref>LocalMessagePort</ref> requestLocalMessagePort(DOMString localMessagePortName) raises(<ref>WebAPIException</ref>);
34761
34762     <ref>LocalMessagePort</ref> requestTrustedLocalMessagePort(DOMString localMessagePortName) raises(<ref>WebAPIException</ref>);
34763
34764     <ref>RemoteMessagePort</ref> requestRemoteMessagePort(<ref>ApplicationId</ref> appId, DOMString remoteMessagePortName) raises(<ref>WebAPIException</ref>);
34765
34766     <ref>RemoteMessagePort</ref> requestTrustedRemoteMessagePort(<ref>ApplicationId</ref> appId, DOMString remoteMessagePortName) raises(<ref>WebAPIException</ref>);
34767   };</webidl>
34768       <descriptive>
34769           <brief>
34770  The <em>MessagePortManager</em> interface provides methods to request message port to communicate.
34771           </brief>
34772           <version>
34773  2.1
34774           </version>
34775       </descriptive>
34776       <ExtendedAttributeList>
34777         <ExtendedAttribute name="NoInterfaceObject">
34778           <webidl>NoInterfaceObject</webidl>
34779         </ExtendedAttribute>
34780       </ExtendedAttributeList>
34781       <Operation name="requestLocalMessagePort" id="::MessagePort::MessagePortManager::requestLocalMessagePort">
34782         <webidl>    <ref>LocalMessagePort</ref> requestLocalMessagePort(DOMString localMessagePortName) raises(<ref>WebAPIException</ref>);</webidl>
34783         <descriptive>
34784             <brief>
34785  Requests a LocalMessage Port instance to start receiving message from another application.
34786             </brief>
34787             <version>
34788  2.1
34789             </version>
34790             <Code> // Requests the LocalMessagePort instance with the specified message port name
34791  var localMsgPort = tizen.messageport.requestLocalMessagePort('MessagePortA');
34792  </Code>
34793         </descriptive>
34794         <Type name="LocalMessagePort">
34795           <descriptive>
34796               <description><p>
34797  LocalMessagePort The LocalMessagePort instance.
34798               </p></description>
34799           </descriptive>
34800         </Type>
34801         <ArgumentList>
34802           <Argument name="localMessagePortName">
34803             <descriptive>
34804                 <description><p>
34805  The name of the local message port to retrieve.<br/>The LocalMessagePort instances are identical for the same message port name.
34806                 </p></description>
34807             </descriptive>
34808             <Type type="DOMString"/>
34809           </Argument>
34810         </ArgumentList>
34811         <Raises>
34812           <RaiseException name="WebAPIException">
34813             <descriptive>
34814                 <description><p>
34815  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
34816                 </p></description>
34817                 <description><p>
34818  with error type InvalidValuesError, if the input parameter contains an invalid value.
34819                 </p></description>
34820                 <description><p>
34821  with error type UnknownError, if any other error occurs.
34822                 </p></description>
34823             </descriptive>
34824           </RaiseException>
34825         </Raises>
34826       </Operation>
34827       <Operation name="requestTrustedLocalMessagePort" id="::MessagePort::MessagePortManager::requestTrustedLocalMessagePort">
34828         <webidl>    <ref>LocalMessagePort</ref> requestTrustedLocalMessagePort(DOMString localMessagePortName) raises(<ref>WebAPIException</ref>);</webidl>
34829         <descriptive>
34830             <brief>
34831  Requests a trusted LocalMessagePort instance to receive message from another application.
34832             </brief>
34833            <description>
34834             <p>
34835 Trusted local message port can communicate with applications that are signed with same certificate.
34836             </p>
34837            </description>
34838             <version>
34839  2.1
34840             </version>
34841             <Code> // Requests the LocalMessagePort instance with the specified message port name
34842  var localMsgPort = tizen.messageport.requestTrustedLocalMessagePort('MessagePortB');
34843  </Code>
34844         </descriptive>
34845         <Type name="LocalMessagePort">
34846           <descriptive>
34847               <description><p>
34848  LocalMessagePort The trusted LocalMessagePort instance.
34849               </p></description>
34850           </descriptive>
34851         </Type>
34852         <ArgumentList>
34853           <Argument name="localMessagePortName">
34854             <descriptive>
34855                 <description><p>
34856  The name of local message port.<br/>The LocalMessagePort instances are identical for the same message port name.
34857                 </p></description>
34858             </descriptive>
34859             <Type type="DOMString"/>
34860           </Argument>
34861         </ArgumentList>
34862         <Raises>
34863           <RaiseException name="WebAPIException">
34864             <descriptive>
34865                 <description><p>
34866  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
34867                 </p></description>
34868                 <description><p>
34869  with error type InvalidValuesError, if the input parameter contains an invalid value.
34870                 </p></description>
34871                 <description><p>
34872  with error type UnknownError, if any other error occurs.
34873                 </p></description>
34874             </descriptive>
34875           </RaiseException>
34876         </Raises>
34877       </Operation>
34878       <Operation name="requestRemoteMessagePort" id="::MessagePort::MessagePortManager::requestRemoteMessagePort">
34879         <webidl>    <ref>RemoteMessagePort</ref> requestRemoteMessagePort(<ref>ApplicationId</ref> appId, DOMString remoteMessagePortName) raises(<ref>WebAPIException</ref>);</webidl>
34880         <descriptive>
34881             <brief>
34882  Requests a RemoteMessagePort instance to send message to another application.
34883             </brief>
34884            <description>
34885             <p>
34886 If the message port name and application ID is the same, the platform returns the same RemoteMessagePort instance.
34887             </p>
34888            </description>
34889             <version>
34890  2.1
34891             </version>
34892             <Code> // Requests the RemoteMessagePort instance with the specified message port name
34893  var remoteMsgPort = tizen.messageport.requestRemoteMessagePort('6xaeuflskd.App1', 'MessagePortA');
34894  </Code>
34895         </descriptive>
34896         <Type name="RemoteMessagePort">
34897           <descriptive>
34898               <description><p>
34899  RemoteMessagePort The RemoteMessagePort instance.
34900               </p></description>
34901           </descriptive>
34902         </Type>
34903         <ArgumentList>
34904           <Argument name="appId">
34905             <descriptive>
34906                 <description><p>
34907  The ID of the application to send messages.
34908                 </p></description>
34909             </descriptive>
34910             <Type name="ApplicationId"/>
34911           </Argument>
34912           <Argument name="remoteMessagePortName">
34913             <descriptive>
34914                 <description><p>
34915  The name of remote message port.
34916                 </p></description>
34917             </descriptive>
34918             <Type type="DOMString"/>
34919           </Argument>
34920         </ArgumentList>
34921         <Raises>
34922           <RaiseException name="WebAPIException">
34923             <descriptive>
34924                 <description><p>
34925  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
34926                 </p></description>
34927                 <description><p>
34928  with error type InvalidValuesError, if an input parameter contains an invalid value.
34929                 </p></description>
34930                 <description><p>
34931  with error type NotFoundError, if the port of the target application is not found.
34932                 </p></description>
34933                 <description><p>
34934  with error type UnknownError, if any other error occurs.
34935                 </p></description>
34936             </descriptive>
34937           </RaiseException>
34938         </Raises>
34939       </Operation>
34940       <Operation name="requestTrustedRemoteMessagePort" id="::MessagePort::MessagePortManager::requestTrustedRemoteMessagePort">
34941         <webidl>    <ref>RemoteMessagePort</ref> requestTrustedRemoteMessagePort(<ref>ApplicationId</ref> appId, DOMString remoteMessagePortName) raises(<ref>WebAPIException</ref>);</webidl>
34942         <descriptive>
34943             <brief>
34944  Requests a trusted RemoteMessagePort instance to receive message from another application.
34945             </brief>
34946            <description>
34947             <p>
34948 If the message port name and application ID is the same, the platform returns the same RemoteMessagePort instance.
34949 Trusted remote message port can communicate with applications that are signed with same certificate.
34950             </p>
34951            </description>
34952             <version>
34953  2.1
34954             </version>
34955             <Code> // Requests the RemoteMessagePort instance with the specified message port name.
34956  var remoteMsgPort = tizen.messageport.requestTrustedRemoteMessagePort('6xauflskd.App1', 'MessagePortB');
34957  </Code>
34958         </descriptive>
34959         <Type name="RemoteMessagePort">
34960           <descriptive>
34961               <description><p>
34962  RemoteMessagePort The trusted RemoteMessagePort instance.
34963               </p></description>
34964           </descriptive>
34965         </Type>
34966         <ArgumentList>
34967           <Argument name="appId">
34968             <descriptive>
34969                 <description><p>
34970  The ID of the application to send messages.
34971                 </p></description>
34972             </descriptive>
34973             <Type name="ApplicationId"/>
34974           </Argument>
34975           <Argument name="remoteMessagePortName">
34976             <descriptive>
34977                 <description><p>
34978  The name of remote message port.
34979                 </p></description>
34980             </descriptive>
34981             <Type type="DOMString"/>
34982           </Argument>
34983         </ArgumentList>
34984         <Raises>
34985           <RaiseException name="WebAPIException">
34986             <descriptive>
34987                 <description><p>
34988  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
34989                 </p></description>
34990                 <description><p>
34991  with error type InvalidValuesError, if an input parameter contains an invalid value.
34992                 </p></description>
34993                 <description><p>
34994  with error type NotFoundError, if the port of the target application is not found.
34995                 </p></description>
34996                 <description><p>
34997  with error type InvalidAccessError, if the target application is not signed with the same certification.
34998                 </p></description>
34999                 <description><p>
35000  with error type UnknownError, if any other error occurs
35001                 </p></description>
35002             </descriptive>
35003           </RaiseException>
35004         </Raises>
35005       </Operation>
35006     </Interface>
35007     <Interface name="LocalMessagePort" id="::MessagePort::LocalMessagePort">
35008       <webidl>  [NoInterfaceObject] interface LocalMessagePort {
35009
35010     readonly attribute DOMString messagePortName;
35011
35012     readonly attribute boolean isTrusted;
35013
35014     long addMessagePortListener(<ref>MessagePortCallback</ref> listener) raises(<ref>WebAPIException</ref>);
35015
35016     void removeMessagePortListener(long watchId) raises(<ref>WebAPIException</ref>);
35017   };</webidl>
35018       <descriptive>
35019           <brief>
35020  The <em>LocalMessagePort</em> interface provides methods to receive data.
35021           </brief>
35022           <version>
35023  2.1
35024           </version>
35025       </descriptive>
35026       <ExtendedAttributeList>
35027         <ExtendedAttribute name="NoInterfaceObject">
35028           <webidl>NoInterfaceObject</webidl>
35029         </ExtendedAttribute>
35030       </ExtendedAttributeList>
35031       <Attribute readonly="readonly" name="messagePortName" id="::MessagePort::LocalMessagePort::messagePortName">
35032         <webidl>    readonly attribute DOMString messagePortName;</webidl>
35033         <descriptive>
35034             <brief>
35035  An attribute that stores the name of the message port name.
35036             </brief>
35037             <version>
35038  2.1
35039             </version>
35040         </descriptive>
35041         <Type type="DOMString"/>
35042       </Attribute>
35043       <Attribute readonly="readonly" name="isTrusted" id="::MessagePort::LocalMessagePort::isTrusted">
35044         <webidl>    readonly attribute boolean isTrusted;</webidl>
35045         <descriptive>
35046             <brief>
35047  An attribute that determines whether the message port is trusted or not.
35048             </brief>
35049             <version>
35050  2.1
35051             </version>
35052         </descriptive>
35053         <Type type="boolean"/>
35054       </Attribute>
35055       <Operation name="addMessagePortListener" id="::MessagePort::LocalMessagePort::addMessagePortListener">
35056         <webidl>    long addMessagePortListener(<ref>MessagePortCallback</ref> listener) raises(<ref>WebAPIException</ref>);</webidl>
35057         <descriptive>
35058             <brief>
35059  Adds a message port listener to receive messages from other applications.
35060             </brief>
35061             <version>
35062  2.1.
35063             </version>
35064             <Code> function onreceived(data, remoteMsgPort) {
35065    console.log('Received data to \'' + remoteMsgPort.messagePortName + '\'');
35066  }
35067
35068  var localMsgPort = tizen.messageport.requestLocalMessagePort('MessagePortA');
35069  var watchId = localMsgPort.addMessagePortListener(onreceived);
35070  </Code>
35071         </descriptive>
35072         <Type type="long">
35073           <descriptive>
35074               <description><p>
35075  long ID of the listener that is later used to remove the listener.
35076               </p></description>
35077           </descriptive>
35078         </Type>
35079         <ArgumentList>
35080           <Argument name="listener">
35081             <descriptive>
35082                 <description><p>
35083  The method to invoke when a message is received.
35084                 </p></description>
35085             </descriptive>
35086             <Type name="MessagePortCallback"/>
35087           </Argument>
35088         </ArgumentList>
35089         <Raises>
35090           <RaiseException name="WebAPIException">
35091             <descriptive>
35092                 <description><p>
35093  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
35094                 </p></description>
35095                 <description><p>
35096  with error type InvalidValuesError, if the input parameter contains an invalid value.
35097                 </p></description>
35098                 <description><p>
35099  with error type UnknownError, if any other error occurs.
35100                 </p></description>
35101             </descriptive>
35102           </RaiseException>
35103         </Raises>
35104       </Operation>
35105       <Operation name="removeMessagePortListener" id="::MessagePort::LocalMessagePort::removeMessagePortListener">
35106         <webidl>    void removeMessagePortListener(long watchId) raises(<ref>WebAPIException</ref>);</webidl>
35107         <descriptive>
35108             <brief>
35109  Removes the message port listener.
35110             </brief>
35111             <version>
35112  2.1.
35113             </version>
35114             <Code> var localMsgPort = tizen.messageport.requestLocalMessagePort('MessagePortA');
35115  var watchId = localMsgPort.addMessagePortListener(onreceived);
35116  // Communication routines of your app...
35117  localMsgPort.removeMessagePortListener(watchId);
35118  </Code>
35119         </descriptive>
35120         <Type type="void"/>
35121         <ArgumentList>
35122           <Argument name="watchId">
35123             <descriptive>
35124                 <description><p>
35125  ID to identify the listener.
35126                 </p></description>
35127             </descriptive>
35128             <Type type="long"/>
35129           </Argument>
35130         </ArgumentList>
35131         <Raises>
35132           <RaiseException name="WebAPIException">
35133             <descriptive>
35134                 <description><p>
35135  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
35136                 </p></description>
35137                 <description><p>
35138  with error type InvalidValuesError, if the input parameter contains an invalid value.
35139                 </p></description>
35140                 <description><p>
35141  with error type NotFoundError, if the watch ID has not been found.
35142                 </p></description>
35143                 <description><p>
35144  with error type UnknownError, if any other error occurs.
35145                 </p></description>
35146             </descriptive>
35147           </RaiseException>
35148         </Raises>
35149       </Operation>
35150     </Interface>
35151     <Interface name="RemoteMessagePort" id="::MessagePort::RemoteMessagePort">
35152       <webidl>  [NoInterfaceObject] interface RemoteMessagePort {
35153
35154     readonly attribute DOMString messagePortName;
35155
35156     readonly attribute <ref>ApplicationId</ref> appId;
35157
35158     readonly attribute boolean isTrusted;
35159
35160     void sendMessage(<ref>MessagePortDataItem</ref>[] data, optional <ref>LocalMessagePort</ref>? localMessagePort) raises(<ref>WebAPIException</ref>);
35161   };</webidl>
35162       <descriptive>
35163           <brief>
35164  The <em>RemoteMessagePort</em> interface provides methods to send messages.
35165           </brief>
35166           <version>
35167  2.1
35168           </version>
35169       </descriptive>
35170       <ExtendedAttributeList>
35171         <ExtendedAttribute name="NoInterfaceObject">
35172           <webidl>NoInterfaceObject</webidl>
35173         </ExtendedAttribute>
35174       </ExtendedAttributeList>
35175       <Attribute readonly="readonly" name="messagePortName" id="::MessagePort::RemoteMessagePort::messagePortName">
35176         <webidl>    readonly attribute DOMString messagePortName;</webidl>
35177         <descriptive>
35178             <brief>
35179  An attribute to store the message port name.
35180             </brief>
35181             <version>
35182  2.1
35183             </version>
35184         </descriptive>
35185         <Type type="DOMString"/>
35186       </Attribute>
35187       <Attribute readonly="readonly" name="appId" id="::MessagePort::RemoteMessagePort::appId">
35188         <webidl>    readonly attribute <ref>ApplicationId</ref> appId;</webidl>
35189         <descriptive>
35190             <brief>
35191  An attribute that store the application ID to connect with.
35192             </brief>
35193             <version>
35194  2.1
35195             </version>
35196         </descriptive>
35197         <Type name="ApplicationId"/>
35198       </Attribute>
35199       <Attribute readonly="readonly" name="isTrusted" id="::MessagePort::RemoteMessagePort::isTrusted">
35200         <webidl>    readonly attribute boolean isTrusted;</webidl>
35201         <descriptive>
35202             <brief>
35203  An attribute that determines whether the message port is trusted or not.
35204             </brief>
35205             <version>
35206  2.1
35207             </version>
35208         </descriptive>
35209         <Type type="boolean"/>
35210       </Attribute>
35211       <Operation name="sendMessage" id="::MessagePort::RemoteMessagePort::sendMessage">
35212         <webidl>    void sendMessage(<ref>MessagePortDataItem</ref>[] data, optional <ref>LocalMessagePort</ref>? localMessagePort) raises(<ref>WebAPIException</ref>);</webidl>
35213         <descriptive>
35214             <brief>
35215  Sends messages to the specified application.
35216             </brief>
35217            <description>
35218             <p>
35219 The sent messages will be ignored without any notice, unless the target application added one or more listeners to the target local message port.
35220             </p>
35221            </description>
35222             <version>
35223  2.1
35224             </version>
35225             <Code> // Sends message
35226  var localMsgPort = tizen.messageport.requestLocalMessagePort('MessagePortA');
35227  var remoteMsgPort = tizen.messageport.requestRemoteMessagePort('6xaeuflskd.App1', 'MessagePortB');
35228  localMsgPort.addMessagePortListener(function(items, remoteport) {
35229    // ...
35230    if(remoteport !== null) {
35231      remoteport.sendMessage([{key:'RESULT', value:'OK'}]);
35232    }
35233  });
35234  remoteMsgPort.sendMessage(
35235    [
35236      { key:'CMD', value:'openWindow' },
35237      { key:'OPTION', value:'bx' }
35238    ]
35239    , localMsgPort);
35240  </Code>
35241         </descriptive>
35242         <Type type="void"/>
35243         <ArgumentList>
35244           <Argument name="data">
35245             <descriptive>
35246                 <description><p>
35247  Data array of data to send.
35248                 </p></description>
35249             </descriptive>
35250             <Type type="array">
35251               <Type name="MessagePortDataItem"/>
35252             </Type>
35253           </Argument>
35254           <Argument optional="optional" name="localMessagePort">
35255             <descriptive>
35256                 <description><p>
35257  <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.
35258 </em></em>                </p></description>
35259             </descriptive>
35260             <Type name="LocalMessagePort" nullable="nullable"/>
35261           </Argument>
35262         </ArgumentList>
35263         <Raises>
35264           <RaiseException name="WebAPIException">
35265             <descriptive>
35266                 <description><p>
35267  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
35268                 </p></description>
35269                 <description><p>
35270  with error type InvalidValuesError, if an input parameter contains an invalid value.
35271                 </p></description>
35272                 <description><p>
35273  with error type QuotaExceededError, if the size of message has exceeded the maximum limit.
35274                 </p></description>
35275                 <description><p>
35276  with error type UnknownError, if any other error occurs.
35277                 </p></description>
35278             </descriptive>
35279           </RaiseException>
35280         </Raises>
35281       </Operation>
35282     </Interface>
35283     <Dictionary name="MessagePortDataItem" id="::MessagePort::MessagePortDataItem">
35284       <webidl>  dictionary MessagePortDataItem {
35285     DOMString key;
35286     DOMString value;
35287   };</webidl>
35288       <descriptive>
35289           <brief>
35290  A dictionary for specifying the data item that is transferred.
35291           </brief>
35292           <version>
35293  2.1
35294           </version>
35295       </descriptive>
35296       <DictionaryMember name="key" id="::MessagePort::MessagePortDataItem::key">
35297         <webidl>    DOMString key;</webidl>
35298         <Type type="DOMString"/>
35299       </DictionaryMember>
35300       <DictionaryMember name="value" id="::MessagePort::MessagePortDataItem::value">
35301         <webidl>    DOMString value;</webidl>
35302         <Type type="DOMString"/>
35303       </DictionaryMember>
35304     </Dictionary>
35305     <Interface name="MessagePortCallback" id="::MessagePort::MessagePortCallback">
35306       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface MessagePortCallback {
35307     void onreceived(<ref>MessagePortDataItem</ref>[] data, <ref>RemoteMessagePort</ref>? remoteMessagePort);
35308   };</webidl>
35309       <descriptive>
35310           <brief>
35311  This interface defines notification callbacks for receiving data from other applications.
35312           </brief>
35313           <version>
35314  2.1
35315           </version>
35316       </descriptive>
35317       <ExtendedAttributeList>
35318         <ExtendedAttribute name="Callback" value="FunctionOnly">
35319           <webidl>Callback</webidl>
35320         </ExtendedAttribute>
35321         <ExtendedAttribute name="NoInterfaceObject">
35322           <webidl> NoInterfaceObject</webidl>
35323         </ExtendedAttribute>
35324       </ExtendedAttributeList>
35325       <Operation name="onreceived" id="::MessagePort::MessagePortCallback::onreceived">
35326         <webidl>    void onreceived(<ref>MessagePortDataItem</ref>[] data, <ref>RemoteMessagePort</ref>? remoteMessagePort);</webidl>
35327         <descriptive>
35328             <brief>
35329  Called when data is received from other applications via the specified message port name.
35330             </brief>
35331             <version>
35332  2.1
35333             </version>
35334         </descriptive>
35335         <Type type="void"/>
35336         <ArgumentList>
35337           <Argument name="data">
35338             <descriptive>
35339                 <description><p>
35340  An array of data received from another application.
35341                 </p></description>
35342             </descriptive>
35343             <Type type="array">
35344               <Type name="MessagePortDataItem"/>
35345             </Type>
35346           </Argument>
35347           <Argument name="remoteMessagePort">
35348             <descriptive>
35349                 <description><p>
35350  The RemoteMessagePort port that can be used to reply for the received message.
35351                 </p></description>
35352             </descriptive>
35353             <Type name="RemoteMessagePort" nullable="nullable"/>
35354           </Argument>
35355         </ArgumentList>
35356       </Operation>
35357     </Interface>
35358   </Module>
35359   <Module name="Messaging" id="::Messaging">
35360     <webidl>module Messaging {
35361
35362   [NoInterfaceObject] interface MessageManagerObject {
35363     readonly attribute <ref>Messaging</ref> messaging;
35364   };
35365   <ref>Tizen</ref> implements <ref>MessageManagerObject</ref>;
35366
35367   enum MessageServiceTag {&quot;messaging.sms&quot;, &quot;messaging.mms&quot;, &quot;messaging.email&quot; };
35368   
35369   typedef DOMString MessageId;
35370   
35371   typedef DOMString MessageAttachmentId;
35372
35373   typedef DOMString MessageConvId;
35374
35375   typedef DOMString MessageFolderId;  
35376
35377   [Constructor(<ref>MessageServiceTag</ref> type, optional <ref>MessageInit</ref>? messageInitDict)]
35378   interface Message {
35379
35380     readonly attribute <ref>MessageId</ref>? id;
35381
35382     readonly attribute <ref>MessageConvId</ref>? conversationId;
35383
35384     readonly attribute <ref>MessageFolderId</ref>? folderId;
35385
35386     readonly attribute <ref>MessageServiceTag</ref> type;
35387
35388     readonly attribute Date? timestamp;
35389
35390     readonly attribute DOMString? from;
35391
35392     attribute DOMString[] to setraises(<ref>WebAPIException</ref>);
35393
35394     attribute DOMString[] cc setraises(<ref>WebAPIException</ref>);
35395
35396     attribute DOMString[] bcc setraises(<ref>WebAPIException</ref>);
35397
35398     attribute <ref>MessageBody</ref> body setraises(<ref>WebAPIException</ref>);
35399
35400     attribute boolean isRead setraises(<ref>WebAPIException</ref>);
35401
35402     readonly attribute boolean hasAttachment;
35403
35404     attribute boolean isHighPriority setraises(<ref>WebAPIException</ref>);
35405
35406     attribute DOMString subject setraises(<ref>WebAPIException</ref>);
35407
35408     readonly attribute <ref>MessageId</ref>? inResponseTo setraises(<ref>WebAPIException</ref>);
35409
35410     readonly attribute DOMString messageStatus;
35411
35412     attribute <ref>MessageAttachment</ref>[] attachments setraises(<ref>WebAPIException</ref>);
35413   };
35414   dictionary MessageInit
35415   {
35416
35417     DOMString subject;
35418
35419     DOMString[] to;
35420
35421     DOMString[] cc;
35422
35423     DOMString[] bcc;
35424
35425     DOMString plainBody;
35426
35427     DOMString htmlBody;
35428
35429     boolean isHighPriority;
35430   };
35431
35432   [NoInterfaceObject] interface MessageBody {
35433
35434     readonly attribute <ref>MessageId</ref> messageId;
35435
35436     readonly attribute boolean loaded;
35437
35438     attribute DOMString plainBody setraises(<ref>WebAPIException</ref>);
35439
35440     attribute DOMString htmlBody setraises(<ref>WebAPIException</ref>);
35441
35442     attribute <ref>MessageAttachment</ref>[] inlineAttachments setraises(<ref>WebAPIException</ref>);
35443   };
35444
35445   [Constructor(DOMString filePath, optional DOMString? mimeType)]
35446   interface MessageAttachment {
35447     
35448     readonly attribute <ref>MessageAttachmentId</ref>? id;
35449     
35450     readonly attribute <ref>MessageId</ref>? messageId;
35451     
35452     readonly attribute DOMString? mimeType;
35453     
35454     readonly attribute DOMString? filePath;
35455   };
35456
35457   [NoInterfaceObject] interface Messaging {
35458
35459     void getMessageServices(<ref>MessageServiceTag</ref> messageServiceType,
35460                             <ref>MessageServiceArraySuccessCallback</ref> successCallback,
35461                             optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
35462   };
35463
35464   [Callback=FunctionOnly, NoInterfaceObject] interface MessageServiceArraySuccessCallback {
35465
35466     void onsuccess(<ref>MessageService</ref>[] services);
35467
35468   };
35469
35470
35471   [NoInterfaceObject] interface MessageService {
35472
35473     readonly attribute DOMString id;
35474
35475     readonly attribute <ref>MessageServiceTag</ref> type;
35476
35477     readonly attribute DOMString name;
35478                     
35479     void sendMessage(<ref>Message</ref> message,
35480                      optional <ref>MessageRecipientsCallback</ref>? successCallback,
35481                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
35482
35483     void loadMessageBody(<ref>Message</ref> message,
35484                          <ref>MessageBodySuccessCallback</ref> successCallback,
35485                          optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
35486
35487     void loadMessageAttachment(<ref>MessageAttachment</ref> attachment,
35488                                <ref>MessageAttachmentSuccessCallback</ref> successCallback,
35489                                optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
35490
35491     long sync(optional <ref>SuccessCallback</ref>? successCallback,
35492               optional <ref>ErrorCallback</ref>? errorCallback,
35493               optional unsigned long? limit) raises(<ref>WebAPIException</ref>);
35494
35495     long syncFolder(<ref>MessageFolder</ref> folder,
35496                     optional <ref>SuccessCallback</ref>? successCallback,
35497                     optional <ref>ErrorCallback</ref>? errorCallback,
35498                     optional unsigned long? limit) raises(<ref>WebAPIException</ref>);
35499
35500     void stopSync(long opId) raises(<ref>WebAPIException</ref>);
35501
35502     readonly attribute <ref>MessageStorage</ref> messageStorage getraises(<ref>WebAPIException</ref>);
35503   };
35504
35505   [Callback=FunctionOnly, NoInterfaceObject] interface MessageRecipientsCallback {
35506
35507     void onsuccess(DOMString[] recipients);
35508
35509    };
35510
35511   [Callback=FunctionOnly, NoInterfaceObject] interface MessageBodySuccessCallback {
35512
35513      void onsuccess(<ref>Message</ref> message);
35514   };
35515
35516   [Callback=FunctionOnly, NoInterfaceObject] interface MessageAttachmentSuccessCallback {
35517
35518      void onsuccess(<ref>MessageAttachment</ref> attachment);
35519    };
35520
35521   [NoInterfaceObject] interface MessageStorage {
35522
35523     void addDraftMessage(<ref>Message</ref> message,
35524                          optional <ref>SuccessCallback</ref>? successCallback,
35525                          optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
35526
35527     void findMessages(<ref>AbstractFilter</ref> filter,
35528                       <ref>MessageArraySuccessCallback</ref> successCallback,
35529                       optional <ref>ErrorCallback</ref>? errorCallback,
35530                       optional <ref>SortMode</ref>? sort,
35531                       optional unsigned long? limit,
35532                       optional unsigned long? offset) raises(<ref>WebAPIException</ref>);
35533
35534     void removeMessages(<ref>Message</ref>[] messages,
35535                         optional <ref>SuccessCallback</ref>? successCallback,
35536                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
35537
35538     void updateMessages(<ref>Message</ref>[] messages,
35539                         optional <ref>SuccessCallback</ref>? successCallback,
35540                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
35541
35542     void findConversations(<ref>AbstractFilter</ref> filter,
35543                            <ref>MessageConversationArraySuccessCallback</ref> successCallback,
35544                            optional <ref>ErrorCallback</ref>? errorCallback,
35545                            optional <ref>SortMode</ref>? sort,
35546                            optional unsigned long? limit,
35547                            optional unsigned long? offset) raises(<ref>WebAPIException</ref>);
35548
35549     void removeConversations(<ref>MessageConversation</ref>[] conversations,
35550                              optional <ref>SuccessCallback</ref>? successCallback,
35551                              optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
35552
35553
35554     void findFolders(<ref>AbstractFilter</ref> filter,
35555                      <ref>MessageFolderArraySuccessCallback</ref> successCallback,
35556                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
35557
35558     long addMessagesChangeListener(<ref>MessagesChangeCallback</ref> messagesChangeCallback,
35559                                    optional <ref>AbstractFilter</ref>? filter) raises(<ref>WebAPIException</ref>);
35560
35561     long addConversationsChangeListener(<ref>MessageConversationsChangeCallback</ref> conversationsChangeCallback,
35562                                         optional <ref>AbstractFilter</ref>? filter) raises(<ref>WebAPIException</ref>);
35563
35564     long addFoldersChangeListener(<ref>MessageFoldersChangeCallback</ref> foldersChangeCallback,
35565                                   optional <ref>AbstractFilter</ref>? filter) raises(<ref>WebAPIException</ref>);
35566
35567     void removeChangeListener(long watchId) raises(<ref>WebAPIException</ref>);
35568   };
35569
35570   [Callback=FunctionOnly, NoInterfaceObject] interface MessageArraySuccessCallback {
35571
35572     void onsuccess(<ref>Message</ref>[] messages);
35573   };
35574
35575   [Callback=FunctionOnly, NoInterfaceObject] interface MessageConversationArraySuccessCallback {
35576
35577     void onsuccess(<ref>MessageConversation</ref>[] conversations);
35578   };
35579
35580   [Callback=FunctionOnly, NoInterfaceObject] interface MessageFolderArraySuccessCallback {
35581
35582     void onsuccess(<ref>MessageFolder</ref>[] folders);
35583   };
35584
35585   [Callback, NoInterfaceObject] interface MessagesChangeCallback {
35586
35587     void messagesadded(<ref>Message</ref>[] addedMessages);
35588
35589     void messagesupdated(<ref>Message</ref>[] updatedMessages);
35590
35591     void messagesremoved(<ref>Message</ref>[] removedMessages);
35592   };
35593
35594   [Callback, NoInterfaceObject] interface MessageConversationsChangeCallback {
35595
35596     void conversationsadded(<ref>MessageConversation</ref>[] addedConversations);
35597
35598     void conversationsupdated(<ref>MessageConversation</ref>[] updatedConversations);
35599
35600     void conversationsremoved(<ref>MessageConversation</ref>[] removedConversations);
35601   };
35602
35603   [Callback, NoInterfaceObject] interface MessageFoldersChangeCallback {
35604  
35605     void foldersadded(<ref>MessageFolder</ref>[] addedFolders);
35606
35607     void foldersupdated(<ref>MessageFolder</ref>[] updatedFolders);
35608
35609     void foldersremoved(<ref>MessageFolder</ref>[] removedFolders);
35610   };
35611
35612   [NoInterfaceObject] interface MessageConversation {
35613
35614     readonly attribute <ref>MessageConvId</ref> id;
35615
35616     readonly attribute <ref>MessageServiceTag</ref> type;
35617
35618     readonly attribute Date timestamp;
35619      
35620     readonly attribute unsigned long messageCount;
35621
35622     readonly attribute unsigned long unreadMessages;
35623
35624     readonly attribute DOMString preview;
35625
35626     readonly attribute DOMString subject;
35627
35628     readonly attribute boolean isRead;
35629
35630     readonly attribute DOMString from;
35631
35632     readonly attribute DOMString[] to;
35633
35634     readonly attribute DOMString[] cc;
35635
35636     readonly attribute DOMString[] bcc;
35637
35638     readonly attribute <ref>MessageId</ref> lastMessageId;
35639   };
35640
35641   [NoInterfaceObject] interface MessageFolder {
35642
35643     readonly attribute <ref>MessageFolderId</ref> id;
35644
35645     readonly attribute <ref>MessageFolderId</ref> parentId;
35646
35647     readonly attribute DOMString serviceId;
35648
35649     readonly attribute <ref>MessageServiceTag</ref> contentType;
35650
35651     attribute DOMString name setraises(<ref>WebAPIException</ref>);
35652
35653     readonly attribute DOMString path;
35654
35655     readonly attribute DOMString type;
35656
35657     attribute boolean synchronizable setraises(<ref>WebAPIException</ref>);
35658   };
35659
35660 };</webidl>
35661     <descriptive>
35662         <brief>
35663  This API provides interfaces and methods for managing SMS, MMS, and email messages.
35664         </brief>
35665        <description>
35666         <p>
35667 The Messaging API provides access to these capabilities:
35668         </p>
35669         <ul>
35670           <li>
35671 Sending messages through different technologies: SMS, MMS, and email messages.          </li>
35672           <li>
35673 Retrieving available message services.          </li>
35674           <li>
35675 Searching for messages.          </li>
35676           <li>
35677 Managing messages: update, delete, and add.          </li>
35678           <li>
35679 Subscribing to receive notifications of message storage modifications.          </li>
35680           <li>
35681 Fetching conversations and subscribing to conversation updates.          </li>
35682         </ul>
35683         <p>
35684 For more information on the Messaging features, see <a href="../../org.tizen.web.appprogramming/html/guide/communication_guide/messaging.htm">Messaging Guide</a>.
35685         </p>
35686        </description>
35687         <version>
35688  1.0
35689         </version>
35690         <def-api-feature identifier="http://tizen.org/feature/network.telephony">
35691           <descriptive>
35692            <description>
35693             <p>
35694 To guarantee this application running on a device with SMS feature, define below in the config file: 
35695             </p>
35696            </description>
35697           </descriptive>
35698         </def-api-feature>
35699         <def-api-feature identifier="http://tizen.org/feature/network.telephony.mms">
35700           <descriptive>
35701            <description>
35702             <p>
35703 To guarantee this application running on a device with MMS feature, define below in the config file: 
35704             </p>
35705            </description>
35706           </descriptive>
35707         </def-api-feature>
35708     </descriptive>
35709     <Interface name="MessageManagerObject" id="::Messaging::MessageManagerObject">
35710       <webidl>  [NoInterfaceObject] interface MessageManagerObject {
35711     readonly attribute <ref>Messaging</ref> messaging;
35712   };</webidl>
35713       <descriptive>
35714           <brief>
35715  This interface defines what is instantiated by the Tizen object.
35716           </brief>
35717          <description>
35718           <p>
35719 There is a <em>tizen.messaging </em>object that allows access to the Messaging API.
35720           </p>
35721          </description>
35722           <version>
35723  1.0
35724           </version>
35725       </descriptive>
35726       <ExtendedAttributeList>
35727         <ExtendedAttribute name="NoInterfaceObject">
35728           <webidl>NoInterfaceObject</webidl>
35729         </ExtendedAttribute>
35730       </ExtendedAttributeList>
35731       <Attribute readonly="readonly" name="messaging" id="::Messaging::MessageManagerObject::messaging">
35732         <webidl>    readonly attribute <ref>Messaging</ref> messaging;</webidl>
35733         <Type name="Messaging"/>
35734       </Attribute>
35735     </Interface>
35736     <Implements name1="Tizen" name2="MessageManagerObject">
35737       <webidl>  <ref>Tizen</ref> implements <ref>MessageManagerObject</ref>;</webidl>
35738     </Implements>
35739     <Enum name="MessageServiceTag" id="::Messaging::MessageServiceTag">
35740       <webidl>  enum MessageServiceTag {&quot;messaging.sms&quot;, &quot;messaging.mms&quot;, &quot;messaging.email&quot; };</webidl>
35741       <descriptive>
35742           <brief>
35743  The supported Messaging service tags.
35744 The following values are supported in this release:
35745           </brief>
35746          <description>
35747           <ul>
35748             <li>
35749 messaging.sms, for SMS services            </li>
35750             <li>
35751 messaging.mms, for MMS services            </li>
35752             <li>
35753 messaging.email, for email services            </li>
35754           </ul>
35755          </description>
35756           <version>
35757  1.0
35758           </version>
35759       </descriptive>
35760       <EnumValue stringvalue="messaging.sms">
35761         <webidl>&quot;messaging.sms</webidl>
35762       </EnumValue>
35763       <EnumValue stringvalue="messaging.mms">
35764         <webidl> &quot;messaging.mms</webidl>
35765       </EnumValue>
35766       <EnumValue stringvalue="messaging.email">
35767         <webidl> &quot;messaging.email</webidl>
35768       </EnumValue>
35769     </Enum>
35770     <Typedef name="MessageId" id="::Messaging::MessageId">
35771       <webidl>  typedef DOMString MessageId;</webidl>
35772       <descriptive>
35773           <brief>
35774  The Message identifier.
35775           </brief>
35776           <version>
35777  1.0
35778           </version>
35779       </descriptive>
35780       <Type type="DOMString"/>
35781     </Typedef>
35782     <Typedef name="MessageAttachmentId" id="::Messaging::MessageAttachmentId">
35783       <webidl>  typedef DOMString MessageAttachmentId;</webidl>
35784       <descriptive>
35785           <brief>
35786  The MessageAttachment identifier within a message.
35787           </brief>
35788           <version>
35789  1.0
35790           </version>
35791       </descriptive>
35792       <Type type="DOMString"/>
35793     </Typedef>
35794     <Typedef name="MessageConvId" id="::Messaging::MessageConvId">
35795       <webidl>  typedef DOMString MessageConvId;</webidl>
35796       <descriptive>
35797           <brief>
35798  The MessageConversation identifier.
35799           </brief>
35800           <version>
35801  1.0
35802           </version>
35803       </descriptive>
35804       <Type type="DOMString"/>
35805     </Typedef>
35806     <Typedef name="MessageFolderId" id="::Messaging::MessageFolderId">
35807       <webidl>  typedef DOMString MessageFolderId;</webidl>
35808       <descriptive>
35809           <brief>
35810  The identifier of an email folder .
35811           </brief>
35812           <version>
35813  1.0
35814           </version>
35815       </descriptive>
35816       <Type type="DOMString"/>
35817     </Typedef>
35818     <Interface name="Message" id="::Messaging::Message">
35819       <webidl>  [Constructor(<ref>MessageServiceTag</ref> type, optional <ref>MessageInit</ref>? messageInitDict)]
35820   interface Message {
35821
35822     readonly attribute <ref>MessageId</ref>? id;
35823
35824     readonly attribute <ref>MessageConvId</ref>? conversationId;
35825
35826     readonly attribute <ref>MessageFolderId</ref>? folderId;
35827
35828     readonly attribute <ref>MessageServiceTag</ref> type;
35829
35830     readonly attribute Date? timestamp;
35831
35832     readonly attribute DOMString? from;
35833
35834     attribute DOMString[] to setraises(<ref>WebAPIException</ref>);
35835
35836     attribute DOMString[] cc setraises(<ref>WebAPIException</ref>);
35837
35838     attribute DOMString[] bcc setraises(<ref>WebAPIException</ref>);
35839
35840     attribute <ref>MessageBody</ref> body setraises(<ref>WebAPIException</ref>);
35841
35842     attribute boolean isRead setraises(<ref>WebAPIException</ref>);
35843
35844     readonly attribute boolean hasAttachment;
35845
35846     attribute boolean isHighPriority setraises(<ref>WebAPIException</ref>);
35847
35848     attribute DOMString subject setraises(<ref>WebAPIException</ref>);
35849
35850     readonly attribute <ref>MessageId</ref>? inResponseTo setraises(<ref>WebAPIException</ref>);
35851
35852     readonly attribute DOMString messageStatus;
35853
35854     attribute <ref>MessageAttachment</ref>[] attachments setraises(<ref>WebAPIException</ref>);
35855   };</webidl>
35856       <descriptive>
35857           <brief>
35858  Defines the content and attributes of a message.
35859           </brief>
35860          <description>
35861           <p>
35862 This interface allows a web application to define the set of properties
35863 linked to a message.
35864           </p>
35865           <p>
35866 It also allows an application to retrieve the content of a
35867 message through <em>MessageStorage </em>methods. In these
35868 cases, the implementation can return, in some situations, only the meta-information
35869 of a message without the loaded body. In such situations, the method <em>MessageService.loadMessageBody() </em>should be used.
35870           </p>
35871          </description>
35872           <version>
35873  1.0
35874           </version>
35875           <Code> // Define the success callback.
35876  var messageSentCallback = function(recipients) {
35877    console.log(&quot;Message sent successfully to &quot; + recipients.length + &quot; recipients.&quot;);
35878  }
35879
35880  // Define the error callback.
35881  function errorCallback(err) {
35882    console.log(err.name + &quot; error: &quot; + err.message);
35883  }
35884  
35885  function serviceListCB(services) {
35886    if (services.length > 0) {
35887       var msg = new tizen.Message(&quot;messaging.sms&quot;, {plainBody: &quot;Tizen first SMS message.&quot;});
35888       services[0].sendMessage(msg, messageSentCallback, errorCallback);
35889    }
35890  }
35891
35892  tizen.messaging.getMessageServices(&quot;messaging.sms&quot;,
35893                                     serviceListCB,
35894                                     errorCallback);
35895  </Code>
35896       </descriptive>
35897       <ExtendedAttributeList>
35898         <ExtendedAttribute name="Constructor">
35899           <webidl>Constructor(<ref>MessageServiceTag</ref> type, optional <ref>MessageInit</ref>? messageInitDict)</webidl>
35900           <ArgumentList>
35901             <Argument name="type">
35902               <Type name="MessageServiceTag"/>
35903             </Argument>
35904             <Argument optional="optional" name="messageInitDict">
35905               <Type name="MessageInit" nullable="nullable"/>
35906             </Argument>
35907           </ArgumentList>
35908         </ExtendedAttribute>
35909       </ExtendedAttributeList>
35910       <Attribute readonly="readonly" name="id" id="::Messaging::Message::id">
35911         <webidl>    readonly attribute <ref>MessageId</ref>? id;</webidl>
35912         <descriptive>
35913             <brief>
35914  The message identifier.
35915             </brief>
35916            <description>
35917             <p>
35918 The ID is locally unique and persistent property, assigned by the device or the Web runtime (WRT).
35919 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>.
35920             </p>
35921             <p>
35922 By default, this attribute is set to <var>null</var>.
35923             </p>
35924            </description>
35925             <version>
35926  1.0
35927             </version>
35928         </descriptive>
35929         <Type name="MessageId" nullable="nullable"/>
35930       </Attribute>
35931       <Attribute readonly="readonly" name="conversationId" id="::Messaging::Message::conversationId">
35932         <webidl>    readonly attribute <ref>MessageConvId</ref>? conversationId;</webidl>
35933         <descriptive>
35934             <brief>
35935  The identifier of the conversation to which the message belongs.
35936             </brief>
35937            <description>
35938             <p>
35939 By default, this attribute is set to <var>null</var>.
35940             </p>
35941            </description>
35942             <version>
35943  1.0
35944             </version>
35945         </descriptive>
35946         <Type name="MessageConvId" nullable="nullable"/>
35947       </Attribute>
35948       <Attribute readonly="readonly" name="folderId" id="::Messaging::Message::folderId">
35949         <webidl>    readonly attribute <ref>MessageFolderId</ref>? folderId;</webidl>
35950         <descriptive>
35951             <brief>
35952  The identifier of the folder to which the message belongs.
35953             </brief>
35954            <description>
35955             <p>
35956 By default, this attribute is set to null.
35957             </p>
35958             <p>
35959 For SMS and MMS, <em>folderId </em>can be one of these values:
35960             </p>
35961             <ul>
35962               <li>
35963 INBOX = 1,              </li>
35964               <li>
35965 OUTBOX = 2,              </li>
35966               <li>
35967 DRAFTS = 3,              </li>
35968               <li>
35969 SENTBOX = 4              </li>
35970             </ul>
35971            </description>
35972             <version>
35973  1.0
35974             </version>
35975         </descriptive>
35976         <Type name="MessageFolderId" nullable="nullable"/>
35977       </Attribute>
35978       <Attribute readonly="readonly" name="type" id="::Messaging::Message::type">
35979         <webidl>    readonly attribute <ref>MessageServiceTag</ref> type;</webidl>
35980         <descriptive>
35981             <brief>
35982  The type of a given message.          
35983             </brief>
35984             <version>
35985  1.0
35986             </version>
35987         </descriptive>
35988         <Type name="MessageServiceTag"/>
35989       </Attribute>
35990       <Attribute readonly="readonly" name="timestamp" id="::Messaging::Message::timestamp">
35991         <webidl>    readonly attribute Date? timestamp;</webidl>
35992         <descriptive>
35993             <brief>
35994  The timestamp of a message.
35995             </brief>
35996            <description>
35997             <p>
35998 For a received message, the timestamps indicates the time at which a message is received.
35999 For a sent message, the timestamp indicates the time at which a message is sent.
36000 For a draft message, the timestamp indicates the time at which a message is added.
36001 By default, this attribute is set to <var>null</var>.
36002             </p>
36003            </description>
36004             <version>
36005  1.0
36006             </version>
36007         </descriptive>
36008         <Type type="Date" nullable="nullable"/>
36009       </Attribute>
36010       <Attribute readonly="readonly" name="from" id="::Messaging::Message::from">
36011         <webidl>    readonly attribute DOMString? from;</webidl>
36012         <descriptive>
36013             <brief>
36014  The source address (or source phone number) of a message.
36015             </brief>
36016            <description>
36017             <p>
36018 This property is set up by the device or the web runtime environment.
36019 By default, this attribute is set to null.
36020             </p>
36021            </description>
36022             <version>
36023  1.0
36024             </version>
36025         </descriptive>
36026         <Type type="DOMString" nullable="nullable"/>
36027       </Attribute>
36028       <Attribute name="to" id="::Messaging::Message::to">
36029         <webidl>    attribute DOMString[] to setraises(<ref>WebAPIException</ref>);</webidl>
36030         <descriptive>
36031             <brief>
36032  The destination of a message.
36033             </brief>
36034             <version>
36035  1.0
36036             </version>
36037         </descriptive>
36038         <Type type="array">
36039           <Type type="DOMString"/>
36040         </Type>
36041         <SetRaises>
36042           <RaiseException name="WebAPIException"/>
36043         </SetRaises>
36044       </Attribute>
36045       <Attribute name="cc" id="::Messaging::Message::cc">
36046         <webidl>    attribute DOMString[] cc setraises(<ref>WebAPIException</ref>);</webidl>
36047         <descriptive>
36048             <brief>
36049  The carbon copy address of a message.
36050             </brief>
36051            <description>
36052             <p>
36053 This property is used only for email messages.
36054             </p>
36055            </description>
36056             <version>
36057  1.0
36058             </version>
36059         </descriptive>
36060         <Type type="array">
36061           <Type type="DOMString"/>
36062         </Type>
36063         <SetRaises>
36064           <RaiseException name="WebAPIException"/>
36065         </SetRaises>
36066       </Attribute>
36067       <Attribute name="bcc" id="::Messaging::Message::bcc">
36068         <webidl>    attribute DOMString[] bcc setraises(<ref>WebAPIException</ref>);</webidl>
36069         <descriptive>
36070             <brief>
36071  The blind carbon copy (bcc) address of a message.
36072             </brief>
36073            <description>
36074             <p>
36075 This property is used only with email messages.
36076             </p>
36077            </description>
36078             <version>
36079  1.0
36080             </version>
36081         </descriptive>
36082         <Type type="array">
36083           <Type type="DOMString"/>
36084         </Type>
36085         <SetRaises>
36086           <RaiseException name="WebAPIException"/>
36087         </SetRaises>
36088       </Attribute>
36089       <Attribute name="body" id="::Messaging::Message::body">
36090         <webidl>    attribute <ref>MessageBody</ref> body setraises(<ref>WebAPIException</ref>);</webidl>
36091         <descriptive>
36092             <brief>
36093  An attribute to store the body of a message.
36094             </brief>
36095             <version>
36096  1.0
36097             </version>
36098         </descriptive>
36099         <Type name="MessageBody"/>
36100         <SetRaises>
36101           <RaiseException name="WebAPIException"/>
36102         </SetRaises>
36103       </Attribute>
36104       <Attribute name="isRead" id="::Messaging::Message::isRead">
36105         <webidl>    attribute boolean isRead setraises(<ref>WebAPIException</ref>);</webidl>
36106         <descriptive>
36107             <brief>
36108  An attribute to indicate the read state for a message.
36109             </brief>
36110            <description>
36111             <p>
36112 This property is set to <var>true</var> if the message has been read. Else it is set to <var>false</var>.
36113             </p>
36114            </description>
36115             <version>
36116  1.0
36117             </version>
36118         </descriptive>
36119         <Type type="boolean"/>
36120         <SetRaises>
36121           <RaiseException name="WebAPIException"/>
36122         </SetRaises>
36123       </Attribute>
36124       <Attribute readonly="readonly" name="hasAttachment" id="::Messaging::Message::hasAttachment">
36125         <webidl>    readonly attribute boolean hasAttachment;</webidl>
36126         <descriptive>
36127             <brief>
36128  An attribute to indicate whether an attachment(s) exists or not.
36129             </brief>
36130            <description>
36131             <p>
36132 It is set to <var>true</var> if a message has one or more attachments.
36133             </p>
36134             <p>
36135 This property is used only with email and MMS messages.(It is valid when body is loaded)
36136             </p>
36137            </description>
36138             <version>
36139  1.0
36140             </version>
36141         </descriptive>
36142         <Type type="boolean"/>
36143       </Attribute>
36144       <Attribute name="isHighPriority" id="::Messaging::Message::isHighPriority">
36145         <webidl>    attribute boolean isHighPriority setraises(<ref>WebAPIException</ref>);</webidl>
36146         <descriptive>
36147             <brief>
36148  An attribute to indicate the priority of a message.
36149             </brief>
36150            <description>
36151             <p>
36152 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.
36153             </p>
36154             <p>
36155 This property is used only with email messages.
36156             </p>
36157            </description>
36158             <version>
36159  1.0
36160             </version>
36161         </descriptive>
36162         <Type type="boolean"/>
36163         <SetRaises>
36164           <RaiseException name="WebAPIException"/>
36165         </SetRaises>
36166       </Attribute>
36167       <Attribute name="subject" id="::Messaging::Message::subject">
36168         <webidl>    attribute DOMString subject setraises(<ref>WebAPIException</ref>);</webidl>
36169         <descriptive>
36170             <brief>
36171  An attribute to store the subject of a message.
36172             </brief>
36173            <description>
36174             <p>
36175 This property is used only with email and MMS messages.
36176             </p>
36177            </description>
36178             <version>
36179  1.0
36180             </version>
36181         </descriptive>
36182         <Type type="DOMString"/>
36183         <SetRaises>
36184           <RaiseException name="WebAPIException"/>
36185         </SetRaises>
36186       </Attribute>
36187       <Attribute readonly="readonly" name="inResponseTo" id="::Messaging::Message::inResponseTo">
36188         <webidl>    readonly attribute <ref>MessageId</ref>? inResponseTo setraises(<ref>WebAPIException</ref>);</webidl>
36189         <descriptive>
36190             <brief>
36191  The identifier of the original message.
36192             </brief>
36193            <description>
36194             <p>
36195 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>.
36196             </p>
36197            </description>
36198             <version>
36199  1.0
36200             </version>
36201         </descriptive>
36202         <Type name="MessageId" nullable="nullable"/>
36203         <SetRaises>
36204           <RaiseException name="WebAPIException"/>
36205         </SetRaises>
36206       </Attribute>
36207       <Attribute readonly="readonly" name="messageStatus" id="::Messaging::Message::messageStatus">
36208         <webidl>    readonly attribute DOMString messageStatus;</webidl>
36209         <descriptive>
36210             <brief>
36211  The status of a given message.
36212             </brief>
36213            <description>
36214             <p>
36215 It can be one of these values:
36216             </p>
36217             <ul>
36218               <li>
36219 SENT              </li>
36220               <li>
36221 SENDING              </li>
36222               <li>
36223 FAILED              </li>
36224               <li>
36225 DRAFT              </li>
36226             </ul>
36227             <p>
36228 If the status of the current message does not correspond to any item from
36229 the list, an empty value is returned.
36230             </p>
36231            </description>
36232             <version>
36233  1.0
36234             </version>
36235         </descriptive>
36236         <Type type="DOMString"/>
36237       </Attribute>
36238       <Attribute name="attachments" id="::Messaging::Message::attachments">
36239         <webidl>    attribute <ref>MessageAttachment</ref>[] attachments setraises(<ref>WebAPIException</ref>);</webidl>
36240         <descriptive>
36241             <brief>
36242  The list of the message attachments.
36243             </brief>
36244            <description>
36245             <p>
36246 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).
36247             </p>
36248            </description>
36249             <version>
36250  1.0
36251             </version>
36252             <Code> // Define the success callback.
36253  function serviceListCB(services) {
36254      if (services.length > 0) {
36255          var msg = new tizen.Message(&quot;messaging.email&quot;);    
36256          msg.attachments = [new tizen.MessageAttachment(&quot;images/myimage.png&quot;, &quot;image/png&quot;),
36257                             new tizen.MessageAttachment(&quot;documents/mydoc.pdf&quot;, &quot;text/pdf&quot;)];
36258      }
36259  }
36260
36261  tizen.messaging.getMessageServices(&quot;messaging.email&quot;, serviceListCB);
36262
36263      
36264 </Code>
36265         </descriptive>
36266         <Type type="array">
36267           <Type name="MessageAttachment"/>
36268         </Type>
36269         <SetRaises>
36270           <RaiseException name="WebAPIException"/>
36271         </SetRaises>
36272       </Attribute>
36273     </Interface>
36274     <Dictionary name="MessageInit" id="::Messaging::MessageInit">
36275       <webidl>  dictionary MessageInit
36276   {
36277
36278     DOMString subject;
36279
36280     DOMString[] to;
36281
36282     DOMString[] cc;
36283
36284     DOMString[] bcc;
36285
36286     DOMString plainBody;
36287
36288     DOMString htmlBody;
36289
36290     boolean isHighPriority;
36291   };</webidl>
36292       <descriptive>
36293           <brief>
36294  Provides specific message attributes upon message creation.
36295           </brief>
36296          <description>
36297           <p>
36298 This interface is used to input parameters when messages are created using
36299 the Message constructor.
36300           </p>
36301           <p>
36302 All the attributes are optional and are <var>undefined </var>by default, unless otherwise stated in the parameter description.
36303           </p>
36304          </description>
36305           <version>
36306  1.0
36307           </version>
36308       </descriptive>
36309       <DictionaryMember name="subject" id="::Messaging::MessageInit::subject">
36310         <webidl>    DOMString subject;</webidl>
36311         <descriptive>
36312             <brief>
36313  The subject of a message.
36314             </brief>
36315            <description>
36316             <p>
36317 This property is used only with email and MMS messages.
36318             </p>
36319            </description>
36320             <version>
36321  1.0
36322             </version>
36323         </descriptive>
36324         <Type type="DOMString"/>
36325       </DictionaryMember>
36326       <DictionaryMember name="to" id="::Messaging::MessageInit::to">
36327         <webidl>    DOMString[] to;</webidl>
36328         <descriptive>
36329             <brief>
36330  The destination addresses (or phone numbers) of a message.
36331             </brief>
36332             <version>
36333  1.0
36334             </version>
36335         </descriptive>
36336         <Type type="array">
36337           <Type type="DOMString"/>
36338         </Type>
36339       </DictionaryMember>
36340       <DictionaryMember name="cc" id="::Messaging::MessageInit::cc">
36341         <webidl>    DOMString[] cc;</webidl>
36342         <descriptive>
36343             <brief>
36344  The carbon copy addresses of a message.
36345             </brief>
36346            <description>
36347             <p>
36348 This property is used only with email messages.
36349             </p>
36350            </description>
36351             <version>
36352  1.0
36353             </version>
36354         </descriptive>
36355         <Type type="array">
36356           <Type type="DOMString"/>
36357         </Type>
36358       </DictionaryMember>
36359       <DictionaryMember name="bcc" id="::Messaging::MessageInit::bcc">
36360         <webidl>    DOMString[] bcc;</webidl>
36361         <descriptive>
36362             <brief>
36363  The blind carbon copy addresses of a message.
36364             </brief>
36365            <description>
36366             <p>
36367 This property is used only with email messages.
36368             </p>
36369            </description>
36370             <version>
36371  1.0
36372             </version>
36373         </descriptive>
36374         <Type type="array">
36375           <Type type="DOMString"/>
36376         </Type>
36377       </DictionaryMember>
36378       <DictionaryMember name="plainBody" id="::Messaging::MessageInit::plainBody">
36379         <webidl>    DOMString plainBody;</webidl>
36380         <descriptive>
36381             <brief>
36382  The plain text representation of a message body.
36383             </brief>
36384             <version>
36385  1.0
36386             </version>
36387         </descriptive>
36388         <Type type="DOMString"/>
36389       </DictionaryMember>
36390       <DictionaryMember name="htmlBody" id="::Messaging::MessageInit::htmlBody">
36391         <webidl>    DOMString htmlBody;</webidl>
36392         <descriptive>
36393             <brief>
36394  The HTML representation of a message body.
36395             </brief>
36396            <description>
36397             <p>
36398 This property is used only with email messages.
36399             </p>
36400            </description>
36401             <version>
36402  1.0
36403             </version>
36404         </descriptive>
36405         <Type type="DOMString"/>
36406       </DictionaryMember>
36407       <DictionaryMember name="isHighPriority" id="::Messaging::MessageInit::isHighPriority">
36408         <webidl>    boolean isHighPriority;</webidl>
36409         <descriptive>
36410             <brief>
36411  The priority of a message.
36412             </brief>
36413            <description>
36414             <p>
36415 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.
36416             </p>
36417             <p>
36418 This property is used only with email messages.
36419             </p>
36420            </description>
36421             <version>
36422  1.0
36423             </version>
36424         </descriptive>
36425         <Type type="boolean"/>
36426       </DictionaryMember>
36427     </Dictionary>
36428     <Interface name="MessageBody" id="::Messaging::MessageBody">
36429       <webidl>  [NoInterfaceObject] interface MessageBody {
36430
36431     readonly attribute <ref>MessageId</ref> messageId;
36432
36433     readonly attribute boolean loaded;
36434
36435     attribute DOMString plainBody setraises(<ref>WebAPIException</ref>);
36436
36437     attribute DOMString htmlBody setraises(<ref>WebAPIException</ref>);
36438
36439     attribute <ref>MessageAttachment</ref>[] inlineAttachments setraises(<ref>WebAPIException</ref>);
36440   };</webidl>
36441       <descriptive>
36442           <brief>
36443  This interface describes a message body.
36444           </brief>
36445          <description>
36446           <p>
36447 Message body is comprised of a plain text, an HTML, and inline attachments.
36448           </p>
36449          </description>
36450           <version>
36451  1.0
36452           </version>
36453       </descriptive>
36454       <ExtendedAttributeList>
36455         <ExtendedAttribute name="NoInterfaceObject">
36456           <webidl>NoInterfaceObject</webidl>
36457         </ExtendedAttribute>
36458       </ExtendedAttributeList>
36459       <Attribute readonly="readonly" name="messageId" id="::Messaging::MessageBody::messageId">
36460         <webidl>    readonly attribute <ref>MessageId</ref> messageId;</webidl>
36461         <descriptive>
36462             <brief>
36463  The ID of a parent message.
36464             </brief>
36465            <description>
36466             <p>
36467 It holds the ID of the message containing this body.
36468             </p>
36469            </description>
36470             <version>
36471  1.0
36472             </version>
36473         </descriptive>
36474         <Type name="MessageId"/>
36475       </Attribute>
36476       <Attribute readonly="readonly" name="loaded" id="::Messaging::MessageBody::loaded">
36477         <webidl>    readonly attribute boolean loaded;</webidl>
36478         <descriptive>
36479             <brief>
36480  An attribute to indicate whether the message body has been loaded or not.
36481             </brief>
36482            <description>
36483             <p>
36484 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.
36485 The default value is <var>false</var>.
36486             </p>
36487            </description>
36488             <version>
36489  1.0
36490             </version>
36491         </descriptive>
36492         <Type type="boolean"/>
36493       </Attribute>
36494       <Attribute name="plainBody" id="::Messaging::MessageBody::plainBody">
36495         <webidl>    attribute DOMString plainBody setraises(<ref>WebAPIException</ref>);</webidl>
36496         <descriptive>
36497             <brief>
36498  The plain text representation of a message body.
36499             </brief>
36500             <version>
36501  1.0
36502             </version>
36503         </descriptive>
36504         <Type type="DOMString"/>
36505         <SetRaises>
36506           <RaiseException name="WebAPIException"/>
36507         </SetRaises>
36508       </Attribute>
36509       <Attribute name="htmlBody" id="::Messaging::MessageBody::htmlBody">
36510         <webidl>    attribute DOMString htmlBody setraises(<ref>WebAPIException</ref>);</webidl>
36511         <descriptive>
36512             <brief>
36513  The HTML representation of a message body.
36514             </brief>
36515            <description>
36516             <p>
36517 This attribute holds an empty string if the message does not have any HTML body content.
36518 This property is used only with email messages.
36519             </p>
36520            </description>
36521             <version>
36522  1.0
36523             </version>
36524         </descriptive>
36525         <Type type="DOMString"/>
36526         <SetRaises>
36527           <RaiseException name="WebAPIException"/>
36528         </SetRaises>
36529       </Attribute>
36530       <Attribute name="inlineAttachments" id="::Messaging::MessageBody::inlineAttachments">
36531         <webidl>    attribute <ref>MessageAttachment</ref>[] inlineAttachments setraises(<ref>WebAPIException</ref>);</webidl>
36532         <descriptive>
36533             <brief>
36534  The list of the inline attachments.
36535             </brief>
36536            <description>
36537             <p>
36538 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).
36539             </p>
36540             <p>
36541 To indicate where to show an inline attachment within the HTML body, a link of the following format should be provided:
36542 &quot;&lt;img src=&quot;The file name of a inline attachment&quot;>&quot; 
36543 This property is used only with email messages.
36544             </p>
36545            </description>
36546             <version>
36547  1.0
36548             </version>
36549             <Code> // Define the success callback.
36550  function serviceListCB(services) {
36551      if (services.length > 0) {
36552          var msg = new tizen.Message(&quot;messaging.email&quot;);
36553          msg.body.htmlBody = &quot;&lt;html>&lt;body>&lt;img src='myimage.png'>&lt;/body>&lt;/html>&quot;;
36554          msg.body.inlineAttachments = [new tizen.MessageAttachment(&quot;images/myimage.png&quot;)];
36555      }
36556  }
36557
36558  tizen.messaging.getMessageServices(&quot;messaging.email&quot;, serviceListCB);
36559
36560  </Code>
36561         </descriptive>
36562         <Type type="array">
36563           <Type name="MessageAttachment"/>
36564         </Type>
36565         <SetRaises>
36566           <RaiseException name="WebAPIException"/>
36567         </SetRaises>
36568       </Attribute>
36569     </Interface>
36570     <Interface name="MessageAttachment" id="::Messaging::MessageAttachment">
36571       <webidl>  [Constructor(DOMString filePath, optional DOMString? mimeType)]
36572   interface MessageAttachment {
36573     
36574     readonly attribute <ref>MessageAttachmentId</ref>? id;
36575     
36576     readonly attribute <ref>MessageId</ref>? messageId;
36577     
36578     readonly attribute DOMString? mimeType;
36579     
36580     readonly attribute DOMString? filePath;
36581   };</webidl>
36582       <descriptive>
36583           <brief>
36584  This interface defines the content and attributes of a message attachment.
36585           </brief>
36586           <version>
36587  1.0
36588           </version>
36589       </descriptive>
36590       <ExtendedAttributeList>
36591         <ExtendedAttribute name="Constructor">
36592           <webidl>Constructor(DOMString filePath, optional DOMString? mimeType)</webidl>
36593           <ArgumentList>
36594             <Argument name="filePath">
36595               <Type type="DOMString"/>
36596             </Argument>
36597             <Argument optional="optional" name="mimeType">
36598               <Type type="DOMString" nullable="nullable"/>
36599             </Argument>
36600           </ArgumentList>
36601         </ExtendedAttribute>
36602       </ExtendedAttributeList>
36603       <Attribute readonly="readonly" name="id" id="::Messaging::MessageAttachment::id">
36604         <webidl>    readonly attribute <ref>MessageAttachmentId</ref>? id;</webidl>
36605         <descriptive>
36606             <brief>
36607  The ID of an attachment.
36608             </brief>
36609            <description>
36610             <p>
36611 It holds the identifier of the attachment within its parent message.
36612             </p>
36613             <p>
36614 By default, this attribute is set to <var>null</var>.
36615             </p>
36616            </description>
36617             <version>
36618  1.0
36619             </version>
36620         </descriptive>
36621         <Type name="MessageAttachmentId" nullable="nullable"/>
36622       </Attribute>
36623       <Attribute readonly="readonly" name="messageId" id="::Messaging::MessageAttachment::messageId">
36624         <webidl>    readonly attribute <ref>MessageId</ref>? messageId;</webidl>
36625         <descriptive>
36626             <brief>
36627  The ID of a parent message.
36628             </brief>
36629            <description>
36630             <p>
36631 By default, this attribute is set to <var>null</var>.
36632             </p>
36633            </description>
36634             <version>
36635  1.0
36636             </version>
36637         </descriptive>
36638         <Type name="MessageId" nullable="nullable"/>
36639       </Attribute>
36640       <Attribute readonly="readonly" name="mimeType" id="::Messaging::MessageAttachment::mimeType">
36641         <webidl>    readonly attribute DOMString? mimeType;</webidl>
36642         <descriptive>
36643             <brief>
36644  The attachment MIME type.
36645             </brief>
36646            <description>
36647             <p>
36648 It describes the MIME type of an attachment, for example; &quot;text/html&quot;.
36649             </p>
36650             <p>
36651 By default, this attribute is set to <var>null</var>.
36652             </p>
36653            </description>
36654             <version>
36655  1.0
36656             </version>
36657         </descriptive>
36658         <Type type="DOMString" nullable="nullable"/>
36659       </Attribute>
36660       <Attribute readonly="readonly" name="filePath" id="::Messaging::MessageAttachment::filePath">
36661         <webidl>    readonly attribute DOMString? filePath;</webidl>
36662         <descriptive>
36663             <brief>
36664  The location path to a loaded attachment file.
36665             </brief>
36666            <description>
36667             <p>
36668 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.
36669             </p>
36670            </description>
36671             <version>
36672  1.0
36673             </version>
36674         </descriptive>
36675         <Type type="DOMString" nullable="nullable"/>
36676       </Attribute>
36677     </Interface>
36678     <Interface name="Messaging" id="::Messaging::Messaging">
36679       <webidl>  [NoInterfaceObject] interface Messaging {
36680
36681     void getMessageServices(<ref>MessageServiceTag</ref> messageServiceType,
36682                             <ref>MessageServiceArraySuccessCallback</ref> successCallback,
36683                             optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
36684   };</webidl>
36685       <descriptive>
36686           <brief>
36687  This interface retrieves messaging services.
36688           </brief>
36689          <description>
36690           <p>
36691 Fetches all existing messaging services by type or a messaging service of a given type
36692 for concrete account.
36693           </p>
36694          </description>
36695           <version>
36696  1.0
36697           </version>
36698           <Code> // Define the success callback.
36699  function serviceListCB(services) {
36700    if (services.length > 0) {
36701      var msg = new tizen.Message(&quot;messaging.sms&quot;);
36702    }
36703  }
36704
36705  // Define error callback.
36706  function errorCallback(error) {
36707    console.log(&quot;Cannot get messaging service &quot; + error.message);
36708  }
36709
36710  tizen.messaging.getMessageServices(&quot;messaging.sms&quot;, serviceListCB,
36711                                      errorCallback);
36712  </Code>
36713       </descriptive>
36714       <ExtendedAttributeList>
36715         <ExtendedAttribute name="NoInterfaceObject">
36716           <webidl>NoInterfaceObject</webidl>
36717         </ExtendedAttribute>
36718       </ExtendedAttributeList>
36719       <Operation name="getMessageServices" id="::Messaging::Messaging::getMessageServices">
36720         <webidl>    void getMessageServices(<ref>MessageServiceTag</ref> messageServiceType,
36721                             <ref>MessageServiceArraySuccessCallback</ref> successCallback,
36722                             optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
36723         <descriptive>
36724             <brief>
36725  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.
36726             </brief>
36727            <description>
36728             <p>
36729 The errorCallback is launched with these error types:
36730             </p>
36731             <ul>
36732               <li>
36733 InvalidValuesError - If any of the input parameters contain an invalid value, the encoding is not valid or onsuccess is null. 
36734 Please note that to allow developers to ignore errors, errorCallback accepts null as a valid value.              </li>
36735               <li>
36736 UnknownError - In any other error case.              </li>
36737             </ul>
36738            </description>
36739             <version>
36740  1.0
36741             </version>
36742             <Code> // Define the error callback.
36743  function errorCallback(error) {
36744    console.log(&quot;Cannot get messaging service &quot; + error.message);
36745  }
36746
36747  // Define the success callback.
36748  function serviceListCB(services) {
36749    console.log(&quot;Found &quot; + services.length + &quot;email services&quot;);
36750  }
36751
36752  tizen.messaging.getMessageServices(&quot;messaging.email&quot;, serviceListCB,
36753                                       errorCallback);
36754  </Code>
36755         </descriptive>
36756         <Type type="void"/>
36757         <ArgumentList>
36758           <Argument name="messageServiceType">
36759             <descriptive>
36760                 <description><p>
36761  Type of the services to be retrieved.
36762                 </p></description>
36763             </descriptive>
36764             <Type name="MessageServiceTag"/>
36765           </Argument>
36766           <Argument name="successCallback">
36767             <descriptive>
36768                 <description><p>
36769  The method invoked when the services are successfully retrieved.
36770                 </p></description>
36771             </descriptive>
36772             <Type name="MessageServiceArraySuccessCallback"/>
36773           </Argument>
36774           <Argument optional="optional" name="errorCallback">
36775             <descriptive>
36776                 <description><p>
36777  The method invoked when an error occurs.
36778                 </p></description>
36779             </descriptive>
36780             <Type name="ErrorCallback" nullable="nullable"/>
36781           </Argument>
36782         </ArgumentList>
36783         <Raises>
36784           <RaiseException name="WebAPIException">
36785             <descriptive>
36786                 <description><p>
36787  with error type TypeMismatchError, if any input parameter
36788 is not compatible with the expected type for that parameter.
36789                 </p></description>
36790                 <description><p>
36791  with error type NotSupportedError, if this feature is not supported.
36792                 </p></description>
36793             </descriptive>
36794           </RaiseException>
36795         </Raises>
36796       </Operation>
36797     </Interface>
36798     <Interface name="MessageServiceArraySuccessCallback" id="::Messaging::MessageServiceArraySuccessCallback">
36799       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface MessageServiceArraySuccessCallback {
36800
36801     void onsuccess(<ref>MessageService</ref>[] services);
36802
36803   };</webidl>
36804       <descriptive>
36805           <brief>
36806  Defines callback(s) for retrieving message services.
36807           </brief>
36808           <version>
36809  1.0
36810           </version>
36811       </descriptive>
36812       <ExtendedAttributeList>
36813         <ExtendedAttribute name="Callback" value="FunctionOnly">
36814           <webidl>Callback</webidl>
36815         </ExtendedAttribute>
36816         <ExtendedAttribute name="NoInterfaceObject">
36817           <webidl> NoInterfaceObject</webidl>
36818         </ExtendedAttribute>
36819       </ExtendedAttributeList>
36820       <Operation name="onsuccess" id="::Messaging::MessageServiceArraySuccessCallback::onsuccess">
36821         <webidl>    void onsuccess(<ref>MessageService</ref>[] services);</webidl>
36822         <descriptive>
36823             <brief>
36824  Called when finding message services is successful.
36825             </brief>
36826             <version>
36827  1.0
36828             </version>
36829         </descriptive>
36830         <Type type="void"/>
36831         <ArgumentList>
36832           <Argument name="services">
36833             <descriptive>
36834                 <description><p>
36835  Array of available <em>MessageService</em> objects on the device.
36836                 </p></description>
36837             </descriptive>
36838             <Type type="array">
36839               <Type name="MessageService"/>
36840             </Type>
36841           </Argument>
36842         </ArgumentList>
36843       </Operation>
36844     </Interface>
36845     <Interface name="MessageService" id="::Messaging::MessageService">
36846       <webidl>  [NoInterfaceObject] interface MessageService {
36847
36848     readonly attribute DOMString id;
36849
36850     readonly attribute <ref>MessageServiceTag</ref> type;
36851
36852     readonly attribute DOMString name;
36853                     
36854     void sendMessage(<ref>Message</ref> message,
36855                      optional <ref>MessageRecipientsCallback</ref>? successCallback,
36856                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
36857
36858     void loadMessageBody(<ref>Message</ref> message,
36859                          <ref>MessageBodySuccessCallback</ref> successCallback,
36860                          optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
36861
36862     void loadMessageAttachment(<ref>MessageAttachment</ref> attachment,
36863                                <ref>MessageAttachmentSuccessCallback</ref> successCallback,
36864                                optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
36865
36866     long sync(optional <ref>SuccessCallback</ref>? successCallback,
36867               optional <ref>ErrorCallback</ref>? errorCallback,
36868               optional unsigned long? limit) raises(<ref>WebAPIException</ref>);
36869
36870     long syncFolder(<ref>MessageFolder</ref> folder,
36871                     optional <ref>SuccessCallback</ref>? successCallback,
36872                     optional <ref>ErrorCallback</ref>? errorCallback,
36873                     optional unsigned long? limit) raises(<ref>WebAPIException</ref>);
36874
36875     void stopSync(long opId) raises(<ref>WebAPIException</ref>);
36876
36877     readonly attribute <ref>MessageStorage</ref> messageStorage getraises(<ref>WebAPIException</ref>);
36878   };</webidl>
36879       <descriptive>
36880           <brief>
36881  This interface allows a web application to manipulate and send messages and supports the message creating, sending, and fetching capabilities.
36882           </brief>
36883          <description>
36884           <p>
36885 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.
36886           </p>
36887           <p>
36888 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.
36889           </p>
36890           <p>
36891 The interface allows fetching of the message body for a given message using loadMessageBody() method.
36892           </p>
36893          </description>
36894           <version>
36895  1.0
36896           </version>
36897           <Code> // Define the success callback.
36898  function messageSent(recipients) {
36899    console.log(&quot;The SMS has been sent&quot;);
36900  }
36901
36902  // Define the error callback.
36903  function messageFailed(error) {
36904    console.log(&quot;The SMS could not be sent &quot; + error.message);
36905  }
36906
36907  // Define service error callback.
36908  function serviceErrorCB(error) {
36909    console.log(&quot;Cannot get messaging service &quot; + error.message);
36910  }
36911
36912  // Define the success callback.
36913  function serviceListCB(services) {
36914    if (services.length > 0) {
36915      // SMS sending example
36916      var msg = new tizen.Message(&quot;messaging.sms&quot;, {plainBody:&quot;I will arrive in 10 minutes.&quot;,
36917                                   to:[&quot;+34666666666&quot;]});
36918      // Send request
36919      services[0].sendMessage(msg, messageSent, messageFailed);
36920    }
36921  }
36922
36923  tizen.messaging.getMessageServices(&quot;messaging.sms&quot;,
36924                                     serviceListCB,
36925                                     serviceErrorCB);
36926  </Code>
36927       </descriptive>
36928       <ExtendedAttributeList>
36929         <ExtendedAttribute name="NoInterfaceObject">
36930           <webidl>NoInterfaceObject</webidl>
36931         </ExtendedAttribute>
36932       </ExtendedAttributeList>
36933       <Attribute readonly="readonly" name="id" id="::Messaging::MessageService::id">
36934         <webidl>    readonly attribute DOMString id;</webidl>
36935         <descriptive>
36936             <brief>
36937  The unique identifier of this Messaging service. 
36938             </brief>
36939             <version>
36940  1.0.
36941             </version>
36942         </descriptive>
36943         <Type type="DOMString"/>
36944       </Attribute>
36945       <Attribute readonly="readonly" name="type" id="::Messaging::MessageService::type">
36946         <webidl>    readonly attribute <ref>MessageServiceTag</ref> type;</webidl>
36947         <descriptive>
36948             <brief>
36949  The tag supported by this messaging service.
36950             </brief>
36951             <version>
36952  1.0
36953             </version>
36954         </descriptive>
36955         <Type name="MessageServiceTag"/>
36956       </Attribute>
36957       <Attribute readonly="readonly" name="name" id="::Messaging::MessageService::name">
36958         <webidl>    readonly attribute DOMString name;</webidl>
36959         <descriptive>
36960             <brief>
36961  The messaging service name taken from the messaging service
36962             </brief>
36963             <version>
36964  1.0.
36965             </version>
36966         </descriptive>
36967         <Type type="DOMString"/>
36968       </Attribute>
36969       <Operation name="sendMessage" id="::Messaging::MessageService::sendMessage">
36970         <webidl>    void sendMessage(<ref>Message</ref> message,
36971                      optional <ref>MessageRecipientsCallback</ref>? successCallback,
36972                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
36973         <descriptive>
36974             <brief>
36975  Sends a specified message.
36976             </brief>
36977            <description>
36978             <p>
36979 For messaging technologies in which the message is sent individually to every recipient(such as SMS), individual notification must be supported as follows:
36980             </p>
36981             <p>
36982 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.
36983 These error types may be passed, depending on the error conditions:
36984             </p>
36985             <ul>
36986               <li>
36987  NetworkError - If the network connection is not accessible.              </li>
36988               <li>
36989  InvalidValuesError - If any of the input parameters contains an invalid value.              </li>
36990               <li>
36991  UnknownError - If any other error occurs.              </li>
36992             </ul>
36993             <p>
36994 The error message contains the name of the recipient who has failed to receive the sent message.
36995             </p>
36996             <p>
36997 When the operation is fully completed (that is, the implementation has the
36998 result of the send operation for all recipients), the onsuccess() 
36999 method of the successCallback will be invoked with an array of recipients who received 
37000 the sent message, as input parameter.
37001             </p>
37002            </description>
37003             <version>
37004  1.0
37005             </version>
37006             <privilegelevel>
37007  public
37008             </privilegelevel>
37009             <privilege>
37010  http://tizen.org/privilege/messaging.write
37011             </privilege>
37012             <Code> // Define the success callback
37013  function messageSent(recipients) {
37014    for (var i = 0; i &#60; recipients.length; i++) {
37015      console.log(&quot;The SMS has been sent to &quot; + recipients[i]);
37016    }
37017  }
37018
37019  // Define the error callback.
37020  function messageFailed(error) {
37021    console.log(&quot;The SMS could not be sent &quot; + error.message);
37022  }
37023
37024  // Define the success callback.
37025  function serviceListCB(services) {
37026    if (services.length > 0) {
37027      // SMS sending example
37028      var msg = new tizen.Message(&quot;messaging.sms&quot;, {plainBody: &quot;I will arrive in 10 minutes.&quot;,
37029                                  to: [&quot;+34666666666&quot;, &quot;+34888888888&quot;]});
37030      // Send request
37031      services[0].sendMessage(msg, messageSent, messageFailed);
37032    }
37033  }
37034  tizen.messaging.getMessageServices(&quot;messaging.sms&quot;, serviceListCB);
37035  </Code>
37036         </descriptive>
37037         <Type type="void"/>
37038         <ArgumentList>
37039           <Argument name="message">
37040             <descriptive>
37041                 <description><p>
37042  The message to be sent.
37043                 </p></description>
37044             </descriptive>
37045             <Type name="Message"/>
37046           </Argument>
37047           <Argument optional="optional" name="successCallback">
37048             <descriptive>
37049                 <description><p>
37050  The method to be invoked when the message is successfully sent.
37051                 </p></description>
37052             </descriptive>
37053             <Type name="MessageRecipientsCallback" nullable="nullable"/>
37054           </Argument>
37055           <Argument optional="optional" name="errorCallback">
37056             <descriptive>
37057                 <description><p>
37058  The method to be invoked when the sending request has failed.
37059                 </p></description>
37060             </descriptive>
37061             <Type name="ErrorCallback" nullable="nullable"/>
37062           </Argument>
37063         </ArgumentList>
37064         <Raises>
37065           <RaiseException name="WebAPIException">
37066             <descriptive>
37067                 <description><p>
37068  with error type TypeMismatchError, if any input parameter
37069 is not compatible with the expected type for that parameter.
37070                 </p></description>
37071                 <description><p>
37072  with error type SecurityError, if the application does not have the privilege to call this method.
37073                 </p></description>
37074                 <description><p>
37075  with error type NotSupportedError, if this feature is not supported.
37076                 </p></description>
37077             </descriptive>
37078           </RaiseException>
37079         </Raises>
37080       </Operation>
37081       <Operation name="loadMessageBody" id="::Messaging::MessageService::loadMessageBody">
37082         <webidl>    void loadMessageBody(<ref>Message</ref> message,
37083                          <ref>MessageBodySuccessCallback</ref> successCallback,
37084                          optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
37085         <descriptive>
37086             <brief>
37087  Loads the body for a specified message.
37088             </brief>
37089            <description>
37090             <p>
37091 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.
37092 If the message body is already loaded, the onsuccess() method of the successCallback will be invoked immediately.
37093             </p>
37094             <p>
37095 The errorCallback is launched with these error types:
37096             </p>
37097             <ul>
37098               <li>
37099  InvalidValuesError - If any of the input parameters contains an invalid value.              </li>
37100               <li>
37101  UnknownError - If any other error occurs.              </li>
37102             </ul>
37103            </description>
37104             <version>
37105  1.0
37106             </version>
37107             <privilegelevel>
37108  public
37109             </privilegelevel>
37110             <privilege>
37111  http://tizen.org/privilege/messaging.write
37112             </privilege>
37113             <Code> // Assume messaging service is initialized.
37114  var service; 
37115  // Define the success body loaded callback.
37116  function successCallback(message) {
37117    console.log (&quot;body for message: &quot; + message.subject + &quot;from: &quot; + message.from + &quot;loaded.&quot;);
37118  }
37119  // Define error callback.
37120  function errorCallback(error) {
37121    console.log(&quot;Cannot load message body&quot; + error.message);
37122  }
37123
37124  function messageQueryCallback(messages) {
37125    for (var i = 0; i &#60; messages.length; i++) {
37126      var message = messages[i];
37127      if (!message.body.loaded) {
37128         service.loadMessageBody(message, successCallback, errorCallback);
37129      }
37130    }
37131  }
37132
37133  service.messageStorage.findMessages(new tizen.AttributeFilter(&quot;type&quot;, &quot;EXACTLY&quot;, &quot;messaging.email&quot;), messageQueryCallback);
37134  </Code>
37135         </descriptive>
37136         <Type type="void"/>
37137         <ArgumentList>
37138           <Argument name="message">
37139             <descriptive>
37140                 <description><p>
37141  Message with the body to be loaded.
37142                 </p></description>
37143             </descriptive>
37144             <Type name="Message"/>
37145           </Argument>
37146           <Argument name="successCallback">
37147             <descriptive>
37148                 <description><p>
37149  The method to be invoked when the message body is successfully loaded.
37150                 </p></description>
37151             </descriptive>
37152             <Type name="MessageBodySuccessCallback"/>
37153           </Argument>
37154           <Argument optional="optional" name="errorCallback">
37155             <descriptive>
37156                 <description><p>
37157  The method to be invoked when the loading request fails.
37158                 </p></description>
37159             </descriptive>
37160             <Type name="ErrorCallback" nullable="nullable"/>
37161           </Argument>
37162         </ArgumentList>
37163         <Raises>
37164           <RaiseException name="WebAPIException">
37165             <descriptive>
37166                 <description><p>
37167  with error type TypeMismatchError, if any input parameter
37168 is not compatible with the expected type for that parameter.
37169                 </p></description>
37170                 <description><p>
37171  with error type SecurityError, if the application does not have the privilege to call this method.
37172                 </p></description>
37173                 <description><p>
37174  with error type NotSupportedError, if this feature is not supported.
37175                 </p></description>
37176             </descriptive>
37177           </RaiseException>
37178         </Raises>
37179       </Operation>
37180       <Operation name="loadMessageAttachment" id="::Messaging::MessageService::loadMessageAttachment">
37181         <webidl>    void loadMessageAttachment(<ref>MessageAttachment</ref> attachment,
37182                                <ref>MessageAttachmentSuccessCallback</ref> successCallback,
37183                                optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
37184         <descriptive>
37185             <brief>
37186  Loads a specified message attachment.
37187             </brief>
37188            <description>
37189             <p>
37190 This method is used only for email services. If the message attachment is already loaded, the onsuccess() method of the successCallback is invoked immediately.
37191             </p>
37192             <p>
37193 The errorCallback is launched with these error types:
37194             </p>
37195             <ul>
37196               <li>
37197  InvalidValuesError - If any of the input parameters contains an invalid value.              </li>
37198               <li>
37199  UnknownError - If any other error occurs.              </li>
37200             </ul>
37201            </description>
37202             <version>
37203  1.0
37204             </version>
37205             <privilegelevel>
37206  public
37207             </privilegelevel>
37208             <privilege>
37209  http://tizen.org/privilege/messaging.write
37210             </privilege>
37211             <Code> // Assume messaging service is initialized.
37212  var service;
37213  // Define success body loaded callback
37214  function successCallback(attachment) {
37215    console.log(&quot;attachment&quot; + attachment.id + &quot;is loaded to:&quot; + attachment.filePath);
37216  }
37217  // Define error callback
37218  function errorCallback(error) {
37219    console.log(&quot;Cannot load message attachment&quot; + error.message);
37220  }
37221
37222  function messagesFoundCB(messages) {
37223    for (var i = 0; i &#60; messages.length; i++) {
37224      var message = messages[i];
37225      if (!message.attachments[0].loaded) {
37226         service.loadMessageAttachment(message.attachments[0], successCallback, errorCallback);
37227      }
37228    }
37229  }
37230
37231  service.messageStorage.findMessages(new tizen.AttributeFilter(&quot;hasAttachment&quot;, &quot;EXACTLY&quot;, true), messagesFoundCB);
37232  </Code>
37233         </descriptive>
37234         <Type type="void"/>
37235         <ArgumentList>
37236           <Argument name="attachment">
37237             <descriptive>
37238                 <description><p>
37239  Message attachment to be loaded.
37240                 </p></description>
37241             </descriptive>
37242             <Type name="MessageAttachment"/>
37243           </Argument>
37244           <Argument name="successCallback">
37245             <descriptive>
37246                 <description><p>
37247  The method to be invoked when the message attachment is successfully loaded.
37248                 </p></description>
37249             </descriptive>
37250             <Type name="MessageAttachmentSuccessCallback"/>
37251           </Argument>
37252           <Argument optional="optional" name="errorCallback">
37253             <descriptive>
37254                 <description><p>
37255  The method to be invoked when the loading request fails.
37256                 </p></description>
37257             </descriptive>
37258             <Type name="ErrorCallback" nullable="nullable"/>
37259           </Argument>
37260         </ArgumentList>
37261         <Raises>
37262           <RaiseException name="WebAPIException">
37263             <descriptive>
37264                 <description><p>
37265  with error type TypeMismatchError, if any input parameter
37266 is not compatible with the expected type for that parameter.
37267                 </p></description>
37268                 <description><p>
37269  with error type SecurityError, if the application does not have the privilege to call this method.
37270                 </p></description>
37271                 <description><p>
37272  with error type NotSupportedError, if this feature is not supported.
37273                 </p></description>
37274             </descriptive>
37275           </RaiseException>
37276         </Raises>
37277       </Operation>
37278       <Operation name="sync" id="::Messaging::MessageService::sync">
37279         <webidl>    long sync(optional <ref>SuccessCallback</ref>? successCallback,
37280               optional <ref>ErrorCallback</ref>? errorCallback,
37281               optional unsigned long? limit) raises(<ref>WebAPIException</ref>);</webidl>
37282         <descriptive>
37283             <brief>
37284  Synchronizes the service content with an external mail server.
37285             </brief>
37286            <description>
37287             <p>
37288 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.
37289             </p>
37290             <p>
37291 The errorCallback is launched with these error types:
37292             </p>
37293             <ul>
37294               <li>
37295  InvalidValuesError - If any of the input parameters contains an invalid value.              </li>
37296               <li>
37297  AbortError - If the operation has been stopped.              </li>
37298               <li>
37299  UnknownError - If any other error occurs.              </li>
37300             </ul>
37301            </description>
37302             <version>
37303  1.0
37304             </version>
37305             <privilegelevel>
37306  public
37307             </privilegelevel>
37308             <privilege>
37309  http://tizen.org/privilege/messaging.write
37310             </privilege>
37311             <Code> // Define the success callback.
37312  function serviceSynced() {
37313    console.log(&quot;New messages are fetched!&quot;);
37314  }
37315
37316  // Define the success callback.
37317  function servicesListSuccessCB(services) {
37318    services[0].sync(serviceSynced, null, 30);
37319    // Subscribe to MessageStorage notification
37320  }
37321  tizen.messaging.getMessageServices(&quot;messaging.email&quot;, servicesListSuccessCB);
37322  </Code>
37323         </descriptive>
37324         <Type type="long">
37325           <descriptive>
37326               <description><p>
37327  long The identifier which can be used to stop this service operation.
37328               </p></description>
37329           </descriptive>
37330         </Type>
37331         <ArgumentList>
37332           <Argument optional="optional" name="successCallback">
37333             <descriptive>
37334                 <description><p>
37335  The method to be invoked when all the actions are completed successfully.
37336                 </p></description>
37337             </descriptive>
37338             <Type name="SuccessCallback" nullable="nullable"/>
37339           </Argument>
37340           <Argument optional="optional" name="errorCallback">
37341             <descriptive>
37342                 <description><p>
37343  The method to be invoked when the request fails.
37344                 </p></description>
37345             </descriptive>
37346             <Type name="ErrorCallback" nullable="nullable"/>
37347           </Argument>
37348           <Argument optional="optional" name="limit">
37349             <descriptive>
37350                 <description><p>
37351  The maximum amount of messages retrieved within each folder.
37352                 </p></description>
37353             </descriptive>
37354             <Type type="unsigned long" nullable="nullable"/>
37355           </Argument>
37356         </ArgumentList>
37357         <Raises>
37358           <RaiseException name="WebAPIException">
37359             <descriptive>
37360                 <description><p>
37361  with error type TypeMismatchError, if any input parameter
37362 is not compatible with the expected type for that parameter.
37363                 </p></description>
37364                 <description><p>
37365  with error type SecurityError, if the application does not have the privilege to call this method.
37366                 </p></description>
37367                 <description><p>
37368  with error type NotSupportedError, if this feature is not supported.
37369                 </p></description>
37370             </descriptive>
37371           </RaiseException>
37372         </Raises>
37373       </Operation>
37374       <Operation name="syncFolder" id="::Messaging::MessageService::syncFolder">
37375         <webidl>    long syncFolder(<ref>MessageFolder</ref> folder,
37376                     optional <ref>SuccessCallback</ref>? successCallback,
37377                     optional <ref>ErrorCallback</ref>? errorCallback,
37378                     optional unsigned long? limit) raises(<ref>WebAPIException</ref>);</webidl>
37379         <descriptive>
37380             <brief>
37381  Synchronizes the folder content with an external mail server.
37382             </brief>
37383            <description>
37384             <p>
37385 This method is used only for email services. This method performs the following actions:
37386             </p>
37387             <ul>
37388               <li>
37389 Exports local changes within a given folder from device to server.              </li>
37390               <li>
37391 Retrieves the list of available messages from within the given folder.              </li>
37392             </ul>
37393             <p>
37394 Messages that are retrieved from a given folder, even if synchronizable flag for this folder is not set.
37395 The backend is responsible in deciding which data is retrieved for every message. It can be:
37396             </p>
37397             <ul>
37398               <li>
37399 Message header details              </li>
37400               <li>
37401 Whole message body              </li>
37402             </ul>
37403             <p>
37404 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.
37405             </p>
37406             <p>
37407 The errorCallback is launched with these error types:
37408             </p>
37409             <ul>
37410               <li>
37411  InvalidValuesError - If any of the input parameters contains an invalid value.              </li>
37412               <li>
37413  AbortError - If the operation is stopped.              </li>
37414               <li>
37415  UnknownError - If any other error occurs.              </li>
37416             </ul>
37417            </description>
37418             <version>
37419  1.0
37420             </version>
37421             <privilegelevel>
37422  public
37423             </privilegelevel>
37424             <privilege>
37425  http://tizen.org/privilege/messaging.write
37426             </privilege>
37427             <Code> var emailService; // Assume email service is initialized
37428   // Define the error callback.
37429  function errorCallback(err) {
37430    console.log(err.name + &quot; error: &quot; + err.message);
37431  }
37432  function serviceCallback(services) {
37433    emailService = services[0];
37434    var filter = new tizen.AttributeFilter(&quot;serviceId&quot;, &quot;EXACTLY&quot;, emailService.id);
37435
37436    emailService.messageStorage.findFolders(filter, folderQueryCallback);
37437  }
37438   
37439  // Define the success callback.
37440  function folderSynced() {
37441    console.log(&quot;New messages are fetched!&quot;);
37442  }
37443  function folderQueryCallback(folders) {
37444    console.log(folders.length + &quot; folders(s) found!&quot;);
37445    for (var i = 0; i &#60; folders.length; i++) {
37446      emailService.syncFolder (folders[i], folderSynced, null, 30);
37447    }
37448  }
37449  
37450  tizen.messaging.getMessageServices(&quot;messaging.email&quot;, serviceCallback, errorCallback);
37451  </Code>
37452         </descriptive>
37453         <Type type="long">
37454           <descriptive>
37455               <description><p>
37456  long The identifier which can be used to stop this service operation.
37457               </p></description>
37458           </descriptive>
37459         </Type>
37460         <ArgumentList>
37461           <Argument name="folder">
37462             <descriptive>
37463                 <description><p>
37464  The folder to be synchronized.
37465                 </p></description>
37466             </descriptive>
37467             <Type name="MessageFolder"/>
37468           </Argument>
37469           <Argument optional="optional" name="successCallback">
37470             <descriptive>
37471                 <description><p>
37472  The method to be invoked when all actions are completed successfully.
37473                 </p></description>
37474             </descriptive>
37475             <Type name="SuccessCallback" nullable="nullable"/>
37476           </Argument>
37477           <Argument optional="optional" name="errorCallback">
37478             <descriptive>
37479                 <description><p>
37480  The method to be invoked when the request fails.
37481                 </p></description>
37482             </descriptive>
37483             <Type name="ErrorCallback" nullable="nullable"/>
37484           </Argument>
37485           <Argument optional="optional" name="limit">
37486             <descriptive>
37487                 <description><p>
37488  The maximum amount of messages retrieved within a given folder.
37489                 </p></description>
37490             </descriptive>
37491             <Type type="unsigned long" nullable="nullable"/>
37492           </Argument>
37493         </ArgumentList>
37494         <Raises>
37495           <RaiseException name="WebAPIException">
37496             <descriptive>
37497                 <description><p>
37498  with error type TypeMismatchError, if any input parameter
37499 is not compatible with the expected type for that parameter.
37500                 </p></description>
37501                 <description><p>
37502  with error type SecurityError, if the application does not have the privilege to call this method.
37503                 </p></description>
37504                 <description><p>
37505  with error type NotSupportedError, if this feature is not supported.
37506                 </p></description>
37507             </descriptive>
37508           </RaiseException>
37509         </Raises>
37510       </Operation>
37511       <Operation name="stopSync" id="::Messaging::MessageService::stopSync">
37512         <webidl>    void stopSync(long opId) raises(<ref>WebAPIException</ref>);</webidl>
37513         <descriptive>
37514             <brief>
37515  Stops sync() and syncFoler() operation.
37516             </brief>
37517            <description>
37518             <p>
37519 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.
37520             </p>
37521             <p>
37522 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.
37523             </p>
37524            </description>
37525             <version>
37526  1.0
37527             </version>
37528         </descriptive>
37529         <Type type="void"/>
37530         <ArgumentList>
37531           <Argument name="opId">
37532             <descriptive>
37533                 <description><p>
37534   A service operation identifier.
37535                 </p></description>
37536             </descriptive>
37537             <Type type="long"/>
37538           </Argument>
37539         </ArgumentList>
37540         <Raises>
37541           <RaiseException name="WebAPIException">
37542             <descriptive>
37543                 <description><p>
37544  with error type TypeMismatchError, if any input parameter
37545 is not compatible with the expected type for that parameter.
37546                 </p></description>
37547                 <description><p>
37548  with error type InvalidValuesError, if any of the input parameters contains an invalid value.
37549                 </p></description>
37550             </descriptive>
37551           </RaiseException>
37552         </Raises>
37553       </Operation>
37554       <Attribute readonly="readonly" name="messageStorage" id="::Messaging::MessageService::messageStorage">
37555         <webidl>    readonly attribute <ref>MessageStorage</ref> messageStorage getraises(<ref>WebAPIException</ref>);</webidl>
37556         <descriptive>
37557             <brief>
37558  An attribute to access <em>MessageStorage </em>for this messaging service.
37559             </brief>
37560            <description>
37561             <p>
37562 If the backend does not support <em>MessageStorage </em>for this messaging service, a WebAPIException is raised with error type NotSupportedError.
37563             </p>
37564            </description>
37565             <version>
37566  1.0
37567             </version>
37568         </descriptive>
37569         <Type name="MessageStorage"/>
37570         <GetRaises>
37571           <RaiseException name="WebAPIException"/>
37572         </GetRaises>
37573       </Attribute>
37574     </Interface>
37575     <Interface name="MessageRecipientsCallback" id="::Messaging::MessageRecipientsCallback">
37576       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface MessageRecipientsCallback {
37577
37578     void onsuccess(DOMString[] recipients);
37579
37580    };</webidl>
37581       <descriptive>
37582           <brief>
37583  This interface specifies the methods to be called for the sendMessage() operation.
37584           </brief>
37585           <version>
37586  1.0
37587           </version>
37588       </descriptive>
37589       <ExtendedAttributeList>
37590         <ExtendedAttribute name="Callback" value="FunctionOnly">
37591           <webidl>Callback</webidl>
37592         </ExtendedAttribute>
37593         <ExtendedAttribute name="NoInterfaceObject">
37594           <webidl> NoInterfaceObject</webidl>
37595         </ExtendedAttribute>
37596       </ExtendedAttributeList>
37597       <Operation name="onsuccess" id="::Messaging::MessageRecipientsCallback::onsuccess">
37598         <webidl>    void onsuccess(DOMString[] recipients);</webidl>
37599         <descriptive>
37600             <brief>
37601  Called when the message sending is finished.
37602             </brief>
37603             <version>
37604  1.0
37605             </version>
37606         </descriptive>
37607         <Type type="void"/>
37608         <ArgumentList>
37609           <Argument name="recipients">
37610             <descriptive>
37611                 <description><p>
37612  The recipients of the message.
37613                 </p></description>
37614             </descriptive>
37615             <Type type="array">
37616               <Type type="DOMString"/>
37617             </Type>
37618           </Argument>
37619         </ArgumentList>
37620       </Operation>
37621     </Interface>
37622     <Interface name="MessageBodySuccessCallback" id="::Messaging::MessageBodySuccessCallback">
37623       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface MessageBodySuccessCallback {
37624
37625      void onsuccess(<ref>Message</ref> message);
37626   };</webidl>
37627       <descriptive>
37628           <brief>
37629  This interface specifies a success callback function that takes a message as the input argument.
37630 It is used in the loadMessageBody() asynchronous operation.
37631           </brief>
37632           <version>
37633  1.0
37634           </version>
37635       </descriptive>
37636       <ExtendedAttributeList>
37637         <ExtendedAttribute name="Callback" value="FunctionOnly">
37638           <webidl>Callback</webidl>
37639         </ExtendedAttribute>
37640         <ExtendedAttribute name="NoInterfaceObject">
37641           <webidl> NoInterfaceObject</webidl>
37642         </ExtendedAttribute>
37643       </ExtendedAttributeList>
37644       <Operation name="onsuccess" id="::Messaging::MessageBodySuccessCallback::onsuccess">
37645         <webidl>     void onsuccess(<ref>Message</ref> message);</webidl>
37646         <descriptive>
37647             <brief>
37648  Called when the asynchronous query completes successfully.
37649             </brief>
37650             <version>
37651  1.0
37652             </version>
37653         </descriptive>
37654         <Type type="void"/>
37655         <ArgumentList>
37656           <Argument name="message">
37657             <descriptive>
37658                 <description><p>
37659  The message containing the loaded body.
37660                 </p></description>
37661             </descriptive>
37662             <Type name="Message"/>
37663           </Argument>
37664         </ArgumentList>
37665       </Operation>
37666     </Interface>
37667     <Interface name="MessageAttachmentSuccessCallback" id="::Messaging::MessageAttachmentSuccessCallback">
37668       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface MessageAttachmentSuccessCallback {
37669
37670      void onsuccess(<ref>MessageAttachment</ref> attachment);
37671    };</webidl>
37672       <descriptive>
37673           <brief>
37674  This callback interface specifies a success callback function that takes the loaded attachment as the input argument.
37675 It is used in the loadMessageAttachment() asynchronous operation.
37676           </brief>
37677           <version>
37678  1.0
37679           </version>
37680       </descriptive>
37681       <ExtendedAttributeList>
37682         <ExtendedAttribute name="Callback" value="FunctionOnly">
37683           <webidl>Callback</webidl>
37684         </ExtendedAttribute>
37685         <ExtendedAttribute name="NoInterfaceObject">
37686           <webidl> NoInterfaceObject</webidl>
37687         </ExtendedAttribute>
37688       </ExtendedAttributeList>
37689       <Operation name="onsuccess" id="::Messaging::MessageAttachmentSuccessCallback::onsuccess">
37690         <webidl>     void onsuccess(<ref>MessageAttachment</ref> attachment);</webidl>
37691         <descriptive>
37692             <brief>
37693  Called when the asynchronous query completes successfully.
37694             </brief>
37695             <version>
37696  1.0
37697             </version>
37698         </descriptive>
37699         <Type type="void"/>
37700         <ArgumentList>
37701           <Argument name="attachment">
37702             <descriptive>
37703                 <description><p>
37704  The loaded attachment.
37705                 </p></description>
37706             </descriptive>
37707             <Type name="MessageAttachment"/>
37708           </Argument>
37709         </ArgumentList>
37710       </Operation>
37711     </Interface>
37712     <Interface name="MessageStorage" id="::Messaging::MessageStorage">
37713       <webidl>  [NoInterfaceObject] interface MessageStorage {
37714
37715     void addDraftMessage(<ref>Message</ref> message,
37716                          optional <ref>SuccessCallback</ref>? successCallback,
37717                          optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
37718
37719     void findMessages(<ref>AbstractFilter</ref> filter,
37720                       <ref>MessageArraySuccessCallback</ref> successCallback,
37721                       optional <ref>ErrorCallback</ref>? errorCallback,
37722                       optional <ref>SortMode</ref>? sort,
37723                       optional unsigned long? limit,
37724                       optional unsigned long? offset) raises(<ref>WebAPIException</ref>);
37725
37726     void removeMessages(<ref>Message</ref>[] messages,
37727                         optional <ref>SuccessCallback</ref>? successCallback,
37728                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
37729
37730     void updateMessages(<ref>Message</ref>[] messages,
37731                         optional <ref>SuccessCallback</ref>? successCallback,
37732                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
37733
37734     void findConversations(<ref>AbstractFilter</ref> filter,
37735                            <ref>MessageConversationArraySuccessCallback</ref> successCallback,
37736                            optional <ref>ErrorCallback</ref>? errorCallback,
37737                            optional <ref>SortMode</ref>? sort,
37738                            optional unsigned long? limit,
37739                            optional unsigned long? offset) raises(<ref>WebAPIException</ref>);
37740
37741     void removeConversations(<ref>MessageConversation</ref>[] conversations,
37742                              optional <ref>SuccessCallback</ref>? successCallback,
37743                              optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
37744
37745
37746     void findFolders(<ref>AbstractFilter</ref> filter,
37747                      <ref>MessageFolderArraySuccessCallback</ref> successCallback,
37748                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
37749
37750     long addMessagesChangeListener(<ref>MessagesChangeCallback</ref> messagesChangeCallback,
37751                                    optional <ref>AbstractFilter</ref>? filter) raises(<ref>WebAPIException</ref>);
37752
37753     long addConversationsChangeListener(<ref>MessageConversationsChangeCallback</ref> conversationsChangeCallback,
37754                                         optional <ref>AbstractFilter</ref>? filter) raises(<ref>WebAPIException</ref>);
37755
37756     long addFoldersChangeListener(<ref>MessageFoldersChangeCallback</ref> foldersChangeCallback,
37757                                   optional <ref>AbstractFilter</ref>? filter) raises(<ref>WebAPIException</ref>);
37758
37759     void removeChangeListener(long watchId) raises(<ref>WebAPIException</ref>);
37760   };</webidl>
37761       <descriptive>
37762           <brief>
37763  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.
37764           </brief>
37765          <description>
37766           <p>
37767 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.
37768           </p>
37769          </description>
37770           <version>
37771  1.0
37772           </version>
37773       </descriptive>
37774       <ExtendedAttributeList>
37775         <ExtendedAttribute name="NoInterfaceObject">
37776           <webidl>NoInterfaceObject</webidl>
37777         </ExtendedAttribute>
37778       </ExtendedAttributeList>
37779       <Operation name="addDraftMessage" id="::Messaging::MessageStorage::addDraftMessage">
37780         <webidl>    void addDraftMessage(<ref>Message</ref> message,
37781                          optional <ref>SuccessCallback</ref>? successCallback,
37782                          optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
37783         <descriptive>
37784             <brief>
37785  Adds a draft message to <em>MessageStorage</em> and these messages are stored in the Drafts folder.
37786             </brief>
37787            <description>
37788             <p>
37789 The errorCallback is launched with these error types:
37790             </p>
37791             <ul>
37792               <li>
37793  InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
37794               <li>
37795  UnknownError - If any other error occurs.              </li>
37796             </ul>
37797            </description>
37798             <version>
37799  1.0
37800             </version>
37801             <privilegelevel>
37802  public
37803             </privilegelevel>
37804             <privilege>
37805  http://tizen.org/privilege/messaging.write
37806             </privilege>
37807             <Code> // Define success callback
37808  function successCallback() {
37809    console.log(&quot;Draft message added&quot;);
37810  }
37811
37812  // Define error callback
37813  function errorCallback(error) {
37814    console.log(&quot;Cannot add draft message &quot; + error.message);
37815  }
37816
37817  // Define service query success callback.
37818  function serviceListCB(services) {
37819    if (services.length > 0) {
37820      var msg = new tizen.Message(&quot;messaging.sms&quot;, {plainBody: &quot;Tizen draft SMS message.&quot;});
37821      services[0].messageStorage.addDraftMessage(msg,
37822                                                 successCallback,
37823                                                 errorCallback);
37824    }
37825  }
37826  tizen.messaging.getMessageServices(&quot;messaging.sms&quot;, serviceListCB);
37827  </Code>
37828         </descriptive>
37829         <Type type="void"/>
37830         <ArgumentList>
37831           <Argument name="message">
37832             <descriptive>
37833                 <description><p>
37834  The draft message to add to the storage.
37835                 </p></description>
37836             </descriptive>
37837             <Type name="Message"/>
37838           </Argument>
37839           <Argument optional="optional" name="successCallback">
37840             <descriptive>
37841                 <description><p>
37842  The method called when draft messages successfully added.
37843                 </p></description>
37844             </descriptive>
37845             <Type name="SuccessCallback" nullable="nullable"/>
37846           </Argument>
37847           <Argument optional="optional" name="errorCallback">
37848             <descriptive>
37849                 <description><p>
37850  The method called when an error occurs.
37851                 </p></description>
37852             </descriptive>
37853             <Type name="ErrorCallback" nullable="nullable"/>
37854           </Argument>
37855         </ArgumentList>
37856         <Raises>
37857           <RaiseException name="WebAPIException">
37858             <descriptive>
37859                 <description><p>
37860  with error type TypeMismatchError, if any input parameter
37861 is not compatible with the expected type for that parameter or if the method is invoked for an incoming message.
37862                 </p></description>
37863                 <description><p>
37864  with error type SecurityError, if the application does not have the privilege to call this method.
37865                 </p></description>
37866                 <description><p>
37867  with error type NotSupportedError, if this feature is not supported.
37868                 </p></description>
37869             </descriptive>
37870           </RaiseException>
37871         </Raises>
37872       </Operation>
37873       <Operation name="findMessages" id="::Messaging::MessageStorage::findMessages">
37874         <webidl>    void findMessages(<ref>AbstractFilter</ref> filter,
37875                       <ref>MessageArraySuccessCallback</ref> successCallback,
37876                       optional <ref>ErrorCallback</ref>? errorCallback,
37877                       optional <ref>SortMode</ref>? sort,
37878                       optional unsigned long? limit,
37879                       optional unsigned long? offset) raises(<ref>WebAPIException</ref>);</webidl>
37880         <descriptive>
37881             <brief>
37882  Finds messages from <em>MessageStorage</em>.
37883             </brief>
37884            <description>
37885             <p>
37886 The errorCallback is launched with these error types:
37887             </p>
37888             <ul>
37889               <li>
37890  InvalidValuesError - If any of the input parameters contains an invalid value.              </li>
37891               <li>
37892  UnknownError - If any other error occurs.              </li>
37893             </ul>
37894            </description>
37895             <version>
37896  1.0
37897             </version>
37898             <privilegelevel>
37899  public
37900             </privilegelevel>
37901             <privilege>
37902  http://tizen.org/privilege/messaging.read
37903             </privilege>
37904             <Code> var service; // Assume messaging service is initialized
37905  var messageStorage = service.messageStorage; 
37906  function messageArrayCB(messages) {
37907    console.log(messages.length + &quot; message(s) fetched!&quot;);
37908    for (var i = 0; i &#60; messages.length; i++) {
37909      console.log(i + &quot;. message from &quot; + messages[i].from);
37910    }
37911  }
37912
37913  // Define error callback
37914  function errorCallback(error) {
37915    console.log(&quot;Cannot query messages&quot; + error.message);
37916  }
37917
37918  var filter = new tizen.AttributeFilter(&quot;from&quot;, &quot;CONTAINS&quot;, &quot;2593&quot;);
37919  messageStorage.findMessages(filter, messageArrayCB, errorCallback);
37920  </Code>
37921         </descriptive>
37922         <Type type="void"/>
37923         <ArgumentList>
37924           <Argument name="filter">
37925             <descriptive>
37926                 <description><p>
37927  The criteria to be used when filtering.
37928                 </p></description>
37929             </descriptive>
37930             <Type name="AbstractFilter"/>
37931           </Argument>
37932           <Argument name="successCallback">
37933             <descriptive>
37934                 <description><p>
37935  The method called when the invocation ends successfully.
37936                 </p></description>
37937             </descriptive>
37938             <Type name="MessageArraySuccessCallback"/>
37939           </Argument>
37940           <Argument optional="optional" name="errorCallback">
37941             <descriptive>
37942                 <description><p>
37943  The method called when an error occurs.
37944                 </p></description>
37945             </descriptive>
37946             <Type name="ErrorCallback" nullable="nullable"/>
37947           </Argument>
37948           <Argument optional="optional" name="sort">
37949             <descriptive>
37950                 <description><p>
37951  The sorting mode for the query.
37952                 </p></description>
37953             </descriptive>
37954             <Type name="SortMode" nullable="nullable"/>
37955           </Argument>
37956           <Argument optional="optional" name="limit">
37957             <descriptive>
37958                 <description><p>
37959  The maximum limit the query result is set to as specified by the parameter (It is the same meaning as SQL LIMIT).
37960 If <var>0</var>, there is no limit set.
37961                 </p></description>
37962             </descriptive>
37963             <Type type="unsigned long" nullable="nullable"/>
37964           </Argument>
37965           <Argument optional="optional" name="offset">
37966             <descriptive>
37967                 <description><p>
37968  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.
37969                 </p></description>
37970             </descriptive>
37971             <Type type="unsigned long" nullable="nullable"/>
37972           </Argument>
37973         </ArgumentList>
37974         <Raises>
37975           <RaiseException name="WebAPIException">
37976             <descriptive>
37977                 <description><p>
37978  with error type TypeMismatchError, if any input parameter
37979 is not compatible with the expected type for that parameter.
37980                 </p></description>
37981                 <description><p>
37982  with error type SecurityError, if the application does not have the privilege to call this method.
37983                 </p></description>
37984                 <description><p>
37985  with error type NotSupportedError, if this feature is not supported.
37986                 </p></description>
37987             </descriptive>
37988           </RaiseException>
37989         </Raises>
37990       </Operation>
37991       <Operation name="removeMessages" id="::Messaging::MessageStorage::removeMessages">
37992         <webidl>    void removeMessages(<ref>Message</ref>[] messages,
37993                         optional <ref>SuccessCallback</ref>? successCallback,
37994                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
37995         <descriptive>
37996             <brief>
37997  Removes messages from <em>MessageStorage</em>.
37998             </brief>
37999            <description>
38000             <p>
38001 The errorCallback is launched with these error types:
38002             </p>
38003             <ul>
38004               <li>
38005 InvalidValuesError - If any of the input parameters contain an invalid value              </li>
38006               <li>
38007  UnknownError - If any other error occurs.              </li>
38008             </ul>
38009            </description>
38010             <version>
38011  1.0
38012             </version>
38013             <privilegelevel>
38014  public
38015             </privilegelevel>
38016             <privilege>
38017  http://tizen.org/privilege/messaging.write
38018             </privilege>
38019             <Code> // Define success callback
38020  var service; // Assume messaging service is initialized
38021  var messageStorage = service.messageStorage; 
38022  function successCallback() {
38023    console.log(&quot;Messages were deleted&quot;);
38024  }
38025
38026  // Define error callback
38027  function errorCallback(error) {
38028    console.log(&quot;Cannot delete messages &quot; + error.message);
38029  }
38030
38031  function messageArrayCB(messages) {
38032    if (messages.length > 0) {
38033      messageStorage.removeMessages(messages, successCallback, errorCallback);
38034    } else {
38035      console.log(&quot;No messages found&quot;);
38036    }
38037  }
38038
38039  var filter = new tizen.AttributeFilter(&quot;from&quot;, &quot;CONTAINS&quot;, &quot;2593&quot;);
38040  messageStorage.findMessages(filter, messageArrayCB);
38041  </Code>
38042         </descriptive>
38043         <Type type="void"/>
38044         <ArgumentList>
38045           <Argument name="messages">
38046             <descriptive>
38047                 <description><p>
38048  An array of messages to delete.
38049                 </p></description>
38050             </descriptive>
38051             <Type type="array">
38052               <Type name="Message"/>
38053             </Type>
38054           </Argument>
38055           <Argument optional="optional" name="successCallback">
38056             <descriptive>
38057                 <description><p>
38058  The method called when messages are successfully deleted.
38059                 </p></description>
38060             </descriptive>
38061             <Type name="SuccessCallback" nullable="nullable"/>
38062           </Argument>
38063           <Argument optional="optional" name="errorCallback">
38064             <descriptive>
38065                 <description><p>
38066  The method called when an error occurs.
38067                 </p></description>
38068             </descriptive>
38069             <Type name="ErrorCallback" nullable="nullable"/>
38070           </Argument>
38071         </ArgumentList>
38072         <Raises>
38073           <RaiseException name="WebAPIException">
38074             <descriptive>
38075                 <description><p>
38076  with error type TypeMismatchError, if any input parameter
38077 is not compatible with the expected type for that parameter.
38078                 </p></description>
38079                 <description><p>
38080  with error type SecurityError, if the application does not have the privilege to call this method.
38081                 </p></description>
38082                 <description><p>
38083  with error type NotSupportedError, if this feature is not supported.
38084                 </p></description>
38085             </descriptive>
38086           </RaiseException>
38087         </Raises>
38088       </Operation>
38089       <Operation name="updateMessages" id="::Messaging::MessageStorage::updateMessages">
38090         <webidl>    void updateMessages(<ref>Message</ref>[] messages,
38091                         optional <ref>SuccessCallback</ref>? successCallback,
38092                         optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
38093         <descriptive>
38094             <brief>
38095  Updates messages in <em>MessageStorage</em>.
38096             </brief>
38097            <description>
38098             <p>
38099 The backend must check whether the required updates can be applied and invoke the errorCallback method, if they cannot be checked.
38100 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.
38101             </p>
38102             <p>
38103 The errorCallback is launched with these error types:
38104             </p>
38105             <ul>
38106               <li>
38107  InvalidValuesError - If any of the input parameters contains an invalid value.              </li>
38108               <li>
38109  UnknownError - If any other error occurs.              </li>
38110             </ul>
38111            </description>
38112             <version>
38113  1.0
38114             </version>
38115             <privilegelevel>
38116  public
38117             </privilegelevel>
38118             <privilege>
38119  http://tizen.org/privilege/messaging.write
38120             </privilege>
38121             <Code> var service; // Assume messaging service is initialized
38122  var messageStorage = service.messageStorage; 
38123
38124  // Define success callback
38125  function successCallback() {
38126    console.log(&quot;Messages were updated&quot;);
38127  }
38128
38129  // Define error callback
38130  function errorCallback(error) {
38131    console.log(&quot;Cannot update messages &quot; + error.message);
38132  }
38133
38134  function messageArrayCB(messages) {
38135    if (messages.length > 0) {
38136      messages[0].isRead = true;
38137      messageStorage.updateMessages([messages[0]], successCallback, errorCallback);
38138    } else {
38139      console.log(&quot;No messages found&quot;);
38140    }
38141  }
38142
38143  var filter = new tizen.AttributeFilter('isRead', 'EXACTLY', false);
38144  messageStorage.findMessages(filter, messageArrayCB);
38145
38146  </Code>
38147         </descriptive>
38148         <Type type="void"/>
38149         <ArgumentList>
38150           <Argument name="messages">
38151             <descriptive>
38152                 <description><p>
38153  An array to update
38154                 </p></description>
38155             </descriptive>
38156             <Type type="array">
38157               <Type name="Message"/>
38158             </Type>
38159           </Argument>
38160           <Argument optional="optional" name="successCallback">
38161             <descriptive>
38162                 <description><p>
38163  The method called when messages are successfully updated.
38164                 </p></description>
38165             </descriptive>
38166             <Type name="SuccessCallback" nullable="nullable"/>
38167           </Argument>
38168           <Argument optional="optional" name="errorCallback">
38169             <descriptive>
38170                 <description><p>
38171  The method called when an error occurs.
38172                 </p></description>
38173             </descriptive>
38174             <Type name="ErrorCallback" nullable="nullable"/>
38175           </Argument>
38176         </ArgumentList>
38177         <Raises>
38178           <RaiseException name="WebAPIException">
38179             <descriptive>
38180                 <description><p>
38181  with error type TypeMismatchError, if any input parameter
38182 is not compatible with the expected type for that parameter.
38183                 </p></description>
38184                 <description><p>
38185  with error type SecurityError, if the application does not have the privilege to call this method.
38186                 </p></description>
38187                 <description><p>
38188  with error type NotSupportedError, if this feature is not supported.
38189                 </p></description>
38190             </descriptive>
38191           </RaiseException>
38192         </Raises>
38193       </Operation>
38194       <Operation name="findConversations" id="::Messaging::MessageStorage::findConversations">
38195         <webidl>    void findConversations(<ref>AbstractFilter</ref> filter,
38196                            <ref>MessageConversationArraySuccessCallback</ref> successCallback,
38197                            optional <ref>ErrorCallback</ref>? errorCallback,
38198                            optional <ref>SortMode</ref>? sort,
38199                            optional unsigned long? limit,
38200                            optional unsigned long? offset) raises(<ref>WebAPIException</ref>);</webidl>
38201         <descriptive>
38202             <brief>
38203  Finds conversations from <em>MessageStorage</em>.
38204             </brief>
38205            <description>
38206             <p>
38207 The errorCallback is launched with these error types:
38208             </p>
38209             <ul>
38210               <li>
38211  InvalidValuesError - If any of the input parameters contains an invalid value.              </li>
38212               <li>
38213  UnknownError - If any other error occurs.              </li>
38214             </ul>
38215            </description>
38216             <version>
38217  1.0
38218             </version>
38219             <privilegelevel>
38220  public
38221             </privilegelevel>
38222             <privilege>
38223  http://tizen.org/privilege/messaging.read
38224             </privilege>
38225             <Code> var service; // Assume messaging service is initialized
38226  var messageStorage = service.messageStorage; 
38227  function conversationsArrayCB(conversations) {
38228    console.log(conversations.length + &quot; conversation(s) found!&quot;);
38229    for (var i = 0; i &#60; conversations.length; i++) {
38230      console.log(i + &quot;. conversation preview &quot; + conversations[i].preview);
38231    }
38232  }
38233
38234  // Define error callback.
38235  function errorCallback(error) {
38236    console.log(&quot;Cannot query conversations&quot; + error.message);
38237  }
38238
38239  var filter = new tizen.AttributeFilter('from', 'CONTAINS', '2593');
38240  messageStorage.findConversations(filter, conversationsArrayCB, errorCallback);
38241  </Code>
38242         </descriptive>
38243         <Type type="void"/>
38244         <ArgumentList>
38245           <Argument name="filter">
38246             <descriptive>
38247                 <description><p>
38248  The criteria to be used when filtering.
38249                 </p></description>
38250             </descriptive>
38251             <Type name="AbstractFilter"/>
38252           </Argument>
38253           <Argument name="successCallback">
38254             <descriptive>
38255                 <description><p>
38256  The method called when the invocation ends successfully.
38257                 </p></description>
38258             </descriptive>
38259             <Type name="MessageConversationArraySuccessCallback"/>
38260           </Argument>
38261           <Argument optional="optional" name="errorCallback">
38262             <descriptive>
38263                 <description><p>
38264  The method called when an error occurs.
38265                 </p></description>
38266             </descriptive>
38267             <Type name="ErrorCallback" nullable="nullable"/>
38268           </Argument>
38269           <Argument optional="optional" name="sort">
38270             <descriptive>
38271                 <description><p>
38272  The sorting rules for the query.
38273                 </p></description>
38274             </descriptive>
38275             <Type name="SortMode" nullable="nullable"/>
38276           </Argument>
38277           <Argument optional="optional" name="limit">
38278             <descriptive>
38279                 <description><p>
38280  The maximum limit the query result is set to as specified by the parameter (It is the same meaning as SQL LIMIT).
38281 If set to <var>0</var>, there is no limit set.
38282                 </p></description>
38283             </descriptive>
38284             <Type type="unsigned long" nullable="nullable"/>
38285           </Argument>
38286           <Argument optional="optional" name="offset">
38287             <descriptive>
38288                 <description><p>
38289  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.
38290                 </p></description>
38291             </descriptive>
38292             <Type type="unsigned long" nullable="nullable"/>
38293           </Argument>
38294         </ArgumentList>
38295         <Raises>
38296           <RaiseException name="WebAPIException">
38297             <descriptive>
38298                 <description><p>
38299  with error type TypeMismatchError, if any input parameter
38300 is not compatible with the expected type for that parameter.
38301                 </p></description>
38302                 <description><p>
38303  with error type SecurityError, if the application does not have the privilege to call this method.
38304                 </p></description>
38305                 <description><p>
38306  with error type NotSupportedError, if this feature is not supported.
38307                 </p></description>
38308             </descriptive>
38309           </RaiseException>
38310         </Raises>
38311       </Operation>
38312       <Operation name="removeConversations" id="::Messaging::MessageStorage::removeConversations">
38313         <webidl>    void removeConversations(<ref>MessageConversation</ref>[] conversations,
38314                              optional <ref>SuccessCallback</ref>? successCallback,
38315                              optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
38316         <descriptive>
38317             <brief>
38318  Removes conversations from <em>MessageStorage</em>.
38319             </brief>
38320            <description>
38321             <p>
38322 The errorCallback is launched with these error types:
38323             </p>
38324             <ul>
38325               <li>
38326  InvalidValuesError - If any of the input parameters contains an invalid value.              </li>
38327               <li>
38328  UnknownError - If any other error occurs.              </li>
38329             </ul>
38330            </description>
38331             <version>
38332  1.0
38333             </version>
38334             <privilegelevel>
38335  public
38336             </privilegelevel>
38337             <privilege>
38338  http://tizen.org/privilege/messaging.write
38339             </privilege>
38340             <Code> var service; // Assume messaging service is initialized
38341  var messageStorage = service.messageStorage; 
38342  // Define success callback.
38343  function successCallback() {
38344    console.log(&quot;Conversations deleted&quot;);
38345  }
38346
38347  // Define error callback.
38348  function errorCallback(error) {
38349    console.log(&quot;Cannot delete conversations &quot; + error.message);
38350  }
38351
38352  function conversationsArrayCB(conversations) {
38353    if (conversations.length > 0) {
38354      messageStorage.removeConversations(conversations, successCallback,
38355                                                        errorCallback);
38356    } else {
38357      console.log(&quot;No conversations found&quot;);
38358    }
38359    console.log(&quot;Deleted &quot; + conversations.length + &quot; conversation(s)&quot;);
38360  }
38361
38362  // Define error callback.
38363  function queryErrorCB(error) {
38364    console.log(&quot;Cannot query conversations&quot; + error.message);
38365  }
38366
38367  var filter = new tizen.AttributeFilter('from', 'CONTAINS', '2593');
38368  messageStorage.findConversations(filter, conversationsArrayCB,
38369                                           queryErrorCB);
38370  </Code>
38371         </descriptive>
38372         <Type type="void"/>
38373         <ArgumentList>
38374           <Argument name="conversations">
38375             <descriptive>
38376                 <description><p>
38377  An array of conversations to delete.
38378                 </p></description>
38379             </descriptive>
38380             <Type type="array">
38381               <Type name="MessageConversation"/>
38382             </Type>
38383           </Argument>
38384           <Argument optional="optional" name="successCallback">
38385             <descriptive>
38386                 <description><p>
38387  The method called when conversations are successfully deleted.
38388                 </p></description>
38389             </descriptive>
38390             <Type name="SuccessCallback" nullable="nullable"/>
38391           </Argument>
38392           <Argument optional="optional" name="errorCallback">
38393             <descriptive>
38394                 <description><p>
38395  The method called when an error occurs.
38396                 </p></description>
38397             </descriptive>
38398             <Type name="ErrorCallback" nullable="nullable"/>
38399           </Argument>
38400         </ArgumentList>
38401         <Raises>
38402           <RaiseException name="WebAPIException">
38403             <descriptive>
38404                 <description><p>
38405  with error type TypeMismatchError, if any input parameter
38406 is not compatible with the expected type for that parameter.
38407                 </p></description>
38408                 <description><p>
38409  with error type SecurityError, if the application does not have the privilege to call this method.
38410                 </p></description>
38411                 <description><p>
38412  with error type NotSupportedError, if this feature is not supported.
38413                 </p></description>
38414             </descriptive>
38415           </RaiseException>
38416         </Raises>
38417       </Operation>
38418       <Operation name="findFolders" id="::Messaging::MessageStorage::findFolders">
38419         <webidl>    void findFolders(<ref>AbstractFilter</ref> filter,
38420                      <ref>MessageFolderArraySuccessCallback</ref> successCallback,
38421                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
38422         <descriptive>
38423             <brief>
38424  Queries folders from MessageStorage.
38425             </brief>
38426            <description>
38427             <p>
38428 The errorCallback is launched with these error types:
38429             </p>
38430             <ul>
38431               <li>
38432  InvalidValuesError: If any of the input parameters contains an invalid value.              </li>
38433               <li>
38434  UnknownError: In any other error case.               </li>
38435             </ul>
38436            </description>
38437             <version>
38438  1.0
38439             </version>
38440             <privilegelevel>
38441  public
38442             </privilegelevel>
38443             <privilege>
38444  http://tizen.org/privilege/messaging.read
38445             </privilege>
38446             <Code> var service; // Assume messaging service is initialized
38447  var messageStorage = service.messageStorage; 
38448  function folderArrayCB(folders) {
38449    console.log(folders.length + &quot; folders(s) found!&quot;);
38450    for (var i = 0; i &#60; folders.length; i++) {
38451      console.log(i + &quot;, folder: &quot; + folders[i].name);
38452    }
38453  }
38454  var filter = new tizen.AttributeFilter(&quot;serviceId&quot;, &quot;EXACTLY&quot;, service.id);
38455  messageStorage.findFolders(filter, folderArrayCB);
38456  </Code>
38457         </descriptive>
38458         <Type type="void"/>
38459         <ArgumentList>
38460           <Argument name="filter">
38461             <descriptive>
38462                 <description><p>
38463  The criteria used when filtering.
38464                 </p></description>
38465             </descriptive>
38466             <Type name="AbstractFilter"/>
38467           </Argument>
38468           <Argument name="successCallback">
38469             <descriptive>
38470                 <description><p>
38471  The method called when the invocation ends successfully.
38472                 </p></description>
38473             </descriptive>
38474             <Type name="MessageFolderArraySuccessCallback"/>
38475           </Argument>
38476           <Argument optional="optional" name="errorCallback">
38477             <descriptive>
38478                 <description><p>
38479  The method called when an error occurs.
38480                 </p></description>
38481             </descriptive>
38482             <Type name="ErrorCallback" nullable="nullable"/>
38483           </Argument>
38484         </ArgumentList>
38485         <Raises>
38486           <RaiseException name="WebAPIException">
38487             <descriptive>
38488                 <description><p>
38489  with error type TypeMismatchError, if any input parameter
38490 is not compatible with the expected type for that parameter.
38491                 </p></description>
38492                 <description><p>
38493  with error type SecurityError, if the application does not have the privilege to call this method.
38494                 </p></description>
38495                 <description><p>
38496  with error type NotSupportedError, if this feature is not supported.
38497                 </p></description>
38498             </descriptive>
38499           </RaiseException>
38500         </Raises>
38501       </Operation>
38502       <Operation name="addMessagesChangeListener" id="::Messaging::MessageStorage::addMessagesChangeListener">
38503         <webidl>    long addMessagesChangeListener(<ref>MessagesChangeCallback</ref> messagesChangeCallback,
38504                                    optional <ref>AbstractFilter</ref>? filter) raises(<ref>WebAPIException</ref>);</webidl>
38505         <descriptive>
38506             <brief>
38507  Adds a listener to subscribe to notification for MessageStorage changes.
38508             </brief>
38509            <description>
38510             <p>
38511 The errorCallback is launched with these error types:
38512             </p>
38513             <ul>
38514               <li>
38515  InvalidValuesError - If any of the input parameters contains an invalid value.              </li>
38516               <li>
38517  UnknownError - If any other error occurs.               </li>
38518             </ul>
38519            </description>
38520             <version>
38521  1.0
38522             </version>
38523             <privilegelevel>
38524  public
38525             </privilegelevel>
38526             <privilege>
38527  http://tizen.org/privilege/messaging.read
38528             </privilege>
38529             <Code> var service; // Assume messaging service is initialized
38530  var messageStorage = service.messageStorage; 
38531  var messageChangeCallback = {
38532        messagesupdated: function(messages) {
38533          console.log(messages.length + &quot; message(s) updated&quot;);},
38534        messagesadded: function(messages) {
38535          console.log(messages.length + &quot; message(s) added&quot;);},
38536        messagesremoved: function(messages) {
38537          console.log(messages.length + &quot; message(s) removed&quot;);}
38538  };
38539
38540  messageStorage.addMessagesChangeListener(messageChangeCallback);
38541  </Code>
38542         </descriptive>
38543         <Type type="long">
38544           <descriptive>
38545               <description><p>
38546  long The subscription identifier.
38547               </p></description>
38548           </descriptive>
38549         </Type>
38550         <ArgumentList>
38551           <Argument name="messagesChangeCallback">
38552             <descriptive>
38553                 <description><p>
38554  Callback that is called when the MessageStorage is changed.
38555                 </p></description>
38556             </descriptive>
38557             <Type name="MessagesChangeCallback"/>
38558           </Argument>
38559           <Argument optional="optional" name="filter">
38560             <descriptive>
38561                 <description><p>
38562  The criteria to be used when filtering.
38563                 </p></description>
38564             </descriptive>
38565             <Type name="AbstractFilter" nullable="nullable"/>
38566           </Argument>
38567         </ArgumentList>
38568         <Raises>
38569           <RaiseException name="WebAPIException">
38570             <descriptive>
38571                 <description><p>
38572  with error type TypeMismatchError, if any input parameter
38573 is not compatible with the expected type for that parameter.
38574                 </p></description>
38575                 <description><p>
38576  with error type SecurityError, if the application does not have the privilege to call this method.
38577                 </p></description>
38578                 <description><p>
38579  with error type NotSupportedError, if this feature is not supported.
38580                 </p></description>
38581             </descriptive>
38582           </RaiseException>
38583         </Raises>
38584       </Operation>
38585       <Operation name="addConversationsChangeListener" id="::Messaging::MessageStorage::addConversationsChangeListener">
38586         <webidl>    long addConversationsChangeListener(<ref>MessageConversationsChangeCallback</ref> conversationsChangeCallback,
38587                                         optional <ref>AbstractFilter</ref>? filter) raises(<ref>WebAPIException</ref>);</webidl>
38588         <descriptive>
38589             <brief>
38590  Adds a listener to subscribe to notifications for MessageConversation changes.
38591             </brief>
38592            <description>
38593             <p>
38594 The errorCallback is launched with these error types:
38595             </p>
38596             <ul>
38597               <li>
38598  InvalidValuesError - If any of the input parameters contains an invalid value.              </li>
38599               <li>
38600  UnknownError - If any other error occurs.              </li>
38601             </ul>
38602            </description>
38603             <version>
38604  1.0
38605             </version>
38606             <privilegelevel>
38607  public
38608             </privilegelevel>
38609             <privilege>
38610  http://tizen.org/privilege/messaging.read
38611             </privilege>
38612             <Code> var service; // Assume messaging service is initialized
38613  var messageStorage = service.messageStorage; 
38614  var conversationChangeCB = {
38615        conversationsupdated: function(conversations) {
38616          console.log(conversations.length + &quot; conversations(s) updated&quot;);},
38617        conversationsadded: function(conversations) {
38618          console.log(conversations.length + &quot; conversations(s) added&quot;);},
38619        conversationsremoved: function(conversations) {
38620          console.log(conversations.length + &quot; conversations(s) removed&quot;);}
38621  };
38622
38623  messageStorage.addConversationsChangeListener(conversationChangeCB);
38624  </Code>
38625         </descriptive>
38626         <Type type="long">
38627           <descriptive>
38628               <description><p>
38629  long The subscription identifier.
38630               </p></description>
38631           </descriptive>
38632         </Type>
38633         <ArgumentList>
38634           <Argument name="conversationsChangeCallback">
38635             <descriptive>
38636                 <description><p>
38637  Callback that is called when the MessageStorage is changed.
38638                 </p></description>
38639             </descriptive>
38640             <Type name="MessageConversationsChangeCallback"/>
38641           </Argument>
38642           <Argument optional="optional" name="filter">
38643             <descriptive>
38644                 <description><p>
38645  The criteria to be used when filtering.
38646                 </p></description>
38647             </descriptive>
38648             <Type name="AbstractFilter" nullable="nullable"/>
38649           </Argument>
38650         </ArgumentList>
38651         <Raises>
38652           <RaiseException name="WebAPIException">
38653             <descriptive>
38654                 <description><p>
38655  with error type TypeMismatchError, if any input parameter
38656 is not compatible with the expected type for that parameter.
38657                 </p></description>
38658                 <description><p>
38659  with error type SecurityError, if the application does not have the privilege to call this method.
38660                 </p></description>
38661                 <description><p>
38662  with error type NotSupportedError, if this feature is not supported.
38663                 </p></description>
38664             </descriptive>
38665           </RaiseException>
38666         </Raises>
38667       </Operation>
38668       <Operation name="addFoldersChangeListener" id="::Messaging::MessageStorage::addFoldersChangeListener">
38669         <webidl>    long addFoldersChangeListener(<ref>MessageFoldersChangeCallback</ref> foldersChangeCallback,
38670                                   optional <ref>AbstractFilter</ref>? filter) raises(<ref>WebAPIException</ref>);</webidl>
38671         <descriptive>
38672             <brief>
38673  Adds a listener to subscribe to notifications for MessageFolder changes.
38674             </brief>
38675            <description>
38676             <p>
38677 The errorCallback is launched with these error types:
38678             </p>
38679             <ul>
38680               <li>
38681  InvalidValuesError - If any of the input parameters contains an invalid value.              </li>
38682               <li>
38683  UnknownError - If any other error occurs.              </li>
38684             </ul>
38685            </description>
38686             <version>
38687  1.0
38688             </version>
38689             <privilegelevel>
38690  public
38691             </privilegelevel>
38692             <privilege>
38693  http://tizen.org/privilege/messaging.read
38694             </privilege>
38695             <Code> var service; // Assume messaging service is initialized
38696  var messageStorage = service.messageStorage; 
38697  var folderChangeCB = {
38698        foldersupdated: function(folders) {
38699          console.log(folders.length + &quot; folders(s) updated&quot;);},
38700        foldersadded: function(folders) {
38701          console.log(folders.length + &quot; folders(s) added&quot;);},
38702        foldersremoved: function(folders) {
38703          console.log(folders.length + &quot; folders(s) removed&quot;);}
38704  };
38705
38706  messageStorage.addFoldersChangeListener(folderChangeCB);
38707  </Code>
38708         </descriptive>
38709         <Type type="long">
38710           <descriptive>
38711               <description><p>
38712  long The subscription identifier.
38713               </p></description>
38714           </descriptive>
38715         </Type>
38716         <ArgumentList>
38717           <Argument name="foldersChangeCallback">
38718             <descriptive>
38719                 <description><p>
38720  Callback that is called when the MessageStorage is changed.
38721                 </p></description>
38722             </descriptive>
38723             <Type name="MessageFoldersChangeCallback"/>
38724           </Argument>
38725           <Argument optional="optional" name="filter">
38726             <descriptive>
38727                 <description><p>
38728  The criteria to be used when filtering.
38729                 </p></description>
38730             </descriptive>
38731             <Type name="AbstractFilter" nullable="nullable"/>
38732           </Argument>
38733         </ArgumentList>
38734         <Raises>
38735           <RaiseException name="WebAPIException">
38736             <descriptive>
38737                 <description><p>
38738  with error type TypeMismatchError, if any input parameter
38739 is not compatible with the expected type for that parameter.
38740                 </p></description>
38741                 <description><p>
38742  with error type SecurityError, if the application does not have the privilege to call this method.
38743                 </p></description>
38744                 <description><p>
38745  with error type NotSupportedError, if this feature is not supported.
38746                 </p></description>
38747             </descriptive>
38748           </RaiseException>
38749         </Raises>
38750       </Operation>
38751       <Operation name="removeChangeListener" id="::Messaging::MessageStorage::removeChangeListener">
38752         <webidl>    void removeChangeListener(long watchId) raises(<ref>WebAPIException</ref>);</webidl>
38753         <descriptive>
38754             <brief>
38755  Removes a listener to unsubscribe from receiving message notifications.
38756             </brief>
38757            <description>
38758             <p>
38759 The errorCallback is launched with these error types:
38760             </p>
38761             <ul>
38762               <li>
38763  InvalidValuesError - If any of the input parameters contains an invalid value.              </li>
38764               <li>
38765  UnknownError - If any other error occurs.              </li>
38766             </ul>
38767             <p>
38768 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.
38769 If the <em>subscriptionId argument does not correspond to a valid subscription, the method will return without any further action.
38770 </em>            </p>
38771            </description>
38772             <version>
38773  1.0
38774             </version>
38775             <privilegelevel>
38776  public
38777             </privilegelevel>
38778             <privilege>
38779  http://tizen.org/privilege/messaging.read
38780             </privilege>
38781             <Code> var watchId;
38782  var service; // Assume messaging service is initialized
38783  var messageStorage = service.messageStorage; 
38784  var folderChangeCB = {
38785        foldersupdated: function(folders) {
38786          console.log(folders.length + &quot; folders(s) updated. Cancel watching.&quot;);
38787          messageStorage.removeChangeListener(watchId); },
38788        foldersadded: function(folders) {
38789          console.log(folders.length + &quot; folders(s) added. Cancel watching.&quot;);
38790          messageStorage.removeChangeListener(watchId); },
38791        foldersremoved: function(folders) {
38792          console.log(folders.length + &quot; folders(s) removed. Cancel watching.&quot;);
38793          messageStorage.removeChangeListener(watchId);}
38794  };
38795
38796  watchId = messageStorage.addFoldersChangeListener(folderChangeCB);
38797
38798  </Code>
38799         </descriptive>
38800         <Type type="void"/>
38801         <ArgumentList>
38802           <Argument name="watchId">
38803             <descriptive>
38804                 <description><p>
38805  An identifier of the subscription returned by addMessagesChangeListener, addConversationsChangeListener or
38806 addFoldersChangeListener methods.
38807                 </p></description>
38808             </descriptive>
38809             <Type type="long"/>
38810           </Argument>
38811         </ArgumentList>
38812         <Raises>
38813           <RaiseException name="WebAPIException">
38814             <descriptive>
38815                 <description><p>
38816  with error type TypeMismatchError, if any input parameter
38817 is not compatible with the expected type for that parameter.
38818                 </p></description>
38819                 <description><p>
38820  with error type SecurityError, if the application does not have the privilege to call this method.
38821                 </p></description>
38822                 <description><p>
38823  with error type NotSupportedError, if this feature is not supported.
38824                 </p></description>
38825             </descriptive>
38826           </RaiseException>
38827         </Raises>
38828       </Operation>
38829     </Interface>
38830     <Interface name="MessageArraySuccessCallback" id="::Messaging::MessageArraySuccessCallback">
38831       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface MessageArraySuccessCallback {
38832
38833     void onsuccess(<ref>Message</ref>[] messages);
38834   };</webidl>
38835       <descriptive>
38836           <brief>
38837  findMessages specific success callback.
38838           </brief>
38839          <description>
38840           <p>
38841 This callback interface specifies a success callback function,
38842 taking a list of messages that satisfy the filtering criteria as the input argument.
38843 It is used in the findMessages asynchronous operation.
38844           </p>
38845          </description>
38846           <version>
38847  1.0
38848           </version>
38849       </descriptive>
38850       <ExtendedAttributeList>
38851         <ExtendedAttribute name="Callback" value="FunctionOnly">
38852           <webidl>Callback</webidl>
38853         </ExtendedAttribute>
38854         <ExtendedAttribute name="NoInterfaceObject">
38855           <webidl> NoInterfaceObject</webidl>
38856         </ExtendedAttribute>
38857       </ExtendedAttributeList>
38858       <Operation name="onsuccess" id="::Messaging::MessageArraySuccessCallback::onsuccess">
38859         <webidl>    void onsuccess(<ref>Message</ref>[] messages);</webidl>
38860         <descriptive>
38861             <brief>
38862  Method invoked when an asynchronous query completes successfully.
38863             </brief>
38864             <version>
38865  1.0
38866             </version>
38867         </descriptive>
38868         <Type type="void"/>
38869         <ArgumentList>
38870           <Argument name="messages">
38871             <descriptive>
38872                 <description><p>
38873  Array of messages that satisfy the query.
38874                 </p></description>
38875             </descriptive>
38876             <Type type="array">
38877               <Type name="Message"/>
38878             </Type>
38879           </Argument>
38880         </ArgumentList>
38881       </Operation>
38882     </Interface>
38883     <Interface name="MessageConversationArraySuccessCallback" id="::Messaging::MessageConversationArraySuccessCallback">
38884       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface MessageConversationArraySuccessCallback {
38885
38886     void onsuccess(<ref>MessageConversation</ref>[] conversations);
38887   };</webidl>
38888       <descriptive>
38889           <brief>
38890  findConversations specific success callback.
38891           </brief>
38892          <description>
38893           <p>
38894 This callback interface specifies a success callback function,
38895 taking a list of conversations that satisfy the filtering criteria as the input argument.
38896 It is used in the findConversations asynchronous operation.
38897           </p>
38898          </description>
38899           <version>
38900  1.0
38901           </version>
38902       </descriptive>
38903       <ExtendedAttributeList>
38904         <ExtendedAttribute name="Callback" value="FunctionOnly">
38905           <webidl>Callback</webidl>
38906         </ExtendedAttribute>
38907         <ExtendedAttribute name="NoInterfaceObject">
38908           <webidl> NoInterfaceObject</webidl>
38909         </ExtendedAttribute>
38910       </ExtendedAttributeList>
38911       <Operation name="onsuccess" id="::Messaging::MessageConversationArraySuccessCallback::onsuccess">
38912         <webidl>    void onsuccess(<ref>MessageConversation</ref>[] conversations);</webidl>
38913         <descriptive>
38914             <brief>
38915  Method invoked when an asynchronous query completes successfully.
38916             </brief>
38917             <version>
38918  1.0
38919             </version>
38920         </descriptive>
38921         <Type type="void"/>
38922         <ArgumentList>
38923           <Argument name="conversations">
38924             <descriptive>
38925                 <description><p>
38926  Array of conversations that satisfy the query.
38927                 </p></description>
38928             </descriptive>
38929             <Type type="array">
38930               <Type name="MessageConversation"/>
38931             </Type>
38932           </Argument>
38933         </ArgumentList>
38934       </Operation>
38935     </Interface>
38936     <Interface name="MessageFolderArraySuccessCallback" id="::Messaging::MessageFolderArraySuccessCallback">
38937       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface MessageFolderArraySuccessCallback {
38938
38939     void onsuccess(<ref>MessageFolder</ref>[] folders);
38940   };</webidl>
38941       <descriptive>
38942           <brief>
38943  findFolders specific success callback.
38944           </brief>
38945          <description>
38946           <p>
38947 This callback interface specifies a success callback function,
38948 taking a list of folders that satisfy the filtering criteria as the input argument.
38949 It is used in the findFolders asynchronous operation.
38950           </p>
38951          </description>
38952           <version>
38953  1.0
38954           </version>
38955       </descriptive>
38956       <ExtendedAttributeList>
38957         <ExtendedAttribute name="Callback" value="FunctionOnly">
38958           <webidl>Callback</webidl>
38959         </ExtendedAttribute>
38960         <ExtendedAttribute name="NoInterfaceObject">
38961           <webidl> NoInterfaceObject</webidl>
38962         </ExtendedAttribute>
38963       </ExtendedAttributeList>
38964       <Operation name="onsuccess" id="::Messaging::MessageFolderArraySuccessCallback::onsuccess">
38965         <webidl>    void onsuccess(<ref>MessageFolder</ref>[] folders);</webidl>
38966         <descriptive>
38967             <brief>
38968  Method invoked when an asynchronous query completes successfully.
38969             </brief>
38970             <version>
38971  1.0
38972             </version>
38973         </descriptive>
38974         <Type type="void"/>
38975         <ArgumentList>
38976           <Argument name="folders">
38977             <descriptive>
38978                 <description><p>
38979  Array of folders that satisfy the query.
38980                 </p></description>
38981             </descriptive>
38982             <Type type="array">
38983               <Type name="MessageFolder"/>
38984             </Type>
38985           </Argument>
38986         </ArgumentList>
38987       </Operation>
38988     </Interface>
38989     <Interface name="MessagesChangeCallback" id="::Messaging::MessagesChangeCallback">
38990       <webidl>  [Callback, NoInterfaceObject] interface MessagesChangeCallback {
38991
38992     void messagesadded(<ref>Message</ref>[] addedMessages);
38993
38994     void messagesupdated(<ref>Message</ref>[] updatedMessages);
38995
38996     void messagesremoved(<ref>Message</ref>[] removedMessages);
38997   };</webidl>
38998       <descriptive>
38999           <brief>
39000  watchMessagesChanges callback.
39001           </brief>
39002          <description>
39003           <p>
39004 This callback interface specifies a callback as a set of functions that will be
39005 invoked when messages from MessageStorage change. Each function takes a list of messages as the input argument.
39006           </p>
39007          </description>
39008           <version>
39009  1.0
39010           </version>
39011       </descriptive>
39012       <ExtendedAttributeList>
39013         <ExtendedAttribute name="Callback">
39014           <webidl>Callback</webidl>
39015         </ExtendedAttribute>
39016         <ExtendedAttribute name="NoInterfaceObject">
39017           <webidl> NoInterfaceObject</webidl>
39018         </ExtendedAttribute>
39019       </ExtendedAttributeList>
39020       <Operation name="messagesadded" id="::Messaging::MessagesChangeCallback::messagesadded">
39021         <webidl>    void messagesadded(<ref>Message</ref>[] addedMessages);</webidl>
39022         <descriptive>
39023             <brief>
39024  Method invoked when messages are added to the MessageStorage.
39025             </brief>
39026             <version>
39027  1.0
39028             </version>
39029         </descriptive>
39030         <Type type="void"/>
39031         <ArgumentList>
39032           <Argument name="addedMessages">
39033             <descriptive>
39034                 <description><p>
39035  Array of added messages.
39036                 </p></description>
39037             </descriptive>
39038             <Type type="array">
39039               <Type name="Message"/>
39040             </Type>
39041           </Argument>
39042         </ArgumentList>
39043       </Operation>
39044       <Operation name="messagesupdated" id="::Messaging::MessagesChangeCallback::messagesupdated">
39045         <webidl>    void messagesupdated(<ref>Message</ref>[] updatedMessages);</webidl>
39046         <descriptive>
39047             <brief>
39048  Method invoked when messages are updated in MessageStorage.
39049             </brief>
39050             <version>
39051  1.0
39052             </version>
39053         </descriptive>
39054         <Type type="void"/>
39055         <ArgumentList>
39056           <Argument name="updatedMessages">
39057             <descriptive>
39058                 <description><p>
39059  Array of updated messages.
39060                 </p></description>
39061             </descriptive>
39062             <Type type="array">
39063               <Type name="Message"/>
39064             </Type>
39065           </Argument>
39066         </ArgumentList>
39067       </Operation>
39068       <Operation name="messagesremoved" id="::Messaging::MessagesChangeCallback::messagesremoved">
39069         <webidl>    void messagesremoved(<ref>Message</ref>[] removedMessages);</webidl>
39070         <descriptive>
39071             <brief>
39072  Method invoked when messages are removed from MessageStorage.
39073             </brief>
39074             <version>
39075  1.0
39076             </version>
39077         </descriptive>
39078         <Type type="void"/>
39079         <ArgumentList>
39080           <Argument name="removedMessages">
39081             <descriptive>
39082                 <description><p>
39083  Array of removed messages. It contains only MessageId attribute.
39084                 </p></description>
39085             </descriptive>
39086             <Type type="array">
39087               <Type name="Message"/>
39088             </Type>
39089           </Argument>
39090         </ArgumentList>
39091       </Operation>
39092     </Interface>
39093     <Interface name="MessageConversationsChangeCallback" id="::Messaging::MessageConversationsChangeCallback">
39094       <webidl>  [Callback, NoInterfaceObject] interface MessageConversationsChangeCallback {
39095
39096     void conversationsadded(<ref>MessageConversation</ref>[] addedConversations);
39097
39098     void conversationsupdated(<ref>MessageConversation</ref>[] updatedConversations);
39099
39100     void conversationsremoved(<ref>MessageConversation</ref>[] removedConversations);
39101   };</webidl>
39102       <descriptive>
39103           <brief>
39104  watchConversationsChanges callback.
39105           </brief>
39106          <description>
39107           <p>
39108 This callback interface specifies a callback as a set of functions that will be
39109 invoked when conversations from MessageStorage change. Each function takes a list of conversations as the input argument.
39110           </p>
39111          </description>
39112           <version>
39113  1.0
39114           </version>
39115       </descriptive>
39116       <ExtendedAttributeList>
39117         <ExtendedAttribute name="Callback">
39118           <webidl>Callback</webidl>
39119         </ExtendedAttribute>
39120         <ExtendedAttribute name="NoInterfaceObject">
39121           <webidl> NoInterfaceObject</webidl>
39122         </ExtendedAttribute>
39123       </ExtendedAttributeList>
39124       <Operation name="conversationsadded" id="::Messaging::MessageConversationsChangeCallback::conversationsadded">
39125         <webidl>    void conversationsadded(<ref>MessageConversation</ref>[] addedConversations);</webidl>
39126         <descriptive>
39127             <brief>
39128  Method invoked when conversations are added to MessageStorage.
39129             </brief>
39130             <version>
39131  1.0
39132             </version>
39133         </descriptive>
39134         <Type type="void"/>
39135         <ArgumentList>
39136           <Argument name="addedConversations">
39137             <descriptive>
39138                 <description><p>
39139  Array of added conversations.
39140                 </p></description>
39141             </descriptive>
39142             <Type type="array">
39143               <Type name="MessageConversation"/>
39144             </Type>
39145           </Argument>
39146         </ArgumentList>
39147       </Operation>
39148       <Operation name="conversationsupdated" id="::Messaging::MessageConversationsChangeCallback::conversationsupdated">
39149         <webidl>    void conversationsupdated(<ref>MessageConversation</ref>[] updatedConversations);</webidl>
39150         <descriptive>
39151             <brief>
39152  Method invoked when conversations are updated in MessageStorage.
39153             </brief>
39154             <version>
39155  1.0
39156             </version>
39157         </descriptive>
39158         <Type type="void"/>
39159         <ArgumentList>
39160           <Argument name="updatedConversations">
39161             <descriptive>
39162                 <description><p>
39163  Array of updated conversations.
39164                 </p></description>
39165             </descriptive>
39166             <Type type="array">
39167               <Type name="MessageConversation"/>
39168             </Type>
39169           </Argument>
39170         </ArgumentList>
39171       </Operation>
39172       <Operation name="conversationsremoved" id="::Messaging::MessageConversationsChangeCallback::conversationsremoved">
39173         <webidl>    void conversationsremoved(<ref>MessageConversation</ref>[] removedConversations);</webidl>
39174         <descriptive>
39175             <brief>
39176  Method invoked when conversations are removed from MessageStorage.
39177             </brief>
39178             <version>
39179  1.0
39180             </version>
39181         </descriptive>
39182         <Type type="void"/>
39183         <ArgumentList>
39184           <Argument name="removedConversations">
39185             <descriptive>
39186                 <description><p>
39187  Array of removed conversations. It contains only MessageConvId attribute.
39188                 </p></description>
39189             </descriptive>
39190             <Type type="array">
39191               <Type name="MessageConversation"/>
39192             </Type>
39193           </Argument>
39194         </ArgumentList>
39195       </Operation>
39196     </Interface>
39197     <Interface name="MessageFoldersChangeCallback" id="::Messaging::MessageFoldersChangeCallback">
39198       <webidl>  [Callback, NoInterfaceObject] interface MessageFoldersChangeCallback {
39199  
39200     void foldersadded(<ref>MessageFolder</ref>[] addedFolders);
39201
39202     void foldersupdated(<ref>MessageFolder</ref>[] updatedFolders);
39203
39204     void foldersremoved(<ref>MessageFolder</ref>[] removedFolders);
39205   };</webidl>
39206       <descriptive>
39207           <brief>
39208  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.
39209           </brief>
39210           <version>
39211  1.0
39212           </version>
39213       </descriptive>
39214       <ExtendedAttributeList>
39215         <ExtendedAttribute name="Callback">
39216           <webidl>Callback</webidl>
39217         </ExtendedAttribute>
39218         <ExtendedAttribute name="NoInterfaceObject">
39219           <webidl> NoInterfaceObject</webidl>
39220         </ExtendedAttribute>
39221       </ExtendedAttributeList>
39222       <Operation name="foldersadded" id="::Messaging::MessageFoldersChangeCallback::foldersadded">
39223         <webidl>    void foldersadded(<ref>MessageFolder</ref>[] addedFolders);</webidl>
39224         <descriptive>
39225             <brief>
39226  Called when folders are added to <em>MessageStorage</em>.
39227             </brief>
39228             <version>
39229  1.0
39230             </version>
39231         </descriptive>
39232         <Type type="void"/>
39233         <ArgumentList>
39234           <Argument name="addedFolders">
39235             <descriptive>
39236                 <description><p>
39237  An array of added folders.
39238                 </p></description>
39239             </descriptive>
39240             <Type type="array">
39241               <Type name="MessageFolder"/>
39242             </Type>
39243           </Argument>
39244         </ArgumentList>
39245       </Operation>
39246       <Operation name="foldersupdated" id="::Messaging::MessageFoldersChangeCallback::foldersupdated">
39247         <webidl>    void foldersupdated(<ref>MessageFolder</ref>[] updatedFolders);</webidl>
39248         <descriptive>
39249             <brief>
39250  Called when folders are updated in <em>MessageStorage</em>.
39251             </brief>
39252             <version>
39253  1.0
39254             </version>
39255         </descriptive>
39256         <Type type="void"/>
39257         <ArgumentList>
39258           <Argument name="updatedFolders">
39259             <descriptive>
39260                 <description><p>
39261  An array of updated folders.
39262                 </p></description>
39263             </descriptive>
39264             <Type type="array">
39265               <Type name="MessageFolder"/>
39266             </Type>
39267           </Argument>
39268         </ArgumentList>
39269       </Operation>
39270       <Operation name="foldersremoved" id="::Messaging::MessageFoldersChangeCallback::foldersremoved">
39271         <webidl>    void foldersremoved(<ref>MessageFolder</ref>[] removedFolders);</webidl>
39272         <descriptive>
39273             <brief>
39274  Called when folders are removed from <em>MessageStorage</em>.
39275             </brief>
39276             <version>
39277  1.0
39278             </version>
39279         </descriptive>
39280         <Type type="void"/>
39281         <ArgumentList>
39282           <Argument name="removedFolders">
39283             <descriptive>
39284                 <description><p>
39285  Array of removed folders. It contains only MessageFolderId attribute.
39286                 </p></description>
39287             </descriptive>
39288             <Type type="array">
39289               <Type name="MessageFolder"/>
39290             </Type>
39291           </Argument>
39292         </ArgumentList>
39293       </Operation>
39294     </Interface>
39295     <Interface name="MessageConversation" id="::Messaging::MessageConversation">
39296       <webidl>  [NoInterfaceObject] interface MessageConversation {
39297
39298     readonly attribute <ref>MessageConvId</ref> id;
39299
39300     readonly attribute <ref>MessageServiceTag</ref> type;
39301
39302     readonly attribute Date timestamp;
39303      
39304     readonly attribute unsigned long messageCount;
39305
39306     readonly attribute unsigned long unreadMessages;
39307
39308     readonly attribute DOMString preview;
39309
39310     readonly attribute DOMString subject;
39311
39312     readonly attribute boolean isRead;
39313
39314     readonly attribute DOMString from;
39315
39316     readonly attribute DOMString[] to;
39317
39318     readonly attribute DOMString[] cc;
39319
39320     readonly attribute DOMString[] bcc;
39321
39322     readonly attribute <ref>MessageId</ref> lastMessageId;
39323   };</webidl>
39324       <descriptive>
39325           <brief>
39326  This interface defines the message conversation (also known as the thread of messages).
39327           </brief>
39328          <description>
39329           <p>
39330 This interface allows a web application to get the set of properties linked to a conversation.
39331 This interface provides only read-only attributes.
39332           </p>
39333          </description>
39334           <version>
39335  1.0
39336           </version>
39337       </descriptive>
39338       <ExtendedAttributeList>
39339         <ExtendedAttribute name="NoInterfaceObject">
39340           <webidl>NoInterfaceObject</webidl>
39341         </ExtendedAttribute>
39342       </ExtendedAttributeList>
39343       <Attribute readonly="readonly" name="id" id="::Messaging::MessageConversation::id">
39344         <webidl>    readonly attribute <ref>MessageConvId</ref> id;</webidl>
39345         <descriptive>
39346             <brief>
39347  The conversation identifier.
39348             </brief>
39349            <description>
39350             <p>
39351 The ID is locally unique and persistent property, assigned by the device or the Web runtime (WRT).
39352             </p>
39353            </description>
39354             <version>
39355  1.0
39356             </version>
39357         </descriptive>
39358         <Type name="MessageConvId"/>
39359       </Attribute>
39360       <Attribute readonly="readonly" name="type" id="::Messaging::MessageConversation::type">
39361         <webidl>    readonly attribute <ref>MessageServiceTag</ref> type;</webidl>
39362         <descriptive>
39363             <brief>
39364  The type of a given conversation.
39365             </brief>
39366             <version>
39367  1.0
39368             </version>
39369         </descriptive>
39370         <Type name="MessageServiceTag"/>
39371       </Attribute>
39372       <Attribute readonly="readonly" name="timestamp" id="::Messaging::MessageConversation::timestamp">
39373         <webidl>    readonly attribute Date timestamp;</webidl>
39374         <descriptive>
39375             <brief>
39376  The timestamp of the latest message in a conversation.
39377             </brief>
39378            <description>
39379             <p>
39380 This property is set up by the device or the Web runtime environment.
39381             </p>
39382            </description>
39383             <version>
39384  1.0
39385             </version>
39386         </descriptive>
39387         <Type type="Date"/>
39388       </Attribute>
39389       <Attribute readonly="readonly" name="messageCount" id="::Messaging::MessageConversation::messageCount">
39390         <webidl>    readonly attribute unsigned long messageCount;</webidl>
39391         <descriptive>
39392             <brief>
39393  The count of messages in a conversation.
39394             </brief>
39395             <version>
39396  1.0
39397             </version>
39398         </descriptive>
39399         <Type type="unsigned long"/>
39400       </Attribute>
39401       <Attribute readonly="readonly" name="unreadMessages" id="::Messaging::MessageConversation::unreadMessages">
39402         <webidl>    readonly attribute unsigned long unreadMessages;</webidl>
39403         <descriptive>
39404             <brief>
39405  The count of unread messages in a conversation.
39406             </brief>
39407             <version>
39408  1.0
39409             </version>
39410         </descriptive>
39411         <Type type="unsigned long"/>
39412       </Attribute>
39413       <Attribute readonly="readonly" name="preview" id="::Messaging::MessageConversation::preview">
39414         <webidl>    readonly attribute DOMString preview;</webidl>
39415         <descriptive>
39416             <brief>
39417  A preview of the latest message in a conversation.
39418             </brief>
39419             <version>
39420  1.0
39421             </version>
39422         </descriptive>
39423         <Type type="DOMString"/>
39424       </Attribute>
39425       <Attribute readonly="readonly" name="subject" id="::Messaging::MessageConversation::subject">
39426         <webidl>    readonly attribute DOMString subject;</webidl>
39427         <descriptive>
39428             <brief>
39429  The subject of a conversation (applicable for group chats, MMS, email).
39430             </brief>
39431             <version>
39432  1.0
39433             </version>
39434         </descriptive>
39435         <Type type="DOMString"/>
39436       </Attribute>
39437       <Attribute readonly="readonly" name="isRead" id="::Messaging::MessageConversation::isRead">
39438         <webidl>    readonly attribute boolean isRead;</webidl>
39439         <descriptive>
39440             <brief>
39441  An attribute to indicate whether the latest message in a conversation has been read or not.
39442             </brief>
39443            <description>
39444             <p>
39445 This property is set to <var>true</var> if the message has been read, else it is set to <var>false</var>.
39446             </p>
39447            </description>
39448             <version>
39449  1.0
39450             </version>
39451         </descriptive>
39452         <Type type="boolean"/>
39453       </Attribute>
39454       <Attribute readonly="readonly" name="from" id="::Messaging::MessageConversation::from">
39455         <webidl>    readonly attribute DOMString from;</webidl>
39456         <descriptive>
39457             <brief>
39458  The source address (or source phone number) of the latest message in the conversation.
39459             </brief>
39460            <description>
39461             <p>
39462 This property is set up by the device or the Web runtime environment.
39463             </p>
39464            </description>
39465             <version>
39466  1.0
39467             </version>
39468         </descriptive>
39469         <Type type="DOMString"/>
39470       </Attribute>
39471       <Attribute readonly="readonly" name="to" id="::Messaging::MessageConversation::to">
39472         <webidl>    readonly attribute DOMString[] to;</webidl>
39473         <descriptive>
39474             <brief>
39475  The destination of the latest message in a conversation.
39476             </brief>
39477             <version>
39478  1.0
39479             </version>
39480         </descriptive>
39481         <Type type="array">
39482           <Type type="DOMString"/>
39483         </Type>
39484       </Attribute>
39485       <Attribute readonly="readonly" name="cc" id="::Messaging::MessageConversation::cc">
39486         <webidl>    readonly attribute DOMString[] cc;</webidl>
39487         <descriptive>
39488             <brief>
39489  The carbon copy (cc) address of the latest message in a conversation.
39490             </brief>
39491            <description>
39492             <p>
39493 This property is used only for email.
39494             </p>
39495            </description>
39496             <version>
39497  1.0
39498             </version>
39499         </descriptive>
39500         <Type type="array">
39501           <Type type="DOMString"/>
39502         </Type>
39503       </Attribute>
39504       <Attribute readonly="readonly" name="bcc" id="::Messaging::MessageConversation::bcc">
39505         <webidl>    readonly attribute DOMString[] bcc;</webidl>
39506         <descriptive>
39507             <brief>
39508  The blind carbon copy (bcc) address of the latest message in a conversation.
39509             </brief>
39510            <description>
39511             <p>
39512 This property is used only for email.
39513             </p>
39514            </description>
39515             <version>
39516  1.0
39517             </version>
39518         </descriptive>
39519         <Type type="array">
39520           <Type type="DOMString"/>
39521         </Type>
39522       </Attribute>
39523       <Attribute readonly="readonly" name="lastMessageId" id="::Messaging::MessageConversation::lastMessageId">
39524         <webidl>    readonly attribute <ref>MessageId</ref> lastMessageId;</webidl>
39525         <descriptive>
39526             <brief>
39527  The identifier of a latest message in a conversation.
39528             </brief>
39529            <description>
39530             <p>
39531 This property is set up by the device or the Web runtime environment.
39532             </p>
39533            </description>
39534             <version>
39535  1.0
39536             </version>
39537         </descriptive>
39538         <Type name="MessageId"/>
39539       </Attribute>
39540     </Interface>
39541     <Interface name="MessageFolder" id="::Messaging::MessageFolder">
39542       <webidl>  [NoInterfaceObject] interface MessageFolder {
39543
39544     readonly attribute <ref>MessageFolderId</ref> id;
39545
39546     readonly attribute <ref>MessageFolderId</ref> parentId;
39547
39548     readonly attribute DOMString serviceId;
39549
39550     readonly attribute <ref>MessageServiceTag</ref> contentType;
39551
39552     attribute DOMString name setraises(<ref>WebAPIException</ref>);
39553
39554     readonly attribute DOMString path;
39555
39556     readonly attribute DOMString type;
39557
39558     attribute boolean synchronizable setraises(<ref>WebAPIException</ref>);
39559   };</webidl>
39560       <descriptive>
39561           <brief>
39562  This interface defines the email folder.
39563           </brief>
39564          <description>
39565           <p>
39566 This interface allows a web application to get the set of properties that are linked to an email folder.
39567           </p>
39568           <p>
39569 The concept of folders is present in several email protocols, such as IMAP, Mail For Exchange.
39570           </p>
39571           <p>
39572 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.
39573           </p>
39574          </description>
39575           <version>
39576  1.0
39577           </version>
39578       </descriptive>
39579       <ExtendedAttributeList>
39580         <ExtendedAttribute name="NoInterfaceObject">
39581           <webidl>NoInterfaceObject</webidl>
39582         </ExtendedAttribute>
39583       </ExtendedAttributeList>
39584       <Attribute readonly="readonly" name="id" id="::Messaging::MessageFolder::id">
39585         <webidl>    readonly attribute <ref>MessageFolderId</ref> id;</webidl>
39586         <descriptive>
39587             <brief>
39588  The folder identifier.
39589 The ID is locally unique and persistent property, assigned by the device or the Web runtime (WRT).
39590             </brief>
39591             <version>
39592  1.0
39593             </version>
39594         </descriptive>
39595         <Type name="MessageFolderId"/>
39596       </Attribute>
39597       <Attribute readonly="readonly" name="parentId" id="::Messaging::MessageFolder::parentId">
39598         <webidl>    readonly attribute <ref>MessageFolderId</ref> parentId;</webidl>
39599         <descriptive>
39600             <brief>
39601  The identifier for the parent folder of  a specified folder.
39602             </brief>
39603            <description>
39604             <p>
39605 If this folder is a root folder, the parent folder ID is <var>null</var>.
39606             </p>
39607            </description>
39608             <version>
39609  1.0
39610             </version>
39611         </descriptive>
39612         <Type name="MessageFolderId"/>
39613       </Attribute>
39614       <Attribute readonly="readonly" name="serviceId" id="::Messaging::MessageFolder::serviceId">
39615         <webidl>    readonly attribute DOMString serviceId;</webidl>
39616         <descriptive>
39617             <brief>
39618  The identifier of the service to which a specified folder belongs.
39619             </brief>
39620             <version>
39621  1.0.
39622             </version>
39623         </descriptive>
39624         <Type type="DOMString"/>
39625       </Attribute>
39626       <Attribute readonly="readonly" name="contentType" id="::Messaging::MessageFolder::contentType">
39627         <webidl>    readonly attribute <ref>MessageServiceTag</ref> contentType;</webidl>
39628         <descriptive>
39629             <brief>
39630  The type of the messages contained within a folder.
39631             </brief>
39632             <version>
39633  1.0
39634             </version>
39635         </descriptive>
39636         <Type name="MessageServiceTag"/>
39637       </Attribute>
39638       <Attribute name="name" id="::Messaging::MessageFolder::name">
39639         <webidl>    attribute DOMString name setraises(<ref>WebAPIException</ref>);</webidl>
39640         <descriptive>
39641             <brief>
39642  The visible name of a folder.
39643             </brief>
39644            <description>
39645             <p>
39646 Can be modified. By default, it contains the folder name from the server.
39647             </p>
39648             <p>
39649 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.
39650             </p>
39651            </description>
39652             <version>
39653  1.0
39654             </version>
39655         </descriptive>
39656         <Type type="DOMString"/>
39657         <SetRaises>
39658           <RaiseException name="WebAPIException"/>
39659         </SetRaises>
39660       </Attribute>
39661       <Attribute readonly="readonly" name="path" id="::Messaging::MessageFolder::path">
39662         <webidl>    readonly attribute DOMString path;</webidl>
39663         <descriptive>
39664             <brief>
39665  The whole path of a remote folder on the server.
39666             </brief>
39667            <description>
39668             <p>
39669 If the current Messaging service does not support remote folders on the server,
39670 this attribute will be empty.
39671             </p>
39672            </description>
39673             <version>
39674  1.0
39675             </version>
39676         </descriptive>
39677         <Type type="DOMString"/>
39678       </Attribute>
39679       <Attribute readonly="readonly" name="type" id="::Messaging::MessageFolder::type">
39680         <webidl>    readonly attribute DOMString type;</webidl>
39681         <descriptive>
39682             <brief>
39683  The standard type of a folder.
39684             </brief>
39685            <description>
39686             <p>
39687 It can be one of the following values:
39688             </p>
39689             <ul>
39690               <li>
39691 INBOX              </li>
39692               <li>
39693 OUTBOX              </li>
39694               <li>
39695 DRAFTS              </li>
39696               <li>
39697 SENTBOX              </li>
39698             </ul>
39699             <p>
39700 If this folder is not a standard folder, an empty value must be returned.
39701             </p>
39702             <p>
39703 This property is unique for each type within one Messaging service.
39704             </p>
39705            </description>
39706             <version>
39707  1.0
39708             </version>
39709         </descriptive>
39710         <Type type="DOMString"/>
39711       </Attribute>
39712       <Attribute name="synchronizable" id="::Messaging::MessageFolder::synchronizable">
39713         <webidl>    attribute boolean synchronizable setraises(<ref>WebAPIException</ref>);</webidl>
39714         <descriptive>
39715             <brief>
39716  An attribute to show whether this folder should be synchronized or not.
39717             </brief>
39718            <description>
39719             <p>
39720 This attribute affects the behavior of the MessageService.sync() method.
39721             </p>
39722            </description>
39723             <version>
39724  1.0
39725             </version>
39726         </descriptive>
39727         <Type type="boolean"/>
39728         <SetRaises>
39729           <RaiseException name="WebAPIException"/>
39730         </SetRaises>
39731       </Attribute>
39732     </Interface>
39733   </Module>
39734   <Module name="NetworkBearerSelection" id="::NetworkBearerSelection">
39735     <webidl>module NetworkBearerSelection {
39736
39737   enum NetworkType { &quot;CELLULAR&quot;, &quot;UNKNOWN&quot; };
39738
39739   [NoInterfaceObject] interface NetworkBearerSelectionObject {
39740     readonly attribute <ref>NetworkBearerSelection</ref> networkbearerselection;
39741   };
39742   <ref>Tizen</ref> implements <ref>NetworkBearerSelectionObject</ref>;
39743
39744   [NoInterfaceObject] interface NetworkBearerSelection {
39745
39746     void requestRouteToHost(<ref>NetworkType</ref> networkType,
39747                             DOMString domainName,
39748                             <ref>NetworkSuccessCallback</ref> successCallback,
39749                             optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
39750
39751     void releaseRouteToHost(<ref>NetworkType</ref> networkType,
39752                             DOMString domainName,
39753                             <ref>SuccessCallback</ref> successCallback,
39754                             optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
39755   };
39756   
39757   [Callback, NoInterfaceObject] interface NetworkSuccessCallback {
39758     void onsuccess();
39759
39760     void ondisconnected();    
39761   };    
39762 };</webidl>
39763     <descriptive>
39764         <brief>
39765  This specification defines interfaces and methods providing Web applications to access the devices.
39766         </brief>
39767        <description>
39768         <p>
39769 This API provides interfaces and methods for users to set network bearer selection.
39770         </p>
39771        </description>
39772         <version>
39773  2.1
39774         </version>
39775         <def-api-feature identifier="http://tizen.org/feature/network.telephony">
39776           <descriptive>
39777            <description>
39778             <p>
39779  
39780 To guarantee this application running on a device with telephony feature, define below in the config file: 
39781             </p>
39782            </description>
39783           </descriptive>
39784         </def-api-feature>
39785     </descriptive>
39786     <Enum name="NetworkType" id="::NetworkBearerSelection::NetworkType">
39787       <webidl>  enum NetworkType { &quot;CELLULAR&quot;, &quot;UNKNOWN&quot; };</webidl>
39788       <descriptive>
39789           <brief>
39790  An enumerator that defines the type of a network.
39791           </brief>
39792           <version>
39793  2.1
39794           </version>
39795       </descriptive>
39796       <EnumValue stringvalue="CELLULAR">
39797         <webidl> &quot;CELLULAR</webidl>
39798       </EnumValue>
39799       <EnumValue stringvalue="UNKNOWN">
39800         <webidl> &quot;UNKNOWN</webidl>
39801       </EnumValue>
39802     </Enum>
39803     <Interface name="NetworkBearerSelectionObject" id="::NetworkBearerSelection::NetworkBearerSelectionObject">
39804       <webidl>  [NoInterfaceObject] interface NetworkBearerSelectionObject {
39805     readonly attribute <ref>NetworkBearerSelection</ref> networkbearerselection;
39806   };</webidl>
39807       <descriptive>
39808           <brief>
39809  Defines what is instantiated the Tizen object from the Tizen Platform.
39810           </brief>
39811          <description>
39812           <p>
39813 There is a <em>tizen.networkbearerselection </em>object that allows accessing the functionality of the Networkbearerselection API.
39814           </p>
39815          </description>
39816           <version>
39817  2.1
39818           </version>
39819       </descriptive>
39820       <ExtendedAttributeList>
39821         <ExtendedAttribute name="NoInterfaceObject">
39822           <webidl>NoInterfaceObject</webidl>
39823         </ExtendedAttribute>
39824       </ExtendedAttributeList>
39825       <Attribute readonly="readonly" name="networkbearerselection" id="::NetworkBearerSelection::NetworkBearerSelectionObject::networkbearerselection">
39826         <webidl>    readonly attribute <ref>NetworkBearerSelection</ref> networkbearerselection;</webidl>
39827         <Type name="NetworkBearerSelection"/>
39828       </Attribute>
39829     </Interface>
39830     <Implements name1="Tizen" name2="NetworkBearerSelectionObject">
39831       <webidl>  <ref>Tizen</ref> implements <ref>NetworkBearerSelectionObject</ref>;</webidl>
39832     </Implements>
39833     <Interface name="NetworkBearerSelection" id="::NetworkBearerSelection::NetworkBearerSelection">
39834       <webidl>  [NoInterfaceObject] interface NetworkBearerSelection {
39835
39836     void requestRouteToHost(<ref>NetworkType</ref> networkType,
39837                             DOMString domainName,
39838                             <ref>NetworkSuccessCallback</ref> successCallback,
39839                             optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
39840
39841     void releaseRouteToHost(<ref>NetworkType</ref> networkType,
39842                             DOMString domainName,
39843                             <ref>SuccessCallback</ref> successCallback,
39844                             optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
39845   };</webidl>
39846       <descriptive>
39847           <brief>
39848  This entry interface provides methods to query the network bearer selection.
39849           </brief>
39850          <description>
39851           <p>
39852 This API offers methods for network bearer selection.
39853           </p>
39854          </description>
39855           <version>
39856  2.1
39857           </version>
39858       </descriptive>
39859       <ExtendedAttributeList>
39860         <ExtendedAttribute name="NoInterfaceObject">
39861           <webidl>NoInterfaceObject</webidl>
39862         </ExtendedAttribute>
39863       </ExtendedAttributeList>
39864       <Operation name="requestRouteToHost" id="::NetworkBearerSelection::NetworkBearerSelection::requestRouteToHost">
39865         <webidl>    void requestRouteToHost(<ref>NetworkType</ref> networkType,
39866                             DOMString domainName,
39867                             <ref>NetworkSuccessCallback</ref> successCallback,
39868                             optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
39869         <descriptive>
39870             <brief>
39871  Requests a specific network connection.
39872             </brief>
39873            <description>
39874             <p>
39875 The function must asynchronously acquire success or fail.
39876             </p>
39877             <p>
39878 When called, it starts a request process defined with these set of steps:
39879             </p>
39880             <ul>
39881               <li>
39882 1. Open &quot;networkType&quot; network connection.              </li>
39883               <li>
39884 2. Resolve &quot;domainName&quot; to IP.              </li>
39885               <li>
39886 3. Change the routing path bound to domainName's IP to use the specific network type.              </li>
39887               <li>
39888 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>
39889             </ul>
39890            </description>
39891             <version>
39892  2.1
39893             </version>
39894             <Code> var statuscb = {
39895    onsuccess: function() { console.log(&quot;onsuccess func is called&quot;); },
39896    ondisconnected: function() { console.log(&quot;ondisconnected func is called&quot;); } 
39897  };
39898  function ecb(e) { console.log(&quot;error callback is called : &quot; + e.message + &quot; : &quot; + e.code); }
39899  tizen.networkbearerselection.requestRouteToHost(&quot;CELLULAR&quot;, &quot;www.tizen.org&quot;, statuscb, ecb);
39900          
39901 </Code>
39902             <privilegelevel>
39903  partner
39904             </privilegelevel>
39905             <privilege>
39906  http://tizen.org/privilege/networkbearerselection
39907             </privilege>
39908         </descriptive>
39909         <Type type="void"/>
39910         <ArgumentList>
39911           <Argument name="networkType">
39912             <descriptive>
39913                 <description><p>
39914  The network type.
39915                 </p></description>
39916             </descriptive>
39917             <Type name="NetworkType"/>
39918           </Argument>
39919           <Argument name="domainName">
39920             <descriptive>
39921                 <description><p>
39922  The domain name.
39923                 </p></description>
39924             </descriptive>
39925             <Type type="DOMString"/>
39926           </Argument>
39927           <Argument name="successCallback">
39928             <descriptive>
39929                 <description><p>
39930  To be invoked if data network connection is connected or not.
39931                 </p></description>
39932             </descriptive>
39933             <Type name="NetworkSuccessCallback"/>
39934           </Argument>
39935           <Argument optional="optional" name="errorCallback">
39936             <descriptive>
39937                 <description><p>
39938  To be invoked if the request is failed.
39939                 </p></description>
39940             </descriptive>
39941             <Type name="ErrorCallback" nullable="nullable"/>
39942           </Argument>
39943         </ArgumentList>
39944         <Raises>
39945           <RaiseException name="WebAPIException">
39946             <descriptive>
39947                 <description><p>
39948  with error type NotSupportedError, if this feature is not supported.
39949                 </p></description>
39950                 <description><p>
39951  with error type SecurityError, if the application does not have the privilege to call this method.
39952                 </p></description>
39953                 <description><p>
39954  with error type UnknownError, if any other error occurs.
39955                 </p></description>
39956             </descriptive>
39957           </RaiseException>
39958         </Raises>
39959       </Operation>
39960       <Operation name="releaseRouteToHost" id="::NetworkBearerSelection::NetworkBearerSelection::releaseRouteToHost">
39961         <webidl>    void releaseRouteToHost(<ref>NetworkType</ref> networkType,
39962                             DOMString domainName,
39963                             <ref>SuccessCallback</ref> successCallback,
39964                             optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
39965         <descriptive>
39966             <brief>
39967  Releases a specific network connection.
39968             </brief>
39969            <description>
39970             <p>
39971 The function must asynchronously acquire success or fail.
39972             </p>
39973             <p>
39974 When called, it closes a network connection.
39975             </p>
39976            </description>
39977             <version>
39978  2.1
39979             </version>
39980             <Code> function scb() { console.log(&quot;success callback is called&quot;); }
39981  function ecb(e) { console.log(&quot;error callback is called : &quot; + e.message + &quot; : &quot; + e.code); }
39982  var statuscb = {
39983    onsuccess: function() { 
39984      console.log(&quot;onsuccess func is called&quot;); 
39985      tizen.networkbearerselection.releaseRouteToHost(&quot;CELLULAR&quot;, &quot;www.google.com&quot;, scb, ecb);
39986    },
39987    ondisconnected: function() { console.log(&quot;ondisconnected func is called&quot;); } 
39988  };
39989  tizen.networkbearerselection.requestRouteToHost(&quot;CELLULAR&quot;, &quot;www.google.com&quot;, statuscb, ecb);
39990           
39991 </Code>
39992             <privilegelevel>
39993  partner
39994             </privilegelevel>
39995             <privilege>
39996  http://tizen.org/privilege/networkbearerselection
39997             </privilege>
39998         </descriptive>
39999         <Type type="void"/>
40000         <ArgumentList>
40001           <Argument name="networkType">
40002             <descriptive>
40003                 <description><p>
40004  The network type.
40005                 </p></description>
40006             </descriptive>
40007             <Type name="NetworkType"/>
40008           </Argument>
40009           <Argument name="domainName">
40010             <descriptive>
40011                 <description><p>
40012  The domain name.
40013                 </p></description>
40014             </descriptive>
40015             <Type type="DOMString"/>
40016           </Argument>
40017           <Argument name="successCallback">
40018             <descriptive>
40019                 <description><p>
40020  To be invoked if data network connection is released.
40021                 </p></description>
40022             </descriptive>
40023             <Type name="SuccessCallback"/>
40024           </Argument>
40025           <Argument optional="optional" name="errorCallback">
40026             <descriptive>
40027                 <description><p>
40028  To be invoked if the release is failed.
40029                 </p></description>
40030             </descriptive>
40031             <Type name="ErrorCallback" nullable="nullable"/>
40032           </Argument>
40033         </ArgumentList>
40034         <Raises>
40035           <RaiseException name="WebAPIException">
40036             <descriptive>
40037                 <description><p>
40038  with error type NotSupportedError, if this feature is not supported.
40039                 </p></description>
40040                 <description><p>
40041  with error type SecurityError, if the application does not have the privilege to call this method.
40042                 </p></description>
40043                 <description><p>
40044  with error type UnknownError, if any other error occurs.
40045                 </p></description>
40046             </descriptive>
40047           </RaiseException>
40048         </Raises>
40049       </Operation>
40050     </Interface>
40051     <Interface name="NetworkSuccessCallback" id="::NetworkBearerSelection::NetworkSuccessCallback">
40052       <webidl>  [Callback, NoInterfaceObject] interface NetworkSuccessCallback {
40053     void onsuccess();
40054
40055     void ondisconnected();    
40056   };</webidl>
40057       <descriptive>
40058           <brief>
40059  This interface provides a success callback specific to NetworkBearerSelection.
40060           </brief>
40061          <description>
40062           <p>
40063 It is used in asynchronous operations with requestRouteToHost().
40064           </p>
40065          </description>
40066           <version>
40067  2.1
40068           </version>
40069       </descriptive>
40070       <ExtendedAttributeList>
40071         <ExtendedAttribute name="Callback">
40072           <webidl>Callback</webidl>
40073         </ExtendedAttribute>
40074         <ExtendedAttribute name="NoInterfaceObject">
40075           <webidl> NoInterfaceObject</webidl>
40076         </ExtendedAttribute>
40077       </ExtendedAttributeList>
40078       <Operation name="onsuccess" id="::NetworkBearerSelection::NetworkSuccessCallback::onsuccess">
40079         <webidl>    void onsuccess();</webidl>
40080         <descriptive>
40081             <brief>
40082  Called when a network is connected successfully.
40083             </brief>
40084             <version>
40085  2.1
40086             </version>
40087         </descriptive>
40088         <Type type="void"/>
40089         <ArgumentList/>
40090       </Operation>
40091       <Operation name="ondisconnected" id="::NetworkBearerSelection::NetworkSuccessCallback::ondisconnected">
40092         <webidl>    void ondisconnected();</webidl>
40093         <descriptive>
40094             <brief>
40095  Called when a network is disconnected.
40096             </brief>
40097             <version>
40098  2.1
40099             </version>
40100         </descriptive>
40101         <Type type="void"/>
40102         <ArgumentList/>
40103       </Operation>
40104     </Interface>
40105   </Module>
40106   <Module name="NFC" id="::NFC">
40107     <webidl>module NFC {
40108   enum NDEFRecordTextEncoding { &quot;UTF8&quot;, &quot;UTF16&quot; };
40109
40110   enum NFCTagType { &quot;GENERIC_TARGET&quot;, &quot;ISO14443_A&quot;, &quot;ISO14443_4A&quot;, &quot;ISO14443_3A&quot;,
40111   &quot;MIFARE_MINI&quot;, &quot;MIFARE_1K&quot;, &quot;MIFARE_4K&quot;, &quot;MIFARE_ULTRA&quot;, &quot;MIFARE_DESFIRE&quot;,
40112   &quot;ISO14443_B&quot;, &quot;ISO14443_4B&quot;, &quot;ISO14443_BPRIME&quot;, &quot;FELICA&quot;, &quot;JEWEL&quot;, &quot;ISO15693&quot;,
40113   &quot;UNKNOWN_TARGET&quot; };
40114   
40115   [NoInterfaceObject] interface NFCManagerObject {
40116     readonly attribute <ref>NFCManager</ref> nfc;
40117   };
40118   <ref>Tizen</ref> implements <ref>NFCManagerObject</ref>;
40119
40120   [NoInterfaceObject] interface NFCManager {
40121     const short NFC_RECORD_TNF_EMPTY = 0;
40122     const short NFC_RECORD_TNF_WELL_KNOWN = 1;
40123     const short NFC_RECORD_TNF_MIME_MEDIA = 2;
40124     const short NFC_RECORD_TNF_URI = 3;
40125     const short NFC_RECORD_TNF_EXTERNAL_RTD = 4;
40126     const short NFC_RECORD_TNF_UNKNOWN = 5;
40127     const short NFC_RECORD_TNF_UNCHANGED = 6;
40128
40129     <ref>NFCAdapter</ref> getDefaultAdapter() raises(<ref>WebAPIException</ref>);
40130
40131     void setExclusiveMode(boolean mode) raises(<ref>WebAPIException</ref>);
40132   };
40133
40134
40135   [NoInterfaceObject] interface NFCAdapter {
40136     readonly attribute boolean powered ;
40137
40138
40139     void setPowered(boolean state,
40140                     optional <ref>SuccessCallback</ref>? successCallback,
40141                     optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
40142
40143
40144     void setTagListener(<ref>NFCTagDetectCallback</ref> detectCallback,
40145                         optional <ref>NFCTagType</ref>[]? tagFilter) raises(<ref>WebAPIException</ref>);
40146
40147     void setPeerListener(<ref>NFCPeerDetectCallback</ref> detectCallback) raises(<ref>WebAPIException</ref>);
40148
40149     void unsetTagListener() raises(<ref>WebAPIException</ref>);
40150
40151     void unsetPeerListener() raises(<ref>WebAPIException</ref>);
40152
40153     <ref>NDEFMessage</ref>? getCachedMessage() raises(<ref>WebAPIException</ref>);
40154
40155   };
40156
40157
40158   [NoInterfaceObject] interface NFCTag {
40159     readonly attribute <ref>NFCTagType</ref> type;
40160
40161     readonly attribute boolean isSupportedNDEF;
40162
40163     readonly attribute long ndefSize;
40164
40165     readonly attribute object properties;
40166
40167     readonly attribute boolean isConnected;
40168
40169
40170      void readNDEF(<ref>NDEFMessageReadCallback</ref> readCallback,
40171                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
40172
40173     void writeNDEF(<ref>NDEFMessage</ref> ndefMessage,
40174                    optional <ref>SuccessCallback</ref>? successCallback,
40175                    optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
40176
40177     void transceive(byte[] data,
40178                     <ref>ByteArraySuccessCallback</ref> dataCallback,
40179                     optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
40180   };
40181
40182
40183   [NoInterfaceObject] interface NFCPeer {
40184     readonly attribute boolean isConnected;
40185     
40186     void setReceiveNDEFListener(<ref>NDEFMessageReadCallback</ref> successCallback) raises(<ref>WebAPIException</ref>);
40187
40188     void unsetReceiveNDEFListener() raises(<ref>WebAPIException</ref>);
40189
40190     void sendNDEF(<ref>NDEFMessage</ref> ndefMessage,
40191                   optional <ref>SuccessCallback</ref>? successCallback,
40192                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
40193
40194   };
40195
40196   [Constructor(),
40197    Constructor(<ref>NDEFRecord</ref>[] ndefRecords),
40198    Constructor(byte[] rawData)]
40199   interface NDEFMessage {
40200     readonly attribute long recordCount;
40201     
40202     attribute <ref>NDEFRecord</ref>[] records;
40203
40204     byte[] toByte() raises(<ref>WebAPIException</ref>);
40205   };
40206
40207   [Constructor(short tnf, byte[] type, byte[] payload, optional byte[]? id),
40208    Constructor(byte[] raw_data)]
40209   interface NDEFRecord {
40210     readonly attribute short tnf;
40211
40212     readonly attribute byte[] type;
40213
40214     readonly attribute byte[] id;
40215     
40216     readonly attribute byte[] payload;
40217   };
40218
40219   [Constructor(DOMString text, DOMString languageCode, optional DOMString? encoding)]
40220   interface NDEFRecordText : <ref>NDEFRecord</ref> {
40221     readonly attribute DOMString text;
40222     
40223     readonly attribute DOMString languageCode;
40224     
40225     readonly attribute <ref>NDEFRecordTextEncoding</ref> encoding;
40226   };
40227
40228   [Constructor(DOMString uri)]
40229   interface NDEFRecordURI : <ref>NDEFRecord</ref> {
40230     readonly attribute DOMString uri;
40231   };
40232   [Constructor(DOMString mimeType, byte[] data)]
40233   interface NDEFRecordMedia : <ref>NDEFRecord</ref> {
40234     readonly attribute DOMString mimeType;
40235   };
40236
40237  
40238   [Callback, NoInterfaceObject] interface NFCTagDetectCallback {
40239     void onattach(<ref>NFCTag</ref> nfcTag);
40240     void ondetach();
40241   };
40242
40243   [Callback, NoInterfaceObject] interface NFCPeerDetectCallback {
40244     void onattach(<ref>NFCPeer</ref> nfcPeer);
40245     void ondetach();
40246   };
40247
40248   [Callback=FunctionOnly, NoInterfaceObject] interface NDEFMessageReadCallback {
40249     void onsuccess(<ref>NDEFMessage</ref> ndefMessage);
40250   };
40251
40252   [Callback=FunctionOnly, NoInterfaceObject] interface ByteArraySuccessCallback {
40253     void onsuccess(byte[] data);
40254   };
40255
40256 };</webidl>
40257     <descriptive>
40258         <brief>
40259   This interface specifies a protocol for simple wireless interconnection of 
40260 closely coupled devices operating at 13.56 MHz using Near Field Communication (NFC),
40261 which is an international standard (ISO/IEC 18092). 
40262 To know more, see <a href="http://www.nfc-forum.org/specs/spec_list/">Technical Specifications</a>.
40263         </brief>
40264        <description>
40265         <p>
40266 There are three groups of application scenarios for NFC:
40267         </p>
40268         <ul>
40269           <li>
40270 Exchanging some digital information or data by holding a device close to a wireless tag.          </li>
40271           <li>
40272 Exchanging some information or data between two devices by holding them close to each other.          </li>
40273           <li>
40274 Making payments by holding mobile phones close to point of sales terminals instead of swiping smart cards.          </li>
40275         </ul>
40276         <p>
40277 For more information on the NFC features, see <a href="../../org.tizen.web.appprogramming/html/guide/communication_guide/nfc.htm">NFC Guide</a>.
40278         </p>
40279        </description>
40280         <version>
40281  1.0
40282         </version>
40283         <def-api-feature identifier="http://tizen.org/feature/network.nfc">
40284           <descriptive>
40285            <description>
40286             <p>
40287 To guarantee this application running on a device with NFC feature, define below in the config file: 
40288             </p>
40289            </description>
40290           </descriptive>
40291         </def-api-feature>
40292     </descriptive>
40293     <Enum name="NDEFRecordTextEncoding" id="::NFC::NDEFRecordTextEncoding">
40294       <webidl>  enum NDEFRecordTextEncoding { &quot;UTF8&quot;, &quot;UTF16&quot; };</webidl>
40295       <descriptive>
40296           <brief>
40297  An enumerator that defines an encoding format for an NDEF record text.
40298           </brief>
40299           <version>
40300  1.0
40301           </version>
40302       </descriptive>
40303       <EnumValue stringvalue="UTF8">
40304         <webidl> &quot;UTF8</webidl>
40305       </EnumValue>
40306       <EnumValue stringvalue="UTF16">
40307         <webidl> &quot;UTF16</webidl>
40308       </EnumValue>
40309     </Enum>
40310     <Enum name="NFCTagType" id="::NFC::NFCTagType">
40311       <webidl>  enum NFCTagType { &quot;GENERIC_TARGET&quot;, &quot;ISO14443_A&quot;, &quot;ISO14443_4A&quot;, &quot;ISO14443_3A&quot;,
40312   &quot;MIFARE_MINI&quot;, &quot;MIFARE_1K&quot;, &quot;MIFARE_4K&quot;, &quot;MIFARE_ULTRA&quot;, &quot;MIFARE_DESFIRE&quot;,
40313   &quot;ISO14443_B&quot;, &quot;ISO14443_4B&quot;, &quot;ISO14443_BPRIME&quot;, &quot;FELICA&quot;, &quot;JEWEL&quot;, &quot;ISO15693&quot;,
40314   &quot;UNKNOWN_TARGET&quot; };</webidl>
40315       <descriptive>
40316           <brief>
40317  An enumerator that defines the type of NFC tag.
40318           </brief>
40319          <description>
40320           <p>
40321 The following values are supported:
40322           </p>
40323           <ul>
40324             <li>
40325 GENERIC_TARGET            </li>
40326             <li>
40327 ISO14443_A            </li>
40328             <li>
40329 ISO14443_4A            </li>
40330             <li>
40331 ISO14443_3A            </li>
40332             <li>
40333 MIFARE_MINI            </li>
40334             <li>
40335 MIFARE_1K            </li>
40336             <li>
40337 MIFARE_4K            </li>
40338             <li>
40339 MIFARE_ULTRA            </li>
40340             <li>
40341 MIFARE_DESFIRE            </li>
40342             <li>
40343 ISO14443_B            </li>
40344             <li>
40345 ISO14443_4B            </li>
40346             <li>
40347 ISO14443_BPRIME            </li>
40348             <li>
40349 FELICA            </li>
40350             <li>
40351 JEWEL            </li>
40352             <li>
40353 ISO15693            </li>
40354             <li>
40355 UNKNOWN_TARGET            </li>
40356           </ul>
40357          </description>
40358           <version>
40359  1.0
40360           </version>
40361       </descriptive>
40362       <EnumValue stringvalue="GENERIC_TARGET">
40363         <webidl> &quot;GENERIC_TARGET</webidl>
40364       </EnumValue>
40365       <EnumValue stringvalue="ISO14443_A">
40366         <webidl> &quot;ISO14443_A</webidl>
40367       </EnumValue>
40368       <EnumValue stringvalue="ISO14443_4A">
40369         <webidl> &quot;ISO14443_4A</webidl>
40370       </EnumValue>
40371       <EnumValue stringvalue="ISO14443_3A">
40372         <webidl> &quot;ISO14443_3A</webidl>
40373       </EnumValue>
40374       <EnumValue stringvalue="MIFARE_MINI">
40375         <webidl>  &quot;MIFARE_MINI</webidl>
40376       </EnumValue>
40377       <EnumValue stringvalue="MIFARE_1K">
40378         <webidl> &quot;MIFARE_1K</webidl>
40379       </EnumValue>
40380       <EnumValue stringvalue="MIFARE_4K">
40381         <webidl> &quot;MIFARE_4K</webidl>
40382       </EnumValue>
40383       <EnumValue stringvalue="MIFARE_ULTRA">
40384         <webidl> &quot;MIFARE_ULTRA</webidl>
40385       </EnumValue>
40386       <EnumValue stringvalue="MIFARE_DESFIRE">
40387         <webidl> &quot;MIFARE_DESFIRE</webidl>
40388       </EnumValue>
40389       <EnumValue stringvalue="ISO14443_B">
40390         <webidl>  &quot;ISO14443_B</webidl>
40391       </EnumValue>
40392       <EnumValue stringvalue="ISO14443_4B">
40393         <webidl> &quot;ISO14443_4B</webidl>
40394       </EnumValue>
40395       <EnumValue stringvalue="ISO14443_BPRIME">
40396         <webidl> &quot;ISO14443_BPRIME</webidl>
40397       </EnumValue>
40398       <EnumValue stringvalue="FELICA">
40399         <webidl> &quot;FELICA</webidl>
40400       </EnumValue>
40401       <EnumValue stringvalue="JEWEL">
40402         <webidl> &quot;JEWEL</webidl>
40403       </EnumValue>
40404       <EnumValue stringvalue="ISO15693">
40405         <webidl> &quot;ISO15693</webidl>
40406       </EnumValue>
40407       <EnumValue stringvalue="UNKNOWN_TARGET">
40408         <webidl>  &quot;UNKNOWN_TARGET</webidl>
40409       </EnumValue>
40410     </Enum>
40411     <Interface name="NFCManagerObject" id="::NFC::NFCManagerObject">
40412       <webidl>  [NoInterfaceObject] interface NFCManagerObject {
40413     readonly attribute <ref>NFCManager</ref> nfc;
40414   };</webidl>
40415       <descriptive>
40416           <brief>
40417  This interface defines what is instantiated by the <em>Tizen</em> object from the Tizen Platform.
40418 There will be a <em>tizen.nfc </em>object that allows access to the functionality of the NFC API.
40419           </brief>
40420           <version>
40421  1.0
40422           </version>
40423       </descriptive>
40424       <ExtendedAttributeList>
40425         <ExtendedAttribute name="NoInterfaceObject">
40426           <webidl>NoInterfaceObject</webidl>
40427         </ExtendedAttribute>
40428       </ExtendedAttributeList>
40429       <Attribute readonly="readonly" name="nfc" id="::NFC::NFCManagerObject::nfc">
40430         <webidl>    readonly attribute <ref>NFCManager</ref> nfc;</webidl>
40431         <Type name="NFCManager"/>
40432       </Attribute>
40433     </Interface>
40434     <Implements name1="Tizen" name2="NFCManagerObject">
40435       <webidl>  <ref>Tizen</ref> implements <ref>NFCManagerObject</ref>;</webidl>
40436     </Implements>
40437     <Interface name="NFCManager" id="::NFC::NFCManager">
40438       <webidl>  [NoInterfaceObject] interface NFCManager {
40439     const short NFC_RECORD_TNF_EMPTY = 0;
40440     const short NFC_RECORD_TNF_WELL_KNOWN = 1;
40441     const short NFC_RECORD_TNF_MIME_MEDIA = 2;
40442     const short NFC_RECORD_TNF_URI = 3;
40443     const short NFC_RECORD_TNF_EXTERNAL_RTD = 4;
40444     const short NFC_RECORD_TNF_UNKNOWN = 5;
40445     const short NFC_RECORD_TNF_UNCHANGED = 6;
40446
40447     <ref>NFCAdapter</ref> getDefaultAdapter() raises(<ref>WebAPIException</ref>);
40448
40449     void setExclusiveMode(boolean mode) raises(<ref>WebAPIException</ref>);
40450   };</webidl>
40451       <descriptive>
40452           <brief>
40453  Accesses to the NFC tag/target.
40454           </brief>
40455          <description>
40456           <p>
40457 It provides access to the API functionalities through the tizen.nfc interface.
40458           </p>
40459          </description>
40460           <version>
40461  1.0
40462           </version>
40463       </descriptive>
40464       <ExtendedAttributeList>
40465         <ExtendedAttribute name="NoInterfaceObject">
40466           <webidl>NoInterfaceObject</webidl>
40467         </ExtendedAttribute>
40468       </ExtendedAttributeList>
40469       <Const name="NFC_RECORD_TNF_EMPTY" value="0" id="::NFC::NFCManager::NFC_RECORD_TNF_EMPTY">
40470         <webidl>    const short NFC_RECORD_TNF_EMPTY = 0;</webidl>
40471         <descriptive>
40472             <brief>
40473  A constant to indicate empty format of NDEF record's type field.
40474             </brief>
40475             <version>
40476  1.0
40477             </version>
40478         </descriptive>
40479         <Type type="short"/>
40480       </Const>
40481       <Const name="NFC_RECORD_TNF_WELL_KNOWN" value="1" id="::NFC::NFCManager::NFC_RECORD_TNF_WELL_KNOWN">
40482         <webidl>    const short NFC_RECORD_TNF_WELL_KNOWN = 1;</webidl>
40483         <descriptive>
40484             <brief>
40485  A constant to indicate Record Type Definition (RTD) format of NDEF record's type field.
40486             </brief>
40487             <version>
40488  1.0
40489             </version>
40490         </descriptive>
40491         <Type type="short"/>
40492       </Const>
40493       <Const name="NFC_RECORD_TNF_MIME_MEDIA" value="2" id="::NFC::NFCManager::NFC_RECORD_TNF_MIME_MEDIA">
40494         <webidl>    const short NFC_RECORD_TNF_MIME_MEDIA = 2;</webidl>
40495         <descriptive>
40496             <brief>
40497  A constant to indicate MIME media types format in RFC 2046 [RFC 2046] of NDEF record's type field.
40498             </brief>
40499             <version>
40500  1.0
40501             </version>
40502         </descriptive>
40503         <Type type="short"/>
40504       </Const>
40505       <Const name="NFC_RECORD_TNF_URI" value="3" id="::NFC::NFCManager::NFC_RECORD_TNF_URI">
40506         <webidl>    const short NFC_RECORD_TNF_URI = 3;</webidl>
40507         <descriptive>
40508             <brief>
40509  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.
40510             </brief>
40511             <version>
40512  1.0
40513             </version>
40514         </descriptive>
40515         <Type type="short"/>
40516       </Const>
40517       <Const name="NFC_RECORD_TNF_EXTERNAL_RTD" value="4" id="::NFC::NFCManager::NFC_RECORD_TNF_EXTERNAL_RTD">
40518         <webidl>    const short NFC_RECORD_TNF_EXTERNAL_RTD = 4;</webidl>
40519         <descriptive>
40520             <brief>
40521  A constant to indicate NFC forum external type [NFC RTD] format in RFC 2046 [RFC 2046] of NDEF record's type field.
40522             </brief>
40523             <version>
40524  1.0
40525             </version>
40526         </descriptive>
40527         <Type type="short"/>
40528       </Const>
40529       <Const name="NFC_RECORD_TNF_UNKNOWN" value="5" id="::NFC::NFCManager::NFC_RECORD_TNF_UNKNOWN">
40530         <webidl>    const short NFC_RECORD_TNF_UNKNOWN = 5;</webidl>
40531         <descriptive>
40532             <brief>
40533  A constant to indicate unknown type format in RFC 2046 [RFC 2046] of NDEF record's type field.
40534             </brief>
40535             <version>
40536  1.0
40537             </version>
40538         </descriptive>
40539         <Type type="short"/>
40540       </Const>
40541       <Const name="NFC_RECORD_TNF_UNCHANGED" value="6" id="::NFC::NFCManager::NFC_RECORD_TNF_UNCHANGED">
40542         <webidl>    const short NFC_RECORD_TNF_UNCHANGED = 6;</webidl>
40543         <descriptive>
40544             <brief>
40545  A constant to indicate whether the payload is an intermediate or final chunk of a chunked NDEF record.
40546             </brief>
40547             <version>
40548  1.0
40549             </version>
40550         </descriptive>
40551         <Type type="short"/>
40552       </Const>
40553       <Operation name="getDefaultAdapter" id="::NFC::NFCManager::getDefaultAdapter">
40554         <webidl>    <ref>NFCAdapter</ref> getDefaultAdapter() raises(<ref>WebAPIException</ref>);</webidl>
40555         <descriptive>
40556             <brief>
40557  Gets the default NFC adapter of the device.
40558             </brief>
40559             <version>
40560  1.0
40561             </version>
40562             <privilege>
40563  http://tizen.org/privilege/nfc.common
40564             </privilege>
40565             <privilegelevel>
40566  public
40567             </privilegelevel>
40568             <Code> try {
40569   var adapter = tizen.nfc.getDefaultAdapter() ;
40570  } catch (err) {
40571   console.log (err.name +&quot;: &quot; + err.message);
40572  }
40573  </Code>
40574         </descriptive>
40575         <Type name="NFCAdapter">
40576           <descriptive>
40577               <description><p>
40578  NFCAdapter The default NFCAdapter object.
40579               </p></description>
40580           </descriptive>
40581         </Type>
40582         <ArgumentList/>
40583         <Raises>
40584           <RaiseException name="WebAPIException">
40585             <descriptive>
40586                 <description><p>
40587  with error type SecurityError, if the application does not have the privilege to call this method.
40588                 </p></description>
40589                 <description><p>
40590  with error type UnknownError in any other error case.
40591                 </p></description>
40592             </descriptive>
40593           </RaiseException>
40594         </Raises>
40595       </Operation>
40596       <Operation name="setExclusiveMode" id="::NFC::NFCManager::setExclusiveMode">
40597         <webidl>    void setExclusiveMode(boolean mode) raises(<ref>WebAPIException</ref>);</webidl>
40598         <descriptive>
40599             <brief>
40600  Gives priority to the current application for NFC operations over other applications when it is in the foreground.
40601             </brief>
40602            <description>
40603             <p>
40604 If the current application has the priority and is on the foreground, the system stops sending
40605 application control requests that are used to pick an application to handle a request about NFC.
40606 Such a request is usually sent, for example, when detecting an NFC tag or receiving an NDEF message
40607 from a connected NFC peer-to-peer target.
40608             </p>
40609             <p>
40610 When the current application moves to the background, it loses the priority.
40611             </p>
40612             <p>
40613 The exclusive mode can only be set when NFC is on. If NFC is off, the mode is ignored.
40614             </p>
40615            </description>
40616             <version>
40617  2.1
40618             </version>
40619             <privilege>
40620  http://tizen.org/privilege/nfc.common
40621             </privilege>
40622             <privilegelevel>
40623  public
40624             </privilegelevel>
40625             <Code> try {
40626    tizen.nfc.setExclusiveMode(true) ;
40627  } catch (err) {
40628    console.log (err.name + &quot;: &quot; + err.message);
40629  }
40630  </Code>
40631         </descriptive>
40632         <Type type="void"/>
40633         <ArgumentList>
40634           <Argument name="mode">
40635             <descriptive>
40636                 <description><p>
40637  The value of exclusive mode.
40638                 </p></description>
40639             </descriptive>
40640             <Type type="boolean"/>
40641           </Argument>
40642         </ArgumentList>
40643         <Raises>
40644           <RaiseException name="WebAPIException">
40645             <descriptive>
40646                 <description><p>
40647  with error type SecurityError, if the application does not have the privilege to call this method.
40648                 </p></description>
40649                 <description><p>
40650  with error type UnknownError in any other error case.
40651                 </p></description>
40652             </descriptive>
40653           </RaiseException>
40654         </Raises>
40655       </Operation>
40656     </Interface>
40657     <Interface name="NFCAdapter" id="::NFC::NFCAdapter">
40658       <webidl>  [NoInterfaceObject] interface NFCAdapter {
40659     readonly attribute boolean powered ;
40660
40661
40662     void setPowered(boolean state,
40663                     optional <ref>SuccessCallback</ref>? successCallback,
40664                     optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
40665
40666
40667     void setTagListener(<ref>NFCTagDetectCallback</ref> detectCallback,
40668                         optional <ref>NFCTagType</ref>[]? tagFilter) raises(<ref>WebAPIException</ref>);
40669
40670     void setPeerListener(<ref>NFCPeerDetectCallback</ref> detectCallback) raises(<ref>WebAPIException</ref>);
40671
40672     void unsetTagListener() raises(<ref>WebAPIException</ref>);
40673
40674     void unsetPeerListener() raises(<ref>WebAPIException</ref>);
40675
40676     <ref>NDEFMessage</ref>? getCachedMessage() raises(<ref>WebAPIException</ref>);
40677
40678   };</webidl>
40679       <descriptive>
40680           <brief>
40681  This interface provides access to control the adapter by offering methods to control local NFC behaviors, such as turning on/off an adapter.
40682           </brief>
40683           <version>
40684  1.0
40685           </version>
40686       </descriptive>
40687       <ExtendedAttributeList>
40688         <ExtendedAttribute name="NoInterfaceObject">
40689           <webidl>NoInterfaceObject</webidl>
40690         </ExtendedAttribute>
40691       </ExtendedAttributeList>
40692       <Attribute readonly="readonly" name="powered" id="::NFC::NFCAdapter::powered">
40693         <webidl>    readonly attribute boolean powered ;</webidl>
40694         <descriptive>
40695             <brief>
40696  The state of the NFC adapter.
40697             </brief>
40698             <version>
40699  1.0
40700             </version>
40701         </descriptive>
40702         <Type type="boolean"/>
40703       </Attribute>
40704       <Operation name="setPowered" id="::NFC::NFCAdapter::setPowered">
40705         <webidl>    void setPowered(boolean state,
40706                     optional <ref>SuccessCallback</ref>? successCallback,
40707                     optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
40708         <descriptive>
40709             <brief>
40710  Sets the power of an NFC adapter to either a on state or a off state.
40711             </brief>
40712            <description>
40713             <p>
40714 The ErrorCallback is launched with these error types:
40715             </p>
40716             <ul>
40717               <li>
40718  ServiceNotAvailableError - If the NFC device is busy.              </li>
40719               <li>
40720  UnknownError - If any other error occurs.              </li>
40721             </ul>
40722            </description>
40723             <version>
40724  1.0
40725             </version>
40726             <privilege>
40727  http://tizen.org/privilege/nfc.admin
40728             </privilege>
40729             <privilegelevel>
40730  public
40731             </privilegelevel>
40732             <Code> var gNfcAdapter;
40733  var onPowerOn = function(){ // Called when NFC adapter is powered on
40734    try {
40735      console.log(&quot;Power on succeed&quot;);
40736      // Implement NFC communication routines ...
40737      gNfcAdapter.setPowered(
40738          false, // Disable NFC adapter
40739          function () {console.log(&quot;Power off succeed&quot;); }, // Handle success
40740          function () {console.log(&quot;Power off failed&quot;); }); // Handle failure
40741    } catch (err) {
40742      console.log (err.name + &quot;: &quot; + err.message);
40743    }
40744  };
40745  try {
40746    gNfcAdapter = tizen.nfc.getDefaultAdapter();
40747    if (!gNfcAdapter.powered) {
40748      gNfcAdapter.setPowered(
40749          true, // Enable NFC adapter
40750          onPowerOn,                                     // Handle succes
40751          function () {console.log(&quot;Power on failed&quot;)}); // Handle failure
40752    } else {
40753      onPowerOn();
40754    }
40755  } catch (err) {
40756    console.log (err.name + &quot;: &quot; + err.message);
40757  }
40758  </Code>
40759         </descriptive>
40760         <Type type="void"/>
40761         <ArgumentList>
40762           <Argument name="state">
40763             <descriptive>
40764                 <description><p>
40765  The state of NFC adapter, <var>true</var> means on, <var>false</var> means off
40766                 </p></description>
40767             </descriptive>
40768             <Type type="boolean"/>
40769           </Argument>
40770           <Argument optional="optional" name="successCallback">
40771             <descriptive>
40772                 <description><p>
40773  The method to call when NFC adapter is 
40774 enabled or disabled successfully.
40775                 </p></description>
40776             </descriptive>
40777             <Type name="SuccessCallback" nullable="nullable"/>
40778           </Argument>
40779           <Argument optional="optional" name="errorCallback">
40780             <descriptive>
40781                 <description><p>
40782  The method to call when an error occurs.
40783                 </p></description>
40784             </descriptive>
40785             <Type name="ErrorCallback" nullable="nullable"/>
40786           </Argument>
40787         </ArgumentList>
40788         <Raises>
40789           <RaiseException name="WebAPIException">
40790             <descriptive>
40791                 <description><p>
40792  with error type TypeMismatchError, if the input parameter
40793 is not compatible with the expected type for that parameter.
40794                 </p></description>
40795                 <description><p>
40796  with error type SecurityError, if this functionality is not allowed
40797                 </p></description>
40798             </descriptive>
40799           </RaiseException>
40800         </Raises>
40801       </Operation>
40802       <Operation name="setTagListener" id="::NFC::NFCAdapter::setTagListener">
40803         <webidl>    void setTagListener(<ref>NFCTagDetectCallback</ref> detectCallback,
40804                         optional <ref>NFCTagType</ref>[]? tagFilter) raises(<ref>WebAPIException</ref>);</webidl>
40805         <descriptive>
40806             <brief>
40807  Registers a callback function to invoke when an NFC tag is detected.
40808             </brief>
40809            <description>
40810             <p>
40811 If the registration completes successfully, the detectCallback must be
40812 invoked when NFC tag is detected. 
40813             </p>
40814             <p>
40815 If no tagFilter is passed, it shall consider the default tagFilter, that is to set all tag types.
40816             </p>
40817            </description>
40818             <version>
40819  1.0
40820             </version>
40821             <privilege>
40822  http://tizen.org/privilege/nfc.tag
40823             </privilege>
40824             <privilegelevel>
40825  public
40826             </privilegelevel>
40827             <Code> var adapter = tizen.nfc.getDefaultAdapter();
40828  var onSuccessCB = {onattach : function(nfcTag) {
40829      console.log(&quot;NFC Tag's type is &quot; + nfcTag.type);
40830    }, ondetach : function() {
40831      console.log(&quot;NFC Tag is detached&quot;);
40832    }};
40833  adapter.setTagListener(onSuccessCB);
40834  </Code>
40835         </descriptive>
40836         <Type type="void"/>
40837         <ArgumentList>
40838           <Argument name="detectCallback">
40839             <descriptive>
40840                 <description><p>
40841  The method to invoke when a NFC tag is successfully detected.
40842                 </p></description>
40843             </descriptive>
40844             <Type name="NFCTagDetectCallback"/>
40845           </Argument>
40846           <Argument optional="optional" name="tagFilter">
40847             <descriptive>
40848                 <description><p>
40849  A filter to be used when specific NFC tag is detected.
40850                 </p></description>
40851             </descriptive>
40852             <Type type="array" nullable="nullable">
40853               <Type name="NFCTagType"/>
40854             </Type>
40855           </Argument>
40856         </ArgumentList>
40857         <Raises>
40858           <RaiseException name="WebAPIException">
40859             <descriptive>
40860                 <description><p>
40861  with error type TypeMismatchError, if the input parameter
40862 is not compatible with the expected type for that parameter.
40863                 </p></description>
40864                 <description><p>
40865  with error type SecurityError, if the application does not have the privilege to call this method.
40866                 </p></description>
40867                 <description><p>
40868  with error type ServiceNotAvailableError, if the NFC service is not available.
40869                 </p></description>
40870                 <description><p>
40871  with error type UnknownError in any other error case.
40872                 </p></description>
40873             </descriptive>
40874           </RaiseException>
40875         </Raises>
40876       </Operation>
40877       <Operation name="setPeerListener" id="::NFC::NFCAdapter::setPeerListener">
40878         <webidl>    void setPeerListener(<ref>NFCPeerDetectCallback</ref> detectCallback) raises(<ref>WebAPIException</ref>);</webidl>
40879         <descriptive>
40880             <brief>
40881  Registers a callback function to be invoked when NFC peer-to-peer target is detected.
40882             </brief>
40883            <description>
40884             <p>
40885 If the registration completes successfully, the detectCallback must be
40886 invoked when NFC peer-to-peer target is detected. 
40887             </p>
40888            </description>
40889             <version>
40890  1.0
40891             </version>
40892             <privilege>
40893  http://tizen.org/privilege/nfc.p2p
40894             </privilege>
40895             <privilegelevel>
40896  public
40897             </privilegelevel>
40898             <Code> var adapter = tizen.nfc.getDefaultAdapter();
40899  var onSuccessCB = {onattach : function(nfcPeer) {
40900      console.log(&quot;NFC Target is detected&quot;);
40901    }, ondetach : function() {
40902      console.log(&quot;NFC Target is detached&quot;);
40903    }};
40904  adapter.setPeerListener(onSuccessCB);
40905  </Code>
40906         </descriptive>
40907         <Type type="void"/>
40908         <ArgumentList>
40909           <Argument name="detectCallback">
40910             <descriptive>
40911                 <description><p>
40912  The method to invoke when a NFC peer-to-peer target is successfully detected.
40913                 </p></description>
40914             </descriptive>
40915             <Type name="NFCPeerDetectCallback"/>
40916           </Argument>
40917         </ArgumentList>
40918         <Raises>
40919           <RaiseException name="WebAPIException">
40920             <descriptive>
40921                 <description><p>
40922  with error type TypeMismatchError, if the input parameter
40923 is not compatible with the expected type for that parameter.
40924                 </p></description>
40925                 <description><p>
40926  with error type SecurityError, if the application does not have the privilege to call this method.
40927                 </p></description>
40928                 <description><p>
40929  with error type ServiceNotAvailableError, if the NFC service is not available.
40930                 </p></description>
40931                 <description><p>
40932  with error type UnknownError in any other error case.
40933                 </p></description>
40934             </descriptive>
40935           </RaiseException>
40936         </Raises>
40937       </Operation>
40938       <Operation name="unsetTagListener" id="::NFC::NFCAdapter::unsetTagListener">
40939         <webidl>    void unsetTagListener() raises(<ref>WebAPIException</ref>);</webidl>
40940         <descriptive>
40941             <brief>
40942  Unregisters the listener for detecting an NFC tag.
40943             </brief>
40944             <version>
40945  1.0
40946             </version>
40947             <privilege>
40948  http://tizen.org/privilege/nfc.tag
40949             </privilege>
40950             <privilegelevel>
40951  public
40952             </privilegelevel>
40953             <Code> var adapter = tizen.nfc.getDefaultAdapter();
40954
40955  // Receives NFCTag
40956  var onSuccessCB = {onattach : function(nfcTag) {
40957      console.log(&quot;NFC Tag's type is &quot; + nfcTag.type);
40958    }, ondetach : function() {
40959      console.log(&quot;NFC Tag is detached&quot;);
40960    }};
40961
40962  // Unregister the listener
40963  function unsetListen() {
40964    adapter.unsetTagListener();
40965  }
40966
40967  // Registers to be notified when NFC tag is detected.
40968  adapter.setTagListener(onSuccessCB)
40969  </Code>
40970         </descriptive>
40971         <Type type="void"/>
40972         <ArgumentList/>
40973         <Raises>
40974           <RaiseException name="WebAPIException">
40975             <descriptive>
40976                 <description><p>
40977  with error type SecurityError, if the application does not have the privilege to call this method.
40978                 </p></description>
40979                 <description><p>
40980  with error type ServiceNotAvailableError, if the NFC service is not available.
40981                 </p></description>
40982                 <description><p>
40983  with error type UnknownError in any other error case.
40984                 </p></description>
40985             </descriptive>
40986           </RaiseException>
40987         </Raises>
40988       </Operation>
40989       <Operation name="unsetPeerListener" id="::NFC::NFCAdapter::unsetPeerListener">
40990         <webidl>    void unsetPeerListener() raises(<ref>WebAPIException</ref>);</webidl>
40991         <descriptive>
40992             <brief>
40993  Unregisters the listener for detecting an NFC peer-to-peer target.
40994             </brief>
40995             <version>
40996  1.0
40997             </version>
40998             <privilege>
40999  http://tizen.org/privilege/nfc.p2p
41000             </privilege>
41001             <privilegelevel>
41002  public
41003             </privilegelevel>
41004             <Code> var adapter = tizen.nfc.getDefaultAdapter();
41005
41006  // Receives an NFC peer.
41007  var onSuccessCB = {onattach : function(nfcPeer) {
41008      console.log(&quot;NFC Target is detected&quot;);
41009    }, ondetach : function() {
41010      console.log(&quot;NFC Target is detached&quot;);
41011    }};
41012
41013  // Unregisters the listener.
41014  function unsetListen() {
41015    adapter.unsetPeerListener();
41016  }
41017
41018  // Registers to be notified when NFC peer-to-peer target is detected.
41019  adapter.setPeerListener(onSuccessCB)
41020  </Code>
41021         </descriptive>
41022         <Type type="void"/>
41023         <ArgumentList/>
41024         <Raises>
41025           <RaiseException name="WebAPIException">
41026             <descriptive>
41027                 <description><p>
41028  with error type SecurityError, if the application does not have the privilege to call this method.
41029                 </p></description>
41030                 <description><p>
41031  with error type ServiceNotAvailableError, if the NFC service is not available.
41032                 </p></description>
41033                 <description><p>
41034  with error type UnknownError in any other error case.
41035                 </p></description>
41036             </descriptive>
41037           </RaiseException>
41038         </Raises>
41039       </Operation>
41040       <Operation name="getCachedMessage" id="::NFC::NFCAdapter::getCachedMessage">
41041         <webidl>    <ref>NDEFMessage</ref>? getCachedMessage() raises(<ref>WebAPIException</ref>);</webidl>
41042         <descriptive>
41043             <brief>
41044  Gets the NDEF message cached when the tag is detected.
41045             </brief>
41046            <description>
41047             <p>
41048 If the operation completes successfully, the NDEF Message that was last read
41049 should be returned. 
41050             </p>
41051            </description>
41052             <version>
41053  1.0
41054             </version>
41055             <privilege>
41056  http://tizen.org/privilege/nfc.common
41057             </privilege>
41058             <privilegelevel>
41059  public
41060             </privilegelevel>
41061             <Code> // Gets the cached message
41062  var cachedMessage = tizen.nfc.getDefaultAdapter().getCachedMessage();
41063  </Code>
41064         </descriptive>
41065         <Type name="NDEFMessage" nullable="nullable">
41066           <descriptive>
41067               <description><p>
41068  The NDEF Message that was last read.
41069               </p></description>
41070           </descriptive>
41071         </Type>
41072         <ArgumentList/>
41073         <Raises>
41074           <RaiseException name="WebAPIException">
41075             <descriptive>
41076                 <description><p>
41077  with error type SecurityError, if the application does not have the privilege to call this method.
41078                 </p></description>
41079                 <description><p>
41080  with error type UnknownError in any other error case.
41081                 </p></description>
41082             </descriptive>
41083           </RaiseException>
41084         </Raises>
41085       </Operation>
41086     </Interface>
41087     <Interface name="NFCTag" id="::NFC::NFCTag">
41088       <webidl>  [NoInterfaceObject] interface NFCTag {
41089     readonly attribute <ref>NFCTagType</ref> type;
41090
41091     readonly attribute boolean isSupportedNDEF;
41092
41093     readonly attribute long ndefSize;
41094
41095     readonly attribute object properties;
41096
41097     readonly attribute boolean isConnected;
41098
41099
41100      void readNDEF(<ref>NDEFMessageReadCallback</ref> readCallback,
41101                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
41102
41103     void writeNDEF(<ref>NDEFMessage</ref> ndefMessage,
41104                    optional <ref>SuccessCallback</ref>? successCallback,
41105                    optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
41106
41107     void transceive(byte[] data,
41108                     <ref>ByteArraySuccessCallback</ref> dataCallback,
41109                     optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
41110   };</webidl>
41111       <descriptive>
41112           <brief>
41113  This interface provides accesses to the NFC tag.
41114           </brief>
41115           <version>
41116  1.0
41117           </version>
41118       </descriptive>
41119       <ExtendedAttributeList>
41120         <ExtendedAttribute name="NoInterfaceObject">
41121           <webidl>NoInterfaceObject</webidl>
41122         </ExtendedAttribute>
41123       </ExtendedAttributeList>
41124       <Attribute readonly="readonly" name="type" id="::NFC::NFCTag::type">
41125         <webidl>    readonly attribute <ref>NFCTagType</ref> type;</webidl>
41126         <descriptive>
41127             <brief>
41128  The type of the NFC tag.
41129             </brief>
41130             <version>
41131  1.0
41132             </version>
41133         </descriptive>
41134         <Type name="NFCTagType"/>
41135       </Attribute>
41136       <Attribute readonly="readonly" name="isSupportedNDEF" id="::NFC::NFCTag::isSupportedNDEF">
41137         <webidl>    readonly attribute boolean isSupportedNDEF;</webidl>
41138         <descriptive>
41139             <brief>
41140  An attribute to check if the NFC Tag supports NDEF format.
41141             </brief>
41142             <version>
41143  1.0
41144             </version>
41145         </descriptive>
41146         <Type type="boolean"/>
41147       </Attribute>
41148       <Attribute readonly="readonly" name="ndefSize" id="::NFC::NFCTag::ndefSize">
41149         <webidl>    readonly attribute long ndefSize;</webidl>
41150         <descriptive>
41151             <brief>
41152  The size of NDEF message stored in the tag.
41153             </brief>
41154             <version>
41155  1.0
41156             </version>
41157         </descriptive>
41158         <Type type="long"/>
41159       </Attribute>
41160       <Attribute readonly="readonly" name="properties" id="::NFC::NFCTag::properties">
41161         <webidl>    readonly attribute object properties;</webidl>
41162         <descriptive>
41163             <brief>
41164  The value is all tag information.
41165             </brief>
41166            <description>
41167             <p>
41168 It is pairs of key and value.
41169 The array's index is the pair's key and value is its value.
41170             </p>
41171            </description>
41172             <Code> var adapter = tizen.nfc.getDefaultAdapter();
41173  var onSuccessCB = {onattach : function(nfcTag) {
41174      console.log(&quot;NFC Tag's type is &quot; + nfcTag.type);
41175      for(var i in nfcTag.properties) {
41176        console.log(&quot;key:&quot; + i + &quot; value:&quot; + nfcTag.properties[i]);
41177      }
41178    }, ondetach : function() {
41179      console.log(&quot;NFC Tag is detached&quot;);
41180    }};
41181  adapter.setTagListener(onSuccessCB);
41182
41183  </Code>
41184             <version>
41185  1.0
41186             </version>
41187         </descriptive>
41188         <Type type="object"/>
41189       </Attribute>
41190       <Attribute readonly="readonly" name="isConnected" id="::NFC::NFCTag::isConnected">
41191         <webidl>    readonly attribute boolean isConnected;</webidl>
41192         <descriptive>
41193             <brief>
41194  The value is necessary to check if this tag is connected.
41195             </brief>
41196             <version>
41197  1.0
41198             </version>
41199         </descriptive>
41200         <Type type="boolean"/>
41201       </Attribute>
41202       <Operation name="readNDEF" id="::NFC::NFCTag::readNDEF">
41203         <webidl>     void readNDEF(<ref>NDEFMessageReadCallback</ref> readCallback,
41204                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
41205         <descriptive>
41206             <brief>
41207  Reads the NDEF data from the NFC tag.
41208             </brief>
41209            <description>
41210             <p>
41211 The ErrorCallback is launched with these error types:
41212             </p>
41213             <ul>
41214               <li>
41215  ServiceNotAvailableError - If the NFC service is not available.              </li>
41216               <li>
41217  UnknownError - If any other error occurs.              </li>
41218             </ul>
41219            </description>
41220             <version>
41221  1.0
41222             </version>
41223             <privilege>
41224  http://tizen.org/privilege/nfc.tag
41225             </privilege>
41226             <privilegelevel>
41227  public
41228             </privilegelevel>
41229         </descriptive>
41230         <Type type="void"/>
41231         <ArgumentList>
41232           <Argument name="readCallback">
41233             <descriptive>
41234                 <description><p>
41235  The method invoked in case of successfully reading the NDEF Data.
41236                 </p></description>
41237             </descriptive>
41238             <Type name="NDEFMessageReadCallback"/>
41239           </Argument>
41240           <Argument optional="optional" name="errorCallback">
41241             <descriptive>
41242                 <description><p>
41243  The method invoked in case of any error during reading the NDEF Data.
41244                 </p></description>
41245             </descriptive>
41246             <Type name="ErrorCallback" nullable="nullable"/>
41247           </Argument>
41248         </ArgumentList>
41249         <Raises>
41250           <RaiseException name="WebAPIException">
41251             <descriptive>
41252                 <description><p>
41253  with error type TypeMismatchError, if the input parameter
41254 is not compatible with the expected type for that parameter.
41255                 </p></description>
41256                 <description><p>
41257  with error type SecurityError, if the application does not have the privilege to call this method.
41258                 </p></description>
41259                 <description><p>
41260  with error type NotSupportedError, if current Tag doesn't support NDEF format.
41261                 </p></description>
41262             </descriptive>
41263           </RaiseException>
41264         </Raises>
41265       </Operation>
41266       <Operation name="writeNDEF" id="::NFC::NFCTag::writeNDEF">
41267         <webidl>    void writeNDEF(<ref>NDEFMessage</ref> ndefMessage,
41268                    optional <ref>SuccessCallback</ref>? successCallback,
41269                    optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
41270         <descriptive>
41271             <brief>
41272  Writes the NDEF data to the NFC tag.
41273             </brief>
41274            <description>
41275             <p>
41276 The ErrorCallback is launched with these error types:
41277             </p>
41278             <ul>
41279               <li>
41280  InvalidValuesError: If any of the input parameters contain an invalid value.              </li>
41281               <li>
41282  ServiceNotAvailableError: If the NFC service is not available.               </li>
41283               <li>
41284  UnknownError: In any other error case.               </li>
41285             </ul>
41286            </description>
41287             <version>
41288  1.0
41289             </version>
41290             <privilege>
41291  http://tizen.org/privilege/nfc.tag
41292             </privilege>
41293             <privilegelevel>
41294  public
41295             </privilegelevel>
41296         </descriptive>
41297         <Type type="void"/>
41298         <ArgumentList>
41299           <Argument name="ndefMessage">
41300             <descriptive>
41301                 <description><p>
41302  The NDEF message to write to NFC tag.
41303                 </p></description>
41304             </descriptive>
41305             <Type name="NDEFMessage"/>
41306           </Argument>
41307           <Argument optional="optional" name="successCallback">
41308             <descriptive>
41309                 <description><p>
41310  The method invoked in case of successfully writing the NDEF Data.
41311                 </p></description>
41312             </descriptive>
41313             <Type name="SuccessCallback" nullable="nullable"/>
41314           </Argument>
41315           <Argument optional="optional" name="errorCallback">
41316             <descriptive>
41317                 <description><p>
41318  The method invoked in case of any error during writing the NDEF Data.
41319                 </p></description>
41320             </descriptive>
41321             <Type name="ErrorCallback" nullable="nullable"/>
41322           </Argument>
41323         </ArgumentList>
41324         <Raises>
41325           <RaiseException name="WebAPIException">
41326             <descriptive>
41327                 <description><p>
41328  with error type TypeMismatchError, if the input parameter
41329 is not compatible with the expected type for that parameter.
41330                 </p></description>
41331                 <description><p>
41332  with error type SecurityError, if the application does not have the privilege to call this method.
41333                 </p></description>
41334                 <description><p>
41335  with error type NotSupportedError, if current Tag doesn't support NDEF format.
41336                 </p></description>
41337             </descriptive>
41338           </RaiseException>
41339         </Raises>
41340       </Operation>
41341       <Operation name="transceive" id="::NFC::NFCTag::transceive">
41342         <webidl>    void transceive(byte[] data,
41343                     <ref>ByteArraySuccessCallback</ref> dataCallback,
41344                     optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
41345         <descriptive>
41346             <brief>
41347  Access the raw format card. The transceive function is the only way to access the raw format card (not formatted).
41348 Each tag type requires its own command to access tags.
41349 This API provides low level access of tag operation. (Note that you must know each tag technology.)
41350             </brief>
41351            <description>
41352             <p>
41353 The ErrorCallback is launched with these error types:
41354             </p>
41355             <ul>
41356               <li>
41357  InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
41358               <li>
41359  ServiceNotAvailableError - If the NFC service is not available.              </li>
41360               <li>
41361  UnknownError - If any other error occurs.              </li>
41362             </ul>
41363            </description>
41364             <version>
41365  1.0
41366             </version>
41367             <privilege>
41368  http://tizen.org/privilege/nfc.tag
41369             </privilege>
41370             <privilegelevel>
41371  public
41372             </privilegelevel>
41373         </descriptive>
41374         <Type type="void"/>
41375         <ArgumentList>
41376           <Argument name="data">
41377             <descriptive>
41378                 <description><p>
41379  The raw data to transceive with the NFC tag.
41380                 </p></description>
41381             </descriptive>
41382             <Type type="array">
41383               <Type type="byte"/>
41384             </Type>
41385           </Argument>
41386           <Argument name="dataCallback">
41387             <descriptive>
41388                 <description><p>
41389  Invoked in case of successfully transceiving the raw data.
41390                 </p></description>
41391             </descriptive>
41392             <Type name="ByteArraySuccessCallback"/>
41393           </Argument>
41394           <Argument optional="optional" name="errorCallback">
41395             <descriptive>
41396                 <description><p>
41397  Invoked in case of any error during transceiving the NDEF Data.
41398                 </p></description>
41399             </descriptive>
41400             <Type name="ErrorCallback" nullable="nullable"/>
41401           </Argument>
41402         </ArgumentList>
41403         <Raises>
41404           <RaiseException name="WebAPIException">
41405             <descriptive>
41406                 <description><p>
41407  with error type TypeMismatchError, if the input parameter
41408 is not compatible with the expected type for that parameter.
41409                 </p></description>
41410                 <description><p>
41411  with error type SecurityError, if the application does not have the privilege to call this method.
41412                 </p></description>
41413             </descriptive>
41414           </RaiseException>
41415         </Raises>
41416       </Operation>
41417     </Interface>
41418     <Interface name="NFCPeer" id="::NFC::NFCPeer">
41419       <webidl>  [NoInterfaceObject] interface NFCPeer {
41420     readonly attribute boolean isConnected;
41421     
41422     void setReceiveNDEFListener(<ref>NDEFMessageReadCallback</ref> successCallback) raises(<ref>WebAPIException</ref>);
41423
41424     void unsetReceiveNDEFListener() raises(<ref>WebAPIException</ref>);
41425
41426     void sendNDEF(<ref>NDEFMessage</ref> ndefMessage,
41427                   optional <ref>SuccessCallback</ref>? successCallback,
41428                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
41429
41430   };</webidl>
41431       <descriptive>
41432           <brief>
41433  An interface that provides access to the NFC peer-to-peer target.
41434           </brief>
41435           <version>
41436  1.0
41437           </version>
41438       </descriptive>
41439       <ExtendedAttributeList>
41440         <ExtendedAttribute name="NoInterfaceObject">
41441           <webidl>NoInterfaceObject</webidl>
41442         </ExtendedAttribute>
41443       </ExtendedAttributeList>
41444       <Attribute readonly="readonly" name="isConnected" id="::NFC::NFCPeer::isConnected">
41445         <webidl>    readonly attribute boolean isConnected;</webidl>
41446         <descriptive>
41447             <brief>
41448  The value is necessary to check if this NFC peer-to-peer target is connected.
41449             </brief>
41450             <version>
41451  1.0
41452             </version>
41453         </descriptive>
41454         <Type type="boolean"/>
41455       </Attribute>
41456       <Operation name="setReceiveNDEFListener" id="::NFC::NFCPeer::setReceiveNDEFListener">
41457         <webidl>    void setReceiveNDEFListener(<ref>NDEFMessageReadCallback</ref> successCallback) raises(<ref>WebAPIException</ref>);</webidl>
41458         <descriptive>
41459             <brief>
41460  Registers a callback function to be invoked when an NDEF message is received from the connected NFC peer-to-peer target.
41461             </brief>
41462             <version>
41463  1.0
41464             </version>
41465             <privilege>
41466  http://tizen.org/privilege/nfc.p2p
41467             </privilege>
41468             <privilegelevel>
41469  public
41470             </privilegelevel>
41471             <Code> var adapter = tizen.nfc.getDefaultAdapter();
41472
41473  // Receives NFCPeer
41474  var onSuccessCB = {onattach : function(nfcPeer) {
41475      console.log(&quot;NFC Target is detected&quot;);
41476      nfcPeer.setReceiveNDEFListener(
41477          function(message){
41478             console.log(&quot;Receive message&quot;);
41479          });
41480    }, ondetach : function() {
41481      console.log(&quot;NFC Target is detached&quot;);
41482    }};
41483
41484  adapter.setPeerListener(onSuccessCB);
41485  </Code>
41486         </descriptive>
41487         <Type type="void"/>
41488         <ArgumentList>
41489           <Argument name="successCallback">
41490             <descriptive>
41491                 <description><p>
41492  Invoked in case of successful receiving the message.
41493                 </p></description>
41494             </descriptive>
41495             <Type name="NDEFMessageReadCallback"/>
41496           </Argument>
41497         </ArgumentList>
41498         <Raises>
41499           <RaiseException name="WebAPIException">
41500             <descriptive>
41501                 <description><p>
41502  with error type TypeMismatchError, if the input parameter
41503 is not compatible with the expected type for that parameter.
41504                 </p></description>
41505                 <description><p>
41506  with error type SecurityError, if the application does not have the privilege to call this method.
41507                 </p></description>
41508                 <description><p>
41509  with error type ServiceNotAvailableError, if the NFC service is not available.
41510                 </p></description>
41511                 <description><p>
41512  with error type UnknownError in any other error case.
41513                 </p></description>
41514             </descriptive>
41515           </RaiseException>
41516         </Raises>
41517       </Operation>
41518       <Operation name="unsetReceiveNDEFListener" id="::NFC::NFCPeer::unsetReceiveNDEFListener">
41519         <webidl>    void unsetReceiveNDEFListener() raises(<ref>WebAPIException</ref>);</webidl>
41520         <descriptive>
41521             <brief>
41522  Unregisters the listener for receiving NDEF messages from the NFC peer-to-peer target connected.
41523             </brief>
41524             <version>
41525  1.0
41526             </version>
41527             <privilege>
41528  http://tizen.org/privilege/nfc.p2p
41529             </privilege>
41530             <privilegelevel>
41531  public
41532             </privilegelevel>
41533             <Code> var adapter = tizen.nfc.getDefaultAdapter();
41534  var onSuccessCB = {onattach : function(nfcPeer) {
41535      console.log(&quot;NFC Target is detected&quot;);
41536      nfcPeer.setReceiveNDEFListener(
41537          function(message){
41538             console.log(&quot;Receive message&quot;);
41539             nfcPeer.unsetReceiveNDEFListener();
41540          });
41541    }, ondetach : function() {
41542      console.log(&quot;NFC Target is detached&quot;);
41543    }};
41544  }
41545
41546  adapter.setPeerListener(onSuccessCB);
41547  </Code>
41548         </descriptive>
41549         <Type type="void"/>
41550         <ArgumentList/>
41551         <Raises>
41552           <RaiseException name="WebAPIException">
41553             <descriptive>
41554                 <description><p>
41555  with error type SecurityError, if the application does not have the privilege to call this method.
41556                 </p></description>
41557                 <description><p>
41558  with error type ServiceNotAvailableError, if the NFC service is not available.
41559                 </p></description>
41560                 <description><p>
41561  with error type UnknownError in any other error case.
41562                 </p></description>
41563             </descriptive>
41564           </RaiseException>
41565         </Raises>
41566       </Operation>
41567       <Operation name="sendNDEF" id="::NFC::NFCPeer::sendNDEF">
41568         <webidl>    void sendNDEF(<ref>NDEFMessage</ref> ndefMessage,
41569                   optional <ref>SuccessCallback</ref>? successCallback,
41570                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
41571         <descriptive>
41572             <brief>
41573  Sends data to the NFC peer-to-peer target.
41574             </brief>
41575            <description>
41576             <p>
41577 The ErrorCallback is launched with these error types:
41578             </p>
41579             <ul>
41580               <li>
41581  InvalidValuesError: If any of the input parameters contain an invalid value.              </li>
41582               <li>
41583  ServiceNotAvailableError: If the NFC service is not available.               </li>
41584               <li>
41585  UnknownError: In any other error case.               </li>
41586             </ul>
41587            </description>
41588             <version>
41589  1.0
41590             </version>
41591             <privilege>
41592  http://tizen.org/privilege/nfc.p2p
41593             </privilege>
41594             <privilegelevel>
41595  public
41596             </privilegelevel>
41597         </descriptive>
41598         <Type type="void"/>
41599         <ArgumentList>
41600           <Argument name="ndefMessage">
41601             <descriptive>
41602                 <description><p>
41603  The NDEF message to send to NFC peer-to-peer target.
41604                 </p></description>
41605             </descriptive>
41606             <Type name="NDEFMessage"/>
41607           </Argument>
41608           <Argument optional="optional" name="successCallback">
41609             <descriptive>
41610                 <description><p>
41611  Invoked in case of successfully sending data to NFC peer-to-peer target.
41612                 </p></description>
41613             </descriptive>
41614             <Type name="SuccessCallback" nullable="nullable"/>
41615           </Argument>
41616           <Argument optional="optional" name="errorCallback">
41617             <descriptive>
41618                 <description><p>
41619  Invoked in case of any error during sending.
41620                 </p></description>
41621             </descriptive>
41622             <Type name="ErrorCallback" nullable="nullable"/>
41623           </Argument>
41624         </ArgumentList>
41625         <Raises>
41626           <RaiseException name="WebAPIException">
41627             <descriptive>
41628                 <description><p>
41629  with error type TypeMismatchError, if the input parameter
41630 is not compatible with the expected type for that parameter.
41631                 </p></description>
41632                 <description><p>
41633  with error type SecurityError, if the application does not have the privilege to call this method.
41634                 </p></description>
41635             </descriptive>
41636           </RaiseException>
41637         </Raises>
41638       </Operation>
41639     </Interface>
41640     <Interface name="NDEFMessage" id="::NFC::NDEFMessage">
41641       <webidl>  [Constructor(),
41642    Constructor(<ref>NDEFRecord</ref>[] ndefRecords),
41643    Constructor(byte[] rawData)]
41644   interface NDEFMessage {
41645     readonly attribute long recordCount;
41646     
41647     attribute <ref>NDEFRecord</ref>[] records;
41648
41649     byte[] toByte() raises(<ref>WebAPIException</ref>);
41650   };</webidl>
41651       <descriptive>
41652           <brief>
41653  The NDEFMessage interface. An NDEFmessage is composed of multiple NDEFRecords.
41654 The NDEFMessage must have at least one NDEFRecord.
41655           </brief>
41656           <version>
41657  1.0
41658           </version>
41659       </descriptive>
41660       <ExtendedAttributeList>
41661         <ExtendedAttribute name="Constructor">
41662           <webidl>Constructor()</webidl>
41663           <ArgumentList/>
41664         </ExtendedAttribute>
41665         <ExtendedAttribute name="Constructor">
41666           <webidl>   Constructor(<ref>NDEFRecord</ref>[] ndefRecords)</webidl>
41667           <ArgumentList>
41668             <Argument name="ndefRecords">
41669               <Type type="array">
41670                 <Type name="NDEFRecord"/>
41671               </Type>
41672             </Argument>
41673           </ArgumentList>
41674         </ExtendedAttribute>
41675         <ExtendedAttribute name="Constructor">
41676           <webidl>   Constructor(byte[] rawData)</webidl>
41677           <ArgumentList>
41678             <Argument name="rawData">
41679               <Type type="array">
41680                 <Type type="byte"/>
41681               </Type>
41682             </Argument>
41683           </ArgumentList>
41684         </ExtendedAttribute>
41685       </ExtendedAttributeList>
41686       <Attribute readonly="readonly" name="recordCount" id="::NFC::NDEFMessage::recordCount">
41687         <webidl>    readonly attribute long recordCount;</webidl>
41688         <descriptive>
41689             <brief>
41690  The number of records in the NDEFMessage.
41691             </brief>
41692             <version>
41693  1.0
41694             </version>
41695         </descriptive>
41696         <Type type="long"/>
41697       </Attribute>
41698       <Attribute name="records" id="::NFC::NDEFMessage::records">
41699         <webidl>    attribute <ref>NDEFRecord</ref>[] records;</webidl>
41700         <descriptive>
41701             <brief>
41702  The array of NDEFRecord objects in the NDEFMessage.
41703             </brief>
41704             <version>
41705  1.0
41706             </version>
41707         </descriptive>
41708         <Type type="array">
41709           <Type name="NDEFRecord"/>
41710         </Type>
41711       </Attribute>
41712       <Operation name="toByte" id="::NFC::NDEFMessage::toByte">
41713         <webidl>    byte[] toByte() raises(<ref>WebAPIException</ref>);</webidl>
41714         <descriptive>
41715             <brief>
41716  Gets the serial byte array of the NDEF message.
41717             </brief>
41718            <description>
41719             <p>
41720 If the operation completes successfully, it returns the serial byte array of the NDEF message.
41721             </p>
41722            </description>
41723             <version>
41724  1.0
41725             </version>
41726             <Code> // Gets the cached message.
41727  var cachedMessage = tizen.nfc.getDefaultAdapter().getCachedMessage();
41728  var raw = cachedMessage.toByte();
41729  </Code>
41730         </descriptive>
41731         <Type type="array">
41732           <descriptive>
41733               <description><p>
41734  byte[] The raw data in the NDEFMessage.
41735               </p></description>
41736           </descriptive>
41737           <Type type="byte"/>
41738         </Type>
41739         <ArgumentList/>
41740         <Raises>
41741           <RaiseException name="WebAPIException">
41742             <descriptive>
41743                 <description><p>
41744  with error type TypeMismatchError, if the records whose type is not NDEFRecord are included in the NDEFMessage.
41745                 </p></description>
41746                 <description><p>
41747  with error type UnknownError in any other error case.
41748                 </p></description>
41749             </descriptive>
41750           </RaiseException>
41751         </Raises>
41752       </Operation>
41753     </Interface>
41754     <Interface name="NDEFRecord" id="::NFC::NDEFRecord">
41755       <webidl>  [Constructor(short tnf, byte[] type, byte[] payload, optional byte[]? id),
41756    Constructor(byte[] raw_data)]
41757   interface NDEFRecord {
41758     readonly attribute short tnf;
41759
41760     readonly attribute byte[] type;
41761
41762     readonly attribute byte[] id;
41763     
41764     readonly attribute byte[] payload;
41765   };</webidl>
41766       <descriptive>
41767           <brief>
41768  The NDEFRecord interface.
41769           </brief>
41770           <version>
41771  1.0
41772           </version>
41773       </descriptive>
41774       <ExtendedAttributeList>
41775         <ExtendedAttribute name="Constructor">
41776           <webidl>Constructor(short tnf, byte[] type, byte[] payload, optional byte[]? id)</webidl>
41777           <ArgumentList>
41778             <Argument name="tnf">
41779               <Type type="short"/>
41780             </Argument>
41781             <Argument name="type">
41782               <Type type="array">
41783                 <Type type="byte"/>
41784               </Type>
41785             </Argument>
41786             <Argument name="payload">
41787               <Type type="array">
41788                 <Type type="byte"/>
41789               </Type>
41790             </Argument>
41791             <Argument optional="optional" name="id">
41792               <Type type="array" nullable="nullable">
41793                 <Type type="byte"/>
41794               </Type>
41795             </Argument>
41796           </ArgumentList>
41797         </ExtendedAttribute>
41798         <ExtendedAttribute name="Constructor">
41799           <webidl>   Constructor(byte[] raw_data)</webidl>
41800           <ArgumentList>
41801             <Argument name="raw_data">
41802               <Type type="array">
41803                 <Type type="byte"/>
41804               </Type>
41805             </Argument>
41806           </ArgumentList>
41807         </ExtendedAttribute>
41808       </ExtendedAttributeList>
41809       <Attribute readonly="readonly" name="tnf" id="::NFC::NDEFRecord::tnf">
41810         <webidl>    readonly attribute short tnf;</webidl>
41811         <descriptive>
41812             <brief>
41813  The value of the record type (TNF value).
41814             </brief>
41815            <description>
41816             <p>
41817 At least the following values must be supported:
41818             </p>
41819             <ul>
41820               <li>
41821 NFC_RECORD_TNF_EMPTY - The record type is empty              </li>
41822               <li>
41823 NFC_RECORD_TNF_WELL_KNOWN - Record Type Definition (RTD) format [NFC RTD]              </li>
41824               <li>
41825 NFC_RECORD_TNF_MIME_MEDIA - MIME media types in RFC 2046 [RFC 2046]              </li>
41826               <li>
41827 NFC_RECORD_TNF_URI - Absolute URI as defined in RFC 3986 [RFC 3986]              </li>
41828               <li>
41829 NFC_RECORD_TNF_EXTERNAL_RTD - NFC forum external type [NFC RTD]              </li>
41830               <li>
41831 NFC_RECORD_TNF_UNKNOWN - The payload type is unknown              </li>
41832               <li>
41833 NFC_RECORD_TNF_UNCHANGED - It means the payload is an intermediate or final chunk of a chunked NDEF record              </li>
41834             </ul>
41835            </description>
41836             <version>
41837  1.0
41838             </version>
41839         </descriptive>
41840         <Type type="short"/>
41841       </Attribute>
41842       <Attribute readonly="readonly" name="type" id="::NFC::NDEFRecord::type">
41843         <webidl>    readonly attribute byte[] type;</webidl>
41844         <descriptive>
41845             <brief>
41846  The specified type in byte array.
41847             </brief>
41848            <description>
41849             <p>
41850 The byte array contains <var>0</var> to <var>255</var> bytes.
41851             </p>
41852            </description>
41853             <version>
41854  1.0
41855             </version>
41856         </descriptive>
41857         <Type type="array">
41858           <Type type="byte"/>
41859         </Type>
41860       </Attribute>
41861       <Attribute readonly="readonly" name="id" id="::NFC::NDEFRecord::id">
41862         <webidl>    readonly attribute byte[] id;</webidl>
41863         <descriptive>
41864             <brief>
41865  The record ID.
41866             </brief>
41867            <description>
41868             <p>
41869 The byte array contains <var>0</var> to <var>255</var> bytes.
41870             </p>
41871             <p>
41872 By default, this attribute is set to an empty array.
41873             </p>
41874            </description>
41875             <version>
41876  1.0
41877             </version>
41878         </descriptive>
41879         <Type type="array">
41880           <Type type="byte"/>
41881         </Type>
41882       </Attribute>
41883       <Attribute readonly="readonly" name="payload" id="::NFC::NDEFRecord::payload">
41884         <webidl>    readonly attribute byte[] payload;</webidl>
41885         <descriptive>
41886             <brief>
41887  The record payload.
41888             </brief>
41889            <description>
41890             <p>
41891 The byte array contains <var>0</var> to <var>(2 ** 32 - 1)</var> bytes.
41892             </p>
41893            </description>
41894             <version>
41895  1.0
41896             </version>
41897             <Code> // Creates a new NDEF record.
41898  var newRecord = new tizen.NDEFRecordURI(&quot;https://www.tizen.org/&quot;);
41899  var payload = newRecord.payload;
41900  </Code>
41901         </descriptive>
41902         <Type type="array">
41903           <Type type="byte"/>
41904         </Type>
41905       </Attribute>
41906     </Interface>
41907     <Interface name="NDEFRecordText" id="::NFC::NDEFRecordText">
41908       <webidl>  [Constructor(DOMString text, DOMString languageCode, optional DOMString? encoding)]
41909   interface NDEFRecordText : <ref>NDEFRecord</ref> {
41910     readonly attribute DOMString text;
41911     
41912     readonly attribute DOMString languageCode;
41913     
41914     readonly attribute <ref>NDEFRecordTextEncoding</ref> encoding;
41915   };</webidl>
41916       <descriptive>
41917           <brief>
41918  The NDEFRecord that has the text type payload.
41919           </brief>
41920           <version>
41921  1.0
41922           </version>
41923       </descriptive>
41924       <ExtendedAttributeList>
41925         <ExtendedAttribute name="Constructor">
41926           <webidl>Constructor(DOMString text, DOMString languageCode, optional DOMString? encoding)</webidl>
41927           <ArgumentList>
41928             <Argument name="text">
41929               <Type type="DOMString"/>
41930             </Argument>
41931             <Argument name="languageCode">
41932               <Type type="DOMString"/>
41933             </Argument>
41934             <Argument optional="optional" name="encoding">
41935               <Type type="DOMString" nullable="nullable"/>
41936             </Argument>
41937           </ArgumentList>
41938         </ExtendedAttribute>
41939       </ExtendedAttributeList>
41940       <InterfaceInheritance>
41941         <Name name="NDEFRecord"/>
41942       </InterfaceInheritance>
41943       <Attribute readonly="readonly" name="text" id="::NFC::NDEFRecordText::text">
41944         <webidl>    readonly attribute DOMString text;</webidl>
41945         <descriptive>
41946             <brief>
41947  The encoded text.
41948             </brief>
41949             <version>
41950  1.0
41951             </version>
41952         </descriptive>
41953         <Type type="DOMString"/>
41954       </Attribute>
41955       <Attribute readonly="readonly" name="languageCode" id="::NFC::NDEFRecordText::languageCode">
41956         <webidl>    readonly attribute DOMString languageCode;</webidl>
41957         <descriptive>
41958             <brief>
41959  The language code string value, followed by IANA[RFC 3066] (for example, en-US, ko-KR).
41960             </brief>
41961             <version>
41962  1.0
41963             </version>
41964         </descriptive>
41965         <Type type="DOMString"/>
41966       </Attribute>
41967       <Attribute readonly="readonly" name="encoding" id="::NFC::NDEFRecordText::encoding">
41968         <webidl>    readonly attribute <ref>NDEFRecordTextEncoding</ref> encoding;</webidl>
41969         <descriptive>
41970             <brief>
41971  The encoding type. By default, this attribute is set to UTF8.
41972             </brief>
41973             <version>
41974  1.0
41975             </version>
41976         </descriptive>
41977         <Type name="NDEFRecordTextEncoding"/>
41978       </Attribute>
41979     </Interface>
41980     <Interface name="NDEFRecordURI" id="::NFC::NDEFRecordURI">
41981       <webidl>  [Constructor(DOMString uri)]
41982   interface NDEFRecordURI : <ref>NDEFRecord</ref> {
41983     readonly attribute DOMString uri;
41984   };</webidl>
41985       <descriptive>
41986           <brief>
41987  The NDEFRecord that has URI type payload.
41988           </brief>
41989           <version>
41990  1.0
41991           </version>
41992       </descriptive>
41993       <ExtendedAttributeList>
41994         <ExtendedAttribute name="Constructor">
41995           <webidl>Constructor(DOMString uri)</webidl>
41996           <ArgumentList>
41997             <Argument name="uri">
41998               <Type type="DOMString"/>
41999             </Argument>
42000           </ArgumentList>
42001         </ExtendedAttribute>
42002       </ExtendedAttributeList>
42003       <InterfaceInheritance>
42004         <Name name="NDEFRecord"/>
42005       </InterfaceInheritance>
42006       <Attribute readonly="readonly" name="uri" id="::NFC::NDEFRecordURI::uri">
42007         <webidl>    readonly attribute DOMString uri;</webidl>
42008         <descriptive>
42009             <brief>
42010  The URI string that is stored in the payload.
42011             </brief>
42012             <version>
42013  1.0
42014             </version>
42015         </descriptive>
42016         <Type type="DOMString"/>
42017       </Attribute>
42018     </Interface>
42019     <Interface name="NDEFRecordMedia" id="::NFC::NDEFRecordMedia">
42020       <webidl>  [Constructor(DOMString mimeType, byte[] data)]
42021   interface NDEFRecordMedia : <ref>NDEFRecord</ref> {
42022     readonly attribute DOMString mimeType;
42023   };</webidl>
42024       <descriptive>
42025           <brief>
42026  The NDEFRecord that has mime type payload.
42027           </brief>
42028           <version>
42029  1.0
42030           </version>
42031       </descriptive>
42032       <ExtendedAttributeList>
42033         <ExtendedAttribute name="Constructor">
42034           <webidl>Constructor(DOMString mimeType, byte[] data)</webidl>
42035           <descriptive>
42036              <description>
42037               <ul>
42038                 <li>
42039 <b>data</b> : Mime type payload. The byte array contains <var>0</var> to <var>(2 ** 32 - 1)</var> bytes.                </li>
42040               </ul>
42041              </description>
42042           </descriptive>
42043           <ArgumentList>
42044             <Argument name="mimeType">
42045               <Type type="DOMString"/>
42046             </Argument>
42047             <Argument name="data">
42048               <Type type="array">
42049                 <Type type="byte"/>
42050               </Type>
42051             </Argument>
42052           </ArgumentList>
42053         </ExtendedAttribute>
42054       </ExtendedAttributeList>
42055       <InterfaceInheritance>
42056         <Name name="NDEFRecord"/>
42057       </InterfaceInheritance>
42058       <Attribute readonly="readonly" name="mimeType" id="::NFC::NDEFRecordMedia::mimeType">
42059         <webidl>    readonly attribute DOMString mimeType;</webidl>
42060         <descriptive>
42061             <brief>
42062  The mime type [RFC 2046] (for example, text/plain, image/jpeg ).
42063             </brief>
42064             <version>
42065  1.0
42066             </version>
42067         </descriptive>
42068         <Type type="DOMString"/>
42069       </Attribute>
42070     </Interface>
42071     <Interface name="NFCTagDetectCallback" id="::NFC::NFCTagDetectCallback">
42072       <webidl>  [Callback, NoInterfaceObject] interface NFCTagDetectCallback {
42073     void onattach(<ref>NFCTag</ref> nfcTag);
42074     void ondetach();
42075   };</webidl>
42076       <descriptive>
42077           <brief>
42078  The success callback to be invoked when an NFC tag is detected or lost.
42079           </brief>
42080          <description>
42081           <p>
42082 This callback interface specifies two methods:
42083           </p>
42084           <ul>
42085             <li>
42086  onattach: invoked when an NFC tag is detected            </li>
42087             <li>
42088  ondetach: invoked when the NFC tag is lost            </li>
42089           </ul>
42090           <p>
42091 It is used in NFCAdapter.setTagListener().
42092           </p>
42093          </description>
42094           <version>
42095  1.0
42096           </version>
42097       </descriptive>
42098       <ExtendedAttributeList>
42099         <ExtendedAttribute name="Callback">
42100           <webidl>Callback</webidl>
42101         </ExtendedAttribute>
42102         <ExtendedAttribute name="NoInterfaceObject">
42103           <webidl> NoInterfaceObject</webidl>
42104         </ExtendedAttribute>
42105       </ExtendedAttributeList>
42106       <Operation name="onattach" id="::NFC::NFCTagDetectCallback::onattach">
42107         <webidl>    void onattach(<ref>NFCTag</ref> nfcTag);</webidl>
42108         <descriptive>
42109             <brief>
42110  The method invoked when a tag is attached.
42111             </brief>
42112             <version>
42113  1.0
42114             </version>
42115         </descriptive>
42116         <Type type="void"/>
42117         <ArgumentList>
42118           <Argument name="nfcTag">
42119             <descriptive>
42120                 <description><p>
42121  The attached NFC tag.
42122                 </p></description>
42123             </descriptive>
42124             <Type name="NFCTag"/>
42125           </Argument>
42126         </ArgumentList>
42127       </Operation>
42128       <Operation name="ondetach" id="::NFC::NFCTagDetectCallback::ondetach">
42129         <webidl>    void ondetach();</webidl>
42130         <descriptive>
42131             <brief>
42132  The method invoked when the connected tag is detached.
42133             </brief>
42134             <version>
42135  1.0
42136             </version>
42137         </descriptive>
42138         <Type type="void"/>
42139         <ArgumentList/>
42140       </Operation>
42141     </Interface>
42142     <Interface name="NFCPeerDetectCallback" id="::NFC::NFCPeerDetectCallback">
42143       <webidl>  [Callback, NoInterfaceObject] interface NFCPeerDetectCallback {
42144     void onattach(<ref>NFCPeer</ref> nfcPeer);
42145     void ondetach();
42146   };</webidl>
42147       <descriptive>
42148           <brief>
42149  The success callback to be invoked when an NFC peer-to-peer target is detected or lost.
42150           </brief>
42151          <description>
42152           <p>
42153 This callback interface specifies two methods:
42154           </p>
42155           <ul>
42156             <li>
42157  onattach: invoked when an NFC peer-to-peer target is detected            </li>
42158             <li>
42159  ondetach: invoked when the NFC peer-to-peer target is lost            </li>
42160           </ul>
42161           <p>
42162 It is used in NFCAdapter.setPeerListener().
42163           </p>
42164          </description>
42165           <version>
42166  1.0
42167           </version>
42168       </descriptive>
42169       <ExtendedAttributeList>
42170         <ExtendedAttribute name="Callback">
42171           <webidl>Callback</webidl>
42172         </ExtendedAttribute>
42173         <ExtendedAttribute name="NoInterfaceObject">
42174           <webidl> NoInterfaceObject</webidl>
42175         </ExtendedAttribute>
42176       </ExtendedAttributeList>
42177       <Operation name="onattach" id="::NFC::NFCPeerDetectCallback::onattach">
42178         <webidl>    void onattach(<ref>NFCPeer</ref> nfcPeer);</webidl>
42179         <descriptive>
42180             <brief>
42181  The method invoked when the NFC peer-to-peer target is attached.
42182             </brief>
42183             <version>
42184  1.0
42185             </version>
42186         </descriptive>
42187         <Type type="void"/>
42188         <ArgumentList>
42189           <Argument name="nfcPeer">
42190             <descriptive>
42191                 <description><p>
42192  The attached NFC peer-to-peer target.
42193                 </p></description>
42194             </descriptive>
42195             <Type name="NFCPeer"/>
42196           </Argument>
42197         </ArgumentList>
42198       </Operation>
42199       <Operation name="ondetach" id="::NFC::NFCPeerDetectCallback::ondetach">
42200         <webidl>    void ondetach();</webidl>
42201         <descriptive>
42202             <brief>
42203  The method invoked when the NFC peer-to-peer target connected is detached.
42204             </brief>
42205             <version>
42206  1.0
42207             </version>
42208         </descriptive>
42209         <Type type="void"/>
42210         <ArgumentList/>
42211       </Operation>
42212     </Interface>
42213     <Interface name="NDEFMessageReadCallback" id="::NFC::NDEFMessageReadCallback">
42214       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface NDEFMessageReadCallback {
42215     void onsuccess(<ref>NDEFMessage</ref> ndefMessage);
42216   };</webidl>
42217       <descriptive>
42218           <brief>
42219  The success callback to be invoked when data has been read successfully from the NFC tag or target.
42220           </brief>
42221          <description>
42222           <p>
42223 This callback interface specifies a success method with 
42224 an NDEF message as an input parameter.
42225 It is used in asynchronous
42226 operations, such as NFCTag.readNDEF() or NFCPeer.setReceiveNDEFListener().
42227           </p>
42228          </description>
42229           <version>
42230  1.0
42231           </version>
42232       </descriptive>
42233       <ExtendedAttributeList>
42234         <ExtendedAttribute name="Callback" value="FunctionOnly">
42235           <webidl>Callback</webidl>
42236         </ExtendedAttribute>
42237         <ExtendedAttribute name="NoInterfaceObject">
42238           <webidl> NoInterfaceObject</webidl>
42239         </ExtendedAttribute>
42240       </ExtendedAttributeList>
42241       <Operation name="onsuccess" id="::NFC::NDEFMessageReadCallback::onsuccess">
42242         <webidl>    void onsuccess(<ref>NDEFMessage</ref> ndefMessage);</webidl>
42243         <descriptive>
42244             <brief>
42245  The method invoked when the asynchronous call completes successfully.
42246             </brief>
42247             <version>
42248  1.0
42249             </version>
42250         </descriptive>
42251         <Type type="void"/>
42252         <ArgumentList>
42253           <Argument name="ndefMessage">
42254             <descriptive>
42255                 <description><p>
42256  NDEF message that is read from the NFC tag or target.
42257                 </p></description>
42258             </descriptive>
42259             <Type name="NDEFMessage"/>
42260           </Argument>
42261         </ArgumentList>
42262       </Operation>
42263     </Interface>
42264     <Interface name="ByteArraySuccessCallback" id="::NFC::ByteArraySuccessCallback">
42265       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface ByteArraySuccessCallback {
42266     void onsuccess(byte[] data);
42267   };</webidl>
42268       <descriptive>
42269           <brief>
42270  The success callback to be invoked when NFCTag.transceive() completes successfully.
42271           </brief>
42272          <description>
42273           <p>
42274 This callback interface specifies a success method, with
42275 a raw data as an input parameter. It is used in NFCTag.transceive().
42276           </p>
42277          </description>
42278           <version>
42279  1.0
42280           </version>
42281       </descriptive>
42282       <ExtendedAttributeList>
42283         <ExtendedAttribute name="Callback" value="FunctionOnly">
42284           <webidl>Callback</webidl>
42285         </ExtendedAttribute>
42286         <ExtendedAttribute name="NoInterfaceObject">
42287           <webidl> NoInterfaceObject</webidl>
42288         </ExtendedAttribute>
42289       </ExtendedAttributeList>
42290       <Operation name="onsuccess" id="::NFC::ByteArraySuccessCallback::onsuccess">
42291         <webidl>    void onsuccess(byte[] data);</webidl>
42292         <descriptive>
42293             <brief>
42294  The method invoked when the asynchronous call completes successfully.
42295             </brief>
42296             <version>
42297  1.0
42298             </version>
42299         </descriptive>
42300         <Type type="void"/>
42301         <ArgumentList>
42302           <Argument name="data">
42303             <descriptive>
42304                 <description><p>
42305  The raw data that is read from NFC tag or response of transceive operation.
42306                 </p></description>
42307             </descriptive>
42308             <Type type="array">
42309               <Type type="byte"/>
42310             </Type>
42311           </Argument>
42312         </ArgumentList>
42313       </Operation>
42314     </Interface>
42315   </Module>
42316   <Module name="Notification" id="::Notification">
42317     <webidl>module Notification {
42318
42319     typedef DOMString NotificationId;
42320     
42321     enum NotificationType { &quot;STATUS&quot; };
42322
42323     enum StatusNotificationType { &quot;SIMPLE&quot;, &quot;THUMBNAIL&quot;, &quot;ONGOING&quot;, &quot;PROGRESS&quot; };
42324
42325     enum NotificationProgressType { &quot;PERCENTAGE&quot;,  &quot;BYTE&quot; };
42326
42327
42328     [NoInterfaceObject] interface NotificationObject {
42329         readonly attribute <ref>NotificationManager</ref> notification;
42330     };
42331     <ref>Tizen</ref> implements <ref>NotificationObject</ref>;
42332
42333     [NoInterfaceObject] interface NotificationManager {
42334
42335     void post(<ref>Notification</ref> notification) raises(<ref>WebAPIException</ref>);
42336
42337     void update(<ref>Notification</ref> notification) raises(<ref>WebAPIException</ref>);
42338
42339     void remove(<ref>NotificationId</ref> id) raises(<ref>WebAPIException</ref>);
42340
42341     void removeAll() raises(<ref>WebAPIException</ref>);
42342
42343     <ref>Notification</ref> get(<ref>NotificationId</ref> id) raises(<ref>WebAPIException</ref>);
42344
42345     <ref>Notification</ref>[] getAll() raises(<ref>WebAPIException</ref>);
42346
42347     };
42348
42349     
42350     [NoInterfaceObject] interface Notification {
42351     
42352     
42353     readonly attribute <ref>NotificationId</ref> id;
42354
42355     readonly attribute <ref>NotificationType</ref> type;
42356
42357     readonly attribute Date postedTime;
42358
42359     attribute DOMString title;
42360
42361     attribute DOMString? content;
42362
42363     };
42364
42365        
42366     dictionary StatusNotificationInit {
42367         DOMString? content;
42368         DOMString? iconPath; 
42369         DOMString? soundPath;
42370         boolean? vibration;
42371         <ref>ApplicationControl</ref>? appControl;
42372         <ref>ApplicationId</ref>? appId;
42373         <ref>NotificationProgressType</ref>? progressType;
42374         unsigned long? progressValue;
42375         long? number;
42376         DOMString? subIconPath;
42377         <ref>NotificationDetailInfo</ref>[]? detailInfo;
42378         DOMString? ledColor;
42379         unsigned long ledOnPeriod;
42380         unsigned long ledOffPeriod;
42381         DOMString? backgroundImagePath;
42382         DOMString[]? thumbnails;
42383     };
42384     
42385    [Constructor(<ref>StatusNotificationType</ref> statusType, DOMString title, optional <ref>StatusNotificationInit</ref>? notificationInitDict)]
42386
42387
42388     interface StatusNotification : <ref>Notification</ref> {
42389
42390     readonly attribute <ref>StatusNotificationType</ref> statusType;
42391     
42392     attribute DOMString? iconPath;
42393
42394     attribute DOMString? subIconPath;
42395
42396     attribute long? number;
42397     
42398     attribute <ref>NotificationDetailInfo</ref>[]? detailInfo;
42399
42400     attribute DOMString? ledColor;
42401
42402     attribute unsigned long ledOnPeriod;
42403
42404     attribute unsigned long ledOffPeriod;
42405
42406      attribute DOMString? backgroundImagePath;
42407
42408      attribute DOMString[]? thumbnails;
42409
42410      attribute DOMString? soundPath;
42411   
42412      attribute boolean vibration;
42413
42414      attribute <ref>ApplicationControl</ref>? appControl;
42415
42416      attribute <ref>ApplicationId</ref>? appId;
42417
42418      attribute <ref>NotificationProgressType</ref> progressType;  
42419
42420      attribute unsigned long? progressValue;
42421     };
42422
42423
42424 [Constructor(DOMString mainText, optional DOMString? subText)]
42425     interface NotificationDetailInfo {
42426     attribute DOMString mainText;
42427
42428     attribute DOMString? subText;
42429     };
42430     
42431 };</webidl>
42432     <descriptive>
42433         <brief>
42434  The Notification API provides a way to notify users of events that happen in an application.
42435         </brief>
42436        <description>
42437         <p>
42438 For more information on the Notification features, see <a href="../../org.tizen.web.appprogramming/html/guide/ui_guide/notification.htm">Notification Guide</a>.
42439         </p>
42440        </description>
42441         <version>
42442  2.0
42443         </version>
42444     </descriptive>
42445     <Typedef name="NotificationId" id="::Notification::NotificationId">
42446       <webidl>    typedef DOMString NotificationId;</webidl>
42447       <descriptive>
42448           <brief>
42449  A notification ID.
42450           </brief>
42451           <version>
42452  2.0
42453           </version>
42454       </descriptive>
42455       <Type type="DOMString"/>
42456     </Typedef>
42457     <Enum name="NotificationType" id="::Notification::NotificationType">
42458       <webidl>    enum NotificationType { &quot;STATUS&quot; };</webidl>
42459       <descriptive>
42460           <brief>
42461  A notification type.
42462           </brief>
42463          <description>
42464           <p>
42465 The following notification type is supported: 
42466           </p>
42467           <ul>
42468             <li>
42469 STATUS - The posted status notification is displayed in status bar and the notification tray.
42470 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>
42471           </ul>
42472          </description>
42473           <version>
42474  2.0
42475           </version>
42476       </descriptive>
42477       <EnumValue stringvalue="STATUS">
42478         <webidl> &quot;STATUS</webidl>
42479       </EnumValue>
42480     </Enum>
42481     <Enum name="StatusNotificationType" id="::Notification::StatusNotificationType">
42482       <webidl>    enum StatusNotificationType { &quot;SIMPLE&quot;, &quot;THUMBNAIL&quot;, &quot;ONGOING&quot;, &quot;PROGRESS&quot; };</webidl>
42483       <descriptive>
42484           <brief>
42485  A status notification type.
42486           </brief>
42487          <description>
42488           <p>
42489 The following status notification types are supported: 
42490           </p>
42491           <ul>
42492             <li>
42493 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>
42494             <li>
42495 THUMBNAIL - The thumbnail status notification posts a thumbnail-format notification which includes several thumbnail image paths.
42496 The thumbnail status notification is also removed by a user selection.
42497             </li>
42498             <li>
42499 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>
42500             <li>
42501 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>
42502           </ul>
42503          </description>
42504           <version>
42505  2.0
42506           </version>
42507       </descriptive>
42508       <EnumValue stringvalue="SIMPLE">
42509         <webidl> &quot;SIMPLE</webidl>
42510       </EnumValue>
42511       <EnumValue stringvalue="THUMBNAIL">
42512         <webidl> &quot;THUMBNAIL</webidl>
42513       </EnumValue>
42514       <EnumValue stringvalue="ONGOING">
42515         <webidl> &quot;ONGOING</webidl>
42516       </EnumValue>
42517       <EnumValue stringvalue="PROGRESS">
42518         <webidl> &quot;PROGRESS</webidl>
42519       </EnumValue>
42520     </Enum>
42521     <Enum name="NotificationProgressType" id="::Notification::NotificationProgressType">
42522       <webidl>    enum NotificationProgressType { &quot;PERCENTAGE&quot;,  &quot;BYTE&quot; };</webidl>
42523       <descriptive>
42524           <brief>
42525  A notification progress type.
42526           </brief>
42527          <description>
42528           <p>
42529 Supporting notification progress types are: 
42530           </p>
42531           <ul>
42532             <li>
42533  &quot;BYTE&quot; - The progress is indicated in bytes.            </li>
42534             <li>
42535  &quot;PERCENTAGE&quot; -The progress is indicated in percentage.            </li>
42536           </ul>
42537          </description>
42538           <version>
42539  2.1
42540           </version>
42541       </descriptive>
42542       <EnumValue stringvalue="PERCENTAGE">
42543         <webidl> &quot;PERCENTAGE</webidl>
42544       </EnumValue>
42545       <EnumValue stringvalue="BYTE">
42546         <webidl>  &quot;BYTE</webidl>
42547       </EnumValue>
42548     </Enum>
42549     <Interface name="NotificationObject" id="::Notification::NotificationObject">
42550       <webidl>    [NoInterfaceObject] interface NotificationObject {
42551         readonly attribute <ref>NotificationManager</ref> notification;
42552     };</webidl>
42553       <descriptive>
42554           <brief>
42555  Defines what is instantiated by the <em>Tizen</em> object.
42556           </brief>
42557          <description>
42558           <p>
42559 There is a <em>tizen.notification</em> object that allows access to the
42560 Notification API.
42561           </p>
42562          </description>
42563           <version>
42564  2.0
42565           </version>
42566       </descriptive>
42567       <ExtendedAttributeList>
42568         <ExtendedAttribute name="NoInterfaceObject">
42569           <webidl>NoInterfaceObject</webidl>
42570         </ExtendedAttribute>
42571       </ExtendedAttributeList>
42572       <Attribute readonly="readonly" name="notification" id="::Notification::NotificationObject::notification">
42573         <webidl>        readonly attribute <ref>NotificationManager</ref> notification;</webidl>
42574         <Type name="NotificationManager"/>
42575       </Attribute>
42576     </Interface>
42577     <Implements name1="Tizen" name2="NotificationObject">
42578       <webidl>    <ref>Tizen</ref> implements <ref>NotificationObject</ref>;</webidl>
42579     </Implements>
42580     <Interface name="NotificationManager" id="::Notification::NotificationManager">
42581       <webidl>    [NoInterfaceObject] interface NotificationManager {
42582
42583     void post(<ref>Notification</ref> notification) raises(<ref>WebAPIException</ref>);
42584
42585     void update(<ref>Notification</ref> notification) raises(<ref>WebAPIException</ref>);
42586
42587     void remove(<ref>NotificationId</ref> id) raises(<ref>WebAPIException</ref>);
42588
42589     void removeAll() raises(<ref>WebAPIException</ref>);
42590
42591     <ref>Notification</ref> get(<ref>NotificationId</ref> id) raises(<ref>WebAPIException</ref>);
42592
42593     <ref>Notification</ref>[] getAll() raises(<ref>WebAPIException</ref>);
42594
42595     };</webidl>
42596       <descriptive>
42597           <brief>
42598  Notification manager interface that provides access to the API.
42599           </brief>
42600          <description>
42601           <p>
42602 This interface provides access to the notification object.
42603           </p>
42604          </description>
42605           <version>
42606  2.0
42607           </version>
42608       </descriptive>
42609       <ExtendedAttributeList>
42610         <ExtendedAttribute name="NoInterfaceObject">
42611           <webidl>NoInterfaceObject</webidl>
42612         </ExtendedAttribute>
42613       </ExtendedAttributeList>
42614       <Operation name="post" id="::Notification::NotificationManager::post">
42615         <webidl>    void post(<ref>Notification</ref> notification) raises(<ref>WebAPIException</ref>);</webidl>
42616         <descriptive>
42617             <brief>
42618  Posts a notification to display.
42619             </brief>
42620             <version>
42621  2.0
42622             </version>
42623             <privilegelevel>
42624  public
42625             </privilegelevel>
42626             <privilege>
42627  http://tizen.org/privilege/notification
42628             </privilege>
42629             <Code> try {
42630       var appControl = new tizen.ApplicationControl(
42631                        &quot;http://tizen.org/appcontrol/operation/create_content&quot;,
42632                        null,
42633                        &quot;image/jpg&quot;,
42634                        null);
42635       var notificationDict = {
42636                   content : &quot;This is a simple notification.&quot;,
42637                   iconPath : &quot;images/image1.jpg&quot;,
42638                   soundPath : &quot;music/Over the horizon.mp3&quot;, 
42639                   vibration : true, 
42640                   appControl : appControl};
42641        
42642       var notification = new tizen.StatusNotification(&quot;SIMPLE&quot;, 
42643                   &quot;Simple notification&quot;, notificationDict);
42644                        
42645       tizen.notification.post(notification);
42646  } catch (err) {
42647       console.log (err.name + &quot;: &quot; + err.message);
42648  }
42649  </Code>
42650         </descriptive>
42651         <Type type="void"/>
42652         <ArgumentList>
42653           <Argument name="notification">
42654             <descriptive>
42655                 <description><p>
42656  A notification to post.
42657                 </p></description>
42658             </descriptive>
42659             <Type name="Notification"/>
42660           </Argument>
42661         </ArgumentList>
42662         <Raises>
42663           <RaiseException name="WebAPIException">
42664             <descriptive>
42665                 <description><p>
42666  with error type TypeMismatchError, if any of the input parameter is not compatible with the expected type for that parameter.
42667                 </p></description>
42668                 <description><p>
42669  with error type InvalidValuesError, if any of the input 
42670 parameters contain an invalid value.
42671                 </p></description>
42672                 <description><p>
42673  with error type SecurityError, if the application does not have the privilege to call this method.
42674                 </p></description>
42675                 <description><p>
42676  with error type UnknownError if any other error occurs. 
42677                 </p></description>
42678             </descriptive>
42679           </RaiseException>
42680         </Raises>
42681       </Operation>
42682       <Operation name="update" id="::Notification::NotificationManager::update">
42683         <webidl>    void update(<ref>Notification</ref> notification) raises(<ref>WebAPIException</ref>);</webidl>
42684         <descriptive>
42685             <brief>
42686  Updates a previously posted notification. 
42687             </brief>
42688             <version>
42689  2.0
42690             </version>
42691             <privilegelevel>
42692  public
42693             </privilegelevel>
42694             <privilege>
42695  http://tizen.org/privilege/notification
42696             </privilege>
42697             <Code> try {
42698       // Uses a variable for the previously posted notification.
42699       notification.content = &quot;My notification&quot;;
42700       tizen.notification.update(notification); 
42701  } catch (err) {
42702       console.log (err.name + &quot;: &quot; + err.message);
42703  }
42704    
42705 </Code>
42706         </descriptive>
42707         <Type type="void"/>
42708         <ArgumentList>
42709           <Argument name="notification">
42710             <descriptive>
42711                 <description><p>
42712  A notification to update.
42713                 </p></description>
42714             </descriptive>
42715             <Type name="Notification"/>
42716           </Argument>
42717         </ArgumentList>
42718         <Raises>
42719           <RaiseException name="WebAPIException">
42720             <descriptive>
42721                 <description><p>
42722  with error type TypeMismatchError, if any of the input parameter is not compatible with the expected type for that parameter.
42723                 </p></description>
42724                 <description><p>
42725  with error type InvalidValuesError, if any of the input 
42726 parameters contain an invalid value.
42727                 </p></description>
42728                 <description><p>
42729  with error type SecurityError, if the application does not have the privilege to call this method.
42730                 </p></description>
42731                 <description><p>
42732  with error type UnknownError if any other error occurs. 
42733                 </p></description>
42734             </descriptive>
42735           </RaiseException>
42736         </Raises>
42737       </Operation>
42738       <Operation name="remove" id="::Notification::NotificationManager::remove">
42739         <webidl>    void remove(<ref>NotificationId</ref> id) raises(<ref>WebAPIException</ref>);</webidl>
42740         <descriptive>
42741             <brief>
42742  Removes a previously posted notification. 
42743             </brief>
42744             <version>
42745  2.0
42746             </version>
42747             <privilegelevel>
42748  public
42749             </privilegelevel>
42750             <privilege>
42751  http://tizen.org/privilege/notification
42752             </privilege>
42753             <Code> try {
42754       // Uses a variable for the previously posted notification.
42755       tizen.notification.remove(notification.id); 
42756  } catch (err) {
42757       console.log (err.name + &quot;: &quot; + err.message);
42758  }
42759    
42760 </Code>
42761         </descriptive>
42762         <Type type="void"/>
42763         <ArgumentList>
42764           <Argument name="id">
42765             <descriptive>
42766                 <description><p>
42767  A previously posted notification ID to remove.
42768                 </p></description>
42769             </descriptive>
42770             <Type name="NotificationId"/>
42771           </Argument>
42772         </ArgumentList>
42773         <Raises>
42774           <RaiseException name="WebAPIException">
42775             <descriptive>
42776                 <description><p>
42777  with error type TypeMismatchError, if any of the input parameter is not compatible with the expected type for that parameter.
42778                 </p></description>
42779                 <description><p>
42780  with error type NotFoundError, if NotificationId is not found in the previously posted notifications.
42781                 </p></description>
42782                 <description><p>
42783  with error type SecurityError, if the application does not have the privilege to call this method.
42784                 </p></description>
42785                 <description><p>
42786  with error type UnknownError if any other error occurs. 
42787                 </p></description>
42788             </descriptive>
42789           </RaiseException>
42790         </Raises>
42791       </Operation>
42792       <Operation name="removeAll" id="::Notification::NotificationManager::removeAll">
42793         <webidl>    void removeAll() raises(<ref>WebAPIException</ref>);</webidl>
42794         <descriptive>
42795             <brief>
42796  Removes all notifications that have been posted by the current application.
42797             </brief>
42798             <version>
42799  2.0
42800             </version>
42801             <privilegelevel>
42802  public
42803             </privilegelevel>
42804             <privilege>
42805  http://tizen.org/privilege/notification
42806             </privilege>
42807             <Code> try {
42808       tizen.notification.removeAll(); 
42809  } catch (err) {
42810       console.log (err.name + &quot;: &quot; + err.message);
42811  }
42812    
42813 </Code>
42814         </descriptive>
42815         <Type type="void"/>
42816         <ArgumentList/>
42817         <Raises>
42818           <RaiseException name="WebAPIException">
42819             <descriptive>
42820                 <description><p>
42821  with error type SecurityError, if the application does not have the privilege to call this method.
42822                 </p></description>
42823                 <description><p>
42824  with error type UnknownError if any other error occurs. 
42825                 </p></description>
42826             </descriptive>
42827           </RaiseException>
42828         </Raises>
42829       </Operation>
42830       <Operation name="get" id="::Notification::NotificationManager::get">
42831         <webidl>    <ref>Notification</ref> get(<ref>NotificationId</ref> id) raises(<ref>WebAPIException</ref>);</webidl>
42832         <descriptive>
42833             <brief>
42834  Gets a notification that has previously been posted by the current application. Note that the obtaining notification's progressType is <em>PERCENTAGE</em>            </brief>
42835             <version>
42836  2.0
42837             </version>
42838             <Code> try {
42839       // Uses a variable for the previously posted notification
42840       // Saves notification ID for future use
42841       var myId = notification.id;
42842        
42843       var myNotification = tizen.notification.get(myId); 
42844  } catch (err) {
42845       console.log (err.name + &quot;: &quot; + err.message);
42846  }
42847    
42848 </Code>
42849         </descriptive>
42850         <Type name="Notification"/>
42851         <ArgumentList>
42852           <Argument name="id">
42853             <descriptive>
42854                 <description><p>
42855  A previously posted notification ID.
42856                 </p></description>
42857             </descriptive>
42858             <Type name="NotificationId"/>
42859           </Argument>
42860         </ArgumentList>
42861         <Raises>
42862           <RaiseException name="WebAPIException">
42863             <descriptive>
42864                 <description><p>
42865  with error type NotFoundError, if NotificationId is not found in the previously posted notifications.
42866                 </p></description>
42867                 <description><p>
42868  with error type UnknownError if any other error occurs. 
42869                 </p></description>
42870             </descriptive>
42871           </RaiseException>
42872         </Raises>
42873       </Operation>
42874       <Operation name="getAll" id="::Notification::NotificationManager::getAll">
42875         <webidl>    <ref>Notification</ref>[] getAll() raises(<ref>WebAPIException</ref>);</webidl>
42876         <descriptive>
42877             <brief>
42878  Gets all notifications that have previously been posted by the current application. Note that the obtaining notification's progressType is <em>PERCENTAGE</em>            </brief>
42879             <version>
42880  2.0
42881             </version>
42882             <Code> try {
42883      var notifications = tizen.notification.getAll();
42884      var index = 0;
42885      
42886      for ( index = 0; notifications.length > index; index++ )
42887      {
42888          console.log(notifications[index].id);
42889          console.log(notifications[index].title);
42890          console.log(notifications[index].statusType);
42891          console.log(notifications[index].type);
42892          console.log(notifications[index].content);
42893          console.log(notifications[index].postedTime);
42894          console.log(notifications[index].iconPath);
42895          console.log(notifications[index].soundPath);
42896          console.log(notifications[index].vibration);
42897          console.log(notifications[index].appControl);
42898      }
42899  } catch (err) {
42900      console.log (err.name + &quot;: &quot; + err.message);
42901  }
42902  </Code>
42903         </descriptive>
42904         <Type type="array">
42905           <Type name="Notification"/>
42906         </Type>
42907         <ArgumentList/>
42908         <Raises>
42909           <RaiseException name="WebAPIException">
42910             <descriptive>
42911                 <description><p>
42912  with error type UnknownError, if any other error occurs. 
42913                 </p></description>
42914             </descriptive>
42915           </RaiseException>
42916         </Raises>
42917       </Operation>
42918     </Interface>
42919     <Interface name="Notification" id="::Notification::Notification">
42920       <webidl>    [NoInterfaceObject] interface Notification {
42921     
42922     
42923     readonly attribute <ref>NotificationId</ref> id;
42924
42925     readonly attribute <ref>NotificationType</ref> type;
42926
42927     readonly attribute Date postedTime;
42928
42929     attribute DOMString title;
42930
42931     attribute DOMString? content;
42932
42933     };</webidl>
42934       <descriptive>
42935           <brief>
42936  This interface offers common attributes to represent <em>Notification</em> object.
42937           </brief>
42938           <version>
42939  2.0
42940           </version>
42941       </descriptive>
42942       <ExtendedAttributeList>
42943         <ExtendedAttribute name="NoInterfaceObject">
42944           <webidl>NoInterfaceObject</webidl>
42945         </ExtendedAttribute>
42946       </ExtendedAttributeList>
42947       <Attribute readonly="readonly" name="id" id="::Notification::Notification::id">
42948         <webidl>    readonly attribute <ref>NotificationId</ref> id;</webidl>
42949         <descriptive>
42950             <brief>
42951  The Notification identifier. Before the notification is posted, this value is undefined.
42952             </brief>
42953             <version>
42954  2.0
42955             </version>
42956         </descriptive>
42957         <Type name="NotificationId"/>
42958       </Attribute>
42959       <Attribute readonly="readonly" name="type" id="::Notification::Notification::type">
42960         <webidl>    readonly attribute <ref>NotificationType</ref> type;</webidl>
42961         <descriptive>
42962             <brief>
42963  The Notification type.
42964             </brief>
42965             <version>
42966  2.0
42967             </version>
42968         </descriptive>
42969         <Type name="NotificationType"/>
42970       </Attribute>
42971       <Attribute readonly="readonly" name="postedTime" id="::Notification::Notification::postedTime">
42972         <webidl>    readonly attribute Date postedTime;</webidl>
42973         <descriptive>
42974             <brief>
42975  The time that the notification is posted. Before the notification is posted, this value is undefined.
42976             </brief>
42977             <version>
42978  2.0
42979             </version>
42980         </descriptive>
42981         <Type type="Date"/>
42982       </Attribute>
42983       <Attribute name="title" id="::Notification::Notification::title">
42984         <webidl>    attribute DOMString title;</webidl>
42985         <descriptive>
42986             <brief>
42987  The title to display in a notification.
42988             </brief>
42989             <version>
42990  2.0
42991             </version>
42992         </descriptive>
42993         <Type type="DOMString"/>
42994       </Attribute>
42995       <Attribute name="content" id="::Notification::Notification::content">
42996         <webidl>    attribute DOMString? content;</webidl>
42997         <descriptive>
42998             <brief>
42999  The content to display in a notification.
43000             </brief>
43001             <version>
43002  2.0
43003             </version>
43004         </descriptive>
43005         <Type type="DOMString" nullable="nullable"/>
43006       </Attribute>
43007     </Interface>
43008     <Dictionary name="StatusNotificationInit" id="::Notification::StatusNotificationInit">
43009       <webidl>    dictionary StatusNotificationInit {
43010         DOMString? content;
43011         DOMString? iconPath; 
43012         DOMString? soundPath;
43013         boolean? vibration;
43014         <ref>ApplicationControl</ref>? appControl;
43015         <ref>ApplicationId</ref>? appId;
43016         <ref>NotificationProgressType</ref>? progressType;
43017         unsigned long? progressValue;
43018         long? number;
43019         DOMString? subIconPath;
43020         <ref>NotificationDetailInfo</ref>[]? detailInfo;
43021         DOMString? ledColor;
43022         unsigned long ledOnPeriod;
43023         unsigned long ledOffPeriod;
43024         DOMString? backgroundImagePath;
43025         DOMString[]? thumbnails;
43026     };</webidl>
43027       <descriptive>
43028           <brief>
43029  The properties of StatusNotification, to pass a constructor.
43030           </brief>
43031           <version>
43032  2.0
43033           </version>
43034       </descriptive>
43035       <DictionaryMember name="content" id="::Notification::StatusNotificationInit::content">
43036         <webidl>        DOMString? content;</webidl>
43037         <Type type="DOMString" nullable="nullable"/>
43038       </DictionaryMember>
43039       <DictionaryMember name="iconPath" id="::Notification::StatusNotificationInit::iconPath">
43040         <webidl>        DOMString? iconPath;</webidl>
43041         <Type type="DOMString" nullable="nullable"/>
43042       </DictionaryMember>
43043       <DictionaryMember name="soundPath" id="::Notification::StatusNotificationInit::soundPath">
43044         <webidl>        DOMString? soundPath;</webidl>
43045         <Type type="DOMString" nullable="nullable"/>
43046       </DictionaryMember>
43047       <DictionaryMember name="vibration" id="::Notification::StatusNotificationInit::vibration">
43048         <webidl>        boolean? vibration;</webidl>
43049         <Type type="boolean" nullable="nullable"/>
43050       </DictionaryMember>
43051       <DictionaryMember name="appControl" id="::Notification::StatusNotificationInit::appControl">
43052         <webidl>        <ref>ApplicationControl</ref>? appControl;</webidl>
43053         <Type name="ApplicationControl" nullable="nullable"/>
43054       </DictionaryMember>
43055       <DictionaryMember name="appId" id="::Notification::StatusNotificationInit::appId">
43056         <webidl>        <ref>ApplicationId</ref>? appId;</webidl>
43057         <Type name="ApplicationId" nullable="nullable"/>
43058       </DictionaryMember>
43059       <DictionaryMember name="progressType" id="::Notification::StatusNotificationInit::progressType">
43060         <webidl>        <ref>NotificationProgressType</ref>? progressType;</webidl>
43061         <Type name="NotificationProgressType" nullable="nullable"/>
43062       </DictionaryMember>
43063       <DictionaryMember name="progressValue" id="::Notification::StatusNotificationInit::progressValue">
43064         <webidl>        unsigned long? progressValue;</webidl>
43065         <Type type="unsigned long" nullable="nullable"/>
43066       </DictionaryMember>
43067       <DictionaryMember name="number" id="::Notification::StatusNotificationInit::number">
43068         <webidl>        long? number;</webidl>
43069         <Type type="long" nullable="nullable"/>
43070       </DictionaryMember>
43071       <DictionaryMember name="subIconPath" id="::Notification::StatusNotificationInit::subIconPath">
43072         <webidl>        DOMString? subIconPath;</webidl>
43073         <Type type="DOMString" nullable="nullable"/>
43074       </DictionaryMember>
43075       <DictionaryMember name="detailInfo" id="::Notification::StatusNotificationInit::detailInfo">
43076         <webidl>        <ref>NotificationDetailInfo</ref>[]? detailInfo;</webidl>
43077         <Type type="array" nullable="nullable">
43078           <Type name="NotificationDetailInfo"/>
43079         </Type>
43080       </DictionaryMember>
43081       <DictionaryMember name="ledColor" id="::Notification::StatusNotificationInit::ledColor">
43082         <webidl>        DOMString? ledColor;</webidl>
43083         <Type type="DOMString" nullable="nullable"/>
43084       </DictionaryMember>
43085       <DictionaryMember name="ledOnPeriod" id="::Notification::StatusNotificationInit::ledOnPeriod">
43086         <webidl>        unsigned long ledOnPeriod;</webidl>
43087         <Type type="unsigned long"/>
43088       </DictionaryMember>
43089       <DictionaryMember name="ledOffPeriod" id="::Notification::StatusNotificationInit::ledOffPeriod">
43090         <webidl>        unsigned long ledOffPeriod;</webidl>
43091         <Type type="unsigned long"/>
43092       </DictionaryMember>
43093       <DictionaryMember name="backgroundImagePath" id="::Notification::StatusNotificationInit::backgroundImagePath">
43094         <webidl>        DOMString? backgroundImagePath;</webidl>
43095         <Type type="DOMString" nullable="nullable"/>
43096       </DictionaryMember>
43097       <DictionaryMember name="thumbnails" id="::Notification::StatusNotificationInit::thumbnails">
43098         <webidl>        DOMString[]? thumbnails;</webidl>
43099         <Type type="array" nullable="nullable">
43100           <Type type="DOMString"/>
43101         </Type>
43102       </DictionaryMember>
43103     </Dictionary>
43104     <Interface name="StatusNotification" id="::Notification::StatusNotification">
43105       <webidl>   [Constructor(<ref>StatusNotificationType</ref> statusType, DOMString title, optional <ref>StatusNotificationInit</ref>? notificationInitDict)]
43106
43107
43108     interface StatusNotification : <ref>Notification</ref> {
43109
43110     readonly attribute <ref>StatusNotificationType</ref> statusType;
43111     
43112     attribute DOMString? iconPath;
43113
43114     attribute DOMString? subIconPath;
43115
43116     attribute long? number;
43117     
43118     attribute <ref>NotificationDetailInfo</ref>[]? detailInfo;
43119
43120     attribute DOMString? ledColor;
43121
43122     attribute unsigned long ledOnPeriod;
43123
43124     attribute unsigned long ledOffPeriod;
43125
43126      attribute DOMString? backgroundImagePath;
43127
43128      attribute DOMString[]? thumbnails;
43129
43130      attribute DOMString? soundPath;
43131   
43132      attribute boolean vibration;
43133
43134      attribute <ref>ApplicationControl</ref>? appControl;
43135
43136      attribute <ref>ApplicationId</ref>? appId;
43137
43138      attribute <ref>NotificationProgressType</ref> progressType;  
43139
43140      attribute unsigned long? progressValue;
43141     };</webidl>
43142       <descriptive>
43143           <brief>
43144  This interface represents status notification and offers additional attributes to represent notification displayed in notification tray.
43145           </brief>
43146          <description>
43147           <p>
43148 All notification must have a title attribute.
43149           </p>
43150          </description>
43151           <version>
43152  2.0
43153           </version>
43154       </descriptive>
43155       <ExtendedAttributeList>
43156         <ExtendedAttribute name="Constructor">
43157           <webidl>Constructor(<ref>StatusNotificationType</ref> statusType, DOMString title, optional <ref>StatusNotificationInit</ref>? notificationInitDict)</webidl>
43158           <ArgumentList>
43159             <Argument name="statusType">
43160               <Type name="StatusNotificationType"/>
43161             </Argument>
43162             <Argument name="title">
43163               <Type type="DOMString"/>
43164             </Argument>
43165             <Argument optional="optional" name="notificationInitDict">
43166               <Type name="StatusNotificationInit" nullable="nullable"/>
43167             </Argument>
43168           </ArgumentList>
43169         </ExtendedAttribute>
43170       </ExtendedAttributeList>
43171       <InterfaceInheritance>
43172         <Name name="Notification"/>
43173       </InterfaceInheritance>
43174       <Attribute readonly="readonly" name="statusType" id="::Notification::StatusNotification::statusType">
43175         <webidl>    readonly attribute <ref>StatusNotificationType</ref> statusType;</webidl>
43176         <descriptive>
43177             <brief>
43178  The status notification type. 
43179             </brief>
43180             <version>
43181  2.0
43182             </version>
43183         </descriptive>
43184         <Type name="StatusNotificationType"/>
43185       </Attribute>
43186       <Attribute name="iconPath" id="::Notification::StatusNotification::iconPath">
43187         <webidl>    attribute DOMString? iconPath;</webidl>
43188         <descriptive>
43189             <brief>
43190  The icon path to display in the notification. 
43191             </brief>
43192             <version>
43193  2.0
43194             </version>
43195         </descriptive>
43196         <Type type="DOMString" nullable="nullable"/>
43197       </Attribute>
43198       <Attribute name="subIconPath" id="::Notification::StatusNotification::subIconPath">
43199         <webidl>    attribute DOMString? subIconPath;</webidl>
43200         <descriptive>
43201             <brief>
43202  The sub icon path to display in the notification. 
43203             </brief>
43204             <version>
43205  2.1
43206             </version>
43207         </descriptive>
43208         <Type type="DOMString" nullable="nullable"/>
43209       </Attribute>
43210       <Attribute name="number" id="::Notification::StatusNotification::number">
43211         <webidl>    attribute long? number;</webidl>
43212         <descriptive>
43213             <brief>
43214  The number of events to display in the notification. 
43215             </brief>
43216             <version>
43217  2.1
43218             </version>
43219         </descriptive>
43220         <Type type="long" nullable="nullable"/>
43221       </Attribute>
43222       <Attribute name="detailInfo" id="::Notification::StatusNotification::detailInfo">
43223         <webidl>    attribute <ref>NotificationDetailInfo</ref>[]? detailInfo;</webidl>
43224         <descriptive>
43225             <brief>
43226  Appends lines of the detail information to the notification.
43227 This attribute is available in simple status notification.
43228 By default, this attribute is initialized with an empty array.
43229 The maximum number of detail information elements in the array is 2.
43230             </brief>
43231             <version>
43232  2.1
43233             </version>
43234         </descriptive>
43235         <Type type="array" nullable="nullable">
43236           <Type name="NotificationDetailInfo"/>
43237         </Type>
43238       </Attribute>
43239       <Attribute name="ledColor" id="::Notification::StatusNotification::ledColor">
43240         <webidl>    attribute DOMString? ledColor;</webidl>
43241         <descriptive>
43242             <brief>
43243  Sets the notification LED indicator color property. 
43244 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.
43245 The LED indicator color will show its a close approximation.
43246 LED will only light on when screen is off. To turn the LED off, set &quot;#000000&quot; or null to ledColor. 
43247 This method has effects when the device has notification LED.
43248             </brief>
43249             <Code> try {
43250       var notificationDict = {
43251                   content : &quot;This is a simple notification.&quot;,
43252                   iconPath : &quot;images/image1.jpg&quot;,
43253                   soundPath : &quot;music/Over the horizon.mp3&quot;,
43254                   vibration : true,
43255                   ledColor : &quot;#FFFF00&quot;, 
43256                   ledOnPeriod: 1000,
43257                   ledOffPeriod : 500 };
43258
43259       var notification = new tizen.StatusNotification(&quot;SIMPLE&quot;,
43260                   &quot;Simple notification&quot;, notificationDict);
43261
43262       tizen.notification.post(notification);
43263  } catch (err) {
43264       console.log (err.name + &quot;: &quot; + err.message);
43265  }
43266  </Code>
43267             <version>
43268  2.2
43269             </version>
43270         </descriptive>
43271         <Type type="DOMString" nullable="nullable"/>
43272       </Attribute>
43273       <Attribute name="ledOnPeriod" id="::Notification::StatusNotification::ledOnPeriod">
43274         <webidl>    attribute unsigned long ledOnPeriod;</webidl>
43275         <descriptive>
43276             <brief>
43277  The milliseconds for which the light is on
43278 The light continuously toggles on (ledOnPeriod) and off (ledOffPeriod).
43279 By default, this attribute is set to 0
43280             </brief>
43281             <version>
43282  2.2
43283             </version>
43284         </descriptive>
43285         <Type type="unsigned long"/>
43286       </Attribute>
43287       <Attribute name="ledOffPeriod" id="::Notification::StatusNotification::ledOffPeriod">
43288         <webidl>    attribute unsigned long ledOffPeriod;</webidl>
43289         <descriptive>
43290             <brief>
43291  The milliseconds for which the light is off
43292 By default, this attribute is set to 0
43293             </brief>
43294             <version>
43295  2.2
43296             </version>
43297         </descriptive>
43298         <Type type="unsigned long"/>
43299       </Attribute>
43300       <Attribute name="backgroundImagePath" id="::Notification::StatusNotification::backgroundImagePath">
43301         <webidl>     attribute DOMString? backgroundImagePath;</webidl>
43302         <descriptive>
43303             <brief>
43304  The image path to use as the background of the notification.
43305 This attribute is available on simple or thumbnail status notifications.
43306             </brief>
43307             <version>
43308  2.1
43309             </version>
43310         </descriptive>
43311         <Type type="DOMString" nullable="nullable"/>
43312       </Attribute>
43313       <Attribute name="thumbnails" id="::Notification::StatusNotification::thumbnails">
43314         <webidl>     attribute DOMString[]? thumbnails;</webidl>
43315         <descriptive>
43316             <brief>
43317  The image paths associated with the thumbnail status notification.
43318 By default, this attribute is initialized with an empty array.
43319 The maximum number of thumbnail path elements in the array is 4.
43320             </brief>
43321             <version>
43322  2.1
43323             </version>
43324         </descriptive>
43325         <Type type="array" nullable="nullable">
43326           <Type type="DOMString"/>
43327         </Type>
43328       </Attribute>
43329       <Attribute name="soundPath" id="::Notification::StatusNotification::soundPath">
43330         <webidl>     attribute DOMString? soundPath;</webidl>
43331         <descriptive>
43332             <brief>
43333  The path of a sound file to play when the notification is shown.
43334             </brief>
43335             <version>
43336  2.0
43337             </version>
43338         </descriptive>
43339         <Type type="DOMString" nullable="nullable"/>
43340       </Attribute>
43341       <Attribute name="vibration" id="::Notification::StatusNotification::vibration">
43342         <webidl>     attribute boolean vibration;</webidl>
43343         <descriptive>
43344             <brief>
43345  Holds whether to vibrate when the notification is shown. By default, this attribute is set to false.
43346             </brief>
43347             <version>
43348  2.0
43349             </version>
43350         </descriptive>
43351         <Type type="boolean"/>
43352       </Attribute>
43353       <Attribute name="appControl" id="::Notification::StatusNotification::appControl">
43354         <webidl>     attribute <ref>ApplicationControl</ref>? appControl;</webidl>
43355         <descriptive>
43356             <brief>
43357  Holds the application control to launch an application when the notification is selected from the notification tray. 
43358             </brief>
43359             <version>
43360  2.0
43361             </version>
43362         </descriptive>
43363         <Type name="ApplicationControl" nullable="nullable"/>
43364       </Attribute>
43365       <Attribute name="appId" id="::Notification::StatusNotification::appId">
43366         <webidl>     attribute <ref>ApplicationId</ref>? appId;</webidl>
43367         <descriptive>
43368             <brief>
43369  Holds the application ID to launch when the notification is selected from the notification tray. 
43370             </brief>
43371             <version>
43372  2.0
43373             </version>
43374             <Code> try {
43375  
43376       // Gets a current application information with tizen.application.getAppInfo
43377       var myappInfo = tizen.application.getAppInfo();
43378
43379       var notificationDict = {
43380                   content : &quot;This is a simple notification.&quot;,
43381                   iconPath : &quot;images/image1.jpg&quot;,
43382                   soundPath : &quot;music/Over the horizon.mp3&quot;, 
43383                   vibration : true, 
43384                   appId : myappInfo.id };
43385        
43386       var notification = new tizen.StatusNotification(&quot;SIMPLE&quot;, 
43387                   &quot;Simple notification&quot;, notificationDict);
43388                        
43389       tizen.notification.post(notification);
43390  } catch (err) {
43391       console.log (err.name + &quot;: &quot; + err.message);
43392  }
43393  </Code>
43394         </descriptive>
43395         <Type name="ApplicationId" nullable="nullable"/>
43396       </Attribute>
43397       <Attribute name="progressType" id="::Notification::StatusNotification::progressType">
43398         <webidl>     attribute <ref>NotificationProgressType</ref> progressType;</webidl>
43399         <descriptive>
43400             <brief>
43401  Defines the type for an ongoing notification's progress. 
43402 By default, this attribute is set to PERCENTAGE.
43403             </brief>
43404             <version>
43405  2.1
43406             </version>
43407         </descriptive>
43408         <Type name="NotificationProgressType"/>
43409       </Attribute>
43410       <Attribute name="progressValue" id="::Notification::StatusNotification::progressValue">
43411         <webidl>     attribute unsigned long? progressValue;</webidl>
43412         <descriptive>
43413             <brief>
43414  Defines the current notification progress value (<em>PERCENTAGE</em> or <em>BYTE</em>), depending on the <em>progressType</em>            </brief>
43415            <description>
43416             <p>
43417 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
43418 If 0, the indeterminate progressbar will be shown.
43419 This attribute is only available for StatusNotifcation of type <em>PROGRESS</em>.
43420             </p>
43421             <p>
43422 Application should keep the progress value for its job because 
43423 the saved value in the notification status tray would be different from 
43424 exact progress value.
43425             </p>
43426             <p>
43427 Range of <em>progressValue</em>: percent (0 to 100).
43428             </p>
43429            </description>
43430             <Code> try {
43431       var appControl = new tizen.ApplicationControl(
43432       &quot;http://tizen.org/appcontrol/operation/create_content&quot;,
43433       null,
43434       &quot;image/jpg&quot;,
43435       null);
43436       
43437       var notificationDict = {
43438                   content : &quot;This is a progress notificaiton.&quot;,
43439                   iconPath : &quot;images/image2.jpg&quot;,
43440                   soundPath : &quot;music/Over the horizon.mp3&quot;, 
43441                   vibration : true, 
43442                   appControl : appControl,
43443                   progressValue : 20};
43444       // Constructs the progress notification
43445       var notification = new tizen.StatusNotification(&quot;PROGRESS&quot;, 
43446                          &quot;Progress notification&quot;, notificationDict); 
43447       // Posts the notification
43448       tizen.notification.post(notification);
43449
43450       // Updates the progress value of the notification
43451       notification.progressValue = 59;
43452       tizen.notification.update(notification);
43453
43454       
43455  } catch (err) {
43456      console.log (err.name + &quot;: &quot; + err.message);
43457  }
43458  </Code>
43459             <version>
43460  2.0
43461             </version>
43462         </descriptive>
43463         <Type type="unsigned long" nullable="nullable"/>
43464       </Attribute>
43465     </Interface>
43466     <Interface name="NotificationDetailInfo" id="::Notification::NotificationDetailInfo">
43467       <webidl>[Constructor(DOMString mainText, optional DOMString? subText)]
43468     interface NotificationDetailInfo {
43469     attribute DOMString mainText;
43470
43471     attribute DOMString? subText;
43472     };</webidl>
43473       <descriptive>
43474           <brief>
43475  The NotificationDetailInfo object that contains the detail information to the notification.
43476           </brief>
43477           <version>
43478  2.1
43479           </version>
43480           <Code> var detailInfo1 = new tizen.NotificationDetailInfo('Missed Call from James', 'Feb 11 2013');
43481  notification.detailInfo = [detailInfo1];
43482 </Code>
43483       </descriptive>
43484       <ExtendedAttributeList>
43485         <ExtendedAttribute name="Constructor">
43486           <webidl>Constructor(DOMString mainText, optional DOMString? subText)</webidl>
43487           <ArgumentList>
43488             <Argument name="mainText">
43489               <Type type="DOMString"/>
43490             </Argument>
43491             <Argument optional="optional" name="subText">
43492               <Type type="DOMString" nullable="nullable"/>
43493             </Argument>
43494           </ArgumentList>
43495         </ExtendedAttribute>
43496       </ExtendedAttributeList>
43497       <Attribute name="mainText" id="::Notification::NotificationDetailInfo::mainText">
43498         <webidl>    attribute DOMString mainText;</webidl>
43499         <descriptive>
43500             <brief>
43501  The main content of the detail information.
43502 This attribute is available on simple status notifications.
43503             </brief>
43504             <version>
43505  2.1
43506             </version>
43507         </descriptive>
43508         <Type type="DOMString"/>
43509       </Attribute>
43510       <Attribute name="subText" id="::Notification::NotificationDetailInfo::subText">
43511         <webidl>    attribute DOMString? subText;</webidl>
43512         <descriptive>
43513             <brief>
43514  The secondary content of the detail information.
43515             </brief>
43516            <description>
43517             <p>
43518 By default, this attribute is set to null.
43519             </p>
43520            </description>
43521             <version>
43522  2.1
43523             </version>
43524         </descriptive>
43525         <Type type="DOMString" nullable="nullable"/>
43526       </Attribute>
43527     </Interface>
43528   </Module>
43529   <Module name="Package" id="::Package">
43530     <webidl>module Package {&#13;
43531 &#13;
43532 &#13;
43533     typedef DOMString PackageId;&#13;
43534 &#13;
43535 &#13;
43536     [NoInterfaceObject] interface PackageManagerObject {&#13;
43537         readonly attribute <ref>PackageManager</ref> package;&#13;
43538     };&#13;
43539     <ref>Tizen</ref> implements <ref>PackageManagerObject</ref>;&#13;
43540 &#13;
43541 &#13;
43542     [NoInterfaceObject] interface PackageManager {&#13;
43543 &#13;
43544 &#13;
43545         void install(DOMString path,&#13;
43546                      <ref>PackageProgressCallback</ref> progressCallback,&#13;
43547                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
43548 &#13;
43549 &#13;
43550         void uninstall(<ref>PackageId</ref> id, &#13;
43551                        <ref>PackageProgressCallback</ref> progressCallback,&#13;
43552                        optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
43553 &#13;
43554 &#13;
43555 &#13;
43556 &#13;
43557         void getPackagesInfo(<ref>PackageInformationArraySuccessCallback</ref> successCallback,&#13;
43558                              optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
43559 &#13;
43560 &#13;
43561         <ref>PackageInformation</ref> getPackageInfo(optional <ref>PackageId</ref>? id) raises(<ref>WebAPIException</ref>);&#13;
43562 &#13;
43563 &#13;
43564         void setPackageInfoEventListener(<ref>PackageInformationEventCallback</ref> eventCallback) raises(<ref>WebAPIException</ref>);&#13;
43565         &#13;
43566 &#13;
43567         void unsetPackageInfoEventListener() raises(<ref>WebAPIException</ref>);&#13;
43568     &#13;
43569     };&#13;
43570 &#13;
43571 &#13;
43572     [NoInterfaceObject] interface PackageInformation {&#13;
43573 &#13;
43574         readonly attribute <ref>PackageId</ref> id;&#13;
43575 &#13;
43576 &#13;
43577         readonly attribute DOMString name;&#13;
43578 &#13;
43579 &#13;
43580         readonly attribute DOMString iconPath;&#13;
43581 &#13;
43582 &#13;
43583         readonly attribute DOMString version;&#13;
43584 &#13;
43585 &#13;
43586         readonly attribute long totalSize;&#13;
43587 &#13;
43588 &#13;
43589         readonly attribute long dataSize;&#13;
43590 &#13;
43591 &#13;
43592         readonly attribute Date lastModified;&#13;
43593 &#13;
43594 &#13;
43595         readonly attribute DOMString author;&#13;
43596 &#13;
43597 &#13;
43598         readonly attribute DOMString description;&#13;
43599 &#13;
43600 &#13;
43601         readonly attribute <ref>ApplicationId</ref>[] appIds;&#13;
43602 &#13;
43603     };&#13;
43604 &#13;
43605 &#13;
43606     [Callback=FunctionOnly, NoInterfaceObject] interface PackageInformationArraySuccessCallback {&#13;
43607 &#13;
43608 &#13;
43609         void onsuccess(<ref>PackageInformation</ref>[] informationArray);&#13;
43610     };&#13;
43611 &#13;
43612 &#13;
43613     [Callback, NoInterfaceObject] interface PackageProgressCallback {&#13;
43614 &#13;
43615 &#13;
43616         void onprogress(<ref>PackageId</ref> id, short progress);&#13;
43617 &#13;
43618 &#13;
43619         void oncomplete(<ref>PackageId</ref> id);&#13;
43620     };&#13;
43621 &#13;
43622 &#13;
43623     [Callback, NoInterfaceObject] interface PackageInformationEventCallback {&#13;
43624 &#13;
43625 &#13;
43626         void oninstalled(<ref>PackageInformation</ref> info);&#13;
43627 &#13;
43628 &#13;
43629         void onupdated(<ref>PackageInformation</ref> info);&#13;
43630 &#13;
43631 &#13;
43632         void onuninstalled(<ref>PackageId</ref> id);&#13;
43633     };&#13;
43634 &#13;
43635 };</webidl>
43636     <descriptive>
43637         <brief>
43638  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.
43639 For more information on the Package features, see <a href="../../org.tizen.web.appprogramming/html/guide/app_guide/package.htm">Package Guide</a>.
43640         </brief>
43641         <version>
43642  2.1
43643         </version>
43644     </descriptive>
43645     <Typedef name="PackageId" id="::Package::PackageId">
43646       <webidl>    typedef DOMString PackageId;</webidl>
43647       <descriptive>
43648           <brief>
43649  A unique ID for an installed package.
43650           </brief>
43651           <version>
43652  2.1
43653           </version>
43654       </descriptive>
43655       <Type type="DOMString"/>
43656     </Typedef>
43657     <Interface name="PackageManagerObject" id="::Package::PackageManagerObject">
43658       <webidl>    [NoInterfaceObject] interface PackageManagerObject {&#13;
43659         readonly attribute <ref>PackageManager</ref> package;&#13;
43660     };</webidl>
43661       <descriptive>
43662           <brief>
43663  This interface defines what is instantiated by the <em>Tizen </em>object from the Tizen Platform.
43664           </brief>
43665          <description>
43666           <p>
43667 There is a <em>tizen.package </em>object that allows access to Package API functionality.
43668           </p>
43669          </description>
43670           <version>
43671  2.1
43672           </version>
43673       </descriptive>
43674       <ExtendedAttributeList>
43675         <ExtendedAttribute name="NoInterfaceObject">
43676           <webidl>NoInterfaceObject</webidl>
43677         </ExtendedAttribute>
43678       </ExtendedAttributeList>
43679       <Attribute readonly="readonly" name="package" id="::Package::PackageManagerObject::package">
43680         <webidl>        readonly attribute <ref>PackageManager</ref> package;</webidl>
43681         <Type name="PackageManager"/>
43682       </Attribute>
43683     </Interface>
43684     <Implements name1="Tizen" name2="PackageManagerObject">
43685       <webidl>    <ref>Tizen</ref> implements <ref>PackageManagerObject</ref>;</webidl>
43686     </Implements>
43687     <Interface name="PackageManager" id="::Package::PackageManager">
43688       <webidl>    [NoInterfaceObject] interface PackageManager {&#13;
43689 &#13;
43690 &#13;
43691         void install(DOMString path,&#13;
43692                      <ref>PackageProgressCallback</ref> progressCallback,&#13;
43693                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
43694 &#13;
43695 &#13;
43696         void uninstall(<ref>PackageId</ref> id, &#13;
43697                        <ref>PackageProgressCallback</ref> progressCallback,&#13;
43698                        optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
43699 &#13;
43700 &#13;
43701 &#13;
43702 &#13;
43703         void getPackagesInfo(<ref>PackageInformationArraySuccessCallback</ref> successCallback,&#13;
43704                              optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
43705 &#13;
43706 &#13;
43707         <ref>PackageInformation</ref> getPackageInfo(optional <ref>PackageId</ref>? id) raises(<ref>WebAPIException</ref>);&#13;
43708 &#13;
43709 &#13;
43710         void setPackageInfoEventListener(<ref>PackageInformationEventCallback</ref> eventCallback) raises(<ref>WebAPIException</ref>);&#13;
43711         &#13;
43712 &#13;
43713         void unsetPackageInfoEventListener() raises(<ref>WebAPIException</ref>);&#13;
43714     &#13;
43715     };</webidl>
43716       <descriptive>
43717           <brief>
43718  This interface defines the package manager.
43719           </brief>
43720           <version>
43721  2.1
43722           </version>
43723       </descriptive>
43724       <ExtendedAttributeList>
43725         <ExtendedAttribute name="NoInterfaceObject">
43726           <webidl>NoInterfaceObject</webidl>
43727         </ExtendedAttribute>
43728       </ExtendedAttributeList>
43729       <Operation name="install" id="::Package::PackageManager::install">
43730         <webidl>        void install(DOMString path,&#13;
43731                      <ref>PackageProgressCallback</ref> progressCallback,&#13;
43732                      optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
43733         <descriptive>
43734             <brief>
43735  Installs a package with a specified package path on a device.
43736             </brief>
43737            <description>
43738             <p>
43739 This API provides a way to notify the progress and completion of an installation request through PackageProgressCallback.
43740             </p>
43741             <p>
43742 The <em>ErrorCallback() </em>is launched with these error types:
43743             </p>
43744             <ul>
43745               <li>
43746 NotFoundError - If the package is not found in the specified path.              </li>
43747               <li>
43748 UnknownError - If it is not allowed to install the package by platform or any other platform error occurs.              </li>
43749             </ul>
43750            </description>
43751             <version>
43752  2.1
43753             </version>
43754             <privilegelevel>
43755  platform
43756             </privilegelevel>
43757             <privilege>
43758  http://tizen.org/privilege/packagemanager.install
43759             </privilege>
43760             <remark>
43761  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.
43762             </remark>
43763             <Code> var onInstallation = {
43764       onprogress: function(packageId, percentage) {
43765          console.log(&quot;On installation(&quot; + packageId + &quot;) : progress(&quot; + percentage + &quot;)&quot;);
43766       },
43767       oncomplete: function(packageId) {
43768          console.log(&quot;Installation(&quot; + packageId + &quot;) Complete&quot;);
43769       }
43770  }
43771
43772  var onError = function (err) {
43773       console.log(&quot;Error occurred on installation : &quot; + err.name);
43774  }
43775
43776  // Let's assume that &quot;test.wgt&quot; file is exist in the downloads directory
43777  tizen.filesystem.resolve(&quot;downloads/test.wgt&quot;,
43778      function (file) {
43779          console.log(&quot;file path : &quot; + file.path);
43780          tizen.package.install(file.toURI(), onInstallation, onError);
43781      },
43782      function (err) {
43783          console.log(&quot;Error occurred on resolve : &quot; + err.name);
43784      },
43785      &quot;r&quot;);
43786
43787  </Code>
43788         </descriptive>
43789         <Type type="void"/>
43790         <ArgumentList>
43791           <Argument name="path">
43792             <descriptive>
43793                 <description><p>
43794  The package path to install
43795                 </p></description>
43796             </descriptive>
43797             <Type type="DOMString"/>
43798           </Argument>
43799           <Argument name="progressCallback">
43800             <descriptive>
43801                 <description><p>
43802  The method to invoke when the installation is in progress or has been completed
43803                 </p></description>
43804             </descriptive>
43805             <Type name="PackageProgressCallback"/>
43806           </Argument>
43807           <Argument optional="optional" name="errorCallback">
43808             <descriptive>
43809                 <description><p>
43810  The method to invoke when an error occurs
43811                 </p></description>
43812             </descriptive>
43813             <Type name="ErrorCallback" nullable="nullable"/>
43814           </Argument>
43815         </ArgumentList>
43816         <Raises>
43817           <RaiseException name="WebAPIException">
43818             <descriptive>
43819                 <description><p>
43820  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
43821                 </p></description>
43822                 <description><p>
43823  with error type SecurityError, if the application does not have the privilege to call this method.
43824                 </p></description>
43825             </descriptive>
43826           </RaiseException>
43827         </Raises>
43828       </Operation>
43829       <Operation name="uninstall" id="::Package::PackageManager::uninstall">
43830         <webidl>        void uninstall(<ref>PackageId</ref> id, &#13;
43831                        <ref>PackageProgressCallback</ref> progressCallback,&#13;
43832                        optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
43833         <descriptive>
43834             <brief>
43835  Uninstalls the package with a specified package ID.
43836             </brief>
43837            <description>
43838             <p>
43839 This API provides a way to notify about the progress and completion of an uninstallation request through PackageProgressCallback.
43840             </p>
43841             <p>
43842 The <em>ErrorCallback() </em>is launched with these error types:
43843             </p>
43844             <ul>
43845               <li>
43846 NotFoundError - If the package is not found with specified ID.              </li>
43847               <li>
43848 UnknownError - If it is not allowed to uninstall the package from the platform or any other platform error occurs.              </li>
43849             </ul>
43850            </description>
43851             <version>
43852  2.1
43853             </version>
43854             <privilegelevel>
43855  platform
43856             </privilegelevel>
43857             <privilege>
43858  http://tizen.org/privilege/packagemanager.install
43859             </privilege>
43860             <remark>
43861  Some preloaded packages cannot be uninstalled. In this case, ErrorCallback with UnKnownError type will be launched.
43862             </remark>
43863             <Code> var onUninstallation = {
43864       onprogress: function(packageId, percentage) {
43865          console.log(&quot;On Uninstallation(&quot; + packageId + &quot;) : progress(&quot; + percentage + &quot;)&quot;);
43866       },
43867       oncomplete: function(packageId) {
43868          console.log(&quot;Uninstallation(&quot; + packageId + &quot;) Complete&quot;);
43869       }
43870  };
43871
43872  var onError = function (err) {
43873       console.log(&quot;Error occurred on installation : &quot; + err.name);
43874  };
43875
43876  // Let's assume that the package id to uninstall is &quot;testapp001&quot;
43877  tizen.package.uninstall(&quot;testapp001&quot;, onUninstallation, onError);
43878  </Code>
43879         </descriptive>
43880         <Type type="void"/>
43881         <ArgumentList>
43882           <Argument name="id">
43883             <descriptive>
43884                 <description><p>
43885  The package ID to uninstall
43886                 </p></description>
43887             </descriptive>
43888             <Type name="PackageId"/>
43889           </Argument>
43890           <Argument name="progressCallback">
43891             <descriptive>
43892                 <description><p>
43893  The method to invoke when uninstallation is in progress or has been completed
43894                 </p></description>
43895             </descriptive>
43896             <Type name="PackageProgressCallback"/>
43897           </Argument>
43898           <Argument optional="optional" name="errorCallback">
43899             <descriptive>
43900                 <description><p>
43901  The method to invoke when an error occurs
43902                 </p></description>
43903             </descriptive>
43904             <Type name="ErrorCallback" nullable="nullable"/>
43905           </Argument>
43906         </ArgumentList>
43907         <Raises>
43908           <RaiseException name="WebAPIException">
43909             <descriptive>
43910                 <description><p>
43911  with error type TypeMismatchError, if an input parameter is not compatible with the expected type for that parameter.
43912                 </p></description>
43913                 <description><p>
43914  with error type SecurityError, if the application does not have the privilege to call this method.
43915                 </p></description>
43916             </descriptive>
43917           </RaiseException>
43918         </Raises>
43919       </Operation>
43920       <Operation name="getPackagesInfo" id="::Package::PackageManager::getPackagesInfo">
43921         <webidl>        void getPackagesInfo(<ref>PackageInformationArraySuccessCallback</ref> successCallback,&#13;
43922                              optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
43923         <descriptive>
43924             <brief>
43925  Gets information of the installed packages.
43926             </brief>
43927            <description>
43928             <p>
43929 The result contains the snapshots of the installed packages information.
43930             </p>
43931             <p>
43932 The <em>errorCallback()</em> is launched with this error type:
43933             </p>
43934             <ul>
43935               <li>
43936 UnknownError - If any other platform error occurs.              </li>
43937             </ul>
43938            </description>
43939             <version>
43940  2.1
43941             </version>
43942             <privilegelevel>
43943  public
43944             </privilegelevel>
43945             <privilege>
43946  http://tizen.org/privilege/package.info
43947             </privilege>
43948             <Code> function onListInstalledPackages(packages) {
43949      for (var i = 0; i &#60; packages.length; i++) {
43950          console.log(&quot;Package id[&quot;+i+&quot;] : &quot; +packages[i].id);
43951      }
43952  }
43953
43954  tizen.package.getPackagesInfo(
43955      onListInstalledPackages,
43956      function (err) {console.log(&quot;Can't obtain packages list&quot; + err.name);});
43957  </Code>
43958         </descriptive>
43959         <Type type="void"/>
43960         <ArgumentList>
43961           <Argument name="successCallback">
43962             <descriptive>
43963                 <description><p>
43964  The method to call when an invocation ends successfully
43965                 </p></description>
43966             </descriptive>
43967             <Type name="PackageInformationArraySuccessCallback"/>
43968           </Argument>
43969           <Argument optional="optional" name="errorCallback">
43970             <descriptive>
43971                 <description><p>
43972  The method to call when an error occurs
43973                 </p></description>
43974             </descriptive>
43975             <Type name="ErrorCallback" nullable="nullable"/>
43976           </Argument>
43977         </ArgumentList>
43978         <Raises>
43979           <RaiseException name="WebAPIException">
43980             <descriptive>
43981                 <description><p>
43982  with error type TypeMismatchError, if an input parameter is not compatible with the expected type for that parameter.
43983                 </p></description>
43984                 <description><p>
43985  with error type SecurityError, if the application does not have the privilege to call this method.
43986                 </p></description>
43987             </descriptive>
43988           </RaiseException>
43989         </Raises>
43990       </Operation>
43991       <Operation name="getPackageInfo" id="::Package::PackageManager::getPackageInfo">
43992         <webidl>        <ref>PackageInformation</ref> getPackageInfo(optional <ref>PackageId</ref>? id) raises(<ref>WebAPIException</ref>);</webidl>
43993         <descriptive>
43994             <brief>
43995  Gets information of an installed package.
43996             </brief>
43997            <description>
43998             <p>
43999 If the ID is set to <var>null</var> or not set at all, it returns package information of the current application.
44000 The list of installed packages and their package IDs is obtained using <em>getPackagesInfo()</em>.
44001             </p>
44002            </description>
44003             <version>
44004  2.1
44005             </version>
44006             <privilegelevel>
44007  public
44008             </privilegelevel>
44009             <privilege>
44010  http://tizen.org/privilege/package.info
44011             </privilege>
44012             <Code> var packageInfo = tizen.package.getPackageInfo(null);
44013
44014  console.log(&quot;Current Package ID : &quot; + packageInfo.id);
44015  </Code>
44016         </descriptive>
44017         <Type name="PackageInformation">
44018           <descriptive>
44019               <description><p>
44020  PackageInformation The information of a package
44021               </p></description>
44022           </descriptive>
44023         </Type>
44024         <ArgumentList>
44025           <Argument optional="optional" name="id">
44026             <descriptive>
44027                 <description><p>
44028  A string representing package ID. If the ID is not provided, the package information of the calling application is returned.
44029                 </p></description>
44030             </descriptive>
44031             <Type name="PackageId" nullable="nullable"/>
44032           </Argument>
44033         </ArgumentList>
44034         <Raises>
44035           <RaiseException name="WebAPIException">
44036             <descriptive>
44037                 <description><p>
44038  with error type TypeMismatchError, if an input parameter is not compatible with the expected type for that parameter.
44039                 </p></description>
44040                 <description><p>
44041  with error type SecurityError, if the application does not have the privilege to call this method.
44042                 </p></description>
44043                 <description><p>
44044  with error type NotFoundError, if the package with the specified ID is not found.
44045                 </p></description>
44046                 <description><p>
44047  with error type UnknownError, if the package information cannot be retrieved because of a platform error.
44048                 </p></description>
44049             </descriptive>
44050           </RaiseException>
44051         </Raises>
44052       </Operation>
44053       <Operation name="setPackageInfoEventListener" id="::Package::PackageManager::setPackageInfoEventListener">
44054         <webidl>        void setPackageInfoEventListener(<ref>PackageInformationEventCallback</ref> eventCallback) raises(<ref>WebAPIException</ref>);</webidl>
44055         <descriptive>
44056             <brief>
44057  Sets a listener to receive notifications for any changes made to the list of installed packages.
44058             </brief>
44059            <description>
44060             <p>
44061 This method sets a <em>PackageInformationEventCallback</em> type callback that is triggered when a package is installed, removed or updated.
44062             </p>
44063             <p>
44064 The callback lasts until <em>unsetPackageInfoEventListener()</em> method is called.
44065             </p>
44066            </description>
44067             <version>
44068  2.1
44069             </version>
44070             <privilegelevel>
44071  public
44072             </privilegelevel>
44073             <privilege>
44074  http://tizen.org/privilege/package.info
44075             </privilege>
44076             <Code> var packageEventCallback = {
44077     oninstalled: function(packageInfo) {
44078        console.log('The package ' + packageInfo.name + ' is installed');
44079     },
44080     onupdated: function(packageInfo) {
44081        console.log('The package ' + packageInfo.name + ' is updated');
44082     },
44083     onuninstalled: function(packageId) {
44084        console.log('The package ' + packageId + ' is uninstalled');
44085     }
44086  };
44087
44088  tizen.package.setPackageInfoEventListener(packageEventCallback);
44089  </Code>
44090         </descriptive>
44091         <Type type="void"/>
44092         <ArgumentList>
44093           <Argument name="eventCallback">
44094             <descriptive>
44095                 <description><p>
44096  The method to be called when any change is made to the list of installed packages.
44097                 </p></description>
44098             </descriptive>
44099             <Type name="PackageInformationEventCallback"/>
44100           </Argument>
44101         </ArgumentList>
44102         <Raises>
44103           <RaiseException name="WebAPIException">
44104             <descriptive>
44105                 <description><p>
44106  with error type TypeMismatchError, if an input parameter is not compatible with the expected type for that parameter.
44107                 </p></description>
44108                 <description><p>
44109  with error type SecurityError, if the application does not have the privilege to call this method.
44110                 </p></description>
44111                 <description><p>
44112  with error type UnknownError, if the package list change event cannot be generated because of a platform error.
44113                 </p></description>
44114             </descriptive>
44115           </RaiseException>
44116         </Raises>
44117       </Operation>
44118       <Operation name="unsetPackageInfoEventListener" id="::Package::PackageManager::unsetPackageInfoEventListener">
44119         <webidl>        void unsetPackageInfoEventListener() raises(<ref>WebAPIException</ref>);</webidl>
44120         <descriptive>
44121             <brief>
44122  Unsets the listener to stop receiving package notifications.
44123             </brief>
44124             <version>
44125  2.1
44126             </version>
44127             <privilegelevel>
44128  public
44129             </privilegelevel>
44130             <privilege>
44131  http://tizen.org/privilege/package.info
44132             </privilege>
44133             <Code> tizen.package.unsetPackageInfoEventListener();
44134  </Code>
44135         </descriptive>
44136         <Type type="void"/>
44137         <ArgumentList/>
44138         <Raises>
44139           <RaiseException name="WebAPIException">
44140             <descriptive>
44141                 <description><p>
44142  with error type SecurityError, if the application does not have the privilege to call this method.
44143                 </p></description>
44144                 <description><p>
44145  with error type UnknownError, if the listener removal request fails because of a platform error.
44146                 </p></description>
44147             </descriptive>
44148           </RaiseException>
44149         </Raises>
44150       </Operation>
44151     </Interface>
44152     <Interface name="PackageInformation" id="::Package::PackageInformation">
44153       <webidl>    [NoInterfaceObject] interface PackageInformation {&#13;
44154 &#13;
44155         readonly attribute <ref>PackageId</ref> id;&#13;
44156 &#13;
44157 &#13;
44158         readonly attribute DOMString name;&#13;
44159 &#13;
44160 &#13;
44161         readonly attribute DOMString iconPath;&#13;
44162 &#13;
44163 &#13;
44164         readonly attribute DOMString version;&#13;
44165 &#13;
44166 &#13;
44167         readonly attribute long totalSize;&#13;
44168 &#13;
44169 &#13;
44170         readonly attribute long dataSize;&#13;
44171 &#13;
44172 &#13;
44173         readonly attribute Date lastModified;&#13;
44174 &#13;
44175 &#13;
44176         readonly attribute DOMString author;&#13;
44177 &#13;
44178 &#13;
44179         readonly attribute DOMString description;&#13;
44180 &#13;
44181 &#13;
44182         readonly attribute <ref>ApplicationId</ref>[] appIds;&#13;
44183 &#13;
44184     };</webidl>
44185       <descriptive>
44186           <brief>
44187  This interface defines the general information available to an installed package.
44188           </brief>
44189           <version>
44190  2.1
44191           </version>
44192       </descriptive>
44193       <ExtendedAttributeList>
44194         <ExtendedAttribute name="NoInterfaceObject">
44195           <webidl>NoInterfaceObject</webidl>
44196         </ExtendedAttribute>
44197       </ExtendedAttributeList>
44198       <Attribute readonly="readonly" name="id" id="::Package::PackageInformation::id">
44199         <webidl>        readonly attribute <ref>PackageId</ref> id;</webidl>
44200         <descriptive>
44201             <brief>
44202  An attribute to store the identifier of a package.
44203             </brief>
44204             <version>
44205  2.1
44206             </version>
44207         </descriptive>
44208         <Type name="PackageId"/>
44209       </Attribute>
44210       <Attribute readonly="readonly" name="name" id="::Package::PackageInformation::name">
44211         <webidl>        readonly attribute DOMString name;</webidl>
44212         <descriptive>
44213             <brief>
44214  An attribute to store the package name.
44215             </brief>
44216             <version>
44217  2.1
44218             </version>
44219         </descriptive>
44220         <Type type="DOMString"/>
44221       </Attribute>
44222       <Attribute readonly="readonly" name="iconPath" id="::Package::PackageInformation::iconPath">
44223         <webidl>        readonly attribute DOMString iconPath;</webidl>
44224         <descriptive>
44225             <brief>
44226  An attribute to store the icon path of a package.
44227             </brief>
44228             <version>
44229  2.1
44230             </version>
44231         </descriptive>
44232         <Type type="DOMString"/>
44233       </Attribute>
44234       <Attribute readonly="readonly" name="version" id="::Package::PackageInformation::version">
44235         <webidl>        readonly attribute DOMString version;</webidl>
44236         <descriptive>
44237             <brief>
44238  An attribute to store the package version.
44239             </brief>
44240             <version>
44241  2.1
44242             </version>
44243         </descriptive>
44244         <Type type="DOMString"/>
44245       </Attribute>
44246       <Attribute readonly="readonly" name="totalSize" id="::Package::PackageInformation::totalSize">
44247         <webidl>        readonly attribute long totalSize;</webidl>
44248         <descriptive>
44249             <brief>
44250  An attribute to store the total installed size(package + data) of a package.
44251             </brief>
44252             <version>
44253  2.1
44254             </version>
44255         </descriptive>
44256         <Type type="long"/>
44257       </Attribute>
44258       <Attribute readonly="readonly" name="dataSize" id="::Package::PackageInformation::dataSize">
44259         <webidl>        readonly attribute long dataSize;</webidl>
44260         <descriptive>
44261             <brief>
44262  An attribute to store the current data size of a package.
44263             </brief>
44264             <version>
44265  2.1
44266             </version>
44267         </descriptive>
44268         <Type type="long"/>
44269       </Attribute>
44270       <Attribute readonly="readonly" name="lastModified" id="::Package::PackageInformation::lastModified">
44271         <webidl>        readonly attribute Date lastModified;</webidl>
44272         <descriptive>
44273             <brief>
44274  An attribute to store the latest installed or updated time of a package.
44275             </brief>
44276             <version>
44277  2.1
44278             </version>
44279         </descriptive>
44280         <Type type="Date"/>
44281       </Attribute>
44282       <Attribute readonly="readonly" name="author" id="::Package::PackageInformation::author">
44283         <webidl>        readonly attribute DOMString author;</webidl>
44284         <descriptive>
44285             <brief>
44286  An attribute to store the author of a package.
44287             </brief>
44288             <version>
44289  2.1
44290             </version>
44291         </descriptive>
44292         <Type type="DOMString"/>
44293       </Attribute>
44294       <Attribute readonly="readonly" name="description" id="::Package::PackageInformation::description">
44295         <webidl>        readonly attribute DOMString description;</webidl>
44296         <descriptive>
44297             <brief>
44298  An attribute to store the package description.
44299             </brief>
44300             <version>
44301  2.1
44302             </version>
44303         </descriptive>
44304         <Type type="DOMString"/>
44305       </Attribute>
44306       <Attribute readonly="readonly" name="appIds" id="::Package::PackageInformation::appIds">
44307         <webidl>        readonly attribute <ref>ApplicationId</ref>[] appIds;</webidl>
44308         <descriptive>
44309             <brief>
44310  An attribute to store the application ID list of a package.
44311             </brief>
44312             <version>
44313  2.1
44314             </version>
44315         </descriptive>
44316         <Type type="array">
44317           <Type name="ApplicationId"/>
44318         </Type>
44319       </Attribute>
44320     </Interface>
44321     <Interface name="PackageInformationArraySuccessCallback" id="::Package::PackageInformationArraySuccessCallback">
44322       <webidl>    [Callback=FunctionOnly, NoInterfaceObject] interface PackageInformationArraySuccessCallback {&#13;
44323 &#13;
44324 &#13;
44325         void onsuccess(<ref>PackageInformation</ref>[] informationArray);&#13;
44326     };</webidl>
44327       <descriptive>
44328           <brief>
44329  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.
44330           </brief>
44331          <description>
44332           <p>
44333 It is used in <em>tizen.package.getPackagesInfo()</em>.
44334           </p>
44335          </description>
44336           <version>
44337  2.1
44338           </version>
44339       </descriptive>
44340       <ExtendedAttributeList>
44341         <ExtendedAttribute name="Callback" value="FunctionOnly">
44342           <webidl>Callback</webidl>
44343         </ExtendedAttribute>
44344         <ExtendedAttribute name="NoInterfaceObject">
44345           <webidl> NoInterfaceObject</webidl>
44346         </ExtendedAttribute>
44347       </ExtendedAttributeList>
44348       <Operation name="onsuccess" id="::Package::PackageInformationArraySuccessCallback::onsuccess">
44349         <webidl>        void onsuccess(<ref>PackageInformation</ref>[] informationArray);</webidl>
44350         <descriptive>
44351             <brief>
44352  Called when the asynchronous call completes successfully.
44353             </brief>
44354             <version>
44355  2.1
44356             </version>
44357         </descriptive>
44358         <Type type="void"/>
44359         <ArgumentList>
44360           <Argument name="informationArray">
44361             <descriptive>
44362                 <description><p>
44363  A list of installed packages information.
44364                 </p></description>
44365             </descriptive>
44366             <Type type="array">
44367               <Type name="PackageInformation"/>
44368             </Type>
44369           </Argument>
44370         </ArgumentList>
44371       </Operation>
44372     </Interface>
44373     <Interface name="PackageProgressCallback" id="::Package::PackageProgressCallback">
44374       <webidl>    [Callback, NoInterfaceObject] interface PackageProgressCallback {&#13;
44375 &#13;
44376 &#13;
44377         void onprogress(<ref>PackageId</ref> id, short progress);&#13;
44378 &#13;
44379 &#13;
44380         void oncomplete(<ref>PackageId</ref> id);&#13;
44381     };</webidl>
44382       <descriptive>
44383           <brief>
44384  This callback interface specifies subscriptions for any notification on the progress or completion of requests.
44385           </brief>
44386           <version>
44387  2.1
44388           </version>
44389       </descriptive>
44390       <ExtendedAttributeList>
44391         <ExtendedAttribute name="Callback">
44392           <webidl>Callback</webidl>
44393         </ExtendedAttribute>
44394         <ExtendedAttribute name="NoInterfaceObject">
44395           <webidl> NoInterfaceObject</webidl>
44396         </ExtendedAttribute>
44397       </ExtendedAttributeList>
44398       <Operation name="onprogress" id="::Package::PackageProgressCallback::onprogress">
44399         <webidl>        void onprogress(<ref>PackageId</ref> id, short progress);</webidl>
44400         <descriptive>
44401             <brief>
44402  Called while the request is in progress.
44403             </brief>
44404             <version>
44405  2.1
44406             </version>
44407         </descriptive>
44408         <Type type="void"/>
44409         <ArgumentList>
44410           <Argument name="id">
44411             <descriptive>
44412                 <description><p>
44413  The package ID
44414                 </p></description>
44415             </descriptive>
44416             <Type name="PackageId"/>
44417           </Argument>
44418           <Argument name="progress">
44419             <descriptive>
44420                 <description><p>
44421  The progress in percentage.
44422                 </p></description>
44423             </descriptive>
44424             <Type type="short"/>
44425           </Argument>
44426         </ArgumentList>
44427       </Operation>
44428       <Operation name="oncomplete" id="::Package::PackageProgressCallback::oncomplete">
44429         <webidl>        void oncomplete(<ref>PackageId</ref> id);</webidl>
44430         <descriptive>
44431             <brief>
44432  Called while the request is completed.
44433             </brief>
44434             <version>
44435  2.1
44436             </version>
44437         </descriptive>
44438         <Type type="void"/>
44439         <ArgumentList>
44440           <Argument name="id">
44441             <descriptive>
44442                 <description><p>
44443  The package ID
44444                 </p></description>
44445             </descriptive>
44446             <Type name="PackageId"/>
44447           </Argument>
44448         </ArgumentList>
44449       </Operation>
44450     </Interface>
44451     <Interface name="PackageInformationEventCallback" id="::Package::PackageInformationEventCallback">
44452       <webidl>    [Callback, NoInterfaceObject] interface PackageInformationEventCallback {&#13;
44453 &#13;
44454 &#13;
44455         void oninstalled(<ref>PackageInformation</ref> info);&#13;
44456 &#13;
44457 &#13;
44458         void onupdated(<ref>PackageInformation</ref> info);&#13;
44459 &#13;
44460 &#13;
44461         void onuninstalled(<ref>PackageId</ref> id);&#13;
44462     };</webidl>
44463       <descriptive>
44464           <brief>
44465  This callback interface specifies methods that are invoked when a package is installed, updated, or uninstalled.
44466           </brief>
44467           <version>
44468  2.1
44469           </version>
44470       </descriptive>
44471       <ExtendedAttributeList>
44472         <ExtendedAttribute name="Callback">
44473           <webidl>Callback</webidl>
44474         </ExtendedAttribute>
44475         <ExtendedAttribute name="NoInterfaceObject">
44476           <webidl> NoInterfaceObject</webidl>
44477         </ExtendedAttribute>
44478       </ExtendedAttributeList>
44479       <Operation name="oninstalled" id="::Package::PackageInformationEventCallback::oninstalled">
44480         <webidl>        void oninstalled(<ref>PackageInformation</ref> info);</webidl>
44481         <descriptive>
44482             <brief>
44483  Called when a package is installed.
44484             </brief>
44485             <version>
44486  2.1
44487             </version>
44488         </descriptive>
44489         <Type type="void"/>
44490         <ArgumentList>
44491           <Argument name="info">
44492             <descriptive>
44493                 <description><p>
44494  The information of the installed package
44495                 </p></description>
44496             </descriptive>
44497             <Type name="PackageInformation"/>
44498           </Argument>
44499         </ArgumentList>
44500       </Operation>
44501       <Operation name="onupdated" id="::Package::PackageInformationEventCallback::onupdated">
44502         <webidl>        void onupdated(<ref>PackageInformation</ref> info);</webidl>
44503         <descriptive>
44504             <brief>
44505  Called when a package is updated.
44506             </brief>
44507             <version>
44508  2.1
44509             </version>
44510         </descriptive>
44511         <Type type="void"/>
44512         <ArgumentList>
44513           <Argument name="info">
44514             <descriptive>
44515                 <description><p>
44516  The information of the updated package
44517                 </p></description>
44518             </descriptive>
44519             <Type name="PackageInformation"/>
44520           </Argument>
44521         </ArgumentList>
44522       </Operation>
44523       <Operation name="onuninstalled" id="::Package::PackageInformationEventCallback::onuninstalled">
44524         <webidl>        void onuninstalled(<ref>PackageId</ref> id);</webidl>
44525         <descriptive>
44526             <brief>
44527  Called when a package is uninstalled.
44528             </brief>
44529             <version>
44530  2.1
44531             </version>
44532         </descriptive>
44533         <Type type="void"/>
44534         <ArgumentList>
44535           <Argument name="id">
44536             <descriptive>
44537                 <description><p>
44538  The ID of the uninstalled package
44539                 </p></description>
44540             </descriptive>
44541             <Type name="PackageId"/>
44542           </Argument>
44543         </ArgumentList>
44544       </Operation>
44545     </Interface>
44546   </Module>
44547   <Module name="Power" id="::Power">
44548     <webidl>module Power {
44549
44550     enum PowerResource    { &quot;SCREEN&quot;, &quot;CPU&quot; };
44551
44552     enum PowerScreenState { &quot;SCREEN_OFF&quot;, &quot;SCREEN_DIM&quot;, &quot;SCREEN_NORMAL&quot;, &quot;SCREEN_BRIGHT&quot; };
44553
44554     enum PowerCpuState { &quot;CPU_AWAKE&quot; };
44555
44556     typedef (<ref>PowerScreenState</ref> or <ref>PowerCpuState</ref>) PowerState;
44557
44558     [NoInterfaceObject] interface PowerManagerObject {
44559         readonly attribute <ref>PowerManager</ref> power;
44560     };
44561     <ref>Tizen</ref> implements <ref>PowerManagerObject</ref>;
44562
44563    [NoInterfaceObject] interface PowerManager {
44564        void request(<ref>PowerResource</ref> resource, <ref>PowerState</ref> state) raises(<ref>WebAPIException</ref>);
44565
44566        void release(<ref>PowerResource</ref> resource) raises(<ref>WebAPIException</ref>);
44567
44568        void setScreenStateChangeListener(<ref>ScreenStateChangeCallback</ref> listener) raises(<ref>WebAPIException</ref>);
44569
44570        void unsetScreenStateChangeListener() raises(<ref>WebAPIException</ref>);
44571
44572        double getScreenBrightness() raises(<ref>WebAPIException</ref>);
44573
44574        void setScreenBrightness(double brightness) raises(<ref>WebAPIException</ref>);
44575
44576        boolean isScreenOn() raises(<ref>WebAPIException</ref>);
44577
44578        void restoreScreenBrightness() raises(<ref>WebAPIException</ref>);
44579
44580        void turnScreenOn() raises(<ref>WebAPIException</ref>);
44581
44582        void turnScreenOff() raises(<ref>WebAPIException</ref>);
44583    };
44584
44585    [Callback=FunctionOnly, NoInterfaceObject] interface ScreenStateChangeCallback {
44586        void onchanged(<ref>PowerScreenState</ref> previousState, <ref>PowerScreenState</ref> changedState);
44587    };
44588
44589 };</webidl>
44590     <descriptive>
44591         <brief>
44592  This API provides support for requesting power management related resource states.
44593         </brief>
44594        <description>
44595         <p>
44596 For more information on the Power features, see <a href="../../org.tizen.web.appprogramming/html/guide/sys_guide/power.htm">Power Guide</a>.
44597         </p>
44598        </description>
44599         <version>
44600  2.0
44601         </version>
44602     </descriptive>
44603     <Enum name="PowerResource" id="::Power::PowerResource">
44604       <webidl>    enum PowerResource    { &quot;SCREEN&quot;, &quot;CPU&quot; };</webidl>
44605       <descriptive>
44606           <brief>
44607  An enumerator that defines power resources with values aligned with <em>SystemInfo </em>property values.
44608           </brief>
44609          <description>
44610           <p>
44611 We support screen and cpu resources for now.
44612 Supported power resource states are provided in PowerScreenState and PowerCpuState enums respectively prefixed by the corresponding resource type.
44613           </p>
44614          </description>
44615           <version>
44616  2.0
44617           </version>
44618       </descriptive>
44619       <EnumValue stringvalue="SCREEN">
44620         <webidl> &quot;SCREEN</webidl>
44621       </EnumValue>
44622       <EnumValue stringvalue="CPU">
44623         <webidl> &quot;CPU</webidl>
44624       </EnumValue>
44625     </Enum>
44626     <Enum name="PowerScreenState" id="::Power::PowerScreenState">
44627       <webidl>    enum PowerScreenState { &quot;SCREEN_OFF&quot;, &quot;SCREEN_DIM&quot;, &quot;SCREEN_NORMAL&quot;, &quot;SCREEN_BRIGHT&quot; };</webidl>
44628       <descriptive>
44629           <brief>
44630  An enumerator that indicates the power state for screen resource.
44631           </brief>
44632          <description>
44633           <p>
44634 The supported values are:
44635           </p>
44636           <ul>
44637             <li>
44638 SCREEN_OFF - This screen state cannot be requested but can only be used in the state change callback.            </li>
44639             <li>
44640 SCREEN_DIM - The minimal screen state is set to <em>DIM</em> and device does not change to <em>OFF</em> state automatically.            </li>
44641             <li>
44642 SCREEN_NORMAL - The minimal screen state is set to <em>NORMAL</em> and device does not change to <em>DIM</em> state automatically.            </li>
44643             <li>
44644 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>
44645           </ul>
44646           <p>
44647 <em>DIM</em> state refers to the screen that the backlight is turned off
44648 <em>NORMAL</em> state refers to the default screen brightness that a user has configured for the device.
44649 <em>BRIGHT(Deprecated)</em> state refers to the maximum screen brightness that the device provides.
44650 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.
44651           </p>
44652          </description>
44653           <deprecated>
44654  SCREEN_BRIGHT is deprecated.
44655           </deprecated>
44656           <version>
44657  2.0
44658           </version>
44659       </descriptive>
44660       <EnumValue stringvalue="SCREEN_OFF">
44661         <webidl> &quot;SCREEN_OFF</webidl>
44662       </EnumValue>
44663       <EnumValue stringvalue="SCREEN_DIM">
44664         <webidl> &quot;SCREEN_DIM</webidl>
44665       </EnumValue>
44666       <EnumValue stringvalue="SCREEN_NORMAL">
44667         <webidl> &quot;SCREEN_NORMAL</webidl>
44668       </EnumValue>
44669       <EnumValue stringvalue="SCREEN_BRIGHT">
44670         <webidl> &quot;SCREEN_BRIGHT</webidl>
44671       </EnumValue>
44672     </Enum>
44673     <Enum name="PowerCpuState" id="::Power::PowerCpuState">
44674       <webidl>    enum PowerCpuState { &quot;CPU_AWAKE&quot; };</webidl>
44675       <descriptive>
44676           <brief>
44677  An enumerator that indicates the power state for cpu resource.
44678           </brief>
44679          <description>
44680           <p>
44681 The supported values are:
44682           </p>
44683           <ul>
44684             <li>
44685 CPU_AWAKE - The cpu state is set to be awaken and it does not go to <em>SLEEP</em> state automatically.            </li>
44686           </ul>
44687          </description>
44688           <version>
44689  2.0
44690           </version>
44691       </descriptive>
44692       <EnumValue stringvalue="CPU_AWAKE">
44693         <webidl> &quot;CPU_AWAKE</webidl>
44694       </EnumValue>
44695     </Enum>
44696     <Typedef name="PowerState" id="::Power::PowerState">
44697       <webidl>    typedef (<ref>PowerScreenState</ref> or <ref>PowerCpuState</ref>) PowerState;</webidl>
44698       <descriptive>
44699           <brief>
44700  The supported power states in general.
44701 It can be either a PowerScreenState or a PowerCpuState.
44702           </brief>
44703           <version>
44704  2.0
44705           </version>
44706       </descriptive>
44707       <Type type="union">
44708         <Type name="PowerScreenState"/>
44709         <Type name="PowerCpuState"/>
44710       </Type>
44711     </Typedef>
44712     <Interface name="PowerManagerObject" id="::Power::PowerManagerObject">
44713       <webidl>    [NoInterfaceObject] interface PowerManagerObject {
44714         readonly attribute <ref>PowerManager</ref> power;
44715     };</webidl>
44716       <descriptive>
44717           <brief>
44718  This interface defines what is instantiated by the <em>Tizen</em> object from the Tizen Platform.
44719           </brief>
44720          <description>
44721           <p>
44722 There will be a <em>tizen.power </em>object that allows accessing of a functionality of the Power API.
44723           </p>
44724          </description>
44725           <version>
44726  2.0
44727           </version>
44728       </descriptive>
44729       <ExtendedAttributeList>
44730         <ExtendedAttribute name="NoInterfaceObject">
44731           <webidl>NoInterfaceObject</webidl>
44732         </ExtendedAttribute>
44733       </ExtendedAttributeList>
44734       <Attribute readonly="readonly" name="power" id="::Power::PowerManagerObject::power">
44735         <webidl>        readonly attribute <ref>PowerManager</ref> power;</webidl>
44736         <Type name="PowerManager"/>
44737       </Attribute>
44738     </Interface>
44739     <Implements name1="Tizen" name2="PowerManagerObject">
44740       <webidl>    <ref>Tizen</ref> implements <ref>PowerManagerObject</ref>;</webidl>
44741     </Implements>
44742     <Interface name="PowerManager" id="::Power::PowerManager">
44743       <webidl>   [NoInterfaceObject] interface PowerManager {
44744        void request(<ref>PowerResource</ref> resource, <ref>PowerState</ref> state) raises(<ref>WebAPIException</ref>);
44745
44746        void release(<ref>PowerResource</ref> resource) raises(<ref>WebAPIException</ref>);
44747
44748        void setScreenStateChangeListener(<ref>ScreenStateChangeCallback</ref> listener) raises(<ref>WebAPIException</ref>);
44749
44750        void unsetScreenStateChangeListener() raises(<ref>WebAPIException</ref>);
44751
44752        double getScreenBrightness() raises(<ref>WebAPIException</ref>);
44753
44754        void setScreenBrightness(double brightness) raises(<ref>WebAPIException</ref>);
44755
44756        boolean isScreenOn() raises(<ref>WebAPIException</ref>);
44757
44758        void restoreScreenBrightness() raises(<ref>WebAPIException</ref>);
44759
44760        void turnScreenOn() raises(<ref>WebAPIException</ref>);
44761
44762        void turnScreenOff() raises(<ref>WebAPIException</ref>);
44763    };</webidl>
44764       <descriptive>
44765           <brief>
44766  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.
44767           </brief>
44768           <version>
44769  2.0
44770           </version>
44771       </descriptive>
44772       <ExtendedAttributeList>
44773         <ExtendedAttribute name="NoInterfaceObject">
44774           <webidl>NoInterfaceObject</webidl>
44775         </ExtendedAttribute>
44776       </ExtendedAttributeList>
44777       <Operation name="request" id="::Power::PowerManager::request">
44778         <webidl>       void request(<ref>PowerResource</ref> resource, <ref>PowerState</ref> state) raises(<ref>WebAPIException</ref>);</webidl>
44779         <descriptive>
44780             <brief>
44781  Requests the minimum-state for a power resource.
44782             </brief>
44783             <version>
44784  2.0
44785             </version>
44786             <privilegelevel>
44787  public
44788             </privilegelevel>
44789             <privilege>
44790  http://tizen.org/privilege/power
44791             </privilege>
44792             <Code> tizen.power.request(&quot;SCREEN&quot;, &quot;SCREEN_NORMAL&quot;);
44793  </Code>
44794         </descriptive>
44795         <Type type="void"/>
44796         <ArgumentList>
44797           <Argument name="resource">
44798             <descriptive>
44799                 <description><p>
44800  The power resource for which the request is made.
44801                 </p></description>
44802             </descriptive>
44803             <Type name="PowerResource"/>
44804           </Argument>
44805           <Argument name="state">
44806             <descriptive>
44807                 <description><p>
44808  The minimal power state in which the power resource is desired to be.
44809                 </p></description>
44810             </descriptive>
44811             <Type name="PowerState"/>
44812           </Argument>
44813         </ArgumentList>
44814         <Raises>
44815           <RaiseException name="WebAPIException">
44816             <descriptive>
44817                 <description><p>
44818  with error type TypeMismatchError, if the input parameter is not
44819 compatible with the expected type.
44820                 </p></description>
44821                 <description><p>
44822  with error type NotSupportedError, if this feature is not supported.
44823                 </p></description>
44824                 <description><p>
44825  with error type InvalidValuesError, if any of the input
44826 parameters contain an invalid value.
44827                 </p></description>
44828                 <description><p>
44829  with error type SecurityError, if the application does not have the privilege to call this method.
44830                 </p></description>
44831                 <description><p>
44832  with error type UnknownError in any other error case.
44833                 </p></description>
44834             </descriptive>
44835           </RaiseException>
44836         </Raises>
44837       </Operation>
44838       <Operation name="release" id="::Power::PowerManager::release">
44839         <webidl>       void release(<ref>PowerResource</ref> resource) raises(<ref>WebAPIException</ref>);</webidl>
44840         <descriptive>
44841             <brief>
44842  Releases the power state request for the given resource.
44843             </brief>
44844             <version>
44845  2.0
44846             </version>
44847             <Code> // Release SCREEN resource.
44848  tizen.power.release(&quot;SCREEN&quot;);
44849  </Code>
44850         </descriptive>
44851         <Type type="void"/>
44852         <ArgumentList>
44853           <Argument name="resource">
44854             <descriptive>
44855                 <description><p>
44856  The resource for which requests are to be removed.
44857                 </p></description>
44858             </descriptive>
44859             <Type name="PowerResource"/>
44860           </Argument>
44861         </ArgumentList>
44862         <Raises>
44863           <RaiseException name="WebAPIException">
44864             <descriptive>
44865                 <description><p>
44866  with error type TypeMismatchError, if the input parameter is not
44867 compatible with the expected type.
44868                 </p></description>
44869                 <description><p>
44870  with error type NotSupportedError, if this feature is not supported.
44871                 </p></description>
44872                 <description><p>
44873  with error type InvalidValuesError, if any of the input
44874 parameters contain an invalid value.
44875                 </p></description>
44876                 <description><p>
44877  with error type UnknownError in any other error case.
44878                 </p></description>
44879             </descriptive>
44880           </RaiseException>
44881         </Raises>
44882       </Operation>
44883       <Operation name="setScreenStateChangeListener" id="::Power::PowerManager::setScreenStateChangeListener">
44884         <webidl>       void setScreenStateChangeListener(<ref>ScreenStateChangeCallback</ref> listener) raises(<ref>WebAPIException</ref>);</webidl>
44885         <descriptive>
44886             <brief>
44887  Sets the screen state change callback and monitors its state changes.
44888             </brief>
44889             <version>
44890  2.0
44891             </version>
44892             <Code> function onScreenStateChanged(previousState, changedState) {
44893    console.log(&quot;Screen state changed from &quot; + previousState + &quot; to &quot; + changedState);
44894  }
44895
44896  // Set the screen state change listener.
44897  tizen.power.setScreenStateChangeListener(onScreenStateChanged);
44898  </Code>
44899         </descriptive>
44900         <Type type="void"/>
44901         <ArgumentList>
44902           <Argument name="listener">
44903             <descriptive>
44904                 <description><p>
44905  The screen state change callback.
44906                 </p></description>
44907             </descriptive>
44908             <Type name="ScreenStateChangeCallback"/>
44909           </Argument>
44910         </ArgumentList>
44911         <Raises>
44912           <RaiseException name="WebAPIException">
44913             <descriptive>
44914                 <description><p>
44915  with error type TypeMismatchError, if the input parameter is not
44916 compatible with the expected type.
44917                 </p></description>
44918                 <description><p>
44919  with error type NotSupportedError, if this feature is not supported.
44920                 </p></description>
44921                 <description><p>
44922  with error type InvalidValuesError, if any of the input
44923 parameters contain an invalid value.
44924                 </p></description>
44925                 <description><p>
44926  with error type UnknownError in any other error case.
44927                 </p></description>
44928             </descriptive>
44929           </RaiseException>
44930         </Raises>
44931       </Operation>
44932       <Operation name="unsetScreenStateChangeListener" id="::Power::PowerManager::unsetScreenStateChangeListener">
44933         <webidl>       void unsetScreenStateChangeListener() raises(<ref>WebAPIException</ref>);</webidl>
44934         <descriptive>
44935             <brief>
44936  Unsets the screen state change callback and stop monitoring it.
44937             </brief>
44938             <version>
44939  2.0
44940             </version>
44941             <Code> // Unset the screen state change listener.
44942  tizen.power.unsetScreenStateChangeListener();
44943  </Code>
44944         </descriptive>
44945         <Type type="void"/>
44946         <ArgumentList/>
44947         <Raises>
44948           <RaiseException name="WebAPIException">
44949             <descriptive>
44950                 <description><p>
44951  with error type NotSupportedError, if this feature is not supported.
44952                 </p></description>
44953                 <description><p>
44954  with error type UnknownError in any other error case.
44955                 </p></description>
44956             </descriptive>
44957           </RaiseException>
44958         </Raises>
44959       </Operation>
44960       <Operation name="getScreenBrightness" id="::Power::PowerManager::getScreenBrightness">
44961         <webidl>       double getScreenBrightness() raises(<ref>WebAPIException</ref>);</webidl>
44962         <descriptive>
44963             <brief>
44964  Gets the screen brightness level of an application, from 0 to 1.
44965             </brief>
44966             <version>
44967  2.0
44968             </version>
44969             <Code> // Get the current screen brightness value.
44970  var screenBrightness = tizen.power.getScreenBrightness();
44971  </Code>
44972         </descriptive>
44973         <Type type="double">
44974           <descriptive>
44975               <description><p>
44976  double Current screen brightness value.
44977               </p></description>
44978           </descriptive>
44979         </Type>
44980         <ArgumentList/>
44981         <Raises>
44982           <RaiseException name="WebAPIException">
44983             <descriptive>
44984                 <description><p>
44985  with error type NotSupportedError, if this feature is not supported.
44986                 </p></description>
44987                 <description><p>
44988  with error type UnknownError in any other error case.
44989                 </p></description>
44990             </descriptive>
44991           </RaiseException>
44992         </Raises>
44993       </Operation>
44994       <Operation name="setScreenBrightness" id="::Power::PowerManager::setScreenBrightness">
44995         <webidl>       void setScreenBrightness(double brightness) raises(<ref>WebAPIException</ref>);</webidl>
44996         <descriptive>
44997             <brief>
44998  Sets the screen brightness level for an application, from 0 to 1.
44999             </brief>
45000            <description>
45001             <p>
45002 An approximation is made for best effort when the given value is not exactly applicable by the hardware or system.
45003             </p>
45004            </description>
45005             <version>
45006  2.0
45007             </version>
45008             <privilegelevel>
45009  public
45010             </privilegelevel>
45011             <privilege>
45012  http://tizen.org/privilege/power
45013             </privilege>
45014             <Code> // Set the screen brightness value for the application.
45015  tizen.power.setScreenBrightness(1);
45016  </Code>
45017         </descriptive>
45018         <Type type="void"/>
45019         <ArgumentList>
45020           <Argument name="brightness">
45021             <descriptive>
45022                 <description><p>
45023  The screen brightness value to set.
45024                 </p></description>
45025             </descriptive>
45026             <Type type="double"/>
45027           </Argument>
45028         </ArgumentList>
45029         <Raises>
45030           <RaiseException name="WebAPIException">
45031             <descriptive>
45032                 <description><p>
45033  with error type TypeMismatchError, if the input parameter is not
45034 compatible with the expected type.
45035                 </p></description>
45036                 <description><p>
45037  with error type NotSupportedError, if this feature is not supported.
45038                 </p></description>
45039                 <description><p>
45040  with error type InvalidValuesError, if any of the input
45041 parameters contain an invalid value.
45042                 </p></description>
45043                 <description><p>
45044  with error type SecurityError, if the application does not have the privilege to call this method.
45045                 </p></description>
45046                 <description><p>
45047  with error type UnknownError in any other error case.
45048                 </p></description>
45049             </descriptive>
45050           </RaiseException>
45051         </Raises>
45052       </Operation>
45053       <Operation name="isScreenOn" id="::Power::PowerManager::isScreenOn">
45054         <webidl>       boolean isScreenOn() raises(<ref>WebAPIException</ref>);</webidl>
45055         <descriptive>
45056             <brief>
45057  Returns <var>true</var> if the screen is on.
45058             </brief>
45059             <version>
45060  2.0
45061             </version>
45062             <Code> // Check whether the screen is on or off.
45063  var isScreenOn = tizen.power.isScreenOn();
45064  </Code>
45065         </descriptive>
45066         <Type type="boolean">
45067           <descriptive>
45068               <description><p>
45069  boolean true if screen is on.
45070               </p></description>
45071           </descriptive>
45072         </Type>
45073         <ArgumentList/>
45074         <Raises>
45075           <RaiseException name="WebAPIException">
45076             <descriptive>
45077                 <description><p>
45078  with error type NotSupportedError, if this feature is not supported.
45079                 </p></description>
45080                 <description><p>
45081  with error type UnknownError in any other error case.
45082                 </p></description>
45083             </descriptive>
45084           </RaiseException>
45085         </Raises>
45086       </Operation>
45087       <Operation name="restoreScreenBrightness" id="::Power::PowerManager::restoreScreenBrightness">
45088         <webidl>       void restoreScreenBrightness() raises(<ref>WebAPIException</ref>);</webidl>
45089         <descriptive>
45090             <brief>
45091  Restores the screen brightness to the system default setting value.
45092             </brief>
45093             <version>
45094  2.0
45095             </version>
45096             <Code> // Restore the screen brightness value to the system default setting value.
45097  tizen.power.restoreScreenBrightness();
45098  </Code>
45099         </descriptive>
45100         <Type type="void"/>
45101         <ArgumentList/>
45102         <Raises>
45103           <RaiseException name="WebAPIException">
45104             <descriptive>
45105                 <description><p>
45106  with error type NotSupportedError, if this feature is not supported.
45107                 </p></description>
45108                 <description><p>
45109  with error type UnknownError in any other error case.
45110                 </p></description>
45111             </descriptive>
45112           </RaiseException>
45113         </Raises>
45114       </Operation>
45115       <Operation name="turnScreenOn" id="::Power::PowerManager::turnScreenOn">
45116         <webidl>       void turnScreenOn() raises(<ref>WebAPIException</ref>);</webidl>
45117         <descriptive>
45118             <brief>
45119  Turns on the screen.
45120             </brief>
45121            <description>
45122             <p>
45123 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.
45124             </p>
45125            </description>
45126             <version>
45127  2.0
45128             </version>
45129             <privilegelevel>
45130  public
45131             </privilegelevel>
45132             <privilege>
45133  http://tizen.org/privilege/power
45134             </privilege>
45135             <Code> // Turn on the screen.
45136  tizen.power.turnScreenOn();
45137  </Code>
45138         </descriptive>
45139         <Type type="void"/>
45140         <ArgumentList/>
45141         <Raises>
45142           <RaiseException name="WebAPIException">
45143             <descriptive>
45144                 <description><p>
45145  with error type NotSupportedError, if this feature is not supported.
45146                 </p></description>
45147                 <description><p>
45148  with error type SecurityError, if the application does not have the privilege to call this method.
45149                 </p></description>
45150                 <description><p>
45151  with error type UnknownError in any other error case.
45152                 </p></description>
45153             </descriptive>
45154           </RaiseException>
45155         </Raises>
45156       </Operation>
45157       <Operation name="turnScreenOff" id="::Power::PowerManager::turnScreenOff">
45158         <webidl>       void turnScreenOff() raises(<ref>WebAPIException</ref>);</webidl>
45159         <descriptive>
45160             <brief>
45161  Turns off the screen.
45162             </brief>
45163            <description>
45164             <p>
45165 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
45166             </p>
45167            </description>
45168             <version>
45169  2.0
45170             </version>
45171             <privilegelevel>
45172  public
45173             </privilegelevel>
45174             <privilege>
45175  http://tizen.org/privilege/power
45176             </privilege>
45177             <Code> // Turn off the screen.
45178  tizen.power.turnScreenOff();
45179  </Code>
45180         </descriptive>
45181         <Type type="void"/>
45182         <ArgumentList/>
45183         <Raises>
45184           <RaiseException name="WebAPIException">
45185             <descriptive>
45186                 <description><p>
45187  with error type NotSupportedError, if this feature is not supported.
45188                 </p></description>
45189                 <description><p>
45190  with error type SecurityError, if the application does not have the privilege to call this method.
45191                 </p></description>
45192                 <description><p>
45193  with error type UnknownError in any other error case.
45194                 </p></description>
45195             </descriptive>
45196           </RaiseException>
45197         </Raises>
45198       </Operation>
45199     </Interface>
45200     <Interface name="ScreenStateChangeCallback" id="::Power::ScreenStateChangeCallback">
45201       <webidl>   [Callback=FunctionOnly, NoInterfaceObject] interface ScreenStateChangeCallback {
45202        void onchanged(<ref>PowerScreenState</ref> previousState, <ref>PowerScreenState</ref> changedState);
45203    };</webidl>
45204       <descriptive>
45205           <brief>
45206  This callback interface defines notification for the screen state changes.
45207           </brief>
45208           <version>
45209  2.0
45210           </version>
45211       </descriptive>
45212       <ExtendedAttributeList>
45213         <ExtendedAttribute name="Callback" value="FunctionOnly">
45214           <webidl>Callback</webidl>
45215         </ExtendedAttribute>
45216         <ExtendedAttribute name="NoInterfaceObject">
45217           <webidl> NoInterfaceObject</webidl>
45218         </ExtendedAttribute>
45219       </ExtendedAttributeList>
45220       <Operation name="onchanged" id="::Power::ScreenStateChangeCallback::onchanged">
45221         <webidl>       void onchanged(<ref>PowerScreenState</ref> previousState, <ref>PowerScreenState</ref> changedState);</webidl>
45222         <descriptive>
45223             <brief>
45224  Called on screen state change.
45225             </brief>
45226             <version>
45227  2.0
45228             </version>
45229         </descriptive>
45230         <Type type="void"/>
45231         <ArgumentList>
45232           <Argument name="previousState">
45233             <descriptive>
45234                 <description><p>
45235  The previous screen state.
45236                 </p></description>
45237             </descriptive>
45238             <Type name="PowerScreenState"/>
45239           </Argument>
45240           <Argument name="changedState">
45241             <descriptive>
45242                 <description><p>
45243  The changed screen state.
45244                 </p></description>
45245             </descriptive>
45246             <Type name="PowerScreenState"/>
45247           </Argument>
45248         </ArgumentList>
45249       </Operation>
45250     </Interface>
45251   </Module>
45252   <Module name="Push" id="::Push">
45253     <webidl>module Push {&#13;
45254 &#13;
45255     typedef DOMString PushRegistrationId;&#13;
45256 &#13;
45257 &#13;
45258     [NoInterfaceObject] interface PushManagerObject {&#13;
45259         readonly attribute <ref>PushManager</ref> push;&#13;
45260     };&#13;
45261     <ref>Tizen</ref> implements <ref>PushManagerObject</ref>;&#13;
45262 &#13;
45263 &#13;
45264     [NoInterfaceObject] interface PushManager {&#13;
45265 &#13;
45266       void registerService(<ref>ApplicationControl</ref> appControl, <ref>PushRegisterSuccessCallback</ref> successCallback,&#13;
45267                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
45268 &#13;
45269 &#13;
45270       void unregisterService(optional <ref>SuccessCallback</ref>? successCallback,&#13;
45271                     optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
45272 &#13;
45273 &#13;
45274       void connectService(<ref>PushNotificationCallback</ref> notificationCallback) raises(<ref>WebAPIException</ref>);&#13;
45275 &#13;
45276 &#13;
45277       void disconnectService() raises(<ref>WebAPIException</ref>);&#13;
45278 &#13;
45279 &#13;
45280       <ref>PushRegistrationId</ref> getRegistrationId() raises(<ref>WebAPIException</ref>);&#13;
45281     };&#13;
45282 &#13;
45283 &#13;
45284     [NoInterfaceObject] interface PushMessage {&#13;
45285 &#13;
45286         readonly attribute DOMString appData;&#13;
45287 &#13;
45288 &#13;
45289         readonly attribute DOMString alertMessage;&#13;
45290 &#13;
45291 &#13;
45292         readonly attribute Date date;&#13;
45293     };&#13;
45294 &#13;
45295 &#13;
45296     [Callback=FunctionOnly, NoInterfaceObject]&#13;
45297     interface PushRegisterSuccessCallback {&#13;
45298 &#13;
45299         void onsuccess(<ref>PushRegistrationId</ref> id);&#13;
45300     };&#13;
45301 &#13;
45302 &#13;
45303     [Callback=FunctionOnly, NoInterfaceObject]&#13;
45304     interface PushNotificationCallback {&#13;
45305 &#13;
45306         void onsuccess(<ref>PushMessage</ref> message);&#13;
45307     };&#13;
45308 };</webidl>
45309     <descriptive>
45310         <brief>
45311  This API provides the functionality for receiving push notifications
45312 from Tizen push server.
45313 The push service is a client daemon that maintains a permanent connection
45314 between your device and Tizen push server in order to process your registration
45315 and deregistration requests, deliver push notifications to applications on a device.
45316         </brief>
45317        <description>
45318         <p>
45319 If the application is connected, the push service passes the notification data over
45320 the connection. Otherwise, the push service posts UI notification with the data.
45321 It will be delivered when a user launches the application by selecting the posting.
45322         </p>
45323         <p>
45324 To receive push notifications, follow the steps below:
45325         </p>
45326         <ul>
45327           <li>
45328 Get administrative permission for an application on your device          </li>
45329           <li>
45330 Register the application          </li>
45331           <li>
45332 Connect to the push service          </li>
45333           <li>
45334 Get notification data          </li>
45335         </ul>
45336         <p>
45337 For more information on the Push features, see <a href="../../org.tizen.web.appprogramming/html/guide/communication_guide/push.htm">Push Guide</a>.
45338         </p>
45339        </description>
45340         <version>
45341  2.1
45342         </version>
45343         <def-api-feature identifier="http://tizen.org/feature/network.push">
45344           <descriptive>
45345            <description>
45346             <p>
45347 To guarantee this application running on a device with Push feature, define below in the config file:
45348             </p>
45349            </description>
45350           </descriptive>
45351         </def-api-feature>
45352     </descriptive>
45353     <Typedef name="PushRegistrationId" id="::Push::PushRegistrationId">
45354       <webidl>    typedef DOMString PushRegistrationId;</webidl>
45355       <descriptive>
45356           <brief>
45357  A push service registration identifier.
45358           </brief>
45359           <version>
45360  2.1
45361           </version>
45362       </descriptive>
45363       <Type type="DOMString"/>
45364     </Typedef>
45365     <Interface name="PushManagerObject" id="::Push::PushManagerObject">
45366       <webidl>    [NoInterfaceObject] interface PushManagerObject {&#13;
45367         readonly attribute <ref>PushManager</ref> push;&#13;
45368     };</webidl>
45369       <descriptive>
45370           <brief>
45371  This interface defines what is instantiated by the <em>Tizen </em>object from the Tizen Platform.
45372           </brief>
45373          <description>
45374           <p>
45375 There will be a <em>tizen.push </em>object that allows access to the functionality of the Push API.
45376           </p>
45377          </description>
45378           <version>
45379  2.1
45380           </version>
45381       </descriptive>
45382       <ExtendedAttributeList>
45383         <ExtendedAttribute name="NoInterfaceObject">
45384           <webidl>NoInterfaceObject</webidl>
45385         </ExtendedAttribute>
45386       </ExtendedAttributeList>
45387       <Attribute readonly="readonly" name="push" id="::Push::PushManagerObject::push">
45388         <webidl>        readonly attribute <ref>PushManager</ref> push;</webidl>
45389         <Type name="PushManager"/>
45390       </Attribute>
45391     </Interface>
45392     <Implements name1="Tizen" name2="PushManagerObject">
45393       <webidl>    <ref>Tizen</ref> implements <ref>PushManagerObject</ref>;</webidl>
45394     </Implements>
45395     <Interface name="PushManager" id="::Push::PushManager">
45396       <webidl>    [NoInterfaceObject] interface PushManager {&#13;
45397 &#13;
45398       void registerService(<ref>ApplicationControl</ref> appControl, <ref>PushRegisterSuccessCallback</ref> successCallback,&#13;
45399                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
45400 &#13;
45401 &#13;
45402       void unregisterService(optional <ref>SuccessCallback</ref>? successCallback,&#13;
45403                     optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
45404 &#13;
45405 &#13;
45406       void connectService(<ref>PushNotificationCallback</ref> notificationCallback) raises(<ref>WebAPIException</ref>);&#13;
45407 &#13;
45408 &#13;
45409       void disconnectService() raises(<ref>WebAPIException</ref>);&#13;
45410 &#13;
45411 &#13;
45412       <ref>PushRegistrationId</ref> getRegistrationId() raises(<ref>WebAPIException</ref>);&#13;
45413     };</webidl>
45414       <descriptive>
45415           <brief>
45416  This interface provides methods to manage push registration and notification.
45417           </brief>
45418           <version>
45419  2.1
45420           </version>
45421       </descriptive>
45422       <ExtendedAttributeList>
45423         <ExtendedAttribute name="NoInterfaceObject">
45424           <webidl>NoInterfaceObject</webidl>
45425         </ExtendedAttribute>
45426       </ExtendedAttributeList>
45427       <Operation name="registerService" id="::Push::PushManager::registerService">
45428         <webidl>      void registerService(<ref>ApplicationControl</ref> appControl, <ref>PushRegisterSuccessCallback</ref> successCallback,&#13;
45429                   optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
45430         <descriptive>
45431             <brief>
45432  Registers an application to the Tizen push server.
45433             </brief>
45434             <remark>
45435  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>.
45436             </remark>
45437            <description>
45438             <p>
45439 The <em>ErrorCallback()</em> is launched with these error types:
45440             </p>
45441             <ul>
45442               <li>
45443 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
45444               <li>
45445 UnknownError - If any other error occurs.              </li>
45446             </ul>
45447            </description>
45448             <version>
45449  2.1
45450             </version>
45451             <privilegelevel>
45452  public
45453             </privilegelevel>
45454             <privilege>
45455  http://tizen.org/privilege/push
45456             </privilege>
45457             <Code> // Defines the data to be used when this process is launched by notification service.
45458  var service = new tizen.ApplicationControl(&quot;http://tizen.org/appcontrol/operation/push_test&quot;);
45459
45460  // Defines the error callback.
45461  function errorCallback(response) {
45462    console.log( 'The following error occurred: ' +  response.name);
45463  }
45464
45465  // Defines the registration success callback
45466  function registerSuccessCallback(id) {
45467    console.log(&quot;Registration succeeded with id: &quot; + id);
45468  }
45469
45470  // Requests registration.
45471  tizen.push.registerService(service, registerSuccessCallback, errorCallback);
45472  </Code>
45473         </descriptive>
45474         <Type type="void"/>
45475         <ArgumentList>
45476           <Argument name="appControl">
45477             <descriptive>
45478                 <description><p>
45479  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>.
45480                 </p></description>
45481             </descriptive>
45482             <Type name="ApplicationControl"/>
45483           </Argument>
45484           <Argument name="successCallback">
45485             <descriptive>
45486                 <description><p>
45487  The method to be called when the registration request succeeds.
45488                 </p></description>
45489             </descriptive>
45490             <Type name="PushRegisterSuccessCallback"/>
45491           </Argument>
45492           <Argument optional="optional" name="errorCallback">
45493             <descriptive>
45494                 <description><p>
45495  The method to be called when the registration request fails.
45496                 </p></description>
45497             </descriptive>
45498             <Type name="ErrorCallback" nullable="nullable"/>
45499           </Argument>
45500         </ArgumentList>
45501         <Raises>
45502           <RaiseException name="WebAPIException">
45503             <descriptive>
45504                 <description><p>
45505  with error type TypeMismatchError, if any input parameter
45506 is not compatible with the expected type for that parameter.
45507                 </p></description>
45508                 <description><p>
45509  with error type InvalidValuesError, if any input parameters
45510 does not contain a valid value.
45511                 </p></description>
45512                 <description><p>
45513  with error type SecurityError, if the application does not have the privilege to call this method.
45514                 </p></description>
45515                 <description><p>
45516  with error type NotSupportedError, if this feature is not supported.
45517                 </p></description>
45518                 <description><p>
45519  with error type UnknownError, if any other error occurs.
45520                 </p></description>
45521             </descriptive>
45522           </RaiseException>
45523         </Raises>
45524       </Operation>
45525       <Operation name="unregisterService" id="::Push::PushManager::unregisterService">
45526         <webidl>      void unregisterService(optional <ref>SuccessCallback</ref>? successCallback,&#13;
45527                     optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
45528         <descriptive>
45529             <brief>
45530  Unregisters an application from the Tizen push server.
45531             </brief>
45532            <description>
45533             <p>
45534 The <em>ErrorCallback()</em> is launched with these error types:
45535             </p>
45536             <ul>
45537               <li>
45538 UnknownError - If an unknown error occurs.              </li>
45539             </ul>
45540            </description>
45541             <version>
45542  2.1
45543             </version>
45544             <privilegelevel>
45545  public
45546             </privilegelevel>
45547             <privilege>
45548  http://tizen.org/privilege/push
45549             </privilege>
45550             <Code> // Defines the error callback
45551  function errorCallback(response) {
45552    console.log( 'The following error occurred: ' +  response.name);
45553  }
45554
45555  // Defines the unregistration success callback
45556  function unregisterSuccessCallback() {
45557    console.log(&quot;Unregistration succeeded.&quot;);
45558  }
45559
45560  // Requests unregistration
45561  tizen.push.unregisterService(unregisterSuccessCallback, errorCallback);
45562  </Code>
45563         </descriptive>
45564         <Type type="void"/>
45565         <ArgumentList>
45566           <Argument optional="optional" name="successCallback">
45567             <descriptive>
45568                 <description><p>
45569  The method to be called when the request is successfully unregistered.
45570                 </p></description>
45571             </descriptive>
45572             <Type name="SuccessCallback" nullable="nullable"/>
45573           </Argument>
45574           <Argument optional="optional" name="errorCallback">
45575             <descriptive>
45576                 <description><p>
45577  The method to be called when the unregistration request fails.
45578                 </p></description>
45579             </descriptive>
45580             <Type name="ErrorCallback" nullable="nullable"/>
45581           </Argument>
45582         </ArgumentList>
45583         <Raises>
45584           <RaiseException name="WebAPIException">
45585             <descriptive>
45586                 <description><p>
45587  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
45588                 </p></description>
45589                 <description><p>
45590  with error type InvalidValuesError, if any input parameters does not contain a valid value.
45591                 </p></description>
45592                 <description><p>
45593  with error type SecurityError, if the application does not have the privilege to call this method.
45594                 </p></description>
45595                 <description><p>
45596  with error type NotSupportedError, if this feature is not supported.
45597                 </p></description>
45598                 <description><p>
45599  with error type UnknownError, if any other error occurs.
45600                 </p></description>
45601             </descriptive>
45602           </RaiseException>
45603         </Raises>
45604       </Operation>
45605       <Operation name="connectService" id="::Push::PushManager::connectService">
45606         <webidl>      void connectService(<ref>PushNotificationCallback</ref> notificationCallback) raises(<ref>WebAPIException</ref>);</webidl>
45607         <descriptive>
45608             <brief>
45609  Connects to the push service and receives push notifications.
45610             </brief>
45611             <version>
45612  2.1
45613             </version>
45614             <privilegelevel>
45615  public
45616             </privilegelevel>
45617             <privilege>
45618  http://tizen.org/privilege/push
45619             </privilege>
45620             <Code> // Defines the connect success callback
45621  function notificationCallback(noti) {
45622    console.log(&quot;Notification received with alert message: &quot; + noti.alertMessage);
45623  }
45624
45625  // Requests for push service connection
45626  tizen.push.connectService(notificationCallback, errorCallback);
45627  </Code>
45628         </descriptive>
45629         <Type type="void"/>
45630         <ArgumentList>
45631           <Argument name="notificationCallback">
45632             <descriptive>
45633                 <description><p>
45634  The method to be called when the notification message arrives.
45635                 </p></description>
45636             </descriptive>
45637             <Type name="PushNotificationCallback"/>
45638           </Argument>
45639         </ArgumentList>
45640         <Raises>
45641           <RaiseException name="WebAPIException">
45642             <descriptive>
45643                 <description><p>
45644  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
45645                 </p></description>
45646                 <description><p>
45647  with error type InvalidValuesError, if any input parameters does not contain a valid value.
45648                 </p></description>
45649                 <description><p>
45650  with error type SecurityError, if the application does not have the privilege to call this method.
45651                 </p></description>
45652                 <description><p>
45653  with error type NotSupportedError, if this feature is not supported.
45654                 </p></description>
45655                 <description><p>
45656  with error type UnknownError, if any other error occurs.
45657                 </p></description>
45658             </descriptive>
45659           </RaiseException>
45660         </Raises>
45661       </Operation>
45662       <Operation name="disconnectService" id="::Push::PushManager::disconnectService">
45663         <webidl>      void disconnectService() raises(<ref>WebAPIException</ref>);</webidl>
45664         <descriptive>
45665             <brief>
45666  Disconnects to the push service and stop receiving push notifications.
45667             </brief>
45668             <version>
45669  2.1
45670             </version>
45671             <privilegelevel>
45672  public
45673             </privilegelevel>
45674             <privilege>
45675  http://tizen.org/privilege/push
45676             </privilege>
45677             <Code> // Requests disconnection
45678  tizen.push.disconnectService();
45679  </Code>
45680         </descriptive>
45681         <Type type="void"/>
45682         <ArgumentList/>
45683         <Raises>
45684           <RaiseException name="WebAPIException">
45685             <descriptive>
45686                 <description><p>
45687  with error type SecurityError, if the application does not have the privilege to call this method.
45688                 </p></description>
45689                 <description><p>
45690  with error type NotSupportedError, if this feature is not supported.
45691                 </p></description>
45692                 <description><p>
45693  with error type UnknownError, if any other error occurs.
45694                 </p></description>
45695             </descriptive>
45696           </RaiseException>
45697         </Raises>
45698       </Operation>
45699       <Operation name="getRegistrationId" id="::Push::PushManager::getRegistrationId">
45700         <webidl>      <ref>PushRegistrationId</ref> getRegistrationId() raises(<ref>WebAPIException</ref>);</webidl>
45701         <descriptive>
45702             <brief>
45703  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.
45704             </brief>
45705             <version>
45706  2.1
45707             </version>
45708             <privilegelevel>
45709  public
45710             </privilegelevel>
45711             <privilege>
45712  http://tizen.org/privilege/push
45713             </privilege>
45714             <Code> var registrationId = tizen.push.getRegistrationId();
45715  if ( registrationId != NULL ) {
45716    console.log(&quot;The registration id: &quot; + registrationId);
45717  }
45718  </Code>
45719         </descriptive>
45720         <Type name="PushRegistrationId"/>
45721         <ArgumentList/>
45722         <Raises>
45723           <RaiseException name="WebAPIException">
45724             <descriptive>
45725                 <description><p>
45726  with error type SecurityError, if the application does not have the privilege to call this method.
45727                 </p></description>
45728                 <description><p>
45729  with error type NotSupportedError, if this feature is not supported.
45730                 </p></description>
45731                 <description><p>
45732  with error type UnknownError, if any other error occurs.
45733                 </p></description>
45734             </descriptive>
45735           </RaiseException>
45736         </Raises>
45737       </Operation>
45738     </Interface>
45739     <Interface name="PushMessage" id="::Push::PushMessage">
45740       <webidl>    [NoInterfaceObject] interface PushMessage {&#13;
45741 &#13;
45742         readonly attribute DOMString appData;&#13;
45743 &#13;
45744 &#13;
45745         readonly attribute DOMString alertMessage;&#13;
45746 &#13;
45747 &#13;
45748         readonly attribute Date date;&#13;
45749     };</webidl>
45750       <descriptive>
45751           <brief>
45752  This interface specifies the push message that is delivered from the push service.
45753           </brief>
45754           <version>
45755  2.1
45756           </version>
45757       </descriptive>
45758       <ExtendedAttributeList>
45759         <ExtendedAttribute name="NoInterfaceObject">
45760           <webidl>NoInterfaceObject</webidl>
45761         </ExtendedAttribute>
45762       </ExtendedAttributeList>
45763       <Attribute readonly="readonly" name="appData" id="::Push::PushMessage::appData">
45764         <webidl>        readonly attribute DOMString appData;</webidl>
45765         <descriptive>
45766             <brief>
45767  An attribute to store the push notification data.
45768             </brief>
45769            <description>
45770             <p>
45771 This data is the message that the sender wants to send and its length must be less than 1 KB.
45772             </p>
45773            </description>
45774             <version>
45775  2.1
45776             </version>
45777         </descriptive>
45778         <Type type="DOMString"/>
45779       </Attribute>
45780       <Attribute readonly="readonly" name="alertMessage" id="::Push::PushMessage::alertMessage">
45781         <webidl>        readonly attribute DOMString alertMessage;</webidl>
45782         <descriptive>
45783             <brief>
45784  An attribute to store the push notification message that is displayed as an alert message to the user.
45785             </brief>
45786             <version>
45787  2.1
45788             </version>
45789         </descriptive>
45790         <Type type="DOMString"/>
45791       </Attribute>
45792       <Attribute readonly="readonly" name="date" id="::Push::PushMessage::date">
45793         <webidl>        readonly attribute Date date;</webidl>
45794         <descriptive>
45795             <brief>
45796  An attribute to store the date/time when a push notification message is received.
45797             </brief>
45798             <version>
45799  2.1
45800             </version>
45801         </descriptive>
45802         <Type type="Date"/>
45803       </Attribute>
45804     </Interface>
45805     <Interface name="PushRegisterSuccessCallback" id="::Push::PushRegisterSuccessCallback">
45806       <webidl>    [Callback=FunctionOnly, NoInterfaceObject]&#13;
45807     interface PushRegisterSuccessCallback {&#13;
45808 &#13;
45809         void onsuccess(<ref>PushRegistrationId</ref> id);&#13;
45810     };</webidl>
45811       <descriptive>
45812           <brief>
45813  This interface specifies the success callback for push service registration request.
45814           </brief>
45815          <description>
45816           <p>
45817 This success callback is invoked when a push service registration request is successful.
45818           </p>
45819          </description>
45820           <version>
45821  2.1
45822           </version>
45823       </descriptive>
45824       <ExtendedAttributeList>
45825         <ExtendedAttribute name="Callback" value="FunctionOnly">
45826           <webidl>Callback</webidl>
45827         </ExtendedAttribute>
45828         <ExtendedAttribute name="NoInterfaceObject">
45829           <webidl> NoInterfaceObject</webidl>
45830         </ExtendedAttribute>
45831       </ExtendedAttributeList>
45832       <Operation name="onsuccess" id="::Push::PushRegisterSuccessCallback::onsuccess">
45833         <webidl>        void onsuccess(<ref>PushRegistrationId</ref> id);</webidl>
45834         <descriptive>
45835             <brief>
45836  Called when a push service registration request is successful.
45837             </brief>
45838             <version>
45839  2.1
45840             </version>
45841         </descriptive>
45842         <Type type="void"/>
45843         <ArgumentList>
45844           <Argument name="id">
45845             <descriptive>
45846                 <description><p>
45847  The registration ID.
45848                 </p></description>
45849             </descriptive>
45850             <Type name="PushRegistrationId"/>
45851           </Argument>
45852         </ArgumentList>
45853       </Operation>
45854     </Interface>
45855     <Interface name="PushNotificationCallback" id="::Push::PushNotificationCallback">
45856       <webidl>    [Callback=FunctionOnly, NoInterfaceObject]&#13;
45857     interface PushNotificationCallback {&#13;
45858 &#13;
45859         void onsuccess(<ref>PushMessage</ref> message);&#13;
45860     };</webidl>
45861       <descriptive>
45862           <brief>
45863  This interface specifies the notification callback for the received push notification message.
45864           </brief>
45865          <description>
45866           <p>
45867 This notification callback is invoked when the push notification message arrives.
45868           </p>
45869          </description>
45870           <version>
45871  2.1
45872           </version>
45873       </descriptive>
45874       <ExtendedAttributeList>
45875         <ExtendedAttribute name="Callback" value="FunctionOnly">
45876           <webidl>Callback</webidl>
45877         </ExtendedAttribute>
45878         <ExtendedAttribute name="NoInterfaceObject">
45879           <webidl> NoInterfaceObject</webidl>
45880         </ExtendedAttribute>
45881       </ExtendedAttributeList>
45882       <Operation name="onsuccess" id="::Push::PushNotificationCallback::onsuccess">
45883         <webidl>        void onsuccess(<ref>PushMessage</ref> message);</webidl>
45884         <descriptive>
45885             <brief>
45886  Called when the push notification message arrives.
45887             </brief>
45888             <version>
45889  2.1
45890             </version>
45891         </descriptive>
45892         <Type type="void"/>
45893         <ArgumentList>
45894           <Argument name="message">
45895             <descriptive>
45896                 <description><p>
45897  The received push notification message.
45898                 </p></description>
45899             </descriptive>
45900             <Type name="PushMessage"/>
45901           </Argument>
45902         </ArgumentList>
45903       </Operation>
45904     </Interface>
45905   </Module>
45906   <Module name="SecureElement" id="::SecureElement">
45907     <webidl>module SecureElement {&#13;
45908 &#13;
45909   [NoInterfaceObject] interface SEServiceManagerObject {&#13;
45910     readonly attribute <ref>SEService</ref> seService;&#13;
45911   };&#13;
45912   <ref>Tizen</ref> implements <ref>SEServiceManagerObject</ref>;&#13;
45913  &#13;
45914 &#13;
45915   [NoInterfaceObject] interface SEService&#13;
45916   {&#13;
45917 &#13;
45918     void getReaders(<ref>ReaderArraySuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
45919 &#13;
45920     unsigned long registerSEListener(<ref>SEChangeListener</ref> listener) raises(<ref>WebAPIException</ref>);&#13;
45921 &#13;
45922     void unregisterSEListener(unsigned long id) raises(<ref>WebAPIException</ref>);&#13;
45923 &#13;
45924 &#13;
45925     void shutdown() raises(<ref>WebAPIException</ref>);&#13;
45926   };&#13;
45927 &#13;
45928 &#13;
45929   [NoInterfaceObject] interface Reader&#13;
45930   {&#13;
45931 &#13;
45932     readonly attribute boolean isPresent;&#13;
45933 &#13;
45934     DOMString getName() raises(<ref>WebAPIException</ref>);&#13;
45935 &#13;
45936     void openSession(<ref>SessionSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
45937 &#13;
45938     void closeSessions() raises(<ref>WebAPIException</ref>);&#13;
45939   };&#13;
45940 &#13;
45941   [NoInterfaceObject] interface Session&#13;
45942   {&#13;
45943 &#13;
45944     readonly attribute boolean isClosed;&#13;
45945 &#13;
45946     void openBasicChannel(byte[] aid, <ref>ChannelSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
45947 &#13;
45948     void openLogicalChannel(byte[] aid, <ref>ChannelSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
45949 &#13;
45950     byte[] getATR() raises(<ref>WebAPIException</ref>);&#13;
45951 &#13;
45952     void close() raises(<ref>WebAPIException</ref>);&#13;
45953 &#13;
45954     void closeChannels() raises(<ref>WebAPIException</ref>);&#13;
45955   };&#13;
45956 &#13;
45957 &#13;
45958   [NoInterfaceObject] interface Channel {&#13;
45959 &#13;
45960     readonly attribute boolean isBasicChannel;&#13;
45961 &#13;
45962     void close() raises(<ref>WebAPIException</ref>);&#13;
45963     &#13;
45964 &#13;
45965     void transmit(byte[] command, <ref>TransmitSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
45966   };&#13;
45967 &#13;
45968 &#13;
45969   [Callback, NoInterfaceObject] interface SEChangeListener {&#13;
45970 &#13;
45971     void onSEReady(<ref>Reader</ref> reader);&#13;
45972 &#13;
45973     void onSENotReady(<ref>Reader</ref> reader);&#13;
45974   };&#13;
45975 &#13;
45976 &#13;
45977   [Callback=FunctionOnly, NoInterfaceObject] interface ReaderArraySuccessCallback {&#13;
45978 &#13;
45979     void onsuccess(<ref>Reader</ref>[] readers);&#13;
45980   };&#13;
45981 &#13;
45982 &#13;
45983   [Callback=FunctionOnly, NoInterfaceObject] interface SessionSuccessCallback {&#13;
45984 &#13;
45985     void onsuccess(<ref>Session</ref> session);&#13;
45986   };&#13;
45987 &#13;
45988 &#13;
45989   [Callback=FunctionOnly, NoInterfaceObject] interface ChannelSuccessCallback {&#13;
45990 &#13;
45991     void onsuccess(<ref>Channel</ref> channel);&#13;
45992   };&#13;
45993 &#13;
45994 &#13;
45995   [Callback=FunctionOnly, NoInterfaceObject] interface TransmitSuccessCallback {&#13;
45996 &#13;
45997     void onsuccess(byte[] response);&#13;
45998   };&#13;
45999 };</webidl>
46000     <descriptive>
46001         <brief>
46002  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.
46003         </brief>
46004        <description>
46005         <p>
46006 This API provides functionality to communicate with applications in several Secure Elements.
46007         </p>
46008        </description>
46009         <version>
46010  2.1
46011         </version>
46012         <def-api-feature identifier="http://tizen.org/feature/network.secure_element">
46013           <descriptive>
46014            <description>
46015             <p>
46016 To guarantee this application running on a device with SecureElement feature, define below in the config file: 
46017             </p>
46018            </description>
46019           </descriptive>
46020         </def-api-feature>
46021     </descriptive>
46022     <Interface name="SEServiceManagerObject" id="::SecureElement::SEServiceManagerObject">
46023       <webidl>  [NoInterfaceObject] interface SEServiceManagerObject {&#13;
46024     readonly attribute <ref>SEService</ref> seService;&#13;
46025   };</webidl>
46026       <descriptive>
46027           <brief>
46028  Defines what is instantiated by the Tizen object from the Tizen Platform.
46029           </brief>
46030          <description>
46031           <p>
46032 There is a <em>tizen.seService</em> object that allows access to the functionalities of the Secure Element API.
46033           </p>
46034          </description>
46035           <version>
46036  2.1
46037           </version>
46038       </descriptive>
46039       <ExtendedAttributeList>
46040         <ExtendedAttribute name="NoInterfaceObject">
46041           <webidl>NoInterfaceObject</webidl>
46042         </ExtendedAttribute>
46043       </ExtendedAttributeList>
46044       <Attribute readonly="readonly" name="seService" id="::SecureElement::SEServiceManagerObject::seService">
46045         <webidl>    readonly attribute <ref>SEService</ref> seService;</webidl>
46046         <Type name="SEService"/>
46047       </Attribute>
46048     </Interface>
46049     <Implements name1="Tizen" name2="SEServiceManagerObject">
46050       <webidl>  <ref>Tizen</ref> implements <ref>SEServiceManagerObject</ref>;</webidl>
46051     </Implements>
46052     <Interface name="SEService" id="::SecureElement::SEService">
46053       <webidl>  [NoInterfaceObject] interface SEService&#13;
46054   {&#13;
46055 &#13;
46056     void getReaders(<ref>ReaderArraySuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
46057 &#13;
46058     unsigned long registerSEListener(<ref>SEChangeListener</ref> listener) raises(<ref>WebAPIException</ref>);&#13;
46059 &#13;
46060     void unregisterSEListener(unsigned long id) raises(<ref>WebAPIException</ref>);&#13;
46061 &#13;
46062 &#13;
46063     void shutdown() raises(<ref>WebAPIException</ref>);&#13;
46064   };</webidl>
46065       <descriptive>
46066           <brief>
46067  This interface provides access to the available Secure Element readers.
46068           </brief>
46069          <description>
46070           <p>
46071 It provides access to the API functionalities through the <em>tizen.seService</em> interface.
46072           </p>
46073          </description>
46074           <version>
46075  2.1
46076           </version>
46077       </descriptive>
46078       <ExtendedAttributeList>
46079         <ExtendedAttribute name="NoInterfaceObject">
46080           <webidl>NoInterfaceObject</webidl>
46081         </ExtendedAttribute>
46082       </ExtendedAttributeList>
46083       <Operation name="getReaders" id="::SecureElement::SEService::getReaders">
46084         <webidl>    void getReaders(<ref>ReaderArraySuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
46085         <descriptive>
46086             <brief>
46087  Gets all the available Secure Element readers.
46088             </brief>
46089            <description>
46090             <p>
46091 The ErrorCallback is launched with these error types:
46092             </p>
46093             <ul>
46094               <li>
46095  UnknownError - If any error occurs during retrieval.              </li>
46096             </ul>
46097            </description>
46098             <version>
46099  2.1
46100             </version>
46101             <privilege>
46102  http://tizen.org/privilege/secureelement
46103             </privilege>
46104             <privilegelevel>
46105  public
46106             </privilegelevel>
46107             <Code> try {
46108   function success(readers) {
46109    for (var i = 0; i &#60; readers.length; i++) {
46110     if (readers[i].isPresent) {
46111      console.log (&quot;Reader Name : &quot; + readers[i].getName());
46112     }
46113    }
46114   }
46115   function error(err) {
46116    console.log (err.name + &quot;: &quot; + err.message);
46117   }
46118   tizen.seService.getReaders(success, error);
46119  } catch (err) {
46120   console.log (err.name + &quot;: &quot; + err.message);
46121  }
46122  </Code>
46123         </descriptive>
46124         <Type type="void"/>
46125         <ArgumentList>
46126           <Argument name="successCallback">
46127             <descriptive>
46128                 <description><p>
46129  The method to be invoked when the list of available Secure Element readers has been successfully retrieved
46130                 </p></description>
46131             </descriptive>
46132             <Type name="ReaderArraySuccessCallback"/>
46133           </Argument>
46134           <Argument optional="optional" name="errorCallback">
46135             <descriptive>
46136                 <description><p>
46137  The method to call when an error occurs
46138                 </p></description>
46139             </descriptive>
46140             <Type name="ErrorCallback" nullable="nullable"/>
46141           </Argument>
46142         </ArgumentList>
46143         <Raises>
46144           <RaiseException name="WebAPIException">
46145             <descriptive>
46146                 <description><p>
46147  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
46148                 </p></description>
46149                 <description><p>
46150  with error type SecurityError, if the application does not have the privilege to call this method.
46151                 </p></description>
46152             </descriptive>
46153           </RaiseException>
46154         </Raises>
46155       </Operation>
46156       <Operation name="registerSEListener" id="::SecureElement::SEService::registerSEListener">
46157         <webidl>    unsigned long registerSEListener(<ref>SEChangeListener</ref> listener) raises(<ref>WebAPIException</ref>);</webidl>
46158         <descriptive>
46159             <brief>
46160  Registers a callback function that is invoked when an available Secure Element reader is detected.
46161             </brief>
46162             <version>
46163  2.1
46164             </version>
46165             <privilege>
46166  http://tizen.org/privilege/secureelement
46167             </privilege>
46168             <privilegelevel>
46169  public
46170             </privilegelevel>
46171             <Code> try {
46172   var seListener = tizen.seService.registerSEListener({
46173    onSEReady:function(reader) {
46174      console.log (reader.getName() + &quot;is ready.&quot;);
46175     }, onSENotReady:function(reader) {
46176      console.log (reader.getName() + &quot;is not ready.&quot;);
46177     }});
46178  } catch (err) {
46179   console.log (err.name + &quot;: &quot; + err.message);
46180  }
46181  </Code>
46182         </descriptive>
46183         <Type type="unsigned long">
46184           <descriptive>
46185               <description><p>
46186  unsigned long An identifier used to clear the watch subscription.
46187               </p></description>
46188           </descriptive>
46189         </Type>
46190         <ArgumentList>
46191           <Argument name="listener">
46192             <descriptive>
46193                 <description><p>
46194  A listener to be invoked for successful detection of available Secure Element readers.
46195                 </p></description>
46196             </descriptive>
46197             <Type name="SEChangeListener"/>
46198           </Argument>
46199         </ArgumentList>
46200         <Raises>
46201           <RaiseException name="WebAPIException">
46202             <descriptive>
46203                 <description><p>
46204  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
46205                 </p></description>
46206                 <description><p>
46207  with error type SecurityError, if the application does not have the privilege to call this method.
46208                 </p></description>
46209                 <description><p>
46210  with error type UnknownError, if any other error occurs.
46211                 </p></description>
46212             </descriptive>
46213           </RaiseException>
46214         </Raises>
46215       </Operation>
46216       <Operation name="unregisterSEListener" id="::SecureElement::SEService::unregisterSEListener">
46217         <webidl>    void unregisterSEListener(unsigned long id) raises(<ref>WebAPIException</ref>);</webidl>
46218         <descriptive>
46219             <brief>
46220  Unregisters the listener from notifying any detection of an available Secure Element reader.
46221             </brief>
46222             <version>
46223  2.1
46224             </version>
46225             <privilege>
46226  http://tizen.org/privilege/secureelement
46227             </privilege>
46228             <privilegelevel>
46229  public
46230             </privilegelevel>
46231             <Code> var seListener; //seListener obtained from registerSEListener
46232  try {
46233   tizen.seService.unregisterSEListener(seListener);
46234  } catch (err) {
46235   console.log (err.name + &quot;: &quot; + err.message);
46236  }
46237  </Code>
46238         </descriptive>
46239         <Type type="void"/>
46240         <ArgumentList>
46241           <Argument name="id">
46242             <descriptive>
46243                 <description><p>
46244  A subscription identifier that is returned by the <em>registerSEListener()</em> method.
46245                 </p></description>
46246             </descriptive>
46247             <Type type="unsigned long"/>
46248           </Argument>
46249         </ArgumentList>
46250         <Raises>
46251           <RaiseException name="WebAPIException">
46252             <descriptive>
46253                 <description><p>
46254  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
46255                 </p></description>
46256                 <description><p>
46257  with error type InvalidValuesError, if any of the input parameters contains an invalid value.
46258                 </p></description>
46259                 <description><p>
46260  with error type SecurityError, if the application does not have the privilege to call this method.
46261                 </p></description>
46262                 <description><p>
46263  with error type UnknownError, if any other error occurs.
46264                 </p></description>
46265             </descriptive>
46266           </RaiseException>
46267         </Raises>
46268       </Operation>
46269       <Operation name="shutdown" id="::SecureElement::SEService::shutdown">
46270         <webidl>    void shutdown() raises(<ref>WebAPIException</ref>);</webidl>
46271         <descriptive>
46272             <brief>
46273  Shuts down Secure Elements after releasing all resources.
46274             </brief>
46275             <version>
46276  2.1
46277             </version>
46278             <privilege>
46279  http://tizen.org/privilege/secureelement
46280             </privilege>
46281             <privilegelevel>
46282  public
46283             </privilegelevel>
46284             <Code> try {
46285   tizen.seService.shutdown();
46286  } catch (err) {
46287   console.log (err.name + &quot;: &quot; + err.message);
46288  }
46289  </Code>
46290         </descriptive>
46291         <Type type="void"/>
46292         <ArgumentList/>
46293         <Raises>
46294           <RaiseException name="WebAPIException">
46295             <descriptive>
46296                 <description><p>
46297  with error type SecurityError, if the application does not have the privilege to call this method.
46298                 </p></description>
46299                 <description><p>
46300  with error type UnknownError, if any other error occurs.
46301                 </p></description>
46302             </descriptive>
46303           </RaiseException>
46304         </Raises>
46305       </Operation>
46306     </Interface>
46307     <Interface name="Reader" id="::SecureElement::Reader">
46308       <webidl>  [NoInterfaceObject] interface Reader&#13;
46309   {&#13;
46310 &#13;
46311     readonly attribute boolean isPresent;&#13;
46312 &#13;
46313     DOMString getName() raises(<ref>WebAPIException</ref>);&#13;
46314 &#13;
46315     void openSession(<ref>SessionSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
46316 &#13;
46317     void closeSessions() raises(<ref>WebAPIException</ref>);&#13;
46318   };</webidl>
46319       <descriptive>
46320           <brief>
46321  Reader interface that is connected to this device.
46322           </brief>
46323          <description>
46324           <p>
46325 This interface offers methods to control sessions on the reader.
46326           </p>
46327          </description>
46328           <version>
46329  2.1
46330           </version>
46331       </descriptive>
46332       <ExtendedAttributeList>
46333         <ExtendedAttribute name="NoInterfaceObject">
46334           <webidl>NoInterfaceObject</webidl>
46335         </ExtendedAttribute>
46336       </ExtendedAttributeList>
46337       <Attribute readonly="readonly" name="isPresent" id="::SecureElement::Reader::isPresent">
46338         <webidl>    readonly attribute boolean isPresent;</webidl>
46339         <descriptive>
46340             <brief>
46341  An attribute to check whether a Secure Element is present on a reader.
46342             </brief>
46343             <version>
46344  2.1
46345             </version>
46346         </descriptive>
46347         <Type type="boolean"/>
46348       </Attribute>
46349       <Operation name="getName" id="::SecureElement::Reader::getName">
46350         <webidl>    DOMString getName() raises(<ref>WebAPIException</ref>);</webidl>
46351         <descriptive>
46352             <brief>
46353  Gets reader's name.
46354             </brief>
46355             <version>
46356  2.1
46357             </version>
46358             <privilege>
46359  http://tizen.org/privilege/secureelement
46360             </privilege>
46361             <privilegelevel>
46362  public
46363             </privilegelevel>
46364             <Code> try {
46365   function success(readers) {
46366    for (var i = 0; i &#60; readers.length; i++) {
46367     if (readers[i].isPresent) {
46368      console.log (&quot;Reader Name : &quot; + readers[i].getName());
46369     }
46370    }
46371   }
46372   function error(err) {
46373    console.log (err.name + &quot;: &quot; + err.message);
46374   }
46375   tizen.seService.getReaders(success, error);
46376  } catch (err) {
46377   console.log (err.name + &quot;: &quot; + err.message);
46378  }
46379  </Code>
46380         </descriptive>
46381         <Type type="DOMString">
46382           <descriptive>
46383               <description><p>
46384  DOMString The name of the reader.
46385               </p></description>
46386           </descriptive>
46387         </Type>
46388         <ArgumentList/>
46389         <Raises>
46390           <RaiseException name="WebAPIException">
46391             <descriptive>
46392                 <description><p>
46393  with error type SecurityError, if the application does not have the privilege to call this method.
46394                 </p></description>
46395                 <description><p>
46396  with error type UnknownError, if any other error occurs.
46397                 </p></description>
46398             </descriptive>
46399           </RaiseException>
46400         </Raises>
46401       </Operation>
46402       <Operation name="openSession" id="::SecureElement::Reader::openSession">
46403         <webidl>    void openSession(<ref>SessionSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
46404         <descriptive>
46405             <brief>
46406  Opens a session on a reader.
46407             </brief>
46408            <description>
46409             <p>
46410 The ErrorCallback is launched with these error types:
46411             </p>
46412             <ul>
46413               <li>
46414  IOError - An error occurred in communication with the Secure Element in this reader.              </li>
46415               <li>
46416  InvalidStateError - If a Secure Element is not present on this reader.              </li>
46417               <li>
46418  UnknownError - If any other error occurs.              </li>
46419             </ul>
46420            </description>
46421             <version>
46422  2.1
46423             </version>
46424             <privilege>
46425  http://tizen.org/privilege/secureelement
46426             </privilege>
46427             <privilegelevel>
46428  public
46429             </privilegelevel>
46430             <Code> try {
46431   function success(session) {
46432    console.log (&quot;Open Session Success : &quot; + !session.isClosed);
46433   }
46434   function error(err) {
46435    console.log (err.name + &quot;: &quot; + err.message);
46436   }
46437   reader.openSession(success, error);
46438  } catch (err) {
46439   console.log (err.name + &quot;: &quot; + err.message);
46440  }
46441  </Code>
46442         </descriptive>
46443         <Type type="void"/>
46444         <ArgumentList>
46445           <Argument name="successCallback">
46446             <descriptive>
46447                 <description><p>
46448  The method to be invoked when a session has been successfully opened
46449                 </p></description>
46450             </descriptive>
46451             <Type name="SessionSuccessCallback"/>
46452           </Argument>
46453           <Argument optional="optional" name="errorCallback">
46454             <descriptive>
46455                 <description><p>
46456  The method to be called when an error occurs
46457                 </p></description>
46458             </descriptive>
46459             <Type name="ErrorCallback" nullable="nullable"/>
46460           </Argument>
46461         </ArgumentList>
46462         <Raises>
46463           <RaiseException name="WebAPIException">
46464             <descriptive>
46465                 <description><p>
46466  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
46467                 </p></description>
46468                 <description><p>
46469  with error type SecurityError, if the application does not have the privilege to call this method.
46470                 </p></description>
46471             </descriptive>
46472           </RaiseException>
46473         </Raises>
46474       </Operation>
46475       <Operation name="closeSessions" id="::SecureElement::Reader::closeSessions">
46476         <webidl>    void closeSessions() raises(<ref>WebAPIException</ref>);</webidl>
46477         <descriptive>
46478             <brief>
46479  Closes all sessions opened on a reader.
46480             </brief>
46481             <version>
46482  2.1
46483             </version>
46484             <privilege>
46485  http://tizen.org/privilege/secureelement
46486             </privilege>
46487             <privilegelevel>
46488  public
46489             </privilegelevel>
46490             <Code> try {
46491   reader.closeSessions();
46492  } catch (err) {
46493   console.log (err.name + &quot;: &quot; + err.message);
46494  }
46495  </Code>
46496         </descriptive>
46497         <Type type="void"/>
46498         <ArgumentList/>
46499         <Raises>
46500           <RaiseException name="WebAPIException">
46501             <descriptive>
46502                 <description><p>
46503  with error type SecurityError, if the application does not have the privilege to call this method.
46504                 </p></description>
46505                 <description><p>
46506  with error type UnknownError in any other error case.
46507                 </p></description>
46508             </descriptive>
46509           </RaiseException>
46510         </Raises>
46511       </Operation>
46512     </Interface>
46513     <Interface name="Session" id="::SecureElement::Session">
46514       <webidl>  [NoInterfaceObject] interface Session&#13;
46515   {&#13;
46516 &#13;
46517     readonly attribute boolean isClosed;&#13;
46518 &#13;
46519     void openBasicChannel(byte[] aid, <ref>ChannelSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
46520 &#13;
46521     void openLogicalChannel(byte[] aid, <ref>ChannelSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
46522 &#13;
46523     byte[] getATR() raises(<ref>WebAPIException</ref>);&#13;
46524 &#13;
46525     void close() raises(<ref>WebAPIException</ref>);&#13;
46526 &#13;
46527     void closeChannels() raises(<ref>WebAPIException</ref>);&#13;
46528   };</webidl>
46529       <descriptive>
46530           <brief>
46531  This interface is connected to one of the readers and offers methods to control channels in a session.
46532           </brief>
46533           <version>
46534  2.1
46535           </version>
46536       </descriptive>
46537       <ExtendedAttributeList>
46538         <ExtendedAttribute name="NoInterfaceObject">
46539           <webidl>NoInterfaceObject</webidl>
46540         </ExtendedAttribute>
46541       </ExtendedAttributeList>
46542       <Attribute readonly="readonly" name="isClosed" id="::SecureElement::Session::isClosed">
46543         <webidl>    readonly attribute boolean isClosed;</webidl>
46544         <descriptive>
46545             <brief>
46546  An attribute to check whether a session is closed or not.
46547             </brief>
46548             <version>
46549  2.1
46550             </version>
46551         </descriptive>
46552         <Type type="boolean"/>
46553       </Attribute>
46554       <Operation name="openBasicChannel" id="::SecureElement::Session::openBasicChannel">
46555         <webidl>    void openBasicChannel(byte[] aid, <ref>ChannelSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
46556         <descriptive>
46557             <brief>
46558  Opens a basic channel in a session.
46559 The basic channel (defined in the ISO7816-4 specification) is opened by default and its channel ID is <var>0</var>.
46560 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.
46561 Some Secure Elements might always deny opening a basic channel.
46562             </brief>
46563            <description>
46564             <p>
46565 The ErrorCallback is launched with these error types:
46566             </p>
46567             <ul>
46568               <li>
46569  IOError - If an error occurs while communicating with the Secure Element in the reader.              </li>
46570               <li>
46571  SecurityError - If access to this AID or the default application on this session is not allowed .              </li>
46572               <li>
46573  InvalidStateError - If this session is closed.               </li>
46574               <li>
46575  NotFoundError - If the application of the AID does not exist in the Secure Element.              </li>
46576               <li>
46577  NoChannelError - If basic channel is unavailable.              </li>
46578               <li>
46579  UnknownError - If any other error occurs.              </li>
46580             </ul>
46581            </description>
46582             <version>
46583  2.1
46584             </version>
46585             <privilege>
46586  http://tizen.org/privilege/secureelement
46587             </privilege>
46588             <privilegelevel>
46589  public
46590             </privilegelevel>
46591             <Code> try {
46592   function successChannel(channel) {
46593    if (channel.isBasicChannel) {
46594     console.log (&quot;Basic channel is opened.&quot;);
46595    } else {
46596     console.log (&quot;Logical channel is opened.&quot;);
46597    }
46598   }
46599   function errorChannel(err) {
46600    console.log (&quot;openBasicChannel Error :&quot; + err.name +&quot;: &quot; + err.message);
46601   }
46602
46603   function successSession(session) {
46604    console.log (&quot;Open Session Success : &quot; + !session.isClosed);
46605    // This aid is for test. Use aid for your applet in secure element.
46606    session.openBasicChannel([0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe], successChannel, errorChannel);
46607   }
46608   function errorSession(err) {
46609    console.log (&quot;openSession Error : &quot; + err.name + &quot;: &quot; + err.message);
46610   }
46611   reader.openSession(successSession, errorSession);
46612  } catch (err) {
46613   console.log (err.name + &quot;: &quot; + err.message);
46614  }
46615  </Code>
46616         </descriptive>
46617         <Type type="void"/>
46618         <ArgumentList>
46619           <Argument name="aid">
46620             <descriptive>
46621                 <description><p>
46622  The id of the applet to select on this channel.<br/>If the array is empty, the default applet is selected in this session.
46623                 </p></description>
46624             </descriptive>
46625             <Type type="array">
46626               <Type type="byte"/>
46627             </Type>
46628           </Argument>
46629           <Argument name="successCallback">
46630             <descriptive>
46631                 <description><p>
46632  The method to be invoked when a basic channel has been successfully opened
46633                 </p></description>
46634             </descriptive>
46635             <Type name="ChannelSuccessCallback"/>
46636           </Argument>
46637           <Argument optional="optional" name="errorCallback">
46638             <descriptive>
46639                 <description><p>
46640  The method to be called when an error occurs
46641                 </p></description>
46642             </descriptive>
46643             <Type name="ErrorCallback" nullable="nullable"/>
46644           </Argument>
46645         </ArgumentList>
46646         <Raises>
46647           <RaiseException name="WebAPIException">
46648             <descriptive>
46649                 <description><p>
46650  with error type TypeMismatchError, if the input parameter
46651 is not compatible with the expected type for that parameter.
46652                 </p></description>
46653                 <description><p>
46654  with error type InvalidValuesError, if the AID's length is not within the limit: 5 to 16(inclusive).
46655                 </p></description>
46656                 <description><p>
46657  with error type SecurityError, if the application does not have the privilege to call this method.
46658                 </p></description>
46659             </descriptive>
46660           </RaiseException>
46661         </Raises>
46662       </Operation>
46663       <Operation name="openLogicalChannel" id="::SecureElement::Session::openLogicalChannel">
46664         <webidl>    void openLogicalChannel(byte[] aid, <ref>ChannelSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
46665         <descriptive>
46666             <brief>
46667  Opens a logical channel in a session by the specified applet id.
46668 The logical channel is defined in the ISO7816-4 specification.
46669             </brief>
46670            <description>
46671             <p>
46672 The ErrorCallback is launched with these error types:
46673             </p>
46674             <ul>
46675               <li>
46676  IOError - If an error occurs while communicating with the Secure Element in the reader.              </li>
46677               <li>
46678  SecurityError - If access to this AID or the default application in this session is not allowed.              </li>
46679               <li>
46680  InvalidStateError - If this session is closed.              </li>
46681               <li>
46682  NotFoundError - If the application of the AID does not exist in the Secure Element.              </li>
46683               <li>
46684  NoChannelError - If logical channel is unavailable.              </li>
46685               <li>
46686  UnknownError - If any other error occurs.              </li>
46687             </ul>
46688            </description>
46689             <version>
46690  2.1
46691             </version>
46692             <privilege>
46693  http://tizen.org/privilege/secureelement
46694             </privilege>
46695             <privilegelevel>
46696  public
46697             </privilegelevel>
46698             <Code> var session; //Session obtained from openSession callback
46699  try {
46700   function successChannel(channel) {
46701    if (channel.isBasicChannel) {
46702     console.log (&quot;Basic channel is opened.&quot;);
46703    } else {
46704     console.log (&quot;Logical channel is opened.&quot;);
46705    }
46706   }
46707   function errorChannel(err) {
46708    console.log (&quot;openLogicalChannel Error :&quot; + err.name + &quot;: &quot; + err.message);
46709   }
46710
46711    // This aid is for test. Use aid for your applet in secure element.
46712   session.openLogicalChannel([0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe], successChannel, errorChannel);
46713  } catch (err) {
46714   console.log (err.name + &quot;: &quot; + err.message);
46715  }
46716  </Code>
46717         </descriptive>
46718         <Type type="void"/>
46719         <ArgumentList>
46720           <Argument name="aid">
46721             <descriptive>
46722                 <description><p>
46723  The id of the applet to select on this channel<br/>If the array is empty, the default application is selected in this session.
46724                 </p></description>
46725             </descriptive>
46726             <Type type="array">
46727               <Type type="byte"/>
46728             </Type>
46729           </Argument>
46730           <Argument name="successCallback">
46731             <descriptive>
46732                 <description><p>
46733  The method to be invoked when a logical channel has been successfully opened
46734                 </p></description>
46735             </descriptive>
46736             <Type name="ChannelSuccessCallback"/>
46737           </Argument>
46738           <Argument optional="optional" name="errorCallback">
46739             <descriptive>
46740                 <description><p>
46741  The method to be called when an error occurs
46742                 </p></description>
46743             </descriptive>
46744             <Type name="ErrorCallback" nullable="nullable"/>
46745           </Argument>
46746         </ArgumentList>
46747         <Raises>
46748           <RaiseException name="WebAPIException">
46749             <descriptive>
46750                 <description><p>
46751  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
46752                 </p></description>
46753                 <description><p>
46754  with error type InvalidValuesError, if the AID's length is not within the limit: 5 to 16(inclusive).
46755                 </p></description>
46756                 <description><p>
46757  with error type SecurityError, if the application does not have the privilege to call this method.
46758                 </p></description>
46759             </descriptive>
46760           </RaiseException>
46761         </Raises>
46762       </Operation>
46763       <Operation name="getATR" id="::SecureElement::Session::getATR">
46764         <webidl>    byte[] getATR() raises(<ref>WebAPIException</ref>);</webidl>
46765         <descriptive>
46766             <brief>
46767  Gets the answer to reset(ATR) of a Secure Element.
46768             </brief>
46769             <version>
46770  2.1
46771             </version>
46772             <privilege>
46773  http://tizen.org/privilege/secureelement
46774             </privilege>
46775             <privilegelevel>
46776  public
46777             </privilegelevel>
46778             <Code> var session; //Session obtained from openSession callback
46779  try {
46780   var atr = session.getATR();
46781  } catch (err) {
46782   console.log (err.name + &quot;: &quot; + err.message);
46783  }
46784  </Code>
46785         </descriptive>
46786         <Type type="array">
46787           <descriptive>
46788               <description><p>
46789  byte[] The ATR of a Secure Element.
46790               </p></description>
46791           </descriptive>
46792           <Type type="byte"/>
46793         </Type>
46794         <ArgumentList/>
46795         <Raises>
46796           <RaiseException name="WebAPIException">
46797             <descriptive>
46798                 <description><p>
46799  with error type SecurityError, if the application does not have the privilege to call this method.
46800                 </p></description>
46801                 <description><p>
46802  with error type UnknownError, if any other error occurs.
46803                 </p></description>
46804             </descriptive>
46805           </RaiseException>
46806         </Raises>
46807       </Operation>
46808       <Operation name="close" id="::SecureElement::Session::close">
46809         <webidl>    void close() raises(<ref>WebAPIException</ref>);</webidl>
46810         <descriptive>
46811             <brief>
46812  Closes a session.
46813             </brief>
46814             <version>
46815  2.1
46816             </version>
46817             <privilege>
46818  http://tizen.org/privilege/secureelement
46819             </privilege>
46820             <privilegelevel>
46821  public
46822             </privilegelevel>
46823             <Code> var session; //Session obtained from openSession callback
46824  try {
46825   session.close();
46826  } catch (err) {
46827   console.log (err.name + &quot;: &quot; + err.message);
46828  }
46829  </Code>
46830         </descriptive>
46831         <Type type="void"/>
46832         <ArgumentList/>
46833         <Raises>
46834           <RaiseException name="WebAPIException">
46835             <descriptive>
46836                 <description><p>
46837  with error type SecurityError, if the application does not have the privilege to call this method.
46838                 </p></description>
46839                 <description><p>
46840  with error type UnknownError, if any other error occurs.
46841                 </p></description>
46842             </descriptive>
46843           </RaiseException>
46844         </Raises>
46845       </Operation>
46846       <Operation name="closeChannels" id="::SecureElement::Session::closeChannels">
46847         <webidl>    void closeChannels() raises(<ref>WebAPIException</ref>);</webidl>
46848         <descriptive>
46849             <brief>
46850  Closes all channels on this session.
46851             </brief>
46852             <version>
46853  2.1
46854             </version>
46855             <privilege>
46856  http://tizen.org/privilege/secureelement
46857             </privilege>
46858             <privilegelevel>
46859  public
46860             </privilegelevel>
46861             <Code> var session; //Session obtained from openSession callback 
46862  try {
46863   session.closeChannels();
46864  } catch (err) {
46865   console.log (err.name + &quot;: &quot; + err.message);
46866  }
46867  </Code>
46868         </descriptive>
46869         <Type type="void"/>
46870         <ArgumentList/>
46871         <Raises>
46872           <RaiseException name="WebAPIException">
46873             <descriptive>
46874                 <description><p>
46875  with error type SecurityError, if the application does not have the privilege to call this method.
46876                 </p></description>
46877                 <description><p>
46878  with error type UnknownError in any other error case.
46879                 </p></description>
46880             </descriptive>
46881           </RaiseException>
46882         </Raises>
46883       </Operation>
46884     </Interface>
46885     <Interface name="Channel" id="::SecureElement::Channel">
46886       <webidl>  [NoInterfaceObject] interface Channel {&#13;
46887 &#13;
46888     readonly attribute boolean isBasicChannel;&#13;
46889 &#13;
46890     void close() raises(<ref>WebAPIException</ref>);&#13;
46891     &#13;
46892 &#13;
46893     void transmit(byte[] command, <ref>TransmitSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);&#13;
46894   };</webidl>
46895       <descriptive>
46896           <brief>
46897  This interface is open to a Secure Element and offers methods to send Application Protocol Data Units(APDU) to the Secure Element.
46898 The channel is defined in the ISO7816-4.
46899           </brief>
46900           <version>
46901  2.1
46902           </version>
46903       </descriptive>
46904       <ExtendedAttributeList>
46905         <ExtendedAttribute name="NoInterfaceObject">
46906           <webidl>NoInterfaceObject</webidl>
46907         </ExtendedAttribute>
46908       </ExtendedAttributeList>
46909       <Attribute readonly="readonly" name="isBasicChannel" id="::SecureElement::Channel::isBasicChannel">
46910         <webidl>    readonly attribute boolean isBasicChannel;</webidl>
46911         <descriptive>
46912             <brief>
46913  An attribute to check whether it is a basic channel or not.
46914             </brief>
46915             <version>
46916  2.1
46917             </version>
46918         </descriptive>
46919         <Type type="boolean"/>
46920       </Attribute>
46921       <Operation name="close" id="::SecureElement::Channel::close">
46922         <webidl>    void close() raises(<ref>WebAPIException</ref>);</webidl>
46923         <descriptive>
46924             <brief>
46925  Closes a channel.
46926             </brief>
46927             <version>
46928  2.1
46929             </version>
46930             <privilege>
46931  http://tizen.org/privilege/secureelement
46932             </privilege>
46933             <privilegelevel>
46934  public
46935             </privilegelevel>
46936             <Code> var channel; //Obtained from openLogicalChannel or openBasicChannel
46937  try {
46938   channel.close();
46939  } catch (err) {
46940   console.log (err.name + &quot;: &quot; + err.message);
46941  }
46942  </Code>
46943         </descriptive>
46944         <Type type="void"/>
46945         <ArgumentList/>
46946         <Raises>
46947           <RaiseException name="WebAPIException">
46948             <descriptive>
46949                 <description><p>
46950  with error type SecurityError, if the application does not have the privilege to call this method.
46951                 </p></description>
46952                 <description><p>
46953  with error type UnknownError, if any other error occurs.
46954                 </p></description>
46955             </descriptive>
46956           </RaiseException>
46957         </Raises>
46958       </Operation>
46959       <Operation name="transmit" id="::SecureElement::Channel::transmit">
46960         <webidl>    void transmit(byte[] command, <ref>TransmitSuccessCallback</ref> successCallback, optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
46961         <descriptive>
46962             <brief>
46963  Transmits an APDU command to a Secure Element. The APDU command is defined in ISO7816-4.
46964             </brief>
46965            <description>
46966             <p>
46967 Some commands that are not allowed to be sent are:
46968             </p>
46969             <ul>
46970               <li>
46971  MANAGE_CHANNEL commands.               </li>
46972               <li>
46973  SELECT by DF Name (p1=04).               </li>
46974               <li>
46975  The commands that CLA bytes with channel numbers are de-masked.               </li>
46976             </ul>
46977             <p>
46978 The ErrorCallback is launched with these error types:
46979             </p>
46980             <ul>
46981               <li>
46982  InvalidValuesError - If the command contain an invalid value.              </li>
46983               <li>
46984  IOError - An error occurred while communicating with the Secure Element in the reader.              </li>
46985               <li>
46986  SecurityError - If the command is not allowed.              </li>
46987               <li>
46988  InvalidStateError - If this channel is closed.              </li>
46989               <li>
46990  UnknownError - If any other error occurs.              </li>
46991             </ul>
46992            </description>
46993             <version>
46994  2.1
46995             </version>
46996             <privilege>
46997  http://tizen.org/privilege/secureelement
46998             </privilege>
46999             <privilegelevel>
47000  public
47001             </privilegelevel>
47002         </descriptive>
47003         <Type type="void"/>
47004         <ArgumentList>
47005           <Argument name="command">
47006             <descriptive>
47007                 <description><p>
47008  The APDU command to transmit through this channel
47009                 </p></description>
47010             </descriptive>
47011             <Type type="array">
47012               <Type type="byte"/>
47013             </Type>
47014           </Argument>
47015           <Argument name="successCallback">
47016             <descriptive>
47017                 <description><p>
47018  The method to be invoked when a command has been successfully transmitted
47019                 </p></description>
47020             </descriptive>
47021             <Type name="TransmitSuccessCallback"/>
47022           </Argument>
47023           <Argument optional="optional" name="errorCallback">
47024             <descriptive>
47025                 <description><p>
47026  The method to be called when an error occurs
47027                 </p></description>
47028             </descriptive>
47029             <Type name="ErrorCallback" nullable="nullable"/>
47030           </Argument>
47031         </ArgumentList>
47032         <Raises>
47033           <RaiseException name="WebAPIException">
47034             <descriptive>
47035                 <description><p>
47036  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
47037                 </p></description>
47038                 <description><p>
47039  with error type SecurityError, if the application does not have the privilege to call this method.
47040                 </p></description>
47041             </descriptive>
47042           </RaiseException>
47043         </Raises>
47044       </Operation>
47045     </Interface>
47046     <Interface name="SEChangeListener" id="::SecureElement::SEChangeListener">
47047       <webidl>  [Callback, NoInterfaceObject] interface SEChangeListener {&#13;
47048 &#13;
47049     void onSEReady(<ref>Reader</ref> reader);&#13;
47050 &#13;
47051     void onSENotReady(<ref>Reader</ref> reader);&#13;
47052   };</webidl>
47053       <descriptive>
47054           <brief>
47055  This interface provides the success callback that is invoked when a Secure Element reader is detected or lost.
47056           </brief>
47057          <description>
47058           <p>
47059 It is used in <em>SEService.registerSEListener()</em>.
47060           </p>
47061          </description>
47062           <version>
47063  2.1
47064           </version>
47065       </descriptive>
47066       <ExtendedAttributeList>
47067         <ExtendedAttribute name="Callback">
47068           <webidl>Callback</webidl>
47069         </ExtendedAttribute>
47070         <ExtendedAttribute name="NoInterfaceObject">
47071           <webidl> NoInterfaceObject</webidl>
47072         </ExtendedAttribute>
47073       </ExtendedAttributeList>
47074       <Operation name="onSEReady" id="::SecureElement::SEChangeListener::onSEReady">
47075         <webidl>    void onSEReady(<ref>Reader</ref> reader);</webidl>
47076         <descriptive>
47077             <brief>
47078  Called when a Secure Element reader is detected.
47079             </brief>
47080             <version>
47081  2.1
47082             </version>
47083         </descriptive>
47084         <Type type="void"/>
47085         <ArgumentList>
47086           <Argument name="reader">
47087             <descriptive>
47088                 <description><p>
47089  A newly detected Secure Element reader
47090                 </p></description>
47091             </descriptive>
47092             <Type name="Reader"/>
47093           </Argument>
47094         </ArgumentList>
47095       </Operation>
47096       <Operation name="onSENotReady" id="::SecureElement::SEChangeListener::onSENotReady">
47097         <webidl>    void onSENotReady(<ref>Reader</ref> reader);</webidl>
47098         <descriptive>
47099             <brief>
47100  Called when a Secure Element reader is lost.
47101             </brief>
47102             <version>
47103  2.1
47104             </version>
47105         </descriptive>
47106         <Type type="void"/>
47107         <ArgumentList>
47108           <Argument name="reader">
47109             <descriptive>
47110                 <description><p>
47111  A lost Secure Element reader
47112                 </p></description>
47113             </descriptive>
47114             <Type name="Reader"/>
47115           </Argument>
47116         </ArgumentList>
47117       </Operation>
47118     </Interface>
47119     <Interface name="ReaderArraySuccessCallback" id="::SecureElement::ReaderArraySuccessCallback">
47120       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface ReaderArraySuccessCallback {&#13;
47121 &#13;
47122     void onsuccess(<ref>Reader</ref>[] readers);&#13;
47123   };</webidl>
47124       <descriptive>
47125           <brief>
47126  This callback interface provides a success callback that is invoked when a list of available Secure Element readers is retrieved.
47127           </brief>
47128          <description>
47129           <p>
47130 It specifies a success method with an array of <em>Reader</em> objects as an input parameter.
47131 It is used in asynchronous operations such as <em>SEService.getReaders()</em>.
47132           </p>
47133          </description>
47134           <version>
47135  2.1
47136           </version>
47137       </descriptive>
47138       <ExtendedAttributeList>
47139         <ExtendedAttribute name="Callback" value="FunctionOnly">
47140           <webidl>Callback</webidl>
47141         </ExtendedAttribute>
47142         <ExtendedAttribute name="NoInterfaceObject">
47143           <webidl> NoInterfaceObject</webidl>
47144         </ExtendedAttribute>
47145       </ExtendedAttributeList>
47146       <Operation name="onsuccess" id="::SecureElement::ReaderArraySuccessCallback::onsuccess">
47147         <webidl>    void onsuccess(<ref>Reader</ref>[] readers);</webidl>
47148         <descriptive>
47149             <brief>
47150  Called when an asynchronous call completes successfully.
47151             </brief>
47152             <version>
47153  2.1
47154             </version>
47155         </descriptive>
47156         <Type type="void"/>
47157         <ArgumentList>
47158           <Argument name="readers">
47159             <descriptive>
47160                 <description><p>
47161  A list of available Secure Element readers
47162                 </p></description>
47163             </descriptive>
47164             <Type type="array">
47165               <Type name="Reader"/>
47166             </Type>
47167           </Argument>
47168         </ArgumentList>
47169       </Operation>
47170     </Interface>
47171     <Interface name="SessionSuccessCallback" id="::SecureElement::SessionSuccessCallback">
47172       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface SessionSuccessCallback {&#13;
47173 &#13;
47174     void onsuccess(<ref>Session</ref> session);&#13;
47175   };</webidl>
47176       <descriptive>
47177           <brief>
47178  This interface specifies the success callback that is invoked when a session on a specific reader is open.
47179           </brief>
47180          <description>
47181           <p>
47182 This callback interface specifies a success method with a <em>Session</em> object as an input parameter.
47183 It is used in asynchronous operations such as <em>Reader.openSession()</em>.
47184           </p>
47185          </description>
47186           <version>
47187  2.1
47188           </version>
47189       </descriptive>
47190       <ExtendedAttributeList>
47191         <ExtendedAttribute name="Callback" value="FunctionOnly">
47192           <webidl>Callback</webidl>
47193         </ExtendedAttribute>
47194         <ExtendedAttribute name="NoInterfaceObject">
47195           <webidl> NoInterfaceObject</webidl>
47196         </ExtendedAttribute>
47197       </ExtendedAttributeList>
47198       <Operation name="onsuccess" id="::SecureElement::SessionSuccessCallback::onsuccess">
47199         <webidl>    void onsuccess(<ref>Session</ref> session);</webidl>
47200         <descriptive>
47201             <brief>
47202  Called when an asynchronous call completes successfully.
47203             </brief>
47204             <version>
47205  2.1
47206             </version>
47207         </descriptive>
47208         <Type type="void"/>
47209         <ArgumentList>
47210           <Argument name="session">
47211             <descriptive>
47212                 <description><p>
47213  An open session
47214                 </p></description>
47215             </descriptive>
47216             <Type name="Session"/>
47217           </Argument>
47218         </ArgumentList>
47219       </Operation>
47220     </Interface>
47221     <Interface name="ChannelSuccessCallback" id="::SecureElement::ChannelSuccessCallback">
47222       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface ChannelSuccessCallback {&#13;
47223 &#13;
47224     void onsuccess(<ref>Channel</ref> channel);&#13;
47225   };</webidl>
47226       <descriptive>
47227           <brief>
47228  This interface specifies the success callback that is invoked when a channel is open to communicate with a specific applet.
47229           </brief>
47230          <description>
47231           <p>
47232 This callback interface specifies a success method with a <em>Channel</em> object as an input parameter.
47233 It is used in asynchronous operations such as <em>Session.openBasicChannel() </em>or <em>Session.openLogicalChannel()</em>.
47234           </p>
47235          </description>
47236           <version>
47237  2.1
47238           </version>
47239       </descriptive>
47240       <ExtendedAttributeList>
47241         <ExtendedAttribute name="Callback" value="FunctionOnly">
47242           <webidl>Callback</webidl>
47243         </ExtendedAttribute>
47244         <ExtendedAttribute name="NoInterfaceObject">
47245           <webidl> NoInterfaceObject</webidl>
47246         </ExtendedAttribute>
47247       </ExtendedAttributeList>
47248       <Operation name="onsuccess" id="::SecureElement::ChannelSuccessCallback::onsuccess">
47249         <webidl>    void onsuccess(<ref>Channel</ref> channel);</webidl>
47250         <descriptive>
47251             <brief>
47252  Called when an asynchronous call completes successfully.
47253             </brief>
47254             <version>
47255  2.1
47256             </version>
47257         </descriptive>
47258         <Type type="void"/>
47259         <ArgumentList>
47260           <Argument name="channel">
47261             <descriptive>
47262                 <description><p>
47263  An open channel
47264                 </p></description>
47265             </descriptive>
47266             <Type name="Channel"/>
47267           </Argument>
47268         </ArgumentList>
47269       </Operation>
47270     </Interface>
47271     <Interface name="TransmitSuccessCallback" id="::SecureElement::TransmitSuccessCallback">
47272       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface TransmitSuccessCallback {&#13;
47273 &#13;
47274     void onsuccess(byte[] response);&#13;
47275   };</webidl>
47276       <descriptive>
47277           <brief>
47278  This interface specifies the success callback that is invoked when <em>Channel.transmit() </em>completes successfully.
47279           </brief>
47280          <description>
47281           <p>
47282 This callback interface specifies a success method with an array of bytes as an input parameter. It is used in <em>Channel.transmit()</em>.
47283           </p>
47284          </description>
47285           <version>
47286  2.1
47287           </version>
47288       </descriptive>
47289       <ExtendedAttributeList>
47290         <ExtendedAttribute name="Callback" value="FunctionOnly">
47291           <webidl>Callback</webidl>
47292         </ExtendedAttribute>
47293         <ExtendedAttribute name="NoInterfaceObject">
47294           <webidl> NoInterfaceObject</webidl>
47295         </ExtendedAttribute>
47296       </ExtendedAttributeList>
47297       <Operation name="onsuccess" id="::SecureElement::TransmitSuccessCallback::onsuccess">
47298         <webidl>    void onsuccess(byte[] response);</webidl>
47299         <descriptive>
47300             <brief>
47301  Called when an asynchronous call completes successfully.
47302             </brief>
47303             <version>
47304  2.1
47305             </version>
47306         </descriptive>
47307         <Type type="void"/>
47308         <ArgumentList>
47309           <Argument name="response">
47310             <descriptive>
47311                 <description><p>
47312  An APDU command response that is transmitted on a channel
47313                 </p></description>
47314             </descriptive>
47315             <Type type="array">
47316               <Type type="byte"/>
47317             </Type>
47318           </Argument>
47319         </ArgumentList>
47320       </Operation>
47321     </Interface>
47322   </Module>
47323   <Module name="SystemInfo" id="::SystemInfo">
47324     <webidl>module SystemInfo {
47325
47326   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; };
47327
47328   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; };
47329   
47330   enum SystemInfoDeviceOrientationStatus { &quot;PORTRAIT_PRIMARY&quot;, &quot;PORTRAIT_SECONDARY&quot;, &quot;LANDSCAPE_PRIMARY&quot;, &quot;LANDSCAPE_SECONDARY&quot; };
47331   
47332   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; };
47333   
47334   enum SystemInfoProfile { &quot;MOBILE_FULL&quot;, &quot;MOBILE_WEB&quot; };
47335
47336   [NoInterfaceObject] interface SystemInfoObject {
47337     readonly attribute <ref>SystemInfo</ref> systeminfo;
47338   };
47339   <ref>Tizen</ref> implements <ref>SystemInfoObject</ref>;
47340
47341   [NoInterfaceObject] interface SystemInfo {
47342
47343     <ref>SystemInfoDeviceCapability</ref> getCapabilities() raises(<ref>WebAPIException</ref>);
47344
47345     void getPropertyValue(<ref>SystemInfoPropertyId</ref> property,
47346                           <ref>SystemInfoPropertySuccessCallback</ref> successCallback,
47347                           optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
47348
47349     unsigned long addPropertyValueChangeListener(<ref>SystemInfoPropertyId</ref> property,
47350                                         <ref>SystemInfoPropertySuccessCallback</ref> successCallback,
47351                                         optional <ref>SystemInfoOptions</ref>? options) raises(<ref>WebAPIException</ref>);
47352
47353     void removePropertyValueChangeListener(unsigned long listenerId) raises(<ref>WebAPIException</ref>);
47354   };
47355
47356   [NoInterfaceObject] interface SystemInfoDeviceCapability {
47357     readonly attribute boolean bluetooth;
47358
47359     readonly attribute boolean nfc;
47360
47361     readonly attribute boolean nfcReservedPush ;
47362
47363     readonly attribute unsigned short multiTouchCount;
47364
47365     readonly attribute boolean inputKeyboard;
47366
47367     readonly attribute boolean inputKeyboardLayout;
47368
47369     readonly attribute boolean wifi;
47370
47371     readonly attribute boolean wifiDirect;
47372
47373     readonly attribute boolean opengles;
47374
47375     readonly attribute DOMString openglestextureFormat;
47376
47377     readonly attribute boolean openglesVersion1_1;
47378
47379     readonly attribute boolean openglesVersion2_0;
47380
47381     readonly attribute boolean fmRadio;
47382
47383     readonly attribute DOMString platformVersion raises(<ref>WebAPIException</ref>);
47384
47385     readonly attribute DOMString webApiVersion raises(<ref>WebAPIException</ref>);
47386
47387     readonly attribute DOMString nativeApiVersion raises(<ref>WebAPIException</ref>);
47388
47389     readonly attribute DOMString platformName;
47390
47391     readonly attribute boolean camera;
47392
47393     readonly attribute boolean cameraFront;
47394
47395     readonly attribute boolean cameraFrontFlash;
47396
47397     readonly attribute boolean cameraBack;
47398
47399     readonly attribute boolean cameraBackFlash;
47400
47401     readonly attribute boolean location;
47402
47403     readonly attribute boolean locationGps;
47404
47405     readonly attribute boolean locationWps;
47406
47407     readonly attribute boolean microphone;
47408
47409     readonly attribute boolean usbHost;
47410
47411     readonly attribute boolean usbAccessory;
47412
47413     readonly attribute boolean screenOutputRca;
47414
47415     readonly attribute boolean screenOutputHdmi;
47416
47417     readonly attribute DOMString platformCoreCpuArch;
47418
47419     readonly attribute DOMString platformCoreFpuArch;
47420
47421     readonly attribute boolean sipVoip;
47422
47423     readonly attribute DOMString duid;
47424
47425     readonly attribute boolean speechRecognition;
47426
47427     readonly attribute boolean speechSynthesis;
47428
47429     readonly attribute boolean accelerometer;
47430
47431     readonly attribute boolean accelerometerWakeup;
47432
47433     readonly attribute boolean barometer;
47434
47435     readonly attribute boolean barometerWakeup;
47436
47437     readonly attribute boolean gyroscope;
47438
47439     readonly attribute boolean gyroscopeWakeup;
47440
47441     readonly attribute boolean magnetometer;
47442
47443     readonly attribute boolean magnetometerWakeup;
47444
47445     readonly attribute boolean photometer;
47446
47447     readonly attribute boolean photometerWakeup;
47448
47449     readonly attribute boolean proximity;
47450
47451     readonly attribute boolean proximityWakeup;
47452
47453     readonly attribute boolean tiltmeter;
47454
47455     readonly attribute boolean tiltmeterWakeup;
47456
47457     readonly attribute boolean dataEncryption;
47458
47459     readonly attribute boolean graphicsAcceleration;
47460
47461     readonly attribute boolean push;
47462
47463     readonly attribute boolean telephony;
47464
47465     readonly attribute boolean telephonyMms;
47466
47467     readonly attribute boolean telephonySms;
47468
47469     readonly attribute boolean screenSizeNormal;
47470
47471     readonly attribute boolean screenSize480_800;
47472
47473     readonly attribute boolean screenSize720_1280;
47474
47475     readonly attribute boolean autoRotation;
47476
47477     readonly attribute boolean shellAppWidget;
47478
47479     readonly attribute boolean visionImageRecognition;
47480
47481     readonly attribute boolean visionQrcodeGeneration;
47482
47483     readonly attribute boolean visionQrcodeRecognition;
47484
47485     readonly attribute boolean visionFaceRecognition;
47486
47487     readonly attribute boolean secureElement;
47488         
47489     readonly attribute boolean nativeOspCompatible;
47490
47491     readonly attribute <ref>SystemInfoProfile</ref> profile;
47492   };  
47493   
47494   dictionary SystemInfoOptions {
47495     unsigned long timeout;
47496
47497     double highThreshold;
47498
47499     double lowThreshold;
47500   };
47501
47502   [Callback=FunctionOnly, NoInterfaceObject] interface SystemInfoPropertySuccessCallback {
47503     void onsuccess(<ref>SystemInfoProperty</ref> prop);
47504   };
47505
47506   [NoInterfaceObject] interface SystemInfoProperty {
47507   };
47508
47509   [NoInterfaceObject] interface SystemInfoBattery : <ref>SystemInfoProperty</ref> {
47510     readonly attribute double level;
47511
47512     readonly attribute boolean isCharging;
47513   };
47514
47515   [NoInterfaceObject] interface SystemInfoCpu : <ref>SystemInfoProperty</ref> {
47516     readonly attribute double load;
47517   };
47518
47519   [NoInterfaceObject] interface SystemInfoStorage : <ref>SystemInfoProperty</ref> {
47520     readonly attribute <ref>SystemInfoStorageUnit</ref>[] units;
47521   };
47522
47523   [NoInterfaceObject] interface SystemInfoStorageUnit : <ref>SystemInfoProperty</ref> {
47524     readonly attribute DOMString type;
47525
47526     readonly attribute unsigned long long capacity;
47527
47528     readonly attribute unsigned long long availableCapacity;
47529
47530     readonly attribute boolean isRemovable;
47531
47532     readonly attribute boolean isRemoveable;
47533   };
47534
47535   [NoInterfaceObject] interface SystemInfoDisplay : <ref>SystemInfoProperty</ref> {
47536     readonly attribute unsigned long resolutionWidth;
47537
47538     readonly attribute unsigned long resolutionHeight;
47539
47540     readonly attribute unsigned long dotsPerInchWidth;
47541
47542     readonly attribute unsigned long dotsPerInchHeight;
47543
47544     readonly attribute double physicalWidth;
47545
47546     readonly attribute double physicalHeight;
47547
47548     readonly attribute double brightness;
47549   };
47550
47551   [NoInterfaceObject] interface SystemInfoDeviceOrientation : <ref>SystemInfoProperty</ref> {
47552
47553     readonly attribute <ref>SystemInfoDeviceOrientationStatus</ref> status;
47554     readonly attribute boolean isAutoRotation;
47555   };
47556   
47557   [NoInterfaceObject] interface SystemInfoBuild : <ref>SystemInfoProperty</ref> {
47558
47559     readonly attribute DOMString model;
47560     readonly attribute DOMString manufacturer;
47561     readonly attribute DOMString buildVersion;
47562   };
47563
47564   [NoInterfaceObject] interface SystemInfoLocale : <ref>SystemInfoProperty</ref> {
47565
47566     readonly attribute DOMString language;
47567
47568     readonly attribute DOMString country;
47569   };
47570   
47571   [NoInterfaceObject] interface SystemInfoNetwork : <ref>SystemInfoProperty</ref> {    
47572
47573     readonly attribute <ref>SystemInfoNetworkType</ref> networkType;    
47574   };    
47575
47576    [NoInterfaceObject] interface SystemInfoWifiNetwork : <ref>SystemInfoProperty</ref> {    
47577
47578     readonly attribute DOMString status;    
47579     readonly attribute DOMString ssid;    
47580     readonly attribute DOMString ipAddress;    
47581      readonly attribute DOMString ipv6Address;    
47582     readonly attribute double signalStrength;    
47583   };    
47584
47585   [NoInterfaceObject] interface SystemInfoCellularNetwork : <ref>SystemInfoProperty</ref> {    
47586
47587     readonly attribute DOMString status;    
47588     readonly attribute DOMString apn;    
47589     readonly attribute DOMString ipAddress;    
47590     readonly attribute DOMString ipv6Address;    
47591     readonly attribute unsigned short mcc;    
47592     readonly attribute unsigned short mnc;    
47593     readonly attribute unsigned short cellId;    
47594     readonly attribute unsigned short lac;    
47595     readonly attribute boolean isRoaming;
47596     readonly attribute boolean isFlightMode;
47597     readonly attribute DOMString imei raises(<ref>WebAPIException</ref>);
47598   };
47599
47600   [NoInterfaceObject] interface SystemInfoSIM : <ref>SystemInfoProperty</ref> {
47601     readonly attribute <ref>SystemInfoSimState</ref> state raises(<ref>WebAPIException</ref>);
47602     readonly attribute DOMString operatorName raises(<ref>WebAPIException</ref>);
47603     readonly attribute DOMString msisdn raises(<ref>WebAPIException</ref>);
47604     readonly attribute DOMString iccid raises(<ref>WebAPIException</ref>);
47605     readonly attribute unsigned short mcc raises(<ref>WebAPIException</ref>);
47606     readonly attribute unsigned short mnc raises(<ref>WebAPIException</ref>);
47607     readonly attribute DOMString msin raises(<ref>WebAPIException</ref>);
47608     readonly attribute DOMString spn raises(<ref>WebAPIException</ref>);
47609   };    
47610   
47611   [NoInterfaceObject] interface SystemInfoPeripheral : <ref>SystemInfoProperty</ref> {
47612
47613     readonly attribute boolean isVideoOutputOn;
47614   };
47615 };</webidl>
47616     <descriptive>
47617         <brief>
47618  This specification defines interfaces and methods that provide web applications with access to various properties of a system.
47619         </brief>
47620        <description>
47621         <p>
47622 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. 
47623         </p>
47624         <p>
47625 The following provides an overview of the tree data structure:
47626         </p>
47627         <ul>
47628           <li>
47629 BATTERY          </li>
47630           <li>
47631 CPU          </li>
47632           <li>
47633 STORAGE          </li>
47634           <li>
47635 DISPLAY          </li>
47636           <li>
47637 DEVICE_ORIENTATION          </li>
47638           <li>
47639 BUILD          </li>
47640           <li>
47641 LOCALE          </li>
47642           <li>
47643 NETWORK          </li>
47644           <li>
47645 WIFI_NETWORK          </li>
47646           <li>
47647 CELLULAR_NETWORK          </li>
47648           <li>
47649 SIM          </li>
47650           <li>
47651 PERIPHERAL          </li>
47652         </ul>
47653         <p>
47654 For more information on the SystemInfo features, see <a href="../../org.tizen.web.appprogramming/html/guide/sys_guide/systeminfo.htm">System Information Guide</a>.
47655         </p>
47656        </description>
47657         <version>
47658  1.0
47659         </version>
47660     </descriptive>
47661     <Enum name="SystemInfoPropertyId" id="::SystemInfo::SystemInfoPropertyId">
47662       <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>
47663       <descriptive>
47664           <brief>
47665  The device property identifier.
47666           </brief>
47667           <version>
47668  2.0
47669           </version>
47670           <remark>
47671  LOCALE and PERIPHERAL are supported Since 2.1
47672           </remark>
47673       </descriptive>
47674       <EnumValue stringvalue="BATTERY">
47675         <webidl> &quot;BATTERY</webidl>
47676       </EnumValue>
47677       <EnumValue stringvalue="CPU">
47678         <webidl> &quot;CPU</webidl>
47679       </EnumValue>
47680       <EnumValue stringvalue="STORAGE">
47681         <webidl> &quot;STORAGE</webidl>
47682       </EnumValue>
47683       <EnumValue stringvalue="DISPLAY">
47684         <webidl> &quot;DISPLAY</webidl>
47685       </EnumValue>
47686       <EnumValue stringvalue="DEVICE_ORIENTATION">
47687         <webidl> &quot;DEVICE_ORIENTATION</webidl>
47688       </EnumValue>
47689       <EnumValue stringvalue="BUILD">
47690         <webidl> &quot;BUILD</webidl>
47691       </EnumValue>
47692       <EnumValue stringvalue="LOCALE">
47693         <webidl> &quot;LOCALE</webidl>
47694       </EnumValue>
47695       <EnumValue stringvalue="NETWORK">
47696         <webidl> &quot;NETWORK</webidl>
47697       </EnumValue>
47698       <EnumValue stringvalue="WIFI_NETWORK">
47699         <webidl> &quot;WIFI_NETWORK</webidl>
47700       </EnumValue>
47701       <EnumValue stringvalue="CELLULAR_NETWORK">
47702         <webidl> &quot;CELLULAR_NETWORK</webidl>
47703       </EnumValue>
47704       <EnumValue stringvalue="SIM">
47705         <webidl> &quot;SIM</webidl>
47706       </EnumValue>
47707       <EnumValue stringvalue="PERIPHERAL">
47708         <webidl> &quot;PERIPHERAL</webidl>
47709       </EnumValue>
47710     </Enum>
47711     <Enum name="SystemInfoNetworkType" id="::SystemInfo::SystemInfoNetworkType">
47712       <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>
47713       <descriptive>
47714           <brief>
47715  Data Network Type.
47716           </brief>
47717           <version>
47718  2.0
47719           </version>
47720       </descriptive>
47721       <EnumValue stringvalue="NONE">
47722         <webidl> &quot;NONE</webidl>
47723       </EnumValue>
47724       <EnumValue stringvalue="2G">
47725         <webidl> &quot;2G</webidl>
47726       </EnumValue>
47727       <EnumValue stringvalue="2.5G">
47728         <webidl> &quot;2.5G</webidl>
47729       </EnumValue>
47730       <EnumValue stringvalue="3G">
47731         <webidl> &quot;3G</webidl>
47732       </EnumValue>
47733       <EnumValue stringvalue="4G">
47734         <webidl> &quot;4G</webidl>
47735       </EnumValue>
47736       <EnumValue stringvalue="WIFI">
47737         <webidl> &quot;WIFI</webidl>
47738       </EnumValue>
47739       <EnumValue stringvalue="ETHERNET">
47740         <webidl> &quot;ETHERNET</webidl>
47741       </EnumValue>
47742       <EnumValue stringvalue="UNKNOWN">
47743         <webidl> &quot;UNKNOWN</webidl>
47744       </EnumValue>
47745     </Enum>
47746     <Enum name="SystemInfoDeviceOrientationStatus" id="::SystemInfo::SystemInfoDeviceOrientationStatus">
47747       <webidl>  enum SystemInfoDeviceOrientationStatus { &quot;PORTRAIT_PRIMARY&quot;, &quot;PORTRAIT_SECONDARY&quot;, &quot;LANDSCAPE_PRIMARY&quot;, &quot;LANDSCAPE_SECONDARY&quot; };</webidl>
47748       <descriptive>
47749           <brief>
47750  Device Orientation Status.
47751           </brief>
47752           <version>
47753  2.0
47754           </version>
47755       </descriptive>
47756       <EnumValue stringvalue="PORTRAIT_PRIMARY">
47757         <webidl> &quot;PORTRAIT_PRIMARY</webidl>
47758       </EnumValue>
47759       <EnumValue stringvalue="PORTRAIT_SECONDARY">
47760         <webidl> &quot;PORTRAIT_SECONDARY</webidl>
47761       </EnumValue>
47762       <EnumValue stringvalue="LANDSCAPE_PRIMARY">
47763         <webidl> &quot;LANDSCAPE_PRIMARY</webidl>
47764       </EnumValue>
47765       <EnumValue stringvalue="LANDSCAPE_SECONDARY">
47766         <webidl> &quot;LANDSCAPE_SECONDARY</webidl>
47767       </EnumValue>
47768     </Enum>
47769     <Enum name="SystemInfoSimState" id="::SystemInfo::SystemInfoSimState">
47770       <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>
47771       <descriptive>
47772           <brief>
47773  Sim State.
47774           </brief>
47775           <version>
47776  2.1
47777           </version>
47778       </descriptive>
47779       <EnumValue stringvalue="ABSENT">
47780         <webidl> &quot;ABSENT</webidl>
47781       </EnumValue>
47782       <EnumValue stringvalue="INITIALIZING">
47783         <webidl> &quot;INITIALIZING</webidl>
47784       </EnumValue>
47785       <EnumValue stringvalue="READY">
47786         <webidl> &quot;READY</webidl>
47787       </EnumValue>
47788       <EnumValue stringvalue="PIN_REQUIRED">
47789         <webidl> &quot;PIN_REQUIRED</webidl>
47790       </EnumValue>
47791       <EnumValue stringvalue="PUK_REQUIRED">
47792         <webidl> &quot;PUK_REQUIRED</webidl>
47793       </EnumValue>
47794       <EnumValue stringvalue="NETWORK_LOCKED">
47795         <webidl> &quot;NETWORK_LOCKED</webidl>
47796       </EnumValue>
47797       <EnumValue stringvalue="SIM_LOCKED">
47798         <webidl> &quot;SIM_LOCKED</webidl>
47799       </EnumValue>
47800       <EnumValue stringvalue="UNKNOWN">
47801         <webidl> &quot;UNKNOWN</webidl>
47802       </EnumValue>
47803     </Enum>
47804     <Enum name="SystemInfoProfile" id="::SystemInfo::SystemInfoProfile">
47805       <webidl>  enum SystemInfoProfile { &quot;MOBILE_FULL&quot;, &quot;MOBILE_WEB&quot; };</webidl>
47806       <descriptive>
47807           <brief>
47808  Device Profile.
47809           </brief>
47810           <version>
47811  2.2
47812           </version>
47813       </descriptive>
47814       <EnumValue stringvalue="MOBILE_FULL">
47815         <webidl> &quot;MOBILE_FULL</webidl>
47816       </EnumValue>
47817       <EnumValue stringvalue="MOBILE_WEB">
47818         <webidl> &quot;MOBILE_WEB</webidl>
47819       </EnumValue>
47820     </Enum>
47821     <Interface name="SystemInfoObject" id="::SystemInfo::SystemInfoObject">
47822       <webidl>  [NoInterfaceObject] interface SystemInfoObject {
47823     readonly attribute <ref>SystemInfo</ref> systeminfo;
47824   };</webidl>
47825       <descriptive>
47826           <brief>
47827  Defines what is instantiated by the <em>Tizen </em>object from the Tizen Platform.
47828           </brief>
47829          <description>
47830           <p>
47831 There will be a tizen.systeminfo object that allows accessing the
47832 functionality of the SystemInfo API.
47833           </p>
47834          </description>
47835           <version>
47836  1.0
47837           </version>
47838       </descriptive>
47839       <ExtendedAttributeList>
47840         <ExtendedAttribute name="NoInterfaceObject">
47841           <webidl>NoInterfaceObject</webidl>
47842         </ExtendedAttribute>
47843       </ExtendedAttributeList>
47844       <Attribute readonly="readonly" name="systeminfo" id="::SystemInfo::SystemInfoObject::systeminfo">
47845         <webidl>    readonly attribute <ref>SystemInfo</ref> systeminfo;</webidl>
47846         <Type name="SystemInfo"/>
47847       </Attribute>
47848     </Interface>
47849     <Implements name1="Tizen" name2="SystemInfoObject">
47850       <webidl>  <ref>Tizen</ref> implements <ref>SystemInfoObject</ref>;</webidl>
47851     </Implements>
47852     <Interface name="SystemInfo" id="::SystemInfo::SystemInfo">
47853       <webidl>  [NoInterfaceObject] interface SystemInfo {
47854
47855     <ref>SystemInfoDeviceCapability</ref> getCapabilities() raises(<ref>WebAPIException</ref>);
47856
47857     void getPropertyValue(<ref>SystemInfoPropertyId</ref> property,
47858                           <ref>SystemInfoPropertySuccessCallback</ref> successCallback,
47859                           optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);
47860
47861     unsigned long addPropertyValueChangeListener(<ref>SystemInfoPropertyId</ref> property,
47862                                         <ref>SystemInfoPropertySuccessCallback</ref> successCallback,
47863                                         optional <ref>SystemInfoOptions</ref>? options) raises(<ref>WebAPIException</ref>);
47864
47865     void removePropertyValueChangeListener(unsigned long listenerId) raises(<ref>WebAPIException</ref>);
47866   };</webidl>
47867       <descriptive>
47868           <brief>
47869  This entry interface queries the information of a system.
47870           </brief>
47871          <description>
47872           <p>
47873 This API offers methods for retrieving system information
47874 and for subscribing notifications of system information changes.
47875           </p>
47876          </description>
47877       </descriptive>
47878       <ExtendedAttributeList>
47879         <ExtendedAttribute name="NoInterfaceObject">
47880           <webidl>NoInterfaceObject</webidl>
47881         </ExtendedAttribute>
47882       </ExtendedAttributeList>
47883       <Operation name="getCapabilities" id="::SystemInfo::SystemInfo::getCapabilities">
47884         <webidl>    <ref>SystemInfoDeviceCapability</ref> getCapabilities() raises(<ref>WebAPIException</ref>);</webidl>
47885         <descriptive>
47886             <brief>
47887  Gets the capabilities of the device. 
47888             </brief>
47889            <description>
47890             <p>
47891 The function must synchronously acquire the capabilities of the device. 
47892             </p>
47893            </description>
47894             <version>
47895  2.0
47896             </version>
47897             <Code> var deviceCapabilities;
47898  deviceCapabilities = tizen.systeminfo.getCapabilities();
47899  if (deviceCapabilities.bluetooth)
47900  {
47901      console.log(&quot;Bluetooth is supported&quot;);
47902  }
47903  </Code>
47904         </descriptive>
47905         <Type name="SystemInfoDeviceCapability"/>
47906         <ArgumentList/>
47907         <Raises>
47908           <RaiseException name="WebAPIException">
47909             <descriptive>
47910                 <description><p>
47911  with error type NotSupportedError, if this feature is not supported.
47912                 </p></description>
47913                 <description><p>
47914  with error type SecurityError, if this functionality is not allowed.
47915                 </p></description>
47916                 <description><p>
47917  with error type UnknownError in any other error case.
47918                 </p></description>
47919             </descriptive>
47920           </RaiseException>
47921         </Raises>
47922       </Operation>
47923       <Operation name="getPropertyValue" id="::SystemInfo::SystemInfo::getPropertyValue">
47924         <webidl>    void getPropertyValue(<ref>SystemInfoPropertyId</ref> property,
47925                           <ref>SystemInfoPropertySuccessCallback</ref> successCallback,
47926                           optional <ref>ErrorCallback</ref>? errorCallback) raises(<ref>WebAPIException</ref>);</webidl>
47927         <descriptive>
47928             <brief>
47929  Gets the current value of a specified system property.
47930             </brief>
47931            <description>
47932             <p>
47933 The function must asynchronously acquire the current value of the requested property. If it is successful,
47934 the successCallback must be invoked with an object containing the information provided by the property.
47935             </p>
47936             <p>
47937 The <em>errorCallback() </em>can be launched with any of these error types:
47938             </p>
47939             <ul>
47940               <li>
47941 UnknownError - If any other error occurs.              </li>
47942             </ul>
47943            </description>
47944             <version>
47945  1.0
47946             </version>
47947             <Code> function onSuccessCallback(battery) {
47948      console.log(&quot;The battery level is &quot; + battery.level);
47949  }
47950
47951  function onErrorCallback(error) {
47952      console.log(&quot;An error occurred &quot; + error.message);
47953  }
47954
47955  tizen.systeminfo.getPropertyValue(&quot;BATTERY&quot;, onSuccessCallback, onErrorCallback);
47956  </Code>
47957         </descriptive>
47958         <Type type="void"/>
47959         <ArgumentList>
47960           <Argument name="property">
47961             <descriptive>
47962                 <description><p>
47963  The name of the property to retrieve.
47964                 </p></description>
47965             </descriptive>
47966             <Type name="SystemInfoPropertyId"/>
47967           </Argument>
47968           <Argument name="successCallback">
47969             <descriptive>
47970                 <description><p>
47971  Function called when the properties have been successfully retrieved.
47972                 </p></description>
47973             </descriptive>
47974             <Type name="SystemInfoPropertySuccessCallback"/>
47975           </Argument>
47976           <Argument optional="optional" name="errorCallback">
47977             <descriptive>
47978                 <description><p>
47979  Function called when an error occurred while retrieving the properties.
47980                 </p></description>
47981             </descriptive>
47982             <Type name="ErrorCallback" nullable="nullable"/>
47983           </Argument>
47984         </ArgumentList>
47985         <Raises>
47986           <RaiseException name="WebAPIException">
47987             <descriptive>
47988                 <description><p>
47989  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
47990                 </p></description>
47991                 <description><p>
47992  with error type SecurityError, if this functionality is not allowed.
47993                 </p></description>
47994                 <description><p>
47995  with error type UnknownError in any other error case.
47996                 </p></description>
47997             </descriptive>
47998           </RaiseException>
47999         </Raises>
48000       </Operation>
48001       <Operation name="addPropertyValueChangeListener" id="::SystemInfo::SystemInfo::addPropertyValueChangeListener">
48002         <webidl>    unsigned long addPropertyValueChangeListener(<ref>SystemInfoPropertyId</ref> property,
48003                                         <ref>SystemInfoPropertySuccessCallback</ref> successCallback,
48004                                         optional <ref>SystemInfoOptions</ref>? options) raises(<ref>WebAPIException</ref>);</webidl>
48005         <descriptive>
48006             <brief>
48007  Adds a listener to allow tracking of changes in one or more system properties.
48008             </brief>
48009            <description>
48010             <p>
48011 When called, it immediately returns and then asynchronously starts a watch process defined by the following steps:
48012             </p>
48013             <p>
48014 1. Register the successCallback to receive system events that the status of the requested properties may have changed.
48015             </p>
48016             <p>
48017 2. When a system event is successfully received invoke the associated successCallback with an object containing the property
48018 values.
48019             </p>
48020             <p>
48021 3. Repeat step 2 until removePropertyValueChangeListener function is called.
48022             </p>
48023             <p>
48024 If property value is 'BUILD', listener would not be registered because 'BUILD' property's value is a fixed value.
48025             </p>
48026            </description>
48027             <version>
48028  1.0
48029             </version>
48030             <Code> function onSuccessCallback(battery) {
48031      console.log(&quot;Low battery:  &quot; + battery.level);
48032  }
48033
48034
48035  tizen.systeminfo.addPropertyValueChangeListener(&quot;BATTERY&quot;, onSuccessCallback, {lowThreshold : 0.2});
48036  </Code>
48037         </descriptive>
48038         <Type type="unsigned long">
48039           <descriptive>
48040               <description><p>
48041  unsigned long An identifier used to clear the watch subscription.
48042               </p></description>
48043           </descriptive>
48044         </Type>
48045         <ArgumentList>
48046           <Argument name="property">
48047             <descriptive>
48048                 <description><p>
48049  The name of the property to retrieve.
48050                 </p></description>
48051             </descriptive>
48052             <Type name="SystemInfoPropertyId"/>
48053           </Argument>
48054           <Argument name="successCallback">
48055             <descriptive>
48056                 <description><p>
48057  Function called when the properties have been successfully retrieved.
48058                 </p></description>
48059             </descriptive>
48060             <Type name="SystemInfoPropertySuccessCallback"/>
48061           </Argument>
48062           <Argument optional="optional" name="options">
48063             <descriptive>
48064                 <description><p>
48065  An object containing the various options for fetching the properties requested.
48066                 </p></description>
48067             </descriptive>
48068             <Type name="SystemInfoOptions" nullable="nullable"/>
48069           </Argument>
48070         </ArgumentList>
48071         <Raises>
48072           <RaiseException name="WebAPIException">
48073             <descriptive>
48074                 <description><p>
48075  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
48076                 </p></description>
48077                 <description><p>
48078  with error type NotSupportedError, if this feature is not supported.
48079                 </p></description>
48080                 <description><p>
48081  with error type InvalidValuesError, if any of the input 
48082 parameters contain an invalid value.
48083                 </p></description>
48084                 <description><p>
48085  with error type SecurityError, if this functionality is not allowed.
48086                 </p></description>
48087                 <description><p>
48088  with error type UnknownError in any other error case.
48089                 </p></description>
48090             </descriptive>
48091           </RaiseException>
48092         </Raises>
48093       </Operation>
48094       <Operation name="removePropertyValueChangeListener" id="::SystemInfo::SystemInfo::removePropertyValueChangeListener">
48095         <webidl>    void removePropertyValueChangeListener(unsigned long listenerId) raises(<ref>WebAPIException</ref>);</webidl>
48096         <descriptive>
48097             <brief>
48098  Unsubscribes notifications for property changes set up by addPropertyValueChangeListener.
48099             </brief>
48100            <description>
48101             <p>
48102 If a valid listenerId argument is passed that corresponds to a subscription
48103 already place, then the watch process MUST immediately terminate and no further
48104 callback is invoked. If the listenerId argument does not correspond to a valid subscription,
48105 the method should return without any further action.
48106             </p>
48107            </description>
48108             <version>
48109  1.0
48110             </version>
48111             <Code> var id = null;
48112  function onSuccessCallback(battery) {
48113     console.log(&quot;New value for Battery level is &quot; + battery.level);
48114     if (id != null) { // After receiving the first notification, we clear it
48115         tizen.systeminfo.removePropertyValueChangeListener(id);
48116     }
48117  }
48118
48119  id = tizen.systeminfo.addPropertyValueChangeListener(&quot;BATTERY&quot;, onSuccessCallback);
48120  </Code>
48121         </descriptive>
48122         <Type type="void"/>
48123         <ArgumentList>
48124           <Argument name="listenerId">
48125             <descriptive>
48126                 <description><p>
48127  An identifier of the subscription returned by the addPropertyValueChangeListener() method.
48128                 </p></description>
48129             </descriptive>
48130             <Type type="unsigned long"/>
48131           </Argument>
48132         </ArgumentList>
48133         <Raises>
48134           <RaiseException name="WebAPIException">
48135             <descriptive>
48136                 <description><p>
48137  with error type TypeMismatchError, if the input parameter is not compatible with the expected type.
48138                 </p></description>
48139                 <description><p>
48140  with error type NotSupportedError, if this feature is not supported.
48141                 </p></description>
48142                 <description><p>
48143  with error type InvalidValuesError, if any of the input 
48144 parameters contain an invalid value.
48145                 </p></description>
48146                 <description><p>
48147  with error type SecurityError, if this functionality is not allowed.
48148                 </p></description>
48149                 <description><p>
48150  with error type UnknownError in any other error case.
48151                 </p></description>
48152             </descriptive>
48153           </RaiseException>
48154         </Raises>
48155       </Operation>
48156     </Interface>
48157     <Interface name="SystemInfoDeviceCapability" id="::SystemInfo::SystemInfoDeviceCapability">
48158       <webidl>  [NoInterfaceObject] interface SystemInfoDeviceCapability {
48159     readonly attribute boolean bluetooth;
48160
48161     readonly attribute boolean nfc;
48162
48163     readonly attribute boolean nfcReservedPush ;
48164
48165     readonly attribute unsigned short multiTouchCount;
48166
48167     readonly attribute boolean inputKeyboard;
48168
48169     readonly attribute boolean inputKeyboardLayout;
48170
48171     readonly attribute boolean wifi;
48172
48173     readonly attribute boolean wifiDirect;
48174
48175     readonly attribute boolean opengles;
48176
48177     readonly attribute DOMString openglestextureFormat;
48178
48179     readonly attribute boolean openglesVersion1_1;
48180
48181     readonly attribute boolean openglesVersion2_0;
48182
48183     readonly attribute boolean fmRadio;
48184
48185     readonly attribute DOMString platformVersion raises(<ref>WebAPIException</ref>);
48186
48187     readonly attribute DOMString webApiVersion raises(<ref>WebAPIException</ref>);
48188
48189     readonly attribute DOMString nativeApiVersion raises(<ref>WebAPIException</ref>);
48190
48191     readonly attribute DOMString platformName;
48192
48193     readonly attribute boolean camera;
48194
48195     readonly attribute boolean cameraFront;
48196
48197     readonly attribute boolean cameraFrontFlash;
48198
48199     readonly attribute boolean cameraBack;
48200
48201     readonly attribute boolean cameraBackFlash;
48202
48203     readonly attribute boolean location;
48204
48205     readonly attribute boolean locationGps;
48206
48207     readonly attribute boolean locationWps;
48208
48209     readonly attribute boolean microphone;
48210
48211     readonly attribute boolean usbHost;
48212
48213     readonly attribute boolean usbAccessory;
48214
48215     readonly attribute boolean screenOutputRca;
48216
48217     readonly attribute boolean screenOutputHdmi;
48218
48219     readonly attribute DOMString platformCoreCpuArch;
48220
48221     readonly attribute DOMString platformCoreFpuArch;
48222
48223     readonly attribute boolean sipVoip;
48224
48225     readonly attribute DOMString duid;
48226
48227     readonly attribute boolean speechRecognition;
48228
48229     readonly attribute boolean speechSynthesis;
48230
48231     readonly attribute boolean accelerometer;
48232
48233     readonly attribute boolean accelerometerWakeup;
48234
48235     readonly attribute boolean barometer;
48236
48237     readonly attribute boolean barometerWakeup;
48238
48239     readonly attribute boolean gyroscope;
48240
48241     readonly attribute boolean gyroscopeWakeup;
48242
48243     readonly attribute boolean magnetometer;
48244
48245     readonly attribute boolean magnetometerWakeup;
48246
48247     readonly attribute boolean photometer;
48248
48249     readonly attribute boolean photometerWakeup;
48250
48251     readonly attribute boolean proximity;
48252
48253     readonly attribute boolean proximityWakeup;
48254
48255     readonly attribute boolean tiltmeter;
48256
48257     readonly attribute boolean tiltmeterWakeup;
48258
48259     readonly attribute boolean dataEncryption;
48260
48261     readonly attribute boolean graphicsAcceleration;
48262
48263     readonly attribute boolean push;
48264
48265     readonly attribute boolean telephony;
48266
48267     readonly attribute boolean telephonyMms;
48268
48269     readonly attribute boolean telephonySms;
48270
48271     readonly attribute boolean screenSizeNormal;
48272
48273     readonly attribute boolean screenSize480_800;
48274
48275     readonly attribute boolean screenSize720_1280;
48276
48277     readonly attribute boolean autoRotation;
48278
48279     readonly attribute boolean shellAppWidget;
48280
48281     readonly attribute boolean visionImageRecognition;
48282
48283     readonly attribute boolean visionQrcodeGeneration;
48284
48285     readonly attribute boolean visionQrcodeRecognition;
48286
48287     readonly attribute boolean visionFaceRecognition;
48288
48289     readonly attribute boolean secureElement;
48290         
48291     readonly attribute boolean nativeOspCompatible;
48292
48293     readonly attribute <ref>SystemInfoProfile</ref> profile;
48294   };</webidl>
48295       <descriptive>
48296           <brief>
48297  SystemInfoDeviceCapability object.
48298           </brief>
48299           <version>
48300  2.0
48301           </version>
48302       </descriptive>
48303       <ExtendedAttributeList>
48304         <ExtendedAttribute name="NoInterfaceObject">
48305           <webidl>NoInterfaceObject</webidl>
48306         </ExtendedAttribute>
48307       </ExtendedAttributeList>
48308       <Attribute readonly="readonly" name="bluetooth" id="::SystemInfo::SystemInfoDeviceCapability::bluetooth">
48309         <webidl>    readonly attribute boolean bluetooth;</webidl>
48310         <descriptive>
48311             <brief>
48312  Indicates whether the device supports Bluetooth.
48313             </brief>
48314             <version>
48315  2.0
48316             </version>
48317         </descriptive>
48318         <Type type="boolean"/>
48319       </Attribute>
48320       <Attribute readonly="readonly" name="nfc" id="::SystemInfo::SystemInfoDeviceCapability::nfc">
48321         <webidl>    readonly attribute boolean nfc;</webidl>
48322         <descriptive>
48323             <brief>
48324  Indicates whether the device supports NFC.
48325             </brief>
48326             <version>
48327  2.0
48328             </version>
48329         </descriptive>
48330         <Type type="boolean"/>
48331       </Attribute>
48332       <Attribute readonly="readonly" name="nfcReservedPush" id="::SystemInfo::SystemInfoDeviceCapability::nfcReservedPush">
48333         <webidl>    readonly attribute boolean nfcReservedPush ;</webidl>
48334         <descriptive>
48335             <brief>
48336  Indicates whether the device supports NFC reserved push.
48337             </brief>
48338             <version>
48339  2.1
48340             </version>
48341         </descriptive>
48342         <Type type="boolean"/>
48343       </Attribute>
48344       <Attribute readonly="readonly" name="multiTouchCount" id="::SystemInfo::SystemInfoDeviceCapability::multiTouchCount">
48345         <webidl>    readonly attribute unsigned short multiTouchCount;</webidl>
48346         <descriptive>
48347             <brief>
48348  The number of point in Multi-point touch.
48349             </brief>
48350             <version>
48351  2.0
48352             </version>
48353         </descriptive>
48354         <Type type="unsigned short"/>
48355       </Attribute>
48356       <Attribute readonly="readonly" name="inputKeyboard" id="::SystemInfo::SystemInfoDeviceCapability::inputKeyboard">
48357         <webidl>    readonly attribute boolean inputKeyboard;</webidl>
48358         <descriptive>
48359             <brief>
48360  Indicates whether the device supports the built-in Keyboard.
48361             </brief>
48362             <version>
48363  2.0
48364             </version>
48365         </descriptive>
48366         <Type type="boolean"/>
48367       </Attribute>
48368       <Attribute readonly="readonly" name="inputKeyboardLayout" id="::SystemInfo::SystemInfoDeviceCapability::inputKeyboardLayout">
48369         <webidl>    readonly attribute boolean inputKeyboardLayout;</webidl>
48370         <descriptive>
48371             <brief>
48372  Indicates whether the device supports the built-in keyboard layout.
48373             </brief>
48374             <version>
48375  2.1
48376             </version>
48377         </descriptive>
48378         <Type type="boolean"/>
48379       </Attribute>
48380       <Attribute readonly="readonly" name="wifi" id="::SystemInfo::SystemInfoDeviceCapability::wifi">
48381         <webidl>    readonly attribute boolean wifi;</webidl>
48382         <descriptive>
48383             <brief>
48384  Indicates whether the device supports Wi-Fi.
48385             </brief>
48386             <version>
48387  2.0
48388             </version>
48389         </descriptive>
48390         <Type type="boolean"/>
48391       </Attribute>
48392       <Attribute readonly="readonly" name="wifiDirect" id="::SystemInfo::SystemInfoDeviceCapability::wifiDirect">
48393         <webidl>    readonly attribute boolean wifiDirect;</webidl>
48394         <descriptive>
48395             <brief>
48396  Indicates whether the device supports Wi-Fi direct.
48397             </brief>
48398             <version>
48399  2.0
48400             </version>
48401         </descriptive>
48402         <Type type="boolean"/>
48403       </Attribute>
48404       <Attribute readonly="readonly" name="opengles" id="::SystemInfo::SystemInfoDeviceCapability::opengles">
48405         <webidl>    readonly attribute boolean opengles;</webidl>
48406         <descriptive>
48407             <brief>
48408  Indicates whether the device supports OpenGL-ES.
48409             </brief>
48410             <version>
48411  2.1
48412             </version>
48413         </descriptive>
48414         <Type type="boolean"/>
48415       </Attribute>
48416       <Attribute readonly="readonly" name="openglestextureFormat" id="::SystemInfo::SystemInfoDeviceCapability::openglestextureFormat">
48417         <webidl>    readonly attribute DOMString openglestextureFormat;</webidl>
48418         <descriptive>
48419             <brief>
48420  The device 3DC texture format for OpenGL-ES.
48421 One example of possible output is as follows: &quot;3dc/atc/etc/ptc/pvrtc/utc&quot;
48422             </brief>
48423             <version>
48424  2.1
48425             </version>
48426         </descriptive>
48427         <Type type="DOMString"/>
48428       </Attribute>
48429       <Attribute readonly="readonly" name="openglesVersion1_1" id="::SystemInfo::SystemInfoDeviceCapability::openglesVersion1_1">
48430         <webidl>    readonly attribute boolean openglesVersion1_1;</webidl>
48431         <descriptive>
48432             <brief>
48433  Indicates whether the device supports OpenGL-ES version 1.1.
48434             </brief>
48435             <version>
48436  2.0
48437             </version>
48438         </descriptive>
48439         <Type type="boolean"/>
48440       </Attribute>
48441       <Attribute readonly="readonly" name="openglesVersion2_0" id="::SystemInfo::SystemInfoDeviceCapability::openglesVersion2_0">
48442         <webidl>    readonly attribute boolean openglesVersion2_0;</webidl>
48443         <descriptive>
48444             <brief>
48445  Indicates whether the device supports OpenGL-ES version 2.0.
48446             </brief>
48447             <version>
48448  2.0
48449             </version>
48450         </descriptive>
48451         <Type type="boolean"/>
48452       </Attribute>
48453       <Attribute readonly="readonly" name="fmRadio" id="::SystemInfo::SystemInfoDeviceCapability::fmRadio">
48454         <webidl>    readonly attribute boolean fmRadio;</webidl>
48455         <descriptive>
48456             <brief>
48457  Indicates whether the device supports FM radio.
48458             </brief>
48459             <version>
48460  2.0
48461             </version>
48462         </descriptive>
48463         <Type type="boolean"/>
48464       </Attribute>
48465       <Attribute readonly="readonly" name="platformVersion" id="::SystemInfo::SystemInfoDeviceCapability::platformVersion">
48466         <webidl>    readonly attribute DOMString platformVersion raises(<ref>WebAPIException</ref>);</webidl>
48467         <descriptive>
48468             <brief>
48469  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>.
48470             </brief>
48471             <version>
48472  2.0
48473             </version>
48474             <privilegelevel>
48475  public
48476             </privilegelevel>
48477             <privilege>
48478  http://tizen.org/privilege/system
48479             </privilege>
48480         </descriptive>
48481         <Type type="DOMString"/>
48482         <Raises>
48483           <RaiseException name="WebAPIException">
48484             <descriptive>
48485                 <description><p>
48486  with error type SecurityError, if this attribute is not allowed.        
48487                 </p></description>
48488             </descriptive>
48489           </RaiseException>
48490         </Raises>
48491       </Attribute>
48492       <Attribute readonly="readonly" name="webApiVersion" id="::SystemInfo::SystemInfoDeviceCapability::webApiVersion">
48493         <webidl>    readonly attribute DOMString webApiVersion raises(<ref>WebAPIException</ref>);</webidl>
48494         <descriptive>
48495             <brief>
48496  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>.
48497             </brief>
48498             <version>
48499  2.1
48500             </version>
48501             <privilegelevel>
48502  public
48503             </privilegelevel>
48504             <privilege>
48505  http://tizen.org/privilege/system
48506             </privilege>
48507         </descriptive>
48508         <Type type="DOMString"/>
48509         <Raises>
48510           <RaiseException name="WebAPIException">
48511             <descriptive>
48512                 <description><p>
48513  with error type SecurityError, if this attribute is not allowed.
48514                 </p></description>
48515             </descriptive>
48516           </RaiseException>
48517         </Raises>
48518       </Attribute>
48519       <Attribute readonly="readonly" name="nativeApiVersion" id="::SystemInfo::SystemInfoDeviceCapability::nativeApiVersion">
48520         <webidl>    readonly attribute DOMString nativeApiVersion raises(<ref>WebAPIException</ref>);</webidl>
48521         <descriptive>
48522             <brief>
48523  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>.
48524             </brief>
48525             <version>
48526  2.1
48527             </version>
48528             <privilegelevel>
48529  public
48530             </privilegelevel>
48531             <privilege>
48532  http://tizen.org/privilege/system
48533             </privilege>
48534         </descriptive>
48535         <Type type="DOMString"/>
48536         <Raises>
48537           <RaiseException name="WebAPIException">
48538             <descriptive>
48539                 <description><p>
48540  with error type SecurityError, if this attribute is not allowed.
48541                 </p></description>
48542             </descriptive>
48543           </RaiseException>
48544         </Raises>
48545       </Attribute>
48546       <Attribute readonly="readonly" name="platformName" id="::SystemInfo::SystemInfoDeviceCapability::platformName">
48547         <webidl>    readonly attribute DOMString platformName;</webidl>
48548         <descriptive>
48549             <brief>
48550  The name of the platform.
48551             </brief>
48552             <version>
48553  2.0
48554             </version>
48555         </descriptive>
48556         <Type type="DOMString"/>
48557       </Attribute>
48558       <Attribute readonly="readonly" name="camera" id="::SystemInfo::SystemInfoDeviceCapability::camera">
48559         <webidl>    readonly attribute boolean camera;</webidl>
48560         <descriptive>
48561             <brief>
48562  Indicates whether the device supports camera.
48563             </brief>
48564             <version>
48565  2.1
48566             </version>
48567         </descriptive>
48568         <Type type="boolean"/>
48569       </Attribute>
48570       <Attribute readonly="readonly" name="cameraFront" id="::SystemInfo::SystemInfoDeviceCapability::cameraFront">
48571         <webidl>    readonly attribute boolean cameraFront;</webidl>
48572         <descriptive>
48573             <brief>
48574  Indicates whether the device supports front camera.
48575             </brief>
48576             <version>
48577  2.0
48578             </version>
48579         </descriptive>
48580         <Type type="boolean"/>
48581       </Attribute>
48582       <Attribute readonly="readonly" name="cameraFrontFlash" id="::SystemInfo::SystemInfoDeviceCapability::cameraFrontFlash">
48583         <webidl>    readonly attribute boolean cameraFrontFlash;</webidl>
48584         <descriptive>
48585             <brief>
48586  Indicates whether the device supports flash on the front camera.
48587             </brief>
48588             <version>
48589  2.0
48590             </version>
48591         </descriptive>
48592         <Type type="boolean"/>
48593       </Attribute>
48594       <Attribute readonly="readonly" name="cameraBack" id="::SystemInfo::SystemInfoDeviceCapability::cameraBack">
48595         <webidl>    readonly attribute boolean cameraBack;</webidl>
48596         <descriptive>
48597             <brief>
48598  Indicates whether the device supports back-side camera.
48599             </brief>
48600             <version>
48601  2.0
48602             </version>
48603         </descriptive>
48604         <Type type="boolean"/>
48605       </Attribute>
48606       <Attribute readonly="readonly" name="cameraBackFlash" id="::SystemInfo::SystemInfoDeviceCapability::cameraBackFlash">
48607         <webidl>    readonly attribute boolean cameraBackFlash;</webidl>
48608         <descriptive>
48609             <brief>
48610  Indicates whether the device supports flash on the back-side camera.
48611             </brief>
48612             <version>
48613  2.0
48614             </version>
48615         </descriptive>
48616         <Type type="boolean"/>
48617       </Attribute>
48618       <Attribute readonly="readonly" name="location" id="::SystemInfo::SystemInfoDeviceCapability::location">
48619         <webidl>    readonly attribute boolean location;</webidl>
48620         <descriptive>
48621             <brief>
48622  Indicates whether the device supports CPS or not.
48623             </brief>
48624             <version>
48625  2.0
48626             </version>
48627         </descriptive>
48628         <Type type="boolean"/>
48629       </Attribute>
48630       <Attribute readonly="readonly" name="locationGps" id="::SystemInfo::SystemInfoDeviceCapability::locationGps">
48631         <webidl>    readonly attribute boolean locationGps;</webidl>
48632         <descriptive>
48633             <brief>
48634  Indicates whether the device supports GPS based location feature.
48635             </brief>
48636             <version>
48637  2.0
48638             </version>
48639         </descriptive>
48640         <Type type="boolean"/>
48641       </Attribute>
48642       <Attribute readonly="readonly" name="locationWps" id="::SystemInfo::SystemInfoDeviceCapability::locationWps">
48643         <webidl>    readonly attribute boolean locationWps;</webidl>
48644         <descriptive>
48645             <brief>
48646  Indicates whether the device supports WPS based location feature.
48647             </brief>
48648             <version>
48649  2.0
48650             </version>
48651         </descriptive>
48652         <Type type="boolean"/>
48653       </Attribute>
48654       <Attribute readonly="readonly" name="microphone" id="::SystemInfo::SystemInfoDeviceCapability::microphone">
48655         <webidl>    readonly attribute boolean microphone;</webidl>
48656         <descriptive>
48657             <brief>
48658  Indicates whether the device supports microphone.
48659             </brief>
48660             <version>
48661  2.0
48662             </version>
48663         </descriptive>
48664         <Type type="boolean"/>
48665       </Attribute>
48666       <Attribute readonly="readonly" name="usbHost" id="::SystemInfo::SystemInfoDeviceCapability::usbHost">
48667         <webidl>    readonly attribute boolean usbHost;</webidl>
48668         <descriptive>
48669             <brief>
48670  Indicates whether the device supports USB host.
48671             </brief>
48672             <version>
48673  2.0
48674             </version>
48675         </descriptive>
48676         <Type type="boolean"/>
48677       </Attribute>
48678       <Attribute readonly="readonly" name="usbAccessory" id="::SystemInfo::SystemInfoDeviceCapability::usbAccessory">
48679         <webidl>    readonly attribute boolean usbAccessory;</webidl>
48680         <descriptive>
48681             <brief>
48682  Indicates whether the device supports USB accessory.
48683             </brief>
48684             <version>
48685  2.0
48686             </version>
48687         </descriptive>
48688         <Type type="boolean"/>
48689       </Attribute>
48690       <Attribute readonly="readonly" name="screenOutputRca" id="::SystemInfo::SystemInfoDeviceCapability::screenOutputRca">
48691         <webidl>    readonly attribute boolean screenOutputRca;</webidl>
48692         <descriptive>
48693             <brief>
48694  Indicates whether the device supports RCA output.
48695             </brief>
48696             <version>
48697  2.0
48698             </version>
48699         </descriptive>
48700         <Type type="boolean"/>
48701       </Attribute>
48702       <Attribute readonly="readonly" name="screenOutputHdmi" id="::SystemInfo::SystemInfoDeviceCapability::screenOutputHdmi">
48703         <webidl>    readonly attribute boolean screenOutputHdmi;</webidl>
48704         <descriptive>
48705             <brief>
48706  Indicates whether the device supports HDMI output.
48707             </brief>
48708             <version>
48709  2.0
48710             </version>
48711         </descriptive>
48712         <Type type="boolean"/>
48713       </Attribute>
48714       <Attribute readonly="readonly" name="platformCoreCpuArch" id="::SystemInfo::SystemInfoDeviceCapability::platformCoreCpuArch">
48715         <webidl>    readonly attribute DOMString platformCoreCpuArch;</webidl>
48716         <descriptive>
48717             <brief>
48718  The device CPU architecture.
48719 The possible values for this attribute are: armv6, armv7, x86.
48720             </brief>
48721             <version>
48722  2.0
48723             </version>
48724         </descriptive>
48725         <Type type="DOMString"/>
48726       </Attribute>
48727       <Attribute readonly="readonly" name="platformCoreFpuArch" id="::SystemInfo::SystemInfoDeviceCapability::platformCoreFpuArch">
48728         <webidl>    readonly attribute DOMString platformCoreFpuArch;</webidl>
48729         <descriptive>
48730             <brief>
48731  The device FPU architecture.
48732 The possible values for this attribute are: vfpv3 / sse2 / sse3 / ssse3.
48733             </brief>
48734             <version>
48735  2.0
48736             </version>
48737         </descriptive>
48738         <Type type="DOMString"/>
48739       </Attribute>
48740       <Attribute readonly="readonly" name="sipVoip" id="::SystemInfo::SystemInfoDeviceCapability::sipVoip">
48741         <webidl>    readonly attribute boolean sipVoip;</webidl>
48742         <descriptive>
48743             <brief>
48744  Indicates whether the device supports VOIP.
48745             </brief>
48746             <version>
48747  2.0
48748             </version>
48749         </descriptive>
48750         <Type type="boolean"/>
48751       </Attribute>
48752       <Attribute readonly="readonly" name="duid" id="::SystemInfo::SystemInfoDeviceCapability::duid">
48753         <webidl>    readonly attribute DOMString duid;</webidl>
48754         <descriptive>
48755             <brief>
48756  The device unique ID.
48757             </brief>
48758             <version>
48759  2.0
48760             </version>
48761         </descriptive>
48762         <Type type="DOMString"/>
48763       </Attribute>
48764       <Attribute readonly="readonly" name="speechRecognition" id="::SystemInfo::SystemInfoDeviceCapability::speechRecognition">
48765         <webidl>    readonly attribute boolean speechRecognition;</webidl>
48766         <descriptive>
48767             <brief>
48768  Indicates whether the device supports speech recognition.
48769             </brief>
48770             <version>
48771  2.0
48772             </version>
48773         </descriptive>
48774         <Type type="boolean"/>
48775       </Attribute>
48776       <Attribute readonly="readonly" name="speechSynthesis" id="::SystemInfo::SystemInfoDeviceCapability::speechSynthesis">
48777         <webidl>    readonly attribute boolean speechSynthesis;</webidl>
48778         <descriptive>
48779             <brief>
48780  Indicates whether the device supports speech synthesis.
48781             </brief>
48782             <version>
48783  2.1
48784             </version>
48785         </descriptive>
48786         <Type type="boolean"/>
48787       </Attribute>
48788       <Attribute readonly="readonly" name="accelerometer" id="::SystemInfo::SystemInfoDeviceCapability::accelerometer">
48789         <webidl>    readonly attribute boolean accelerometer;</webidl>
48790         <descriptive>
48791             <brief>
48792  Indicates whether the device supports Accelerometer sensor.
48793             </brief>
48794             <version>
48795  2.0
48796             </version>
48797         </descriptive>
48798         <Type type="boolean"/>
48799       </Attribute>
48800       <Attribute readonly="readonly" name="accelerometerWakeup" id="::SystemInfo::SystemInfoDeviceCapability::accelerometerWakeup">
48801         <webidl>    readonly attribute boolean accelerometerWakeup;</webidl>
48802         <descriptive>
48803             <brief>
48804  Indicates whether the device supports Accelerometer sensor wake-up feature.
48805             </brief>
48806             <version>
48807  2.1
48808             </version>
48809         </descriptive>
48810         <Type type="boolean"/>
48811       </Attribute>
48812       <Attribute readonly="readonly" name="barometer" id="::SystemInfo::SystemInfoDeviceCapability::barometer">
48813         <webidl>    readonly attribute boolean barometer;</webidl>
48814         <descriptive>
48815             <brief>
48816  Indicates whether the device supports Barometer sensor.
48817             </brief>
48818             <version>
48819  2.0
48820             </version>
48821         </descriptive>
48822         <Type type="boolean"/>
48823       </Attribute>
48824       <Attribute readonly="readonly" name="barometerWakeup" id="::SystemInfo::SystemInfoDeviceCapability::barometerWakeup">
48825         <webidl>    readonly attribute boolean barometerWakeup;</webidl>
48826         <descriptive>
48827             <brief>
48828  Indicates whether the device supports Barometer sensor wake-up feature.
48829             </brief>
48830             <version>
48831  2.1
48832             </version>
48833         </descriptive>
48834         <Type type="boolean"/>
48835       </Attribute>
48836       <Attribute readonly="readonly" name="gyroscope" id="::SystemInfo::SystemInfoDeviceCapability::gyroscope">
48837         <webidl>    readonly attribute boolean gyroscope;</webidl>
48838         <descriptive>
48839             <brief>
48840  Indicates whether the device supports Gyroscope sensor.
48841             </brief>
48842             <version>
48843  2.0
48844             </version>
48845         </descriptive>
48846         <Type type="boolean"/>
48847       </Attribute>
48848       <Attribute readonly="readonly" name="gyroscopeWakeup" id="::SystemInfo::SystemInfoDeviceCapability::gyroscopeWakeup">
48849         <webidl>    readonly attribute boolean gyroscopeWakeup;</webidl>
48850         <descriptive>
48851             <brief>
48852  Indicates whether the device supports Gyroscope sensor wake-up feature.
48853             </brief>
48854             <version>
48855  2.1
48856             </version>
48857         </descriptive>
48858         <Type type="boolean"/>
48859       </Attribute>
48860       <Attribute readonly="readonly" name="magnetometer" id="::SystemInfo::SystemInfoDeviceCapability::magnetometer">
48861         <webidl>    readonly attribute boolean magnetometer;</webidl>
48862         <descriptive>
48863             <brief>
48864  Indicates whether the device supports Magnetometer sensor.
48865             </brief>
48866             <version>
48867  2.0
48868             </version>
48869         </descriptive>
48870         <Type type="boolean"/>
48871       </Attribute>
48872       <Attribute readonly="readonly" name="magnetometerWakeup" id="::SystemInfo::SystemInfoDeviceCapability::magnetometerWakeup">
48873         <webidl>    readonly attribute boolean magnetometerWakeup;</webidl>
48874         <descriptive>
48875             <brief>
48876  Indicates whether the device supports Magnetometer sensor wake-up feature.
48877             </brief>
48878             <version>
48879  2.1
48880             </version>
48881         </descriptive>
48882         <Type type="boolean"/>
48883       </Attribute>
48884       <Attribute readonly="readonly" name="photometer" id="::SystemInfo::SystemInfoDeviceCapability::photometer">
48885         <webidl>    readonly attribute boolean photometer;</webidl>
48886         <descriptive>
48887             <brief>
48888  Indicates whether the device supports Photometer sensor.
48889             </brief>
48890             <version>
48891  2.1
48892             </version>
48893         </descriptive>
48894         <Type type="boolean"/>
48895       </Attribute>
48896       <Attribute readonly="readonly" name="photometerWakeup" id="::SystemInfo::SystemInfoDeviceCapability::photometerWakeup">
48897         <webidl>    readonly attribute boolean photometerWakeup;</webidl>
48898         <descriptive>
48899             <brief>
48900  Indicates whether the device supports Photometer sensor wake-up feature.
48901             </brief>
48902             <version>
48903  2.1
48904             </version>
48905         </descriptive>
48906         <Type type="boolean"/>
48907       </Attribute>
48908       <Attribute readonly="readonly" name="proximity" id="::SystemInfo::SystemInfoDeviceCapability::proximity">
48909         <webidl>    readonly attribute boolean proximity;</webidl>
48910         <descriptive>
48911             <brief>
48912  Indicates whether the device supports Proximity sensor.
48913             </brief>
48914             <version>
48915  2.0
48916             </version>
48917         </descriptive>
48918         <Type type="boolean"/>
48919       </Attribute>
48920       <Attribute readonly="readonly" name="proximityWakeup" id="::SystemInfo::SystemInfoDeviceCapability::proximityWakeup">
48921         <webidl>    readonly attribute boolean proximityWakeup;</webidl>
48922         <descriptive>
48923             <brief>
48924  Indicates whether the device supports Proximity sensor wake-up feature.
48925             </brief>
48926             <version>
48927  2.1
48928             </version>
48929         </descriptive>
48930         <Type type="boolean"/>
48931       </Attribute>
48932       <Attribute readonly="readonly" name="tiltmeter" id="::SystemInfo::SystemInfoDeviceCapability::tiltmeter">
48933         <webidl>    readonly attribute boolean tiltmeter;</webidl>
48934         <descriptive>
48935             <brief>
48936  Indicates whether the device supports Tiltmeter sensor.
48937             </brief>
48938             <version>
48939  2.1
48940             </version>
48941         </descriptive>
48942         <Type type="boolean"/>
48943       </Attribute>
48944       <Attribute readonly="readonly" name="tiltmeterWakeup" id="::SystemInfo::SystemInfoDeviceCapability::tiltmeterWakeup">
48945         <webidl>    readonly attribute boolean tiltmeterWakeup;</webidl>
48946         <descriptive>
48947             <brief>
48948  Indicates whether the device supports Tiltmeter sensor wake-up feature.
48949             </brief>
48950             <version>
48951  2.1
48952             </version>
48953         </descriptive>
48954         <Type type="boolean"/>
48955       </Attribute>
48956       <Attribute readonly="readonly" name="dataEncryption" id="::SystemInfo::SystemInfoDeviceCapability::dataEncryption">
48957         <webidl>    readonly attribute boolean dataEncryption;</webidl>
48958         <descriptive>
48959             <brief>
48960  Indicates whether the device supports data encryption.
48961             </brief>
48962             <version>
48963  2.1
48964             </version>
48965         </descriptive>
48966         <Type type="boolean"/>
48967       </Attribute>
48968       <Attribute readonly="readonly" name="graphicsAcceleration" id="::SystemInfo::SystemInfoDeviceCapability::graphicsAcceleration">
48969         <webidl>    readonly attribute boolean graphicsAcceleration;</webidl>
48970         <descriptive>
48971             <brief>
48972  Indicates whether the device supports hardware acceleration for 2D/3D graphics.
48973             </brief>
48974             <version>
48975  2.1
48976             </version>
48977         </descriptive>
48978         <Type type="boolean"/>
48979       </Attribute>
48980       <Attribute readonly="readonly" name="push" id="::SystemInfo::SystemInfoDeviceCapability::push">
48981         <webidl>    readonly attribute boolean push;</webidl>
48982         <descriptive>
48983             <brief>
48984  Indicates whether the device supports push service.
48985             </brief>
48986             <version>
48987  2.1
48988             </version>
48989         </descriptive>
48990         <Type type="boolean"/>
48991       </Attribute>
48992       <Attribute readonly="readonly" name="telephony" id="::SystemInfo::SystemInfoDeviceCapability::telephony">
48993         <webidl>    readonly attribute boolean telephony;</webidl>
48994         <descriptive>
48995             <brief>
48996  Indicates whether the device supports the telephony feature.
48997             </brief>
48998             <version>
48999  2.1
49000             </version>
49001         </descriptive>
49002         <Type type="boolean"/>
49003       </Attribute>
49004       <Attribute readonly="readonly" name="telephonyMms" id="::SystemInfo::SystemInfoDeviceCapability::telephonyMms">
49005         <webidl>    readonly attribute boolean telephonyMms;</webidl>
49006         <descriptive>
49007             <brief>
49008  Indicates whether the device supports the mms feature.
49009             </brief>
49010             <version>
49011  2.1
49012             </version>
49013         </descriptive>
49014         <Type type="boolean"/>
49015       </Attribute>
49016       <Attribute readonly="readonly" name="telephonySms" id="::SystemInfo::SystemInfoDeviceCapability::telephonySms">
49017         <webidl>    readonly attribute boolean telephonySms;</webidl>
49018         <descriptive>
49019             <brief>
49020  Indicates whether the device supports the sms feature.
49021             </brief>
49022             <version>
49023  2.1
49024             </version>
49025         </descriptive>
49026         <Type type="boolean"/>
49027       </Attribute>
49028       <Attribute readonly="readonly" name="screenSizeNormal" id="::SystemInfo::SystemInfoDeviceCapability::screenSizeNormal">
49029         <webidl>    readonly attribute boolean screenSizeNormal;</webidl>
49030         <descriptive>
49031             <brief>
49032  Indicates whether the device supports the screen normal size.
49033             </brief>
49034             <version>
49035  2.1
49036             </version>
49037         </descriptive>
49038         <Type type="boolean"/>
49039       </Attribute>
49040       <Attribute readonly="readonly" name="screenSize480_800" id="::SystemInfo::SystemInfoDeviceCapability::screenSize480_800">
49041         <webidl>    readonly attribute boolean screenSize480_800;</webidl>
49042         <descriptive>
49043             <brief>
49044  Indicates whether the device supports the 480 * 800 screen size.
49045             </brief>
49046             <version>
49047  2.1
49048             </version>
49049         </descriptive>
49050         <Type type="boolean"/>
49051       </Attribute>
49052       <Attribute readonly="readonly" name="screenSize720_1280" id="::SystemInfo::SystemInfoDeviceCapability::screenSize720_1280">
49053         <webidl>    readonly attribute boolean screenSize720_1280;</webidl>
49054         <descriptive>
49055             <brief>
49056  Indicates whether the device supports the 720 * 1280 screen size.
49057             </brief>
49058             <version>
49059  2.1
49060             </version>
49061         </descriptive>
49062         <Type type="boolean"/>
49063       </Attribute>
49064       <Attribute readonly="readonly" name="autoRotation" id="::SystemInfo::SystemInfoDeviceCapability::autoRotation">
49065         <webidl>    readonly attribute boolean autoRotation;</webidl>
49066         <descriptive>
49067             <brief>
49068  Indicates whether the device supports auto rotation.
49069             </brief>
49070             <version>
49071  2.1
49072             </version>
49073         </descriptive>
49074         <Type type="boolean"/>
49075       </Attribute>
49076       <Attribute readonly="readonly" name="shellAppWidget" id="::SystemInfo::SystemInfoDeviceCapability::shellAppWidget">
49077         <webidl>    readonly attribute boolean shellAppWidget;</webidl>
49078         <descriptive>
49079             <brief>
49080  Indicates whether the device supports shell app widget.
49081             </brief>
49082             <version>
49083  2.1
49084             </version>
49085         </descriptive>
49086         <Type type="boolean"/>
49087       </Attribute>
49088       <Attribute readonly="readonly" name="visionImageRecognition" id="::SystemInfo::SystemInfoDeviceCapability::visionImageRecognition">
49089         <webidl>    readonly attribute boolean visionImageRecognition;</webidl>
49090         <descriptive>
49091             <brief>
49092  Indicates whether the device supports vision image recognition.
49093             </brief>
49094             <version>
49095  2.1
49096             </version>
49097         </descriptive>
49098         <Type type="boolean"/>
49099       </Attribute>
49100       <Attribute readonly="readonly" name="visionQrcodeGeneration" id="::SystemInfo::SystemInfoDeviceCapability::visionQrcodeGeneration">
49101         <webidl>    readonly attribute boolean visionQrcodeGeneration;</webidl>
49102         <descriptive>
49103             <brief>
49104  Indicates whether the device supports vision qrcode generation.
49105             </brief>
49106             <version>
49107  2.1
49108             </version>
49109         </descriptive>
49110         <Type type="boolean"/>
49111       </Attribute>
49112       <Attribute readonly="readonly" name="visionQrcodeRecognition" id="::SystemInfo::SystemInfoDeviceCapability::visionQrcodeRecognition">
49113         <webidl>    readonly attribute boolean visionQrcodeRecognition;</webidl>
49114         <descriptive>
49115             <brief>
49116  Indicates whether the device supports vision qrcode recognition.
49117             </brief>
49118             <version>
49119  2.1
49120             </version>
49121         </descriptive>
49122         <Type type="boolean"/>
49123       </Attribute>
49124       <Attribute readonly="readonly" name="visionFaceRecognition" id="::SystemInfo::SystemInfoDeviceCapability::visionFaceRecognition">
49125         <webidl>    readonly attribute boolean visionFaceRecognition;</webidl>
49126         <descriptive>
49127             <brief>
49128  Indicates whether the device supports vision face recognition.
49129             </brief>
49130             <version>
49131  2.1
49132             </version>
49133         </descriptive>
49134         <Type type="boolean"/>
49135       </Attribute>
49136       <Attribute readonly="readonly" name="secureElement" id="::SystemInfo::SystemInfoDeviceCapability::secureElement">
49137         <webidl>    readonly attribute boolean secureElement;</webidl>
49138         <descriptive>
49139             <brief>
49140  Indicates whether the device supports secure element.
49141             </brief>
49142             <version>
49143  2.1
49144             </version>
49145         </descriptive>
49146         <Type type="boolean"/>
49147       </Attribute>
49148       <Attribute readonly="readonly" name="nativeOspCompatible" id="::SystemInfo::SystemInfoDeviceCapability::nativeOspCompatible">
49149         <webidl>    readonly attribute boolean nativeOspCompatible;</webidl>
49150         <descriptive>
49151             <brief>
49152  Indicates whether the device supports native osp API.
49153             </brief>
49154             <version>
49155  2.1
49156             </version>
49157         </descriptive>
49158         <Type type="boolean"/>
49159       </Attribute>
49160       <Attribute readonly="readonly" name="profile" id="::SystemInfo::SystemInfoDeviceCapability::profile">
49161         <webidl>    readonly attribute <ref>SystemInfoProfile</ref> profile;</webidl>
49162         <descriptive>
49163             <brief>
49164  Represents the profile of the current device.
49165             </brief>
49166             <version>
49167  2.2
49168             </version>
49169         </descriptive>
49170         <Type name="SystemInfoProfile"/>
49171       </Attribute>
49172     </Interface>
49173     <Dictionary name="SystemInfoOptions" id="::SystemInfo::SystemInfoOptions">
49174       <webidl>  dictionary SystemInfoOptions {
49175     unsigned long timeout;
49176
49177     double highThreshold;
49178
49179     double lowThreshold;
49180   };</webidl>
49181       <descriptive>
49182           <brief>
49183  An object containing the various options for fetching the properties requested.
49184           </brief>
49185           <version>
49186  1.0
49187           </version>
49188       </descriptive>
49189       <DictionaryMember name="timeout" id="::SystemInfo::SystemInfoOptions::timeout">
49190         <webidl>    unsigned long timeout;</webidl>
49191         <descriptive>
49192             <brief>
49193  The number of milliseconds beyond which the operation must be interrupted.
49194             </brief>
49195             <version>
49196  1.0
49197             </version>
49198         </descriptive>
49199         <Type type="unsigned long"/>
49200       </DictionaryMember>
49201       <DictionaryMember name="highThreshold" id="::SystemInfo::SystemInfoOptions::highThreshold">
49202         <webidl>    double highThreshold;</webidl>
49203         <descriptive>
49204             <brief>
49205  An attribute to indicate that the <em>successCallback()</em> method in the watch 
49206 operation will be triggered only if the device property is a number and its value is greater than or equal to this number.
49207 This attribute has no effect on the <em>get()</em> method.
49208             </brief>
49209             <version>
49210  1.0
49211             </version>
49212         </descriptive>
49213         <Type type="double"/>
49214       </DictionaryMember>
49215       <DictionaryMember name="lowThreshold" id="::SystemInfo::SystemInfoOptions::lowThreshold">
49216         <webidl>    double lowThreshold;</webidl>
49217         <descriptive>
49218             <brief>
49219  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.
49220 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>.
49221 This attribute has no effect on the get method.
49222             </brief>
49223             <version>
49224  1.0
49225             </version>
49226         </descriptive>
49227         <Type type="double"/>
49228       </DictionaryMember>
49229     </Dictionary>
49230     <Interface name="SystemInfoPropertySuccessCallback" id="::SystemInfo::SystemInfoPropertySuccessCallback">
49231       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface SystemInfoPropertySuccessCallback {
49232     void onsuccess(<ref>SystemInfoProperty</ref> prop);
49233   };</webidl>
49234       <descriptive>
49235           <brief>
49236  Systemfinfo specific success callback.
49237           </brief>
49238          <description>
49239           <p>
49240 This callback interface specifies a success callback with SystemInfoProperty as input argument. 
49241 It is used in asynchronous
49242 operations, such as getPropertyValue() or addPropertyValueChangeListener()
49243           </p>
49244          </description>
49245           <version>
49246  1.0
49247           </version>
49248       </descriptive>
49249       <ExtendedAttributeList>
49250         <ExtendedAttribute name="Callback" value="FunctionOnly">
49251           <webidl>Callback</webidl>
49252         </ExtendedAttribute>
49253         <ExtendedAttribute name="NoInterfaceObject">
49254           <webidl> NoInterfaceObject</webidl>
49255         </ExtendedAttribute>
49256       </ExtendedAttributeList>
49257       <Operation name="onsuccess" id="::SystemInfo::SystemInfoPropertySuccessCallback::onsuccess">
49258         <webidl>    void onsuccess(<ref>SystemInfoProperty</ref> prop);</webidl>
49259         <descriptive>
49260             <brief>
49261  Method invoked when the asynchronous call completes successfully.
49262             </brief>
49263             <version>
49264  1.0
49265             </version>
49266         </descriptive>
49267         <Type type="void"/>
49268         <ArgumentList>
49269           <Argument name="prop">
49270             <descriptive>
49271                 <description><p>
49272  The property returned from a successful asynchronous operation.
49273                 </p></description>
49274             </descriptive>
49275             <Type name="SystemInfoProperty"/>
49276           </Argument>
49277         </ArgumentList>
49278       </Operation>
49279     </Interface>
49280     <Interface name="SystemInfoProperty" id="::SystemInfo::SystemInfoProperty">
49281       <webidl>  [NoInterfaceObject] interface SystemInfoProperty {
49282   };</webidl>
49283       <descriptive>
49284           <brief>
49285  This is a common abstract interface used by different types of system information objects.
49286           </brief>
49287           <version>
49288  1.0
49289           </version>
49290       </descriptive>
49291       <ExtendedAttributeList>
49292         <ExtendedAttribute name="NoInterfaceObject">
49293           <webidl>NoInterfaceObject</webidl>
49294         </ExtendedAttribute>
49295       </ExtendedAttributeList>
49296     </Interface>
49297     <Interface name="SystemInfoBattery" id="::SystemInfo::SystemInfoBattery">
49298       <webidl>  [NoInterfaceObject] interface SystemInfoBattery : <ref>SystemInfoProperty</ref> {
49299     readonly attribute double level;
49300
49301     readonly attribute boolean isCharging;
49302   };</webidl>
49303       <descriptive>
49304           <brief>
49305  This property reflects the general state of the system's battery
49306           </brief>
49307           <version>
49308  1.0
49309           </version>
49310       </descriptive>
49311       <ExtendedAttributeList>
49312         <ExtendedAttribute name="NoInterfaceObject">
49313           <webidl>NoInterfaceObject</webidl>
49314         </ExtendedAttribute>
49315       </ExtendedAttributeList>
49316       <InterfaceInheritance>
49317         <Name name="SystemInfoProperty"/>
49318       </InterfaceInheritance>
49319       <Attribute readonly="readonly" name="level" id="::SystemInfo::SystemInfoBattery::level">
49320         <webidl>    readonly attribute double level;</webidl>
49321         <descriptive>
49322             <brief>
49323  An attribute to specify the remaining level of an internal battery, scaled from <var>0 </var>to <var>1</var>:
49324             </brief>
49325            <description>
49326             <ul>
49327               <li>
49328 <var>0 </var>indicates that the battery level is the lowest and the system is about to enter shutdown mode.              </li>
49329               <li>
49330 <var>1 </var>indicates that the system's charge is maximum.              </li>
49331             </ul>
49332             <p>
49333 Any threshold parameter used in a watch operation to monitor this property applies to this attribute.
49334             </p>
49335            </description>
49336             <version>
49337  1.0
49338             </version>
49339         </descriptive>
49340         <Type type="double"/>
49341       </Attribute>
49342       <Attribute readonly="readonly" name="isCharging" id="::SystemInfo::SystemInfoBattery::isCharging">
49343         <webidl>    readonly attribute boolean isCharging;</webidl>
49344         <descriptive>
49345             <brief>
49346  Indicates whether the battery source is currently charging.
49347             </brief>
49348             <version>
49349  1.0
49350             </version>
49351         </descriptive>
49352         <Type type="boolean"/>
49353       </Attribute>
49354     </Interface>
49355     <Interface name="SystemInfoCpu" id="::SystemInfo::SystemInfoCpu">
49356       <webidl>  [NoInterfaceObject] interface SystemInfoCpu : <ref>SystemInfoProperty</ref> {
49357     readonly attribute double load;
49358   };</webidl>
49359       <descriptive>
49360           <brief>
49361  This property reflects the state of the CPUs available to this system.
49362           </brief>
49363           <version>
49364  1.0
49365           </version>
49366       </descriptive>
49367       <ExtendedAttributeList>
49368         <ExtendedAttribute name="NoInterfaceObject">
49369           <webidl>NoInterfaceObject</webidl>
49370         </ExtendedAttribute>
49371       </ExtendedAttributeList>
49372       <InterfaceInheritance>
49373         <Name name="SystemInfoProperty"/>
49374       </InterfaceInheritance>
49375       <Attribute readonly="readonly" name="load" id="::SystemInfo::SystemInfoCpu::load">
49376         <webidl>    readonly attribute double load;</webidl>
49377         <descriptive>
49378             <brief>
49379   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.
49380 Any threshold parameter used in a watch function to monitor this property applies to this attribute.
49381             </brief>
49382             <version>
49383  1.0
49384             </version>
49385         </descriptive>
49386         <Type type="double"/>
49387       </Attribute>
49388     </Interface>
49389     <Interface name="SystemInfoStorage" id="::SystemInfo::SystemInfoStorage">
49390       <webidl>  [NoInterfaceObject] interface SystemInfoStorage : <ref>SystemInfoProperty</ref> {
49391     readonly attribute <ref>SystemInfoStorageUnit</ref>[] units;
49392   };</webidl>
49393       <descriptive>
49394           <brief>
49395  This property exposes the data storage devices connected to this system.
49396           </brief>
49397           <version>
49398  1.0
49399           </version>
49400       </descriptive>
49401       <ExtendedAttributeList>
49402         <ExtendedAttribute name="NoInterfaceObject">
49403           <webidl>NoInterfaceObject</webidl>
49404         </ExtendedAttribute>
49405       </ExtendedAttributeList>
49406       <InterfaceInheritance>
49407         <Name name="SystemInfoProperty"/>
49408       </InterfaceInheritance>
49409       <Attribute readonly="readonly" name="units" id="::SystemInfo::SystemInfoStorage::units">
49410         <webidl>    readonly attribute <ref>SystemInfoStorageUnit</ref>[] units;</webidl>
49411         <descriptive>
49412             <brief>
49413  The array of storage units connected to this device.
49414             </brief>
49415             <version>
49416  1.0
49417             </version>
49418         </descriptive>
49419         <Type type="array">
49420           <Type name="SystemInfoStorageUnit"/>
49421         </Type>
49422       </Attribute>
49423     </Interface>
49424     <Interface name="SystemInfoStorageUnit" id="::SystemInfo::SystemInfoStorageUnit">
49425       <webidl>  [NoInterfaceObject] interface SystemInfoStorageUnit : <ref>SystemInfoProperty</ref> {
49426     readonly attribute DOMString type;
49427
49428     readonly attribute unsigned long long capacity;
49429
49430     readonly attribute unsigned long long availableCapacity;
49431
49432     readonly attribute boolean isRemovable;
49433
49434     readonly attribute boolean isRemoveable;
49435   };</webidl>
49436       <descriptive>
49437           <brief>
49438  This property exposes a single storage device connected to this system.
49439           </brief>
49440       </descriptive>
49441       <ExtendedAttributeList>
49442         <ExtendedAttribute name="NoInterfaceObject">
49443           <webidl>NoInterfaceObject</webidl>
49444         </ExtendedAttribute>
49445       </ExtendedAttributeList>
49446       <InterfaceInheritance>
49447         <Name name="SystemInfoProperty"/>
49448       </InterfaceInheritance>
49449       <Attribute readonly="readonly" name="type" id="::SystemInfo::SystemInfoStorageUnit::type">
49450         <webidl>    readonly attribute DOMString type;</webidl>
49451         <descriptive>
49452             <brief>
49453  The type of a storage device. The value is one of the constants defined for this type.
49454             </brief>
49455            <description>
49456             <p>
49457 The supported storage unit types are:
49458             </p>
49459             <ul>
49460               <li>
49461 UNKNOWN              </li>
49462               <li>
49463 INTERNAL               </li>
49464               <li>
49465 USB_HOST              </li>
49466               <li>
49467 MMC              </li>
49468         
49469
49470             </ul>
49471            </description>
49472             <version>
49473  1.0
49474             </version>
49475         </descriptive>
49476         <Type type="DOMString"/>
49477       </Attribute>
49478       <Attribute readonly="readonly" name="capacity" id="::SystemInfo::SystemInfoStorageUnit::capacity">
49479         <webidl>    readonly attribute unsigned long long capacity;</webidl>
49480         <descriptive>
49481             <brief>
49482  The amount of data that this device can hold, in bytes.
49483             </brief>
49484             <version>
49485  1.0
49486             </version>
49487         </descriptive>
49488         <Type type="unsigned long long"/>
49489       </Attribute>
49490       <Attribute readonly="readonly" name="availableCapacity" id="::SystemInfo::SystemInfoStorageUnit::availableCapacity">
49491         <webidl>    readonly attribute unsigned long long availableCapacity;</webidl>
49492         <descriptive>
49493             <brief>
49494  The amount of available data that this device can hold, in bytes.
49495             </brief>
49496             <version>
49497  1.0
49498             </version>
49499         </descriptive>
49500         <Type type="unsigned long long"/>
49501       </Attribute>
49502       <Attribute readonly="readonly" name="isRemovable" id="::SystemInfo::SystemInfoStorageUnit::isRemovable">
49503         <webidl>    readonly attribute boolean isRemovable;</webidl>
49504         <descriptive>
49505             <brief>
49506  An attribute to indicate whether a device can be removed or not.
49507             </brief>
49508            <description>
49509             <p>
49510 The following values are supported:
49511             </p>
49512             <ul>
49513               <li>
49514 <var>true </var> - If this storage unit can be removed from the system (such as an sdcard unplugged)              </li>
49515               <li>
49516 <var>false</var> - If this storage unit cannot be removed from the system              </li>
49517             </ul>
49518            </description>
49519             <version>
49520  2.1
49521             </version>
49522         </descriptive>
49523         <Type type="boolean"/>
49524       </Attribute>
49525       <Attribute readonly="readonly" name="isRemoveable" id="::SystemInfo::SystemInfoStorageUnit::isRemoveable">
49526         <webidl>    readonly attribute boolean isRemoveable;</webidl>
49527         <descriptive>
49528             <brief>
49529  true if this unit can be removed from the system (such as an sdcard unplugged), false otherwise.
49530             </brief>
49531             <version>
49532  1.0
49533             </version>
49534             <deprecated>
49535  A typographic error.
49536             </deprecated>
49537         </descriptive>
49538         <Type type="boolean"/>
49539       </Attribute>
49540     </Interface>
49541     <Interface name="SystemInfoDisplay" id="::SystemInfo::SystemInfoDisplay">
49542       <webidl>  [NoInterfaceObject] interface SystemInfoDisplay : <ref>SystemInfoProperty</ref> {
49543     readonly attribute unsigned long resolutionWidth;
49544
49545     readonly attribute unsigned long resolutionHeight;
49546
49547     readonly attribute unsigned long dotsPerInchWidth;
49548
49549     readonly attribute unsigned long dotsPerInchHeight;
49550
49551     readonly attribute double physicalWidth;
49552
49553     readonly attribute double physicalHeight;
49554
49555     readonly attribute double brightness;
49556   };</webidl>
49557       <descriptive>
49558           <brief>
49559  This property reflects the information of the Display.
49560           </brief>
49561           <version>
49562  1.0
49563           </version>
49564       </descriptive>
49565       <ExtendedAttributeList>
49566         <ExtendedAttribute name="NoInterfaceObject">
49567           <webidl>NoInterfaceObject</webidl>
49568         </ExtendedAttribute>
49569       </ExtendedAttributeList>
49570       <InterfaceInheritance>
49571         <Name name="SystemInfoProperty"/>
49572       </InterfaceInheritance>
49573       <Attribute readonly="readonly" name="resolutionWidth" id="::SystemInfo::SystemInfoDisplay::resolutionWidth">
49574         <webidl>    readonly attribute unsigned long resolutionWidth;</webidl>
49575         <descriptive>
49576             <brief>
49577  The total number of addressable pixels in the horizontal direction of a rectangular entity
49578 (such as Camera, Display, Image, Video, ...) when held in its default orientation.
49579             </brief>
49580             <version>
49581  1.0
49582             </version>
49583         </descriptive>
49584         <Type type="unsigned long"/>
49585       </Attribute>
49586       <Attribute readonly="readonly" name="resolutionHeight" id="::SystemInfo::SystemInfoDisplay::resolutionHeight">
49587         <webidl>    readonly attribute unsigned long resolutionHeight;</webidl>
49588         <descriptive>
49589             <brief>
49590  The total number of addressable pixels in the vertical direction of a rectangular element
49591 (such as Camera, Display, Image, Video, ...) when held in its default orientation.
49592             </brief>
49593             <version>
49594  1.0
49595             </version>
49596         </descriptive>
49597         <Type type="unsigned long"/>
49598       </Attribute>
49599       <Attribute readonly="readonly" name="dotsPerInchWidth" id="::SystemInfo::SystemInfoDisplay::dotsPerInchWidth">
49600         <webidl>    readonly attribute unsigned long dotsPerInchWidth;</webidl>
49601         <descriptive>
49602             <brief>
49603  Resolution of this device, along its width, in dots per inch.
49604             </brief>
49605             <version>
49606  1.0
49607             </version>
49608         </descriptive>
49609         <Type type="unsigned long"/>
49610       </Attribute>
49611       <Attribute readonly="readonly" name="dotsPerInchHeight" id="::SystemInfo::SystemInfoDisplay::dotsPerInchHeight">
49612         <webidl>    readonly attribute unsigned long dotsPerInchHeight;</webidl>
49613         <descriptive>
49614             <brief>
49615  Resolution of this device, along its height, in dots per inch.
49616             </brief>
49617             <version>
49618  1.0
49619             </version>
49620         </descriptive>
49621         <Type type="unsigned long"/>
49622       </Attribute>
49623       <Attribute readonly="readonly" name="physicalWidth" id="::SystemInfo::SystemInfoDisplay::physicalWidth">
49624         <webidl>    readonly attribute double physicalWidth;</webidl>
49625         <descriptive>
49626             <brief>
49627  The display's physical width in millimeters.
49628             </brief>
49629             <version>
49630  1.0
49631             </version>
49632         </descriptive>
49633         <Type type="double"/>
49634       </Attribute>
49635       <Attribute readonly="readonly" name="physicalHeight" id="::SystemInfo::SystemInfoDisplay::physicalHeight">
49636         <webidl>    readonly attribute double physicalHeight;</webidl>
49637         <descriptive>
49638             <brief>
49639  The display's physical height in millimeters.
49640             </brief>
49641             <version>
49642  1.0
49643             </version>
49644         </descriptive>
49645         <Type type="double"/>
49646       </Attribute>
49647       <Attribute readonly="readonly" name="brightness" id="::SystemInfo::SystemInfoDisplay::brightness">
49648         <webidl>    readonly attribute double brightness;</webidl>
49649         <descriptive>
49650             <brief>
49651  The current brightness of a display ranging between <var>0 </var>to <var>1</var>.
49652             </brief>
49653             <version>
49654  1.0
49655             </version>
49656         </descriptive>
49657         <Type type="double"/>
49658       </Attribute>
49659     </Interface>
49660     <Interface name="SystemInfoDeviceOrientation" id="::SystemInfo::SystemInfoDeviceOrientation">
49661       <webidl>  [NoInterfaceObject] interface SystemInfoDeviceOrientation : <ref>SystemInfoProperty</ref> {
49662
49663     readonly attribute <ref>SystemInfoDeviceOrientationStatus</ref> status;
49664     readonly attribute boolean isAutoRotation;
49665   };</webidl>
49666       <descriptive>
49667           <brief>
49668  This property reflects the information of the device orientation in this system.
49669           </brief>
49670           <version>
49671  2.0
49672           </version>
49673       </descriptive>
49674       <ExtendedAttributeList>
49675         <ExtendedAttribute name="NoInterfaceObject">
49676           <webidl>NoInterfaceObject</webidl>
49677         </ExtendedAttribute>
49678       </ExtendedAttributeList>
49679       <InterfaceInheritance>
49680         <Name name="SystemInfoProperty"/>
49681       </InterfaceInheritance>
49682       <Attribute readonly="readonly" name="status" id="::SystemInfo::SystemInfoDeviceOrientation::status">
49683         <webidl>    readonly attribute <ref>SystemInfoDeviceOrientationStatus</ref> status;</webidl>
49684         <descriptive>
49685             <brief>
49686  Represents the status of the current device orientation.
49687             </brief>
49688             <version>
49689  2.0
49690             </version>
49691         </descriptive>
49692         <Type name="SystemInfoDeviceOrientationStatus"/>
49693       </Attribute>
49694       <Attribute readonly="readonly" name="isAutoRotation" id="::SystemInfo::SystemInfoDeviceOrientation::isAutoRotation">
49695         <webidl>    readonly attribute boolean isAutoRotation;</webidl>
49696         <descriptive>
49697             <brief>
49698  whether the device is in autorotation.
49699             </brief>
49700             <version>
49701  2.2
49702             </version>
49703         </descriptive>
49704         <Type type="boolean"/>
49705       </Attribute>
49706     </Interface>
49707     <Interface name="SystemInfoBuild" id="::SystemInfo::SystemInfoBuild">
49708       <webidl>  [NoInterfaceObject] interface SystemInfoBuild : <ref>SystemInfoProperty</ref> {
49709
49710     readonly attribute DOMString model;
49711     readonly attribute DOMString manufacturer;
49712     readonly attribute DOMString buildVersion;
49713   };</webidl>
49714       <descriptive>
49715           <brief>
49716  This property reflects the information of the current device.
49717           </brief>
49718           <version>
49719  2.0
49720           </version>
49721       </descriptive>
49722       <ExtendedAttributeList>
49723         <ExtendedAttribute name="NoInterfaceObject">
49724           <webidl>NoInterfaceObject</webidl>
49725         </ExtendedAttribute>
49726       </ExtendedAttributeList>
49727       <InterfaceInheritance>
49728         <Name name="SystemInfoProperty"/>
49729       </InterfaceInheritance>
49730       <Attribute readonly="readonly" name="model" id="::SystemInfo::SystemInfoBuild::model">
49731         <webidl>    readonly attribute DOMString model;</webidl>
49732         <descriptive>
49733             <brief>
49734  Represents the model name of the current device.
49735             </brief>
49736             <version>
49737  2.0
49738             </version>
49739         </descriptive>
49740         <Type type="DOMString"/>
49741       </Attribute>
49742       <Attribute readonly="readonly" name="manufacturer" id="::SystemInfo::SystemInfoBuild::manufacturer">
49743         <webidl>    readonly attribute DOMString manufacturer;</webidl>
49744         <descriptive>
49745             <brief>
49746  Represents the manufacturer of the device.
49747             </brief>
49748             <version>
49749  2.1
49750             </version>
49751         </descriptive>
49752         <Type type="DOMString"/>
49753       </Attribute>
49754       <Attribute readonly="readonly" name="buildVersion" id="::SystemInfo::SystemInfoBuild::buildVersion">
49755         <webidl>    readonly attribute DOMString buildVersion;</webidl>
49756         <descriptive>
49757             <brief>
49758  Represents the build version information of the device.
49759             </brief>
49760             <version>
49761  2.2
49762             </version>
49763         </descriptive>
49764         <Type type="DOMString"/>
49765       </Attribute>
49766     </Interface>
49767     <Interface name="SystemInfoLocale" id="::SystemInfo::SystemInfoLocale">
49768       <webidl>  [NoInterfaceObject] interface SystemInfoLocale : <ref>SystemInfoProperty</ref> {
49769
49770     readonly attribute DOMString language;
49771
49772     readonly attribute DOMString country;
49773   };</webidl>
49774       <descriptive>
49775           <brief>
49776  This property reflects the locale information of the current device.
49777           </brief>
49778           <version>
49779  2.1
49780           </version>
49781       </descriptive>
49782       <ExtendedAttributeList>
49783         <ExtendedAttribute name="NoInterfaceObject">
49784           <webidl>NoInterfaceObject</webidl>
49785         </ExtendedAttribute>
49786       </ExtendedAttributeList>
49787       <InterfaceInheritance>
49788         <Name name="SystemInfoProperty"/>
49789       </InterfaceInheritance>
49790       <Attribute readonly="readonly" name="language" id="::SystemInfo::SystemInfoLocale::language">
49791         <webidl>    readonly attribute DOMString language;</webidl>
49792         <descriptive>
49793             <brief>
49794  Indicates the current language setting in the (LANGUAGE)_(REGION) syntax.
49795 The language setting is in the ISO 630-2 format and the region setting is in the ISO 3166-1 format. 
49796 The language setting is case-sensitive.
49797             </brief>
49798             <version>
49799  2.1
49800             </version>
49801         </descriptive>
49802         <Type type="DOMString"/>
49803       </Attribute>
49804       <Attribute readonly="readonly" name="country" id="::SystemInfo::SystemInfoLocale::country">
49805         <webidl>    readonly attribute DOMString country;</webidl>
49806         <descriptive>
49807             <brief>
49808  Indicates the current country setting in the (LANGUAGE)_(REGION) syntax.
49809 The language setting is in the ISO 630-2 format and the region setting is in the ISO 3166-1 format.
49810 The country setting is case-sensitive.
49811             </brief>
49812             <version>
49813  2.1
49814             </version>
49815         </descriptive>
49816         <Type type="DOMString"/>
49817       </Attribute>
49818     </Interface>
49819     <Interface name="SystemInfoNetwork" id="::SystemInfo::SystemInfoNetwork">
49820       <webidl>  [NoInterfaceObject] interface SystemInfoNetwork : <ref>SystemInfoProperty</ref> {    
49821
49822     readonly attribute <ref>SystemInfoNetworkType</ref> networkType;    
49823   };</webidl>
49824       <descriptive>
49825           <brief>
49826  This property reflects the information of the data network in this system.    
49827           </brief>
49828           <version>
49829  2.0    
49830           </version>
49831       </descriptive>
49832       <ExtendedAttributeList>
49833         <ExtendedAttribute name="NoInterfaceObject">
49834           <webidl>NoInterfaceObject</webidl>
49835         </ExtendedAttribute>
49836       </ExtendedAttributeList>
49837       <InterfaceInheritance>
49838         <Name name="SystemInfoProperty"/>
49839       </InterfaceInheritance>
49840       <Attribute readonly="readonly" name="networkType" id="::SystemInfo::SystemInfoNetwork::networkType">
49841         <webidl>    readonly attribute <ref>SystemInfoNetworkType</ref> networkType;</webidl>
49842         <descriptive>
49843             <brief>
49844  Represents the network type of the current data network.    
49845             </brief>
49846             <version>
49847  2.0    
49848             </version>
49849         </descriptive>
49850         <Type name="SystemInfoNetworkType"/>
49851       </Attribute>
49852     </Interface>
49853     <Interface name="SystemInfoWifiNetwork" id="::SystemInfo::SystemInfoWifiNetwork">
49854       <webidl>   [NoInterfaceObject] interface SystemInfoWifiNetwork : <ref>SystemInfoProperty</ref> {    
49855
49856     readonly attribute DOMString status;    
49857     readonly attribute DOMString ssid;    
49858     readonly attribute DOMString ipAddress;    
49859      readonly attribute DOMString ipv6Address;    
49860     readonly attribute double signalStrength;    
49861   };</webidl>
49862       <descriptive>
49863           <brief>
49864  This property reflects the information of the Wi-Fi network in this system.    
49865           </brief>
49866           <version>
49867  1.0    
49868           </version>
49869       </descriptive>
49870       <ExtendedAttributeList>
49871         <ExtendedAttribute name="NoInterfaceObject">
49872           <webidl>NoInterfaceObject</webidl>
49873         </ExtendedAttribute>
49874       </ExtendedAttributeList>
49875       <InterfaceInheritance>
49876         <Name name="SystemInfoProperty"/>
49877       </InterfaceInheritance>
49878       <Attribute readonly="readonly" name="status" id="::SystemInfo::SystemInfoWifiNetwork::status">
49879         <webidl>    readonly attribute DOMString status;</webidl>
49880         <descriptive>
49881             <brief>
49882  Represents the status (ON or OFF) of the Wi-Fi interface.    
49883             </brief>
49884             <version>
49885  1.0    
49886             </version>
49887         </descriptive>
49888         <Type type="DOMString"/>
49889       </Attribute>
49890       <Attribute readonly="readonly" name="ssid" id="::SystemInfo::SystemInfoWifiNetwork::ssid">
49891         <webidl>    readonly attribute DOMString ssid;</webidl>
49892         <descriptive>
49893             <brief>
49894  Represents the SSID of a Wi-Fi network.    
49895             </brief>
49896             <version>
49897  1.0    
49898             </version>
49899         </descriptive>
49900         <Type type="DOMString"/>
49901       </Attribute>
49902       <Attribute readonly="readonly" name="ipAddress" id="::SystemInfo::SystemInfoWifiNetwork::ipAddress">
49903         <webidl>    readonly attribute DOMString ipAddress;</webidl>
49904         <descriptive>
49905             <brief>
49906  Represents the IPv4 address of Wi-Fi network.    
49907             </brief>
49908             <version>
49909  1.0    
49910             </version>
49911         </descriptive>
49912         <Type type="DOMString"/>
49913       </Attribute>
49914       <Attribute readonly="readonly" name="ipv6Address" id="::SystemInfo::SystemInfoWifiNetwork::ipv6Address">
49915         <webidl>     readonly attribute DOMString ipv6Address;</webidl>
49916         <descriptive>
49917             <brief>
49918  Represents the IPv6 address of Wi-Fi network.    
49919             </brief>
49920             <version>
49921  2.0    
49922             </version>
49923         </descriptive>
49924         <Type type="DOMString"/>
49925       </Attribute>
49926       <Attribute readonly="readonly" name="signalStrength" id="::SystemInfo::SystemInfoWifiNetwork::signalStrength">
49927         <webidl>    readonly attribute double signalStrength;</webidl>
49928         <descriptive>
49929             <brief>
49930  This connection's signal strength, as a normalized value between 0 (no signal detected) and 1 (the level is at its maximum value).    
49931             </brief>
49932             <version>
49933  1.0    
49934             </version>
49935         </descriptive>
49936         <Type type="double"/>
49937       </Attribute>
49938     </Interface>
49939     <Interface name="SystemInfoCellularNetwork" id="::SystemInfo::SystemInfoCellularNetwork">
49940       <webidl>  [NoInterfaceObject] interface SystemInfoCellularNetwork : <ref>SystemInfoProperty</ref> {    
49941
49942     readonly attribute DOMString status;    
49943     readonly attribute DOMString apn;    
49944     readonly attribute DOMString ipAddress;    
49945     readonly attribute DOMString ipv6Address;    
49946     readonly attribute unsigned short mcc;    
49947     readonly attribute unsigned short mnc;    
49948     readonly attribute unsigned short cellId;    
49949     readonly attribute unsigned short lac;    
49950     readonly attribute boolean isRoaming;
49951     readonly attribute boolean isFlightMode;
49952     readonly attribute DOMString imei raises(<ref>WebAPIException</ref>);
49953   };</webidl>
49954       <descriptive>
49955           <brief>
49956  This property reflects the information of the Cellular network in this system.    
49957           </brief>
49958           <version>
49959  1.0    
49960           </version>
49961       </descriptive>
49962       <ExtendedAttributeList>
49963         <ExtendedAttribute name="NoInterfaceObject">
49964           <webidl>NoInterfaceObject</webidl>
49965         </ExtendedAttribute>
49966       </ExtendedAttributeList>
49967       <InterfaceInheritance>
49968         <Name name="SystemInfoProperty"/>
49969       </InterfaceInheritance>
49970       <Attribute readonly="readonly" name="status" id="::SystemInfo::SystemInfoCellularNetwork::status">
49971         <webidl>    readonly attribute DOMString status;</webidl>
49972         <descriptive>
49973             <brief>
49974  Represents the status (ON or OFF) of the cellular network.    
49975             </brief>
49976             <version>
49977  1.0    
49978             </version>
49979         </descriptive>
49980         <Type type="DOMString"/>
49981       </Attribute>
49982       <Attribute readonly="readonly" name="apn" id="::SystemInfo::SystemInfoCellularNetwork::apn">
49983         <webidl>    readonly attribute DOMString apn;</webidl>
49984         <descriptive>
49985             <brief>
49986  Represents an Access Point Name of the cellular network.    
49987             </brief>
49988             <version>
49989  1.0    
49990             </version>
49991         </descriptive>
49992         <Type type="DOMString"/>
49993       </Attribute>
49994       <Attribute readonly="readonly" name="ipAddress" id="::SystemInfo::SystemInfoCellularNetwork::ipAddress">
49995         <webidl>    readonly attribute DOMString ipAddress;</webidl>
49996         <descriptive>
49997             <brief>
49998  Represents the IPv4 address of the cellular network.    
49999             </brief>
50000             <version>
50001  1.0    
50002             </version>
50003         </descriptive>
50004         <Type type="DOMString"/>
50005       </Attribute>
50006       <Attribute readonly="readonly" name="ipv6Address" id="::SystemInfo::SystemInfoCellularNetwork::ipv6Address">
50007         <webidl>    readonly attribute DOMString ipv6Address;</webidl>
50008         <descriptive>
50009             <brief>
50010  Represents the IPv6 address of the cellular network.    
50011             </brief>
50012             <version>
50013  2.0    
50014             </version>
50015         </descriptive>
50016         <Type type="DOMString"/>
50017       </Attribute>
50018       <Attribute readonly="readonly" name="mcc" id="::SystemInfo::SystemInfoCellularNetwork::mcc">
50019         <webidl>    readonly attribute unsigned short mcc;</webidl>
50020         <descriptive>
50021             <brief>
50022  Represents Mobile Country Code (MCC) of the cellular network.    
50023             </brief>
50024             <version>
50025  1.0    
50026             </version>
50027         </descriptive>
50028         <Type type="unsigned short"/>
50029       </Attribute>
50030       <Attribute readonly="readonly" name="mnc" id="::SystemInfo::SystemInfoCellularNetwork::mnc">
50031         <webidl>    readonly attribute unsigned short mnc;</webidl>
50032         <descriptive>
50033             <brief>
50034  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    
50035 identify a mobile phone operator/carrier using the GSM, CDMA, iDEN, TETRA and UMTS public land mobile networks and some satellite mobile networks.    
50036             </brief>
50037             <version>
50038  1.0    
50039             </version>
50040         </descriptive>
50041         <Type type="unsigned short"/>
50042       </Attribute>
50043       <Attribute readonly="readonly" name="cellId" id="::SystemInfo::SystemInfoCellularNetwork::cellId">
50044         <webidl>    readonly attribute unsigned short cellId;</webidl>
50045         <descriptive>
50046             <brief>
50047  Represents Cell Id.    
50048             </brief>
50049             <version>
50050  1.0    
50051             </version>
50052         </descriptive>
50053         <Type type="unsigned short"/>
50054       </Attribute>
50055       <Attribute readonly="readonly" name="lac" id="::SystemInfo::SystemInfoCellularNetwork::lac">
50056         <webidl>    readonly attribute unsigned short lac;</webidl>
50057         <descriptive>
50058             <brief>
50059  Represents Location Area Code.    
50060             </brief>
50061             <version>
50062  1.0    
50063             </version>
50064         </descriptive>
50065         <Type type="unsigned short"/>
50066       </Attribute>
50067       <Attribute readonly="readonly" name="isRoaming" id="::SystemInfo::SystemInfoCellularNetwork::isRoaming">
50068         <webidl>    readonly attribute boolean isRoaming;</webidl>
50069         <descriptive>
50070             <brief>
50071  Whether the connection is set up while the device is roaming.    
50072             </brief>
50073             <version>
50074  1.0    
50075             </version>
50076         </descriptive>
50077         <Type type="boolean"/>
50078       </Attribute>
50079       <Attribute readonly="readonly" name="isFlightMode" id="::SystemInfo::SystemInfoCellularNetwork::isFlightMode">
50080         <webidl>    readonly attribute boolean isFlightMode;</webidl>
50081         <descriptive>
50082             <brief>
50083  Indicates whether the device is in flight mode.
50084             </brief>
50085             <version>
50086  2.1
50087             </version>
50088         </descriptive>
50089         <Type type="boolean"/>
50090       </Attribute>
50091       <Attribute readonly="readonly" name="imei" id="::SystemInfo::SystemInfoCellularNetwork::imei">
50092         <webidl>    readonly attribute DOMString imei raises(<ref>WebAPIException</ref>);</webidl>
50093         <descriptive>
50094             <brief>
50095  Represents the International Mobile Equipment Identity (IMEI).
50096             </brief>
50097             <version>
50098  2.1
50099             </version>
50100             <privilegelevel>
50101  partner
50102             </privilegelevel>
50103             <privilege>
50104  http://tizen.org/privilege/systemmanager
50105             </privilege>
50106         </descriptive>
50107         <Type type="DOMString"/>
50108         <Raises>
50109           <RaiseException name="WebAPIException">
50110             <descriptive>
50111                 <description><p>
50112  with error type SecurityError, if this attribute is not allowed.
50113                 </p></description>
50114             </descriptive>
50115           </RaiseException>
50116         </Raises>
50117       </Attribute>
50118     </Interface>
50119     <Interface name="SystemInfoSIM" id="::SystemInfo::SystemInfoSIM">
50120       <webidl>  [NoInterfaceObject] interface SystemInfoSIM : <ref>SystemInfoProperty</ref> {
50121     readonly attribute <ref>SystemInfoSimState</ref> state raises(<ref>WebAPIException</ref>);
50122     readonly attribute DOMString operatorName raises(<ref>WebAPIException</ref>);
50123     readonly attribute DOMString msisdn raises(<ref>WebAPIException</ref>);
50124     readonly attribute DOMString iccid raises(<ref>WebAPIException</ref>);
50125     readonly attribute unsigned short mcc raises(<ref>WebAPIException</ref>);
50126     readonly attribute unsigned short mnc raises(<ref>WebAPIException</ref>);
50127     readonly attribute DOMString msin raises(<ref>WebAPIException</ref>);
50128     readonly attribute DOMString spn raises(<ref>WebAPIException</ref>);
50129   };</webidl>
50130       <descriptive>
50131           <brief>
50132  This property reflects the information of the SIM card information.    
50133           </brief>
50134           <version>
50135  2.0
50136           </version>
50137       </descriptive>
50138       <ExtendedAttributeList>
50139         <ExtendedAttribute name="NoInterfaceObject">
50140           <webidl>NoInterfaceObject</webidl>
50141         </ExtendedAttribute>
50142       </ExtendedAttributeList>
50143       <InterfaceInheritance>
50144         <Name name="SystemInfoProperty"/>
50145       </InterfaceInheritance>
50146       <Attribute readonly="readonly" name="state" id="::SystemInfo::SystemInfoSIM::state">
50147         <webidl>    readonly attribute <ref>SystemInfoSimState</ref> state raises(<ref>WebAPIException</ref>);</webidl>
50148         <descriptive>
50149             <brief>
50150  Represents the SIM card state.
50151             </brief>
50152             <version>
50153  2.1
50154             </version>
50155             <privilegelevel>
50156  public
50157             </privilegelevel>
50158             <privilege>
50159  http://tizen.org/privilege/system
50160             </privilege>
50161         </descriptive>
50162         <Type name="SystemInfoSimState"/>
50163         <Raises>
50164           <RaiseException name="WebAPIException">
50165             <descriptive>
50166                 <description><p>
50167  with error type SecurityError, if this attribute is not allowed.
50168                 </p></description>
50169             </descriptive>
50170           </RaiseException>
50171         </Raises>
50172       </Attribute>
50173       <Attribute readonly="readonly" name="operatorName" id="::SystemInfo::SystemInfoSIM::operatorName">
50174         <webidl>    readonly attribute DOMString operatorName raises(<ref>WebAPIException</ref>);</webidl>
50175         <descriptive>
50176             <brief>
50177  Represents the Operator Name String (ONS) of Common PCN Handset Specification (CPHS) in SIM card.     
50178             </brief>
50179             <version>
50180  2.0    
50181             </version>
50182             <privilegelevel>
50183  public
50184             </privilegelevel>
50185             <privilege>
50186  http://tizen.org/privilege/system
50187             </privilege>
50188         </descriptive>
50189         <Type type="DOMString"/>
50190         <Raises>
50191           <RaiseException name="WebAPIException">
50192             <descriptive>
50193                 <description><p>
50194  with error type SecurityError, if this attribute is not allowed.
50195                 </p></description>
50196             </descriptive>
50197           </RaiseException>
50198         </Raises>
50199       </Attribute>
50200       <Attribute readonly="readonly" name="msisdn" id="::SystemInfo::SystemInfoSIM::msisdn">
50201         <webidl>    readonly attribute DOMString msisdn raises(<ref>WebAPIException</ref>);</webidl>
50202         <descriptive>
50203             <brief>
50204  Represents the SIM card subscriber number.     
50205             </brief>
50206             <version>
50207  2.0    
50208             </version>
50209             <privilegelevel>
50210  partner
50211             </privilegelevel>
50212             <privilege>
50213  http://tizen.org/privilege/systemmanager
50214             </privilege>
50215         </descriptive>
50216         <Type type="DOMString"/>
50217         <Raises>
50218           <RaiseException name="WebAPIException">
50219             <descriptive>
50220                 <description><p>
50221  with error type SecurityError, if this attribute is not allowed.
50222                 </p></description>
50223             </descriptive>
50224           </RaiseException>
50225         </Raises>
50226       </Attribute>
50227       <Attribute readonly="readonly" name="iccid" id="::SystemInfo::SystemInfoSIM::iccid">
50228         <webidl>    readonly attribute DOMString iccid raises(<ref>WebAPIException</ref>);</webidl>
50229         <descriptive>
50230             <brief>
50231  Represents the Integrated Circuit Card ID.    
50232             </brief>
50233             <version>
50234  2.0    
50235             </version>
50236             <privilegelevel>
50237  public
50238             </privilegelevel>
50239             <privilege>
50240  http://tizen.org/privilege/system
50241             </privilege>
50242         </descriptive>
50243         <Type type="DOMString"/>
50244         <Raises>
50245           <RaiseException name="WebAPIException">
50246             <descriptive>
50247                 <description><p>
50248  with error type SecurityError, if this attribute is not allowed.
50249                 </p></description>
50250             </descriptive>
50251           </RaiseException>
50252         </Raises>
50253       </Attribute>
50254       <Attribute readonly="readonly" name="mcc" id="::SystemInfo::SystemInfoSIM::mcc">
50255         <webidl>    readonly attribute unsigned short mcc raises(<ref>WebAPIException</ref>);</webidl>
50256         <descriptive>
50257             <brief>
50258  Represents the Mobile Country Code (MCC) of SIM provider.     
50259             </brief>
50260             <version>
50261  2.0    
50262             </version>
50263             <privilegelevel>
50264  public
50265             </privilegelevel>
50266             <privilege>
50267  http://tizen.org/privilege/system
50268             </privilege>
50269         </descriptive>
50270         <Type type="unsigned short"/>
50271         <Raises>
50272           <RaiseException name="WebAPIException">
50273             <descriptive>
50274                 <description><p>
50275  with error type SecurityError, if this attribute is not allowed.
50276                 </p></description>
50277             </descriptive>
50278           </RaiseException>
50279         </Raises>
50280       </Attribute>
50281       <Attribute readonly="readonly" name="mnc" id="::SystemInfo::SystemInfoSIM::mnc">
50282         <webidl>    readonly attribute unsigned short mnc raises(<ref>WebAPIException</ref>);</webidl>
50283         <descriptive>
50284             <brief>
50285  Represents the Mobile Network Code (MNC) of SIM provider.     
50286             </brief>
50287             <version>
50288  2.0    
50289             </version>
50290             <privilegelevel>
50291  public
50292             </privilegelevel>
50293             <privilege>
50294  http://tizen.org/privilege/system
50295             </privilege>
50296         </descriptive>
50297         <Type type="unsigned short"/>
50298         <Raises>
50299           <RaiseException name="WebAPIException">
50300             <descriptive>
50301                 <description><p>
50302  with error type SecurityError, if this attribute is not allowed.
50303                 </p></description>
50304             </descriptive>
50305           </RaiseException>
50306         </Raises>
50307       </Attribute>
50308       <Attribute readonly="readonly" name="msin" id="::SystemInfo::SystemInfoSIM::msin">
50309         <webidl>    readonly attribute DOMString msin raises(<ref>WebAPIException</ref>);</webidl>
50310         <descriptive>
50311             <brief>
50312  Represents the Mobile Subscription Identification Number (MSIN) of SIM provider.     
50313             </brief>
50314             <version>
50315  2.0    
50316             </version>
50317             <privilegelevel>
50318  partner
50319             </privilegelevel>
50320             <privilege>
50321  http://tizen.org/privilege/systemmanager
50322             </privilege>
50323         </descriptive>
50324         <Type type="DOMString"/>
50325         <Raises>
50326           <RaiseException name="WebAPIException">
50327             <descriptive>
50328                 <description><p>
50329  with error type SecurityError, if this attribute is not allowed.
50330                 </p></description>
50331             </descriptive>
50332           </RaiseException>
50333         </Raises>
50334       </Attribute>
50335       <Attribute readonly="readonly" name="spn" id="::SystemInfo::SystemInfoSIM::spn">
50336         <webidl>    readonly attribute DOMString spn raises(<ref>WebAPIException</ref>);</webidl>
50337         <descriptive>
50338             <brief>
50339  Represents the Service Provider Name (SPN) of SIM card.     
50340             </brief>
50341             <version>
50342  2.0    
50343             </version>
50344             <privilegelevel>
50345  public
50346             </privilegelevel>
50347             <privilege>
50348  http://tizen.org/privilege/system
50349             </privilege>
50350         </descriptive>
50351         <Type type="DOMString"/>
50352         <Raises>
50353           <RaiseException name="WebAPIException">
50354             <descriptive>
50355                 <description><p>
50356  with error type SecurityError, if this attribute is not allowed.
50357                 </p></description>
50358             </descriptive>
50359           </RaiseException>
50360         </Raises>
50361       </Attribute>
50362     </Interface>
50363     <Interface name="SystemInfoPeripheral" id="::SystemInfo::SystemInfoPeripheral">
50364       <webidl>  [NoInterfaceObject] interface SystemInfoPeripheral : <ref>SystemInfoProperty</ref> {
50365
50366     readonly attribute boolean isVideoOutputOn;
50367   };</webidl>
50368       <descriptive>
50369           <brief>
50370  This property reflects the peripheral information of the current device.
50371           </brief>
50372           <version>
50373  2.1
50374           </version>
50375       </descriptive>
50376       <ExtendedAttributeList>
50377         <ExtendedAttribute name="NoInterfaceObject">
50378           <webidl>NoInterfaceObject</webidl>
50379         </ExtendedAttribute>
50380       </ExtendedAttributeList>
50381       <InterfaceInheritance>
50382         <Name name="SystemInfoProperty"/>
50383       </InterfaceInheritance>
50384       <Attribute readonly="readonly" name="isVideoOutputOn" id="::SystemInfo::SystemInfoPeripheral::isVideoOutputOn">
50385         <webidl>    readonly attribute boolean isVideoOutputOn;</webidl>
50386         <descriptive>
50387             <brief>
50388  Represents the video out status.
50389             </brief>
50390             <version>
50391  2.1
50392             </version>
50393         </descriptive>
50394         <Type type="boolean"/>
50395       </Attribute>
50396     </Interface>
50397   </Module>
50398   <Module name="SystemSetting" id="::SystemSetting">
50399     <webidl>module SystemSetting {
50400
50401   [NoInterfaceObject] interface SystemSettingObject {
50402     readonly attribute <ref>SystemSettingManager</ref> systemsetting;
50403   };
50404     <ref>Tizen</ref> implements <ref>SystemSettingObject</ref>;
50405
50406   enum SystemSettingType {&quot;HOME_SCREEN&quot;, &quot;LOCK_SCREEN&quot;, &quot;INCOMING_CALL&quot;, &quot;NOTIFICATION_EMAIL&quot;};
50407
50408   [NoInterfaceObject] interface SystemSettingManager {
50409
50410      void setProperty(<ref>SystemSettingType</ref> type,
50411               DOMString value,
50412               <ref>SuccessCallback</ref> successCallback,
50413               optional <ref>ErrorCallback</ref>? errorCallback) raises (<ref>WebAPIException</ref>);
50414
50415      void getProperty(<ref>SystemSettingType</ref> type,
50416               <ref>SystemSettingSuccessCallback</ref> successCallback,
50417               optional <ref>ErrorCallback</ref>? errorCallback) raises (<ref>WebAPIException</ref>);
50418      
50419   };
50420
50421   [Callback=FunctionOnly, NoInterfaceObject] interface SystemSettingSuccessCallback {
50422     void onsuccess(DOMString value);
50423   };
50424
50425 };</webidl>
50426     <descriptive>
50427         <brief>
50428  This API provides interfaces and methods providing Web applications with access to various values of the system.
50429         </brief>
50430        <description>
50431         <p>
50432 This API provides an interface and method through features such as:
50433         </p>
50434         <ul>
50435           <li>
50436  HOME_SCREEN          </li>
50437           <li>
50438  LOCK_SCREEN          </li>
50439           <li>
50440  INCOMING_CALL          </li>
50441           <li>
50442  NOTIFICATION_EMAIL          </li>
50443         </ul>
50444         <p>
50445 For more information on the SystemSetting features, see <a href="../../org.tizen.web.appprogramming/html/guide/sys_guide/systemsetting.htm">System Setting Guide</a>.
50446         </p>
50447        </description>
50448         <version>
50449  2.0
50450         </version>
50451     </descriptive>
50452     <Interface name="SystemSettingObject" id="::SystemSetting::SystemSettingObject">
50453       <webidl>  [NoInterfaceObject] interface SystemSettingObject {
50454     readonly attribute <ref>SystemSettingManager</ref> systemsetting;
50455   };</webidl>
50456       <descriptive>
50457           <brief>
50458  This interface defines what is instantiated by the <em>Tizen </em>object from the Tizen Platform.
50459           </brief>
50460          <description>
50461           <p>
50462 There will be a <em>tizen.systemsetting </em>object that allows accessing the functionality of the SystemSetting API.
50463           </p>
50464          </description>
50465           <version>
50466  2.0
50467           </version>
50468       </descriptive>
50469       <ExtendedAttributeList>
50470         <ExtendedAttribute name="NoInterfaceObject">
50471           <webidl>NoInterfaceObject</webidl>
50472         </ExtendedAttribute>
50473       </ExtendedAttributeList>
50474       <Attribute readonly="readonly" name="systemsetting" id="::SystemSetting::SystemSettingObject::systemsetting">
50475         <webidl>    readonly attribute <ref>SystemSettingManager</ref> systemsetting;</webidl>
50476         <Type name="SystemSettingManager"/>
50477       </Attribute>
50478     </Interface>
50479     <Implements name1="Tizen" name2="SystemSettingObject">
50480       <webidl>    <ref>Tizen</ref> implements <ref>SystemSettingObject</ref>;</webidl>
50481     </Implements>
50482     <Enum name="SystemSettingType" id="::SystemSetting::SystemSettingType">
50483       <webidl>  enum SystemSettingType {&quot;HOME_SCREEN&quot;, &quot;LOCK_SCREEN&quot;, &quot;INCOMING_CALL&quot;, &quot;NOTIFICATION_EMAIL&quot;};</webidl>
50484       <descriptive>
50485           <brief>
50486  This enumerator indicates the type of supported system setting.
50487 The following values are supported in this release:
50488           </brief>
50489          <description>
50490           <ul>
50491             <li>
50492 HOME_SCREEN - For homescreen background image.            </li>
50493             <li>
50494 LOCK_SCREEN - For lockscreen background image.            </li>
50495             <li>
50496 INCOMING_CALL - For incoming call ringtone.            </li>
50497             <li>
50498 NOTIFICATION_EMAIL - For email notification alert tone.            </li>
50499           </ul>
50500           <p>
50501 Defines supporting setting types.
50502 The HOME_SCREEN and LOCK_SCREEN are supported for images files.
50503 The INCOMING_CALL and NOTIFICATION_EMAIL are support for sound files.
50504           </p>
50505          </description>
50506           <version>
50507  2.0
50508           </version>
50509       </descriptive>
50510       <EnumValue stringvalue="HOME_SCREEN">
50511         <webidl>&quot;HOME_SCREEN</webidl>
50512       </EnumValue>
50513       <EnumValue stringvalue="LOCK_SCREEN">
50514         <webidl> &quot;LOCK_SCREEN</webidl>
50515       </EnumValue>
50516       <EnumValue stringvalue="INCOMING_CALL">
50517         <webidl> &quot;INCOMING_CALL</webidl>
50518       </EnumValue>
50519       <EnumValue stringvalue="NOTIFICATION_EMAIL">
50520         <webidl> &quot;NOTIFICATION_EMAIL</webidl>
50521       </EnumValue>
50522     </Enum>
50523     <Interface name="SystemSettingManager" id="::SystemSetting::SystemSettingManager">
50524       <webidl>  [NoInterfaceObject] interface SystemSettingManager {
50525
50526      void setProperty(<ref>SystemSettingType</ref> type,
50527               DOMString value,
50528               <ref>SuccessCallback</ref> successCallback,
50529               optional <ref>ErrorCallback</ref>? errorCallback) raises (<ref>WebAPIException</ref>);
50530
50531      void getProperty(<ref>SystemSettingType</ref> type,
50532               <ref>SystemSettingSuccessCallback</ref> successCallback,
50533               optional <ref>ErrorCallback</ref>? errorCallback) raises (<ref>WebAPIException</ref>);
50534      
50535   };</webidl>
50536       <descriptive>
50537           <brief>
50538  This is the top-level interface for the SystemSetting API that provides
50539 access to the module functionalities.
50540           </brief>
50541       </descriptive>
50542       <ExtendedAttributeList>
50543         <ExtendedAttribute name="NoInterfaceObject">
50544           <webidl>NoInterfaceObject</webidl>
50545         </ExtendedAttribute>
50546       </ExtendedAttributeList>
50547       <Operation name="setProperty" id="::SystemSetting::SystemSettingManager::setProperty">
50548         <webidl>     void setProperty(<ref>SystemSettingType</ref> type,
50549               DOMString value,
50550               <ref>SuccessCallback</ref> successCallback,
50551               optional <ref>ErrorCallback</ref>? errorCallback) raises (<ref>WebAPIException</ref>);</webidl>
50552         <descriptive>
50553             <brief>
50554  Sets the property of a device.
50555             </brief>
50556            <description>
50557             <p>
50558 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.
50559             </p>
50560            </description>
50561             <version>
50562  2.0
50563             </version>
50564            <description>
50565             <p>
50566 The ErrorCallback is launched with these error types:
50567             </p>
50568             <ul>
50569               <li>
50570 TypeMismatchError - If any input parameter is not compatible with the expected type for that parameter.               </li>
50571               <li>
50572 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
50573               <li>
50574 UnknownError - If any other error occurs.              </li>
50575             </ul>
50576            </description>
50577             <privilegelevel>
50578  public
50579             </privilegelevel>
50580             <privilege>
50581  http://tizen.org/privilege/setting
50582             </privilege>
50583             <Code> // Define the success callback
50584  function successCallback() {
50585    console.log(&quot;Success to setProperty&quot;);
50586  }
50587
50588  // Define the error callback.
50589  function errorCallback(error) {
50590    console.log(&quot;Fail to setProperty&quot; + error.message);
50591  }
50592
50593  tizen.systemsetting.setProperty(&quot;HOME_SCREEN&quot;, &quot;/opt/usr/media/Images/image1.jpg&quot;, successCallback, errorCallback);
50594
50595  </Code>
50596         </descriptive>
50597         <Type type="void"/>
50598         <ArgumentList>
50599           <Argument name="type">
50600             <descriptive>
50601                 <description><p>
50602  The setting type to set.
50603                 </p></description>
50604             </descriptive>
50605             <Type name="SystemSettingType"/>
50606           </Argument>
50607           <Argument name="value">
50608             <descriptive>
50609                 <description><p>
50610  The location path of a wallpaper or ringtone file.
50611                 </p></description>
50612             </descriptive>
50613             <Type type="DOMString"/>
50614           </Argument>
50615           <Argument name="successCallback">
50616             <descriptive>
50617                 <description><p>
50618  To be invoked if the setting value is successfully set.
50619                 </p></description>
50620             </descriptive>
50621             <Type name="SuccessCallback"/>
50622           </Argument>
50623           <Argument optional="optional" name="errorCallback">
50624             <descriptive>
50625                 <description><p>
50626  To be invoked if the setting value cannot be set.
50627                 </p></description>
50628             </descriptive>
50629             <Type name="ErrorCallback" nullable="nullable"/>
50630           </Argument>
50631         </ArgumentList>
50632         <Raises>
50633           <RaiseException name="WebAPIException">
50634             <descriptive>
50635                 <description><p>
50636  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
50637                 </p></description>
50638                 <description><p>
50639  with error type NotSupportedError, if this feature is not supported.
50640                 </p></description>
50641                 <description><p>
50642  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
50643                 </p></description>
50644                 <description><p>
50645  with error type SecurityError, if this functionality is not allowed.
50646                 </p></description>
50647                 <description><p>
50648  with error type UnknownError in any other error case.
50649                 </p></description>
50650             </descriptive>
50651           </RaiseException>
50652         </Raises>
50653       </Operation>
50654       <Operation name="getProperty" id="::SystemSetting::SystemSettingManager::getProperty">
50655         <webidl>     void getProperty(<ref>SystemSettingType</ref> type,
50656               <ref>SystemSettingSuccessCallback</ref> successCallback,
50657               optional <ref>ErrorCallback</ref>? errorCallback) raises (<ref>WebAPIException</ref>);</webidl>
50658         <descriptive>
50659             <brief>
50660   Gets the value of the property of a device.
50661             </brief>
50662            <description>
50663             <p>
50664 This method allows the user to get the value of the specified system property as wallpaper or ringtone of a device.
50665             </p>
50666            </description>
50667             <version>
50668  2.0
50669             </version>
50670            <description>
50671             <p>
50672 The ErrorCallback is launched with these error types:
50673             </p>
50674             <ul>
50675               <li>
50676 TypeMismatchError - If any input parameter is not compatible with the expected type for that parameter.               </li>
50677               <li>
50678 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
50679               <li>
50680 UnknownError - If any other error occurs.              </li>
50681             </ul>
50682            </description>
50683             <Code> // Define the success callback
50684  function getPropertySuccessCallback(value) {
50685    console.log(&quot;Success to getProperty : &quot; + value);
50686  }
50687
50688  // Define the error callback.
50689  function errorCallback(error) {
50690    console.log(&quot;Fail to getProperty&quot; + error.message);
50691  }
50692
50693  tizen.systemsetting.getProperty(&quot;HOME_SCREEN&quot;, getPropertySuccessCallback, errorCallback);
50694
50695  </Code>
50696         </descriptive>
50697         <Type type="void"/>
50698         <ArgumentList>
50699           <Argument name="type">
50700             <descriptive>
50701                 <description><p>
50702  The type of the property to get.
50703                 </p></description>
50704             </descriptive>
50705             <Type name="SystemSettingType"/>
50706           </Argument>
50707           <Argument name="successCallback">
50708             <descriptive>
50709                 <description><p>
50710  To be invoked if the setting value is successfully retrieved.
50711                 </p></description>
50712             </descriptive>
50713             <Type name="SystemSettingSuccessCallback"/>
50714           </Argument>
50715           <Argument optional="optional" name="errorCallback">
50716             <descriptive>
50717                 <description><p>
50718  To be invoked if the setting value cannot be retrieved.
50719                 </p></description>
50720             </descriptive>
50721             <Type name="ErrorCallback" nullable="nullable"/>
50722           </Argument>
50723         </ArgumentList>
50724         <Raises>
50725           <RaiseException name="WebAPIException">
50726             <descriptive>
50727                 <description><p>
50728  with error type InvalidValuesError, if any of the input parameters contain an invalid value.
50729                 </p></description>
50730                 <description><p>
50731  with error type NotSupportedError, if this feature is not supported.
50732                 </p></description>
50733                 <description><p>
50734  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
50735                 </p></description>
50736                 <description><p>
50737  with error type UnknownError in any other error case.     
50738                 </p></description>
50739             </descriptive>
50740           </RaiseException>
50741         </Raises>
50742       </Operation>
50743     </Interface>
50744     <Interface name="SystemSettingSuccessCallback" id="::SystemSetting::SystemSettingSuccessCallback">
50745       <webidl>  [Callback=FunctionOnly, NoInterfaceObject] interface SystemSettingSuccessCallback {
50746     void onsuccess(DOMString value);
50747   };</webidl>
50748       <descriptive>
50749           <brief>
50750  The success callback for getProperty().
50751           </brief>
50752           <version>
50753  2.0
50754           </version>
50755       </descriptive>
50756       <ExtendedAttributeList>
50757         <ExtendedAttribute name="Callback" value="FunctionOnly">
50758           <webidl>Callback</webidl>
50759         </ExtendedAttribute>
50760         <ExtendedAttribute name="NoInterfaceObject">
50761           <webidl> NoInterfaceObject</webidl>
50762         </ExtendedAttribute>
50763       </ExtendedAttributeList>
50764       <Operation name="onsuccess" id="::SystemSetting::SystemSettingSuccessCallback::onsuccess">
50765         <webidl>    void onsuccess(DOMString value);</webidl>
50766         <Type type="void"/>
50767         <ArgumentList>
50768           <Argument name="value">
50769             <Type type="DOMString"/>
50770           </Argument>
50771         </ArgumentList>
50772       </Operation>
50773     </Interface>
50774   </Module>
50775   <Module name="Time" id="::Time">
50776     <webidl>module Time {
50777   
50778   enum TimeDurationUnit { &quot;MSECS&quot;, &quot;SECS&quot;, &quot;MINS&quot;, &quot;HOURS&quot;, &quot;DAYS&quot; };
50779   
50780   [NoInterfaceObject] interface TimeManagerObject {
50781     readonly attribute <ref>TimeUtil</ref> time;
50782   };
50783   <ref>Tizen</ref> implements <ref>TimeManagerObject</ref>;
50784   
50785   [NoInterfaceObject] interface TimeUtil {
50786     <ref>TZDate</ref> getCurrentDateTime() raises(<ref>WebAPIException</ref>);
50787     
50788     DOMString getLocalTimezone() raises(<ref>WebAPIException</ref>);
50789     
50790     DOMString[] getAvailableTimezones() raises(<ref>WebAPIException</ref>);
50791                                            
50792     DOMString getDateFormat(optional boolean? shortformat) raises(<ref>WebAPIException</ref>);
50793     
50794     DOMString getTimeFormat() raises(<ref>WebAPIException</ref>);
50795     
50796     boolean isLeapYear(long year) raises(<ref>WebAPIException</ref>);
50797   };
50798
50799
50800   [Constructor(optional Date? datetime, optional DOMString? timezone),
50801    Constructor(long year, long month, long day, optional long? hours, optional long? minutes, optional long? seconds, optional long? milliseconds, optional DOMString? timezone)]
50802
50803   interface TZDate {
50804     long getDate();
50805     
50806     void setDate(long date);
50807     
50808     long getDay();
50809     
50810     long getFullYear();
50811     
50812     void setFullYear(long year);
50813     
50814     long getHours();
50815     
50816     void setHours(long hours);
50817     
50818     long getMilliseconds();
50819     
50820     void setMilliseconds(long ms);
50821     
50822     long getMinutes();
50823     
50824     void setMinutes(long minutes);
50825     
50826     long getMonth();
50827     
50828     void setMonth(long month);
50829     
50830     long getSeconds();
50831     
50832     void setSeconds(long seconds);
50833     
50834     long getUTCDate();
50835     
50836     void setUTCDate(long date);
50837     
50838     long getUTCDay();
50839     
50840     long getUTCFullYear();
50841     
50842     void setUTCFullYear(long year);
50843     
50844     long getUTCHours();
50845     
50846     void setUTCHours(long hours);
50847     
50848     long getUTCMilliseconds();
50849     
50850     void setUTCMilliseconds(long ms);
50851     
50852     long getUTCMinutes();
50853     
50854     void setUTCMinutes(long minutes);
50855     
50856     long getUTCMonth();
50857     
50858     void setUTCMonth(long month);
50859     
50860     long getUTCSeconds();
50861     
50862     void setUTCSeconds(long seconds);
50863     
50864     DOMString getTimezone();
50865     
50866     <ref>TZDate</ref> toTimezone(DOMString tzid) raises(<ref>WebAPIException</ref>);
50867     
50868     <ref>TZDate</ref> toLocalTimezone() raises(<ref>WebAPIException</ref>);
50869     
50870     <ref>TZDate</ref> toUTC() raises(<ref>WebAPIException</ref>);
50871     
50872     <ref>TimeDuration</ref> difference(<ref>TZDate</ref> other) raises(<ref>WebAPIException</ref>);
50873
50874     boolean equalsTo(<ref>TZDate</ref> other) raises(<ref>WebAPIException</ref>);
50875     
50876     boolean earlierThan(<ref>TZDate</ref> other) raises(<ref>WebAPIException</ref>);
50877     
50878     boolean laterThan(<ref>TZDate</ref> other) raises(<ref>WebAPIException</ref>);
50879     
50880     <ref>TZDate</ref> addDuration(<ref>TimeDuration</ref> duration) raises(<ref>WebAPIException</ref>);
50881     
50882     DOMString toLocaleDateString();
50883     
50884     DOMString toLocaleTimeString();
50885     
50886     DOMString toLocaleString();
50887     
50888     DOMString toDateString();
50889     
50890     DOMString toTimeString();
50891     
50892     DOMString toString();
50893     
50894     DOMString getTimezoneAbbreviation() raises(<ref>WebAPIException</ref>);
50895     
50896     long secondsFromUTC() raises(<ref>WebAPIException</ref>);
50897     
50898     boolean isDST() raises(<ref>WebAPIException</ref>);
50899     
50900     <ref>TZDate</ref>? getPreviousDSTTransition() raises(<ref>WebAPIException</ref>);
50901     
50902     <ref>TZDate</ref>? getNextDSTTransition() raises(<ref>WebAPIException</ref>);
50903   };
50904   
50905   [Constructor(long long length, optional <ref>TimeDurationUnit</ref>? unit)]
50906   interface TimeDuration
50907   {   
50908     attribute long long length;
50909     
50910     attribute <ref>TimeDurationUnit</ref> unit;
50911     
50912     <ref>TimeDuration</ref> difference(<ref>TimeDuration</ref> other) raises(<ref>WebAPIException</ref>);
50913     
50914     boolean equalsTo(<ref>TimeDuration</ref> other) raises(<ref>WebAPIException</ref>);
50915     
50916     boolean lessThan(<ref>TimeDuration</ref> other) raises(<ref>WebAPIException</ref>);
50917     
50918     boolean greaterThan(<ref>TimeDuration</ref> other) raises(<ref>WebAPIException</ref>);
50919   };
50920 };</webidl>
50921     <descriptive>
50922         <brief>
50923   The Time API provides information regarding date / time and time zones.
50924         </brief>
50925         <version>
50926  1.0
50927         </version>
50928        <description>
50929         <p>
50930 The JavaScript Date object does not have full timezone support.
50931 Date objects allow only simple representations to denote a particular location's
50932 offset from Universal Coordinated Time (UTC). This is typically provided as a +/-
50933 offset from UTC-0 (also known as Greenwich Mean Time, or GMT) for example, +05:30 denotes
50934 that a location is 5 hours and 30 minutes ahead of UTC +00:00.
50935 The issue with this method is not getting the correct
50936 local time for a given date. The existing methods are sufficient for this purpose.
50937 The issue is correctly converting to and from local time and UTC for all points in
50938 time - in any of the past, present, and future - based on an initial time provided.
50939 This is important for defining relative dates, where a time in a given location may
50940 observe different UTC offsets, according to any Daylight Savings Rules (DST) in effect
50941 or any other changes that may occur to a location's time zone over time.
50942 Without the communication of the explicit time zone rules governing a given date and
50943 time, the ability to effectively calculate the offset of the local time to UTC or to
50944 any other time zone at any point in the past or future is lost. 
50945         </p>
50946         <p>
50947 This API can be used to get TZDate objects with full time zone support, convert them
50948 between timezones, retrieve available timezones.
50949         </p>
50950         <p>
50951 For more information on the Time features, see <a href="../../org.tizen.web.appprogramming/html/guide/sys_guide/time.htm">Time Guide</a>. 
50952         </p>
50953        </description>
50954     </descriptive>
50955     <Enum name="TimeDurationUnit" id="::Time::TimeDurationUnit">
50956       <webidl>  enum TimeDurationUnit { &quot;MSECS&quot;, &quot;SECS&quot;, &quot;MINS&quot;, &quot;HOURS&quot;, &quot;DAYS&quot; };</webidl>
50957       <descriptive>
50958           <brief>
50959  TimeDuration unit (milliseconds, seconds, minutes, hours or days).
50960           </brief>
50961          <description>
50962           <p>
50963 At least the following values must be supported:
50964           </p>
50965           <ul>
50966             <li>
50967 MSECS - Indicates a duration in milliseconds            </li>
50968             <li>
50969 SECS - Indicates a duration in seconds             </li>
50970             <li>
50971 MINS - Indicates a duration in minutes             </li>
50972             <li>
50973 HOURS - Indicates a duration in hours             </li>
50974             <li>
50975 DAYS - Indicates a duration in days            </li>
50976           </ul>
50977          </description>
50978           <version>
50979  1.0
50980           </version>
50981       </descriptive>
50982       <EnumValue stringvalue="MSECS">
50983         <webidl> &quot;MSECS</webidl>
50984       </EnumValue>
50985       <EnumValue stringvalue="SECS">
50986         <webidl> &quot;SECS</webidl>
50987       </EnumValue>
50988       <EnumValue stringvalue="MINS">
50989         <webidl> &quot;MINS</webidl>
50990       </EnumValue>
50991       <EnumValue stringvalue="HOURS">
50992         <webidl> &quot;HOURS</webidl>
50993       </EnumValue>
50994       <EnumValue stringvalue="DAYS">
50995         <webidl> &quot;DAYS</webidl>
50996       </EnumValue>
50997     </Enum>
50998     <Interface name="TimeManagerObject" id="::Time::TimeManagerObject">
50999       <webidl>  [NoInterfaceObject] interface TimeManagerObject {
51000     readonly attribute <ref>TimeUtil</ref> time;
51001   };</webidl>
51002       <descriptive>
51003           <brief>
51004  Defines what is instantiated in the tizen object by the Tizen Platform.
51005           </brief>
51006          <description>
51007           <p>
51008 There will be a tizen.time object that allows accessing the
51009 functionality of the Time API.
51010           </p>
51011          </description>
51012           <version>
51013  1.0
51014           </version>
51015       </descriptive>
51016       <ExtendedAttributeList>
51017         <ExtendedAttribute name="NoInterfaceObject">
51018           <webidl>NoInterfaceObject</webidl>
51019         </ExtendedAttribute>
51020       </ExtendedAttributeList>
51021       <Attribute readonly="readonly" name="time" id="::Time::TimeManagerObject::time">
51022         <webidl>    readonly attribute <ref>TimeUtil</ref> time;</webidl>
51023         <Type name="TimeUtil"/>
51024       </Attribute>
51025     </Interface>
51026     <Implements name1="Tizen" name2="TimeManagerObject">
51027       <webidl>  <ref>Tizen</ref> implements <ref>TimeManagerObject</ref>;</webidl>
51028     </Implements>
51029     <Interface name="TimeUtil" id="::Time::TimeUtil">
51030       <webidl>  [NoInterfaceObject] interface TimeUtil {
51031     <ref>TZDate</ref> getCurrentDateTime() raises(<ref>WebAPIException</ref>);
51032     
51033     DOMString getLocalTimezone() raises(<ref>WebAPIException</ref>);
51034     
51035     DOMString[] getAvailableTimezones() raises(<ref>WebAPIException</ref>);
51036                                            
51037     DOMString getDateFormat(optional boolean? shortformat) raises(<ref>WebAPIException</ref>);
51038     
51039     DOMString getTimeFormat() raises(<ref>WebAPIException</ref>);
51040     
51041     boolean isLeapYear(long year) raises(<ref>WebAPIException</ref>);
51042   };</webidl>
51043       <descriptive>
51044           <brief>
51045  The TimeUtil class that provides access to the time API.
51046           </brief>
51047          <description>
51048           <p>
51049 This interface offers methods to manage date / time as well as timezones such as:
51050           </p>
51051           <ul>
51052             <li>
51053 Get the current date / time using getCurrentDateTime().            </li>
51054             <li>
51055 Get timezones using getLocalTimezone() and getAvailableTimezones().            </li>
51056           </ul>
51057          </description>
51058           <version>
51059  1.0
51060           </version>
51061       </descriptive>
51062       <ExtendedAttributeList>
51063         <ExtendedAttribute name="NoInterfaceObject">
51064           <webidl>NoInterfaceObject</webidl>
51065         </ExtendedAttribute>
51066       </ExtendedAttributeList>
51067       <Operation name="getCurrentDateTime" id="::Time::TimeUtil::getCurrentDateTime">
51068         <webidl>    <ref>TZDate</ref> getCurrentDateTime() raises(<ref>WebAPIException</ref>);</webidl>
51069         <descriptive>
51070             <brief>
51071  Returns the current date / time.
51072             </brief>
51073             <version>
51074  1.0
51075             </version>
51076             <Code> var current_dt = tizen.time.getCurrentDateTime();
51077  console.log(&quot;current date / time is &quot; + current_dt.toLocaleString());
51078  </Code>
51079         </descriptive>
51080         <Type name="TZDate">
51081           <descriptive>
51082               <description><p>
51083  TZDate Current TZDate object.
51084               </p></description>
51085           </descriptive>
51086         </Type>
51087         <ArgumentList/>
51088         <Raises>
51089           <RaiseException name="WebAPIException">
51090             <descriptive>
51091                 <description><p>
51092  with error type UnknownError, if the call failed due to an unknown error.
51093                 </p></description>
51094             </descriptive>
51095           </RaiseException>
51096         </Raises>
51097       </Operation>
51098       <Operation name="getLocalTimezone" id="::Time::TimeUtil::getLocalTimezone">
51099         <webidl>    DOMString getLocalTimezone() raises(<ref>WebAPIException</ref>);</webidl>
51100         <descriptive>
51101             <brief>
51102  Returns identifier of the local system timezone.
51103             </brief>
51104             <version>
51105  1.0
51106             </version>
51107             <Code> console.log(&quot;The local time zone is &quot; + tizen.time.getLocalTimezone());
51108  </Code>
51109         </descriptive>
51110         <Type type="DOMString">
51111           <descriptive>
51112               <description><p>
51113  Timezone Local timezone.
51114               </p></description>
51115           </descriptive>
51116         </Type>
51117         <ArgumentList/>
51118         <Raises>
51119           <RaiseException name="WebAPIException">
51120             <descriptive>
51121                 <description><p>
51122  with error type UnknownError, if the call failed due to an unknown error.
51123                 </p></description>
51124             </descriptive>
51125           </RaiseException>
51126         </Raises>
51127       </Operation>
51128       <Operation name="getAvailableTimezones" id="::Time::TimeUtil::getAvailableTimezones">
51129         <webidl>    DOMString[] getAvailableTimezones() raises(<ref>WebAPIException</ref>);</webidl>
51130         <descriptive>
51131             <brief>
51132  Returns synchronously the identifiers of the timezones supported by the device.
51133             </brief>
51134            <description>
51135             <p>
51136 Zero or more slashes separate different components of a timezone identifier,
51137 with the most general descriptor first and the most specific one last. For example,
51138 'Europe/Berlin', 'America/Argentina/Buenos_Aires'.
51139             </p>
51140            </description>
51141             <version>
51142  1.0
51143             </version>
51144             <Code> var tzids = tizen.time.getAvailableTimezones();
51145  console.log(&quot;The device supports &quot; + tzids.length + &quot; time zones.&quot;);
51146  </Code>
51147         </descriptive>
51148         <Type type="array">
51149           <descriptive>
51150               <description><p>
51151  Array of time zone identifiers.
51152               </p></description>
51153           </descriptive>
51154           <Type type="DOMString"/>
51155         </Type>
51156         <ArgumentList/>
51157         <Raises>
51158           <RaiseException name="WebAPIException">
51159             <descriptive>
51160                 <description><p>
51161  with error type UnknownError, if the call failed due to an unknown error.
51162                 </p></description>
51163             </descriptive>
51164           </RaiseException>
51165         </Raises>
51166       </Operation>
51167       <Operation name="getDateFormat" id="::Time::TimeUtil::getDateFormat">
51168         <webidl>    DOMString getDateFormat(optional boolean? shortformat) raises(<ref>WebAPIException</ref>);</webidl>
51169         <descriptive>
51170            <description>
51171             <p>
51172 Returns the date format according to the system's locale settings.
51173             </p>
51174             <p>
51175 These expressions may be used in the returned string:
51176             </p>
51177             <ul>
51178               <li>
51179 &quot;d&quot; = day number (1 to 31)              </li>
51180               <li>
51181 &quot;D&quot; = day name              </li>
51182               <li>
51183 &quot;m&quot; = month number (1 to 12)              </li>
51184               <li>
51185 &quot;M&quot; = month name              </li>
51186               <li>
51187 &quot;y&quot; = year              </li>
51188             </ul>
51189             <p>
51190 Examples of string formats include: &quot;d/m/y&quot;, &quot;y-d-m&quot;, &quot;D, M d y&quot;.
51191             </p>
51192            </description>
51193             <version>
51194  1.0
51195             </version>
51196         </descriptive>
51197         <Type type="DOMString">
51198           <descriptive>
51199               <description><p>
51200  DOMString The date format according to the system's locale settings.
51201               </p></description>
51202           </descriptive>
51203         </Type>
51204         <ArgumentList>
51205           <Argument optional="optional" name="shortformat">
51206             <descriptive>
51207                 <description><p>
51208  Flag indicating if the user is interested in the short
51209 date format (23/10/2011) instead of a long date format (&quot;Monday, October 23 2011&quot;).
51210 By default, this attribute is set to false.
51211                 </p></description>
51212             </descriptive>
51213             <Type type="boolean" nullable="nullable"/>
51214           </Argument>
51215         </ArgumentList>
51216         <Raises>
51217           <RaiseException name="WebAPIException">
51218             <descriptive>
51219                 <description><p>
51220  with error type UnknownError, if the call failed due to an unknown error.
51221                 </p></description>
51222             </descriptive>
51223           </RaiseException>
51224         </Raises>
51225       </Operation>
51226       <Operation name="getTimeFormat" id="::Time::TimeUtil::getTimeFormat">
51227         <webidl>    DOMString getTimeFormat() raises(<ref>WebAPIException</ref>);</webidl>
51228         <descriptive>
51229            <description>
51230             <p>
51231 Returns the time format according to the system's locale settings.
51232             </p>
51233             <p>
51234 These expressions may be used in the returned string:
51235             </p>
51236             <ul>
51237               <li>
51238 &quot;h&quot; = hours (0 to 23 or 1 to 12 if AM/PM display)              </li>
51239               <li>
51240 &quot;m&quot; = minutes (0 to 59)              </li>
51241               <li>
51242 &quot;s&quot; = seconds (0 to 59)              </li>
51243               <li>
51244 &quot;ap&quot; = AM/PM display              </li>
51245             </ul>
51246             <p>
51247 Examples of string formats include: &quot;h:m:s ap&quot;, &quot;h:m:s&quot;.
51248             </p>
51249            </description>
51250             <version>
51251  1.0
51252             </version>
51253         </descriptive>
51254         <Type type="DOMString">
51255           <descriptive>
51256               <description><p>
51257  DOMString The time format according to the system's locale settings.
51258               </p></description>
51259           </descriptive>
51260         </Type>
51261         <ArgumentList/>
51262         <Raises>
51263           <RaiseException name="WebAPIException">
51264             <descriptive>
51265                 <description><p>
51266  with error type UnknownError, if the call failed due to an unknown error.
51267                 </p></description>
51268             </descriptive>
51269           </RaiseException>
51270         </Raises>
51271       </Operation>
51272       <Operation name="isLeapYear" id="::Time::TimeUtil::isLeapYear">
51273         <webidl>    boolean isLeapYear(long year) raises(<ref>WebAPIException</ref>);</webidl>
51274         <descriptive>
51275             <brief>
51276  Returns <em>true</em> if the given year is a leap year.
51277             </brief>
51278             <version>
51279  1.0
51280             </version>
51281             <Code> var current_dt = tizen.time.getCurrentDateTime();
51282  var is_leap = tizen.time.isLeapYear(current_dt.getFullYear());
51283  if (is_leap)
51284    console.log(&quot;This year is a leap year.&quot;);
51285  </Code>
51286         </descriptive>
51287         <Type type="boolean">
51288           <descriptive>
51289               <description><p>
51290  boolean <em>true</em>, if the year is a leap year.
51291               </p></description>
51292           </descriptive>
51293         </Type>
51294         <ArgumentList>
51295           <Argument name="year">
51296             <descriptive>
51297                 <description><p>
51298  Year to check.
51299                 </p></description>
51300             </descriptive>
51301             <Type type="long"/>
51302           </Argument>
51303         </ArgumentList>
51304         <Raises>
51305           <RaiseException name="WebAPIException">
51306             <descriptive>
51307                 <description><p>
51308  with error type TypeMismatchError, if the input parameter
51309 is not compatible with the expected type for that parameter.
51310                 </p></description>
51311                 <description><p>
51312  with error type InvalidValuesError, if any of the input 
51313 parameters contain an invalid value.    
51314                 </p></description>
51315                 <description><p>
51316  with error type UnknownError, if the call failed due to an unknown error.
51317                 </p></description>
51318             </descriptive>
51319           </RaiseException>
51320         </Raises>
51321       </Operation>
51322     </Interface>
51323     <Interface name="TZDate" id="::Time::TZDate">
51324       <webidl>  [Constructor(optional Date? datetime, optional DOMString? timezone),
51325    Constructor(long year, long month, long day, optional long? hours, optional long? minutes, optional long? seconds, optional long? milliseconds, optional DOMString? timezone)]
51326
51327   interface TZDate {
51328     long getDate();
51329     
51330     void setDate(long date);
51331     
51332     long getDay();
51333     
51334     long getFullYear();
51335     
51336     void setFullYear(long year);
51337     
51338     long getHours();
51339     
51340     void setHours(long hours);
51341     
51342     long getMilliseconds();
51343     
51344     void setMilliseconds(long ms);
51345     
51346     long getMinutes();
51347     
51348     void setMinutes(long minutes);
51349     
51350     long getMonth();
51351     
51352     void setMonth(long month);
51353     
51354     long getSeconds();
51355     
51356     void setSeconds(long seconds);
51357     
51358     long getUTCDate();
51359     
51360     void setUTCDate(long date);
51361     
51362     long getUTCDay();
51363     
51364     long getUTCFullYear();
51365     
51366     void setUTCFullYear(long year);
51367     
51368     long getUTCHours();
51369     
51370     void setUTCHours(long hours);
51371     
51372     long getUTCMilliseconds();
51373     
51374     void setUTCMilliseconds(long ms);
51375     
51376     long getUTCMinutes();
51377     
51378     void setUTCMinutes(long minutes);
51379     
51380     long getUTCMonth();
51381     
51382     void setUTCMonth(long month);
51383     
51384     long getUTCSeconds();
51385     
51386     void setUTCSeconds(long seconds);
51387     
51388     DOMString getTimezone();
51389     
51390     <ref>TZDate</ref> toTimezone(DOMString tzid) raises(<ref>WebAPIException</ref>);
51391     
51392     <ref>TZDate</ref> toLocalTimezone() raises(<ref>WebAPIException</ref>);
51393     
51394     <ref>TZDate</ref> toUTC() raises(<ref>WebAPIException</ref>);
51395     
51396     <ref>TimeDuration</ref> difference(<ref>TZDate</ref> other) raises(<ref>WebAPIException</ref>);
51397
51398     boolean equalsTo(<ref>TZDate</ref> other) raises(<ref>WebAPIException</ref>);
51399     
51400     boolean earlierThan(<ref>TZDate</ref> other) raises(<ref>WebAPIException</ref>);
51401     
51402     boolean laterThan(<ref>TZDate</ref> other) raises(<ref>WebAPIException</ref>);
51403     
51404     <ref>TZDate</ref> addDuration(<ref>TimeDuration</ref> duration) raises(<ref>WebAPIException</ref>);
51405     
51406     DOMString toLocaleDateString();
51407     
51408     DOMString toLocaleTimeString();
51409     
51410     DOMString toLocaleString();
51411     
51412     DOMString toDateString();
51413     
51414     DOMString toTimeString();
51415     
51416     DOMString toString();
51417     
51418     DOMString getTimezoneAbbreviation() raises(<ref>WebAPIException</ref>);
51419     
51420     long secondsFromUTC() raises(<ref>WebAPIException</ref>);
51421     
51422     boolean isDST() raises(<ref>WebAPIException</ref>);
51423     
51424     <ref>TZDate</ref>? getPreviousDSTTransition() raises(<ref>WebAPIException</ref>);
51425     
51426     <ref>TZDate</ref>? getNextDSTTransition() raises(<ref>WebAPIException</ref>);
51427   };</webidl>
51428       <descriptive>
51429           <brief>
51430  The TZDate object represents information regarding a given
51431 date / time in a predefined timezone.
51432 If its date / time is exceed the platform limit, TZDate will be invalid.
51433           </brief>
51434           <version>
51435  1.0
51436           </version>
51437       </descriptive>
51438       <ExtendedAttributeList>
51439         <ExtendedAttribute name="Constructor">
51440           <webidl>Constructor(optional Date? datetime, optional DOMString? timezone)</webidl>
51441           <ArgumentList>
51442             <Argument optional="optional" name="datetime">
51443               <Type type="Date" nullable="nullable"/>
51444             </Argument>
51445             <Argument optional="optional" name="timezone">
51446               <Type type="DOMString" nullable="nullable"/>
51447             </Argument>
51448           </ArgumentList>
51449         </ExtendedAttribute>
51450         <ExtendedAttribute name="Constructor">
51451           <webidl>   Constructor(long year, long month, long day, optional long? hours, optional long? minutes, optional long? seconds, optional long? milliseconds, optional DOMString? timezone)</webidl>
51452           <descriptive>
51453              <description>
51454               <ul>
51455                 <li>
51456 <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>
51457               </ul>
51458              </description>
51459           </descriptive>
51460           <ArgumentList>
51461             <Argument name="year">
51462               <Type type="long"/>
51463             </Argument>
51464             <Argument name="month">
51465               <Type type="long"/>
51466             </Argument>
51467             <Argument name="day">
51468               <Type type="long"/>
51469             </Argument>
51470             <Argument optional="optional" name="hours">
51471               <Type type="long" nullable="nullable"/>
51472             </Argument>
51473             <Argument optional="optional" name="minutes">
51474               <Type type="long" nullable="nullable"/>
51475             </Argument>
51476             <Argument optional="optional" name="seconds">
51477               <Type type="long" nullable="nullable"/>
51478             </Argument>
51479             <Argument optional="optional" name="milliseconds">
51480               <Type type="long" nullable="nullable"/>
51481             </Argument>
51482             <Argument optional="optional" name="timezone">
51483               <Type type="DOMString" nullable="nullable"/>
51484             </Argument>
51485           </ArgumentList>
51486         </ExtendedAttribute>
51487       </ExtendedAttributeList>
51488       <Operation name="getDate" id="::Time::TZDate::getDate">
51489         <webidl>    long getDate();</webidl>
51490         <descriptive>
51491             <brief>
51492  Returns the day of the month (from 1-31).
51493             </brief>
51494             <version>
51495  1.0
51496             </version>
51497         </descriptive>
51498         <Type type="long">
51499           <descriptive>
51500               <description><p>
51501  long The day of the month.
51502               </p></description>
51503           </descriptive>
51504         </Type>
51505         <ArgumentList/>
51506       </Operation>
51507       <Operation name="setDate" id="::Time::TZDate::setDate">
51508         <webidl>    void setDate(long date);</webidl>
51509         <descriptive>
51510             <brief>
51511  Sets the day of the month (from 1-31).
51512             </brief>
51513            <description>
51514             <p>
51515 If it tries to set the day bigger than the last day of the month or smaller than 1, it will be calculated automatically.
51516 For example, if TZDate's month is May and parameter is 32, it will be June 1.
51517             </p>
51518            </description>
51519             <version>
51520  1.0
51521             </version>
51522         </descriptive>
51523         <Type type="void"/>
51524         <ArgumentList>
51525           <Argument name="date">
51526             <descriptive>
51527                 <description><p>
51528  Date to set.
51529                 </p></description>
51530             </descriptive>
51531             <Type type="long"/>
51532           </Argument>
51533         </ArgumentList>
51534       </Operation>
51535       <Operation name="getDay" id="::Time::TZDate::getDay">
51536         <webidl>    long getDay();</webidl>
51537         <descriptive>
51538             <brief>
51539  Returns the day of the week (from 0-6).
51540             </brief>
51541             <version>
51542  1.0
51543             </version>
51544         </descriptive>
51545         <Type type="long">
51546           <descriptive>
51547               <description><p>
51548  long The day of the week.
51549               </p></description>
51550           </descriptive>
51551         </Type>
51552         <ArgumentList/>
51553       </Operation>
51554       <Operation name="getFullYear" id="::Time::TZDate::getFullYear">
51555         <webidl>    long getFullYear();</webidl>
51556         <descriptive>
51557             <brief>
51558  Returns the year.
51559             </brief>
51560            <description>
51561             <p>
51562 Positive values indicate AD(Anno Domini) years. 0 and negative values indicate BC(Before Christ) years.
51563 For example, 1 = AD 1, 0 = BC 1, -1 = BC 2.
51564             </p>
51565            </description>
51566             <version>
51567  1.0
51568             </version>
51569         </descriptive>
51570         <Type type="long">
51571           <descriptive>
51572               <description><p>
51573  long The year.
51574               </p></description>
51575           </descriptive>
51576         </Type>
51577         <ArgumentList/>
51578       </Operation>
51579       <Operation name="setFullYear" id="::Time::TZDate::setFullYear">
51580         <webidl>    void setFullYear(long year);</webidl>
51581         <descriptive>
51582             <brief>
51583  Sets the year.
51584             </brief>
51585             <version>
51586  1.0
51587             </version>
51588         </descriptive>
51589         <Type type="void"/>
51590         <ArgumentList>
51591           <Argument name="year">
51592             <descriptive>
51593                 <description><p>
51594  Year to set.
51595                 </p></description>
51596             </descriptive>
51597             <Type type="long"/>
51598           </Argument>
51599         </ArgumentList>
51600       </Operation>
51601       <Operation name="getHours" id="::Time::TZDate::getHours">
51602         <webidl>    long getHours();</webidl>
51603         <descriptive>
51604             <brief>
51605  Returns the hour (0-23).
51606             </brief>
51607             <version>
51608  1.0
51609             </version>
51610         </descriptive>
51611         <Type type="long">
51612           <descriptive>
51613               <description><p>
51614  long The hour.
51615               </p></description>
51616           </descriptive>
51617         </Type>
51618         <ArgumentList/>
51619       </Operation>
51620       <Operation name="setHours" id="::Time::TZDate::setHours">
51621         <webidl>    void setHours(long hours);</webidl>
51622         <descriptive>
51623             <brief>
51624  Sets the hour (0-23).
51625             </brief>
51626            <description>
51627             <p>
51628 If it tries to set the hour bigger than 23 or smaller than 0, it will be calculated automatically.
51629 For example, if hours is 24, it will set 0 and add to a date.
51630             </p>
51631            </description>
51632             <version>
51633  1.0
51634             </version>
51635         </descriptive>
51636         <Type type="void"/>
51637         <ArgumentList>
51638           <Argument name="hours">
51639             <descriptive>
51640                 <description><p>
51641  Hours to set.
51642                 </p></description>
51643             </descriptive>
51644             <Type type="long"/>
51645           </Argument>
51646         </ArgumentList>
51647       </Operation>
51648       <Operation name="getMilliseconds" id="::Time::TZDate::getMilliseconds">
51649         <webidl>    long getMilliseconds();</webidl>
51650         <descriptive>
51651             <brief>
51652  Returns the milliseconds (from 0-999).
51653             </brief>
51654             <version>
51655  1.0
51656             </version>
51657         </descriptive>
51658         <Type type="long">
51659           <descriptive>
51660               <description><p>
51661  long The milliseconds.
51662               </p></description>
51663           </descriptive>
51664         </Type>
51665         <ArgumentList/>
51666       </Operation>
51667       <Operation name="setMilliseconds" id="::Time::TZDate::setMilliseconds">
51668         <webidl>    void setMilliseconds(long ms);</webidl>
51669         <descriptive>
51670             <brief>
51671  Sets the milliseconds (from 0-999).
51672             </brief>
51673            <description>
51674             <p>
51675 If it tries to set the millisecond bigger than 999 or smaller than 0, it will be calculated automatically.
51676 For example, if ms is 1000, it will set 0 and add to a second.
51677             </p>
51678            </description>
51679             <version>
51680  1.0
51681             </version>
51682         </descriptive>
51683         <Type type="void"/>
51684         <ArgumentList>
51685           <Argument name="ms">
51686             <descriptive>
51687                 <description><p>
51688  Milliseconds to set.
51689                 </p></description>
51690             </descriptive>
51691             <Type type="long"/>
51692           </Argument>
51693         </ArgumentList>
51694       </Operation>
51695       <Operation name="getMinutes" id="::Time::TZDate::getMinutes">
51696         <webidl>    long getMinutes();</webidl>
51697         <descriptive>
51698             <brief>
51699  Returns the minutes (from 0-59).
51700             </brief>
51701             <version>
51702  1.0
51703             </version>
51704         </descriptive>
51705         <Type type="long">
51706           <descriptive>
51707               <description><p>
51708  long The minutes.
51709               </p></description>
51710           </descriptive>
51711         </Type>
51712         <ArgumentList/>
51713       </Operation>
51714       <Operation name="setMinutes" id="::Time::TZDate::setMinutes">
51715         <webidl>    void setMinutes(long minutes);</webidl>
51716         <descriptive>
51717             <brief>
51718  Sets the minutes.
51719             </brief>
51720            <description>
51721             <p>
51722 If it tries to set the minute bigger than 59 or smaller than 0, it will be calculated automatically.
51723 For example, if minutes is 60, it will set 0 and add to an hour.
51724             </p>
51725            </description>
51726             <version>
51727  1.0
51728             </version>
51729         </descriptive>
51730         <Type type="void"/>
51731         <ArgumentList>
51732           <Argument name="minutes">
51733             <descriptive>
51734                 <description><p>
51735  Minutes to set.
51736                 </p></description>
51737             </descriptive>
51738             <Type type="long"/>
51739           </Argument>
51740         </ArgumentList>
51741       </Operation>
51742       <Operation name="getMonth" id="::Time::TZDate::getMonth">
51743         <webidl>    long getMonth();</webidl>
51744         <descriptive>
51745             <brief>
51746  Returns the month (from 0-11).
51747             </brief>
51748             <version>
51749  1.0
51750             </version>
51751         </descriptive>
51752         <Type type="long">
51753           <descriptive>
51754               <description><p>
51755  long The month.
51756               </p></description>
51757           </descriptive>
51758         </Type>
51759         <ArgumentList/>
51760       </Operation>
51761       <Operation name="setMonth" id="::Time::TZDate::setMonth">
51762         <webidl>    void setMonth(long month);</webidl>
51763         <descriptive>
51764             <brief>
51765  Sets the month (from 0-11).
51766             </brief>
51767            <description>
51768             <p>
51769 If it tries to set the month bigger than 11 or smaller than 0, it will be calculated automatically.
51770 For example, if month is 12, it will set 0 and add to a year.
51771             </p>
51772            </description>
51773             <version>
51774  1.0
51775             </version>
51776         </descriptive>
51777         <Type type="void"/>
51778         <ArgumentList>
51779           <Argument name="month">
51780             <descriptive>
51781                 <description><p>
51782  Month to set.
51783                 </p></description>
51784             </descriptive>
51785             <Type type="long"/>
51786           </Argument>
51787         </ArgumentList>
51788       </Operation>
51789       <Operation name="getSeconds" id="::Time::TZDate::getSeconds">
51790         <webidl>    long getSeconds();</webidl>
51791         <descriptive>
51792             <brief>
51793  Returns the seconds (from 0-59).
51794             </brief>
51795             <version>
51796  1.0
51797             </version>
51798         </descriptive>
51799         <Type type="long">
51800           <descriptive>
51801               <description><p>
51802  long The seconds.
51803               </p></description>
51804           </descriptive>
51805         </Type>
51806         <ArgumentList/>
51807       </Operation>
51808       <Operation name="setSeconds" id="::Time::TZDate::setSeconds">
51809         <webidl>    void setSeconds(long seconds);</webidl>
51810         <descriptive>
51811             <brief>
51812  Sets the seconds (from 0-59).
51813             </brief>
51814            <description>
51815             <p>
51816 If it tries to set the second bigger than 59 or smaller than 0, it will be calculated automatically.
51817 For example, if seconds is 60, it will set 0 and add to a minute.
51818             </p>
51819            </description>
51820             <version>
51821  1.0
51822             </version>
51823         </descriptive>
51824         <Type type="void"/>
51825         <ArgumentList>
51826           <Argument name="seconds">
51827             <descriptive>
51828                 <description><p>
51829  Seconds to set.
51830                 </p></description>
51831             </descriptive>
51832             <Type type="long"/>
51833           </Argument>
51834         </ArgumentList>
51835       </Operation>
51836       <Operation name="getUTCDate" id="::Time::TZDate::getUTCDate">
51837         <webidl>    long getUTCDate();</webidl>
51838         <descriptive>
51839             <brief>
51840  Returns the day of the month, according to universal time (from 1-31).
51841             </brief>
51842             <version>
51843  1.0
51844             </version>
51845         </descriptive>
51846         <Type type="long">
51847           <descriptive>
51848               <description><p>
51849  long The day of the month, according to universal time.
51850               </p></description>
51851           </descriptive>
51852         </Type>
51853         <ArgumentList/>
51854       </Operation>
51855       <Operation name="setUTCDate" id="::Time::TZDate::setUTCDate">
51856         <webidl>    void setUTCDate(long date);</webidl>
51857         <descriptive>
51858             <brief>
51859  Sets the day of the month, according to universal time (from 1-31).
51860             </brief>
51861            <description>
51862             <p>
51863 If it tries to set the day bigger than the last day of the month or smaller than 1, it will be calculated automatically.
51864 For example, if TZDate's month is May and date is 32, it will be June 1.
51865             </p>
51866            </description>
51867             <version>
51868  1.0
51869             </version>
51870         </descriptive>
51871         <Type type="void"/>
51872         <ArgumentList>
51873           <Argument name="date">
51874             <descriptive>
51875                 <description><p>
51876  Date to set.
51877                 </p></description>
51878             </descriptive>
51879             <Type type="long"/>
51880           </Argument>
51881         </ArgumentList>
51882       </Operation>
51883       <Operation name="getUTCDay" id="::Time::TZDate::getUTCDay">
51884         <webidl>    long getUTCDay();</webidl>
51885         <descriptive>
51886             <brief>
51887  Returns the day of the week, according to universal time (from 0-6).
51888             </brief>
51889             <version>
51890  1.0
51891             </version>
51892         </descriptive>
51893         <Type type="long">
51894           <descriptive>
51895               <description><p>
51896  long The day of the week, according to universal time.
51897               </p></description>
51898           </descriptive>
51899         </Type>
51900         <ArgumentList/>
51901       </Operation>
51902       <Operation name="getUTCFullYear" id="::Time::TZDate::getUTCFullYear">
51903         <webidl>    long getUTCFullYear();</webidl>
51904         <descriptive>
51905             <brief>
51906  Returns the year, according to universal time.
51907             </brief>
51908            <description>
51909             <p>
51910 Positive values indicate AD(Anno Domini) years. 0 and negative values indicate BC(Before Christ) years.
51911 For example, 1 = AD 1, 0 = BC 1, -1 = BC 2.
51912             </p>
51913            </description>
51914             <version>
51915  1.0
51916             </version>
51917         </descriptive>
51918         <Type type="long">
51919           <descriptive>
51920               <description><p>
51921  long The year, according to universal time.
51922               </p></description>
51923           </descriptive>
51924         </Type>
51925         <ArgumentList/>
51926       </Operation>
51927       <Operation name="setUTCFullYear" id="::Time::TZDate::setUTCFullYear">
51928         <webidl>    void setUTCFullYear(long year);</webidl>
51929         <descriptive>
51930             <brief>
51931  Sets the year, according to universal time.
51932             </brief>
51933             <version>
51934  1.0
51935             </version>
51936         </descriptive>
51937         <Type type="void"/>
51938         <ArgumentList>
51939           <Argument name="year">
51940             <descriptive>
51941                 <description><p>
51942  Year to set.
51943                 </p></description>
51944             </descriptive>
51945             <Type type="long"/>
51946           </Argument>
51947         </ArgumentList>
51948       </Operation>
51949       <Operation name="getUTCHours" id="::Time::TZDate::getUTCHours">
51950         <webidl>    long getUTCHours();</webidl>
51951         <descriptive>
51952             <brief>
51953  Returns the hour, according to universal time (0-23).
51954             </brief>
51955             <version>
51956  1.0
51957             </version>
51958         </descriptive>
51959         <Type type="long">
51960           <descriptive>
51961               <description><p>
51962  long The hour, according to universal time.
51963               </p></description>
51964           </descriptive>
51965         </Type>
51966         <ArgumentList/>
51967       </Operation>
51968       <Operation name="setUTCHours" id="::Time::TZDate::setUTCHours">
51969         <webidl>    void setUTCHours(long hours);</webidl>
51970         <descriptive>
51971             <brief>
51972  Sets the hour, according to universal time (0-23).
51973             </brief>
51974            <description>
51975             <p>
51976 If it tries to set the hour bigger than 23 or smaller than 0, it will be calculated automatically.
51977 For example, if hours is 24, it will set 0 and add to a date.
51978             </p>
51979            </description>
51980             <version>
51981  1.0
51982             </version>
51983         </descriptive>
51984         <Type type="void"/>
51985         <ArgumentList>
51986           <Argument name="hours">
51987             <descriptive>
51988                 <description><p>
51989  Hours to set.
51990                 </p></description>
51991             </descriptive>
51992             <Type type="long"/>
51993           </Argument>
51994         </ArgumentList>
51995       </Operation>
51996       <Operation name="getUTCMilliseconds" id="::Time::TZDate::getUTCMilliseconds">
51997         <webidl>    long getUTCMilliseconds();</webidl>
51998         <descriptive>
51999             <brief>
52000  Returns the milliseconds, according to universal time (from 0-999).
52001             </brief>
52002             <version>
52003  1.0
52004             </version>
52005         </descriptive>
52006         <Type type="long">
52007           <descriptive>
52008               <description><p>
52009  long The milliseconds, according to universal time.
52010               </p></description>
52011           </descriptive>
52012         </Type>
52013         <ArgumentList/>
52014       </Operation>
52015       <Operation name="setUTCMilliseconds" id="::Time::TZDate::setUTCMilliseconds">
52016         <webidl>    void setUTCMilliseconds(long ms);</webidl>
52017         <descriptive>
52018             <brief>
52019  Sets the milliseconds, according to universal time (from 0-999).
52020             </brief>
52021            <description>
52022             <p>
52023 If it tries to set the millisecond bigger than 999 or smaller than 0, it will be calculated automatically.
52024 For example, if ms is 1000, it will set 0 and add to a second.
52025             </p>
52026            </description>
52027             <version>
52028  1.0
52029             </version>
52030         </descriptive>
52031         <Type type="void"/>
52032         <ArgumentList>
52033           <Argument name="ms">
52034             <descriptive>
52035                 <description><p>
52036  Milliseconds to set.
52037                 </p></description>
52038             </descriptive>
52039             <Type type="long"/>
52040           </Argument>
52041         </ArgumentList>
52042       </Operation>
52043       <Operation name="getUTCMinutes" id="::Time::TZDate::getUTCMinutes">
52044         <webidl>    long getUTCMinutes();</webidl>
52045         <descriptive>
52046             <brief>
52047  Returns the minutes, according to universal time (from 0-59).
52048             </brief>
52049             <version>
52050  1.0
52051             </version>
52052         </descriptive>
52053         <Type type="long">
52054           <descriptive>
52055               <description><p>
52056  long The minutes, according to universal time.
52057               </p></description>
52058           </descriptive>
52059         </Type>
52060         <ArgumentList/>
52061       </Operation>
52062       <Operation name="setUTCMinutes" id="::Time::TZDate::setUTCMinutes">
52063         <webidl>    void setUTCMinutes(long minutes);</webidl>
52064         <descriptive>
52065             <brief>
52066  Sets the minutes, according to universal time (from 0-59).
52067             </brief>
52068            <description>
52069             <p>
52070 If it tries to set the minute bigger than 59 or smaller than 0, it will be calculated automatically.
52071 For example, if minutes is 60, it will set 0 and add to an hour.
52072             </p>
52073            </description>
52074             <version>
52075  1.0
52076             </version>
52077         </descriptive>
52078         <Type type="void"/>
52079         <ArgumentList>
52080           <Argument name="minutes">
52081             <descriptive>
52082                 <description><p>
52083  Minutes to set.
52084                 </p></description>
52085             </descriptive>
52086             <Type type="long"/>
52087           </Argument>
52088         </ArgumentList>
52089       </Operation>
52090       <Operation name="getUTCMonth" id="::Time::TZDate::getUTCMonth">
52091         <webidl>    long getUTCMonth();</webidl>
52092         <descriptive>
52093             <brief>
52094  Returns the month, according to universal time (from 0-11).
52095             </brief>
52096             <version>
52097  1.0
52098             </version>
52099         </descriptive>
52100         <Type type="long">
52101           <descriptive>
52102               <description><p>
52103  long The month, according to universal time.
52104               </p></description>
52105           </descriptive>
52106         </Type>
52107         <ArgumentList/>
52108       </Operation>
52109       <Operation name="setUTCMonth" id="::Time::TZDate::setUTCMonth">
52110         <webidl>    void setUTCMonth(long month);</webidl>
52111         <descriptive>
52112             <brief>
52113  Sets the month, according to universal time (from 0-11).
52114             </brief>
52115            <description>
52116             <p>
52117 If it tries to set the month bigger than 11 or smaller than 0, it will be calculated automatically.
52118 For example, if month is 12, it will set 0 and add to a year.
52119             </p>
52120            </description>
52121             <version>
52122  1.0
52123             </version>
52124         </descriptive>
52125         <Type type="void"/>
52126         <ArgumentList>
52127           <Argument name="month">
52128             <descriptive>
52129                 <description><p>
52130  Month to set.
52131                 </p></description>
52132             </descriptive>
52133             <Type type="long"/>
52134           </Argument>
52135         </ArgumentList>
52136       </Operation>
52137       <Operation name="getUTCSeconds" id="::Time::TZDate::getUTCSeconds">
52138         <webidl>    long getUTCSeconds();</webidl>
52139         <descriptive>
52140             <brief>
52141  Returns the seconds, according to universal time (from 0-59).
52142             </brief>
52143             <version>
52144  1.0
52145             </version>
52146         </descriptive>
52147         <Type type="long">
52148           <descriptive>
52149               <description><p>
52150  long The seconds, according to universal time.
52151               </p></description>
52152           </descriptive>
52153         </Type>
52154         <ArgumentList/>
52155       </Operation>
52156       <Operation name="setUTCSeconds" id="::Time::TZDate::setUTCSeconds">
52157         <webidl>    void setUTCSeconds(long seconds);</webidl>
52158         <descriptive>
52159             <brief>
52160  Sets the seconds, according to universal time (from 0-59).
52161             </brief>
52162            <description>
52163             <p>
52164 If it tries to set the second bigger than 59 or smaller than 0, it will be calculated automatically.
52165 For example, if seconds is 60, it will set 0 and add to a minute.
52166             </p>
52167            </description>
52168             <version>
52169  1.0
52170             </version>
52171         </descriptive>
52172         <Type type="void"/>
52173         <ArgumentList>
52174           <Argument name="seconds">
52175             <descriptive>
52176                 <description><p>
52177  Seconds to set.
52178                 </p></description>
52179             </descriptive>
52180             <Type type="long"/>
52181           </Argument>
52182         </ArgumentList>
52183       </Operation>
52184       <Operation name="getTimezone" id="::Time::TZDate::getTimezone">
52185         <webidl>    DOMString getTimezone();</webidl>
52186         <descriptive>
52187             <brief>
52188  Returns timezone identifier.
52189             </brief>
52190            <description>
52191             <p>
52192 Zero or more slashes separate different components, with the most general
52193 descriptor first and the most specific one last. For example,
52194 'Europe/Berlin', 'America/Argentina/Buenos_Aires'.
52195             </p>
52196             <p>
52197 This attribute uniquely identifies the timezone.
52198             </p>
52199            </description>
52200             <version>
52201  1.0
52202             </version>
52203         </descriptive>
52204         <Type type="DOMString">
52205           <descriptive>
52206               <description><p>
52207  DOMString String timezone identifier. If TZDate is invalid, it will return 'Invalid Date'.
52208               </p></description>
52209           </descriptive>
52210         </Type>
52211         <ArgumentList/>
52212       </Operation>
52213       <Operation name="toTimezone" id="::Time::TZDate::toTimezone">
52214         <webidl>    <ref>TZDate</ref> toTimezone(DOMString tzid) raises(<ref>WebAPIException</ref>);</webidl>
52215         <descriptive>
52216             <brief>
52217  Returns a copy of the TZDate converted to a given time zone.
52218             </brief>
52219             <version>
52220  1.0
52221             </version>
52222         </descriptive>
52223         <Type name="TZDate">
52224           <descriptive>
52225               <description><p>
52226  TZDate New TZDate in given Timezone. 
52227               </p></description>
52228           </descriptive>
52229         </Type>
52230         <ArgumentList>
52231           <Argument name="tzid">
52232             <descriptive>
52233                 <description><p>
52234  Timezone identifier to set.
52235                 </p></description>
52236             </descriptive>
52237             <Type type="DOMString"/>
52238           </Argument>
52239         </ArgumentList>
52240         <Raises>
52241           <RaiseException name="WebAPIException">
52242             <descriptive>
52243                 <description><p>
52244  with error type TypeMismatchError, if the input parameter
52245 is not compatible with the expected type for that parameter.
52246                 </p></description>
52247                 <description><p>
52248  with error type InvalidValuesError, if the provided TZID
52249 is not recognized as a valid timezone identifier.
52250                 </p></description>
52251                 <description><p>
52252  with error type UnknownError, if the call failed due to an unknown error.
52253                 </p></description>
52254             </descriptive>
52255           </RaiseException>
52256         </Raises>
52257       </Operation>
52258       <Operation name="toLocalTimezone" id="::Time::TZDate::toLocalTimezone">
52259         <webidl>    <ref>TZDate</ref> toLocalTimezone() raises(<ref>WebAPIException</ref>);</webidl>
52260         <descriptive>
52261             <brief>
52262  Returns a copy of the TZDate converted to the local time zone.
52263             </brief>
52264             <version>
52265  1.0
52266             </version>
52267         </descriptive>
52268         <Type name="TZDate">
52269           <descriptive>
52270               <description><p>
52271  TZDate The new TZDate in local Timezone. 
52272               </p></description>
52273           </descriptive>
52274         </Type>
52275         <ArgumentList/>
52276         <Raises>
52277           <RaiseException name="WebAPIException">
52278             <descriptive>
52279                 <description><p>
52280  with error type UnknownError, if the call failed due to an unknown error.
52281                 </p></description>
52282             </descriptive>
52283           </RaiseException>
52284         </Raises>
52285       </Operation>
52286       <Operation name="toUTC" id="::Time::TZDate::toUTC">
52287         <webidl>    <ref>TZDate</ref> toUTC() raises(<ref>WebAPIException</ref>);</webidl>
52288         <descriptive>
52289             <brief>
52290  Returns a copy of the TZDate converted to Coordinated Universal Time (UTC).
52291             </brief>
52292             <version>
52293  1.0
52294             </version>
52295         </descriptive>
52296         <Type name="TZDate">
52297           <descriptive>
52298               <description><p>
52299  TZDate Date/Time in UTC.
52300               </p></description>
52301           </descriptive>
52302         </Type>
52303         <ArgumentList/>
52304         <Raises>
52305           <RaiseException name="WebAPIException">
52306             <descriptive>
52307                 <description><p>
52308  with error type UnknownError, if the call failed due to an unknown error.
52309                 </p></description>
52310             </descriptive>
52311           </RaiseException>
52312         </Raises>
52313       </Operation>
52314       <Operation name="difference" id="::Time::TZDate::difference">
52315         <webidl>    <ref>TimeDuration</ref> difference(<ref>TZDate</ref> other) raises(<ref>WebAPIException</ref>);</webidl>
52316         <descriptive>
52317             <brief>
52318  Calculates the difference with another TZDate object.
52319             </brief>
52320            <description>
52321             <p>
52322 Calculates the difference in time between <em>this</em> and other.
52323 This comparison method takes timezones into consideration for the comparison.
52324             </p>
52325             <p>
52326 The TimeDuration that is returned is effectively <em>this</em> - other.
52327 The return value is a duration in milliseconds both TZDate objects have a time component, in days, otherwise.
52328 The result value will be:
52329             </p>
52330             <ul>
52331               <li>
52332 Negative, if other is in the future              </li>
52333               <li>
52334 0 if the two date / times are equal              </li>
52335               <li>
52336 Positive, if other is in the past              </li>
52337             </ul>
52338            </description>
52339             <version>
52340  1.0
52341             </version>
52342         </descriptive>
52343         <Type name="TimeDuration">
52344           <descriptive>
52345               <description><p>
52346  TimeDuration Duration in milliseconds between the two date / time objects
52347 (or in days for comparison between dates with no time component).
52348               </p></description>
52349           </descriptive>
52350         </Type>
52351         <ArgumentList>
52352           <Argument name="other">
52353             <descriptive>
52354                 <description><p>
52355  Other Date/Time to compare to.
52356                 </p></description>
52357             </descriptive>
52358             <Type name="TZDate"/>
52359           </Argument>
52360         </ArgumentList>
52361         <Raises>
52362           <RaiseException name="WebAPIException">
52363             <descriptive>
52364                 <description><p>
52365  with error type TypeMismatchError, if the input parameter
52366 is not compatible with the expected type for that parameter.
52367                 </p></description>
52368                 <description><p>
52369  with error type UnknownError, if the call failed due to an unknown error.
52370                 </p></description>
52371             </descriptive>
52372           </RaiseException>
52373         </Raises>
52374       </Operation>
52375       <Operation name="equalsTo" id="::Time::TZDate::equalsTo">
52376         <webidl>    boolean equalsTo(<ref>TZDate</ref> other) raises(<ref>WebAPIException</ref>);</webidl>
52377         <descriptive>
52378             <brief>
52379  Checks if the TZDate is equal to another.
52380             </brief>
52381            <description>
52382             <p>
52383 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.
52384             </p>
52385            </description>
52386             <version>
52387  1.0
52388             </version>
52389         </descriptive>
52390         <Type type="boolean">
52391           <descriptive>
52392               <description><p>
52393  boolean <em>true</em> if the 2 date/times are the same.
52394               </p></description>
52395           </descriptive>
52396         </Type>
52397         <ArgumentList>
52398           <Argument name="other">
52399             <descriptive>
52400                 <description><p>
52401  Other Date/Time to compare to.
52402                 </p></description>
52403             </descriptive>
52404             <Type name="TZDate"/>
52405           </Argument>
52406         </ArgumentList>
52407         <Raises>
52408           <RaiseException name="WebAPIException">
52409             <descriptive>
52410                 <description><p>
52411  with error type TypeMismatchError, if the input parameter
52412 is not compatible with the expected type for that parameter.
52413                 </p></description>
52414                 <description><p>
52415  with error type UnknownError, if the call failed due to an unknown error.
52416                 </p></description>
52417             </descriptive>
52418           </RaiseException>
52419         </Raises>
52420       </Operation>
52421       <Operation name="earlierThan" id="::Time::TZDate::earlierThan">
52422         <webidl>    boolean earlierThan(<ref>TZDate</ref> other) raises(<ref>WebAPIException</ref>);</webidl>
52423         <descriptive>
52424             <brief>
52425  Checks if the TZDate is earlier than another.
52426             </brief>
52427            <description>
52428             <p>
52429 This method takes the timezones into consideration.
52430             </p>
52431            </description>
52432             <version>
52433  1.0
52434             </version>
52435         </descriptive>
52436         <Type type="boolean">
52437           <descriptive>
52438               <description><p>
52439  boolean <em>true</em>, if the Date/Time is earlier than the one passed in argument.
52440               </p></description>
52441           </descriptive>
52442         </Type>
52443         <ArgumentList>
52444           <Argument name="other">
52445             <descriptive>
52446                 <description><p>
52447  Other Date/Time to compare to.
52448                 </p></description>
52449             </descriptive>
52450             <Type name="TZDate"/>
52451           </Argument>
52452         </ArgumentList>
52453         <Raises>
52454           <RaiseException name="WebAPIException">
52455             <descriptive>
52456                 <description><p>
52457  with error type TypeMismatchError, if the input parameter
52458 is not compatible with the expected type for that parameter.
52459                 </p></description>
52460                 <description><p>
52461  with error type UnknownError, if the call failed due to an unknown error.
52462                 </p></description>
52463             </descriptive>
52464           </RaiseException>
52465         </Raises>
52466       </Operation>
52467       <Operation name="laterThan" id="::Time::TZDate::laterThan">
52468         <webidl>    boolean laterThan(<ref>TZDate</ref> other) raises(<ref>WebAPIException</ref>);</webidl>
52469         <descriptive>
52470             <brief>
52471  Checks if the TZDate is later than another.
52472             </brief>
52473            <description>
52474             <p>
52475 This method takes the timezones into consideration.
52476             </p>
52477            </description>
52478             <version>
52479  1.0
52480             </version>
52481         </descriptive>
52482         <Type type="boolean">
52483           <descriptive>
52484               <description><p>
52485  boolean <em>true</em>, if the Date/Time is later than the one passed in argument.
52486               </p></description>
52487           </descriptive>
52488         </Type>
52489         <ArgumentList>
52490           <Argument name="other">
52491             <descriptive>
52492                 <description><p>
52493  Other Date/Time to compare to.
52494                 </p></description>
52495             </descriptive>
52496             <Type name="TZDate"/>
52497           </Argument>
52498         </ArgumentList>
52499         <Raises>
52500           <RaiseException name="WebAPIException">
52501             <descriptive>
52502                 <description><p>
52503  with error type TypeMismatchError, if the input parameter
52504 is not compatible with the expected type for that parameter.
52505                 </p></description>
52506                 <description><p>
52507  with error type UnknownError, if the call failed due to an unknown error.
52508                 </p></description>
52509             </descriptive>
52510           </RaiseException>
52511         </Raises>
52512       </Operation>
52513       <Operation name="addDuration" id="::Time::TZDate::addDuration">
52514         <webidl>    <ref>TZDate</ref> addDuration(<ref>TimeDuration</ref> duration) raises(<ref>WebAPIException</ref>);</webidl>
52515         <descriptive>
52516             <brief>
52517  Returns a new date by adding a duration to the current TZDate object.
52518             </brief>
52519            <description>
52520             <p>
52521 If the length of duration is negative, the new date / time will be
52522 earlier than it used to.
52523             </p>
52524             <p>
52525 Note that calling this method does not alter the current object.
52526             </p>
52527            </description>
52528             <version>
52529  1.0
52530             </version>
52531             <Code> var now = tizen.time.getCurrentDateTime();
52532  var in_one_week = now.addDuration(new tizen.TimeDuration(7, &quot;DAYS&quot;));
52533  </Code>
52534         </descriptive>
52535         <Type name="TZDate">
52536           <descriptive>
52537               <description><p>
52538  TZDate The new TZDate by adding a duration.
52539               </p></description>
52540           </descriptive>
52541         </Type>
52542         <ArgumentList>
52543           <Argument name="duration">
52544             <descriptive>
52545                 <description><p>
52546  TimeDuration to add.  
52547                 </p></description>
52548             </descriptive>
52549             <Type name="TimeDuration"/>
52550           </Argument>
52551         </ArgumentList>
52552         <Raises>
52553           <RaiseException name="WebAPIException">
52554             <descriptive>
52555                 <description><p>
52556  with error type TypeMismatchError, if the input parameter
52557 is not compatible with the expected type for that parameter. 
52558                 </p></description>
52559                 <description><p>
52560  with error type UnknownError, if the call failed due to an unknown error.
52561                 </p></description>
52562             </descriptive>
52563           </RaiseException>
52564         </Raises>
52565       </Operation>
52566       <Operation name="toLocaleDateString" id="::Time::TZDate::toLocaleDateString">
52567         <webidl>    DOMString toLocaleDateString();</webidl>
52568         <descriptive>
52569             <brief>
52570  Returns the date portion of a TZDate object as a string, using locale conventions.
52571             </brief>
52572             <version>
52573  1.0
52574             </version>
52575         </descriptive>
52576         <Type type="DOMString">
52577           <descriptive>
52578               <description><p>
52579  DOMString Date portion of the TZDate object as a string, using locale conventions. If TZDate is invalid, it will return 'Invalid Date'.
52580               </p></description>
52581           </descriptive>
52582         </Type>
52583         <ArgumentList/>
52584       </Operation>
52585       <Operation name="toLocaleTimeString" id="::Time::TZDate::toLocaleTimeString">
52586         <webidl>    DOMString toLocaleTimeString();</webidl>
52587         <descriptive>
52588             <brief>
52589  Returns the time portion of a TZDate object as a string, using locale conventions.
52590             </brief>
52591             <version>
52592  1.0
52593             </version>
52594         </descriptive>
52595         <Type type="DOMString">
52596           <descriptive>
52597               <description><p>
52598  DOMString Time portion of the TZDate object as a string, using locale conventions. If TZDate is invalid, it will return 'Invalid Date'.
52599               </p></description>
52600           </descriptive>
52601         </Type>
52602         <ArgumentList/>
52603       </Operation>
52604       <Operation name="toLocaleString" id="::Time::TZDate::toLocaleString">
52605         <webidl>    DOMString toLocaleString();</webidl>
52606         <descriptive>
52607             <brief>
52608  Converts a TZDate object to a string, using locale conventions.
52609             </brief>
52610             <version>
52611  1.0
52612             </version>
52613         </descriptive>
52614         <Type type="DOMString">
52615           <descriptive>
52616               <description><p>
52617  DOMString String representation of the TZDate object, using locale conventions. If TZDate is invalid, it will return 'Invalid Date'.
52618               </p></description>
52619           </descriptive>
52620         </Type>
52621         <ArgumentList/>
52622       </Operation>
52623       <Operation name="toDateString" id="::Time::TZDate::toDateString">
52624         <webidl>    DOMString toDateString();</webidl>
52625         <descriptive>
52626             <brief>
52627  Returns the date portion of a TZDate object as a string.
52628             </brief>
52629             <version>
52630  1.0
52631             </version>
52632         </descriptive>
52633         <Type type="DOMString">
52634           <descriptive>
52635               <description><p>
52636  DOMString Date portion of the TZDate object as a string. If TZDate is invalid, it will return 'Invalid Date'.
52637               </p></description>
52638           </descriptive>
52639         </Type>
52640         <ArgumentList/>
52641       </Operation>
52642       <Operation name="toTimeString" id="::Time::TZDate::toTimeString">
52643         <webidl>    DOMString toTimeString();</webidl>
52644         <descriptive>
52645             <brief>
52646  Returns the time portion of a TZDate object as a string.
52647             </brief>
52648             <version>
52649  1.0
52650             </version>
52651         </descriptive>
52652         <Type type="DOMString">
52653           <descriptive>
52654               <description><p>
52655  DOMString Time portion of the TZDate object as a string. If TZDate is invalid, it will return 'Invalid Date'.
52656               </p></description>
52657           </descriptive>
52658         </Type>
52659         <ArgumentList/>
52660       </Operation>
52661       <Operation name="toString" id="::Time::TZDate::toString">
52662         <webidl>    DOMString toString();</webidl>
52663         <descriptive>
52664             <brief>
52665  Converts a TZDate object to a string.
52666             </brief>
52667             <version>
52668  1.0
52669             </version>
52670         </descriptive>
52671         <Type type="DOMString">
52672           <descriptive>
52673               <description><p>
52674  DOMString String representation of the TZDate object. If TZDate is invalid, it will return 'Invalid Date'.
52675               </p></description>
52676           </descriptive>
52677         </Type>
52678         <ArgumentList/>
52679       </Operation>
52680       <Operation name="getTimezoneAbbreviation" id="::Time::TZDate::getTimezoneAbbreviation">
52681         <webidl>    DOMString getTimezoneAbbreviation() raises(<ref>WebAPIException</ref>);</webidl>
52682         <descriptive>
52683             <brief>
52684  Determines the time zone abbreviation to be used at a particular date in the time zone.
52685             </brief>
52686            <description>
52687             <p>
52688 For example, in Toronto this is currently &quot;EST&quot; during the winter months and &quot;EDT&quot; during the
52689 summer months when daylight savings time is in effect.
52690             </p>
52691            </description>
52692             <version>
52693  1.0
52694             </version>
52695             <deprecated>
52696  Some timezones return &quot;GMT[+-]hh:mm&quot;. It is inconsistent.
52697             </deprecated>
52698         </descriptive>
52699         <Type type="DOMString">
52700           <descriptive>
52701               <description><p>
52702  DOMString Abbreviation of the time zone (such as &quot;EST&quot;). If TZDate is invalid, it will return 'Invalid Date'.
52703               </p></description>
52704           </descriptive>
52705         </Type>
52706         <ArgumentList/>
52707         <Raises>
52708           <RaiseException name="WebAPIException">
52709             <descriptive>
52710                 <description><p>
52711  with error type UnknownError, if the call failed due to an unknown error.
52712                 </p></description>
52713             </descriptive>
52714           </RaiseException>
52715         </Raises>
52716       </Operation>
52717       <Operation name="secondsFromUTC" id="::Time::TZDate::secondsFromUTC">
52718         <webidl>    long secondsFromUTC() raises(<ref>WebAPIException</ref>);</webidl>
52719         <descriptive>
52720             <brief>
52721  Gets the number of seconds from Coordinated Universal Time (UTC) offset for the timezone.
52722             </brief>
52723            <description>
52724             <p>
52725 Returns the offset (in seconds) from UTC of the timezone, accounting for daylight
52726 savings if in effect in the timezone. For example, if time zone is GMT+8, it will return -32,400.
52727             </p>
52728            </description>
52729             <version>
52730  1.0
52731             </version>
52732             <Code> var offset = tizen.time.getCurrentDateTime().secondsFromUTC();
52733  var myDate = new Date();
52734  var exp_offset = myDate.getTimezoneOffset()*60;
52735  //offset is equals to exp_offset.
52736  </Code>
52737         </descriptive>
52738         <Type type="long">
52739           <descriptive>
52740               <description><p>
52741  long Offset from UTC in seconds.
52742               </p></description>
52743           </descriptive>
52744         </Type>
52745         <ArgumentList/>
52746         <Raises>
52747           <RaiseException name="WebAPIException">
52748             <descriptive>
52749                 <description><p>
52750  with error type UnknownError, if the call failed due to an unknown error.
52751                 </p></description>
52752             </descriptive>
52753           </RaiseException>
52754         </Raises>
52755       </Operation>
52756       <Operation name="isDST" id="::Time::TZDate::isDST">
52757         <webidl>    boolean isDST() raises(<ref>WebAPIException</ref>);</webidl>
52758         <descriptive>
52759             <brief>
52760  Indicates if Daylight Saving Time(DST) is active for this TZDate.
52761             </brief>
52762            <description>
52763             <p>
52764 Indicates if daylight savings are in effect for the time zone and instant
52765 identified by the TZDate object.
52766             </p>
52767            </description>
52768             <version>
52769  1.0
52770             </version>
52771         </descriptive>
52772         <Type type="boolean">
52773           <descriptive>
52774               <description><p>
52775  boolean Flag indicating if daylight saving are in effect.
52776               </p></description>
52777           </descriptive>
52778         </Type>
52779         <ArgumentList/>
52780         <Raises>
52781           <RaiseException name="WebAPIException">
52782             <descriptive>
52783                 <description><p>
52784  with error type UnknownError, if the call failed due to an unknown error.
52785                 </p></description>
52786             </descriptive>
52787           </RaiseException>
52788         </Raises>
52789       </Operation>
52790       <Operation name="getPreviousDSTTransition" id="::Time::TZDate::getPreviousDSTTransition">
52791         <webidl>    <ref>TZDate</ref>? getPreviousDSTTransition() raises(<ref>WebAPIException</ref>);</webidl>
52792         <descriptive>
52793             <brief>
52794  Returns the date of the previous daylight saving time transition for the timezone.
52795             </brief>
52796             <version>
52797  1.0
52798             </version>
52799         </descriptive>
52800         <Type name="TZDate" nullable="nullable">
52801           <descriptive>
52802               <description><p>
52803  TZDate The date of the previous daylight saving transition (before the instant identified by the TZDate).
52804               </p></description>
52805           </descriptive>
52806         </Type>
52807         <ArgumentList/>
52808         <Raises>
52809           <RaiseException name="WebAPIException">
52810             <descriptive>
52811                 <description><p>
52812  with error type UnknownError, if the call failed due to an unknown error.
52813                 </p></description>
52814             </descriptive>
52815           </RaiseException>
52816         </Raises>
52817       </Operation>
52818       <Operation name="getNextDSTTransition" id="::Time::TZDate::getNextDSTTransition">
52819         <webidl>    <ref>TZDate</ref>? getNextDSTTransition() raises(<ref>WebAPIException</ref>);</webidl>
52820         <descriptive>
52821             <brief>
52822  Returns the date of the next daylight saving time transition for the timezone.
52823             </brief>
52824             <version>
52825  1.0
52826             </version>
52827         </descriptive>
52828         <Type name="TZDate" nullable="nullable">
52829           <descriptive>
52830               <description><p>
52831  TZDate The date of the next daylight saving transition (after the instant identified by the TZDate).
52832               </p></description>
52833           </descriptive>
52834         </Type>
52835         <ArgumentList/>
52836         <Raises>
52837           <RaiseException name="WebAPIException">
52838             <descriptive>
52839                 <description><p>
52840  with error type UnknownError, if the call failed due to an unknown error.
52841                 </p></description>
52842             </descriptive>
52843           </RaiseException>
52844         </Raises>
52845       </Operation>
52846     </Interface>
52847     <Interface name="TimeDuration" id="::Time::TimeDuration">
52848       <webidl>  [Constructor(long long length, optional <ref>TimeDurationUnit</ref>? unit)]
52849   interface TimeDuration
52850   {   
52851     attribute long long length;
52852     
52853     attribute <ref>TimeDurationUnit</ref> unit;
52854     
52855     <ref>TimeDuration</ref> difference(<ref>TimeDuration</ref> other) raises(<ref>WebAPIException</ref>);
52856     
52857     boolean equalsTo(<ref>TimeDuration</ref> other) raises(<ref>WebAPIException</ref>);
52858     
52859     boolean lessThan(<ref>TimeDuration</ref> other) raises(<ref>WebAPIException</ref>);
52860     
52861     boolean greaterThan(<ref>TimeDuration</ref> other) raises(<ref>WebAPIException</ref>);
52862   };</webidl>
52863       <descriptive>
52864           <brief>
52865  The TimeDuration object that contains the length and its associated 
52866 time unit.
52867           </brief>
52868           <version>
52869  1.0
52870           </version>
52871           <Code> var now = tizen.time.getCurrentDateTime();
52872  var tomorrow = now.addDuration(new tizen.TimeDuration(1, &quot;DAYS&quot;)); // Becomes tomorrow, same time.
52873  </Code>
52874       </descriptive>
52875       <ExtendedAttributeList>
52876         <ExtendedAttribute name="Constructor">
52877           <webidl>Constructor(long long length, optional <ref>TimeDurationUnit</ref>? unit)</webidl>
52878           <ArgumentList>
52879             <Argument name="length">
52880               <Type type="long long"/>
52881             </Argument>
52882             <Argument optional="optional" name="unit">
52883               <Type name="TimeDurationUnit" nullable="nullable"/>
52884             </Argument>
52885           </ArgumentList>
52886         </ExtendedAttribute>
52887       </ExtendedAttributeList>
52888       <Attribute name="length" id="::Time::TimeDuration::length">
52889         <webidl>    attribute long long length;</webidl>
52890         <descriptive>
52891             <brief>
52892  Duration length.
52893             </brief>
52894            <description>
52895             <p>
52896 The unit of the duration length (milliseconds, seconds, minutes, hours, or days)
52897 is determined by the duration unit attribute.
52898             </p>
52899            </description>
52900             <version>
52901  1.0
52902             </version>
52903         </descriptive>
52904         <Type type="long long"/>
52905       </Attribute>
52906       <Attribute name="unit" id="::Time::TimeDuration::unit">
52907         <webidl>    attribute <ref>TimeDurationUnit</ref> unit;</webidl>
52908         <descriptive>
52909             <brief>
52910  Duration unit (milliseconds, seconds, minutes, hours, or days).
52911             </brief>
52912            <description>
52913             <p>
52914 The default value is &quot;MSECS&quot; (milliseconds unit).
52915             </p>
52916            </description>
52917             <version>
52918  1.0
52919             </version>
52920         </descriptive>
52921         <Type name="TimeDurationUnit"/>
52922       </Attribute>
52923       <Operation name="difference" id="::Time::TimeDuration::difference">
52924         <webidl>    <ref>TimeDuration</ref> difference(<ref>TimeDuration</ref> other) raises(<ref>WebAPIException</ref>);</webidl>
52925         <descriptive>
52926             <brief>
52927  Calculates the difference between two TimeDuration objects.
52928             </brief>
52929            <description>
52930             <p>
52931 Calculates the difference in time between <em>this</em> and <em>other</em>.
52932 The TimeDuration that is returned is effectively <em>first</em> - <em>other</em> (that is: positive if the first parameter is larger).
52933             </p>
52934             <p>
52935 The returned TimeDuration is the biggest possible unit without losing the precision.
52936             </p>
52937            </description>
52938             <version>
52939  1.0
52940             </version>
52941             <Code> // Compute event1.duration - event2.duration
52942  var diff = event1.duration.difference(event2.duration);
52943  if (diff.length > 0)
52944    console.log(&quot;event 1's duration is longer than event 2's&quot;);
52945  else if (diff.length == 0)
52946    console.log(&quot;event 1's duration is as long as event 2's&quot;);
52947  else
52948    console.log(&quot;event 1's duration is shorter than event 2's&quot;);
52949  </Code>
52950         </descriptive>
52951         <Type name="TimeDuration">
52952           <descriptive>
52953               <description><p>
52954  New TimeDuration object corresponding to the result of <em>this</em> - <em>other</em>.
52955               </p></description>
52956           </descriptive>
52957         </Type>
52958         <ArgumentList>
52959           <Argument name="other">
52960             <descriptive>
52961                 <description><p>
52962  Other TimeDuration object to compare to.
52963                 </p></description>
52964             </descriptive>
52965             <Type name="TimeDuration"/>
52966           </Argument>
52967         </ArgumentList>
52968         <Raises>
52969           <RaiseException name="WebAPIException">
52970             <descriptive>
52971                 <description><p>
52972  with error type TypeMismatchError, if the input parameter
52973 is not compatible with the expected type for that parameter.
52974                 </p></description>
52975                 <description><p>
52976  with error type UnknownError, if the call failed due to an unknown error.
52977                 </p></description>
52978             </descriptive>
52979           </RaiseException>
52980         </Raises>
52981       </Operation>
52982       <Operation name="equalsTo" id="::Time::TimeDuration::equalsTo">
52983         <webidl>    boolean equalsTo(<ref>TimeDuration</ref> other) raises(<ref>WebAPIException</ref>);</webidl>
52984         <descriptive>
52985             <brief>
52986  Checks if the TimeDuration is equal to another.
52987             </brief>
52988            <description>
52989             <p>
52990 This method takes the units into consideration and will return true
52991 if the two TimeDuration objects represent the same duration in different units.
52992             </p>
52993            </description>
52994             <version>
52995  1.0
52996             </version>
52997             <Code> var d1 = new tizen.TimeDuration(60, &quot;MINS&quot;); // 60 minutes
52998  var d2 = new tizen.TimeDuration(1, &quot;HOURS&quot;); // 1 hour
52999  var ret = d1.equalsTo(d2); // Returns true
53000  </Code>
53001         </descriptive>
53002         <Type type="boolean">
53003           <descriptive>
53004               <description><p>
53005  boolean <em>true</em> if the two TimeDuration object represent the same duration.
53006               </p></description>
53007           </descriptive>
53008         </Type>
53009         <ArgumentList>
53010           <Argument name="other">
53011             <descriptive>
53012                 <description><p>
53013  Other TimeDuration object to compare to.
53014                 </p></description>
53015             </descriptive>
53016             <Type name="TimeDuration"/>
53017           </Argument>
53018         </ArgumentList>
53019         <Raises>
53020           <RaiseException name="WebAPIException">
53021             <descriptive>
53022                 <description><p>
53023  with error type TypeMismatchError, if the input parameter
53024 is not compatible with the expected type for that parameter.
53025                 </p></description>
53026                 <description><p>
53027  with error type UnknownError, if the call failed due to an unknown error.
53028                 </p></description>
53029             </descriptive>
53030           </RaiseException>
53031         </Raises>
53032       </Operation>
53033       <Operation name="lessThan" id="::Time::TimeDuration::lessThan">
53034         <webidl>    boolean lessThan(<ref>TimeDuration</ref> other) raises(<ref>WebAPIException</ref>);</webidl>
53035         <descriptive>
53036             <brief>
53037  Checks if the TimeDuration is lower than another.
53038             </brief>
53039            <description>
53040             <p>
53041 This method takes the units into consideration when doing the comparison.
53042             </p>
53043            </description>
53044             <version>
53045  1.0
53046             </version>
53047             <Code> var d1 = new tizen.TimeDuration(1, &quot;HOURS&quot;); // 1 hour
53048  var d2 = new tizen.TimeDuration(120, &quot;MINS&quot;); // 120 minutes
53049  var ret = d1.lessThan(d2); // Returns true
53050  </Code>
53051         </descriptive>
53052         <Type type="boolean">
53053           <descriptive>
53054               <description><p>
53055  boolean <em>true</em> if the TimeDuration is less than <em>other</em>.
53056               </p></description>
53057           </descriptive>
53058         </Type>
53059         <ArgumentList>
53060           <Argument name="other">
53061             <descriptive>
53062                 <description><p>
53063  Other TimeDuration object to compare to.
53064                 </p></description>
53065             </descriptive>
53066             <Type name="TimeDuration"/>
53067           </Argument>
53068         </ArgumentList>
53069         <Raises>
53070           <RaiseException name="WebAPIException">
53071             <descriptive>
53072                 <description><p>
53073  with error type TypeMismatchError, if the input parameter is not compatible with the expected type for that parameter.
53074                 </p></description>
53075                 <description><p>
53076  with error type UnknownError, if the call failed due to an unknown error.
53077                 </p></description>
53078             </descriptive>
53079           </RaiseException>
53080         </Raises>
53081       </Operation>
53082       <Operation name="greaterThan" id="::Time::TimeDuration::greaterThan">
53083         <webidl>    boolean greaterThan(<ref>TimeDuration</ref> other) raises(<ref>WebAPIException</ref>);</webidl>
53084         <descriptive>
53085             <brief>
53086  Checks if the TimeDuration is greater than another.
53087             </brief>
53088            <description>
53089             <p>
53090 This method takes the units into consideration when doing the comparison.
53091             </p>
53092            </description>
53093             <version>
53094  1.0
53095             </version>
53096             <Code> var d1 = new tizen.TimeDuration(120, &quot;MINS&quot;); // 120 minutes
53097  var d2 = new tizen.TimeDuration(1, &quot;HOURS&quot;); // 1 hour
53098  var ret = d1.greaterThan(d2); // Returns true
53099  </Code>
53100         </descriptive>
53101         <Type type="boolean">
53102           <descriptive>
53103               <description><p>
53104  boolean <em>true</em> if the TimeDuration is greater than <em>other</em>.
53105               </p></description>
53106           </descriptive>
53107         </Type>
53108         <ArgumentList>
53109           <Argument name="other">
53110             <descriptive>
53111                 <description><p>
53112  Other TimeDuration object to compare to.
53113                 </p></description>
53114             </descriptive>
53115             <Type name="TimeDuration"/>
53116           </Argument>
53117         </ArgumentList>
53118         <Raises>
53119           <RaiseException name="WebAPIException">
53120             <descriptive>
53121                 <description><p>
53122  with error type TypeMismatchError, if the input parameter
53123 is not compatible with the expected type for that parameter.
53124                 </p></description>
53125                 <description><p>
53126  with error type UnknownError, if the call failed due to an unknown error.
53127                 </p></description>
53128             </descriptive>
53129           </RaiseException>
53130         </Raises>
53131       </Operation>
53132     </Interface>
53133   </Module>
53134   <Module name="Tizen" id="::Tizen">
53135     <webidl>module Tizen {
53136   enum FilterMatchFlag { &quot;EXACTLY&quot;, &quot;FULLSTRING&quot;, &quot;CONTAINS&quot;, &quot;STARTSWITH&quot;, &quot;ENDSWITH&quot;, &quot;EXISTS&quot; };
53137
53138   enum SortModeOrder { &quot;ASC&quot;, &quot;DESC&quot; };
53139
53140   enum CompositeFilterType { &quot;UNION&quot;, &quot;INTERSECTION&quot; };
53141
53142   [NoInterfaceObject] interface TizenObject {
53143     readonly attribute <ref>Tizen</ref> tizen;
53144   };
53145   <ref>Window</ref> implements <ref>TizenObject</ref>;
53146
53147   [NoInterfaceObject] interface Tizen {
53148   };
53149
53150   [NoInterfaceObject] interface AbstractFilter {
53151   };
53152
53153   [Constructor(DOMString attributeName, optional <ref>FilterMatchFlag</ref>? matchFlag, optional any matchValue)]
53154   interface AttributeFilter : <ref>AbstractFilter</ref> {
53155     attribute DOMString attributeName;
53156
53157     attribute <ref>FilterMatchFlag</ref> matchFlag setraises(<ref>WebAPIException</ref>);
53158
53159     attribute any matchValue;
53160   };
53161
53162   [Constructor(DOMString attributeName, optional any initialValue, optional any endValue)]
53163   interface AttributeRangeFilter : <ref>AbstractFilter</ref> {
53164     attribute DOMString attributeName;
53165
53166     attribute any initialValue;
53167
53168     attribute any endValue;
53169   };
53170
53171   [Constructor(<ref>CompositeFilterType</ref> type, optional <ref>AbstractFilter</ref>[]? filters)]
53172   interface CompositeFilter : <ref>AbstractFilter</ref> {
53173
53174     attribute <ref>CompositeFilterType</ref> type;
53175
53176     attribute <ref>AbstractFilter</ref>[] filters;
53177   };
53178
53179   [Constructor(DOMString attributeName, optional <ref>SortModeOrder</ref>? order)]
53180   interface SortMode {
53181     attribute DOMString attributeName;
53182
53183     attribute <ref>SortModeOrder</ref> order setraises(<ref>WebAPIException</ref>);
53184   };
53185
53186   [Constructor(double latitude, double longitude)]
53187   interface SimpleCoordinates {
53188     attribute double latitude setraises(<ref>WebAPIException</ref>);
53189
53190     attribute double longitude setraises(<ref>WebAPIException</ref>);
53191   };
53192
53193   [NoInterfaceObject]
53194   interface WebAPIException {
53195     readonly attribute unsigned short code;
53196
53197     readonly attribute DOMString name;
53198
53199     readonly attribute DOMString message;
53200
53201     const unsigned short INDEX_SIZE_ERR = 1;
53202     const unsigned short DOMSTRING_SIZE_ERR = 2; 
53203     const unsigned short HIERARCHY_REQUEST_ERR = 3;
53204     const unsigned short WRONG_DOCUMENT_ERR = 4;
53205     const unsigned short INVALID_CHARACTER_ERR = 5;
53206     const unsigned short NO_DATA_ALLOWED_ERR = 6; 
53207     const unsigned short NO_MODIFICATION_ALLOWED_ERR = 7;
53208     const unsigned short NOT_FOUND_ERR = 8;
53209     const unsigned short NOT_SUPPORTED_ERR = 9;
53210     const unsigned short INUSE_ATTRIBUTE_ERR = 10; 
53211     const unsigned short INVALID_STATE_ERR = 11;
53212     const unsigned short SYNTAX_ERR = 12;
53213     const unsigned short INVALID_MODIFICATION_ERR = 13;
53214     const unsigned short NAMESPACE_ERR = 14;
53215     const unsigned short INVALID_ACCESS_ERR = 15;
53216     const unsigned short VALIDATION_ERR = 16; 
53217     const unsigned short TYPE_MISMATCH_ERR = 17;
53218     const unsigned short SECURITY_ERR = 18;
53219     const unsigned short NETWORK_ERR = 19;
53220     const unsigned short ABORT_ERR = 20;
53221     const unsigned short URL_MISMATCH_ERR = 21;
53222     const unsigned short QUOTA_EXCEEDED_ERR = 22;
53223     const unsigned short TIMEOUT_ERR = 23;
53224     const unsigned short INVALID_NODE_TYPE_ERR = 24;
53225     const unsigned short DATA_CLONE_ERR = 25;
53226   };
53227
53228   [NoInterfaceObject]
53229   interface WebAPIError {
53230     readonly attribute unsigned short code;
53231
53232     readonly attribute DOMString name;
53233
53234     readonly attribute DOMString message;
53235   };
53236
53237   [Callback=FunctionOnly, NoInterfaceObject]
53238   interface SuccessCallback {
53239     void onsuccess ();
53240   };
53241
53242   [Callback=FunctionOnly, NoInterfaceObject]
53243   interface ErrorCallback {
53244
53245     void onerror (<ref>WebAPIError</ref> error);
53246   };
53247 };</webidl>
53248     <descriptive>
53249         <brief>
53250  This API provides common Tizen functionality.
53251         </brief>
53252        <description>
53253         <p>
53254 The API provides the basic definitions that are used in the Tizen Web Device API.
53255 These include generic callbacks that are invoked when the operations succeed or fail,
53256 WebAPIError and WebAPIException that gives information of the platform's error and
53257 filters interfaces that are used to make query for searching.
53258         </p>
53259         <p>
53260 Additionally, this API specifies the location in the ECMAScript hierarchy in which
53261 the Tizen Web Device API is instantiated (<em>window.tizen</em>).
53262         </p>
53263         <p>
53264 For more information on the Tizen features, see <a href="../../org.tizen.web.appprogramming/html/guide/tizen_guide/tizen.htm">Tizen Guide</a>.  
53265         </p>
53266        </description>
53267         <version>
53268  1.0
53269         </version>
53270     </descriptive>
53271     <Enum name="FilterMatchFlag" id="::Tizen::FilterMatchFlag">
53272       <webidl>  enum FilterMatchFlag { &quot;EXACTLY&quot;, &quot;FULLSTRING&quot;, &quot;CONTAINS&quot;, &quot;STARTSWITH&quot;, &quot;ENDSWITH&quot;, &quot;EXISTS&quot; };</webidl>
53273       <descriptive>
53274           <brief>
53275  Filter match flag.
53276           </brief>
53277          <description>
53278           <p>
53279 These values are supported:
53280           </p>
53281           <ul>
53282             <li>
53283 EXACTLY - Indicates that an attribute value should match exactly with the specified default value. 
53284 For strings, this type of comparison is case-sensitive.            </li>
53285             <li>
53286 FULLSTRING - Indicates String-based comparison and that the attribute value should match the whole string (case insensitive).            </li>
53287             <li>
53288 CONTAINS - Indicates that an attribute value should contain the specified string. This type of comparison works only on strings and is case insensitive.            </li>
53289             <li>
53290 STARTSWITH - Indicates that an attribute value should start with the specified string. 
53291 This type of comparison works only on strings and is case insensitive.            </li>
53292             <li>
53293 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>
53294             <li>
53295 EXISTS - Indicates that a filter comparison should match if the specified attribute exists.            </li>
53296           </ul>
53297          </description>
53298           <version>
53299  1.0
53300           </version>
53301       </descriptive>
53302       <EnumValue stringvalue="EXACTLY">
53303         <webidl> &quot;EXACTLY</webidl>
53304       </EnumValue>
53305       <EnumValue stringvalue="FULLSTRING">
53306         <webidl> &quot;FULLSTRING</webidl>
53307       </EnumValue>
53308       <EnumValue stringvalue="CONTAINS">
53309         <webidl> &quot;CONTAINS</webidl>
53310       </EnumValue>
53311       <EnumValue stringvalue="STARTSWITH">
53312         <webidl> &quot;STARTSWITH</webidl>
53313       </EnumValue>
53314       <EnumValue stringvalue="ENDSWITH">
53315         <webidl> &quot;ENDSWITH</webidl>
53316       </EnumValue>
53317       <EnumValue stringvalue="EXISTS">
53318         <webidl> &quot;EXISTS</webidl>
53319       </EnumValue>
53320     </Enum>
53321     <Enum name="SortModeOrder" id="::Tizen::SortModeOrder">
53322       <webidl>  enum SortModeOrder { &quot;ASC&quot;, &quot;DESC&quot; };</webidl>
53323       <descriptive>
53324           <brief>
53325  An enumerator that indicates the sorting order.
53326           </brief>
53327          <description>
53328           <p>
53329 The following values are supported:
53330           </p>
53331           <ul>
53332             <li>
53333 ASC - Indicates the sorting order is ascending            </li>
53334             <li>
53335 DESC - Indicates the sorting order is descending            </li>
53336           </ul>
53337          </description>
53338           <version>
53339  1.0
53340           </version>
53341       </descriptive>
53342       <EnumValue stringvalue="ASC">
53343         <webidl> &quot;ASC</webidl>
53344       </EnumValue>
53345       <EnumValue stringvalue="DESC">
53346         <webidl> &quot;DESC</webidl>
53347       </EnumValue>
53348     </Enum>
53349     <Enum name="CompositeFilterType" id="::Tizen::CompositeFilterType">
53350       <webidl>  enum CompositeFilterType { &quot;UNION&quot;, &quot;INTERSECTION&quot; };</webidl>
53351       <descriptive>
53352           <brief>
53353  An enumerator that indicates the type of composite filter.
53354           </brief>
53355          <description>
53356           <p>
53357 The following values are supported:
53358           </p>
53359           <ul>
53360             <li>
53361 UNION - Indicates that the composite is a union of filters (&quot;OR&quot; operator)            </li>
53362             <li>
53363 INTERSECTION - Indicates that the composite is an intersection of filters (&quot;AND&quot; operator)            </li>
53364           </ul>
53365          </description>
53366           <version>
53367  1.0
53368           </version>
53369       </descriptive>
53370       <EnumValue stringvalue="UNION">
53371         <webidl> &quot;UNION</webidl>
53372       </EnumValue>
53373       <EnumValue stringvalue="INTERSECTION">
53374         <webidl> &quot;INTERSECTION</webidl>
53375       </EnumValue>
53376     </Enum>
53377     <Interface name="TizenObject" id="::Tizen::TizenObject">
53378       <webidl>  [NoInterfaceObject] interface TizenObject {
53379     readonly attribute <ref>Tizen</ref> tizen;
53380   };</webidl>
53381       <descriptive>
53382           <brief>
53383  Defines the tizen interface as a part of the window global object.
53384           </brief>
53385          <description>
53386           <p>
53387 The <em>Tizen</em> interface is always available within the <em>Window </em>object in the ECMAScript hierarchy.
53388           </p>
53389          </description>
53390           <version>
53391  1.0
53392           </version>
53393       </descriptive>
53394       <ExtendedAttributeList>
53395         <ExtendedAttribute name="NoInterfaceObject">
53396           <webidl>NoInterfaceObject</webidl>
53397         </ExtendedAttribute>
53398       </ExtendedAttributeList>
53399       <Attribute readonly="readonly" name="tizen" id="::Tizen::TizenObject::tizen">
53400         <webidl>    readonly attribute <ref>Tizen</ref> tizen;</webidl>
53401         <Type name="Tizen"/>
53402       </Attribute>
53403     </Interface>
53404     <Implements name1="Window" name2="TizenObject">
53405       <webidl>  <ref>Window</ref> implements <ref>TizenObject</ref>;</webidl>
53406     </Implements>
53407     <Interface name="Tizen" id="::Tizen::Tizen">
53408       <webidl>  [NoInterfaceObject] interface Tizen {
53409   };</webidl>
53410       <descriptive>
53411           <brief>
53412  The root of Tizen Web Device API.
53413           </brief>
53414          <description>
53415           <p>
53416 This is the Tizen root interface.
53417 It is a property of the ECMAScript global object, as specified by the <em>TizenObject</em> interface.
53418           </p>
53419          </description>
53420           <version>
53421  1.0
53422           </version>
53423       </descriptive>
53424       <ExtendedAttributeList>
53425         <ExtendedAttribute name="NoInterfaceObject">
53426           <webidl>NoInterfaceObject</webidl>
53427         </ExtendedAttribute>
53428       </ExtendedAttributeList>
53429     </Interface>
53430     <Interface name="AbstractFilter" id="::Tizen::AbstractFilter">
53431       <webidl>  [NoInterfaceObject] interface AbstractFilter {
53432   };</webidl>
53433       <descriptive>
53434           <brief>
53435  This is a common interface used by different types of
53436 object filters.
53437           </brief>
53438          <description>
53439           <p>
53440 Never use this base interface directly, instead use <em>AbstractFilter</em> subtypes,
53441 such as <em>AttributeFilter</em>, <em>AttributeRangeFilter</em>, and <em>CompositeFilter</em>.
53442           </p>
53443          </description>
53444           <version>
53445  1.0
53446           </version>
53447       </descriptive>
53448       <ExtendedAttributeList>
53449         <ExtendedAttribute name="NoInterfaceObject">
53450           <webidl>NoInterfaceObject</webidl>
53451         </ExtendedAttribute>
53452       </ExtendedAttributeList>
53453     </Interface>
53454     <Interface name="AttributeFilter" id="::Tizen::AttributeFilter">
53455       <webidl>  [Constructor(DOMString attributeName, optional <ref>FilterMatchFlag</ref>? matchFlag, optional any matchValue)]
53456   interface AttributeFilter : <ref>AbstractFilter</ref> {
53457     attribute DOMString attributeName;
53458
53459     attribute <ref>FilterMatchFlag</ref> matchFlag setraises(<ref>WebAPIException</ref>);
53460
53461     attribute any matchValue;
53462   };</webidl>
53463       <descriptive>
53464           <brief>
53465  This interface represents a set of filter.
53466           </brief>
53467          <description>
53468           <p>
53469 It represents the query statement for the specified value of the <em>matchValue</em> by the rule of <em>matchFlag</em>.
53470           </p>
53471           <p>
53472 If no <em>matchValue</em> is defined, the filter will match all objects that have the attribute
53473 defined (same as the &quot;EXISTS&quot; filter works), otherwise, it will only match objects which have an attribute that matches
53474 the specified value.
53475           </p>
53476          </description>
53477           <version>
53478  1.0
53479           </version>
53480           <Code> // Define success callback
53481  function successCallback(contacts) {
53482    console.log(contacts.length + &quot; contacts found.&quot;);
53483  }
53484
53485  // Define error callback
53486  function errorCallback(error) {
53487    console.log(&quot;An error occurred: &quot; + error.message);
53488  }
53489
53490  // Create an attribute filter based on first name: &quot;First name should contain 'Chris' (case insensitive)&quot;
53491  var filter = new tizen.AttributeFilter(&quot;name.firstName&quot;, &quot;CONTAINS&quot;, &quot;Chris&quot;);
53492  // Send request on contact address book.
53493  tizen.contact.getDefaultAddressBook().find(successCallback, errorCallback, filter);
53494  </Code>
53495       </descriptive>
53496       <ExtendedAttributeList>
53497         <ExtendedAttribute name="Constructor">
53498           <webidl>Constructor(DOMString attributeName, optional <ref>FilterMatchFlag</ref>? matchFlag, optional any matchValue)</webidl>
53499           <ArgumentList>
53500             <Argument name="attributeName">
53501               <Type type="DOMString"/>
53502             </Argument>
53503             <Argument optional="optional" name="matchFlag">
53504               <Type name="FilterMatchFlag" nullable="nullable"/>
53505             </Argument>
53506             <Argument optional="optional" name="matchValue">
53507               <Type type="any"/>
53508             </Argument>
53509           </ArgumentList>
53510         </ExtendedAttribute>
53511       </ExtendedAttributeList>
53512       <InterfaceInheritance>
53513         <Name name="AbstractFilter"/>
53514       </InterfaceInheritance>
53515       <Attribute name="attributeName" id="::Tizen::AttributeFilter::attributeName">
53516         <webidl>    attribute DOMString attributeName;</webidl>
53517         <descriptive>
53518             <brief>
53519  The name of the object attribute used for filtering.
53520             </brief>
53521            <description>
53522             <p>
53523 This is the name of the object attribute exactly as it is defined in
53524 the object's interface. For attributes of complex type, use fully-qualified names
53525 (such as 'organizations.role' to filter on a contact's role in an organization).
53526             </p>
53527             <p>
53528 For attributes of an array type, the filter will match if any value in the array
53529 matches.
53530             </p>
53531            </description>
53532             <version>
53533  1.0
53534             </version>
53535         </descriptive>
53536         <Type type="DOMString"/>
53537       </Attribute>
53538       <Attribute name="matchFlag" id="::Tizen::AttributeFilter::matchFlag">
53539         <webidl>    attribute <ref>FilterMatchFlag</ref> matchFlag setraises(<ref>WebAPIException</ref>);</webidl>
53540         <descriptive>
53541             <brief>
53542  The match flag used for attribute-based filtering.
53543             </brief>
53544            <description>
53545             <p>
53546 By default, this attribute is set to &quot;EXACTLY&quot;.
53547             </p>
53548            </description>
53549             <version>
53550  1.0
53551             </version>
53552         </descriptive>
53553         <Type name="FilterMatchFlag"/>
53554         <SetRaises>
53555           <RaiseException name="WebAPIException"/>
53556         </SetRaises>
53557       </Attribute>
53558       <Attribute name="matchValue" id="::Tizen::AttributeFilter::matchValue">
53559         <webidl>    attribute any matchValue;</webidl>
53560         <descriptive>
53561             <brief>
53562  The value used for matching.
53563             </brief>
53564            <description>
53565             <p>
53566 The filter will match if the attribute value matches the given matchValue.
53567             </p>
53568             <p>
53569 This value is not used if the <em>matchFlag</em> is set to &quot;EXISTS&quot;.
53570 By default, this attribute is set to null.
53571             </p>
53572            </description>
53573             <version>
53574  1.0
53575             </version>
53576         </descriptive>
53577         <Type type="any"/>
53578       </Attribute>
53579     </Interface>
53580     <Interface name="AttributeRangeFilter" id="::Tizen::AttributeRangeFilter">
53581       <webidl>  [Constructor(DOMString attributeName, optional any initialValue, optional any endValue)]
53582   interface AttributeRangeFilter : <ref>AbstractFilter</ref> {
53583     attribute DOMString attributeName;
53584
53585     attribute any initialValue;
53586
53587     attribute any endValue;
53588   };</webidl>
53589       <descriptive>
53590           <brief>
53591  <em>AttributeRangeFilter</em> represents a filter based on an object attribute
53592 which has values that are within a particular range.
53593           </brief>
53594          <description>
53595           <p>
53596 Range filters, where only one boundary is set, are available.
53597           </p>
53598          </description>
53599           <version>
53600  1.0
53601           </version>
53602           <Code> // Define success callback
53603  function successCallback(events) {
53604    console.log(events.length + &quot; events today.&quot;);
53605  }
53606
53607  // Define error callback
53608  function errorCallback(error) {
53609    console.log(&quot;An error occurred: &quot; + error.message);
53610  }
53611
53612  // Create an attribute range filter based on event start date: &quot;All events occurring today&quot;.
53613  var now_dt = tizen.time.getCurrentDateTime();
53614  var today_begin = new tizen.TZDate(now_dt.getFullYear(), now_dt.getMonth(), now_dt.getDate());
53615  var today_end = today_begin.addDuration(new tizen.TimeDuration(1, &quot;DAYS&quot;));
53616  var filter = new tizen.AttributeRangeFilter(&quot;startDate&quot;, today_begin, today_end);
53617
53618  // Send a search request to default event calendar.
53619  tizen.calendar.getDefaultCalendar(&quot;EVENT&quot;).find(successCallback, errorCallback, filter);
53620  </Code>
53621       </descriptive>
53622       <ExtendedAttributeList>
53623         <ExtendedAttribute name="Constructor">
53624           <webidl>Constructor(DOMString attributeName, optional any initialValue, optional any endValue)</webidl>
53625           <ArgumentList>
53626             <Argument name="attributeName">
53627               <Type type="DOMString"/>
53628             </Argument>
53629             <Argument optional="optional" name="initialValue">
53630               <Type type="any"/>
53631             </Argument>
53632             <Argument optional="optional" name="endValue">
53633               <Type type="any"/>
53634             </Argument>
53635           </ArgumentList>
53636         </ExtendedAttribute>
53637       </ExtendedAttributeList>
53638       <InterfaceInheritance>
53639         <Name name="AbstractFilter"/>
53640       </InterfaceInheritance>
53641       <Attribute name="attributeName" id="::Tizen::AttributeRangeFilter::attributeName">
53642         <webidl>    attribute DOMString attributeName;</webidl>
53643         <descriptive>
53644             <brief>
53645  The name of the object attribute used for filtering.
53646             </brief>
53647            <description>
53648             <p>
53649 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
53650 (such as 'organizations.role' to filter on a contact's role in an organization).
53651             </p>
53652             <p>
53653 For attributes of array type, the filter will match if any value in the array
53654 matches.
53655             </p>
53656            </description>
53657             <version>
53658  1.0
53659             </version>
53660         </descriptive>
53661         <Type type="DOMString"/>
53662       </Attribute>
53663       <Attribute name="initialValue" id="::Tizen::AttributeRangeFilter::initialValue">
53664         <webidl>    attribute any initialValue;</webidl>
53665         <descriptive>
53666             <brief>
53667  Objects with an attribute that is greater than or equal to <em>initialValue</em> will match.
53668             </brief>
53669            <description>
53670             <p>
53671 By default, this attribute is set to <var>null</var>.
53672             </p>
53673            </description>
53674             <version>
53675  1.0
53676             </version>
53677         </descriptive>
53678         <Type type="any"/>
53679       </Attribute>
53680       <Attribute name="endValue" id="::Tizen::AttributeRangeFilter::endValue">
53681         <webidl>    attribute any endValue;</webidl>
53682         <descriptive>
53683             <brief>
53684  Objects with an attribute that is strictly lower than to <em>endValue</em> will match.
53685             </brief>
53686            <description>
53687             <p>
53688 By default, this attribute is set to <var>null</var>.
53689             </p>
53690            </description>
53691             <version>
53692  1.0
53693             </version>
53694         </descriptive>
53695         <Type type="any"/>
53696       </Attribute>
53697     </Interface>
53698     <Interface name="CompositeFilter" id="::Tizen::CompositeFilter">
53699       <webidl>  [Constructor(<ref>CompositeFilterType</ref> type, optional <ref>AbstractFilter</ref>[]? filters)]
53700   interface CompositeFilter : <ref>AbstractFilter</ref> {
53701
53702     attribute <ref>CompositeFilterType</ref> type;
53703
53704     attribute <ref>AbstractFilter</ref>[] filters;
53705   };</webidl>
53706       <descriptive>
53707           <brief>
53708  <em>CompositeFilter</em> represents a set of filters.
53709           </brief>
53710          <description>
53711           <p>
53712 The composite filters can be one of the 2 types:
53713           </p>
53714           <ul>
53715             <li>
53716 The union - used to filter objects that match any of the filters it includes.            </li>
53717             <li>
53718 The intersection - used to filter objects that match all filters it includes.            </li>
53719           </ul>
53720          </description>
53721           <version>
53722  1.0
53723           </version>
53724           <Code> // Define success callback
53725  function successCallback(contacts) {
53726    console.log(contacts.length + &quot; contacts found.&quot;);
53727  }
53728
53729  // Define error callback
53730  function errorCallback(error) {
53731    console.log(&quot;An error occurred: &quot; + error.message);
53732  }
53733
53734  // Create an attribute filter based on first name: &quot;First name should contain 'Chris' (case insensitive)
53735  var firstNameFilter = new tizen.AttributeFilter(&quot;name.firstName&quot;, &quot;CONTAINS&quot;, &quot;Chris&quot;);
53736
53737  // Create an attribute filter based on last name: &quot;Last name should be exactly 'Smith' (case insensitive)
53738  var lastNameFilter = new tizen.AttributeFilter(&quot;name.lastName&quot;, &quot;EXACTLY&quot;, &quot;Smith&quot;};
53739
53740  // Create a filter based on the intersection of these two filter:
53741  // &quot;First name should contain 'Chris' AND last name should be 'Smith'&quot;.
53742  var filter = new tizen.CompositeFilter(&quot;INTERSECTION&quot;, [firstNameFilter, lastNameFilter]);
53743
53744  // Send request on contact address book.
53745  tizen.contact.getDefaultAddressBook().find(successCallback, errorCallback, filter);
53746  </Code>
53747       </descriptive>
53748       <ExtendedAttributeList>
53749         <ExtendedAttribute name="Constructor">
53750           <webidl>Constructor(<ref>CompositeFilterType</ref> type, optional <ref>AbstractFilter</ref>[]? filters)</webidl>
53751           <ArgumentList>
53752             <Argument name="type">
53753               <Type name="CompositeFilterType"/>
53754             </Argument>
53755             <Argument optional="optional" name="filters">
53756               <Type type="array" nullable="nullable">
53757                 <Type name="AbstractFilter"/>
53758               </Type>
53759             </Argument>
53760           </ArgumentList>
53761         </ExtendedAttribute>
53762       </ExtendedAttributeList>
53763       <InterfaceInheritance>
53764         <Name name="AbstractFilter"/>
53765       </InterfaceInheritance>
53766       <Attribute name="type" id="::Tizen::CompositeFilter::type">
53767         <webidl>    attribute <ref>CompositeFilterType</ref> type;</webidl>
53768         <descriptive>
53769             <brief>
53770  The composite filter type.
53771             </brief>
53772             <version>
53773  1.0
53774             </version>
53775         </descriptive>
53776         <Type name="CompositeFilterType"/>
53777       </Attribute>
53778       <Attribute name="filters" id="::Tizen::CompositeFilter::filters">
53779         <webidl>    attribute <ref>AbstractFilter</ref>[] filters;</webidl>
53780         <descriptive>
53781             <brief>
53782  The list of filters in the composite filter.
53783             </brief>
53784             <version>
53785  1.0
53786             </version>
53787         </descriptive>
53788         <Type type="array">
53789           <Type name="AbstractFilter"/>
53790         </Type>
53791       </Attribute>
53792     </Interface>
53793     <Interface name="SortMode" id="::Tizen::SortMode">
53794       <webidl>  [Constructor(DOMString attributeName, optional <ref>SortModeOrder</ref>? order)]
53795   interface SortMode {
53796     attribute DOMString attributeName;
53797
53798     attribute <ref>SortModeOrder</ref> order setraises(<ref>WebAPIException</ref>);
53799   };</webidl>
53800       <descriptive>
53801           <brief>
53802  <em>SortMode</em> is a common interface used for sorting of queried data.
53803           </brief>
53804          <description>
53805           <p>
53806 Note that the sorting result of list type attributes is not determined.
53807           </p>
53808          </description>
53809           <version>
53810  1.0
53811           </version>
53812           <Code> // Define a success callback
53813  function successCallback(contacts) {
53814    // The returned contacts are sorted by first name (ascending)
53815    console.log(contacts.length + &quot; contacts found.&quot;);
53816  }
53817
53818  // Define an error callback
53819  function errorCallback(error) {
53820    console.log(&quot;An error occurred: &quot; + error.message);
53821  }
53822
53823  // Create an attribute filter based on first name: &quot;First name should contain 'Chris' (case insensitive)&quot;
53824  var filter = new tizen.AttributeFilter(&quot;name.firstName&quot;, &quot;CONTAINS&quot;, &quot;Chris&quot;);
53825  // Sort by first name, ascending
53826  var sortMode = new tizen.SortMode(&quot;name.firstName&quot;, &quot;ASC&quot;);
53827  // Send request on contact address book.
53828  tizen.contact.getDefaultAddressBook().find(successCallback, errorCallback, filter, sortMode);
53829  </Code>
53830       </descriptive>
53831       <ExtendedAttributeList>
53832         <ExtendedAttribute name="Constructor">
53833           <webidl>Constructor(DOMString attributeName, optional <ref>SortModeOrder</ref>? order)</webidl>
53834           <ArgumentList>
53835             <Argument name="attributeName">
53836               <Type type="DOMString"/>
53837             </Argument>
53838             <Argument optional="optional" name="order">
53839               <Type name="SortModeOrder" nullable="nullable"/>
53840             </Argument>
53841           </ArgumentList>
53842         </ExtendedAttribute>
53843       </ExtendedAttributeList>
53844       <Attribute name="attributeName" id="::Tizen::SortMode::attributeName">
53845         <webidl>    attribute DOMString attributeName;</webidl>
53846         <descriptive>
53847             <brief>
53848  The name of the object attribute used for sorting.
53849             </brief>
53850             <version>
53851  1.0
53852             </version>
53853         </descriptive>
53854         <Type type="DOMString"/>
53855       </Attribute>
53856       <Attribute name="order" id="::Tizen::SortMode::order">
53857         <webidl>    attribute <ref>SortModeOrder</ref> order setraises(<ref>WebAPIException</ref>);</webidl>
53858         <descriptive>
53859             <brief>
53860  The type of the sorting.
53861             </brief>
53862            <description>
53863             <p>
53864 By default, this attribute is set to <var>ASC</var>.
53865             </p>
53866            </description>
53867             <version>
53868  1.0
53869             </version>
53870         </descriptive>
53871         <Type name="SortModeOrder"/>
53872         <SetRaises>
53873           <RaiseException name="WebAPIException"/>
53874         </SetRaises>
53875       </Attribute>
53876     </Interface>
53877     <Interface name="SimpleCoordinates" id="::Tizen::SimpleCoordinates">
53878       <webidl>  [Constructor(double latitude, double longitude)]
53879   interface SimpleCoordinates {
53880     attribute double latitude setraises(<ref>WebAPIException</ref>);
53881
53882     attribute double longitude setraises(<ref>WebAPIException</ref>);
53883   };</webidl>
53884       <descriptive>
53885           <brief>
53886  <em>SimpleCoordinates</em> represents a point (latitude and longitude) in map coordinate system.
53887           </brief>
53888          <description>
53889           <p>
53890 Latitude and longitude are of the WGS84 datum.
53891           </p>
53892          </description>
53893           <version>
53894  1.0
53895           </version>
53896       </descriptive>
53897       <ExtendedAttributeList>
53898         <ExtendedAttribute name="Constructor">
53899           <webidl>Constructor(double latitude, double longitude)</webidl>
53900           <ArgumentList>
53901             <Argument name="latitude">
53902               <Type type="double"/>
53903             </Argument>
53904             <Argument name="longitude">
53905               <Type type="double"/>
53906             </Argument>
53907           </ArgumentList>
53908         </ExtendedAttribute>
53909       </ExtendedAttributeList>
53910       <Attribute name="latitude" id="::Tizen::SimpleCoordinates::latitude">
53911         <webidl>    attribute double latitude setraises(<ref>WebAPIException</ref>);</webidl>
53912         <descriptive>
53913             <brief>
53914  Latitude.
53915             </brief>
53916             <version>
53917  1.0
53918             </version>
53919         </descriptive>
53920         <Type type="double"/>
53921         <SetRaises>
53922           <RaiseException name="WebAPIException"/>
53923         </SetRaises>
53924       </Attribute>
53925       <Attribute name="longitude" id="::Tizen::SimpleCoordinates::longitude">
53926         <webidl>    attribute double longitude setraises(<ref>WebAPIException</ref>);</webidl>
53927         <descriptive>
53928             <brief>
53929  Longitude.
53930             </brief>
53931             <version>
53932  1.0
53933             </version>
53934         </descriptive>
53935         <Type type="double"/>
53936         <SetRaises>
53937           <RaiseException name="WebAPIException"/>
53938         </SetRaises>
53939       </Attribute>
53940     </Interface>
53941     <Interface name="WebAPIException" id="::Tizen::WebAPIException">
53942       <webidl>  [NoInterfaceObject]
53943   interface WebAPIException {
53944     readonly attribute unsigned short code;
53945
53946     readonly attribute DOMString name;
53947
53948     readonly attribute DOMString message;
53949
53950     const unsigned short INDEX_SIZE_ERR = 1;
53951     const unsigned short DOMSTRING_SIZE_ERR = 2; 
53952     const unsigned short HIERARCHY_REQUEST_ERR = 3;
53953     const unsigned short WRONG_DOCUMENT_ERR = 4;
53954     const unsigned short INVALID_CHARACTER_ERR = 5;
53955     const unsigned short NO_DATA_ALLOWED_ERR = 6; 
53956     const unsigned short NO_MODIFICATION_ALLOWED_ERR = 7;
53957     const unsigned short NOT_FOUND_ERR = 8;
53958     const unsigned short NOT_SUPPORTED_ERR = 9;
53959     const unsigned short INUSE_ATTRIBUTE_ERR = 10; 
53960     const unsigned short INVALID_STATE_ERR = 11;
53961     const unsigned short SYNTAX_ERR = 12;
53962     const unsigned short INVALID_MODIFICATION_ERR = 13;
53963     const unsigned short NAMESPACE_ERR = 14;
53964     const unsigned short INVALID_ACCESS_ERR = 15;
53965     const unsigned short VALIDATION_ERR = 16; 
53966     const unsigned short TYPE_MISMATCH_ERR = 17;
53967     const unsigned short SECURITY_ERR = 18;
53968     const unsigned short NETWORK_ERR = 19;
53969     const unsigned short ABORT_ERR = 20;
53970     const unsigned short URL_MISMATCH_ERR = 21;
53971     const unsigned short QUOTA_EXCEEDED_ERR = 22;
53972     const unsigned short TIMEOUT_ERR = 23;
53973     const unsigned short INVALID_NODE_TYPE_ERR = 24;
53974     const unsigned short DATA_CLONE_ERR = 25;
53975   };</webidl>
53976       <descriptive>
53977           <brief>
53978  Generic exception interface.
53979           </brief>
53980          <description>
53981           <p>
53982 This interface will be used by the APIs to throw errors synchronously.
53983           </p>
53984           <p>
53985 The attempt to set an attribute value may or may not raise WebAPIException synchronously with error type TypeMismatchError or InvalidValuesError.
53986           </p>
53987          </description>
53988           <version>
53989  2.0
53990           </version>
53991       </descriptive>
53992       <ExtendedAttributeList>
53993         <ExtendedAttribute name="NoInterfaceObject">
53994           <webidl>NoInterfaceObject</webidl>
53995         </ExtendedAttribute>
53996       </ExtendedAttributeList>
53997       <Attribute readonly="readonly" name="code" id="::Tizen::WebAPIException::code">
53998         <webidl>    readonly attribute unsigned short code;</webidl>
53999         <descriptive>
54000             <brief>
54001  16-bit error code.
54002 For the possible values for this attribute, see <a href="http://www.w3.org/TR/dom/#domexception">DOMException</a>.
54003             </brief>
54004             <version>
54005  2.0
54006             </version>
54007         </descriptive>
54008         <Type type="unsigned short"/>
54009       </Attribute>
54010       <Attribute readonly="readonly" name="name" id="::Tizen::WebAPIException::name">
54011         <webidl>    readonly attribute DOMString name;</webidl>
54012         <descriptive>
54013             <brief>
54014  An error type. The name attribute must return the value it was initialized with.
54015 This attribute can have one of the following values: 
54016             </brief>
54017            <description>
54018             <ul>
54019               <li>
54020 UnknownError - An unknown error has occurred.              </li>
54021               <li>
54022 InvalidValuesError - The content of an object does not contain valid values.              </li>
54023               <li>
54024 IOError - An error occurred in communication with the underlying implementation and so the requested method cannot be completed.              </li>
54025               <li>
54026 ServiceNotAvailableError - The requested service is not available.              </li>
54027             </ul>
54028             <p>
54029 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> 
54030             </p>
54031            </description>
54032             <version>
54033  2.0
54034             </version>
54035         </descriptive>
54036         <Type type="DOMString"/>
54037       </Attribute>
54038       <Attribute readonly="readonly" name="message" id="::Tizen::WebAPIException::message">
54039         <webidl>    readonly attribute DOMString message;</webidl>
54040         <descriptive>
54041             <brief>
54042  An error message that describes the details of an encountered error. 
54043 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.
54044             </brief>
54045             <version>
54046  2.0
54047             </version>
54048         </descriptive>
54049         <Type type="DOMString"/>
54050       </Attribute>
54051       <Const name="INDEX_SIZE_ERR" value="1" id="::Tizen::WebAPIException::INDEX_SIZE_ERR">
54052         <webidl>    const unsigned short INDEX_SIZE_ERR = 1;</webidl>
54053         <descriptive>
54054             <brief>
54055  The index is not in the allowed range.
54056             </brief>
54057             <version>
54058  2.0
54059             </version>
54060         </descriptive>
54061         <Type type="unsigned short"/>
54062       </Const>
54063       <Const name="DOMSTRING_SIZE_ERR" value="2" id="::Tizen::WebAPIException::DOMSTRING_SIZE_ERR">
54064         <webidl>    const unsigned short DOMSTRING_SIZE_ERR = 2;</webidl>
54065         <descriptive>
54066             <brief>
54067  The specified range of text is too large.
54068             </brief>
54069             <version>
54070  2.0
54071             </version>
54072         </descriptive>
54073         <Type type="unsigned short"/>
54074       </Const>
54075       <Const name="HIERARCHY_REQUEST_ERR" value="3" id="::Tizen::WebAPIException::HIERARCHY_REQUEST_ERR">
54076         <webidl>    const unsigned short HIERARCHY_REQUEST_ERR = 3;</webidl>
54077         <descriptive>
54078             <brief>
54079  The operation would yield an incorrect node tree.
54080             </brief>
54081             <version>
54082  2.0
54083             </version>
54084         </descriptive>
54085         <Type type="unsigned short"/>
54086       </Const>
54087       <Const name="WRONG_DOCUMENT_ERR" value="4" id="::Tizen::WebAPIException::WRONG_DOCUMENT_ERR">
54088         <webidl>    const unsigned short WRONG_DOCUMENT_ERR = 4;</webidl>
54089         <descriptive>
54090             <brief>
54091  The object is in the wrong document.
54092             </brief>
54093             <version>
54094  2.0
54095             </version>
54096         </descriptive>
54097         <Type type="unsigned short"/>
54098       </Const>
54099       <Const name="INVALID_CHARACTER_ERR" value="5" id="::Tizen::WebAPIException::INVALID_CHARACTER_ERR">
54100         <webidl>    const unsigned short INVALID_CHARACTER_ERR = 5;</webidl>
54101         <descriptive>
54102             <brief>
54103  The string contains invalid characters.
54104             </brief>
54105             <version>
54106  2.0
54107             </version>
54108         </descriptive>
54109         <Type type="unsigned short"/>
54110       </Const>
54111       <Const name="NO_DATA_ALLOWED_ERR" value="6" id="::Tizen::WebAPIException::NO_DATA_ALLOWED_ERR">
54112         <webidl>    const unsigned short NO_DATA_ALLOWED_ERR = 6;</webidl>
54113         <descriptive>
54114             <brief>
54115  Data is specified for a node that does not support data.
54116             </brief>
54117             <version>
54118  2.0
54119             </version>
54120         </descriptive>
54121         <Type type="unsigned short"/>
54122       </Const>
54123       <Const name="NO_MODIFICATION_ALLOWED_ERR" value="7" id="::Tizen::WebAPIException::NO_MODIFICATION_ALLOWED_ERR">
54124         <webidl>    const unsigned short NO_MODIFICATION_ALLOWED_ERR = 7;</webidl>
54125         <descriptive>
54126             <brief>
54127  The object cannot be modified.
54128             </brief>
54129             <version>
54130  2.0
54131             </version>
54132         </descriptive>
54133         <Type type="unsigned short"/>
54134       </Const>
54135       <Const name="NOT_FOUND_ERR" value="8" id="::Tizen::WebAPIException::NOT_FOUND_ERR">
54136         <webidl>    const unsigned short NOT_FOUND_ERR = 8;</webidl>
54137         <descriptive>
54138             <brief>
54139  The object cannot be found here.
54140             </brief>
54141             <version>
54142  2.0
54143             </version>
54144         </descriptive>
54145         <Type type="unsigned short"/>
54146       </Const>
54147       <Const name="NOT_SUPPORTED_ERR" value="9" id="::Tizen::WebAPIException::NOT_SUPPORTED_ERR">
54148         <webidl>    const unsigned short NOT_SUPPORTED_ERR = 9;</webidl>
54149         <descriptive>
54150             <brief>
54151  The operation is not supported.
54152             </brief>
54153             <version>
54154  2.0
54155             </version>
54156         </descriptive>
54157         <Type type="unsigned short"/>
54158       </Const>
54159       <Const name="INUSE_ATTRIBUTE_ERR" value="10" id="::Tizen::WebAPIException::INUSE_ATTRIBUTE_ERR">
54160         <webidl>    const unsigned short INUSE_ATTRIBUTE_ERR = 10;</webidl>
54161         <descriptive>
54162             <brief>
54163  The specified attribute is already in use elsewhere.
54164             </brief>
54165             <version>
54166  2.0
54167             </version>
54168         </descriptive>
54169         <Type type="unsigned short"/>
54170       </Const>
54171       <Const name="INVALID_STATE_ERR" value="11" id="::Tizen::WebAPIException::INVALID_STATE_ERR">
54172         <webidl>    const unsigned short INVALID_STATE_ERR = 11;</webidl>
54173         <descriptive>
54174             <brief>
54175  The object is in an invalid state.
54176             </brief>
54177             <version>
54178  2.0
54179             </version>
54180         </descriptive>
54181         <Type type="unsigned short"/>
54182       </Const>
54183       <Const name="SYNTAX_ERR" value="12" id="::Tizen::WebAPIException::SYNTAX_ERR">
54184         <webidl>    const unsigned short SYNTAX_ERR = 12;</webidl>
54185         <descriptive>
54186             <brief>
54187  The string did not match the expected pattern.
54188             </brief>
54189             <version>
54190  2.0
54191             </version>
54192         </descriptive>
54193         <Type type="unsigned short"/>
54194       </Const>
54195       <Const name="INVALID_MODIFICATION_ERR" value="13" id="::Tizen::WebAPIException::INVALID_MODIFICATION_ERR">
54196         <webidl>    const unsigned short INVALID_MODIFICATION_ERR = 13;</webidl>
54197         <descriptive>
54198             <brief>
54199  The object cannot be modified in this way.
54200             </brief>
54201             <version>
54202  2.0
54203             </version>
54204         </descriptive>
54205         <Type type="unsigned short"/>
54206       </Const>
54207       <Const name="NAMESPACE_ERR" value="14" id="::Tizen::WebAPIException::NAMESPACE_ERR">
54208         <webidl>    const unsigned short NAMESPACE_ERR = 14;</webidl>
54209         <descriptive>
54210             <brief>
54211  The operation is not allowed by Namespaces in XML.
54212             </brief>
54213             <version>
54214  2.0
54215             </version>
54216         </descriptive>
54217         <Type type="unsigned short"/>
54218       </Const>
54219       <Const name="INVALID_ACCESS_ERR" value="15" id="::Tizen::WebAPIException::INVALID_ACCESS_ERR">
54220         <webidl>    const unsigned short INVALID_ACCESS_ERR = 15;</webidl>
54221         <descriptive>
54222             <brief>
54223  The object does not support the operation or argument.
54224             </brief>
54225             <version>
54226  2.0
54227             </version>
54228         </descriptive>
54229         <Type type="unsigned short"/>
54230       </Const>
54231       <Const name="VALIDATION_ERR" value="16" id="::Tizen::WebAPIException::VALIDATION_ERR">
54232         <webidl>    const unsigned short VALIDATION_ERR = 16;</webidl>
54233         <descriptive>
54234             <brief>
54235  The operation would cause the node to fail validation.
54236             </brief>
54237             <version>
54238  2.0
54239             </version>
54240         </descriptive>
54241         <Type type="unsigned short"/>
54242       </Const>
54243       <Const name="TYPE_MISMATCH_ERR" value="17" id="::Tizen::WebAPIException::TYPE_MISMATCH_ERR">
54244         <webidl>    const unsigned short TYPE_MISMATCH_ERR = 17;</webidl>
54245         <descriptive>
54246             <brief>
54247  The type of the object does not match the expected type.
54248             </brief>
54249             <version>
54250  2.0
54251             </version>
54252         </descriptive>
54253         <Type type="unsigned short"/>
54254       </Const>
54255       <Const name="SECURITY_ERR" value="18" id="::Tizen::WebAPIException::SECURITY_ERR">
54256         <webidl>    const unsigned short SECURITY_ERR = 18;</webidl>
54257         <descriptive>
54258             <brief>
54259  The operation is insecure.
54260             </brief>
54261             <version>
54262  2.0
54263             </version>
54264         </descriptive>
54265         <Type type="unsigned short"/>
54266       </Const>
54267       <Const name="NETWORK_ERR" value="19" id="::Tizen::WebAPIException::NETWORK_ERR">
54268         <webidl>    const unsigned short NETWORK_ERR = 19;</webidl>
54269         <descriptive>
54270             <brief>
54271  A network error occurred.
54272             </brief>
54273             <version>
54274  2.0
54275             </version>
54276         </descriptive>
54277         <Type type="unsigned short"/>
54278       </Const>
54279       <Const name="ABORT_ERR" value="20" id="::Tizen::WebAPIException::ABORT_ERR">
54280         <webidl>    const unsigned short ABORT_ERR = 20;</webidl>
54281         <descriptive>
54282             <brief>
54283  The operation was aborted.
54284             </brief>
54285             <version>
54286  2.0
54287             </version>
54288         </descriptive>
54289         <Type type="unsigned short"/>
54290       </Const>
54291       <Const name="URL_MISMATCH_ERR" value="21" id="::Tizen::WebAPIException::URL_MISMATCH_ERR">
54292         <webidl>    const unsigned short URL_MISMATCH_ERR = 21;</webidl>
54293         <descriptive>
54294             <brief>
54295  The given URL does not match another URL.
54296             </brief>
54297             <version>
54298  2.0
54299             </version>
54300         </descriptive>
54301         <Type type="unsigned short"/>
54302       </Const>
54303       <Const name="QUOTA_EXCEEDED_ERR" value="22" id="::Tizen::WebAPIException::QUOTA_EXCEEDED_ERR">
54304         <webidl>    const unsigned short QUOTA_EXCEEDED_ERR = 22;</webidl>
54305         <descriptive>
54306             <brief>
54307  The quota has been exceeded.
54308             </brief>
54309             <version>
54310  2.0
54311             </version>
54312         </descriptive>
54313         <Type type="unsigned short"/>
54314       </Const>
54315       <Const name="TIMEOUT_ERR" value="23" id="::Tizen::WebAPIException::TIMEOUT_ERR">
54316         <webidl>    const unsigned short TIMEOUT_ERR = 23;</webidl>
54317         <descriptive>
54318             <brief>
54319  The operation timed out.
54320             </brief>
54321             <version>
54322  2.0
54323             </version>
54324         </descriptive>
54325         <Type type="unsigned short"/>
54326       </Const>
54327       <Const name="INVALID_NODE_TYPE_ERR" value="24" id="::Tizen::WebAPIException::INVALID_NODE_TYPE_ERR">
54328         <webidl>    const unsigned short INVALID_NODE_TYPE_ERR = 24;</webidl>
54329         <descriptive>
54330             <brief>
54331  The supplied node is incorrect or has an incorrect ancestor for this operation.
54332             </brief>
54333             <version>
54334  2.0
54335             </version>
54336         </descriptive>
54337         <Type type="unsigned short"/>
54338       </Const>
54339       <Const name="DATA_CLONE_ERR" value="25" id="::Tizen::WebAPIException::DATA_CLONE_ERR">
54340         <webidl>    const unsigned short DATA_CLONE_ERR = 25;</webidl>
54341         <descriptive>
54342             <brief>
54343  The object cannot be cloned.
54344             </brief>
54345             <version>
54346  2.0
54347             </version>
54348         </descriptive>
54349         <Type type="unsigned short"/>
54350       </Const>
54351     </Interface>
54352     <Interface name="WebAPIError" id="::Tizen::WebAPIError">
54353       <webidl>  [NoInterfaceObject]
54354   interface WebAPIError {
54355     readonly attribute unsigned short code;
54356
54357     readonly attribute DOMString name;
54358
54359     readonly attribute DOMString message;
54360   };</webidl>
54361       <descriptive>
54362           <brief>
54363  Generic error interface.
54364           </brief>
54365          <description>
54366           <p>
54367 This interface will be used by the APIs in order to return them in the error callback of asynchronous methods.
54368           </p>
54369          </description>
54370           <version>
54371  2.0
54372           </version>
54373       </descriptive>
54374       <ExtendedAttributeList>
54375         <ExtendedAttribute name="NoInterfaceObject">
54376           <webidl>NoInterfaceObject</webidl>
54377         </ExtendedAttribute>
54378       </ExtendedAttributeList>
54379       <Attribute readonly="readonly" name="code" id="::Tizen::WebAPIError::code">
54380         <webidl>    readonly attribute unsigned short code;</webidl>
54381         <descriptive>
54382             <brief>
54383  16-bit error code.
54384 Possible values are defined in <a href="http://www.w3.org/TR/dom/#domexception">DOMException</a>.
54385             </brief>
54386             <version>
54387  2.0
54388             </version>
54389         </descriptive>
54390         <Type type="unsigned short"/>
54391       </Attribute>
54392       <Attribute readonly="readonly" name="name" id="::Tizen::WebAPIError::name">
54393         <webidl>    readonly attribute DOMString name;</webidl>
54394         <descriptive>
54395             <brief>
54396  An error type. The name attribute must return the value it was initialized with.
54397 This attribute can have one of the following values: 
54398             </brief>
54399            <description>
54400             <ul>
54401               <li>
54402 UnknownError - An unknown error has occurred.              </li>
54403               <li>
54404 InvalidValuesError - The content of an object does not contain valid values.              </li>
54405               <li>
54406 IOError - An error occurred in communication with the underlying implementation and so the requested method cannot be completed.              </li>
54407               <li>
54408 ServiceNotAvailableError - The requested service is not available.              </li>
54409             </ul>
54410             <p>
54411 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> 
54412             </p>
54413            </description>
54414             <version>
54415  2.0
54416             </version>
54417         </descriptive>
54418         <Type type="DOMString"/>
54419       </Attribute>
54420       <Attribute readonly="readonly" name="message" id="::Tizen::WebAPIError::message">
54421         <webidl>    readonly attribute DOMString message;</webidl>
54422         <descriptive>
54423             <brief>
54424  An error message that describes the details of the error encountered. This attribute is not intended
54425 to be used directly in the user interfaces as it is mainly intended to be useful for developers rather than end users.
54426             </brief>
54427             <version>
54428  2.0
54429             </version>
54430         </descriptive>
54431         <Type type="DOMString"/>
54432       </Attribute>
54433     </Interface>
54434     <Interface name="SuccessCallback" id="::Tizen::SuccessCallback">
54435       <webidl>  [Callback=FunctionOnly, NoInterfaceObject]
54436   interface SuccessCallback {
54437     void onsuccess ();
54438   };</webidl>
54439       <descriptive>
54440           <brief>
54441  This interface is used in methods that do not require any return value in the success callback.
54442 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.
54443           </brief>
54444           <version>
54445  1.0
54446           </version>
54447           <Code>     function onSuccess() {
54448          console.log(&quot;Application launched successfully&quot;);
54449      }
54450      tizen.application.launch('0pnxz8hbsr.MyFiles', onSuccess);
54451  </Code>
54452       </descriptive>
54453       <ExtendedAttributeList>
54454         <ExtendedAttribute name="Callback" value="FunctionOnly">
54455           <webidl>Callback</webidl>
54456         </ExtendedAttribute>
54457         <ExtendedAttribute name="NoInterfaceObject">
54458           <webidl> NoInterfaceObject</webidl>
54459         </ExtendedAttribute>
54460       </ExtendedAttributeList>
54461       <Operation name="onsuccess" id="::Tizen::SuccessCallback::onsuccess">
54462         <webidl>    void onsuccess ();</webidl>
54463         <descriptive>
54464             <brief>
54465  Method invoked when the asynchronous call completes successfully.
54466             </brief>
54467             <version>
54468  1.0
54469             </version>
54470         </descriptive>
54471         <Type type="void"/>
54472         <ArgumentList/>
54473       </Operation>
54474     </Interface>
54475     <Interface name="ErrorCallback" id="::Tizen::ErrorCallback">
54476       <webidl>  [Callback=FunctionOnly, NoInterfaceObject]
54477   interface ErrorCallback {
54478
54479     void onerror (<ref>WebAPIError</ref> error);
54480   };</webidl>
54481       <descriptive>
54482           <brief>
54483  This interface is used in methods that require only an error as input parameter in the error callback.
54484 If an invalid function (such as null) is passed to the API that accepts ErrorCallback,
54485 it silently fails and there is no further action.
54486           </brief>
54487           <version>
54488  1.0
54489           </version>
54490           <Code>  // Define the error callback.
54491   function onError(error) {
54492     console.log(error.message);
54493   }
54494
54495   // Define the success callback.
54496   function onSuccess(services) {
54497      //send a message using the found service
54498   }
54499   tizen.messaging.getMessageServices(&quot;messaging.sms&quot;, onSuccess, onError);
54500  </Code>
54501       </descriptive>
54502       <ExtendedAttributeList>
54503         <ExtendedAttribute name="Callback" value="FunctionOnly">
54504           <webidl>Callback</webidl>
54505         </ExtendedAttribute>
54506         <ExtendedAttribute name="NoInterfaceObject">
54507           <webidl> NoInterfaceObject</webidl>
54508         </ExtendedAttribute>
54509       </ExtendedAttributeList>
54510       <Operation name="onerror" id="::Tizen::ErrorCallback::onerror">
54511         <webidl>    void onerror (<ref>WebAPIError</ref> error);</webidl>
54512         <descriptive>
54513             <brief>
54514  Method that is invoked when the error occurs.
54515             </brief>
54516             <version>
54517  1.0
54518             </version>
54519         </descriptive>
54520         <Type type="void"/>
54521         <ArgumentList>
54522           <Argument name="error">
54523             <descriptive>
54524                 <description><p>
54525  Generic error.
54526                 </p></description>
54527             </descriptive>
54528             <Type name="WebAPIError"/>
54529           </Argument>
54530         </ArgumentList>
54531       </Operation>
54532     </Interface>
54533   </Module>
54534   <Module name="WebSetting" id="::WebSetting">
54535     <webidl>module WebSetting {
54536
54537   [NoInterfaceObject] interface WebSettingObject {
54538     readonly attribute <ref>WebSettingManager</ref> websetting;
54539   };
54540     <ref>Tizen</ref> implements <ref>WebSettingObject</ref>;
54541
54542   [NoInterfaceObject] interface WebSettingManager {
54543
54544    void setUserAgentString(DOMString userAgent, 
54545               optional <ref>SuccessCallback</ref>? successCallback, 
54546               optional <ref>ErrorCallback</ref>? errorCallback) raises (<ref>WebAPIException</ref>);     
54547
54548    void removeAllCookies(optional <ref>SuccessCallback</ref>? successCallback, 
54549               optional <ref>ErrorCallback</ref>? errorCallback) raises (<ref>WebAPIException</ref>);     
54550               
54551    };
54552 };</webidl>
54553     <descriptive>
54554         <brief>
54555  This Web setting API defines a set of APIs that manages the setting states of the Web view in your Web application.
54556         </brief>
54557        <description>
54558         <p>
54559 A Tizen Web application includes a web view and the properties below of the web view can be managed via the Web setting API:
54560         </p>
54561         <ul>
54562           <li>
54563  Delete all the cookies saved for the web view in the Web application.           </li>
54564           <li>
54565  Set a custom user agent string of the web view in the Web application.          </li>
54566         </ul>
54567         <p>
54568 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.  
54569         </p>
54570        </description>
54571         <version>
54572  2.2
54573         </version>
54574     </descriptive>
54575     <Interface name="WebSettingObject" id="::WebSetting::WebSettingObject">
54576       <webidl>  [NoInterfaceObject] interface WebSettingObject {
54577     readonly attribute <ref>WebSettingManager</ref> websetting;
54578   };</webidl>
54579       <descriptive>
54580           <brief>
54581  This interface defines what is instantiated for the Web setting API by the <em>Tizen</em> object from the Tizen Platform.
54582           </brief>
54583          <description>
54584           <p>
54585 <em>tizen.websetting</em> object is available to manage the settings of the Web view in your Web application. 
54586           </p>
54587          </description>
54588           <version>
54589  2.2
54590           </version>
54591       </descriptive>
54592       <ExtendedAttributeList>
54593         <ExtendedAttribute name="NoInterfaceObject">
54594           <webidl>NoInterfaceObject</webidl>
54595         </ExtendedAttribute>
54596       </ExtendedAttributeList>
54597       <Attribute readonly="readonly" name="websetting" id="::WebSetting::WebSettingObject::websetting">
54598         <webidl>    readonly attribute <ref>WebSettingManager</ref> websetting;</webidl>
54599         <Type name="WebSettingManager"/>
54600       </Attribute>
54601     </Interface>
54602     <Implements name1="Tizen" name2="WebSettingObject">
54603       <webidl>    <ref>Tizen</ref> implements <ref>WebSettingObject</ref>;</webidl>
54604     </Implements>
54605     <Interface name="WebSettingManager" id="::WebSetting::WebSettingManager">
54606       <webidl>  [NoInterfaceObject] interface WebSettingManager {
54607
54608    void setUserAgentString(DOMString userAgent, 
54609               optional <ref>SuccessCallback</ref>? successCallback, 
54610               optional <ref>ErrorCallback</ref>? errorCallback) raises (<ref>WebAPIException</ref>);     
54611
54612    void removeAllCookies(optional <ref>SuccessCallback</ref>? successCallback, 
54613               optional <ref>ErrorCallback</ref>? errorCallback) raises (<ref>WebAPIException</ref>);     
54614               
54615    };</webidl>
54616       <descriptive>
54617           <brief>
54618  This is the top-level interface for the WebSetting API that managed the settings of the Web view in your Web application.
54619           </brief>
54620       </descriptive>
54621       <ExtendedAttributeList>
54622         <ExtendedAttribute name="NoInterfaceObject">
54623           <webidl>NoInterfaceObject</webidl>
54624         </ExtendedAttribute>
54625       </ExtendedAttributeList>
54626       <Operation name="setUserAgentString" id="::WebSetting::WebSettingManager::setUserAgentString">
54627         <webidl>   void setUserAgentString(DOMString userAgent, 
54628               optional <ref>SuccessCallback</ref>? successCallback, 
54629               optional <ref>ErrorCallback</ref>? errorCallback) raises (<ref>WebAPIException</ref>);</webidl>
54630         <descriptive>
54631             <brief>
54632  Sets the custom user agent string for your Web application.
54633             </brief>
54634            <description>
54635             <p>
54636 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
54637 has the same user agent string as the Tizen browser on the device. 
54638             </p>
54639             <p>
54640 The <em>ErrorCallback</em> is launched with these error types:
54641             </p>
54642             <ul>
54643               <li>
54644 UnknownError - If any error occurs while setting the user agent string.              </li>
54645               <li>
54646 InvalidValuesError - If any of the input parameters contain an invalid value.              </li>
54647             </ul>
54648            </description>
54649             <version>
54650  2.2
54651             </version>
54652             <Code> function successCallback() {
54653      console.log(&quot;The requested user agent string has just been set successfully.&quot;);
54654  }
54655
54656  tizen.websetting.setUserAgentString(&quot;the new user agent string to set&quot;, successCallback);
54657       
54658 </Code>
54659         </descriptive>
54660         <Type type="void"/>
54661         <ArgumentList>
54662           <Argument name="userAgent">
54663             <descriptive>
54664                 <description><p>
54665  User agent to set for the Web view in your Web application. 
54666                 </p></description>
54667             </descriptive>
54668             <Type type="DOMString"/>
54669           </Argument>
54670           <Argument optional="optional" name="successCallback">
54671             <descriptive>
54672                 <description><p>
54673  To be invoked if the requested setting operation succeeds.
54674                 </p></description>
54675             </descriptive>
54676             <Type name="SuccessCallback" nullable="nullable"/>
54677           </Argument>
54678           <Argument optional="optional" name="errorCallback">
54679             <descriptive>
54680                 <description><p>
54681  To be invoked if the requested setting operation fails.
54682                 </p></description>
54683             </descriptive>
54684             <Type name="ErrorCallback" nullable="nullable"/>
54685           </Argument>
54686         </ArgumentList>
54687         <Raises>
54688           <RaiseException name="WebAPIException">
54689             <descriptive>
54690                 <description><p>
54691  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
54692                 </p></description>
54693             </descriptive>
54694           </RaiseException>
54695         </Raises>
54696       </Operation>
54697       <Operation name="removeAllCookies" id="::WebSetting::WebSettingManager::removeAllCookies">
54698         <webidl>   void removeAllCookies(optional <ref>SuccessCallback</ref>? successCallback, 
54699               optional <ref>ErrorCallback</ref>? errorCallback) raises (<ref>WebAPIException</ref>);</webidl>
54700         <descriptive>
54701             <brief>
54702  Removes all the cookies saved for the Web view in your Web application.
54703             </brief>
54704            <description>
54705             <p>
54706 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.  
54707             </p>
54708             <p>
54709 The <em>ErrorCallback</em> is launched with these error types:
54710             </p>
54711             <ul>
54712               <li>
54713 UnknownError - If any error occurs while deleting the cookies.              </li>
54714             </ul>
54715            </description>
54716             <version>
54717  2.2
54718             </version>
54719             <privilegelevel>
54720  public
54721             </privilegelevel>
54722             <privilege>
54723  http://tizen.org/privilege/websetting
54724             </privilege>
54725             <Code> function successCallback() {
54726      console.log(&quot;The cookies saved for your application have just been removed.&quot;);
54727  }
54728
54729  tizen.websetting.removeAllCookies(successCallback);
54730       
54731 </Code>
54732         </descriptive>
54733         <Type type="void"/>
54734         <ArgumentList>
54735           <Argument optional="optional" name="successCallback">
54736             <descriptive>
54737                 <description><p>
54738  To be invoked if the requested delete operation succeeds.  
54739                 </p></description>
54740             </descriptive>
54741             <Type name="SuccessCallback" nullable="nullable"/>
54742           </Argument>
54743           <Argument optional="optional" name="errorCallback">
54744             <descriptive>
54745                 <description><p>
54746  To be invoked if the requested delete operation fails.
54747                 </p></description>
54748             </descriptive>
54749             <Type name="ErrorCallback" nullable="nullable"/>
54750           </Argument>
54751         </ArgumentList>
54752         <Raises>
54753           <RaiseException name="WebAPIException">
54754             <descriptive>
54755                 <description><p>
54756  with error type TypeMismatchError, if any input parameter is not compatible with the expected type for that parameter.
54757                 </p></description>
54758                 <description><p>
54759  with error type SecurityError, if the application does not have the privilege to call this method.
54760                 </p></description>
54761             </descriptive>
54762           </RaiseException>
54763         </Raises>
54764       </Operation>
54765     </Interface>
54766   </Module>
54767 </Definitions>